2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.openflowplugin.openflow.md.util;
10 import java.math.BigInteger;
11 import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorUpdated;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorUpdatedBuilder;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.State;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.StateBuilder;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRemoved;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRemovedBuilder;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdated;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdatedBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfig;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfigV10;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeatures;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeaturesV10;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortState;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortStateV10;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortGrouping;
28 public abstract class PortTranslatorUtil {
29 public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures translatePortFeatures(final PortFeatures apf) {
30 org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures napf = null;
32 napf = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures(
33 apf.isAutoneg(), //_autoeng
34 apf.isCopper(), //_copper
35 apf.isFiber(), //_fiber
36 apf.is_40gbFd(), //_fortyGbFd
37 apf.is_100gbFd(), //_hundredGbFd
38 apf.is_100mbFd(), //_hundredMbFd
39 apf.is_100mbHd(), //_hundredMbHd
40 apf.is_1gbFd(), //_oneGbFd
41 apf.is_1gbHd(), //_oneGbHd
42 apf.is_1tbFd(), //_oneTbFd
43 apf.isOther(), //_other
44 apf.isPause(), //_pause
45 apf.isPauseAsym(), //_pauseAsym
46 apf.is_10gbFd(), //_tenGbFd
47 apf.is_10mbFd(), //_tenMbFd
48 apf.is_10mbHd()//_tenMbHd
55 public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures translatePortFeatures(
56 final PortFeaturesV10 apf) {
57 org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures napf = null;
59 napf = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures(
60 apf.isAutoneg(), //_autoeng
61 apf.isCopper(), //_copper
62 apf.isFiber(), //_fiber
65 apf.is_100mbFd(), //_hundredMbFd
66 apf.is_100mbHd(), //_hundredMbHd
67 apf.is_1gbFd(), //_oneGbFd
68 apf.is_1gbHd(), //_oneGbHd
71 apf.isPause(), //_pause
72 apf.isPauseAsym(), //_pauseAsym
73 apf.is_10gbFd(), //_tenGbFd
74 apf.is_10mbFd(), //_tenMbFd
75 apf.is_10mbHd()//_tenMbHd
81 public static State translatePortState(final PortState state) {
82 StateBuilder nstate = new StateBuilder();
84 nstate.setBlocked(state.isBlocked());
85 nstate.setLinkDown(state.isLinkDown());
86 nstate.setLive(state.isLive());
88 return nstate.build();
91 public static State translatePortState(final PortStateV10 state) {
92 StateBuilder nstate = new StateBuilder();
94 nstate.setBlocked(state.isBlocked());
95 nstate.setLinkDown(state.isLinkDown());
96 nstate.setLive(state.isLive());
98 return nstate.build();
101 public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig translatePortConfig(final PortConfig pc) {
102 org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig npc = null;
104 npc = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig(pc.isNoFwd(),
105 pc.isNoPacketIn(), pc.isNoRecv(), pc.isPortDown());
110 public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig translatePortConfig(
111 final PortConfigV10 pc) {
112 org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig npc = null;
114 npc = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig(pc.isNoFwd(),
115 pc.isNoPacketIn(), pc.isNoRecv(), pc.isPortDown());
120 public static NodeConnectorUpdated translatePort(final Short version, final BigInteger datapathId, final Long portNumber, final PortGrouping port) {
121 OpenflowVersion ofVersion = OpenflowVersion.get(version);
122 NodeConnectorUpdatedBuilder builder = InventoryDataServiceUtil
123 .nodeConnectorUpdatedBuilderFromDatapathIdPortNo(datapathId, port.getPortNo(), ofVersion);
124 FlowCapableNodeConnectorUpdatedBuilder fcncub = new FlowCapableNodeConnectorUpdatedBuilder();
125 if (ofVersion == OpenflowVersion.OF13) {
126 fcncub.setAdvertisedFeatures(PortTranslatorUtil.translatePortFeatures(port.getAdvertisedFeatures()));
127 fcncub.setConfiguration(PortTranslatorUtil.translatePortConfig(port.getConfig()));
128 fcncub.setCurrentFeature(PortTranslatorUtil.translatePortFeatures(port.getCurrentFeatures()));
129 fcncub.setPeerFeatures(PortTranslatorUtil.translatePortFeatures(port.getPeerFeatures()));
130 fcncub.setState(PortTranslatorUtil.translatePortState(port.getState()));
131 fcncub.setSupported(PortTranslatorUtil.translatePortFeatures(port.getSupportedFeatures()));
133 } else if (ofVersion == OpenflowVersion.OF10) {
134 fcncub.setAdvertisedFeatures(PortTranslatorUtil.translatePortFeatures(port.getAdvertisedFeaturesV10()));
135 fcncub.setConfiguration(PortTranslatorUtil.translatePortConfig(port.getConfigV10()));
136 fcncub.setCurrentFeature(PortTranslatorUtil.translatePortFeatures(port.getCurrentFeaturesV10()));
137 fcncub.setPeerFeatures(PortTranslatorUtil.translatePortFeatures(port.getPeerFeaturesV10()));
138 fcncub.setState(PortTranslatorUtil.translatePortState(port.getStateV10()));
139 fcncub.setSupported(PortTranslatorUtil.translatePortFeatures(port.getSupportedFeaturesV10()));
141 fcncub.setCurrentSpeed(port.getCurrSpeed());
142 fcncub.setHardwareAddress(port.getHwAddr());
143 fcncub.setMaximumSpeed(port.getMaxSpeed());
144 fcncub.setName(port.getName());
145 fcncub.setPortNumber(OpenflowPortsUtil.getProtocolAgnosticPort(ofVersion, portNumber));
146 builder.addAugmentation(FlowCapableNodeConnectorUpdated.class, fcncub.build());
147 return builder.build();
150 public static NodeConnectorRemoved translatePortRemoved(final Short version, final BigInteger datapathId, final Long portNumber, final PortGrouping port) {
151 OpenflowVersion ofVersion = OpenflowVersion.get(version);
152 NodeConnectorRemovedBuilder builder = new NodeConnectorRemovedBuilder();
153 builder.setNodeConnectorRef(InventoryDataServiceUtil.nodeConnectorRefFromDatapathIdPortno(datapathId, portNumber, ofVersion));
154 return builder.build();