summaryrefslogtreecommitdiffstats
path: root/include/headers.h
blob: be20cec02b6b114f03ede98283bd5b154f7efa1d (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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#ifndef _HEADERS_H
#define _HEADERS_H

#ifndef IPPROTO_UDPLITE
# define IPPROTO_UDPLITE	136
#endif

enum tcp_hdr_flags {
	TCP_FLAG_FIN	= 0x01,
	TCP_FLAG_SYN	= 0x02,
	TCP_FLAG_RST	= 0x04,
	TCP_FLAG_PSH	= 0x08,
	TCP_FLAG_ACK	= 0x10,
	TCP_FLAG_URG	= 0x20,
	TCP_FLAG_ECN	= 0x40,
	TCP_FLAG_CWR	= 0x80,
};

struct ip_auth_hdr {
	uint8_t 	nexthdr;
	uint8_t 	hdrlen;
	uint16_t	reserved;
	uint32_t	spi;
	uint32_t	seq_no;
};

struct ip_esp_hdr {
	uint32_t	spi;
	uint32_t	seq_no;
};

struct ip_comp_hdr {
	uint8_t		nexthdr;
	uint8_t		flags;
	uint16_t	cpi;
};

#ifndef IPPROTO_DCCP
# define IPPROTO_DCCP 33
#endif

struct dccp_hdr {
	uint16_t	dccph_sport,
			dccph_dport;
	uint8_t		dccph_doff;
	uint8_t		dccph_ccval:4,
			dccph_cscov:4;
	uint16_t	dccph_checksum;
	uint8_t		dccph_reserved:3,
			dccph_type:4,
			dccph_x:1;
	uint8_t		dccph_seq2;
	uint16_t	dccph_seq;
};

#ifndef IPPROTO_SCTP
# define IPPROTO_SCTP 132
#endif

struct sctphdr {
	uint16_t	source;
	uint16_t	dest;
	uint32_t	vtag;
	uint32_t	checksum;
};

struct ipv6hdr {
	uint8_t		version:4,
			priority:4;
	uint8_t		flow_lbl[3];

	uint16_t	payload_len;
	uint8_t		nexthdr;
	uint8_t		hop_limit;

	struct in6_addr	saddr;
	struct in6_addr	daddr;
};

struct vlan_hdr {
	uint16_t	vlan_id:12,
			vlan_cfi:1,
			vlan_pcp:3;
	uint16_t	vlan_type;
};

#ifndef IPPROTO_MH
# define IPPROTO_MH 135
#endif

struct ip6_mh {
	uint8_t		ip6mh_proto;
	uint8_t		ip6mh_hdrlen;
	uint8_t		ip6mh_type;
	uint8_t		ip6mh_reserved;
	uint16_t	ip6mh_cksum;
	/* Followed by type specific messages */
	uint8_t		data[0];
};

/* RFC 3775 */
#define IP6_MH_TYPE_BRR		0	/* Binding Refresh Request	*/
#define IP6_MH_TYPE_HOTI	1	/* HOTI Message			*/
#define IP6_MH_TYPE_COTI	2	/* COTI Message			*/
#define IP6_MH_TYPE_HOT		3	/* HOT Message			*/
#define IP6_MH_TYPE_COT		4	/* COT Message			*/
#define IP6_MH_TYPE_BU		5	/* Binding Update		*/
#define IP6_MH_TYPE_BACK	6	/* Binding ACK			*/
#define IP6_MH_TYPE_BERROR	7	/* Binding Error		*/
/* RFC 4068 */
#define IP6_MH_TYPE_FBU		8	/* Fast Binding Update		*/
#define IP6_MH_TYPE_FBACK	9	/* Fast Binding ACK		*/
#define IP6_MH_TYPE_FNA		10	/* Fast Binding Advertisement	*/
/* RFC 5096 */
#define IP6_MH_TYPE_EMH		11	/* Experimental Mobility Header	*/
/* RFC 5142 */
#define IP6_MH_TYPE_HASM	12	/* Home Agent Switch Message	*/

#endif /* _HEADERS_H */