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;
12 import org.opendaylight.openflowplugin.openflow.md.OFConstants;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorUpdated;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorUpdatedBuilder;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.State;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.StateBuilder;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdated;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdatedBuilder;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfig;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfigV10;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeatures;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeaturesV10;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortState;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortStateV10;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortGrouping;
27 public abstract class PortTranslatorUtil {
28 public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures translatePortFeatures(PortFeatures apf) {
29 org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures napf = null;
31 napf = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures(
32 apf.is_100gbFd(),apf.is_100mbFd(),apf.is_100mbHd(),apf.is_10gbFd(),apf.is_10mbFd(),apf.is_10mbHd(),
33 apf.is_1gbFd(),apf.is_1gbHd(),apf.is_1tbFd(),apf.is_40gbFd(),apf.isAutoneg(),apf.isCopper(),apf.isFiber(),apf.isOther(),
34 apf.isPause(), apf.isPauseAsym());
39 public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures translatePortFeatures(
40 PortFeaturesV10 apf) {
41 org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures napf = null;
43 napf = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures(
44 false,apf.is_100mbFd(),apf.is_100mbHd(),apf.is_10gbFd(),apf.is_10mbFd(),apf.is_10mbHd(),
45 apf.is_1gbFd(),apf.is_1gbHd(),false,false,apf.isAutoneg(),apf.isCopper(),apf.isFiber(),false,
46 apf.isPause(), apf.isPauseAsym());
51 public static State translatePortState(PortState state) {
52 StateBuilder nstate = new StateBuilder();
54 nstate.setBlocked(state.isBlocked());
55 nstate.setLinkDown(state.isLinkDown());
56 nstate.setLive(state.isLive());
58 return nstate.build();
61 public static State translatePortState(PortStateV10 state) {
62 StateBuilder nstate = new StateBuilder();
64 nstate.setBlocked(state.isBlocked());
65 nstate.setLinkDown(state.isLinkDown());
66 nstate.setLive(state.isLive());
68 return nstate.build();
71 public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig translatePortConfig(PortConfig pc) {
72 org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig npc = null;
74 npc = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig(pc.isNoFwd(),
75 pc.isNoPacketIn(), pc.isNoRecv(), pc.isPortDown());
80 public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig translatePortConfig(
82 org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig npc = null;
84 npc = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig(pc.isNoFwd(),
85 pc.isNoPacketIn(), pc.isNoRecv(), pc.isPortDown());
90 public static NodeConnectorUpdated translatePort(Short version,BigInteger datapathId,Long portNo, PortGrouping port) {
91 NodeConnectorUpdatedBuilder builder = InventoryDataServiceUtil
92 .nodeConnectorUpdatedBuilderFromDatapathIdPortNo(datapathId,port.getPortNo());
93 FlowCapableNodeConnectorUpdatedBuilder fcncub = new FlowCapableNodeConnectorUpdatedBuilder();
94 if(version == OFConstants.OFP_VERSION_1_3) {
95 fcncub.setAdvertisedFeatures(PortTranslatorUtil.translatePortFeatures(port.getAdvertisedFeatures()));
96 fcncub.setConfiguration(PortTranslatorUtil.translatePortConfig(port.getConfig()));
97 fcncub.setCurrentFeature(PortTranslatorUtil.translatePortFeatures(port.getCurrentFeatures()));
98 fcncub.setPeerFeatures(PortTranslatorUtil.translatePortFeatures(port.getPeerFeatures()));
99 fcncub.setState(PortTranslatorUtil.translatePortState(port.getState()));
100 fcncub.setSupported(PortTranslatorUtil.translatePortFeatures(port.getSupportedFeatures()));
101 } else if (version == OFConstants.OFP_VERSION_1_0) {
102 fcncub.setAdvertisedFeatures(PortTranslatorUtil.translatePortFeatures(port.getAdvertisedFeaturesV10()));
103 fcncub.setConfiguration(PortTranslatorUtil.translatePortConfig(port.getConfigV10()));
104 fcncub.setCurrentFeature(PortTranslatorUtil.translatePortFeatures(port.getCurrentFeaturesV10()));
105 fcncub.setPeerFeatures(PortTranslatorUtil.translatePortFeatures(port.getPeerFeaturesV10()));
106 fcncub.setState(PortTranslatorUtil.translatePortState(port.getStateV10()));
107 fcncub.setSupported(PortTranslatorUtil.translatePortFeatures(port.getSupportedFeaturesV10()));
109 fcncub.setCurrentSpeed(port.getCurrSpeed());
110 fcncub.setHardwareAddress(port.getHwAddr());
111 fcncub.setMaximumSpeed(port.getMaxSpeed());
112 fcncub.setName(port.getName());
113 fcncub.setPortNumber(port.getPortNo());
114 builder.addAugmentation(FlowCapableNodeConnectorUpdated.class, fcncub.build());
115 return builder.build();