mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-09 17:17:04 -04:00
net: ipv6: fix TCP early demux
IPv6 needs a cookie in dst_check() call. We need to add rx_dst_cookie and provide a family independent sk_rx_dst_set(sk, skb) method to properly support IPv6 TCP early demux. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
b5497eeb37
commit
5d299f3d3c
@@ -369,6 +369,7 @@ struct ipv6_pinfo {
|
||||
__u8 rcv_tclass;
|
||||
|
||||
__u32 dst_cookie;
|
||||
__u32 rx_dst_cookie;
|
||||
|
||||
struct ipv6_mc_socklist __rcu *ipv6_mc_list;
|
||||
struct ipv6_ac_socklist *ipv6_ac_list;
|
||||
|
||||
@@ -39,6 +39,7 @@ struct inet_connection_sock_af_ops {
|
||||
int (*queue_xmit)(struct sk_buff *skb, struct flowi *fl);
|
||||
void (*send_check)(struct sock *sk, struct sk_buff *skb);
|
||||
int (*rebuild_header)(struct sock *sk);
|
||||
void (*sk_rx_dst_set)(struct sock *sk, const struct sk_buff *skb);
|
||||
int (*conn_request)(struct sock *sk, struct sk_buff *skb);
|
||||
struct sock *(*syn_recv_sock)(struct sock *sk, struct sk_buff *skb,
|
||||
struct request_sock *req,
|
||||
|
||||
@@ -249,13 +249,4 @@ static inline __u8 inet_sk_flowi_flags(const struct sock *sk)
|
||||
return flags;
|
||||
}
|
||||
|
||||
static inline void inet_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb)
|
||||
{
|
||||
struct dst_entry *dst = skb_dst(skb);
|
||||
|
||||
dst_hold(dst);
|
||||
sk->sk_rx_dst = dst;
|
||||
inet_sk(sk)->rx_dst_ifindex = skb->skb_iif;
|
||||
}
|
||||
|
||||
#endif /* _INET_SOCK_H */
|
||||
|
||||
Reference in New Issue
Block a user