blob: 20295133dede925e49401a1e2ceb1fe63229bbdb [file] [log] [blame]
Jonathan Hart6261dcd2013-07-22 17:58:35 +12001package net.onrc.onos.ofcontroller.proxyarp;
2
3import java.net.InetAddress;
Jonathan Hart5afde492013-10-01 12:30:53 +13004import java.util.List;
Jonathan Hart6261dcd2013-07-22 17:58:35 +12005
Jonathan Harte93aed42013-12-05 18:39:50 -08006import net.floodlightcontroller.core.module.IFloodlightService;
Jonathan Hartabad6a52013-09-30 18:17:21 +13007import net.floodlightcontroller.util.MACAddress;
Jonathan Hart6261dcd2013-07-22 17:58:35 +12008
Jonathan Hart5afde492013-10-01 12:30:53 +13009//Extends IFloodlightService so we can access it from REST API resources
Jonathan Harte93aed42013-12-05 18:39:50 -080010public interface IProxyArpService extends IFloodlightService {
Jonathan Hart6261dcd2013-07-22 17:58:35 +120011 /**
Jonathan Hartda4d0e12013-09-30 21:00:20 +130012 * Returns the MAC address if there is a valid entry in the cache.
Jonathan Hart6261dcd2013-07-22 17:58:35 +120013 * Otherwise returns null.
14 * @param ipAddress
15 * @return
16 */
Jonathan Hartabad6a52013-09-30 18:17:21 +130017 public MACAddress getMacAddress(InetAddress ipAddress);
Jonathan Hart6261dcd2013-07-22 17:58:35 +120018
19 /**
20 * Tell the IProxyArpService to send an ARP request for the IP address.
21 * The request will be broadcast out all edge ports in the network.
Jonathan Hart6261dcd2013-07-22 17:58:35 +120022 * @param ipAddress
23 * @param requester
Jonathan Hart4dfc3652013-08-02 20:22:36 +120024 * @param retry Whether to keep sending requests until the MAC is learnt
Jonathan Hart6261dcd2013-07-22 17:58:35 +120025 */
Jonathan Hart4dfc3652013-08-02 20:22:36 +120026 public void sendArpRequest(InetAddress ipAddress, IArpRequester requester,
27 boolean retry);
Jonathan Hart5afde492013-10-01 12:30:53 +130028
29 /**
30 * Returns a snapshot of the entire ARP cache.
31 * @return
32 */
33 public List<String> getMappings();
Jonathan Hart6261dcd2013-07-22 17:58:35 +120034}