Functions | |
void | NutArpCacheUpdate (NUTDEVICE *dev, u_long ip, u_char *ha) |
Update an ARP entry. More... | |
int | NutArpCacheQuery (NUTDEVICE *dev, const u_long ip, u_char *mac, NETBUF *nbip) |
Query MAC address for a specified IP address. More... | |
void | NutArpInput (NUTDEVICE *dev, NETBUF *nb) |
Handle incoming ARP packets. More... | |
NETBUF* | NutArpAllocNetBuf (u_short type, u_long ip, u_char *mac) |
Allocate an ARP network buffer structure. More... | |
int | NutArpOutput (NUTDEVICE *dev, NETBUF *nb, u_char flags) |
Send an ARP packet. More... |
ARP is used to map IP addresses to hardware addresses. Each network interface of Nut/Net keeps its own mapping table.
When an IP packet has to be sent out, IP needs the hardware address to pass it to the Ethernet layer. If the mapping is not in the ARP cache, an Ethernet broadcast packet is sent to the local network requesting the physical hardware address for the given IP address.
Only save the last packet to unresolved destinations.
Add functions to manually add or remove ARP entries. \toto Add function to query ARP tables.
|
Allocate an ARP network buffer structure.
|
|
Query MAC address for a specified IP address.
If no entry is available in the ARP cache, an ARP request is generated, sent out to the network and the calling thread will be suspended.
|
|
Update an ARP entry.
If an entry with the same IP address exists, then this entry is updated. If no entry exists, a new one is created. Any previously queued packets (asynchronous send) for this IP address are sent out and all threads waiting for address resolution (synchronous send) are woken up.
|
|
Handle incoming ARP packets.
Packets not destined to us or packets with unsupported address type or item length are silently discarded.
|
|
Send an ARP packet.
|