START sys/net/loop 2024-02-25T05:02:31Z ==== busy-rdomains ==== # Check if rdomains are busy. ==== ifconfig ==== sleep 2 # XXX pkill -f '^/usr/sbin/tcpdump -l -e -vvv -s 2048 -ni' *** Error 1 in target 'stamp-stop' (ignored) rm -f stamp-bpf* # Destroy interfaces. /sbin/ifconfig lo11 rdomain 11 /sbin/ifconfig lo11 inet 127.0.0.1 delete ifconfig: SIOCDIFADDR: Can't assign requested address *** Error 1 in target 'unconfig' (ignored) /sbin/ifconfig lo11 inet 127.0.0.11 delete ifconfig: SIOCDIFADDR: Can't assign requested address *** Error 1 in target 'unconfig' (ignored) /sbin/ifconfig lo11 destroy /sbin/ifconfig lo12 rdomain 12 /sbin/ifconfig lo12 inet 127.0.0.1 delete ifconfig: SIOCDIFADDR: Can't assign requested address *** Error 1 in target 'unconfig' (ignored) /sbin/ifconfig lo12 inet 127.0.0.12 delete ifconfig: SIOCDIFADDR: Can't assign requested address *** Error 1 in target 'unconfig' (ignored) /sbin/ifconfig lo12 destroy rm -f stamp-ifconfig # Create and configure loopback interfaces. /sbin/ifconfig lo11 rdomain 11 /sbin/ifconfig lo11 inet 127.0.0.1/8 /sbin/ifconfig lo11 inet 127.0.0.11 alias /sbin/route -n -T 11 add -inet -host 10.6.6.6 127.0.0.1 add host 10.6.6.6: gateway 127.0.0.1 /sbin/route -n -T 11 add -inet -host 10.7.7.7 127.0.0.1 add host 10.7.7.7: gateway 127.0.0.1 /sbin/ifconfig lo12 rdomain 12 /sbin/ifconfig lo12 inet 127.0.0.1/8 /sbin/ifconfig lo12 inet 127.0.0.12 alias /sbin/route -n -T 12 add -inet -host 10.6.6.6 127.0.0.1 add host 10.6.6.6: gateway 127.0.0.1 /sbin/route -n -T 12 add -inet -host 10.7.7.7 127.0.0.1 add host 10.7.7.7: gateway 127.0.0.1 /sbin/route -n -T 11 add -inet -host 127.0.0.12 127.0.0.1 add host 127.0.0.12: gateway 127.0.0.1 /sbin/route -n -T 12 add -inet -host 127.0.0.11 127.0.0.1 add host 127.0.0.11: gateway 127.0.0.1 # Wait until IPv6 addresses are no longer tentative. for i in `jot 50`; do if ! { /sbin/ifconfig lo11; /sbin/ifconfig lo12; } | fgrep -q tentative; then break; fi; sleep .1; done ! { /sbin/ifconfig lo11; /sbin/ifconfig lo12; } | fgrep tentative ==== pfctl ==== # Create python include file containing the addresses. rm -f addr.py addr.py.tmp echo 'N1="11"' >>addr.py.tmp echo 'IF_N1="lo11"' >>addr.py.tmp echo 'ADDR_N1="127.0.0.11"' >>addr.py.tmp echo 'N2="12"' >>addr.py.tmp echo 'IF_N2="lo12"' >>addr.py.tmp echo 'ADDR_N2="127.0.0.12"' >>addr.py.tmp mv addr.py.tmp addr.py # Load the pf rules into the kernel. cat addr.py /usr/src/regress/sys/net/loop/pf.conf | /sbin/pfctl -n -f - cat addr.py /usr/src/regress/sys/net/loop/pf.conf | /sbin/pfctl -a regress -f - ==== run-ping-local-11 ==== rm -f lo11.tcpdump pkill -f '^/usr/sbin/tcpdump -l -e -vvv -s 2048 -ni lo11' || true /usr/sbin/tcpdump -l -e -vvv -s 2048 -ni lo11 >lo11.tcpdump & rm -f stamp-stop rm -f lo12.tcpdump pkill -f '^/usr/sbin/tcpdump -l -e -vvv -s 2048 -ni lo12' || true /usr/sbin/tcpdump -l -e -vvv -s 2048 -ni lo12 >lo12.tcpdump & rm -f stamp-stop sleep 2 # XXX tcpdump: listening on lo12, link-type LOOP tcpdump: listening on lo11, link-type LOOP # Ping localhost in routing domain 11. /sbin/ping -n -w 1 -c 1 -V 11 127.0.0.1 PING 127.0.0.1 (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=0.086 ms --- 127.0.0.1 ping statistics --- 1 packets transmitted, 1 packets received, 0.0% packet loss round-trip min/avg/max/std-dev = 0.086/0.086/0.086/0.000 ms ==== run-ping-loop-11 ==== # Ping non existing address with loopback route in routing domain 11. ! /sbin/ping -n -w 1 -c 1 -V 11 10.6.6.6 PING 10.6.6.6 (10.6.6.6): 56 data bytes --- 10.6.6.6 ping statistics --- 1 packets transmitted, 0 packets received, 100.0% packet loss ==== run-ping-address-11 ==== # Ping local address in routing domain 11. /sbin/ping -n -w 1 -c 1 -V 11 127.0.0.11 PING 127.0.0.11 (127.0.0.11): 56 data bytes 64 bytes from 127.0.0.11: icmp_seq=0 ttl=255 time=0.059 ms --- 127.0.0.11 ping statistics --- 1 packets transmitted, 1 packets received, 0.0% packet loss round-trip min/avg/max/std-dev = 0.059/0.059/0.059/0.000 ms ==== run-ping-local-12 ==== # Ping localhost in routing domain 12. /sbin/ping -n -w 1 -c 1 -V 12 127.0.0.1 PING 127.0.0.1 (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=0.046 ms --- 127.0.0.1 ping statistics --- 1 packets transmitted, 1 packets received, 0.0% packet loss round-trip min/avg/max/std-dev = 0.046/0.046/0.046/0.000 ms ==== run-ping-loop-12 ==== # Ping non existing address with loopback route in routing domain 12. ! /sbin/ping -n -w 1 -c 1 -V 12 10.6.6.6 PING 10.6.6.6 (10.6.6.6): 56 data bytes --- 10.6.6.6 ping statistics --- 1 packets transmitted, 0 packets received, 100.0% packet loss ==== run-ping-address-12 ==== # Ping local address in routing domain 12. /sbin/ping -n -w 1 -c 1 -V 12 127.0.0.12 PING 127.0.0.12 (127.0.0.12): 56 data bytes 64 bytes from 127.0.0.12: icmp_seq=0 ttl=255 time=0.057 ms --- 127.0.0.12 ping statistics --- 1 packets transmitted, 1 packets received, 0.0% packet loss round-trip min/avg/max/std-dev = 0.057/0.057/0.057/0.000 ms ==== run-ping-rdomain-pass ==== # Pass ping packets between routing domains with pf rule. /sbin/ping -n -w 1 -c 1 -V 11 127.0.0.12 PING 127.0.0.12 (127.0.0.12): 56 data bytes 64 bytes from 127.0.0.12: icmp_seq=0 ttl=255 time=0.057 ms --- 127.0.0.12 ping statistics --- 1 packets transmitted, 1 packets received, 0.0% packet loss round-trip min/avg/max/std-dev = 0.057/0.057/0.057/0.000 ms ==== run-ping-rdomain-block ==== # Check that reverse direction without pf rule is not allowed. ! /sbin/ping -n -w 1 -c 1 -V 12 127.0.0.11 PING 127.0.0.11 (127.0.0.11): 56 data bytes --- 127.0.0.11 ping statistics --- 1 packets transmitted, 0 packets received, 100.0% packet loss ==== run-ping-rdomain-loop ==== # Ping non existing address and loop between routing domains. ! /sbin/ping -n -w 1 -c 1 -V 11 10.7.7.7 PING 10.7.7.7 (10.7.7.7): 56 data bytes --- 10.7.7.7 ping statistics --- 1 packets transmitted, 0 packets received, 100.0% packet loss ==== run-bpf-local-11 ==== sleep 2 # XXX pkill -f '^/usr/sbin/tcpdump -l -e -vvv -s 2048 -ni' 488 packets received by filter 489 packets received by filter 0 packets dropped by kernel 0 packets dropped by kernel rm -f stamp-bpf* # Check that the ping packet went through loopback. grep '127.0.0.1 > 127.0.0.1: icmp: echo request' lo11.tcpdump 06:02:36.104292 127.0.0.1 > 127.0.0.1: icmp: echo request (id:ecb2 seq:0) [icmp cksum ok] (ttl 255, id 56699, len 84, bad ip cksum 0! -> e02a) ==== run-bpf-loop-11 ==== # Check that the ping packet went multiple times through loopback. grep '[0-9] 127.0.0.1 > 10.6.6.6: icmp: echo request .*ttl 255,' lo11.tcpdump 06:02:36.166452 127.0.0.1 > 10.6.6.6: icmp: echo request (id:1cd7 seq:0) [icmp cksum ok] (ttl 255, id 49895, len 84, bad ip cksum 0! -> 69b4) grep '[0-9] 127.0.0.1 > 10.6.6.6: icmp: echo request .* \[ttl 1\]' lo11.tcpdump 06:02:36.167765 127.0.0.1 > 10.6.6.6: icmp: echo request (id:1cd7 seq:0) [icmp cksum ok] [ttl 1] (id 49895, len 84, bad ip cksum 0! -> 67b5) ==== run-bpf-local-12 ==== # Check that the ping packet went through loopback. grep '127.0.0.1 > 127.0.0.1: icmp: echo request' lo12.tcpdump 06:02:38.303462 127.0.0.1 > 127.0.0.1: icmp: echo request (id:14c2 seq:0) [icmp cksum ok] (ttl 255, id 47189, len 84, bad ip cksum 0! -> 551) ==== run-bpf-loop-12 ==== # Check that the ping packet went multiple times through loopback. grep '[0-9] 127.0.0.1 > 10.6.6.6: icmp: echo request .*ttl 255,' lo12.tcpdump 06:02:38.359294 127.0.0.1 > 10.6.6.6: icmp: echo request (id:fc26 seq:0) [icmp cksum ok] (ttl 255, id 2251, len 84, bad ip cksum 0! -> 23d1) grep '[0-9] 127.0.0.1 > 10.6.6.6: icmp: echo request .* \[ttl 1\]' lo12.tcpdump 06:02:38.360587 127.0.0.1 > 10.6.6.6: icmp: echo request (id:fc26 seq:0) [icmp cksum ok] [ttl 1] (id 2251, len 84, bad ip cksum 0! -> 21d2) ==== run-bpf-rdomain-loop-11 ==== # Check the ping packet went multiple times in routing domains. grep '[0-9] 127.0.0.1 > 10.7.7.7: icmp: echo request .*ttl 255,' lo11.tcpdump 06:02:42.627875 127.0.0.1 > 10.7.7.7: icmp: echo request (id:77d5 seq:0) [icmp cksum ok] (ttl 255, id 53351, len 84, bad ip cksum 0! -> 5b32) ! grep '[0-9] 127.0.0.1 > 10.7.7.7: icmp: echo request .*ttl 254,' lo11.tcpdump grep '[0-9] 127.0.0.1 > 10.7.7.7: icmp: echo request .* \[ttl 1\]' lo11.tcpdump 06:02:42.628524 127.0.0.1 > 10.7.7.7: icmp: echo request (id:77d5 seq:0) [icmp cksum ok] [ttl 1] (id 53351, len 84, bad ip cksum 0! -> 5933) ==== run-bpf-rdomain-loop-12 ==== # Check the ping packet went multiple times in routing domains. grep '[0-9] 127.0.0.1 > 10.7.7.7: icmp: echo request .*ttl 254,' lo12.tcpdump 06:02:42.627890 127.0.0.1 > 10.7.7.7: icmp: echo request (id:77d5 seq:0) [icmp cksum ok] (ttl 254, id 53351, len 84, bad ip cksum 0! -> 5c32) grep '[0-9] 127.0.0.1 > 10.7.7.7: icmp: echo request .*ttl 2,' lo12.tcpdump 06:02:42.628521 127.0.0.1 > 10.7.7.7: icmp: echo request (id:77d5 seq:0) [icmp cksum ok] (ttl 2, id 53351, len 84, bad ip cksum 0! -> 5833) ! grep '[0-9] 127.0.0.1 > 10.7.7.7: icmp: echo request .* \[ttl 1\]' lo12.tcpdump ==== unconfig ==== # Destroy interfaces. /sbin/ifconfig lo11 rdomain 11 /sbin/ifconfig lo11 inet 127.0.0.1 delete /sbin/ifconfig lo11 inet 127.0.0.11 delete /sbin/ifconfig lo11 destroy /sbin/ifconfig lo12 rdomain 12 /sbin/ifconfig lo12 inet 127.0.0.1 delete /sbin/ifconfig lo12 inet 127.0.0.12 delete /sbin/ifconfig lo12 destroy rm -f stamp-ifconfig PASS sys/net/loop Duration 0m16.16s