diff options
Diffstat (limited to 'include/linux/ip.h')
| -rw-r--r-- | include/linux/ip.h | 131 | 
1 files changed, 6 insertions, 125 deletions
diff --git a/include/linux/ip.h b/include/linux/ip.h index 33e8a19a1a0f..4b55cf1df732 100644 --- a/include/linux/ip.h +++ b/include/linux/ip.h  | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | */ | 16 | */ | 
| 17 | #ifndef _LINUX_IP_H | 17 | #ifndef _LINUX_IP_H | 
| 18 | #define _LINUX_IP_H | 18 | #define _LINUX_IP_H | 
| 19 | #include <linux/types.h> | ||
| 19 | #include <asm/byteorder.h> | 20 | #include <asm/byteorder.h> | 
| 20 | 21 | ||
| 21 | #define IPTOS_TOS_MASK 0x1E | 22 | #define IPTOS_TOS_MASK 0x1E | 
| @@ -78,126 +79,6 @@ | |||
| 78 | #define IPOPT_TS_TSANDADDR 1 /* timestamps and addresses */ | 79 | #define IPOPT_TS_TSANDADDR 1 /* timestamps and addresses */ | 
| 79 | #define IPOPT_TS_PRESPEC 3 /* specified modules only */ | 80 | #define IPOPT_TS_PRESPEC 3 /* specified modules only */ | 
| 80 | 81 | ||
| 81 | #ifdef __KERNEL__ | ||
| 82 | #include <linux/config.h> | ||
| 83 | #include <linux/types.h> | ||
| 84 | #include <net/request_sock.h> | ||
| 85 | #include <net/sock.h> | ||
| 86 | #include <linux/igmp.h> | ||
| 87 | #include <net/flow.h> | ||
| 88 | |||
| 89 | struct ip_options { | ||
| 90 | __u32 faddr; /* Saved first hop address */ | ||
| 91 | unsigned char optlen; | ||
| 92 | unsigned char srr; | ||
| 93 | unsigned char rr; | ||
| 94 | unsigned char ts; | ||
| 95 | unsigned char is_setbyuser:1, /* Set by setsockopt? */ | ||
| 96 | is_data:1, /* Options in __data, rather than skb */ | ||
| 97 | is_strictroute:1, /* Strict source route */ | ||
| 98 | srr_is_hit:1, /* Packet destination addr was our one */ | ||
| 99 | is_changed:1, /* IP checksum more not valid */ | ||
| 100 | rr_needaddr:1, /* Need to record addr of outgoing dev */ | ||
| 101 | ts_needtime:1, /* Need to record timestamp */ | ||
| 102 | ts_needaddr:1; /* Need to record addr of outgoing dev */ | ||
| 103 | unsigned char router_alert; | ||
| 104 | unsigned char __pad1; | ||
| 105 | unsigned char __pad2; | ||
| 106 | unsigned char __data[0]; | ||
| 107 | }; | ||
| 108 | |||
| 109 | #define optlength(opt) (sizeof(struct ip_options) + opt->optlen) | ||
| 110 | |||
| 111 | struct inet_request_sock { | ||
| 112 | struct request_sock req; | ||
| 113 | u32 loc_addr; | ||
| 114 | u32 rmt_addr; | ||
| 115 | u16 rmt_port; | ||
| 116 | u16 snd_wscale : 4, | ||
| 117 | rcv_wscale : 4, | ||
| 118 | tstamp_ok : 1, | ||
| 119 | sack_ok : 1, | ||
| 120 | wscale_ok : 1, | ||
| 121 | ecn_ok : 1, | ||
| 122 | acked : 1; | ||
| 123 | struct ip_options *opt; | ||
| 124 | }; | ||
| 125 | |||
| 126 | static inline struct inet_request_sock *inet_rsk(const struct request_sock *sk) | ||
| 127 | { | ||
| 128 | return (struct inet_request_sock *)sk; | ||
| 129 | } | ||
| 130 | |||
| 131 | struct ipv6_pinfo; | ||
| 132 | |||
| 133 | struct inet_sock { | ||
| 134 | /* sk and pinet6 has to be the first two members of inet_sock */ | ||
| 135 | struct sock sk; | ||
| 136 | #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) | ||
| 137 | struct ipv6_pinfo *pinet6; | ||
| 138 | #endif | ||
| 139 | /* Socket demultiplex comparisons on incoming packets. */ | ||
| 140 | __u32 daddr; /* Foreign IPv4 addr */ | ||
| 141 | __u32 rcv_saddr; /* Bound local IPv4 addr */ | ||
| 142 | __u16 dport; /* Destination port */ | ||
| 143 | __u16 num; /* Local port */ | ||
| 144 | __u32 saddr; /* Sending source */ | ||
| 145 | __s16 uc_ttl; /* Unicast TTL */ | ||
| 146 | __u16 cmsg_flags; | ||
| 147 | struct ip_options *opt; | ||
| 148 | __u16 sport; /* Source port */ | ||
| 149 | __u16 id; /* ID counter for DF pkts */ | ||
| 150 | __u8 tos; /* TOS */ | ||
| 151 | __u8 mc_ttl; /* Multicasting TTL */ | ||
| 152 | __u8 pmtudisc; | ||
| 153 | unsigned recverr : 1, | ||
| 154 | freebind : 1, | ||
| 155 | hdrincl : 1, | ||
| 156 | mc_loop : 1; | ||
| 157 | int mc_index; /* Multicast device index */ | ||
| 158 | __u32 mc_addr; | ||
| 159 | struct ip_mc_socklist *mc_list; /* Group array */ | ||
| 160 | /* | ||
| 161 | * Following members are used to retain the infomation to build | ||
| 162 | * an ip header on each ip fragmentation while the socket is corked. | ||
| 163 | */ | ||
| 164 | struct { | ||
| 165 | unsigned int flags; | ||
| 166 | unsigned int fragsize; | ||
| 167 | struct ip_options *opt; | ||
| 168 | struct rtable *rt; | ||
| 169 | int length; /* Total length of all frames */ | ||
| 170 | u32 addr; | ||
| 171 | struct flowi fl; | ||
| 172 | } cork; | ||
| 173 | }; | ||
| 174 | |||
| 175 | #define IPCORK_OPT 1 /* ip-options has been held in ipcork.opt */ | ||
| 176 | #define IPCORK_ALLFRAG 2 /* always fragment (for ipv6 for now) */ | ||
| 177 | |||
| 178 | static inline struct inet_sock *inet_sk(const struct sock *sk) | ||
| 179 | { | ||
| 180 | return (struct inet_sock *)sk; | ||
| 181 | } | ||
| 182 | |||
| 183 | static inline void __inet_sk_copy_descendant(struct sock *sk_to, | ||
| 184 | const struct sock *sk_from, | ||
| 185 | const int ancestor_size) | ||
| 186 | { | ||
| 187 | memcpy(inet_sk(sk_to) + 1, inet_sk(sk_from) + 1, | ||
| 188 | sk_from->sk_prot->obj_size - ancestor_size); | ||
| 189 | } | ||
| 190 | #if !(defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)) | ||
| 191 | static inline void inet_sk_copy_descendant(struct sock *sk_to, | ||
| 192 | const struct sock *sk_from) | ||
| 193 | { | ||
| 194 | __inet_sk_copy_descendant(sk_to, sk_from, sizeof(struct inet_sock)); | ||
| 195 | } | ||
| 196 | #endif | ||
| 197 | #endif | ||
| 198 | |||
| 199 | extern int inet_sk_rebuild_header(struct sock *sk); | ||
| 200 | |||
| 201 | struct iphdr { | 82 | struct iphdr { | 
| 202 | #if defined(__LITTLE_ENDIAN_BITFIELD) | 83 | #if defined(__LITTLE_ENDIAN_BITFIELD) | 
| 203 | __u8 ihl:4, | 84 | __u8 ihl:4, | 
| @@ -209,14 +90,14 @@ struct iphdr { | |||
| 209 | #error "Please fix <asm/byteorder.h>" | 90 | #error "Please fix <asm/byteorder.h>" | 
| 210 | #endif | 91 | #endif | 
| 211 | __u8 tos; | 92 | __u8 tos; | 
| 212 | __u16 tot_len; | 93 | __be16 tot_len; | 
| 213 | __u16 id; | 94 | __be16 id; | 
| 214 | __u16 frag_off; | 95 | __be16 frag_off; | 
| 215 | __u8 ttl; | 96 | __u8 ttl; | 
| 216 | __u8 protocol; | 97 | __u8 protocol; | 
| 217 | __u16 check; | 98 | __u16 check; | 
| 218 | __u32 saddr; | 99 | __be32 saddr; | 
| 219 | __u32 daddr; | 100 | __be32 daddr; | 
| 220 | /*The options start here. */ | 101 | /*The options start here. */ | 
| 221 | }; | 102 | }; | 
| 222 | 103 | ||
