]> git.baikalelectronics.ru Git - kernel.git/commit
ipv4/raw: support binding to nonlocal addresses
authorRiccardo Paolo Bestetti <pbl@bestov.io>
Wed, 17 Nov 2021 09:00:11 +0000 (10:00 +0100)
committerJakub Kicinski <kuba@kernel.org>
Thu, 18 Nov 2021 04:21:52 +0000 (20:21 -0800)
commit0b32c5f3f0c79f6c8aad2c5e8b9277dd04827984
treea8fa4fb92f7f213f821526d2c61c873b15172de3
parentc0504ae2a52501bad7eb8a0ece4f45f8dc50ef29
ipv4/raw: support binding to nonlocal addresses

Add support to inet v4 raw sockets for binding to nonlocal addresses
through the IP_FREEBIND and IP_TRANSPARENT socket options, as well as
the ipv4.ip_nonlocal_bind kernel parameter.

Add helper function to inet_sock.h to check for bind address validity on
the base of the address type and whether nonlocal address are enabled
for the socket via any of the sockopts/sysctl, deduplicating checks in
ipv4/ping.c, ipv4/af_inet.c, ipv6/af_inet6.c (for mapped v4->v6
addresses), and ipv4/raw.c.

Add test cases with IP[V6]_FREEBIND verifying that both v4 and v6 raw
sockets support binding to nonlocal addresses after the change. Add
necessary support for the test cases to nettest.

Signed-off-by: Riccardo Paolo Bestetti <pbl@bestov.io>
Reviewed-by: David Ahern <dsahern@kernel.org>
Link: https://lore.kernel.org/r/20211117090010.125393-1-pbl@bestov.io
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/inet_sock.h
net/ipv4/af_inet.c
net/ipv4/ping.c
net/ipv4/raw.c
net/ipv6/af_inet6.c
tools/testing/selftests/net/fcnal-test.sh
tools/testing/selftests/net/nettest.c