ping tests: Add tests for IP header options

The function pr_pack() prints out a packet, if the IP packet contains
options, these are printed as well.

Test the functionality fixed in
70960bb86a.

Reviewed by:	markj
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D38470
This commit is contained in:
Jose Luis Duran 2023-02-09 13:41:02 -03:00 committed by Mark Johnston
parent 1dc1f6bd31
commit 076b718d9e

View File

@ -780,6 +780,248 @@ def test_ping_46(self, expected):
},
id="_0_0",
),
pytest.param(
{
"src": "192.0.2.1",
"dst": "192.0.2.2",
"icmp_type": 0,
"icmp_code": 0,
"opts": "EOL",
},
{
"returncode": 0,
"stdout": """\
PING 192.0.2.2 (192.0.2.2): 56 data bytes
64 bytes from: icmp_seq=0 ttl= time= ms
wrong total length 88 instead of 84
--- 192.0.2.2 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = /// ms
""",
"stderr": "",
"redacted": True,
},
id="_0_0_opts_EOL",
),
pytest.param(
{
"src": "192.0.2.1",
"dst": "192.0.2.2",
"icmp_type": 0,
"icmp_code": 0,
"opts": "LSRR",
},
{
"returncode": 0,
"stdout": """\
PING 192.0.2.2 (192.0.2.2): 56 data bytes
64 bytes from: icmp_seq=0 ttl= time= ms
LSRR: 192.0.2.10
192.0.2.20
192.0.2.30
192.0.2.40
192.0.2.50
192.0.2.60
192.0.2.70
192.0.2.80
192.0.2.90
--- 192.0.2.2 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = /// ms
""",
"stderr": "",
"redacted": True,
},
id="_0_0_opts_LSRR",
),
pytest.param(
{
"src": "192.0.2.1",
"dst": "192.0.2.2",
"icmp_type": 0,
"icmp_code": 0,
"opts": "LSRR-trunc",
},
{
"returncode": 0,
"stdout": """\
PING 192.0.2.2 (192.0.2.2): 56 data bytes
64 bytes from: icmp_seq=0 ttl= time= ms
LSRR: (truncated route)
--- 192.0.2.2 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = /// ms
""",
"stderr": "",
"redacted": True,
},
id="_0_0_opts_LSRR_trunc",
),
pytest.param(
{
"src": "192.0.2.1",
"dst": "192.0.2.2",
"icmp_type": 0,
"icmp_code": 0,
"opts": "SSRR",
},
{
"returncode": 0,
"stdout": """\
PING 192.0.2.2 (192.0.2.2): 56 data bytes
64 bytes from: icmp_seq=0 ttl= time= ms
SSRR: 192.0.2.10
192.0.2.20
192.0.2.30
192.0.2.40
192.0.2.50
192.0.2.60
192.0.2.70
192.0.2.80
192.0.2.90
--- 192.0.2.2 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = /// ms
""",
"stderr": "",
"redacted": True,
},
id="_0_0_opts_SSRR",
),
pytest.param(
{
"src": "192.0.2.1",
"dst": "192.0.2.2",
"icmp_type": 0,
"icmp_code": 0,
"opts": "SSRR-trunc",
},
{
"returncode": 0,
"stdout": """\
PING 192.0.2.2 (192.0.2.2): 56 data bytes
64 bytes from: icmp_seq=0 ttl= time= ms
SSRR: (truncated route)
--- 192.0.2.2 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = /// ms
""",
"stderr": "",
"redacted": True,
},
id="_0_0_opts_SSRR_trunc",
),
pytest.param(
{
"src": "192.0.2.1",
"dst": "192.0.2.2",
"icmp_type": 0,
"icmp_code": 0,
"opts": "RR",
},
{
"returncode": 0,
"stdout": """\
PING 192.0.2.2 (192.0.2.2): 56 data bytes
64 bytes from: icmp_seq=0 ttl= time= ms
RR: 192.0.2.10
192.0.2.20
192.0.2.30
192.0.2.40
192.0.2.50
192.0.2.60
192.0.2.70
192.0.2.80
192.0.2.90
--- 192.0.2.2 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = /// ms
""",
"stderr": "",
"redacted": True,
},
id="_0_0_opts_RR",
),
pytest.param(
{
"src": "192.0.2.1",
"dst": "192.0.2.2",
"icmp_type": 0,
"icmp_code": 0,
"opts": "RR-same",
},
{
"returncode": 0,
"stdout": """\
PING 192.0.2.2 (192.0.2.2): 56 data bytes
64 bytes from: icmp_seq=0 ttl= time= ms (same route)
--- 192.0.2.2 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = /// ms
""",
"stderr": "",
"redacted": True,
},
id="_0_0_opts_RR_same",
),
pytest.param(
{
"src": "192.0.2.1",
"dst": "192.0.2.2",
"icmp_type": 0,
"icmp_code": 0,
"opts": "RR-trunc",
},
{
"returncode": 0,
"stdout": """\
PING 192.0.2.2 (192.0.2.2): 56 data bytes
64 bytes from: icmp_seq=0 ttl= time= ms
RR: (truncated route)
--- 192.0.2.2 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = /// ms
""",
"stderr": "",
"redacted": True,
},
id="_0_0_opts_RR_trunc",
),
pytest.param(
{
"src": "192.0.2.1",
"dst": "192.0.2.2",
"icmp_type": 0,
"icmp_code": 0,
"opts": "NOP",
},
{
"returncode": 0,
"stdout": """\
PING 192.0.2.2 (192.0.2.2): 56 data bytes
64 bytes from: icmp_seq=0 ttl= time= ms
wrong total length 88 instead of 84
NOP
--- 192.0.2.2 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = /// ms
""",
"stderr": "",
"redacted": True,
},
id="_0_0_opts_NOP",
),
pytest.param(
{
"src": "192.0.2.1",
@ -867,7 +1109,6 @@ def test_ping_46(self, expected):
"stderr": "",
"redacted": True,
},
marks=pytest.mark.skip("XXX currently failing"),
id="_0_0_opts_unk",
),
pytest.param(