merge
diff --git a/apps/fwd/src/main/java/org/onlab/onos/fwd/ReactiveForwarding.java b/apps/fwd/src/main/java/org/onlab/onos/fwd/ReactiveForwarding.java
index 0dd6aef..bc0b425 100644
--- a/apps/fwd/src/main/java/org/onlab/onos/fwd/ReactiveForwarding.java
+++ b/apps/fwd/src/main/java/org/onlab/onos/fwd/ReactiveForwarding.java
@@ -100,8 +100,8 @@
// Otherwise, get a set of paths that lead from here to the
// destination edge switch.
Set<Path> paths = topologyService.getPaths(topologyService.currentTopology(),
- context.inPacket().receivedFrom().deviceId(),
- dst.location().deviceId());
+ context.inPacket().receivedFrom().deviceId(),
+ dst.location().deviceId());
if (paths.isEmpty()) {
// If there are no paths, flood and bail.
flood(context);
@@ -136,7 +136,7 @@
// Floods the specified packet.
private void flood(PacketContext context) {
if (topologyService.isBroadcastPoint(topologyService.currentTopology(),
- context.inPacket().receivedFrom())) {
+ context.inPacket().receivedFrom())) {
packetOutFlood(context);
} else {
context.block();
@@ -151,18 +151,22 @@
// Install a rule forwarding the packet to the specified port.
private void installRule(PacketContext context, PortNumber portNumber) {
+ // we don't yet support bufferids in the flowservice so packet out and
+ // then install a flowmod.
+ packetOutFlood(context);
+
Ethernet inPkt = context.inPacket().parsed();
TrafficSelector.Builder builder = new DefaultTrafficSelector.Builder();
builder.add(Criteria.matchEthType(inPkt.getEtherType()))
- .add(Criteria.matchEthSrc(inPkt.getSourceMAC()))
- .add(Criteria.matchEthDst(inPkt.getDestinationMAC()))
- .add(Criteria.matchInPort(context.inPacket().receivedFrom().port()));
+ .add(Criteria.matchEthSrc(inPkt.getSourceMAC()))
+ .add(Criteria.matchEthDst(inPkt.getDestinationMAC()))
+ .add(Criteria.matchInPort(context.inPacket().receivedFrom().port()));
TrafficTreatment.Builder treat = new DefaultTrafficTreatment.Builder();
treat.add(Instructions.createOutput(portNumber));
FlowRule f = new DefaultFlowRule(context.inPacket().receivedFrom().deviceId(),
- builder.build(), treat.build());
+ builder.build(), treat.build());
flowRuleService.applyFlowRules(f);
diff --git a/of/api/src/main/java/org/onlab/onos/of/controller/DefaultOpenFlowPacketContext.java b/of/api/src/main/java/org/onlab/onos/of/controller/DefaultOpenFlowPacketContext.java
index 5b6d109..45f615a 100644
--- a/of/api/src/main/java/org/onlab/onos/of/controller/DefaultOpenFlowPacketContext.java
+++ b/of/api/src/main/java/org/onlab/onos/of/controller/DefaultOpenFlowPacketContext.java
@@ -78,7 +78,8 @@
return new Dpid(sw.getId());
}
- public static OpenFlowPacketContext packetContextFromPacketIn(OpenFlowSwitch s, OFPacketIn pkt) {
+ public static OpenFlowPacketContext packetContextFromPacketIn(OpenFlowSwitch s,
+ OFPacketIn pkt) {
return new DefaultOpenFlowPacketContext(s, pkt);
}
diff --git a/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/Controller.java b/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/Controller.java
index d8cec26..061f5bf 100644
--- a/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/Controller.java
+++ b/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/Controller.java
@@ -53,8 +53,6 @@
protected static final OFFactory FACTORY13 = OFFactories.getFactory(OFVersion.OF_13);
protected static final OFFactory FACTORY10 = OFFactories.getFactory(OFVersion.OF_10);
-
-
// The controllerNodeIPsCache maps Controller IDs to their IP address.
// It's only used by handleControllerNodeIPsChanged
protected HashMap<String, String> controllerNodeIPsCache;
@@ -68,16 +66,12 @@
// Start time of the controller
protected long systemStartTime;
- // Flag to always flush flow table on switch reconnect (HA or otherwise)
- protected boolean alwaysClearFlowsOnSwAdd = false;
private OpenFlowAgent agent;
private NioServerSocketChannelFactory execFactory;
// Perf. related configuration
protected static final int SEND_BUFFER_SIZE = 4 * 1024 * 1024;
- protected static final int BATCH_MAX_SIZE = 100;
- protected static final boolean ALWAYS_DECODE_ETH = true;
// ***************
// Getters/Setters
diff --git a/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/OFChannelHandler.java b/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/OFChannelHandler.java
index 4218f44..adcb990 100644
--- a/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/OFChannelHandler.java
+++ b/of/ctl/src/main/java/org/onlab/onos/of/controller/impl/OFChannelHandler.java
@@ -538,43 +538,41 @@
@Override
void processOFStatisticsReply(OFChannelHandler h,
OFStatsReply m) {
- h.sw.handleMessage(m);
+ h.dispatchMessage(m);
}
@Override
void processOFExperimenter(OFChannelHandler h, OFExperimenter m)
- throws IOException, SwitchStateException {
+ throws SwitchStateException {
h.sw.handleNiciraRole(m);
}
@Override
void processOFRoleReply(OFChannelHandler h, OFRoleReply m)
- throws SwitchStateException, IOException {
+ throws SwitchStateException {
h.sw.handleRole(m);
}
@Override
void processOFPortStatus(OFChannelHandler h, OFPortStatus m)
- throws IOException, SwitchStateException {
+ throws SwitchStateException {
handlePortStatusMessage(h, m, true);
h.dispatchMessage(m);
}
@Override
- void processOFPacketIn(OFChannelHandler h, OFPacketIn m)
- throws IOException {
+ void processOFPacketIn(OFChannelHandler h, OFPacketIn m) {
h.dispatchMessage(m);
}
@Override
void processOFFlowRemoved(OFChannelHandler h,
- OFFlowRemoved m) throws IOException {
+ OFFlowRemoved m) {
h.dispatchMessage(m);
}
@Override
- void processOFBarrierReply(OFChannelHandler h, OFBarrierReply m)
- throws IOException {
+ void processOFBarrierReply(OFChannelHandler h, OFBarrierReply m) {
h.dispatchMessage(m);
}
@@ -1092,7 +1090,7 @@
return this.state.isHandshakeComplete();
}
- private void dispatchMessage(OFMessage m) throws IOException {
+ private void dispatchMessage(OFMessage m) {
sw.handleMessage(m);
}