Message ID | 20241010174817.1543642-5-edumazet@google.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 507a96737d99686ca1714c7ba1f60ac323178189 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | tcp: add skb->sk to more control packets | expand |
From: Eric Dumazet <edumazet@google.com> Date: Thu, 10 Oct 2024 17:48:16 +0000 > tcp_v6_send_response() send orphaned 'control packets'. > > These are RST packets and also ACK packets sent from TIME_WAIT. > > Some eBPF programs would prefer to have a meaningful skb->sk > pointer as much as possible. > > This means that TCP can now attach TIME_WAIT sockets to outgoing > skbs. > > Signed-off-by: Eric Dumazet <edumazet@google.com> Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Thanks for this patch! This indeed helps to have more info within a bpf program which is extremely useful! On Thu, Oct 10, 2024 at 1:48 PM Eric Dumazet <edumazet@google.com> wrote: > > tcp_v6_send_response() send orphaned 'control packets'. > > These are RST packets and also ACK packets sent from TIME_WAIT. > > Some eBPF programs would prefer to have a meaningful skb->sk > pointer as much as possible. > > This means that TCP can now attach TIME_WAIT sockets to outgoing > skbs. > > Signed-off-by: Eric Dumazet <edumazet@google.com> Reviewed-by: Brian Vazquez <brianvv@google.com> > --- > net/ipv6/tcp_ipv6.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c > index 7634c0be6acbdb67bb378cc81bdbf184552d2afc..597920061a3a061a878bf0f7a1b03ac4898918a9 100644 > --- a/net/ipv6/tcp_ipv6.c > +++ b/net/ipv6/tcp_ipv6.c > @@ -967,6 +967,9 @@ static void tcp_v6_send_response(const struct sock *sk, struct sk_buff *skb, u32 > } > > if (sk) { > + /* unconstify the socket only to attach it to buff with care. */ > + skb_set_owner_edemux(buff, (struct sock *)sk); > + > if (sk->sk_state == TCP_TIME_WAIT) > mark = inet_twsk(sk)->tw_mark; > else > -- > 2.47.0.rc1.288.g06298d1525-goog >
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index 7634c0be6acbdb67bb378cc81bdbf184552d2afc..597920061a3a061a878bf0f7a1b03ac4898918a9 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -967,6 +967,9 @@ static void tcp_v6_send_response(const struct sock *sk, struct sk_buff *skb, u32 } if (sk) { + /* unconstify the socket only to attach it to buff with care. */ + skb_set_owner_edemux(buff, (struct sock *)sk); + if (sk->sk_state == TCP_TIME_WAIT) mark = inet_twsk(sk)->tw_mark; else
tcp_v6_send_response() send orphaned 'control packets'. These are RST packets and also ACK packets sent from TIME_WAIT. Some eBPF programs would prefer to have a meaningful skb->sk pointer as much as possible. This means that TCP can now attach TIME_WAIT sockets to outgoing skbs. Signed-off-by: Eric Dumazet <edumazet@google.com> --- net/ipv6/tcp_ipv6.c | 3 +++ 1 file changed, 3 insertions(+)