bpf: selftests: Tcp header options
authorMartin KaFai Lau <kafai@fb.com>
Thu, 20 Aug 2020 19:01:17 +0000 (12:01 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Mon, 24 Aug 2020 21:35:00 +0000 (14:35 -0700)
commitad2f8eb0095e9036724d9cf0eb6960f1e6d52d21
treef037047269c01e554e96d3829399543e9dc36f38
parent8085e1dc1f3c885e1e9c1ef8031b3eabc1cccf25
bpf: selftests: Tcp header options

This patch adds tests for the new bpf tcp header option feature.

test_tcp_hdr_options.c:
- It tests header option writing and parsing in 3WHS: regular
  connection establishment, fastopen, and syncookie.
- In syncookie, the passive side's bpf prog is asking the active side
  to resend its bpf header option by specifying a RESEND bit in the
  outgoing SYNACK. handle_active_estab() and write_nodata_opt() has
  some details.
- handle_passive_estab() has comments on fastopen.
- It also has test for header writing and parsing in FIN packet.
- Most of the tests is writing an experimental option 254 with magic 0xeB9F.
- The no_exprm_estab() also tests writing a regular TCP option
  without any magic.

test_misc_tcp_options.c:
- It is an one directional test.  Active side writes option and
  passive side parses option.  The focus is to exercise
  the new helpers and API.
- Testing the new helper: bpf_load_hdr_opt() and bpf_store_hdr_opt().
- Testing the bpf_getsockopt(TCP_BPF_SYN).
- Negative tests for the above helpers.
- Testing the sock_ops->skb_data.

Signed-off-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20200820190117.2886749-1-kafai@fb.com
tools/testing/selftests/bpf/prog_tests/tcp_hdr_options.c [new file with mode: 0644]
tools/testing/selftests/bpf/progs/test_misc_tcp_hdr_options.c [new file with mode: 0644]
tools/testing/selftests/bpf/progs/test_tcp_hdr_options.c [new file with mode: 0644]
tools/testing/selftests/bpf/test_tcp_hdr_options.h [new file with mode: 0644]