Collaboration diagram for ARP:
Detailed Description
RFC 826 address resolution protocol.
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.
Define Documentation
|
|
Maximum age of an entry in the ARP cache in minutes.
Outdated entries will be regularly removed, forcing the Ethernet interface to generate new ARP requests. This way MAC address changes are detected. |
| #define MAX_ARPREQUESTS 4 |
|
|
|
Maximum number of ARP requests generated per query.
If no ARP response is received after sending out the specified number of request, the related IP address is considered unreachable. |
|
|
Minimum wait before sending out a new ARP request.
The specified number of milliseconds will be doubled on each retry. |
Function Documentation
|
|
Allocate an ARP network buffer structure.
- Parameters:
-
| type | Type of ARP packet. |
| ip | Target IP address. |
| mac | Target MAC address, null pointer for broadcast. |
- Returns:
- Pointer to the allocated network buffer structure or 0 on failure.
|
|
|
Query MAC address for a specified IP address.
If no entry is available in the ARP cache, an incomplete entry is created and ARP requests are generated on increasing time intervals. The calling thread is suspended until a matching ARP response is received or until a number of requests have been generated without receiving a response.
- Note:
- This function is automatically called on each outgoing IP packet. Applications typically do not call this function.
- Parameters:
-
| dev | Identifies the device. |
| ip | IP address of which the caller asked the MAC address. |
| mac | Buffer for the retrieved MAC address. |
- Returns:
- 0 if address resolved, -1 otherwise.
|
Here is the call graph for this function:
|
|
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. All threads waiting for address resolution are woken up.
- Note:
- This function is automatically called on each incoming ARP telegram. Applications typically do not call this function.
- Parameters:
-
| dev | Identifies the device. |
| ip | Requested IP address in network byte order. |
| ha | Pointer to a buffer which receives the MAC address. |
|
Here is the call graph for this function:
|
|
Handle incoming ARP packets.
Packets not destined to us or packets with unsupported address type or item length are silently discarded.
- Note:
- This routine is called by the Ethernet layer on incoming ARP packets. Applications typically do not call this function.
- Parameters:
-
| dev | Identifies the device that received the packet. |
| nb | Pointer to a network buffer structure containing the ARP packet. |
|
|
|
Send an ARP packet.
- Note:
- Applications typically do not call this function.
- Parameters:
-
| dev | Identifies the device to use. |
| nb | Network buffer structure containing the packet to be sent. The structure must have been allocated by a previous call NutNetBufAlloc(). |
- Returns:
- 0 on success, -1 in case of any errors.
|