diff options
Diffstat (limited to 'include/net/ipv6.h')
| -rw-r--r-- | include/net/ipv6.h | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/include/net/ipv6.h b/include/net/ipv6.h index ccab5946c830..1f8412410998 100644 --- a/include/net/ipv6.h +++ b/include/net/ipv6.h | |||
| @@ -73,7 +73,6 @@ | |||
| 73 | #define IPV6_ADDR_SCOPE_MASK 0x00f0U | 73 | #define IPV6_ADDR_SCOPE_MASK 0x00f0U |
| 74 | 74 | ||
| 75 | #define IPV6_ADDR_MAPPED 0x1000U | 75 | #define IPV6_ADDR_MAPPED 0x1000U |
| 76 | #define IPV6_ADDR_RESERVED 0x2000U /* reserved address space */ | ||
| 77 | 76 | ||
| 78 | /* | 77 | /* |
| 79 | * Addr scopes | 78 | * Addr scopes |
| @@ -137,17 +136,17 @@ extern struct ctl_path net_ipv6_ctl_path[]; | |||
| 137 | /* MIBs */ | 136 | /* MIBs */ |
| 138 | 137 | ||
| 139 | #define IP6_INC_STATS(net, idev,field) \ | 138 | #define IP6_INC_STATS(net, idev,field) \ |
| 140 | _DEVINC(net, ipv6, , idev, field) | 139 | _DEVINC(net, ipv6, 64, idev, field) |
| 141 | #define IP6_INC_STATS_BH(net, idev,field) \ | 140 | #define IP6_INC_STATS_BH(net, idev,field) \ |
| 142 | _DEVINC(net, ipv6, _BH, idev, field) | 141 | _DEVINC(net, ipv6, 64_BH, idev, field) |
| 143 | #define IP6_ADD_STATS(net, idev,field,val) \ | 142 | #define IP6_ADD_STATS(net, idev,field,val) \ |
| 144 | _DEVADD(net, ipv6, , idev, field, val) | 143 | _DEVADD(net, ipv6, 64, idev, field, val) |
| 145 | #define IP6_ADD_STATS_BH(net, idev,field,val) \ | 144 | #define IP6_ADD_STATS_BH(net, idev,field,val) \ |
| 146 | _DEVADD(net, ipv6, _BH, idev, field, val) | 145 | _DEVADD(net, ipv6, 64_BH, idev, field, val) |
| 147 | #define IP6_UPD_PO_STATS(net, idev,field,val) \ | 146 | #define IP6_UPD_PO_STATS(net, idev,field,val) \ |
| 148 | _DEVUPD(net, ipv6, , idev, field, val) | 147 | _DEVUPD(net, ipv6, 64, idev, field, val) |
| 149 | #define IP6_UPD_PO_STATS_BH(net, idev,field,val) \ | 148 | #define IP6_UPD_PO_STATS_BH(net, idev,field,val) \ |
| 150 | _DEVUPD(net, ipv6, _BH, idev, field, val) | 149 | _DEVUPD(net, ipv6, 64_BH, idev, field, val) |
| 151 | #define ICMP6_INC_STATS(net, idev, field) \ | 150 | #define ICMP6_INC_STATS(net, idev, field) \ |
| 152 | _DEVINC(net, icmpv6, , idev, field) | 151 | _DEVINC(net, icmpv6, , idev, field) |
| 153 | #define ICMP6_INC_STATS_BH(net, idev, field) \ | 152 | #define ICMP6_INC_STATS_BH(net, idev, field) \ |
| @@ -246,7 +245,9 @@ extern int ipv6_opt_accepted(struct sock *sk, struct sk_buff *skb); | |||
| 246 | int ip6_frag_nqueues(struct net *net); | 245 | int ip6_frag_nqueues(struct net *net); |
| 247 | int ip6_frag_mem(struct net *net); | 246 | int ip6_frag_mem(struct net *net); |
| 248 | 247 | ||
| 249 | #define IPV6_FRAG_TIMEOUT (60*HZ) /* 60 seconds */ | 248 | #define IPV6_FRAG_HIGH_THRESH (256 * 1024) /* 262144 */ |
| 249 | #define IPV6_FRAG_LOW_THRESH (192 * 1024) /* 196608 */ | ||
| 250 | #define IPV6_FRAG_TIMEOUT (60 * HZ) /* 60 seconds */ | ||
| 250 | 251 | ||
| 251 | extern int __ipv6_addr_type(const struct in6_addr *addr); | 252 | extern int __ipv6_addr_type(const struct in6_addr *addr); |
| 252 | static inline int ipv6_addr_type(const struct in6_addr *addr) | 253 | static inline int ipv6_addr_type(const struct in6_addr *addr) |
| @@ -353,8 +354,11 @@ struct inet_frag_queue; | |||
| 353 | enum ip6_defrag_users { | 354 | enum ip6_defrag_users { |
| 354 | IP6_DEFRAG_LOCAL_DELIVER, | 355 | IP6_DEFRAG_LOCAL_DELIVER, |
| 355 | IP6_DEFRAG_CONNTRACK_IN, | 356 | IP6_DEFRAG_CONNTRACK_IN, |
| 357 | __IP6_DEFRAG_CONNTRACK_IN = IP6_DEFRAG_CONNTRACK_IN + USHRT_MAX, | ||
| 356 | IP6_DEFRAG_CONNTRACK_OUT, | 358 | IP6_DEFRAG_CONNTRACK_OUT, |
| 359 | __IP6_DEFRAG_CONNTRACK_OUT = IP6_DEFRAG_CONNTRACK_OUT + USHRT_MAX, | ||
| 357 | IP6_DEFRAG_CONNTRACK_BRIDGE_IN, | 360 | IP6_DEFRAG_CONNTRACK_BRIDGE_IN, |
| 361 | __IP6_DEFRAG_CONNTRACK_BRIDGE_IN = IP6_DEFRAG_CONNTRACK_BRIDGE_IN + USHRT_MAX, | ||
| 358 | }; | 362 | }; |
| 359 | 363 | ||
| 360 | struct ip6_create_arg { | 364 | struct ip6_create_arg { |
| @@ -418,7 +422,7 @@ static inline int __ipv6_addr_diff(const void *token1, const void *token2, int a | |||
| 418 | for (i = 0; i < addrlen; i++) { | 422 | for (i = 0; i < addrlen; i++) { |
| 419 | __be32 xb = a1[i] ^ a2[i]; | 423 | __be32 xb = a1[i] ^ a2[i]; |
| 420 | if (xb) | 424 | if (xb) |
| 421 | return i * 32 + 32 - fls(ntohl(xb)); | 425 | return i * 32 + 31 - __fls(ntohl(xb)); |
| 422 | } | 426 | } |
| 423 | 427 | ||
| 424 | /* | 428 | /* |
| @@ -478,8 +482,7 @@ extern int ip6_rcv_finish(struct sk_buff *skb); | |||
| 478 | extern int ip6_xmit(struct sock *sk, | 482 | extern int ip6_xmit(struct sock *sk, |
| 479 | struct sk_buff *skb, | 483 | struct sk_buff *skb, |
| 480 | struct flowi *fl, | 484 | struct flowi *fl, |
| 481 | struct ipv6_txoptions *opt, | 485 | struct ipv6_txoptions *opt); |
| 482 | int ipfragok); | ||
| 483 | 486 | ||
| 484 | extern int ip6_nd_hdr(struct sock *sk, | 487 | extern int ip6_nd_hdr(struct sock *sk, |
| 485 | struct sk_buff *skb, | 488 | struct sk_buff *skb, |
| @@ -500,7 +503,8 @@ extern int ip6_append_data(struct sock *sk, | |||
| 500 | struct ipv6_txoptions *opt, | 503 | struct ipv6_txoptions *opt, |
| 501 | struct flowi *fl, | 504 | struct flowi *fl, |
| 502 | struct rt6_info *rt, | 505 | struct rt6_info *rt, |
| 503 | unsigned int flags); | 506 | unsigned int flags, |
| 507 | int dontfrag); | ||
| 504 | 508 | ||
| 505 | extern int ip6_push_pending_frames(struct sock *sk); | 509 | extern int ip6_push_pending_frames(struct sock *sk); |
| 506 | 510 | ||
| @@ -547,6 +551,10 @@ extern int ipv6_ext_hdr(u8 nexthdr); | |||
| 547 | 551 | ||
| 548 | extern int ipv6_find_tlv(struct sk_buff *skb, int offset, int type); | 552 | extern int ipv6_find_tlv(struct sk_buff *skb, int offset, int type); |
| 549 | 553 | ||
| 554 | extern struct in6_addr *fl6_update_dst(struct flowi *fl, | ||
| 555 | const struct ipv6_txoptions *opt, | ||
| 556 | struct in6_addr *orig); | ||
| 557 | |||
| 550 | /* | 558 | /* |
| 551 | * socket options (ipv6_sockglue.c) | 559 | * socket options (ipv6_sockglue.c) |
| 552 | */ | 560 | */ |
| @@ -574,9 +582,11 @@ extern int ip6_datagram_connect(struct sock *sk, | |||
| 574 | struct sockaddr *addr, int addr_len); | 582 | struct sockaddr *addr, int addr_len); |
| 575 | 583 | ||
| 576 | extern int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len); | 584 | extern int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len); |
| 585 | extern int ipv6_recv_rxpmtu(struct sock *sk, struct msghdr *msg, int len); | ||
| 577 | extern void ipv6_icmp_error(struct sock *sk, struct sk_buff *skb, int err, __be16 port, | 586 | extern void ipv6_icmp_error(struct sock *sk, struct sk_buff *skb, int err, __be16 port, |
| 578 | u32 info, u8 *payload); | 587 | u32 info, u8 *payload); |
| 579 | extern void ipv6_local_error(struct sock *sk, int err, struct flowi *fl, u32 info); | 588 | extern void ipv6_local_error(struct sock *sk, int err, struct flowi *fl, u32 info); |
| 589 | extern void ipv6_local_rxpmtu(struct sock *sk, struct flowi *fl, u32 mtu); | ||
| 580 | 590 | ||
| 581 | extern int inet6_release(struct socket *sock); | 591 | extern int inet6_release(struct socket *sock); |
| 582 | extern int inet6_bind(struct socket *sock, struct sockaddr *uaddr, | 592 | extern int inet6_bind(struct socket *sock, struct sockaddr *uaddr, |
