diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2017-08-02 11:24:26 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2017-08-02 11:24:26 +0200 |
commit | 7d40548496f4d3cdfce828fc8e4f0fd4286e873a (patch) | |
tree | 97e0e01b231d602c63d95b481208b318c89e8018 /src/net/ethernet.h | |
parent | 69af92a0ab9df5ebab1eb4bc69d83d89388e6ded (diff) | |
download | abaos-7d40548496f4d3cdfce828fc8e4f0fd4286e873a.tar.gz abaos-7d40548496f4d3cdfce828fc8e4f0fd4286e873a.tar.bz2 |
introduced a network library, added ethernet structure, moved
generic stuff out of the network driver, kernel now sees ARP
messages and prints src and dst MAC addresses
Diffstat (limited to 'src/net/ethernet.h')
-rw-r--r-- | src/net/ethernet.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/net/ethernet.h b/src/net/ethernet.h new file mode 100644 index 0000000..a2726e7 --- /dev/null +++ b/src/net/ethernet.h @@ -0,0 +1,38 @@ +#ifndef ETHERNET_H +#define ETHERNET_H + +#include "stddef.h" + +#define NETWORK_ETHERNET_MAC_ADDR_STRING 6 * 3 + 1 + +typedef struct { + uint8_t byte[6]; +} network_mac_address_t; + +typedef uint16_t ether_type_t; + +// TODO: network order not host oder, so for now swap it +#define NETWORK_ETHER_TYPE_ARP 0x0608 + +#if defined( __TINYC__ ) +#pragma pack(1) +#endif + +typedef struct { + network_mac_address_t dst_addr; + network_mac_address_t src_addr; + ether_type_t type; +} __attribute__( ( packed ) ) network_ethernet_packet_header_t; + +typedef struct { + network_ethernet_packet_header_t header; + uint8_t *data; +} __attribute__( ( packed ) ) network_ethernet_packet_t; + +#if defined( __TINYC__ ) +#pragma pack() +#endif + +char *network_mac_to_string( network_mac_address_t mac, char *buf, size_t buflen ); + +#endif // ETHERNET_H |