diff options
Diffstat (limited to 'include/net/ip.h')
| -rw-r--r-- | include/net/ip.h | 53 |
1 files changed, 34 insertions, 19 deletions
diff --git a/include/net/ip.h b/include/net/ip.h index 2f47e5482b55..503994a38ed1 100644 --- a/include/net/ip.h +++ b/include/net/ip.h | |||
| @@ -33,8 +33,7 @@ | |||
| 33 | 33 | ||
| 34 | struct sock; | 34 | struct sock; |
| 35 | 35 | ||
| 36 | struct inet_skb_parm | 36 | struct inet_skb_parm { |
| 37 | { | ||
| 38 | struct ip_options opt; /* Compiled IP options */ | 37 | struct ip_options opt; /* Compiled IP options */ |
| 39 | unsigned char flags; | 38 | unsigned char flags; |
| 40 | 39 | ||
| @@ -50,8 +49,7 @@ static inline unsigned int ip_hdrlen(const struct sk_buff *skb) | |||
| 50 | return ip_hdr(skb)->ihl * 4; | 49 | return ip_hdr(skb)->ihl * 4; |
| 51 | } | 50 | } |
| 52 | 51 | ||
| 53 | struct ipcm_cookie | 52 | struct ipcm_cookie { |
| 54 | { | ||
| 55 | __be32 addr; | 53 | __be32 addr; |
| 56 | int oif; | 54 | int oif; |
| 57 | struct ip_options *opt; | 55 | struct ip_options *opt; |
| @@ -60,8 +58,7 @@ struct ipcm_cookie | |||
| 60 | 58 | ||
| 61 | #define IPCB(skb) ((struct inet_skb_parm*)((skb)->cb)) | 59 | #define IPCB(skb) ((struct inet_skb_parm*)((skb)->cb)) |
| 62 | 60 | ||
| 63 | struct ip_ra_chain | 61 | struct ip_ra_chain { |
| 64 | { | ||
| 65 | struct ip_ra_chain *next; | 62 | struct ip_ra_chain *next; |
| 66 | struct sock *sk; | 63 | struct sock *sk; |
| 67 | void (*destructor)(struct sock *); | 64 | void (*destructor)(struct sock *); |
| @@ -159,8 +156,7 @@ static inline __u8 ip_reply_arg_flowi_flags(const struct ip_reply_arg *arg) | |||
| 159 | void ip_send_reply(struct sock *sk, struct sk_buff *skb, struct ip_reply_arg *arg, | 156 | void ip_send_reply(struct sock *sk, struct sk_buff *skb, struct ip_reply_arg *arg, |
| 160 | unsigned int len); | 157 | unsigned int len); |
| 161 | 158 | ||
| 162 | struct ipv4_config | 159 | struct ipv4_config { |
| 163 | { | ||
| 164 | int log_martians; | 160 | int log_martians; |
| 165 | int no_pmtu_disc; | 161 | int no_pmtu_disc; |
| 166 | }; | 162 | }; |
| @@ -178,9 +174,9 @@ extern struct ipv4_config ipv4_config; | |||
| 178 | #define NET_ADD_STATS_BH(net, field, adnd) SNMP_ADD_STATS_BH((net)->mib.net_statistics, field, adnd) | 174 | #define NET_ADD_STATS_BH(net, field, adnd) SNMP_ADD_STATS_BH((net)->mib.net_statistics, field, adnd) |
| 179 | #define NET_ADD_STATS_USER(net, field, adnd) SNMP_ADD_STATS_USER((net)->mib.net_statistics, field, adnd) | 175 | #define NET_ADD_STATS_USER(net, field, adnd) SNMP_ADD_STATS_USER((net)->mib.net_statistics, field, adnd) |
| 180 | 176 | ||
| 181 | extern unsigned long snmp_fold_field(void *mib[], int offt); | 177 | extern unsigned long snmp_fold_field(void __percpu *mib[], int offt); |
| 182 | extern int snmp_mib_init(void *ptr[2], size_t mibsize); | 178 | extern int snmp_mib_init(void __percpu *ptr[2], size_t mibsize); |
| 183 | extern void snmp_mib_free(void *ptr[2]); | 179 | extern void snmp_mib_free(void __percpu *ptr[2]); |
| 184 | 180 | ||
| 185 | extern struct local_ports { | 181 | extern struct local_ports { |
| 186 | seqlock_t lock; | 182 | seqlock_t lock; |
| @@ -240,8 +236,8 @@ static inline void ip_select_ident(struct iphdr *iph, struct dst_entry *dst, str | |||
| 240 | * does not change, they drop every other packet in | 236 | * does not change, they drop every other packet in |
| 241 | * a TCP stream using header compression. | 237 | * a TCP stream using header compression. |
| 242 | */ | 238 | */ |
| 243 | iph->id = (sk && inet_sk(sk)->daddr) ? | 239 | iph->id = (sk && inet_sk(sk)->inet_daddr) ? |
| 244 | htons(inet_sk(sk)->id++) : 0; | 240 | htons(inet_sk(sk)->inet_id++) : 0; |
| 245 | } else | 241 | } else |
| 246 | __ip_select_ident(iph, dst, 0); | 242 | __ip_select_ident(iph, dst, 0); |
| 247 | } | 243 | } |
| @@ -249,9 +245,9 @@ static inline void ip_select_ident(struct iphdr *iph, struct dst_entry *dst, str | |||
| 249 | static inline void ip_select_ident_more(struct iphdr *iph, struct dst_entry *dst, struct sock *sk, int more) | 245 | static inline void ip_select_ident_more(struct iphdr *iph, struct dst_entry *dst, struct sock *sk, int more) |
| 250 | { | 246 | { |
| 251 | if (iph->frag_off & htons(IP_DF)) { | 247 | if (iph->frag_off & htons(IP_DF)) { |
| 252 | if (sk && inet_sk(sk)->daddr) { | 248 | if (sk && inet_sk(sk)->inet_daddr) { |
| 253 | iph->id = htons(inet_sk(sk)->id); | 249 | iph->id = htons(inet_sk(sk)->inet_id); |
| 254 | inet_sk(sk)->id += 1 + more; | 250 | inet_sk(sk)->inet_id += 1 + more; |
| 255 | } else | 251 | } else |
| 256 | iph->id = 0; | 252 | iph->id = 0; |
| 257 | } else | 253 | } else |
| @@ -317,7 +313,7 @@ static inline void ip_ib_mc_map(__be32 naddr, const unsigned char *broadcast, ch | |||
| 317 | 313 | ||
| 318 | static __inline__ void inet_reset_saddr(struct sock *sk) | 314 | static __inline__ void inet_reset_saddr(struct sock *sk) |
| 319 | { | 315 | { |
| 320 | inet_sk(sk)->rcv_saddr = inet_sk(sk)->saddr = 0; | 316 | inet_sk(sk)->inet_rcv_saddr = inet_sk(sk)->inet_saddr = 0; |
| 321 | #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) | 317 | #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) |
| 322 | if (sk->sk_family == PF_INET6) { | 318 | if (sk->sk_family == PF_INET6) { |
| 323 | struct ipv6_pinfo *np = inet6_sk(sk); | 319 | struct ipv6_pinfo *np = inet6_sk(sk); |
| @@ -330,18 +326,37 @@ static __inline__ void inet_reset_saddr(struct sock *sk) | |||
| 330 | 326 | ||
| 331 | #endif | 327 | #endif |
| 332 | 328 | ||
| 329 | static inline int sk_mc_loop(struct sock *sk) | ||
| 330 | { | ||
| 331 | if (!sk) | ||
| 332 | return 1; | ||
| 333 | switch (sk->sk_family) { | ||
| 334 | case AF_INET: | ||
| 335 | return inet_sk(sk)->mc_loop; | ||
| 336 | #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) | ||
| 337 | case AF_INET6: | ||
| 338 | return inet6_sk(sk)->mc_loop; | ||
| 339 | #endif | ||
| 340 | } | ||
| 341 | WARN_ON(1); | ||
| 342 | return 1; | ||
| 343 | } | ||
| 344 | |||
| 333 | extern int ip_call_ra_chain(struct sk_buff *skb); | 345 | extern int ip_call_ra_chain(struct sk_buff *skb); |
| 334 | 346 | ||
| 335 | /* | 347 | /* |
| 336 | * Functions provided by ip_fragment.c | 348 | * Functions provided by ip_fragment.c |
| 337 | */ | 349 | */ |
| 338 | 350 | ||
| 339 | enum ip_defrag_users | 351 | enum ip_defrag_users { |
| 340 | { | ||
| 341 | IP_DEFRAG_LOCAL_DELIVER, | 352 | IP_DEFRAG_LOCAL_DELIVER, |
| 342 | IP_DEFRAG_CALL_RA_CHAIN, | 353 | IP_DEFRAG_CALL_RA_CHAIN, |
| 343 | IP_DEFRAG_CONNTRACK_IN, | 354 | IP_DEFRAG_CONNTRACK_IN, |
| 355 | __IP_DEFRAG_CONNTRACK_IN_END = IP_DEFRAG_CONNTRACK_IN + USHORT_MAX, | ||
| 344 | IP_DEFRAG_CONNTRACK_OUT, | 356 | IP_DEFRAG_CONNTRACK_OUT, |
| 357 | __IP_DEFRAG_CONNTRACK_OUT_END = IP_DEFRAG_CONNTRACK_OUT + USHORT_MAX, | ||
| 358 | IP_DEFRAG_CONNTRACK_BRIDGE_IN, | ||
| 359 | __IP_DEFRAG_CONNTRACK_BRIDGE_IN = IP_DEFRAG_CONNTRACK_BRIDGE_IN + USHORT_MAX, | ||
| 345 | IP_DEFRAG_VS_IN, | 360 | IP_DEFRAG_VS_IN, |
| 346 | IP_DEFRAG_VS_OUT, | 361 | IP_DEFRAG_VS_OUT, |
| 347 | IP_DEFRAG_VS_FWD | 362 | IP_DEFRAG_VS_FWD |
