• KOVACS Krisztian's avatar
    netfilter: xt_socket: fix transparent match for IPv6 request sockets · 7a682575
    KOVACS Krisztian authored
    The introduction of TCP_NEW_SYN_RECV state, and the addition of request
    sockets to the ehash table seems to have broken the --transparent option
    of the socket match for IPv6 (around commit a9407000).
    
    Now that the socket lookup finds the TCP_NEW_SYN_RECV socket instead of the
    listener, the --transparent option tries to match on the no_srccheck flag
    of the request socket.
    
    Unfortunately, that flag was only set for IPv4 sockets in tcp_v4_init_req()
    by copying the transparent flag of the listener socket. This effectively
    causes '-m socket --transparent' not match on the ACK packet sent by the
    client in a TCP handshake.
    
    Based on the suggestion from Eric Dumazet, this change moves the code
    initializing no_srccheck to tcp_conn_request(), rendering the above
    scenario working again.
    
    Fixes: a9407000 ("netfilter: xt_socket: prepare for TCP_NEW_SYN_RECV support")
    Signed-off-by: default avatarAlex Badics <alex.badics@balabit.com>
    Signed-off-by: default avatarKOVACS Krisztian <hidden@balabit.com>
    Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
    7a682575
tcp_input.c 181 KB