Removed Floodlight DeviceManager and created a stripped-down device manager that pushes device data from every packet seen into the network map
diff --git a/src/main/java/net/onrc/onos/ofcontroller/forwarding/Forwarding.java b/src/main/java/net/onrc/onos/ofcontroller/forwarding/Forwarding.java
index bd51fdc..4b2b087 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/forwarding/Forwarding.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/forwarding/Forwarding.java
@@ -25,6 +25,7 @@
import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
import net.onrc.onos.ofcontroller.core.internal.DeviceStorageImpl;
+import net.onrc.onos.ofcontroller.devicemanager.IOnosDeviceService;
import net.onrc.onos.ofcontroller.flowmanager.IFlowService;
import net.onrc.onos.ofcontroller.flowprogrammer.IFlowPusherService;
import net.onrc.onos.ofcontroller.proxyarp.ArpMessage;
@@ -51,8 +52,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.collect.HashMultimap;
-import com.google.common.collect.Multimap;
+import com.google.common.collect.LinkedListMultimap;
+import com.google.common.collect.ListMultimap;
import com.google.common.net.InetAddresses;
public class Forwarding implements IOFMessageListener, IFloodlightModule,
@@ -71,7 +72,7 @@
private TopologyManager topologyService;
private Map<Path, Long> pendingFlows;
- private Multimap<Long, PacketToPush> waitingPackets;
+ private ListMultimap<Long, PacketToPush> waitingPackets;
private final Object lock = new Object();
@@ -139,6 +140,7 @@
dependencies.add(IFloodlightProviderService.class);
dependencies.add(IFlowService.class);
dependencies.add(IFlowPusherService.class);
+ dependencies.add(IOnosDeviceService.class);
return dependencies;
}
@@ -155,7 +157,8 @@
pendingFlows = new ConcurrentHashMap<Path, Long>();
//waitingPackets = Multimaps.synchronizedSetMultimap(
//HashMultimap.<Long, PacketToPush>create());
- waitingPackets = HashMultimap.create();
+ //waitingPackets = HashMultimap.create();
+ waitingPackets = LinkedListMultimap.create();
deviceStorage = new DeviceStorageImpl();
deviceStorage.init("");
@@ -176,7 +179,8 @@
@Override
public boolean isCallbackOrderingPrereq(OFType type, String name) {
return (type == OFType.PACKET_IN) &&
- (name.equals("devicemanager") || name.equals("proxyarpmanager"));
+ (name.equals("devicemanager") || name.equals("proxyarpmanager")
+ || name.equals("onosdevicemanager"));
}
@Override
@@ -234,7 +238,7 @@
// our non-ARP packets.
// TODO This should be refactored later to account for the new use case.
datagrid.sendArpRequest(ArpMessage.newRequest(targetAddress, eth.serialize(),
- sw.getId(), pi.getInPort()));
+ -1L, (short)-1, sw.getId(), pi.getInPort()));
}
private void handlePacketIn(IOFSwitch sw, OFPacketIn pi, Ethernet eth) {