Commit 8b5801477926a2b018afc84a53c0b8818843fe73

Authored by Eric Dumazet
Committed by David S. Miller
1 parent a8399231f0

netfilter: tproxy: prepare TCP_NEW_SYN_RECV support

TCP request socks soon will be visible in ehash table.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

Showing 1 changed file with 12 additions and 6 deletions Side-by-side Diff

net/netfilter/xt_TPROXY.c
... ... @@ -42,15 +42,21 @@
42 42  
43 43 static bool tproxy_sk_is_transparent(struct sock *sk)
44 44 {
45   - if (sk->sk_state != TCP_TIME_WAIT) {
46   - if (inet_sk(sk)->transparent)
47   - return true;
48   - sock_put(sk);
49   - } else {
  45 + switch (sk->sk_state) {
  46 + case TCP_TIME_WAIT:
50 47 if (inet_twsk(sk)->tw_transparent)
51 48 return true;
52   - inet_twsk_put(inet_twsk(sk));
  49 + break;
  50 + case TCP_NEW_SYN_RECV:
  51 + if (inet_rsk(inet_reqsk(sk))->no_srccheck)
  52 + return true;
  53 + break;
  54 + default:
  55 + if (inet_sk(sk)->transparent)
  56 + return true;
53 57 }
  58 +
  59 + sock_gen_put(sk);
54 60 return false;
55 61 }
56 62