linux-mainline/tools/testing/selftests/bpf
Daniel Borkmann 1812291e76 bpf: more msg_name rewrite tests to test_sock_addr
Extend test_sock_addr for recvmsg test cases, bigger parts of the
sendmsg code can be reused for this. Below are the strace view of
the recvmsg rewrites; the sendmsg side does not have a BPF prog
connected to it for the context of this test:

IPv4 test case:

  [pid  4846] bpf(BPF_PROG_ATTACH, {target_fd=3, attach_bpf_fd=4, attach_type=0x13 /* BPF_??? */, attach_flags=BPF_F_ALLOW_OVERRIDE}, 112) = 0
  [pid  4846] socket(AF_INET, SOCK_DGRAM, IPPROTO_IP) = 5
  [pid  4846] bind(5, {sa_family=AF_INET, sin_port=htons(4444), sin_addr=inet_addr("127.0.0.1")}, 128) = 0
  [pid  4846] socket(AF_INET, SOCK_DGRAM, IPPROTO_IP) = 6
  [pid  4846] sendmsg(6, {msg_name={sa_family=AF_INET, sin_port=htons(4444), sin_addr=inet_addr("127.0.0.1")}, msg_namelen=128, msg_iov=[{iov_base="a", iov_len=1}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 1
  [pid  4846] select(6, [5], NULL, NULL, {tv_sec=2, tv_usec=0}) = 1 (in [5], left {tv_sec=1, tv_usec=999995})
  [pid  4846] recvmsg(5, {msg_name={sa_family=AF_INET, sin_port=htons(4040), sin_addr=inet_addr("192.168.1.254")}, msg_namelen=128->16, msg_iov=[{iov_base="a", iov_len=64}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 1
  [pid  4846] close(6)                    = 0
  [pid  4846] close(5)                    = 0
  [pid  4846] bpf(BPF_PROG_DETACH, {target_fd=3, attach_type=0x13 /* BPF_??? */}, 112) = 0

IPv6 test case:

  [pid  4846] bpf(BPF_PROG_ATTACH, {target_fd=3, attach_bpf_fd=4, attach_type=0x14 /* BPF_??? */, attach_flags=BPF_F_ALLOW_OVERRIDE}, 112) = 0
  [pid  4846] socket(AF_INET6, SOCK_DGRAM, IPPROTO_IP) = 5
  [pid  4846] bind(5, {sa_family=AF_INET6, sin6_port=htons(6666), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=htonl(0), sin6_scope_id=0}, 128) = 0
  [pid  4846] socket(AF_INET6, SOCK_DGRAM, IPPROTO_IP) = 6
  [pid  4846] sendmsg(6, {msg_name={sa_family=AF_INET6, sin6_port=htons(6666), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=htonl(0), sin6_scope_id=0}, msg_namelen=128, msg_iov=[{iov_base="a", iov_len=1}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 1
  [pid  4846] select(6, [5], NULL, NULL, {tv_sec=2, tv_usec=0}) = 1 (in [5], left {tv_sec=1, tv_usec=999996})
  [pid  4846] recvmsg(5, {msg_name={sa_family=AF_INET6, sin6_port=htons(6060), inet_pton(AF_INET6, "face:b00c:1234:5678::abcd", &sin6_addr), sin6_flowinfo=htonl(0), sin6_scope_id=0}, msg_namelen=128->28, msg_iov=[{iov_base="a", iov_len=64}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 1
  [pid  4846] close(6)                    = 0
  [pid  4846] close(5)                    = 0
  [pid  4846] bpf(BPF_PROG_DETACH, {target_fd=3, attach_type=0x14 /* BPF_??? */}, 112) = 0

test_sock_addr run w/o strace view:

  # ./test_sock_addr.sh
  [...]
  Test case: recvmsg4: return code ok .. [PASS]
  Test case: recvmsg4: return code !ok .. [PASS]
  Test case: recvmsg6: return code ok .. [PASS]
  Test case: recvmsg6: return code !ok .. [PASS]
  Test case: recvmsg4: rewrite IP & port (asm) .. [PASS]
  Test case: recvmsg6: rewrite IP & port (asm) .. [PASS]
  [...]

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Andrey Ignatov <rdna@fb.com>
Acked-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2019-06-06 16:53:12 -07:00
..
gnu
include/uapi/linux
map_tests selftests/bpf: add test_sysctl and map_tests/tests.h to .gitignore 2019-05-16 11:41:31 -07:00
prog_tests selftests: bpf: fix compiler warning in flow_dissector test 2019-05-29 15:23:40 +02:00
progs bpf: Add ene-to-end test for bpf_sk_storage_* helpers 2019-04-27 09:07:05 -07:00
verifier selftests: bpf: complete sub-register zero extension checks 2019-05-29 13:31:05 +02:00
.gitignore selftests/bpf: add test_sysctl and map_tests/tests.h to .gitignore 2019-05-16 11:41:31 -07:00
bpf_endian.h
bpf_helpers.h selftests/bpf: fix bpf_get_current_task 2019-05-17 13:19:30 +02:00
bpf_rand.h
bpf_rlimit.h
bpf_util.h
cgroup_helpers.c
cgroup_helpers.h
config selftests/bpf: expand test_tc_tunnel with SIT encap 2019-04-24 01:32:26 +02:00
flow_dissector_load.c selftests/bpf: run flow dissector tests in skb-less mode 2019-04-23 18:36:34 +02:00
flow_dissector_load.h selftests/bpf: properly return error from bpf_flow_load 2019-04-23 18:36:34 +02:00
get_cgroup_id_user.c
Makefile selftests/bpf: move test_lirc_mode2_user to TEST_GEN_PROGS_EXTENDED 2019-06-05 12:26:46 +02:00
netcnt_common.h
tcp_client.py
tcp_server.py
test_align.c
test_btf.c bpf: Refactor BTF encoding macro to test_btf.h 2019-04-27 09:07:05 -07:00
test_btf.h bpf: Refactor BTF encoding macro to test_btf.h 2019-04-27 09:07:05 -07:00
test_cgroup_storage.c
test_dev_cgroup.c
test_flow_dissector.c
test_flow_dissector.sh
test_iptunnel_common.h
test_kmod.sh
test_libbpf_open.c selftests/bpf: set RLIMIT_MEMLOCK properly for test_libbpf_open.c 2019-05-04 23:23:51 -07:00
test_libbpf.sh
test_lirc_mode2_user.c
test_lirc_mode2.sh
test_lpm_map.c
test_lru_map.c bpf: test ref bit from data path and add new tests for syscall path 2019-05-14 10:47:29 -07:00
test_lwt_ip_encap.sh
test_lwt_seg6local.sh
test_maps.c bpf: Add BPF_MAP_TYPE_SK_STORAGE test to test_maps 2019-04-27 09:07:05 -07:00
test_maps.h bpf: Add BPF_MAP_TYPE_SK_STORAGE test to test_maps 2019-04-27 09:07:05 -07:00
test_netcnt.c
test_offload.py netdevsim: move netdev creation/destruction to dev probe 2019-04-26 01:52:03 -04:00
test_progs.c
test_progs.h
test_queue_stack_map.h
test_section_names.c
test_select_reuseport_common.h
test_select_reuseport.c
test_skb_cgroup_id_user.c
test_skb_cgroup_id.sh
test_sock_addr.c bpf: more msg_name rewrite tests to test_sock_addr 2019-06-06 16:53:12 -07:00
test_sock_addr.sh
test_sock_fields.c bpf: Add ene-to-end test for bpf_sk_storage_* helpers 2019-04-27 09:07:05 -07:00
test_sock.c
test_socket_cookie.c
test_sockmap_kern.h
test_sockmap.c
test_sysctl.c
test_tag.c
test_tc_edt.sh
test_tc_tunnel.sh selftests/bpf: expand test_tc_tunnel with SIT encap 2019-04-24 01:32:26 +02:00
test_tcp_check_syncookie_user.c
test_tcp_check_syncookie.sh
test_tcpbpf_user.c
test_tcpbpf.h
test_tcpnotify_user.c
test_tcpnotify.h
test_tunnel.sh
test_verifier_log.c
test_verifier.c bpf: Add verifier tests for the bpf_sk_storage 2019-04-27 09:07:05 -07:00
test_xdp_meta.sh
test_xdp_redirect.sh
test_xdp_vlan.sh
trace_helpers.c
trace_helpers.h
urandom_read.c
with_addr.sh
with_tunnels.sh