typedef vector<uint8_t> PAYLOAD | PAYLOAD |
enum Op { ARP_REQUEST = 1, ARP_REPLY } | Op |
enum HwFmt { HW_ETHER = 1 } | HwFmt |
ArpHeader& assign (uint8_t* data)
| assign |
[static]
Create an ARP packet. The caller must allocate memory and ensure enough space (sizeof(ArpHeader) + (2 hw addresses) + (2 network addresses)).
Parameters:
data | pointer where data should be stored. |
Returns: the ARP header.
const ArpHeader& assign (const PAYLOAD& payload)
| assign |
[static]
Parse an ARP packet.
Parameters:
payload | the ARP header and data. |
Returns: the ARP header.
void make_gratuitous (PAYLOAD& payload, const Mac& mac,
const IPv4& ip)
| make_gratuitous |
[static]
Create a gratuitous ARP. I.e., an ARP request for my own IP address - the one used in the source section of the ARP packet.
Parameters:
output | data (output argument). |
MAC | address of IP. |
ip | IP address to create request for. |
void set_sender (const Mac& mac, const IPv4& ip)
| set_sender |
Set the sender information in the ARP packet.
Parameters:
mac | source MAC address. |
ip | source IP address. |
void set_request (const IPv4& ip)
| set_request |
Create an ARP request for an IP address.
Parameters:
ip | IP address to ask request for. |
void set_reply (const Mac& mac, const IPv4& ip)
| set_reply |
Create an ARP reply.
Parameters:
mac | MAC address of requested IP address. |
ip | IP address requested in the ARP request. |
uint32_t size ()
| size |
[const]
The size of the ARP packet (ARP header + data).
Returns: the size of the ARP packet.
bool is_request ()
| is_request |
[const]
Determine whether it is an ARP request. This (usually) implies whether or not it is an ARP reply.
Returns: true if it is an ARP request.
IPv4 get_request ()
| get_request |
[const]
If an ARP request, return the IP address that is being asked for.
Returns: the IP address being asked for.
void make_reply (PAYLOAD& out, const Mac& mac)
| make_reply |
[const]
If this is an ARP request, create an ARP reply with the give MAC address.
Parameters:
out | the ARP reply data (output parameter). |
mac | the MAC address of the requested IP address. |
uint16_t ah_hw_fmt | ah_hw_fmt |
uint16_t ah_proto_fmt | ah_proto_fmt |
uint8_t ah_hw_len | ah_hw_len |
uint8_t ah_proto_len | ah_proto_len |
uint16_t ah_op | ah_op |
uint8_t ah_data[0] | ah_data[0] |