Giant patch of changes to support OpenFlow 1.3
The following people have contributed to this patch:
- Ali Al-Shabibi <alshabibi.ali@gmail.com>
- Ayaka Koshibe <ayaka@onlab.us>
- Brian O'Connor <bocon@onlab.us>
- Jonathan Hart <jono@onlab.us>
- Matteo Gerola <mgerola@create-net.org>
- Michele Santuari <michele.santuari@create-net.org>
- Pavlin Radoslavov <pavlin@onlab.us>
- Saurav Das <sauravdas@alumni.stanford.edu>
- Toshio Koide <t-koide@onlab.us>
- Yuta HIGUCHI <y-higuchi@onlab.us>
The patch includes the following changes:
- New Floodlight I/O loop / state machine
- New switch/port handling
- New role management (incl. Role.EQUAL)
- Added Floodlight debug framework
- Updates to Controller.java
- Move to Loxigen's OpenflowJ library
- Added OF1.3 support
- Added support for different switches (via DriverManager)
- Updated ONOS modules to use new APIs
- Added and updated unit tests
Change-Id: Ic70a8d50f7136946193d2ba2e4dc0b4bfac5f599
diff --git a/src/main/java/net/onrc/onos/core/hostmanager/HostManager.java b/src/main/java/net/onrc/onos/core/hostmanager/HostManager.java
index 6843fa9..9f6373d 100644
--- a/src/main/java/net/onrc/onos/core/hostmanager/HostManager.java
+++ b/src/main/java/net/onrc/onos/core/hostmanager/HostManager.java
@@ -30,15 +30,15 @@
import net.onrc.onos.core.util.Dpid;
import net.onrc.onos.core.util.PortNumber;
-import org.openflow.protocol.OFMessage;
-import org.openflow.protocol.OFPacketIn;
-import org.openflow.protocol.OFType;
+import org.projectfloodlight.openflow.protocol.OFMessage;
+import org.projectfloodlight.openflow.protocol.OFPacketIn;
+import org.projectfloodlight.openflow.protocol.OFType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HostManager implements IFloodlightModule,
- IOFMessageListener,
- IHostService {
+IOFMessageListener,
+IHostService {
private static final Logger log = LoggerFactory.getLogger(HostManager.class);
private static final long HOST_CLEANING_INITIAL_DELAY = 30;
@@ -106,8 +106,10 @@
Ethernet eth = IFloodlightProviderService.bcStore.
get(cntx, IFloodlightProviderService.CONTEXT_PI_PAYLOAD);
+ short inport = (short) cntx.getStorage()
+ .get(IFloodlightProviderService.CONTEXT_PI_INPORT);
- return processPacketIn(sw, pi, eth);
+ return processPacketIn(sw, pi, eth, inport);
}
return Command.CONTINUE;
@@ -116,13 +118,14 @@
// This "protected" modifier is for unit test.
// The above "receive" method couldn't be tested
// because of IFloodlightProviderService static final field.
- protected Command processPacketIn(IOFSwitch sw, OFPacketIn pi, Ethernet eth) {
+ protected Command processPacketIn(IOFSwitch sw, OFPacketIn pi, Ethernet eth,
+ short inport) {
if (log.isTraceEnabled()) {
log.trace("Receive PACKET_IN swId {}, portId {}", sw.getId(), pi.getInPort());
}
final Dpid dpid = new Dpid(sw.getId());
- final PortNumber portNum = new PortNumber(pi.getInPort());
+ final PortNumber portNum = new PortNumber(inport);
Host srcHost =
getSourceHostFromPacket(eth, dpid.value(), portNum.value());
@@ -140,8 +143,8 @@
if (topology.getOutgoingLink(dpid, portNum) != null ||
topology.getIncomingLink(dpid, portNum) != null) {
log.debug("Not adding host {} as " +
- "there is a link on the port: dpid {} port {}",
- srcHost.getMacAddress(), dpid, portNum);
+ "there is a link on the port: dpid {} port {}",
+ srcHost.getMacAddress(), dpid, portNum);
return Command.CONTINUE;
}
} finally {