TCPIP_ARP_EntryGet Function

C

TCPIP_ARP_RESULT TCPIP_ARP_EntryGet(
    TCPIP_NET_HANDLE hNet, 
    IPV4_ADDR* ipAdd, 
    TCPIP_MAC_ADDR* pHwAdd, 
    bool probe
);

Description

If probe == false The function behaves identical to TCPIP_ARP_IsResolved(): If the corresponding MAC address exists in the cache it is copied to the user supplied pHwAdd.

If probe == true, the function behaves identical to TCPIP_ARP_Resolve():

  • If the corresponding MAC address does not exist in the cache this function transmits and ARP request. Upon the address resolution it calls the registered handler (if available) with the supplied notification parameter (if != 0)

  • If the hardware address exists in the cache, the result is written to pHwAdd and no network ARP request is sent.

Preconditions

The ARP module should have been initialized.

Parameters

ParametersDescription
hNetInterface to use.
ipAddIP Address to get entries for.
pHwAddPointer to store the hardware address.
probeBoolean to specify if ARP probing is initiated or not.

Returns

  • ARP_RES_ENTRY_SOLVED - if the required entry is already solved.

  • ARP_RES_ENTRY_QUEUED - if the required entry was already queued.

  • ARP_RES_ENTRY_NEW - if the operation succeeded and a new entry was added (and queued for resolving).

  • ARP_RES_CACHE_FULL - if new entry could not be inserted, the cache was full.

  • ARP_RES_BAD_ADDRESS - bad address specified.

  • ARP_RES_NO_INTERFACE - no such interface.

Remarks

Similar to TCPIP_ARP_Resolve + TCPIP_ARP_IsResolved, it avoids a double hash search when the mapping exists.