Blame view
include/linux/ip.h
3.75 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/* * INET An implementation of the TCP/IP protocol suite for the LINUX * operating system. INET is implemented using the BSD Socket * interface as the means of communication with the user level. * * Definitions for the IP protocol. * * Version: @(#)ip.h 1.0.2 04/28/93 * * Authors: Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ #ifndef _LINUX_IP_H #define _LINUX_IP_H |
14c850212 [INET_SOCK]: Move... |
19 |
#include <linux/types.h> |
1da177e4c Linux-2.6.12-rc2 |
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 |
#include <asm/byteorder.h> #define IPTOS_TOS_MASK 0x1E #define IPTOS_TOS(tos) ((tos)&IPTOS_TOS_MASK) #define IPTOS_LOWDELAY 0x10 #define IPTOS_THROUGHPUT 0x08 #define IPTOS_RELIABILITY 0x04 #define IPTOS_MINCOST 0x02 #define IPTOS_PREC_MASK 0xE0 #define IPTOS_PREC(tos) ((tos)&IPTOS_PREC_MASK) #define IPTOS_PREC_NETCONTROL 0xe0 #define IPTOS_PREC_INTERNETCONTROL 0xc0 #define IPTOS_PREC_CRITIC_ECP 0xa0 #define IPTOS_PREC_FLASHOVERRIDE 0x80 #define IPTOS_PREC_FLASH 0x60 #define IPTOS_PREC_IMMEDIATE 0x40 #define IPTOS_PREC_PRIORITY 0x20 #define IPTOS_PREC_ROUTINE 0x00 /* IP options */ #define IPOPT_COPY 0x80 #define IPOPT_CLASS_MASK 0x60 #define IPOPT_NUMBER_MASK 0x1f #define IPOPT_COPIED(o) ((o)&IPOPT_COPY) #define IPOPT_CLASS(o) ((o)&IPOPT_CLASS_MASK) #define IPOPT_NUMBER(o) ((o)&IPOPT_NUMBER_MASK) #define IPOPT_CONTROL 0x00 #define IPOPT_RESERVED1 0x20 #define IPOPT_MEASUREMENT 0x40 #define IPOPT_RESERVED2 0x60 #define IPOPT_END (0 |IPOPT_CONTROL) #define IPOPT_NOOP (1 |IPOPT_CONTROL) #define IPOPT_SEC (2 |IPOPT_CONTROL|IPOPT_COPY) #define IPOPT_LSRR (3 |IPOPT_CONTROL|IPOPT_COPY) #define IPOPT_TIMESTAMP (4 |IPOPT_MEASUREMENT) |
11a03f78f [NetLabel]: core ... |
60 |
#define IPOPT_CIPSO (6 |IPOPT_CONTROL|IPOPT_COPY) |
1da177e4c Linux-2.6.12-rc2 |
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
#define IPOPT_RR (7 |IPOPT_CONTROL) #define IPOPT_SID (8 |IPOPT_CONTROL|IPOPT_COPY) #define IPOPT_SSRR (9 |IPOPT_CONTROL|IPOPT_COPY) #define IPOPT_RA (20|IPOPT_CONTROL|IPOPT_COPY) #define IPVERSION 4 #define MAXTTL 255 #define IPDEFTTL 64 #define IPOPT_OPTVAL 0 #define IPOPT_OLEN 1 #define IPOPT_OFFSET 2 #define IPOPT_MINOFF 4 #define MAX_IPOPTLEN 40 #define IPOPT_NOP IPOPT_NOOP #define IPOPT_EOL IPOPT_END #define IPOPT_TS IPOPT_TIMESTAMP #define IPOPT_TS_TSONLY 0 /* timestamps only */ #define IPOPT_TS_TSANDADDR 1 /* timestamps and addresses */ #define IPOPT_TS_PRESPEC 3 /* specified modules only */ |
0a69452cb [XFRM]: BEET mode |
82 |
#define IPV4_BEET_PHMAXLEN 8 |
1da177e4c Linux-2.6.12-rc2 |
83 84 85 86 87 88 89 90 91 92 93 |
struct iphdr { #if defined(__LITTLE_ENDIAN_BITFIELD) __u8 ihl:4, version:4; #elif defined (__BIG_ENDIAN_BITFIELD) __u8 version:4, ihl:4; #else #error "Please fix <asm/byteorder.h>" #endif __u8 tos; |
76ab608d8 [NET]: Endian-ann... |
94 95 96 |
__be16 tot_len; __be16 id; __be16 frag_off; |
1da177e4c Linux-2.6.12-rc2 |
97 98 |
__u8 ttl; __u8 protocol; |
9981a0e36 [NET]: Annotate c... |
99 |
__sum16 check; |
76ab608d8 [NET]: Endian-ann... |
100 101 |
__be32 saddr; __be32 daddr; |
1da177e4c Linux-2.6.12-rc2 |
102 103 |
/*The options start here. */ }; |
eddc9ec53 [SK_BUFF]: Introd... |
104 105 106 107 108 109 110 |
#ifdef __KERNEL__ #include <linux/skbuff.h> static inline struct iphdr *ip_hdr(const struct sk_buff *skb) { return (struct iphdr *)skb_network_header(skb); } |
b0061ce49 [SK_BUFF]: Introd... |
111 112 113 |
static inline struct iphdr *ipip_hdr(const struct sk_buff *skb) { |
9c70220b7 [SK_BUFF]: Introd... |
114 |
return (struct iphdr *)skb_transport_header(skb); |
b0061ce49 [SK_BUFF]: Introd... |
115 |
} |
eddc9ec53 [SK_BUFF]: Introd... |
116 |
#endif |
1da177e4c Linux-2.6.12-rc2 |
117 118 119 |
struct ip_auth_hdr { __u8 nexthdr; __u8 hdrlen; /* This one is measured in 32 bit units! */ |
046d03314 [IPV4]: headers e... |
120 121 122 |
__be16 reserved; __be32 spi; __be32 seq_no; /* Sequence number */ |
1da177e4c Linux-2.6.12-rc2 |
123 124 125 126 |
__u8 auth_data[0]; /* Variable len but >=4. Mind the 64 bit alignment! */ }; struct ip_esp_hdr { |
046d03314 [IPV4]: headers e... |
127 128 |
__be32 spi; __be32 seq_no; /* Sequence number */ |
1da177e4c Linux-2.6.12-rc2 |
129 130 131 132 133 134 |
__u8 enc_data[0]; /* Variable len but >=8. Mind the 64 bit alignment! */ }; struct ip_comp_hdr { __u8 nexthdr; __u8 flags; |
046d03314 [IPV4]: headers e... |
135 |
__be16 cpi; |
1da177e4c Linux-2.6.12-rc2 |
136 |
}; |
0a69452cb [XFRM]: BEET mode |
137 138 139 140 141 142 |
struct ip_beet_phdr { __u8 nexthdr; __u8 hdrlen; __u8 padlen; __u8 reserved; }; |
1da177e4c Linux-2.6.12-rc2 |
143 |
#endif /* _LINUX_IP_H */ |