package net.onrc.onos.apps.proxyarp;

import java.net.InetAddress;
import java.util.List;

import net.floodlightcontroller.core.module.IFloodlightService;
import net.floodlightcontroller.util.MACAddress;

// Extends IFloodlightService so we can access it from REST API resources

/**
 * Provides ARP services to other modules.
 */
public interface IProxyArpService extends IFloodlightService {
    /**
     * Returns the MAC address if there is a valid entry in the cache. Otherwise
     * returns null.
     *
     * @param ipAddress the IP address to request the ARP mapping for
     * @return the MACAddress that maps to the specified IP address, or null if
     * no mapping is found
     */
    public MACAddress getMacAddress(InetAddress ipAddress);

    /**
     * Tell the IProxyArpService to send an ARP request for the IP address. The
     * request will be broadcast out all edge ports in the network.
     *
     * @param ipAddress the IP address to send an ARP request for
     * @param requester the {@link IArpRequester} object that will be called if
     *                  a reply is received
     * @param retry     whether to keep sending requests until the MAC is learnt
     */
    public void sendArpRequest(InetAddress ipAddress, IArpRequester requester,
                               boolean retry);

    /**
     * Returns a snapshot of the entire ARP cache.
     *
     * @return a list of mappings formatted as a human-readable string
     */
    public List<String> getMappings();
}
