6 #define ipv6_optlen(p) (((p)->hdrlen+1) << 3)
22 #ifdef CONFIG_IPV6_PRIVACY
25 __s32 temp_prefered_lft;
26 __s32 regen_max_retry;
27 __s32 max_desync_factor;
32 #ifdef CONFIG_IPV6_ROUTER_PREF
33 __s32 accept_ra_rtr_pref;
34 __s32 rtr_probe_interval;
35 #ifdef CONFIG_IPV6_ROUTE_INFO
36 __s32 accept_ra_rt_info_max_plen;
41 #ifdef CONFIG_IPV6_OPTIMISTIC_DAD
44 #ifdef CONFIG_IPV6_MROUTE
58 #include <linux/icmpv6.h>
59 #include <linux/tcp.h>
60 #include <linux/udp.h>
66 return (
struct ipv6hdr *)skb_network_header(skb);
69 static inline struct ipv6hdr *ipipv6_hdr(
const struct sk_buff *skb)
71 return (
struct ipv6hdr *)skb_transport_header(skb);
74 static inline __u8 ipv6_tclass(
const struct ipv6hdr *iph)
94 #if defined(CONFIG_IPV6_MIP6) || defined(CONFIG_IPV6_MIP6_MODULE)
99 #define IP6SKB_XFRM_TRANSFORMED 1
100 #define IP6SKB_FORWARDED 2
101 #define IP6SKB_REROUTED 4
104 #define IP6CB(skb) ((struct inet6_skb_parm*)((skb)->cb))
105 #define IP6CBMTU(skb) ((struct ip6_mtuinfo *)((skb)->cb))
107 static inline int inet6_iif(
const struct sk_buff *skb)
109 return IP6CB(skb)->iif;
142 #ifdef CONFIG_IPV6_SUBTREES
153 #if defined(__BIG_ENDIAN_BITFIELD)
161 #if defined(__BIG_ENDIAN_BITFIELD)
266 inet_twsk(sk)->tw_ipv6_offset);
269 #if IS_ENABLED(CONFIG_IPV6)
270 static inline struct ipv6_pinfo * inet6_sk(
const struct sock *__sk)
272 return inet_sk(__sk)->pinet6;
279 inet_rsk(rsk)->inet6_rsk_offset);
292 inet_rsk(req)->inet6_rsk_offset = inet6_rsk_offset(req);
293 inet6_rsk(req)->pktopts =
NULL;
299 static inline struct raw6_sock *raw6_sk(
const struct sock *sk)
304 static inline void inet_sk_copy_descendant(
struct sock *sk_to,
305 const struct sock *sk_from)
307 int ancestor_size =
sizeof(
struct inet_sock);
312 __inet_sk_copy_descendant(sk_to, sk_from, ancestor_size);
315 #define __ipv6_only_sock(sk) (inet6_sk(sk)->ipv6only)
316 #define ipv6_only_sock(sk) ((sk)->sk_family == PF_INET6 && __ipv6_only_sock(sk))
318 static inline u16 inet6_tw_offset(
const struct proto *prot)
327 &inet6_sk(sk)->rcv_saddr : &inet6_twsk(sk)->tw_v6_rcv_saddr;
341 #define __ipv6_only_sock(sk) 0
342 #define ipv6_only_sock(sk) 0
344 static inline struct ipv6_pinfo * inet6_sk(
const struct sock *__sk)
355 static inline struct raw6_sock *raw6_sk(
const struct sock *sk)
360 #define __inet6_rcv_saddr(__sk) NULL
361 #define inet6_rcv_saddr(__sk) NULL
362 #define tcp_twsk_ipv6only(__sk) 0
363 #define inet_v6_ipv6only(__sk) 0
366 #define INET6_MATCH(__sk, __net, __hash, __saddr, __daddr, __ports, __dif)\
367 (((__sk)->sk_hash == (__hash)) && sock_net((__sk)) == (__net) && \
368 ((*((__portpair *)&(inet_sk(__sk)->inet_dport))) == (__ports)) && \
369 ((__sk)->sk_family == AF_INET6) && \
370 ipv6_addr_equal(&inet6_sk(__sk)->daddr, (__saddr)) && \
371 ipv6_addr_equal(&inet6_sk(__sk)->rcv_saddr, (__daddr)) && \
372 (!((__sk)->sk_bound_dev_if) || ((__sk)->sk_bound_dev_if == (__dif))))
374 #define INET6_TW_MATCH(__sk, __net, __hash, __saddr, __daddr, __ports, __dif) \
375 (((__sk)->sk_hash == (__hash)) && sock_net((__sk)) == (__net) && \
376 (*((__portpair *)&(inet_twsk(__sk)->tw_dport)) == (__ports)) && \
377 ((__sk)->sk_family == PF_INET6) && \
378 (ipv6_addr_equal(&inet6_twsk(__sk)->tw_v6_daddr, (__saddr))) && \
379 (ipv6_addr_equal(&inet6_twsk(__sk)->tw_v6_rcv_saddr, (__daddr))) && \
380 (!((__sk)->sk_bound_dev_if) || ((__sk)->sk_bound_dev_if == (__dif))))