1 #ifndef ETTERCAP_PROTO_H
2 #define ETTERCAP_PROTO_H
3 
4 #include <ec_inet.h>
5 
6 /* interface layer types */
7 enum {
8    IL_TYPE_NULL     = 0x00,  /* bsd loopback (used by some wifi cards in monitor mode) */
9    IL_TYPE_ETH      = 0x01,  /* ethernet */
10    IL_TYPE_TR       = 0x06,  /* token ring */
11    IL_TYPE_PPP      = 0x09,  /* PPP */
12    IL_TYPE_FDDI     = 0x0a,  /* fiber distributed data interface */
13    IL_TYPE_RAWIP    = 0x0c,  /* raw ip dump file */
14    IL_TYPE_WIFI     = 0x69,  /* wireless */
15    IL_TYPE_COOK     = 0x71,  /* linux cooked */
16    IL_TYPE_PRISM    = 0x77,  /* prism2 header for wifi dumps */
17    IL_TYPE_RADIO    = 0x7f,  /* radiotap header for wifi dumps */
18    IL_TYPE_PPI      = 0xc0,  /* per packet information */
19    IL_TYPE_ERF      = 0xc5,  /* ERF endace format */
20 };
21 
22 /* link layer types */
23 enum {
24    LL_TYPE_PPP_IP = 0x0021,
25    LL_TYPE_IP     = 0x0800,
26    LL_TYPE_ARP    = 0x0806,
27    LL_TYPE_VLAN   = 0x8100,
28    LL_TYPE_IP6    = 0x86DD,
29    LL_TYPE_PPP    = 0x880B,
30    LL_TYPE_PPPOE  = 0x8864,
31    LL_TYPE_PAP    = 0xc023,
32    LL_TYPE_MPLS   = 0x8847,
33    LL_TYPE_8021x  = 0x888E
34 };
35 
36 /* network layer types */
37 enum {
38    NL_TYPE_ICMP  = 0x01,
39    NL_TYPE_IPIP  = 0x04,
40    NL_TYPE_IP6   = 0x29,
41    NL_TYPE_ESP   = 0x32,
42    NL_TYPE_ICMP6 = 0x3a,
43    NL_TYPE_TCP   = 0x06,
44    NL_TYPE_UDP   = 0x11,
45    NL_TYPE_GRE   = 0x2f,
46    NL_TYPE_OSPF  = 0x59,
47    NL_TYPE_VRRP  = 0x70
48 };
49 
50 /* proto layer types */
51 enum {
52    PL_DEFAULT  = 0x0000,
53 };
54 
55 /* IPv6 options types */
56 /* NOTE: they may (but should not) conflict with network layer types!   */
57 /*       double check new definitions of either types.                  */
58 
59 enum {
60    LO6_TYPE_HBH = 0,   /* Hop-By-Hop */
61    LO6_TYPE_RT  = 0x2b,  /* Routing */
62    LO6_TYPE_FR  = 0x2c,  /* Fragment */
63    LO6_TYPE_DST = 0x3c,  /* Destination */
64    LO6_TYPE_NO  = 0x3b,  /* No Next Header */
65 };
66 
67 
68 /* TCP flags */
69 enum {
70    TH_FIN = 0x01,
71    TH_SYN = 0x02,
72    TH_RST = 0x04,
73    TH_PSH = 0x08,
74    TH_ACK = 0x10,
75    TH_URG = 0x20,
76    TH_ECE = 0x40, /* rfc 2481/3168 */
77    TH_CWR = 0x80  /* rfc 2481/3168 */
78 };
79 
80 /* ICMP types */
81 enum {
82    ICMP_ECHOREPLY       = 0,
83    ICMP_DEST_UNREACH    = 3,
84    ICMP_REDIRECT        = 5,
85    ICMP_ECHO            = 8,
86    ICMP_TIME_EXCEEDED   = 11,
87    ICMP_NET_UNREACH     = 0,
88    ICMP_HOST_UNREACH    = 1,
89 };
90 
91 /* ICMPv6 types */
92 enum {
93    /* Errors */
94    ICMP6_DEST_UNREACH   = 1,
95    ICMP6_PKT_TOO_BIG    = 2,
96    ICMP6_TIME_EXCEEDED  = 3,
97    ICMP6_BAD_PARAM      = 4,
98 
99    /* Info */
100    ICMP6_ECHO           = 128,
101    ICMP6_ECHOREPLY      = 129,
102    ICMP6_ROUTER_SOL     = 133,
103    ICMP6_ROUTER_ADV     = 134,
104    ICMP6_NEIGH_SOL      = 135,
105    ICMP6_NEIGH_ADV      = 136,
106 };
107 
108 /* DHCP options */
109 enum {
110    DHCP_MAGIC_COOKIE    = 0x63825363,
111    DHCP_DISCOVER        = 0x01,
112    DHCP_OFFER           = 0x02,
113    DHCP_REQUEST         = 0x03,
114    DHCP_ACK             = 0x05,
115    DHCP_OPT_NETMASK     = 0x01,
116    DHCP_OPT_ROUTER      = 0x03,
117    DHCP_OPT_DNS         = 0x06,
118    DHCP_OPT_DOMAIN      = 0x0f,
119    DHCP_OPT_RQ_ADDR     = 0x32,
120    DHCP_OPT_LEASE_TIME  = 0x33,
121    DHCP_OPT_MSG_TYPE    = 0x35,
122    DHCP_OPT_SRV_ADDR    = 0x36,
123    DHCP_OPT_RENEW_TIME  = 0x3a,
124    DHCP_OPT_CLI_IDENT   = 0x3d,
125    DHCP_OPT_FQDN        = 0x51,
126    DHCP_OPT_END         = 0xff,
127    DHCP_OPT_MIN_LEN     = 0x12c,
128 };
129 
130 #endif
131 
132 /* EOF */
133 
134 // vim:ts=3:expandtab
135 
136