Skip to content
Snippets Groups Projects
Commit 1c839f9f authored by brobertson3's avatar brobertson3
Browse files

Added the implementation for RoutingDecisionChanged

This deletes/add flows from the switch out of forwarding when the firewall rule changes.
parent ce9f6813
No related branches found
No related tags found
No related merge requests found
......@@ -293,6 +293,7 @@ IFloodlightModule {
floodlightProvider = context.getServiceImpl(IFloodlightProviderService.class);
storageSource = context.getServiceImpl(IStorageSourceService.class);
restApi = context.getServiceImpl(IRestApiService.class);
routingService = context.getServiceImpl(IRoutingService.class);
rules = new ArrayList<FirewallRule>();
logger = LoggerFactory.getLogger(Firewall.class);
......
......@@ -51,7 +51,6 @@ import net.floodlightcontroller.packet.TCP;
import net.floodlightcontroller.packet.UDP;
import net.floodlightcontroller.routing.ForwardingBase;
import net.floodlightcontroller.routing.IRoutingDecision;
import net.floodlightcontroller.routing.IRoutingDecisionChange;
import net.floodlightcontroller.routing.IRoutingDecisionChangedListener;
import net.floodlightcontroller.routing.IRoutingService;
import net.floodlightcontroller.routing.Route;
......@@ -162,9 +161,11 @@ public class Forwarding extends ForwardingBase implements IFloodlightModule, IOF
return AppCookie.makeCookie(FORWARDING_APP_ID, user_fields);
}
/** */
public void routingDecisionChanged(IRoutingDecisionChange event) {
//FIXME
/** Called when the handleDecisionChange is triggered by an event (routing decision was changed in firewall).
*
* @param eventDescriptors Collection of descriptors that should be deleted from the switch.*/
public void routingDecisionChanged(Iterable<Masked<U64>> eventDescriptors) {
deleteFlowsByDescriptor(eventDescriptors);
}
/**
......
......@@ -338,7 +338,7 @@ IFloodlightModule, IInfoProvider {
byte[] srcMac = ofpPort.getHwAddr().getBytes();
byte[] zeroMac = { 0, 0, 0, 0, 0, 0 };
if (Arrays.equals(srcMac, zeroMac)) {
log.warn("Port {}/{} has zero hareware address"
log.warn("Port {}/{} has zero hardware address"
+ "overwrite with lower 6 bytes of dpid",
dpid.toString(), ofpPort.getPortNo().getPortNumber());
System.arraycopy(dpidArray, 2, srcMac, 0, 6);
......
package net.floodlightcontroller.routing;
import org.projectfloodlight.openflow.types.Masked;
import org.projectfloodlight.openflow.types.U64;
public interface IRoutingDecisionChange {
public Iterable<Masked<U64>> getDescriptor();
}
package net.floodlightcontroller.routing;
import org.projectfloodlight.openflow.types.Masked;
import org.projectfloodlight.openflow.types.U64;
public interface IRoutingDecisionChangedListener {
public void routingDecisionChanged(IRoutingDecisionChange event);
public void routingDecisionChanged(Iterable<Masked<U64>> event);
}
......@@ -59,7 +59,6 @@ import net.floodlightcontroller.packet.BSN;
import net.floodlightcontroller.packet.Ethernet;
import net.floodlightcontroller.packet.LLDP;
import net.floodlightcontroller.restserver.IRestApiService;
import net.floodlightcontroller.routing.IRoutingDecisionChange;
import net.floodlightcontroller.routing.IRoutingDecisionChangedListener;
import net.floodlightcontroller.routing.IRoutingService;
import net.floodlightcontroller.routing.Link;
......@@ -860,6 +859,7 @@ public class TopologyManager implements IFloodlightModule, ITopologyService, IRo
topologyAware = new ArrayList<ITopologyListener>();
ldUpdates = new LinkedBlockingQueue<LDUpdate>();
haListener = new HAListenerDelegate();
this.decisionChangedListeners = new ArrayList<IRoutingDecisionChangedListener>();
registerTopologyDebugCounters();
registerTopologyDebugEvents();
}
......@@ -1539,12 +1539,11 @@ public class TopologyManager implements IFloodlightModule, ITopologyService, IRo
}
public void addRoutingDecisionChangedListener(IRoutingDecisionChangedListener listener) {
this.decisionChangedListeners.add(listener);
decisionChangedListeners.add(listener);
}
public void removeRoutingDecisionChangedListener(IRoutingDecisionChangedListener listener) {
/**TODO remove the listener now */
this.decisionChangedListeners.remove(listener);
decisionChangedListeners.remove(listener);
}
public void handleRoutingDecisionChange(Iterable<Masked<U64>> event) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment