Annotation of embedaddon/dhcdrop/src/net.h, revision 1.1.1.1
1.1 misho 1: /*
2: * net.h
3: *
4: * Created on: 05.08.2009
5: * Author: Chebotarev Roman
6: */
7:
8: #ifndef NET_H_
9: #define NET_H_
10:
11: #pragma pack(1)
12:
13: #define ETH_ALEN 6 /* Octets in one ethernet addr */
14:
15: #define ETHERTYPE_IP 0x0800 /* IP */
16: #define ETHERTYPE_ARP 0x0806 /* Address resolution */
17:
18: /* 10Mb/s ethernet header */
19: struct eth_header
20: {
21: u_int8_t ether_dhost[ETH_ALEN]; /* destination eth addr */
22: u_int8_t ether_shost[ETH_ALEN]; /* source ether addr */
23: u_int16_t ether_type; /* packet type ID field */
24: } __attribute__ ((__packed__));
25:
26: /*
27: * Structure of an internet header, naked of options.
28: */
29: struct iphdr
30: {
31: #if __BYTE_ORDER == __LITTLE_ENDIAN
32: unsigned int ihl:4;
33: unsigned int version:4;
34: #elif __BYTE_ORDER == __BIG_ENDIAN
35: unsigned int version:4;
36: unsigned int ihl:4;
37: #else
38: # error "Please fix <bits/endian.h>"
39: #endif
40: uint8_t tos;
41: uint16_t tot_len;
42: uint16_t id;
43: uint16_t frag_off;
44: uint8_t ttl;
45: uint8_t protocol;
46: uint16_t check;
47: uint32_t saddr;
48: uint32_t daddr;
49: /*The options start here. */
50: };
51:
52: /* ARP header */
53: struct arp_header
54: {
55: uint16_t arp_hwtype; /* Format of hardware address */
56: uint16_t arp_proto; /* Format of protocol address */
57: uint8_t arp_hwlen; /* Length of hardware address */
58: uint8_t arp_palen; /* Length of protocol address */
59: uint16_t arp_oper; /* ARP opcode (command) */
60: };
61:
62: /* UDP header as specified by RFC 768, August 1980. */
63:
64: struct pseudo_header
65: {
66: unsigned int src_addr;
67: unsigned int dst_addr;
68: unsigned char zero ;
69: unsigned char proto;
70: unsigned short length;
71: };
72:
73: struct udphdr
74: {
75: uint16_t source;
76: uint16_t dest;
77: uint16_t len;
78: uint16_t check;
79: };
80:
81: struct arp_packet_net_header
82: {
83: struct eth_header eth_head;
84: struct arp_header arp_head;
85: };
86:
87: struct arp_data
88: {
89: uint8_t from_ether[ETH_ALEN];
90: uint32_t from_ip;
91: uint8_t to_ether[ETH_ALEN];
92: uint32_t to_ip;
93: };
94:
95: struct dhcp_packet_net_header
96: {
97: struct eth_header eth_head;
98: struct iphdr ip_header;
99: struct udphdr udp_header;
100: };
101:
102: #endif /* NET_H_ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>