aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/ipv6.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/ipv6.h')
-rw-r--r--include/net/ipv6.h34
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);
246int ip6_frag_nqueues(struct net *net); 245int ip6_frag_nqueues(struct net *net);
247int ip6_frag_mem(struct net *net); 246int 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
251extern int __ipv6_addr_type(const struct in6_addr *addr); 252extern int __ipv6_addr_type(const struct in6_addr *addr);
252static inline int ipv6_addr_type(const struct in6_addr *addr) 253static inline int ipv6_addr_type(const struct in6_addr *addr)
@@ -353,8 +354,11 @@ struct inet_frag_queue;
353enum ip6_defrag_users { 354enum 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
360struct ip6_create_arg { 364struct 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);
478extern int ip6_xmit(struct sock *sk, 482extern 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
484extern int ip6_nd_hdr(struct sock *sk, 487extern 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
505extern int ip6_push_pending_frames(struct sock *sk); 509extern int ip6_push_pending_frames(struct sock *sk);
506 510
@@ -547,6 +551,10 @@ extern int ipv6_ext_hdr(u8 nexthdr);
547 551
548extern int ipv6_find_tlv(struct sk_buff *skb, int offset, int type); 552extern int ipv6_find_tlv(struct sk_buff *skb, int offset, int type);
549 553
554extern 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
576extern int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len); 584extern int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len);
585extern int ipv6_recv_rxpmtu(struct sock *sk, struct msghdr *msg, int len);
577extern void ipv6_icmp_error(struct sock *sk, struct sk_buff *skb, int err, __be16 port, 586extern 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);
579extern void ipv6_local_error(struct sock *sk, int err, struct flowi *fl, u32 info); 588extern void ipv6_local_error(struct sock *sk, int err, struct flowi *fl, u32 info);
589extern void ipv6_local_rxpmtu(struct sock *sk, struct flowi *fl, u32 mtu);
580 590
581extern int inet6_release(struct socket *sock); 591extern int inet6_release(struct socket *sock);
582extern int inet6_bind(struct socket *sock, struct sockaddr *uaddr, 592extern int inet6_bind(struct socket *sock, struct sockaddr *uaddr,