blob: a2726e7d53b9cfbb7d361bd313f9f47a59c0feaa (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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
|