diff --git a/sbin/ping/tests/Makefile b/sbin/ping/tests/Makefile --- a/sbin/ping/tests/Makefile +++ b/sbin/ping/tests/Makefile @@ -6,9 +6,13 @@ PACKAGE= tests ATF_TESTS_SH+= ping_test +# Exclusive because each injection test case uses the same IP addresses +TEST_METADATA.ping_test+= is_exclusive="true" + ${PACKAGE}FILES+= ping_c1_s56_t1.out ${PACKAGE}FILES+= ping_6_c1_s8_t1.out ${PACKAGE}FILES+= ping_c1_s56_t1_S127.out ${PACKAGE}FILES+= ping_c1_s8_t1_S1.out +${PACKAGE}FILES+= injection.py .include diff --git a/sbin/ping/tests/ping_test.sh b/sbin/ping/tests/ping_test.sh --- a/sbin/ping/tests/ping_test.sh +++ b/sbin/ping/tests/ping_test.sh @@ -125,6 +125,47 @@ atf_check -s exit:1 -e ignore ping6 -4 -6 } +atf_test_case "inject_opts" "cleanup" +inject_opts_head() { + atf_set "descr" "Inejct an ECHO REPLY with IP options" + atf_set "require.user" "root" + atf_set "require.progs" "scapy" +} +inject_opts_body() { + atf_check -s exit:0 -o ignore python3 $(atf_get_srcdir)/injection.py opts +} +inject_opts_cleanup() { + ifconfig `cat tun.txt` destroy +} + +atf_test_case "inject_pip" "cleanup" +inject_pip_head() { + atf_set "descr" "Inject an ICMP error with a quoted packet with IP options" + atf_set "require.user" "root" + atf_set "require.progs" "scapy" +} +inject_pip_body() { + atf_check -s exit:2 -o ignore python3 $(atf_get_srcdir)/injection.py pip +} +inject_pip_cleanup() { + ifconfig `cat tun.txt` destroy +} + +# This is redundant with the ping_ tests, but it serves to ensure that scapy.py +# is working correctly. +atf_test_case "inject_reply" "cleanup" +inject_reply_head() { + atf_set "descr" "Basic ping test with packet injection" + atf_set "require.user" "root" + atf_set "require.progs" "scapy" +} +inject_reply_body() { + atf_check -s exit:0 -o ignore python3 $(atf_get_srcdir)/injection.py reply +} +inject_reply_cleanup() { + ifconfig `cat tun.txt` destroy +} + atf_init_test_cases() { atf_add_test_case ping_c1_s56_t1 @@ -136,6 +177,9 @@ atf_add_test_case ping6_c1t4 atf_add_test_case ping_46 atf_add_test_case ping6_46 + atf_add_test_case inject_opts + atf_add_test_case inject_pip + atf_add_test_case inject_reply } check_ping_statistics() {