netfilter: tproxy: nf_tproxy_assign_sock() can handle tw sockets
transparent field of a socket is either inet_twsk(sk)->tw_transparent for timewait sockets, or inet_sk(sk)->transparent for other sockets (TCP/UDP). Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Acked-by: David S. Miller <davem@davemloft.net> Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3d13008e73
commit
d485d500cf
|
@ -70,7 +70,11 @@ nf_tproxy_destructor(struct sk_buff *skb)
|
||||||
int
|
int
|
||||||
nf_tproxy_assign_sock(struct sk_buff *skb, struct sock *sk)
|
nf_tproxy_assign_sock(struct sk_buff *skb, struct sock *sk)
|
||||||
{
|
{
|
||||||
if (inet_sk(sk)->transparent) {
|
bool transparent = (sk->sk_state == TCP_TIME_WAIT) ?
|
||||||
|
inet_twsk(sk)->tw_transparent :
|
||||||
|
inet_sk(sk)->transparent;
|
||||||
|
|
||||||
|
if (transparent) {
|
||||||
skb_orphan(skb);
|
skb_orphan(skb);
|
||||||
skb->sk = sk;
|
skb->sk = sk;
|
||||||
skb->destructor = nf_tproxy_destructor;
|
skb->destructor = nf_tproxy_destructor;
|
||||||
|
|
Loading…
Reference in New Issue