* wasn't created for this host in the controller. This would cause
* arphandler not to know where to send the ARP 2. The host facing port is
* down 3. The IP host doesn't exist or is not responding to ARP requests
- *
+ *
* Conditions 1 and 2 above can be recovered if ARP is sent when the
* relevant L3 interface is added or the port facing host comes up. Whenever
* L3 interface is added or host facing port comes up, ARP will be sent to
* hosts in this list.
- *
+ *
* We can't recover from condition 3 above
*/
private ArrayList<ARPPending> failedARPReqList = new ArrayList<HostTracker.ARPPending>();
* When a new Host is learnt by the hosttracker module, it places the
* directly connected Node in Tier-1 & using this function, updates the Tier
* value for all other Nodes in the network hierarchy.
- *
+ *
* This is a recursive function and it takes care of updating the Tier value
* for all the connected and eligible Nodes.
- *
+ *
* @param n
* Node that represents one of the Vertex in the Topology Graph.
* @param currentTier
* Internal convenience routine to check the eligibility of a Switch for a
* Tier update. Any Node with Tier=0 or a Tier value that is greater than
* the new Tier Value is eligible for the update.
- *
+ *
* @param n
* Node for which the Tier update eligibility is checked
* @param tier
* that returns the Network Hierarchy for a given Host. This API is
* typically used by applications like Hadoop for Rack Awareness
* functionality.
- *
+ *
* @param hostAddress
* IP-Address of the host/node.
* @return Network Hierarchies represented by an Array of Array (of
* is used as the network for Hadoop Demos & in order to give a meaningful
* rack-awareness switch names, the DPID is organized in ASCII Characters
* and retrieved as string.
- *
+ *
* @param dpid
* Switch DataPath Id
* @return Ascii String represented by the DPID.
/**
* A convenient recursive routine to obtain the Hierarchy of Switches.
- *
+ *
* @param node
* Current Node in the Recursive routine.
* @param currHierarchy
/**
* Inform the controller IP to MAC binding of a host and its connectivity to
* an openflow switch in terms of Node, port, and VLAN.
- *
+ *
* @param networkAddr
* IP address of the host
* @param dataLayer
* Port of the switch to which host is connected
* @param vlan
* Vlan of which this host is member of
- *
+ *
* @return Status The status object as described in {@code Status}
* indicating the result of this action.
*/
/**
* Update the controller IP to MAC binding of a host and its connectivity to
* an openflow switch in terms of switch id, switch port, and VLAN.
- *
+ *
* @param networkAddr
* IP address of the host
* @param dataLayer
* Port of the switch to which host is connected
* @param vlan
* Vlan of which this host is member of
- *
+ *
* @return boolean true if the host was added successfully, false otherwise
*/
public boolean updateHostReq(InetAddress networkAddr,
/**
* Remove from the controller IP to MAC binding of a host and its
* connectivity to an openflow switch
- *
+ *
* @param networkAddr
* IP address of the host
- *
+ *
* @return boolean true if the host was removed successfully, false
* otherwise
*/
switch (type) {
case REMOVED:
- long sid = (Long) node.getID();
- if (logger.isDebugEnabled()) {
- logger.debug("Received removedSwitch for sw id {}",
- HexEncode.longToHexString(sid));
- }
+ logger.debug("Received removed node {}", node);
for (Entry<InetAddress, HostNodeConnector> entry : hostsDB
.entrySet()) {
HostNodeConnector host = entry.getValue();
- if (host.getnodeconnectornodeId() == sid) {
- logger.debug("Switch: {} is down, remove from Hosts_DB",
- sid);
+ if (host.getnodeconnectorNode().equals(node)) {
+ logger.debug("Node: {} is down, remove from Hosts_DB", node);
removeKnownHost(entry.getKey());
notifyHostLearnedOrRemoved(host, false);
}
}
private void handleNodeConnectorStatusDown(NodeConnector nodeConnector) {
- long sid = (Long) nodeConnector.getNode().getID();
- short port = (Short) nodeConnector.getID();
-
logger.debug("handleNodeConnectorStatusDown {}", nodeConnector);
for (Entry<InetAddress, HostNodeConnector> entry : hostsDB.entrySet()) {
HostNodeConnector host = entry.getValue();
- if ((host.getnodeconnectornodeId() == sid)
- && (host.getnodeconnectorportId() == port)) {
- logger.debug(
- "Switch: {}, Port: {} is down, remove from Hosts_DB",
- sid, port);
+ if (host.getnodeConnector().equals(nodeConnector)) {
+ logger.debug(" NodeConnector: {} is down, remove from Hosts_DB", nodeConnector);
removeKnownHost(entry.getKey());
notifyHostLearnedOrRemoved(host, false);
}
/**
* Function called by the dependency manager when all the required
* dependencies are satisfied
- *
+ *
*/
void init(Component c) {
Dictionary<?, ?> props = c.getServiceProperties();
* Function called by the dependency manager when at least one dependency
* become unsatisfied or when the component is shutting down because for
* example bundle is being stopped.
- *
+ *
*/
void destroy() {
destroyCache();
/**
* Function called by dependency manager after "init ()" is called and after
* the services provided by the class are registered in the service registry
- *
+ *
*/
void start() {
}
* Function called by the dependency manager before the services exported by
* the component are unregistered, this will be followed by a "destroy ()"
* calls
- *
+ *
*/
void stop() {
}