/* * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.controller.hosttracker; import java.net.InetAddress; import java.util.List; import java.util.Set; import java.util.concurrent.Future; import org.opendaylight.controller.hosttracker.hostAware.HostNodeConnector; import org.opendaylight.controller.sal.core.NodeConnector; import org.opendaylight.controller.sal.utils.Status; /** * This interface defines the methods to retrieve information about learned * Hosts. Also provides methods to statically add/remove Hosts from the local * database. * */ public interface IfIptoHost { /** * Applications call this interface methods to determine IP address to MAC * binding and its connectivity to an OpenFlow switch in term of Node, Port, * and VLAN. These bindings are learned dynamically as well as can be added * statically through Northbound APIs. If a binding is unknown, then an ARP * request is initiated immediately to discover the host. * * @param networkAddress * IP Address of the Host encapsulated in class InetAddress * @return {@link org.opendaylight.controller.hosttracker.hostAware.HostNodeConnector} * Class that contains the Host info such as its MAC address, Switch * ID, port, VLAN. If Host is not found, returns NULL */ public HostNodeConnector hostFind(InetAddress networkAddress); /** * Checks the local Host Database to see if a Host has been learned for a * given IP address. * * @param networkAddress * IP Address of the Host encapsulated in class InetAddress * @return {@link org.opendaylight.controller.hosttracker.hostAware.HostNodeConnector} * Class that contains the Host info such as its MAC address, Switch * ID, port, VLAN. If Host is not found, returns NULL * */ public HostNodeConnector hostQuery(InetAddress networkAddress); /** * Initiates an immediate discovery of the Host for a given IP address. This * provides for the calling applications to block on the host discovery. * * @param networkAddress * IP address encapsulated in InetAddress class * @return Future * {@link org.opendaylight.controller.hosttracker.HostTrackerCallable} */ public Future discoverHost(InetAddress networkAddress); /** * Returns the Network Hierarchy for a given Host. This API is typically * used by applications like Hadoop for Rack Awareness functionality. * * @param IP * address of the Host encapsulated in InetAddress class * @return List of String ArrayList containing the Hierarchies. */ public List> getHostNetworkHierarchy(InetAddress hostAddress); /** * Returns all the the Hosts either learned dynamically or added statically * via Northbound APIs. * * @return Set of * {@link org.opendaylight.controller.hosttracker.hostAware.HostNodeConnector} * . Class that contains the Host info such as its MAC address, * Switch ID, port, VLAN. */ public Set getAllHosts(); /** * Returns all the "Active Hosts" learned "Statically" via Northbound APIs. * These Hosts are categorized as "Active" because the Switch and Port they * are connected to, are in up state. * * @return Set of * {@link org.opendaylight.controller.hosttracker.hostAware.HostNodeConnector} * . Class that contains the Host info such as MAC address, Switch * ID, port, VLAN. If Host is not found, returns NULL */ public Set getActiveStaticHosts(); /** * Returns all the "Inactive Hosts" learned "Statically" via Northbound * APIs. These Hosts are categorized as "Inactive" because either the Switch * or the Port they are connected to, is in down state. * * @return Set of HostNodeConnector * {@link org.opendaylight.controller.hosttracker.hostAware.HostNodeConnector} * . HostNodeConnector is Class that contains the Host info such as * its MAC address, OpenFlowNode ID, port, VLAN. */ public Set getInactiveStaticHosts(); /** * Hosts can be learned dynamically or added statically. This method allows * the addition of a Host to the local database statically. * * @param networkAddress * IP Address of the Host * @param dataLayerAddress * MAC Address of the Host * @param nc * NodeConnector to which the host is attached * @param vlan * VLAN the host belongs to * @return The status object as described in {@code Status} indicating the * result of this action. */ public Status addStaticHost(String networkAddress, String dataLayerAddress, NodeConnector nc, String vlan); /** * Allows the deletion of statically learned Host * * @param networkAddress * @return The status object as described in {@code Status} indicating the * result of this action. */ public Status removeStaticHost(String networkAddress); }