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.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorUpdated;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorUpdatedBuilder;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.State;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.StateBuilder;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdated;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdatedBuilder;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfig;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfigV10;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeatures;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeaturesV10;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortState;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortStateV10;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortGrouping;
25 public abstract class PortTranslatorUtil {
26 public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures translatePortFeatures(PortFeatures apf) {
27 org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures napf = null;
29 napf = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures(
30 apf.isAutoneg(), //_autoeng
31 apf.isCopper(), //_copper
32 apf.isFiber(), //_fiber
33 apf.is_40gbFd(), //_fortyGbFd
34 apf.is_100gbFd(), //_hundredGbFd
35 apf.is_100mbFd(), //_hundredMbFd
36 apf.is_100mbHd(), //_hundredMbHd
37 apf.is_1gbFd(), //_oneGbFd
38 apf.is_1gbHd(), //_oneGbHd
39 apf.is_1tbFd(), //_oneTbFd
40 apf.isOther(), //_other
41 apf.isPause(), //_pause
42 apf.isPauseAsym(), //_pauseAsym
43 apf.is_10gbFd(), //_tenGbFd
44 apf.is_10mbFd(), //_tenMbFd
45 apf.is_10mbHd()//_tenMbHd
52 public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures translatePortFeatures(
53 PortFeaturesV10 apf) {
54 org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures napf = null;
56 napf = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures(
57 apf.isAutoneg(), //_autoeng
58 apf.isCopper(), //_copper
59 apf.isFiber(), //_fiber
62 apf.is_100mbFd(), //_hundredMbFd
63 apf.is_100mbHd(), //_hundredMbHd
64 apf.is_1gbFd(), //_oneGbFd
65 apf.is_1gbHd(), //_oneGbHd
68 apf.isPause(), //_pause
69 apf.isPauseAsym(), //_pauseAsym
70 apf.is_10gbFd(), //_tenGbFd
71 apf.is_10mbFd(), //_tenMbFd
72 apf.is_10mbHd()//_tenMbHd
78 public static State translatePortState(PortState state) {
79 StateBuilder nstate = new StateBuilder();
81 nstate.setBlocked(state.isBlocked());
82 nstate.setLinkDown(state.isLinkDown());
83 nstate.setLive(state.isLive());
85 return nstate.build();
88 public static State translatePortState(PortStateV10 state) {
89 StateBuilder nstate = new StateBuilder();
91 nstate.setBlocked(state.isBlocked());
92 nstate.setLinkDown(state.isLinkDown());
93 nstate.setLive(state.isLive());
95 return nstate.build();
98 public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig translatePortConfig(PortConfig pc) {
99 org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig npc = null;
101 npc = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig(pc.isNoFwd(),
102 pc.isNoPacketIn(), pc.isNoRecv(), pc.isPortDown());
107 public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig translatePortConfig(
109 org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig npc = null;
111 npc = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig(pc.isNoFwd(),
112 pc.isNoPacketIn(), pc.isNoRecv(), pc.isPortDown());
117 public static NodeConnectorUpdated translatePort(Short version, BigInteger datapathId, Long portNumber, PortGrouping port) {
118 OpenflowVersion ofVersion = OpenflowVersion.get(version);
119 NodeConnectorUpdatedBuilder builder = InventoryDataServiceUtil
120 .nodeConnectorUpdatedBuilderFromDatapathIdPortNo(datapathId, port.getPortNo(), ofVersion);
121 FlowCapableNodeConnectorUpdatedBuilder fcncub = new FlowCapableNodeConnectorUpdatedBuilder();
122 if (ofVersion == OpenflowVersion.OF13) {
123 fcncub.setAdvertisedFeatures(PortTranslatorUtil.translatePortFeatures(port.getAdvertisedFeatures()));
124 fcncub.setConfiguration(PortTranslatorUtil.translatePortConfig(port.getConfig()));
125 fcncub.setCurrentFeature(PortTranslatorUtil.translatePortFeatures(port.getCurrentFeatures()));
126 fcncub.setPeerFeatures(PortTranslatorUtil.translatePortFeatures(port.getPeerFeatures()));
127 fcncub.setState(PortTranslatorUtil.translatePortState(port.getState()));
128 fcncub.setSupported(PortTranslatorUtil.translatePortFeatures(port.getSupportedFeatures()));
130 } else if (ofVersion == OpenflowVersion.OF10) {
131 fcncub.setAdvertisedFeatures(PortTranslatorUtil.translatePortFeatures(port.getAdvertisedFeaturesV10()));
132 fcncub.setConfiguration(PortTranslatorUtil.translatePortConfig(port.getConfigV10()));
133 fcncub.setCurrentFeature(PortTranslatorUtil.translatePortFeatures(port.getCurrentFeaturesV10()));
134 fcncub.setPeerFeatures(PortTranslatorUtil.translatePortFeatures(port.getPeerFeaturesV10()));
135 fcncub.setState(PortTranslatorUtil.translatePortState(port.getStateV10()));
136 fcncub.setSupported(PortTranslatorUtil.translatePortFeatures(port.getSupportedFeaturesV10()));
138 fcncub.setCurrentSpeed(port.getCurrSpeed());
139 fcncub.setHardwareAddress(port.getHwAddr());
140 fcncub.setMaximumSpeed(port.getMaxSpeed());
141 fcncub.setName(port.getName());
142 fcncub.setPortNumber(OpenflowPortsUtil.getProtocolAgnosticPort(ofVersion, portNumber));
143 builder.addAugmentation(FlowCapableNodeConnectorUpdated.class, fcncub.build());
144 return builder.build();