Java 类org.projectfloodlight.openflow.protocol.OFPortDesc 实例源码
项目:iTAP-controller
文件:LinkDiscoveryManager.java
/**
* Send LLDPs to all switch-ports
*/
protected void discoverOnAllPorts() {
log.info("Sending LLDP packets out of all the enabled ports");
// Send standard LLDPs
for (DatapathId sw : switchService.getAllSwitchDpids()) {
IOFSwitch iofSwitch = switchService.getSwitch(sw);
if (iofSwitch == null) continue;
if (!iofSwitch.isActive()) continue; /* can't do anything if the switch is SLAVE */
if (iofSwitch.getEnabledPorts() != null) {
for (OFPortDesc ofp : iofSwitch.getEnabledPorts()) {
if (isLinkDiscoverySuppressed(sw, ofp.getPortNo())) {
continue;
}
sendDiscoveryMessage(sw, ofp.getPortNo(), true, false);
// If the switch port is not already in the maintenance
// queue, add it.
NodePortTuple npt = new NodePortTuple(sw, ofp.getPortNo());
addToMaintenanceQueue(npt);
}
}
}
}
项目:iTAP-controller
文件:LinkDiscoveryManager.java
/**
* We don't react the port changed notifications here. we listen for
* OFPortStatus messages directly. Might consider using this notifier
* instead
*/
@Override
public void switchPortChanged(DatapathId switchId,
OFPortDesc port,
PortChangeType type) {
switch (type) {
case UP:
processNewPort(switchId, port.getPortNo());
break;
case DELETE: case DOWN:
handlePortDown(switchId, port.getPortNo());
break;
case OTHER_UPDATE: case ADD:
// This is something other than port add or delete.
// Topology does not worry about this.
// If for some reason the port features change, which
// we may have to react.
break;
}
}
项目:fresco_floodlight
文件:OFSwitchManager.java
public SwitchUpdate(DatapathId swId,
SwitchUpdateType switchUpdateType,
OFPortDesc port,
PortChangeType changeType) {
if (switchUpdateType == SwitchUpdateType.PORTCHANGED) {
if (port == null) {
throw new NullPointerException("Port must not be null " +
"for PORTCHANGED updates");
}
if (changeType == null) {
throw new NullPointerException("ChangeType must not be " +
"null for PORTCHANGED updates");
}
} else {
if (port != null || changeType != null) {
throw new IllegalArgumentException("port and changeType " +
"must be null for " + switchUpdateType +
" updates");
}
}
this.swId = swId;
this.switchUpdateType = switchUpdateType;
this.port = port;
this.changeType = changeType;
}
项目:fresco_floodlight
文件:OFSwitchManager.java
@Override
public synchronized void notifyPortChanged(IOFSwitchBackend sw,
OFPortDesc port,
PortChangeType changeType) {
Preconditions.checkNotNull(sw, "switch must not be null");
Preconditions.checkNotNull(port, "port must not be null");
Preconditions.checkNotNull(changeType, "changeType must not be null");
if (role != OFControllerRole.ROLE_MASTER) {
counters.invalidPortsChanged.increment();
return;
}
if (!this.switches.containsKey(sw.getId())) {
counters.invalidPortsChanged.increment();
return;
}
if(sw.getStatus().isVisible()) {
// no need to count here. SwitchUpdate.dispatch will count
// the portchanged
SwitchUpdate update = new SwitchUpdate(sw.getId(),
SwitchUpdateType.PORTCHANGED,
port, changeType);
addUpdateToQueue(update);
}
}
项目:iTAP-controller
文件:OFSwitchManager.java
public SwitchUpdate(DatapathId swId,
SwitchUpdateType switchUpdateType,
OFPortDesc port,
PortChangeType changeType) {
if (switchUpdateType == SwitchUpdateType.PORTCHANGED) {
if (port == null) {
throw new NullPointerException("Port must not be null " +
"for PORTCHANGED updates");
}
if (changeType == null) {
throw new NullPointerException("ChangeType must not be " +
"null for PORTCHANGED updates");
}
} else {
if (port != null || changeType != null) {
throw new IllegalArgumentException("port and changeType " +
"must be null for " + switchUpdateType +
" updates");
}
}
this.swId = swId;
this.switchUpdateType = switchUpdateType;
this.port = port;
this.changeType = changeType;
}
项目:iTAP-controller
文件:OFSwitch.java
@Override
public void setFeaturesReply(OFFeaturesReply featuresReply) {
if (portManager.getPorts().isEmpty() && featuresReply.getVersion().compareTo(OFVersion.OF_13) < 0) {
/* ports are updated via port status message, so we
* only fill in ports on initial connection.
*/
List<OFPortDesc> OFPortDescs = featuresReply.getPorts();
portManager.updatePorts(OFPortDescs);
}
this.capabilities = featuresReply.getCapabilities();
this.buffers = featuresReply.getNBuffers();
if (featuresReply.getVersion().compareTo(OFVersion.OF_13) < 0 ) {
// FIXME:LOJI: OF1.3 has per table actions. This needs to be modeled / handled here
this.actions = featuresReply.getActions();
}
this.tables = featuresReply.getNTables();
}
项目:open-kilda
文件:PathVerificationPacketOutTest.java
@Before
public void setUp() throws Exception {
super.setUp();
cntx = new FloodlightContext();
FloodlightModuleContext fmc = new FloodlightModuleContext();
fmc.addService(IFloodlightProviderService.class, mockFloodlightProvider);
fmc.addService(IOFSwitchService.class, getMockSwitchService());
swDescription = factory.buildDescStatsReply().build();
pvs = new PathVerificationService();
pvs.initAlgorithm("secret");
srcIpTarget = new InetSocketAddress("192.168.10.1", 200);
dstIpTarget = new InetSocketAddress("192.168.10.101", 100);
sw1HwAddrTarget = "11:22:33:44:55:66";
sw2HwAddrTarget = "AA:BB:CC:DD:EE:FF";
OFPortDesc sw1Port1 = EasyMock.createMock(OFPortDesc.class);
expect(sw1Port1.getHwAddr()).andReturn(MacAddress.of(sw1HwAddrTarget)).anyTimes();
OFPortDesc sw2Port1 = EasyMock.createMock(OFPortDesc.class);
expect(sw2Port1.getHwAddr()).andReturn(MacAddress.of(sw2HwAddrTarget)).anyTimes();
replay(sw1Port1);
replay(sw2Port1);
sw1 = buildMockIOFSwitch(1L, sw1Port1, factory, swDescription, srcIpTarget);
sw2 = buildMockIOFSwitch(2L, sw2Port1, factory, swDescription, dstIpTarget);
replay(sw1);
replay(sw2);
}
项目:iTAP-controller
文件:ControllerTest.java
/** Set the mock expectations for sw when sw is passed to addSwitch
* The same expectations can be used when a new SwitchSyncRepresentation
* is created from the given mocked switch */
protected void setupSwitchForAddSwitch(IOFSwitch sw, DatapathId datapathId,
SwitchDescription description,
OFFeaturesReply featuresReply) {
String dpidString = datapathId.toString();
if (description == null) {
description = createSwitchDescription();
}
if (featuresReply == null) {
featuresReply = createOFFeaturesReply(datapathId);
}
List<OFPortDesc> ports = featuresReply.getPorts();
expect(sw.getOFFactory()).andReturn(OFFactories.getFactory(OFVersion.OF_10)).anyTimes();
expect(sw.getId()).andReturn(datapathId).anyTimes();
expect(sw.getId().toString()).andReturn(dpidString).anyTimes();
expect(sw.getSwitchDescription()).andReturn(description).atLeastOnce();
expect(sw.getBuffers())
.andReturn(featuresReply.getNBuffers()).atLeastOnce();
expect(sw.getTables())
.andReturn(featuresReply.getNTables()).atLeastOnce();
expect(sw.getCapabilities())
.andReturn(featuresReply.getCapabilities()).atLeastOnce();
expect(sw.getActions())
.andReturn(featuresReply.getActions()).atLeastOnce();
expect(sw.getPorts())
.andReturn(ports).atLeastOnce();
expect(sw.attributeEquals(IOFSwitch.SWITCH_SUPPORTS_NX_ROLE, true))
.andReturn(false).anyTimes();
expect(sw.getInetAddress()).andReturn(null).anyTimes();
}
项目:iTAP-controller
文件:SwitchSyncRepresentation.java
public OFPortDesc toOFPortDesc(OFFactory factory) {
OFPortDesc.Builder builder = factory.buildPortDesc();
builder.setPortNo(port.getPortNo());
builder.setHwAddr(port.getHwAddr());
builder.setName(port.getName());
builder.setConfig(port.getConfig());
builder.setState(port.getState());
builder.setCurr(port.getCurr());
builder.setAdvertised(port.getAdvertised());
builder.setSupported(port.getSupported());
builder.setPeer(port.getPeer());
return builder.build();
}
项目:iTAP-controller
文件:OFSwitchManagerTest.java
private OFFeaturesReply createOFFeaturesReply(DatapathId datapathId) {
OFFeaturesReply fr = factory.buildFeaturesReply()
.setXid(0)
.setDatapathId(datapathId)
.setPorts(ImmutableList.<OFPortDesc>of())
.build();
return fr;
}
项目:athena
文件:OplinkRoadmHandshaker.java
@Override
/**
* Returns a list of standard (Ethernet) ports.
*
* @return List of ports
*/
public List<OFPortDesc> getPorts() {
return Collections.EMPTY_LIST;
}
项目:iTAP-controller
文件:SwitchSyncRepresentation.java
private static List<SyncedPort> toSyncedPortList(Collection<OFPortDesc> ports) {
List<SyncedPort> rv = new ArrayList<SyncedPort>(ports.size());
for (OFPortDesc p: ports) {
rv.add(SyncedPort.fromOFPortDesc(p));
}
return rv;
}
项目:athena
文件:OpenFlowDeviceProvider.java
@Override
public void changePortState(DeviceId deviceId, PortNumber portNumber,
boolean enable) {
final Dpid dpid = dpid(deviceId.uri());
OpenFlowSwitch sw = controller.getSwitch(dpid);
if (sw == null || !sw.isConnected()) {
LOG.error("Failed to change portState on device {}", deviceId);
return;
}
OFPortMod.Builder pmb = sw.factory().buildPortMod();
OFPort port = OFPort.of((int) portNumber.toLong());
pmb.setPortNo(port);
if (enable) {
pmb.setConfig(0x0); // port_down bit 0
} else {
pmb.setConfig(0x1); // port_down bit 1
}
pmb.setMask(0x1);
pmb.setAdvertise(0x0);
for (OFPortDesc pd : sw.getPorts()) {
if (pd.getPortNo().equals(port)) {
pmb.setHwAddr(pd.getHwAddr());
break;
}
}
sw.sendMsg(Collections.singletonList(pmb.build()));
}
项目:athena
文件:OpenFlowDeviceProvider.java
private PortDescription buildOduCltPortDescription(OFPortDesc port) {
PortNumber portNo = PortNumber.portNumber(port.getPortNo().getPortNumber());
boolean enabled = !port.getState().contains(OFPortState.LINK_DOWN) &&
!port.getConfig().contains(OFPortConfig.PORT_DOWN);
Long portSpeedInMbps = portSpeed(port);
CltSignalType sigType = null;
switch (portSpeedInMbps.toString()) {
case "1000":
sigType = CltSignalType.CLT_1GBE;
break;
case "10000":
sigType = CltSignalType.CLT_10GBE;
break;
case "40000":
sigType = CltSignalType.CLT_40GBE;
break;
case "100000":
sigType = CltSignalType.CLT_100GBE;
break;
default:
throw new RuntimeException("Un recognize OduClt speed: " + portSpeedInMbps.toString());
}
SparseAnnotations annotations = buildOduCltAnnotation(port);
return oduCltPortDescription(portNo, enabled, sigType, annotations);
}
项目:athena
文件:OpenFlowDeviceProvider.java
private SparseAnnotations buildOduCltAnnotation(OFPortDesc port) {
SparseAnnotations annotations = null;
String portName = Strings.emptyToNull(port.getName());
if (portName != null) {
annotations = DefaultAnnotations.builder()
.set(AnnotationKeys.PORT_NAME, portName)
.set(AnnotationKeys.STATIC_PORT, Boolean.TRUE.toString()).build();
}
return annotations;
}
项目:athena
文件:OpenFlowDeviceProvider.java
/**
* Build a portDescription from a given Ethernet port description.
*
* @param port the port to build from.
* @return portDescription for the port.
*/
private PortDescription buildPortDescription(OFPortDesc port) {
PortNumber portNo = PortNumber.portNumber(port.getPortNo().getPortNumber());
boolean enabled =
!port.getState().contains(OFPortState.LINK_DOWN) &&
!port.getConfig().contains(OFPortConfig.PORT_DOWN);
Port.Type type = port.getCurr().contains(OFPortFeatures.PF_FIBER) ? FIBER : COPPER;
SparseAnnotations annotations = makePortAnnotation(port.getName(), port.getHwAddr().toString());
return new DefaultPortDescription(portNo, enabled, type,
portSpeed(port), annotations);
}
项目:iTAP-controller
文件:OFSwitch.java
public OFPortDesc getPort(String name) {
if (name == null) {
throw new NullPointerException("Port name must not be null");
}
lock.readLock().lock();
try {
return portsByName.get(name.toLowerCase());
} finally {
lock.readLock().unlock();
}
}
项目:fresco_floodlight
文件:Forwarding.java
@Override
public void switchActivated(DatapathId switchId) {
IOFSwitch sw = switchService.getSwitch(switchId);
if (sw == null) {
log.warn("Switch {} was activated but had no switch object in the switch service. Perhaps it quickly disconnected", switchId);
return;
}
if (OFDPAUtils.isOFDPASwitch(sw)) {
sw.write(sw.getOFFactory().buildFlowDelete()
.setTableId(TableId.ALL)
.build()
);
sw.write(sw.getOFFactory().buildGroupDelete()
.setGroup(OFGroup.ANY)
.setGroupType(OFGroupType.ALL)
.build()
);
sw.write(sw.getOFFactory().buildGroupDelete()
.setGroup(OFGroup.ANY)
.setGroupType(OFGroupType.INDIRECT)
.build()
);
sw.write(sw.getOFFactory().buildBarrierRequest().build());
List<OFPortModeTuple> portModes = new ArrayList<OFPortModeTuple>();
for (OFPortDesc p : sw.getPorts()) {
portModes.add(OFPortModeTuple.of(p.getPortNo(), OFPortMode.ACCESS));
}
if (log.isWarnEnabled()) {
log.warn("For OF-DPA switch {}, initializing VLAN {} on ports {}", new Object[] { switchId, VlanVid.ZERO, portModes});
}
OFDPAUtils.addLearningSwitchPrereqs(sw, VlanVid.ZERO, portModes);
}
}
项目:iTAP-controller
文件:LinkDiscoveryManager.java
/**
* Send link discovery message out of a given switch port. The discovery
* message may be a standard LLDP or a modified LLDP, where the dst mac
* address is set to :ff. TODO: The modified LLDP will updated in the future
* and may use a different eth-type.
*
* @param sw
* @param port
* @param isStandard
* indicates standard or modified LLDP
* @param isReverse
* indicates whether the LLDP was sent as a response
*/
@LogMessageDoc(level = "ERROR",
message = "Failure sending LLDP out port {port} on switch {switch}",
explanation = "An I/O error occured while sending LLDP message "
+ "to the switch.",
recommendation = LogMessageDoc.CHECK_SWITCH)
protected void sendDiscoveryMessage(DatapathId sw, OFPort port,
boolean isStandard, boolean isReverse) {
// Takes care of all checks including null pointer checks.
if (!isOutgoingDiscoveryAllowed(sw, port, isStandard, isReverse))
return;
IOFSwitch iofSwitch = switchService.getSwitch(sw);
OFPortDesc ofpPort = iofSwitch.getPort(port);
if (log.isTraceEnabled()) {
log.trace("Sending LLDP packet out of swich: {}, port: {}",
sw.toString(), port.getPortNumber());
}
OFPacketOut po = generateLLDPMessage(sw, port, isStandard, isReverse);
OFPacketOut.Builder pob = po.createBuilder();
// Add actions
List<OFAction> actions = getDiscoveryActions(iofSwitch, ofpPort.getPortNo());
pob.setActions(actions);
// no need to set length anymore
// send
// no more try-catch. switch will silently fail
iofSwitch.write(pob.build());
iofSwitch.flush();
}
项目:fresco_floodlight
文件:LinkDiscoveryManager.java
/**
* Check if outgoing discovery messages are enabled or not.
* @param sw
* @param port
* @param isStandard
* @param isReverse
* @return
*/
protected boolean isOutgoingDiscoveryAllowed(DatapathId sw, OFPort port,
boolean isStandard,
boolean isReverse) {
if (isLinkDiscoverySuppressed(sw, port)) {
/* Dont send LLDPs out of this port as suppressLLDP is set */
return false;
}
IOFSwitch iofSwitch = switchService.getSwitch(sw);
if (iofSwitch == null) {
return false;
}
if (port == OFPort.LOCAL) return false;
OFPortDesc ofpPort = iofSwitch.getPort(port);
if (ofpPort == null) {
if (log.isTraceEnabled()) {
log.trace("Null physical port. sw={}, port={}",
sw.toString(), port.getPortNumber());
}
return false;
} else {
return true;
}
}
项目:iTAP-controller
文件:DeviceManagerImplTest.java
private IOFSwitch makeSwitchMock(DatapathId id) {
IOFSwitch mockSwitch = createMock(IOFSwitch.class);
OFPortDesc mockPortDesc = createMock(OFPortDesc.class);
OFPort port = OFPort.of(1);
expect(mockSwitch.getId()).andReturn(id).anyTimes();
expect(mockSwitch.getPort(OFPort.of(1))).andReturn(mockPortDesc).anyTimes();
expect(mockPortDesc.getPortNo()).andReturn(port).anyTimes();
return mockSwitch;
}
项目:fresco_floodlight
文件:DHCPSwitchFlowSetter.java
@Override
public void switchAdded(DatapathId dpid) {
/* Insert static flows on all ports of the switch to redirect
* DHCP client --> DHCP DHCPServer traffic to the controller.
* DHCP client's operate on UDP port 67
*/
IOFSwitch sw = switchService.getSwitch(dpid);
//fix concurrency flaw
if (sw == null){
return;
}
OFFlowAdd.Builder flow = sw.getOFFactory().buildFlowAdd();
Match.Builder match = sw.getOFFactory().buildMatch();
ArrayList<OFAction> actionList = new ArrayList<OFAction>();
OFActionOutput.Builder action = sw.getOFFactory().actions().buildOutput();
for (OFPortDesc port : sw.getPorts()) {
match.setExact(MatchField.IN_PORT, port.getPortNo());
match.setExact(MatchField.ETH_TYPE, EthType.IPv4);
match.setExact(MatchField.IP_PROTO, IpProtocol.UDP);
match.setExact(MatchField.UDP_SRC, UDP.DHCP_CLIENT_PORT);
action.setMaxLen(0xffFFffFF);
action.setPort(OFPort.CONTROLLER);
actionList.add(action.build());
flow.setBufferId(OFBufferId.NO_BUFFER);
flow.setHardTimeout(0);
flow.setIdleTimeout(0);
flow.setOutPort(OFPort.CONTROLLER);
flow.setActions(actionList);
flow.setMatch(match.build());
flow.setPriority(32767);
sfp.addFlow("dhcp-port---" + port.getPortNo().getPortNumber() + "---(" + port.getName() + ")", flow.build(), sw.getId());
}
}
项目:iTAP-controller
文件:OFSwitch.java
@Override
public Collection<OFPortDesc> getSortedPorts() {
List<OFPortDesc> sortedPorts =
new ArrayList<OFPortDesc>(portManager.getPorts());
Collections.sort(sortedPorts, new Comparator<OFPortDesc>() {
@Override
public int compare(OFPortDesc o1, OFPortDesc o2) {
String name1 = o1.getName();
String name2 = o2.getName();
return name1.compareToIgnoreCase(name2);
}
});
return sortedPorts;
}
项目:iTAP-controller
文件:OFSwitch.java
@Override
public void setPortDescStats(OFPortDescStatsReply reply) {
/* ports are updated via port status message, so we
* only fill in ports on initial connection.
*/
List<OFPortDesc> OFPortDescs = reply.getEntries();
portManager.updatePorts(OFPortDescs);
}
项目:fresco_floodlight
文件:SwitchSyncRepresentation.java
public OFPortDesc toOFPortDesc(OFFactory factory) {
OFPortDesc.Builder builder = factory.buildPortDesc();
builder.setPortNo(port.getPortNo());
builder.setHwAddr(port.getHwAddr());
builder.setName(port.getName());
builder.setConfig(port.getConfig());
builder.setState(port.getState());
builder.setCurr(port.getCurr());
builder.setAdvertised(port.getAdvertised());
builder.setSupported(port.getSupported());
builder.setPeer(port.getPeer());
return builder.build();
}
项目:fresco_floodlight
文件:SwitchSyncRepresentation.java
private static List<SyncedPort> toSyncedPortList(Collection<OFPortDesc> ports) {
List<SyncedPort> rv = new ArrayList<SyncedPort>(ports.size());
for (OFPortDesc p: ports) {
rv.add(SyncedPort.fromOFPortDesc(p));
}
return rv;
}
项目:fresco_floodlight
文件:SwitchSyncRepresentation.java
private static List<OFPortDesc> toOFPortDescList(OFFactory factory, Collection<SyncedPort> ports) {
List<OFPortDesc> rv = new ArrayList<OFPortDesc>(ports.size());
for (SyncedPort p: ports) {
rv.add(p.toOFPortDesc(factory));
}
return rv;
}
项目:iTAP-controller
文件:OFSwitchHandshakeHandlerVer13Test.java
OFPortDescStatsReply getPortDescStatsReply() {
OFPortDesc portDesc = factory.buildPortDesc()
.setName("Eth1")
.setPortNo(OFPort.of(1))
.build();
return factory.buildPortDescStatsReply()
.setEntries(ImmutableList.<OFPortDesc>of(portDesc))
.build();
}
项目:fresco_floodlight
文件:OFSwitch.java
/**
* Set the internal data structure storing this switch's port
* to the ports specified by newPortsByNumber
*
* CALLER MUST HOLD WRITELOCK
*
* @param newPortsByNumber
* @throws IllegaalStateException if called without holding the
* writelock
*/
private void updatePortsWithNewPortsByNumber(
Map<OFPort,OFPortDesc> newPortsByNumber) {
if (!lock.writeLock().isHeldByCurrentThread()) {
throw new IllegalStateException("Method called without " +
"holding writeLock");
}
Map<String,OFPortDesc> newPortsByName =
new HashMap<String, OFPortDesc>();
List<OFPortDesc> newPortList =
new ArrayList<OFPortDesc>();
List<OFPortDesc> newEnabledPortList =
new ArrayList<OFPortDesc>();
List<OFPort> newEnabledPortNumbers = new ArrayList<OFPort>();
for(OFPortDesc p: newPortsByNumber.values()) {
newPortList.add(p);
newPortsByName.put(p.getName().toLowerCase(), p);
if (!p.getState().contains(OFPortState.LINK_DOWN)
&& !p.getConfig().contains(OFPortConfig.PORT_DOWN)) {
if (!newEnabledPortList.contains(p)) {
newEnabledPortList.add(p);
}
if (!newEnabledPortNumbers.contains(p.getPortNo())) {
newEnabledPortNumbers.add(p.getPortNo());
}
}
}
portsByName = Collections.unmodifiableMap(newPortsByName);
portsByNumber =
Collections.unmodifiableMap(newPortsByNumber);
enabledPortList =
Collections.unmodifiableList(newEnabledPortList);
enabledPortNumbers =
Collections.unmodifiableList(newEnabledPortNumbers);
portList = Collections.unmodifiableList(newPortList);
}
项目:iTAP-controller
文件:LinkDiscoveryManager.java
/**
* Check if outgoing discovery messages are enabled or not.
* @param sw
* @param port
* @param isStandard
* @param isReverse
* @return
*/
protected boolean isOutgoingDiscoveryAllowed(DatapathId sw, OFPort port,
boolean isStandard,
boolean isReverse) {
if (isLinkDiscoverySuppressed(sw, port)) {
/* Dont send LLDPs out of this port as suppressLLDP is set */
return false;
}
IOFSwitch iofSwitch = switchService.getSwitch(sw);
if (iofSwitch == null) {
return false;
}
if (port == OFPort.LOCAL) return false;
OFPortDesc ofpPort = iofSwitch.getPort(port);
if (ofpPort == null) {
if (log.isTraceEnabled()) {
log.trace("Null physical port. sw={}, port={}",
sw.toString(), port.getPortNumber());
}
return false;
} else {
return true;
}
}
项目:fresco_floodlight
文件:OFSwitch.java
public OFPortDesc getPort(String name) {
if (name == null) {
throw new NullPointerException("Port name must not be null");
}
lock.readLock().lock();
try {
return portsByName.get(name.toLowerCase());
} finally {
lock.readLock().unlock();
}
}
项目:fresco_floodlight
文件:OFSwitch.java
public OFPortDesc getPort(OFPort portNumber) {
lock.readLock().lock();
try {
return portsByNumber.get(portNumber);
} finally {
lock.readLock().unlock();
}
}
项目:fresco_floodlight
文件:OFSwitch.java
public List<OFPortDesc> getPorts() {
lock.readLock().lock();
try {
return portList;
} finally {
lock.readLock().unlock();
}
}
项目:fresco_floodlight
文件:OFSwitch.java
@Override
public void setPortDescStats(OFPortDescStatsReply reply) {
/* ports are updated via port status message, so we
* only fill in ports on initial connection.
*/
List<OFPortDesc> OFPortDescs = reply.getEntries();
portManager.updatePorts(OFPortDescs);
}
项目:iTAP-controller
文件:OFSwitch.java
public List<OFPortDesc> getPorts() {
lock.readLock().lock();
try {
return portList;
} finally {
lock.readLock().unlock();
}
}
项目:iTAP-controller
文件:ControllerTest.java
private OFFeaturesReply createOFFeaturesReply(DatapathId datapathId) {
OFFeaturesReply fr = factory.buildFeaturesReply()
.setXid(0)
.setDatapathId(datapathId)
.setPorts(ImmutableList.<OFPortDesc>of())
.build();
return fr;
}
项目:fresco_floodlight
文件:Controller.java
@Override
public void switchPortChanged(DatapathId switchId, OFPortDesc port,
PortChangeType type) {
String msg = String.format("Switch %s port %s changed: %s",
switchId,
port.getName(),
type.toString());
notifier.postNotification(msg);
}
项目:iTAP-controller
文件:ObfuscationController.java
private void floodArpRequest(IOFSwitch sw, IPv4Address requestedAddress) {
IPacket arpRequest = new Ethernet()
.setSourceMACAddress("00:00:00:00:00:01")
.setDestinationMACAddress("ff:ff:ff:ff:ff:ff")
.setEtherType(EthType.ARP)
.setVlanID((short) 0)
.setPriorityCode((byte) 0)
.setPayload(
new ARP()
.setHardwareType(ARP.HW_TYPE_ETHERNET)
.setProtocolType(ARP.PROTO_TYPE_IP)
.setHardwareAddressLength((byte) 6)
.setProtocolAddressLength((byte) 4)
.setOpCode(ARP.OP_REQUEST)
.setSenderHardwareAddress(HexString.fromHexString("00:00:00:00:00:01"))
.setSenderProtocolAddress(IPv4.toIPv4AddressBytes("10.0.0.111"))
.setTargetHardwareAddress(HexString.fromHexString("00:00:00:00:00:00"))
.setTargetProtocolAddress(requestedAddress.getBytes()));
Set<OFPort> portsConnectedToSwitches = new HashSet<OFPort>();
for (Link link : linkDiscoveryService.getSwitchLinks().get(sw.getId())) {
if (link.getSrc() == sw.getId())
portsConnectedToSwitches.add(link.getSrcPort());
}
for (OFPortDesc port : sw.getPorts()) {
if (!portsConnectedToSwitches.contains(port.getPortNo())) {
pushPacket(arpRequest, sw, OFBufferId.NO_BUFFER, OFPort.ANY, port.getPortNo());
}
}
}
项目:iTAP-controller
文件:OFSwitch.java
public OFPortDesc getPort(OFPort portNumber) {
lock.readLock().lock();
try {
return portsByNumber.get(portNumber);
} finally {
lock.readLock().unlock();
}
}
项目:iTAP-controller
文件:LinkDiscoveryManager.java
/**
* Check if incoming discovery messages are enabled or not.
* @param sw
* @param port
* @param isStandard
* @return
*/
protected boolean isIncomingDiscoveryAllowed(DatapathId sw, OFPort port,
boolean isStandard) {
if (isLinkDiscoverySuppressed(sw, port)) {
/* Do not process LLDPs from this port as suppressLLDP is set */
return false;
}
IOFSwitch iofSwitch = switchService.getSwitch(sw);
if (iofSwitch == null) {
return false;
}
if (port == OFPort.LOCAL) return false;
OFPortDesc ofpPort = iofSwitch.getPort(port);
if (ofpPort == null) {
if (log.isTraceEnabled()) {
log.trace("Null physical port. sw={}, port={}",
sw.toString(), port.getPortNumber());
}
return false;
}
return true;
}