+++ /dev/null
-
-/*
- * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.controller.protocol_plugin.openflow.internal;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.opendaylight.controller.sal.core.Bandwidth;
-import org.opendaylight.controller.sal.core.AdvertisedBandwidth;
-import org.opendaylight.controller.sal.core.SupportedBandwidth;
-import org.opendaylight.controller.sal.core.PeerBandwidth;
-import org.opendaylight.controller.sal.core.Config;
-import org.opendaylight.controller.sal.core.Name;
-import org.opendaylight.controller.sal.core.Node;
-import org.opendaylight.controller.sal.core.NodeConnector;
-import org.opendaylight.controller.sal.core.Property;
-import org.opendaylight.controller.sal.core.State;
-
-import org.opendaylight.controller.sal.utils.NodeCreator;
-
-import org.opendaylight.controller.protocol_plugin.openflow.core.ISwitch;
-import org.openflow.protocol.OFPhysicalPort;
-import org.openflow.protocol.OFPhysicalPort.OFPortConfig;
-import org.openflow.protocol.OFPhysicalPort.OFPortFeatures;
-import org.openflow.protocol.OFPhysicalPort.OFPortState;
-
-/**
- * The class provides helper functions to retrieve inventory properties from
- * OpenFlow messages
- */
-public class InventoryServiceHelper {
- /*
- * Returns BandWidth property from OpenFlow OFPhysicalPort features
- */
- public static Bandwidth OFPortToBandWidth(int portFeatures) {
- Bandwidth bw = null;
- int value = portFeatures
- & (OFPortFeatures.OFPPF_10MB_FD.getValue()
- | OFPortFeatures.OFPPF_10MB_HD.getValue()
- | OFPortFeatures.OFPPF_100MB_FD.getValue()
- | OFPortFeatures.OFPPF_100MB_HD.getValue()
- | OFPortFeatures.OFPPF_1GB_FD.getValue()
- | OFPortFeatures.OFPPF_1GB_HD.getValue() | OFPortFeatures.OFPPF_10GB_FD
- .getValue());
-
- switch (value) {
- case 1:
- case 2:
- bw = new Bandwidth(Bandwidth.BW10Mbps);
- break;
- case 4:
- case 8:
- bw = new Bandwidth(Bandwidth.BW100Mbps);
- break;
- case 16:
- case 32:
- bw = new Bandwidth(Bandwidth.BW1Gbps);
- break;
- case 64:
- bw = new Bandwidth(Bandwidth.BW10Gbps);
- break;
- default:
- break;
- }
- return bw;
- }
-
- /*
- * Returns Config property from OpenFLow OFPhysicalPort config
- */
- public static Config OFPortToConfig(int portConfig) {
- Config config;
- if ((OFPortConfig.OFPPC_PORT_DOWN.getValue() & portConfig) != 0)
- config = new Config(Config.ADMIN_DOWN);
- else
- config = new Config(Config.ADMIN_UP);
- return config;
- }
-
- /*
- * Returns State property from OpenFLow OFPhysicalPort state
- */
- public static State OFPortToState(int portState) {
- State state;
- if ((OFPortState.OFPPS_LINK_DOWN.getValue() & portState) != 0)
- state = new State(State.EDGE_DOWN);
- else
- state = new State(State.EDGE_UP);
- return state;
- }
-
- /*
- * Returns set of properties from OpenFLow OFPhysicalPort
- */
- public static Set<Property> OFPortToProps(OFPhysicalPort port) {
- Set<Property> props = new HashSet<Property>();
- Bandwidth bw = InventoryServiceHelper.OFPortToBandWidth(port
- .getCurrentFeatures());
- if (bw != null) {
- props.add(bw);
- }
-
- Bandwidth abw = InventoryServiceHelper.OFPortToBandWidth(port.getAdvertisedFeatures());
- if (abw != null) {
- AdvertisedBandwidth a = new AdvertisedBandwidth(abw.getValue());
- if (a != null) {
- props.add(a);
- }
- }
- Bandwidth sbw = InventoryServiceHelper.OFPortToBandWidth(port.getSupportedFeatures());
- if (sbw != null) {
- SupportedBandwidth s = new SupportedBandwidth(sbw.getValue());
- if (s != null) {
- props.add(s);
- }
- }
- Bandwidth pbw = InventoryServiceHelper.OFPortToBandWidth(port.getPeerFeatures());
- if (pbw != null) {
- PeerBandwidth p = new PeerBandwidth(pbw.getValue());
- if (p != null) {
- props.add(p);
- }
- }
- props.add(new Name(port.getName()));
- props.add(InventoryServiceHelper.OFPortToConfig(port.getConfig()));
- props.add(InventoryServiceHelper.OFPortToState(port.getState()));
- return props;
- }
-
- /*
- * Returns set of properties for each nodeConnector in an OpenFLow switch
- */
- public static Map<NodeConnector, Set<Property>> OFSwitchToProps(ISwitch sw) {
- Map<NodeConnector, Set<Property>> ncProps = new HashMap<NodeConnector, Set<Property>>();
-
- if (sw == null) {
- return ncProps;
- }
-
- Node node = NodeCreator.createOFNode(sw.getId());
- if (node == null) {
- return ncProps;
- }
-
- Set<Property> props;
- NodeConnector nodeConnector;
- OFPhysicalPort port;
- Map<Short, OFPhysicalPort> ports = sw.getPhysicalPorts();
- for (Map.Entry<Short, OFPhysicalPort> entry : ports.entrySet()) {
- nodeConnector = PortConverter.toNodeConnector(entry.getKey(), node);
- port = entry.getValue();
- props = InventoryServiceHelper.OFPortToProps(port);
- ncProps.put(nodeConnector, props);
- }
-
- return ncProps;
- }
-}