diff --git a/src/main/java/net/floodlightcontroller/core/IOFSwitch.java b/src/main/java/net/floodlightcontroller/core/IOFSwitch.java index 1bd6a5e72231eaad193979f93f625095730f776f..34c5319b5bffb127cc977049549496bbe166851e 100644 --- a/src/main/java/net/floodlightcontroller/core/IOFSwitch.java +++ b/src/main/java/net/floodlightcontroller/core/IOFSwitch.java @@ -343,20 +343,4 @@ public interface IOFSwitch extends IOFMessageWriter { * return a Future that immediately fails with a @link{SwitchDisconnectedException}. */ <R extends OFMessage> ListenableFuture<R> writeRequest(OFRequest<R> request, LogicalOFMessageCategory category); - - - /** - * Can the port be turned on without forming a new loop? - * <p> - * <b>FIXME</b> - This API is deprecated and will be removed soon. The - * property is currently not implemented by the platform, so this method - * always returns false. Whether or not a port is safe to use is dependent - * on the application strategy for forwarding traffic. - * - * @param port_num the port number to be tested - * @return always false for now. - */ - @Deprecated - boolean isFastPort(OFPort port_num); - } diff --git a/src/main/java/net/floodlightcontroller/core/OFSwitch.java b/src/main/java/net/floodlightcontroller/core/OFSwitch.java index 5f5115b9e0120cbbfe8202636f738017acb560c3..b1298f8697128574e4d71c3e95438a3603903b30 100644 --- a/src/main/java/net/floodlightcontroller/core/OFSwitch.java +++ b/src/main/java/net/floodlightcontroller/core/OFSwitch.java @@ -1046,23 +1046,6 @@ public class OFSwitch implements IOFSwitchBackend { this.status = switchStatus; } - /** - * Can the port be turned on without forming a new loop? - * <p> - * <b>FIXME</b> - This API is deprecated and will be removed soon. The - * property is currently not implemented by the platform, so this method - * always returns false. Whether or not a port is safe to use is dependent - * on the application strategy for forwarding traffic. - * - * @param port_num the port number to be tested - * @return always false for now. - */ - @Deprecated - @Override - public boolean isFastPort(OFPort port_num) { - return false; - } - @Override public void updateControllerConnections(OFBsnControllerConnectionsReply controllerCxnsReply) { diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscovery.java b/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscovery.java index 07c90c054cea39f79dcfe33ece5010633f74c54c..d1dee02a9347d5d5fd185dd9bc17356a57240365 100644 --- a/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscovery.java +++ b/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscovery.java @@ -150,7 +150,7 @@ public interface ILinkDiscovery { } public enum SwitchType { - BASIC_SWITCH, CORE_SWITCH, UNDEFFINED_SWITCH + BASIC_SWITCH, CORE_SWITCH }; public enum LinkType { diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java index 260c2ad77f3644a2c0786ca942b6b6cdcbfbb9bd..34cd6072dd4435c246d25c19910a47ac79901f7e 100644 --- a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java +++ b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java @@ -17,7 +17,6 @@ package net.floodlightcontroller.linkdiscovery.internal; -import java.io.IOException; import java.net.NetworkInterface; import java.net.SocketException; import java.nio.ByteBuffer; @@ -45,8 +44,8 @@ import net.floodlightcontroller.core.FloodlightContext; import net.floodlightcontroller.core.HAListenerTypeMarker; import net.floodlightcontroller.core.HARole; import net.floodlightcontroller.core.IFloodlightProviderService; +import net.floodlightcontroller.core.IShutdownService; import net.floodlightcontroller.core.PortChangeType; -import net.floodlightcontroller.core.RoleInfo; import net.floodlightcontroller.core.IHAListener; import net.floodlightcontroller.core.IInfoProvider; import net.floodlightcontroller.core.IOFMessageListener; @@ -105,7 +104,6 @@ import org.projectfloodlight.openflow.types.OFPort; import org.projectfloodlight.openflow.util.HexString; import org.projectfloodlight.openflow.protocol.OFType; import org.projectfloodlight.openflow.protocol.action.OFAction; -import org.projectfloodlight.openflow.protocol.action.OFActionOutput; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -148,7 +146,6 @@ IFloodlightModule, IInfoProvider { private static final String LINK_VALID_TIME = "valid_time"; private static final String LINK_TYPE = "link_type"; private static final String SWITCH_CONFIG_TABLE_NAME = "controller_switchconfig"; - private static final String SWITCH_CONFIG_CORE_SWITCH = "core_switch"; // Event updaters for debug events protected IEventCategory<DirectLinkEvent> eventCategory; @@ -160,6 +157,7 @@ IFloodlightModule, IInfoProvider { protected IRestApiService restApiService; protected IDebugCounterService debugCounterService; protected IDebugEventService debugEventService; + protected IShutdownService shutdownService; // Role protected HARole role; @@ -816,22 +814,13 @@ IFloodlightModule, IInfoProvider { } IOFSwitch iofSwitch = switchService.getSwitch(sw); - if (iofSwitch == null) return; - - if (autoPortFastFeature && iofSwitch.isFastPort(p)) { - // Do nothing as the port is a fast port. + if (iofSwitch == null) { return; } + NodePortTuple npt = new NodePortTuple(sw, p); discover(sw, p); - // if it is not a fast port, add it to quarantine. - if (!iofSwitch.isFastPort(p)) { - addToQuarantineQueue(npt); - } else { - // Add to maintenance queue to ensure that BDDP packets - // are sent out. - addToMaintenanceQueue(npt); - } + addToQuarantineQueue(npt); } //*********************************** @@ -930,8 +919,7 @@ IFloodlightModule, IInfoProvider { */ protected void removeFromQuarantineQueue(NodePortTuple npt) { // Remove all occurrences of the node port tuple from the list. - while (quarantineQueue.remove(npt)) - ; + while (quarantineQueue.remove(npt)); } /** @@ -940,11 +928,9 @@ IFloodlightModule, IInfoProvider { * @param npt */ protected void addToMaintenanceQueue(NodePortTuple npt) { - // TODO We are not checking if the switch port tuple is already - // in the maintenance list or not. This will be an issue for - // really large number of switch ports in the network. - if (maintenanceQueue.contains(npt) == false) + if (maintenanceQueue.contains(npt) == false) { maintenanceQueue.add(npt); + } } /** @@ -954,8 +940,7 @@ IFloodlightModule, IInfoProvider { */ protected void removeFromMaintenanceQueue(NodePortTuple npt) { // Remove all occurrences of the node port tuple from the queue. - while (maintenanceQueue.remove(npt)) - ; + while (maintenanceQueue.remove(npt)); } /** @@ -971,8 +956,7 @@ IFloodlightModule, IInfoProvider { while (count < BDDP_TASK_SIZE && quarantineQueue.peek() != null) { NodePortTuple npt; npt = quarantineQueue.remove(); - sendDiscoveryMessage(npt.getNodeId(), npt.getPortId(), false, - false); + sendDiscoveryMessage(npt.getNodeId(), npt.getPortId(), false, false); nptList.add(npt); count++; } @@ -981,8 +965,7 @@ IFloodlightModule, IInfoProvider { while (count < BDDP_TASK_SIZE && maintenanceQueue.peek() != null) { NodePortTuple npt; npt = maintenanceQueue.remove(); - sendDiscoveryMessage(npt.getNodeId(), npt.getPortId(), false, - false); + sendDiscoveryMessage(npt.getNodeId(), npt.getPortId(), false, false); count++; } @@ -1001,14 +984,15 @@ IFloodlightModule, IInfoProvider { if (ofp == null) return; Set<OFPortState> srcPortState = ofp.getState(); - boolean portUp = ((srcPortState & OFPortState.OFPPS_STP_MASK.getValue()) - != OFPortState.OFPPS_STP_BLOCK.getValue()); + //TODO @Ryan verify this is equivalent boolean portUp = ((srcPortState & OFPortState.OFPPS_STP_MASK.getValue()) != OFPortState.OFPPS_STP_BLOCK.getValue()); + boolean portUp = !srcPortState.contains(OFPortState.STP_BLOCK); - if (portUp) + if (portUp) { operation = UpdateOperation.PORT_UP; - else + } else { operation = UpdateOperation.PORT_DOWN; - + } + updates.add(new LDUpdate(sw, port, operation)); } @@ -1085,12 +1069,9 @@ IFloodlightModule, IInfoProvider { sw.toString(), port.getPortNumber()); } return false; + } else { + return true; } - - // For fast ports, do not send forward LLDPs or BDDPs. - if (!isReverse && autoPortFastFeature && iofSwitch.isFastPort(port)) - return false; - return true; } /** @@ -1168,10 +1149,10 @@ IFloodlightModule, IInfoProvider { if (iofSwitch == null) continue; if (iofSwitch.getEnabledPorts() != null) { for (OFPortDesc ofp : iofSwitch.getEnabledPorts()) { - if (isLinkDiscoverySuppressed(sw, ofp.getPortNo())) continue; - if (autoPortFastFeature && iofSwitch.isFastPort(ofp.getPortNumber())) continue; + if (isLinkDiscoverySuppressed(sw, ofp.getPortNo())) { + continue; + } - // sends forward LLDP only non-fastports. sendDiscoveryMessage(sw, ofp.getPortNo(), true, false); // If the switch port is not already in the maintenance @@ -1183,24 +1164,28 @@ IFloodlightModule, IInfoProvider { } } - protected UpdateOperation getUpdateOperation(OFPortState srcPortState, - OFPortState dstPortState) { - boolean added = (((srcPortState & OFPortState.STP_MASK) - != OFPortState.STP_BLOCK) && - ((dstPortState & OFPortState.STP_MASK) - != OFPortState.STP_BLOCK)); + protected UpdateOperation getUpdateOperation(OFPortState srcPortState, OFPortState dstPortState) { + //TODO @Ryan verify this is equivalent + //boolean added = (((srcPortState & OFPortState.STP_MASK) != OFPortState.STP_BLOCK) && ((dstPortState & OFPortState.STP_MASK) != OFPortState.STP_BLOCK)); + boolean added = ((srcPortState != OFPortState.STP_BLOCK) && (dstPortState != OFPortState.STP_BLOCK)); - if (added) return UpdateOperation.LINK_UPDATED; - return UpdateOperation.LINK_REMOVED; + if (added) { + return UpdateOperation.LINK_UPDATED; + } else { + return UpdateOperation.LINK_REMOVED; + } } protected UpdateOperation getUpdateOperation(OFPortState srcPortState) { - boolean portUp = ((srcPortState & OFPortState.STP_MASK) != OFPortState.STP_BLOCK); + //TODO @Ryan verify this too + //boolean portUp = ((srcPortState & OFPortState.STP_MASK) != OFPortState.STP_BLOCK); + boolean portUp = (srcPortState != OFPortState.STP_BLOCK); - if (portUp) + if (portUp) { return UpdateOperation.PORT_UP; - else + } else { return UpdateOperation.PORT_DOWN; + } } //************************************ @@ -1630,34 +1615,34 @@ IFloodlightModule, IInfoProvider { @Override public void switchRemoved(DatapathId sw) { - List<Link> eraseList = new ArrayList<Link>(); - lock.writeLock().lock(); - try { - if (switchLinks.containsKey(sw)) { - if (log.isTraceEnabled()) { - log.trace("Handle switchRemoved. Switch {}; removing links {}", - sw.toString(), switchLinks.get(sw)); - } + List<Link> eraseList = new ArrayList<Link>(); + lock.writeLock().lock(); + try { + if (switchLinks.containsKey(sw)) { + if (log.isTraceEnabled()) { + log.trace("Handle switchRemoved. Switch {}; removing links {}", sw.toString(), switchLinks.get(sw)); + } + + List<LDUpdate> updateList = new ArrayList<LDUpdate>(); + updateList.add(new LDUpdate(sw, SwitchType.BASIC_SWITCH, UpdateOperation.SWITCH_REMOVED)); + // add all tuples with an endpoint on this switch to erase list + eraseList.addAll(switchLinks.get(sw)); + + // Sending the updateList, will ensure the updates in this + // list will be added at the end of all the link updates. + // Thus, it is not necessary to explicitly add these updates + // to the queue. + deleteLinks(eraseList, "Switch Removed", updateList); + } else { + // Switch does not have any links. + updates.add(new LDUpdate(sw, SwitchType.BASIC_SWITCH, UpdateOperation.SWITCH_REMOVED)); + } + } finally { + lock.writeLock().unlock(); + } + + } - List<LDUpdate> updateList = new ArrayList<LDUpdate>(); - updateList.add(new LDUpdate(sw, SwitchType.UNDEFFINED_SWITCH, UpdateOperation.SWITCH_REMOVED)); - // add all tuples with an endpoint on this switch to erase list - eraseList.addAll(switchLinks.get(sw)); - - // Sending the updateList, will ensure the updates in this - // list will be added at the end of all the link updates. - // Thus, it is not necessary to explicitly add these updates - // to the queue. - deleteLinks(eraseList, "Switch Removed", updateList); - } else { - // Switch does not have any links. - updates.add(new LDUpdate(sw, SwitchType.UNDEFFINED_SWITCH, UpdateOperation.SWITCH_REMOVED)); - } - } finally { - lock.writeLock().unlock(); - } - - } @Override public void switchActivated(DatapathId switchId) { @@ -1667,7 +1652,7 @@ IFloodlightModule, IInfoProvider { processNewPort(sw.getId(), p); } } - LDUpdate update = new LDUpdate(sw.getId(), SwitchType.UNDEFFINED_SWITCH, UpdateOperation.SWITCH_UPDATED); + LDUpdate update = new LDUpdate(sw.getId(), SwitchType.BASIC_SWITCH, UpdateOperation.SWITCH_UPDATED); updates.add(update); } @@ -1702,67 +1687,65 @@ IFloodlightModule, IInfoProvider { @Override public void rowsModified(String tableName, Set<Object> rowKeys) { - if (tableName.equals(TOPOLOGY_TABLE_NAME)) { - readTopologyConfigFromStorage(); - return; - } - - ArrayList<IOFSwitch> updated_switches = new ArrayList<IOFSwitch>(); - for (Object key : rowKeys) { - Long swId = new Long(HexString.toLong((String) key)); - IOFSwitch sw = switchService.getSwitch(DatapathId.of(swId)); - if (sw != null) { - boolean curr_status = sw.hasAttribute(IOFSwitch.SwitchStatus.MASTER.toString()); //TODO @Ryan assuming IS_CORE_SWITCH is MASTER now - boolean new_status = false; - IResultSet resultSet = null; - - try { - resultSet = storageSourceService.getRow(tableName, key); - for (Iterator<IResultSet> it = resultSet.iterator(); it.hasNext();) { - // In case of multiple rows, use the status in last row? - Map<String, Object> row = it.next().getRow(); - if (row.containsKey(SWITCH_CONFIG_CORE_SWITCH)) { - new_status = ((String) row.get(SWITCH_CONFIG_CORE_SWITCH)).equals("true"); - } - } - } finally { - if (resultSet != null) resultSet.close(); - } - - if (curr_status != new_status) { - updated_switches.add(sw); - } - } else { - if (log.isTraceEnabled()) { - log.trace("Update for switch which has no entry in switch " - + "list (dpid={}), a delete action.", - key); - } - } - } - - for (IOFSwitch sw : updated_switches) { - // Set SWITCH_IS_CORE_SWITCH to it's inverse value - if (sw.hasAttribute(IOFSwitch.SWITCH_IS_CORE_SWITCH)) { - sw.removeAttribute(IOFSwitch.SWITCH_IS_CORE_SWITCH); - if (log.isTraceEnabled()) { - log.trace("SWITCH_IS_CORE_SWITCH set to False for {}", - sw); - } - updates.add(new LDUpdate(sw.getId(), - SwitchType.BASIC_SWITCH, - UpdateOperation.SWITCH_UPDATED)); - } else { - sw.setAttribute(IOFSwitch.SWITCH_IS_CORE_SWITCH, - new Boolean(true)); - if (log.isTraceEnabled()) { - log.trace("SWITCH_IS_CORE_SWITCH set to True for {}", sw); - } - updates.add(new LDUpdate(sw.getId(), SwitchType.CORE_SWITCH, - UpdateOperation.SWITCH_UPDATED)); - } - } - } + if (tableName.equals(TOPOLOGY_TABLE_NAME)) { + readTopologyConfigFromStorage(); + return; + } + /* TODO @Ryan can we nuke all this? core switch isn't used all that often (I don't think) and not at all anymore + + ArrayList<IOFSwitch> updated_switches = new ArrayList<IOFSwitch>(); + for (Object key : rowKeys) { + DatapathId swId = DatapathId.of((String) key); + IOFSwitch sw = switchService.getSwitch(swId); + if (sw != null) { + boolean curr_status = sw.hasAttribute(IOFSwitch.SWITCH_IS_CORE_SWITCH); + boolean new_status = false; + IResultSet resultSet = null; + + try { + resultSet = storageSourceService.getRow(tableName, key); + for (Iterator<IResultSet> it = resultSet.iterator(); it.hasNext();) { + // In case of multiple rows, use the status in last row? + Map<String, Object> row = it.next().getRow(); + if (row.containsKey(SWITCH_CONFIG_CORE_SWITCH)) { + new_status = ((String) row.get(SWITCH_CONFIG_CORE_SWITCH)).equals("true"); + } + } + } finally { + if (resultSet != null) { + resultSet.close(); + } + } + + if (curr_status != new_status) { + updated_switches.add(sw); + } + } else { + if (log.isTraceEnabled()) { + log.trace("Update for switch which has no entry in switch " + "list (dpid={}), a delete action.", key); + } + } + } + + for (IOFSwitch sw : updated_switches) { + // Set SWITCH_IS_CORE_SWITCH to it's inverse value + if (sw.hasAttribute(IOFSwitch.SWITCH_IS_CORE_SWITCH)) { + sw.removeAttribute(IOFSwitch.SWITCH_IS_CORE_SWITCH); + if (log.isTraceEnabled()) { + log.trace("SWITCH_IS_CORE_SWITCH set to False for {}", sw); + } + updates.add(new LDUpdate(sw.getId(), + SwitchType.BASIC_SWITCH, + UpdateOperation.SWITCH_UPDATED)); + } else { + sw.setAttribute(IOFSwitch.SWITCH_IS_CORE_SWITCH, new Boolean(true)); + if (log.isTraceEnabled()) { + log.trace("SWITCH_IS_CORE_SWITCH set to True for {}", sw); + } + updates.add(new LDUpdate(sw.getId(), SwitchType.CORE_SWITCH, UpdateOperation.SWITCH_UPDATED)); + } + }*/ + } @Override public void rowsDeleted(String tableName, Set<Object> rowKeys) { @@ -1923,6 +1906,7 @@ IFloodlightModule, IInfoProvider { l.add(IStorageSourceService.class); l.add(IThreadPoolService.class); l.add(IRestApiService.class); + l.add(IShutdownService.class); return l; } @@ -1936,6 +1920,7 @@ IFloodlightModule, IInfoProvider { restApiService = context.getServiceImpl(IRestApiService.class); debugCounterService = context.getServiceImpl(IDebugCounterService.class); debugEventService = context.getServiceImpl(IDebugEventService.class); + shutdownService = context.getServiceImpl(IShutdownService.class); // read our config options Map<String, String> configOptions = context.getConfigParams(this); @@ -2030,9 +2015,7 @@ IFloodlightModule, IInfoProvider { try { discoverLinks(); } catch (StorageException e) { - log.error("Storage exception in LLDP send timer; " - + "terminating process", e); - floodlightProviderService.terminate(); + shutdownService.terminate("Storage exception in LLDP send timer. Terminating process " + e, 0); // TODO @Ryan as there "standard" shutdown codes Floodlight uses? } catch (Exception e) { log.error("Exception in LLDP send timer.", e); } finally { @@ -2222,8 +2205,7 @@ IFloodlightModule, IInfoProvider { @Override public void transitionToStandby() { - // TODO Auto-generated method stub - + //no-op } } diff --git a/src/main/java/net/floodlightcontroller/loadbalancer/LBVip.java b/src/main/java/net/floodlightcontroller/loadbalancer/LBVip.java index 1d0a9bdadd16cca75dccb00cb3251cd4b160e59b..00f2141685a7adbec7da241dc6160b70d91421c3 100644 --- a/src/main/java/net/floodlightcontroller/loadbalancer/LBVip.java +++ b/src/main/java/net/floodlightcontroller/loadbalancer/LBVip.java @@ -18,10 +18,11 @@ package net.floodlightcontroller.loadbalancer; import java.util.ArrayList; +import org.projectfloodlight.openflow.types.MacAddress; + import com.fasterxml.jackson.databind.annotation.JsonSerialize; import net.floodlightcontroller.loadbalancer.LoadBalancer.IPClient; -import net.floodlightcontroller.util.MACAddress; /** * Data structure for Load Balancer based on @@ -46,7 +47,7 @@ public class LBVip { protected short adminState; protected short status; - protected MACAddress proxyMac; + protected MacAddress proxyMac; public static String LB_PROXY_MAC= "12:34:56:78:90:12"; @@ -65,7 +66,7 @@ public class LBVip { this.address = 0; this.status = 0; - this.proxyMac = MACAddress.valueOf(LB_PROXY_MAC); + this.proxyMac = MacAddress.of(LB_PROXY_MAC); } public String pickPool(IPClient client) { diff --git a/src/main/java/net/floodlightcontroller/loadbalancer/LoadBalancer.java b/src/main/java/net/floodlightcontroller/loadbalancer/LoadBalancer.java index 64c835aceb20c329fd49910909113346d35a7cf8..7ed15cf8f436e631d53cdd1800c3b5d98f70fc3f 100644 --- a/src/main/java/net/floodlightcontroller/loadbalancer/LoadBalancer.java +++ b/src/main/java/net/floodlightcontroller/loadbalancer/LoadBalancer.java @@ -91,7 +91,6 @@ import net.floodlightcontroller.routing.Route; import net.floodlightcontroller.staticflowentry.IStaticFlowEntryPusherService; import net.floodlightcontroller.topology.ITopologyService; import net.floodlightcontroller.topology.NodePortTuple; -import net.floodlightcontroller.util.MACAddress; import net.floodlightcontroller.util.MatchString; import net.floodlightcontroller.util.OFMessageDamper; @@ -129,7 +128,7 @@ public class LoadBalancer implements IFloodlightModule, protected HashMap<String, LBPool> pools; protected HashMap<String, LBMember> members; protected HashMap<Integer, String> vipIpToId; - protected HashMap<Integer, MACAddress> vipIpToMac; + protected HashMap<Integer, MacAddress> vipIpToMac; protected HashMap<Integer, String> memberIpToId; protected HashMap<IPClient, LBMember> clientToMember; @@ -284,7 +283,7 @@ public class LoadBalancer implements IFloodlightModule, ARP arpRequest = (ARP) eth.getPayload(); // have to do proxy arp reply since at this point we cannot determine the requesting application type - byte[] vipProxyMacBytes = vips.get(vipId).proxyMac.toBytes(); + byte[] vipProxyMacBytes = vips.get(vipId).proxyMac.getBytes(); // generate proxy ARP reply IPacket arpReply = new Ethernet() @@ -585,7 +584,7 @@ public class LoadBalancer implements IFloodlightModule, } fmb.setMatch(match); - sfpService.addFlow(entryName, fmb.build(), swString); + sfpService.addFlow(entryName, fmb.build(), sw); } } @@ -746,31 +745,26 @@ public class LoadBalancer implements IFloodlightModule, @Override public Collection<LBMonitor> listMonitors() { - // TODO Auto-generated method stub return null; } @Override public Collection<LBMonitor> listMonitor(String monitorId) { - // TODO Auto-generated method stub return null; } @Override public LBMonitor createMonitor(LBMonitor monitor) { - // TODO Auto-generated method stub return null; } @Override public LBMonitor updateMonitor(LBMonitor monitor) { - // TODO Auto-generated method stub return null; } @Override public int removeMonitor(String monitorId) { - // TODO Auto-generated method stub return 0; } @@ -830,7 +824,7 @@ public class LoadBalancer implements IFloodlightModule, pools = new HashMap<String, LBPool>(); members = new HashMap<String, LBMember>(); vipIpToId = new HashMap<Integer, String>(); - vipIpToMac = new HashMap<Integer, MACAddress>(); + vipIpToMac = new HashMap<Integer, MacAddress>(); memberIpToId = new HashMap<Integer, String>(); } diff --git a/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java b/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java index abd7e8bf1a762b8088622bbbae92a3e899366e55..92d14522bd20337fe20de41b33b2f2acbaec2ec3 100644 --- a/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java +++ b/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java @@ -317,8 +317,7 @@ public abstract class ForwardingBase return srcSwitchIncluded; } - protected Match wildcard(Match match, IOFSwitch sw, - Match.Builder wildcard_hints) { + protected Match wildcard(Match match, IOFSwitch sw, Match.Builder wildcard_hints) { if (wildcard_hints != null) { //return match.clone().setWildcards(wildcard_hints.intValue()); Match.Builder mb = match.createBuilder();