diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2017-08-02 18:26:23 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2017-08-02 18:26:23 +0200 |
commit | db1f6609d13a888dd7212c9ed2840846e70a284e (patch) | |
tree | e8a4c777bb5feafda1a50feb9c6280a36d0a0dfb /src/net/arp.h | |
parent | 7d40548496f4d3cdfce828fc8e4f0fd4286e873a (diff) | |
download | abaos-db1f6609d13a888dd7212c9ed2840846e70a284e.tar.gz abaos-db1f6609d13a888dd7212c9ed2840846e70a284e.tar.bz2 |
added an IPv4 module, currently containg an address to string function
started to add ARP packet definition, reading and printing ARP request now
some renames in networking layer
Diffstat (limited to 'src/net/arp.h')
-rw-r--r-- | src/net/arp.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/net/arp.h b/src/net/arp.h new file mode 100644 index 0000000..ba8de42 --- /dev/null +++ b/src/net/arp.h @@ -0,0 +1,36 @@ +#ifndef ARP_H +#define ARP_H + +#include "ethernet.h" +#include "ipv4.h" + +#if defined( __TINYC__ ) +#pragma pack(1) +#endif + +typedef uint16_t network_hardware_type_t; + +// TODO: network order not host oder, so for now swap it +#define ARP_HARDWARE_TYPE_ETHERNET (network_hardware_type_t)0x0100 + +#define ARP_OPERATION_REQUEST 0x0100 +#define ARP_OPERATION_ANSWER 0x0200 + +// TODO: fixed size structure, works for Ethernet MACs and IPv4 addresses +typedef struct { + network_hardware_type_t hardware_type; + network_ether_type_t protocol_type; + uint8_t hardware_address_len; + uint8_t protocol_address_len; + uint16_t operation; + network_mac_address_t source_hardware_address; + network_ipv4_address_t source_protocol_address; + network_mac_address_t destination_hardware_address; + network_ipv4_address_t destination_protocol_address; +} __attribute__( ( packed ) ) network_arp_packet_t; + +#if defined( __TINYC__ ) +#pragma pack() +#endif + +#endif // ARP_H |