diff options
Diffstat (limited to 'include/linux/ipv6.h')
-rw-r--r-- | include/linux/ipv6.h | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h index 8260ef779762..379e433e15e0 100644 --- a/include/linux/ipv6.h +++ b/include/linux/ipv6.h | |||
@@ -299,9 +299,9 @@ struct ipv6_pinfo { | |||
299 | struct in6_addr rcv_saddr; | 299 | struct in6_addr rcv_saddr; |
300 | struct in6_addr daddr; | 300 | struct in6_addr daddr; |
301 | struct in6_pktinfo sticky_pktinfo; | 301 | struct in6_pktinfo sticky_pktinfo; |
302 | struct in6_addr *daddr_cache; | 302 | const struct in6_addr *daddr_cache; |
303 | #ifdef CONFIG_IPV6_SUBTREES | 303 | #ifdef CONFIG_IPV6_SUBTREES |
304 | struct in6_addr *saddr_cache; | 304 | const struct in6_addr *saddr_cache; |
305 | #endif | 305 | #endif |
306 | 306 | ||
307 | __be32 flow_label; | 307 | __be32 flow_label; |
@@ -410,6 +410,22 @@ struct tcp6_sock { | |||
410 | 410 | ||
411 | extern int inet6_sk_rebuild_header(struct sock *sk); | 411 | extern int inet6_sk_rebuild_header(struct sock *sk); |
412 | 412 | ||
413 | struct inet6_timewait_sock { | ||
414 | struct in6_addr tw_v6_daddr; | ||
415 | struct in6_addr tw_v6_rcv_saddr; | ||
416 | }; | ||
417 | |||
418 | struct tcp6_timewait_sock { | ||
419 | struct tcp_timewait_sock tcp6tw_tcp; | ||
420 | struct inet6_timewait_sock tcp6tw_inet6; | ||
421 | }; | ||
422 | |||
423 | static inline struct inet6_timewait_sock *inet6_twsk(const struct sock *sk) | ||
424 | { | ||
425 | return (struct inet6_timewait_sock *)(((u8 *)sk) + | ||
426 | inet_twsk(sk)->tw_ipv6_offset); | ||
427 | } | ||
428 | |||
413 | #if IS_ENABLED(CONFIG_IPV6) | 429 | #if IS_ENABLED(CONFIG_IPV6) |
414 | static inline struct ipv6_pinfo * inet6_sk(const struct sock *__sk) | 430 | static inline struct ipv6_pinfo * inet6_sk(const struct sock *__sk) |
415 | { | 431 | { |
@@ -459,28 +475,12 @@ static inline void inet_sk_copy_descendant(struct sock *sk_to, | |||
459 | #define __ipv6_only_sock(sk) (inet6_sk(sk)->ipv6only) | 475 | #define __ipv6_only_sock(sk) (inet6_sk(sk)->ipv6only) |
460 | #define ipv6_only_sock(sk) ((sk)->sk_family == PF_INET6 && __ipv6_only_sock(sk)) | 476 | #define ipv6_only_sock(sk) ((sk)->sk_family == PF_INET6 && __ipv6_only_sock(sk)) |
461 | 477 | ||
462 | struct inet6_timewait_sock { | ||
463 | struct in6_addr tw_v6_daddr; | ||
464 | struct in6_addr tw_v6_rcv_saddr; | ||
465 | }; | ||
466 | |||
467 | struct tcp6_timewait_sock { | ||
468 | struct tcp_timewait_sock tcp6tw_tcp; | ||
469 | struct inet6_timewait_sock tcp6tw_inet6; | ||
470 | }; | ||
471 | |||
472 | static inline u16 inet6_tw_offset(const struct proto *prot) | 478 | static inline u16 inet6_tw_offset(const struct proto *prot) |
473 | { | 479 | { |
474 | return prot->twsk_prot->twsk_obj_size - | 480 | return prot->twsk_prot->twsk_obj_size - |
475 | sizeof(struct inet6_timewait_sock); | 481 | sizeof(struct inet6_timewait_sock); |
476 | } | 482 | } |
477 | 483 | ||
478 | static inline struct inet6_timewait_sock *inet6_twsk(const struct sock *sk) | ||
479 | { | ||
480 | return (struct inet6_timewait_sock *)(((u8 *)sk) + | ||
481 | inet_twsk(sk)->tw_ipv6_offset); | ||
482 | } | ||
483 | |||
484 | static inline struct in6_addr *__inet6_rcv_saddr(const struct sock *sk) | 484 | static inline struct in6_addr *__inet6_rcv_saddr(const struct sock *sk) |
485 | { | 485 | { |
486 | return likely(sk->sk_state != TCP_TIME_WAIT) ? | 486 | return likely(sk->sk_state != TCP_TIME_WAIT) ? |