Hi Ihar, Thanks for the patch. This "traditional nc" vs "nmap nc" brings up memories from when I first started with OVN, so I thought I'll chime in.
On Sun, Jul 26, 2026 at 8:08 PM Ihar Hrachyshka <[email protected]> wrote: > > Nmap names and installs its netcat implementation as ncat. Its Makefile > installs the ncat executable and does not create an nc link. Ubuntu and > Fedora provide nc through packaging alternatives, whereas the NixOS > Nmap package exposes the upstream executable name. Consequently, OVN > reports HAVE_NC=no and cannot run its netcat-based system tests there. > > Prefer ncat when it is available and retain nc as a fallback for systems > which provide the compatibility name or another supported netcat > implementation. Route all invocations through the command selected by > the feature probe. > > The tests use several Ncat-specific options, which is why the upstream > Nmap name is the first choice rather than merely accepting whichever > netcat command appears first in PATH. > > Assisted-by: Codex gpt-5.6-sol high > Signed-off-by: Ihar Hrachyshka <[email protected]> > --- > tests/atlocal.in | 15 +- > tests/system-common-macros.at | 10 +- > tests/system-ovn-kmod.at | 90 +++---- > tests/system-ovn.at | 472 +++++++++++++++++----------------- > 4 files changed, 298 insertions(+), 289 deletions(-) > > diff --git a/tests/atlocal.in b/tests/atlocal.in > index 2683e9a2f..40635266f 100644 > --- a/tests/atlocal.in > +++ b/tests/atlocal.in > @@ -135,11 +135,20 @@ find_command() > fi > } > > -# Set HAVE_NC > -find_command nc > +# Set HAVE_NC and select the installed netcat command. > +if command -v ncat > /dev/null 2>&1; then > + NC=ncat > + HAVE_NC=yes > +elif command -v nc > /dev/null 2>&1; then > + NC=nc > + HAVE_NC=yes > +else > + NC=nc > + HAVE_NC=no > +fi As you noted above, both Ubuntu and Fedora use links via "/etc/alternatives" to expose "ncat" as "nc", but they also retain the "ncat" Ubuntu 24.04: $ which ncat /usr/bin/ncat Fedora 43: $ which ncat /usr/sbin/ncat Given that many tests rely on ncat-specific features, wouldn't it be better to check only for presence of "ncat" and set `HAVE_NC=no` if it doesn't exist? Best regards, Martin. > > # Determine correct netcat option to quit on stdin EOF > -if nc --version 2>&1 | grep -q nmap.org; then > +if "$NC" --version 2>&1 | grep -q nmap.org; then > # Nmap netcat > NC_EOF_OPT="--send-only -w 5" > else > diff --git a/tests/system-common-macros.at b/tests/system-common-macros.at > index a7585eeb6..634052cbe 100644 > --- a/tests/system-common-macros.at > +++ b/tests/system-common-macros.at > @@ -209,7 +209,7 @@ m4_define([NETNS_START_DHCPD], > # test. > # > m4_define([NETNS_START_UDP_ECHO], > - [ip netns exec $1 nc -$2 -k -l -u -p $3 -d 0.1 -c 'cat' & echo $! > $4 > + [ip netns exec $1 $NC -$2 -k -l -u -p $3 -d 0.1 -c 'cat' & echo $! > $4 > echo "pkill -P \`cat $4\`; kill \`cat $4\`" >> cleanup > ] > ) > @@ -498,8 +498,8 @@ m4_define([NS_CHECK_CONNECTIVITY__], > check ovs-appctl revalidator/wait > > # Start a simple TCP and UDP echo server that replies with "ack > <received_msg>". > - NETNS_DAEMONIZE($ns_dst, [nc $proto -l -p 1235 -d 0.1 -c 'cat'], > [nc-$ns_dst-$ip-tcp.pid]) > - NETNS_DAEMONIZE($ns_dst, [nc $proto -l -u -p 1234 -d 0.1 -c 'cat'], > [nc-$ns_dst-$ip-udp.pid]) > + NETNS_DAEMONIZE($ns_dst, [$NC $proto -l -p 1235 -d 0.1 -c 'cat'], > [nc-$ns_dst-$ip-tcp.pid]) > + NETNS_DAEMONIZE($ns_dst, [$NC $proto -l -u -p 1234 -d 0.1 -c 'cat'], > [nc-$ns_dst-$ip-udp.pid]) > > # Ensure that the destination NS can be pinged on the specified IP > NS_CHECK_EXEC([$ns_src], [ping $proto -q -c 3 -i 0.3 -w 2 $ip | > FORMAT_PING], \ > @@ -512,8 +512,8 @@ m4_define([NS_CHECK_CONNECTIVITY__], > :> ./tcp_data > :> ./udp_data > > - NETNS_DAEMONIZE($ns_src, [nc $proto $ip 1235 -d 0.1 -c 'for i in $(seq 1 > 3); do echo "tcp_data $i"; read msg; echo "$msg" >>./tcp_data; done'], > [nc_$ns_src-$ip-tcp.pid]) > - NETNS_DAEMONIZE($ns_src, [nc $proto -u $ip 1234 -d 0.1 -c 'for i in > $(seq 1 3); do echo "udp_data $i"; read msg; echo "$msg" >>./udp_data; > done'], [nc_$ns_src-$ip-udp.pid]) > + NETNS_DAEMONIZE($ns_src, [$NC $proto $ip 1235 -d 0.1 -c 'for i in $(seq > 1 3); do echo "tcp_data $i"; read msg; echo "$msg" >>./tcp_data; done'], > [nc_$ns_src-$ip-tcp.pid]) > + NETNS_DAEMONIZE($ns_src, [$NC $proto -u $ip 1234 -d 0.1 -c 'for i in > $(seq 1 3); do echo "udp_data $i"; read msg; echo "$msg" >>./udp_data; > done'], [nc_$ns_src-$ip-udp.pid]) > > OVS_WAIT_FOR_OUTPUT([cat ./tcp_data], [0], [dnl > tcp_data 1 > diff --git a/tests/system-ovn-kmod.at b/tests/system-ovn-kmod.at > index 754926721..dcfba7e87 100644 > --- a/tests/system-ovn-kmod.at > +++ b/tests/system-ovn-kmod.at > @@ -107,8 +107,8 @@ check ovn-nbctl lr-lb-add R2 lb0-no-aff > check ovn-nbctl lr-lb-add R2 lb10-no-aff > > # Start webservers in 'foo1', 'bar1'. > -NETNS_DAEMONIZE([foo1], [nc -l -k 192.168.1.2 80], [nc-foo1.pid]) > -NETNS_DAEMONIZE([bar1], [nc -l -k 192.168.2.2 80], [nc-bar1.pid]) > +NETNS_DAEMONIZE([foo1], [$NC -l -k 192.168.1.2 80], [nc-foo1.pid]) > +NETNS_DAEMONIZE([bar1], [$NC -l -k 192.168.2.2 80], [nc-bar1.pid]) > > # Wait for ovn-controller to catch up. > check ovn-nbctl --wait=hv sync > @@ -122,7 +122,7 @@ grep 'nat(dst=192.168.2.2:80)']) > dnl Should work with the virtual IP address through NAT > OVS_WAIT_FOR_OUTPUT([ > for i in $(seq 1 5); do > - NS_EXEC([alice1], [nc -z 172.16.1.100 8080]) > + NS_EXEC([alice1], [$NC -z 172.16.1.100 8080]) > done > > dnl Each server should have at least one connection. > @@ -140,7 +140,7 @@ check ovn-nbctl --wait=sb set load_balancer lb10 > options:affinity_timeout=60 > > for i in $(seq 1 15); do > echo Request $i > - NS_CHECK_EXEC([alice1], [nc -z 172.16.1.100 8080]) > + NS_CHECK_EXEC([alice1], [$NC -z 172.16.1.100 8080]) > done > > dnl here we should have just one entry in the ct table > @@ -161,7 +161,7 @@ n2=$(ovs-ofctl dump-flows br-int table=$dnat |awk > '/priority=150,ct_state=\+new\ > echo $? > } > AT_CHECK([test $(check_affinity_flows) -eq 0]) > -NS_CHECK_EXEC([alice1], [nc -z 172.16.1.100 8081]) > +NS_CHECK_EXEC([alice1], [$NC -z 172.16.1.100 8081]) > > # Flush conntrack entries for easier output parsing of next test. > AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > @@ -181,7 +181,7 @@ check ovn-nbctl lr-lb-add R2 lb11-no-aff > # check we use both backends > OVS_WAIT_FOR_OUTPUT([ > for i in $(seq 1 5); do > - NS_EXEC([alice1], [nc -z 172.16.1.101 8080]) > + NS_EXEC([alice1], [$NC -z 172.16.1.101 8080]) > ovs-ofctl del-flows br-int table=OFTABLE_CHK_LB_AFFINITY > done > > @@ -191,7 +191,7 @@ OVS_WAIT_FOR_OUTPUT([ > > tcp,orig=(src=172.16.1.2,dst=172.16.1.101,sport=<cleared>,dport=<cleared>),reply=(src=192.168.1.2,dst=172.16.1.2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>) > > tcp,orig=(src=172.16.1.2,dst=172.16.1.101,sport=<cleared>,dport=<cleared>),reply=(src=192.168.2.2,dst=172.16.1.2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>) > ]) > -NS_CHECK_EXEC([alice1], [nc -z 172.16.1.101 8081]) > +NS_CHECK_EXEC([alice1], [$NC -z 172.16.1.101 8081]) > > dnl There shouldn't be any DP flow with both +est and ct_tuple4. Otherwise HW > dnl offload may not work. > @@ -200,7 +200,7 @@ AT_CHECK([ovs-appctl dpctl/dump-flows | grep 'ct_tuple4' > | grep '+est'], [1], [i > # Flush conntrack entries for easier output parsing of next test. > AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > > -NETNS_DAEMONIZE([bar2], [nc -l -k 192.168.2.3 80], [nc-bar2.pid]) > +NETNS_DAEMONIZE([bar2], [$NC -l -k 192.168.2.3 80], [nc-bar2.pid]) > > check ovn-nbctl lb-add lb2 192.168.2.100:8080 192.168.2.2:80,192.168.2.3:80 > check ovn-nbctl lb-add lb20 192.168.2.120:8080 192.168.2.2:80,192.168.2.3:80 > @@ -215,14 +215,14 @@ check ovn-nbctl ls-lb-add foo lb20-no-aff > > for i in $(seq 1 15); do > echo Request $i > - NS_CHECK_EXEC([foo1], [nc -z 192.168.2.100 8080]) > + NS_CHECK_EXEC([foo1], [$NC -z 192.168.2.100 8080]) > done > > AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(192.168.2.100) | > sed -e 's/zone=[[0-9]]*/zone=<cleared>/; > s/src=192.168.2.[[0-9]]/src=192.168.2.<cleared>/'], [0], [dnl > > tcp,orig=(src=192.168.1.2,dst=192.168.2.100,sport=<cleared>,dport=<cleared>),reply=(src=192.168.2.<cleared>,dst=192.168.1.2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>) > ]) > -NS_CHECK_EXEC([foo1], [nc -z 192.168.2.100 8081]) > +NS_CHECK_EXEC([foo1], [$NC -z 192.168.2.100 8081]) > > # Flush conntrack entries for easier output parsing of next test. > AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > @@ -242,7 +242,7 @@ AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > > OVS_WAIT_FOR_OUTPUT([ > for i in $(seq 1 5); do > - NS_EXEC([foo1], [nc -z 192.168.2.101 8080]) > + NS_EXEC([foo1], [$NC -z 192.168.2.101 8080]) > ovs-ofctl del-flows br-int table=OFTABLE_CHK_LB_AFFINITY > done > > @@ -252,7 +252,7 @@ OVS_WAIT_FOR_OUTPUT([ > > tcp,orig=(src=192.168.1.2,dst=192.168.2.101,sport=<cleared>,dport=<cleared>),reply=(src=192.168.2.2,dst=192.168.1.2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>) > > tcp,orig=(src=192.168.1.2,dst=192.168.2.101,sport=<cleared>,dport=<cleared>),reply=(src=192.168.2.3,dst=192.168.1.2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>) > ]) > -NS_CHECK_EXEC([foo1], [nc -z 192.168.2.101 8081]) > +NS_CHECK_EXEC([foo1], [$NC -z 192.168.2.101 8081]) > > NS_CHECK_EXEC([foo1], [ip neigh add 192.168.1.200 lladdr 00:00:01:01:02:03 > dev foo1], [0]) > check ovn-nbctl lb-add lb4 192.168.1.100:8080 192.168.1.2:80 > @@ -275,7 +275,7 @@ AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > > for i in $(seq 1 15); do > echo Request $i > - NS_CHECK_EXEC([foo1], [nc -z 192.168.1.100 8080]) > + NS_CHECK_EXEC([foo1], [$NC -z 192.168.1.100 8080]) > done > > dnl Each server should have at least one connection. > @@ -285,7 +285,7 @@ > tcp,orig=(src=192.168.1.2,dst=192.168.1.100,sport=<cleared>,dport=<cleared>),rep > > tcp,orig=(src=192.168.1.2,dst=192.168.1.2,sport=<cleared>,dport=<cleared>),reply=(src=192.168.1.2,dst=192.168.1.200,sport=<cleared>,dport=<cleared>),zone=<cleared>,protoinfo=(state=<cleared>) > > tcp,orig=(src=192.168.1.200,dst=192.168.1.2,sport=<cleared>,dport=<cleared>),reply=(src=192.168.1.2,dst=192.168.1.200,sport=<cleared>,dport=<cleared>),zone=<cleared>,protoinfo=(state=<cleared>) > ]) > -NS_CHECK_EXEC([foo1], [nc -z 192.168.1.100 8081]) > +NS_CHECK_EXEC([foo1], [$NC -z 192.168.1.100 8081]) > > dnl There shouldn't be any DP flow with both +est and ct_tuple4. Otherwise HW > dnl offload may not work. > @@ -416,13 +416,13 @@ OVS_WAIT_UNTIL([ovs-ofctl -O OpenFlow13 dump-groups > br-int | \ > grep 'nat(dst=\[[fd11::2\]]:80)']) > > # Start webservers in 'foo1', 'bar1'. > -NETNS_DAEMONIZE([foo1], [nc -l -k fd11::2 80], [nc-foo1.pid]) > -NETNS_DAEMONIZE([bar1], [nc -l -k fd12::2 80], [nc-bar1.pid]) > +NETNS_DAEMONIZE([foo1], [$NC -l -k fd11::2 80], [nc-foo1.pid]) > +NETNS_DAEMONIZE([bar1], [$NC -l -k fd12::2 80], [nc-bar1.pid]) > > dnl Should work with the virtual IP address through NAT > OVS_WAIT_FOR_OUTPUT([ > for i in $(seq 1 5); do > - NS_EXEC([alice1], [nc -z fd30::1 8080]) > + NS_EXEC([alice1], [$NC -z fd30::1 8080]) > done > > dnl Each server should have at least one connection. > @@ -431,7 +431,7 @@ OVS_WAIT_FOR_OUTPUT([ > > tcp,orig=(src=fd72::2,dst=fd30::1,sport=<cleared>,dport=<cleared>),reply=(src=fd11::2,dst=fd72::2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>) > > tcp,orig=(src=fd72::2,dst=fd30::1,sport=<cleared>,dport=<cleared>),reply=(src=fd12::2,dst=fd72::2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>) > ]) > -NS_CHECK_EXEC([alice1], [nc -z fd30::1 8081]) > +NS_CHECK_EXEC([alice1], [$NC -z fd30::1 8081]) > > # Flush conntrack entries for easier output parsing of next test. > AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > @@ -441,7 +441,7 @@ check ovn-nbctl --wait=sb set load_balancer lb10 > options:affinity_timeout=60 > > for i in $(seq 1 15); do > echo Request $i > - NS_CHECK_EXEC([alice1], [nc -z fd30::1 8080]) > + NS_CHECK_EXEC([alice1], [$NC -z fd30::1 8080]) > done > > dnl here we should have just one entry in the ct table > @@ -462,7 +462,7 @@ n2=$(ovs-ofctl dump-flows br-int table=$dnat |awk > '/priority=150,ct_state=\+new\ > echo $? > } > AT_CHECK([test $(check_affinity_flows) -eq 0]) > -NS_CHECK_EXEC([alice1], [nc -z fd30::1 8081]) > +NS_CHECK_EXEC([alice1], [$NC -z fd30::1 8081]) > > # Flush conntrack entries for easier output parsing of next test. > AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > @@ -482,7 +482,7 @@ check ovn-nbctl lr-lb-add R2 lb11-no-aff > # check we use both backends > OVS_WAIT_FOR_OUTPUT([ > for i in $(seq 1 5); do > - NS_EXEC([alice1], [nc -z fd30::2 8080]) > + NS_EXEC([alice1], [$NC -z fd30::2 8080]) > ovs-ofctl del-flows br-int table=OFTABLE_CHK_LB_AFFINITY > done > > @@ -492,12 +492,12 @@ OVS_WAIT_FOR_OUTPUT([ > > tcp,orig=(src=fd72::2,dst=fd30::2,sport=<cleared>,dport=<cleared>),reply=(src=fd11::2,dst=fd72::2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>) > > tcp,orig=(src=fd72::2,dst=fd30::2,sport=<cleared>,dport=<cleared>),reply=(src=fd12::2,dst=fd72::2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>) > ]) > -NS_CHECK_EXEC([alice1], [nc -z fd30::2 8081]) > +NS_CHECK_EXEC([alice1], [$NC -z fd30::2 8081]) > > # Flush conntrack entries for easier output parsing of next test. > AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > > -NETNS_DAEMONIZE([bar2], [nc -l -k fd12::3 80], [nc-bar2.pid]) > +NETNS_DAEMONIZE([bar2], [$NC -l -k fd12::3 80], [nc-bar2.pid]) > > check ovn-nbctl lb-add lb2 [[fd12::a]]:8080 [[fd12::2]]:80,[[fd12::3]]:80 > check ovn-nbctl lb-add lb20 [[fd12::2a]]:8080 [[fd12::2]]:80,[[fd12::3]]:80 > @@ -512,7 +512,7 @@ check ovn-nbctl ls-lb-add foo lb20-no-aff > > for i in $(seq 1 15); do > echo Request $i > - NS_CHECK_EXEC([foo1], [nc -z fd12::a 8080]) > + NS_CHECK_EXEC([foo1], [$NC -z fd12::a 8080]) > done > > dnl here we should have just one entry in the ct table > @@ -520,7 +520,7 @@ AT_CHECK([ovs-appctl dpctl/dump-conntrack | > FORMAT_CT(fd12::a) | grep -v fe80 | > sed -e 's/zone=[[0-9]]*/zone=<cleared>/; > s/src=fd12::[[0-9]]/src=fd12::<cleared>/'], [0], [dnl > > tcp,orig=(src=fd11::2,dst=fd12::a,sport=<cleared>,dport=<cleared>),reply=(src=fd12::<cleared>,dst=fd11::2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>) > ]) > -NS_CHECK_EXEC([foo1], [nc -z fd12::a 8081]) > +NS_CHECK_EXEC([foo1], [$NC -z fd12::a 8081]) > > AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > > @@ -537,7 +537,7 @@ check ovn-nbctl ls-lb-add foo lb30-no-aff > > OVS_WAIT_FOR_OUTPUT([ > for i in $(seq 1 5); do > - NS_EXEC([foo1], [nc -z fd12::b 8080]) > + NS_EXEC([foo1], [$NC -z fd12::b 8080]) > ovs-ofctl del-flows br-int table=OFTABLE_CHK_LB_AFFINITY > done > > @@ -546,7 +546,7 @@ OVS_WAIT_FOR_OUTPUT([ > > tcp,orig=(src=fd11::2,dst=fd12::b,sport=<cleared>,dport=<cleared>),reply=(src=fd12::2,dst=fd11::2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>) > > tcp,orig=(src=fd11::2,dst=fd12::b,sport=<cleared>,dport=<cleared>),reply=(src=fd12::3,dst=fd11::2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>) > ]) > -NS_CHECK_EXEC([foo1], [nc -z fd12::b 8081]) > +NS_CHECK_EXEC([foo1], [$NC -z fd12::b 8081]) > > NS_CHECK_EXEC([foo1], [ip -6 neigh add fd11::b lladdr 00:00:01:01:02:03 dev > foo1], [0]) > check ovn-nbctl --wait=sb lb-add lb4 [[fd11::a]]:8080 [[fd11::2]]:80 > @@ -569,7 +569,7 @@ AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > > OVS_WAIT_FOR_OUTPUT([ > for i in $(seq 1 5); do > - NS_EXEC([foo1], [nc -z fd11::a 8080]) > + NS_EXEC([foo1], [$NC -z fd11::a 8080]) > done > > dnl Each server should have at least one connection. > @@ -579,7 +579,7 @@ > tcp,orig=(src=fd11::2,dst=fd11::2,sport=<cleared>,dport=<cleared>),reply=(src=fd > > tcp,orig=(src=fd11::2,dst=fd11::a,sport=<cleared>,dport=<cleared>),reply=(src=fd11::2,dst=fd11::2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>) > > tcp,orig=(src=fd11::b,dst=fd11::2,sport=<cleared>,dport=<cleared>),reply=(src=fd11::2,dst=fd11::b,sport=<cleared>,dport=<cleared>),zone=<cleared>,protoinfo=(state=<cleared>) > ]) > -NS_CHECK_EXEC([foo1], [nc -z fd11::a 8081]) > +NS_CHECK_EXEC([foo1], [$NC -z fd11::a 8081]) > > OVN_CLEANUP_CONTROLLER([hv1]) > > @@ -663,7 +663,7 @@ wait_for_ports_up > check ovn-nbctl --wait=hv sync > > # Create service that listens for TCP and UDP > -NETNS_DAEMONIZE([vm2], [nc -l -k 1235], [nc0.pid]) > +NETNS_DAEMONIZE([vm2], [$NC -l -k 1235], [nc0.pid]) > > test_icmp() { > # Make sure that a ping works as expected > @@ -687,8 +687,8 @@ > icmp,orig=(src=173.0.1.2,dst=172.16.0.102,id=<cleared>,type=8,code=0),reply=(src > } > > test_udp() { > - NETNS_DAEMONIZE([vm2], [nc -l -u 1234], [nc1.pid]) > - NS_CHECK_EXEC([vm1], [nc -u 30.0.0.1 1234 -p 1222 -z]) > + NETNS_DAEMONIZE([vm2], [$NC -l -u 1234], [nc1.pid]) > + NS_CHECK_EXEC([vm1], [$NC -u 30.0.0.1 1234 -p 1222 -z]) > kill $(cat nc1.pid) > > AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(30.0.0.1) | \ > @@ -704,7 +704,7 @@ > udp,orig=(src=173.0.1.2,dst=172.16.0.102,sport=<cleared>,dport=<cleared>),reply= > } > > test_tcp() { > - NS_CHECK_EXEC([vm1], [nc 30.0.0.1 1235 -z]) > + NS_CHECK_EXEC([vm1], [$NC 30.0.0.1 1235 -z]) > > AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(30.0.0.1) | \ > sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl > @@ -931,12 +931,12 @@ printf %8000s > datafile > printf %32000s > frag_test_srv.expected > printf %16000s > frag_test_client.expected > > -NETNS_DAEMONIZE([lsp], [nc -e "$(command -v cat)" -u -v -l 42.42.42.1 2021 > -o udp_frag_test_srv.rcvd], [lsp-nc.pid]) > +NETNS_DAEMONIZE([lsp], [$NC -e "$(command -v cat)" -u -v -l 42.42.42.1 2021 > -o udp_frag_test_srv.rcvd], [lsp-nc.pid]) > > # Send 2 client requests with the same port so that the 2nd one > # is categorized as ct.est and not ct.new. > -NS_CHECK_EXEC([lsp], [(cat datafile; sleep 3) | nc -u 88.88.88.88 4040 -p > 20000 -o udp_frag_test_c1.recvd], [0], [ignore], [ignore]) > -NS_CHECK_EXEC([lsp], [(cat datafile; sleep 3) | nc -u 88.88.88.88 4040 -p > 20000 -o udp_frag_test_c2.recvd], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([lsp], [(cat datafile; sleep 3) | $NC -u 88.88.88.88 4040 -p > 20000 -o udp_frag_test_c1.recvd], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([lsp], [(cat datafile; sleep 3) | $NC -u 88.88.88.88 4040 -p > 20000 -o udp_frag_test_c2.recvd], [0], [ignore], [ignore]) > > check cmp frag_test_srv.expected udp_frag_test_srv.rcvd > check cmp frag_test_client.expected udp_frag_test_c1.recvd > @@ -993,12 +993,12 @@ printf %8000s > datafile > printf %32000s > frag_test_srv.expected > printf %16000s > frag_test_client.expected > > -NETNS_DAEMONIZE([lsp], [nc -e "$(command -v cat)" -u -v -l 4200::1 2021 -o > udp_frag_test_srv.rcvd], [lsp-nc.pid]) > +NETNS_DAEMONIZE([lsp], [$NC -e "$(command -v cat)" -u -v -l 4200::1 2021 -o > udp_frag_test_srv.rcvd], [lsp-nc.pid]) > > # Send 2 client requests with the same port so that the 2nd one > # is categorized as ct.est and not ct.new. > -NS_CHECK_EXEC([lsp], [(cat datafile; sleep 3) | nc -6 -u 8800::0088 4040 -p > 20000 -o udp_frag_test_c1.recvd], [0], [ignore], [ignore]) > -NS_CHECK_EXEC([lsp], [(cat datafile; sleep 3) | nc -6 -u 8800::0088 4040 -p > 20000 -o udp_frag_test_c2.recvd], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([lsp], [(cat datafile; sleep 3) | $NC -6 -u 8800::0088 4040 -p > 20000 -o udp_frag_test_c1.recvd], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([lsp], [(cat datafile; sleep 3) | $NC -6 -u 8800::0088 4040 -p > 20000 -o udp_frag_test_c2.recvd], [0], [ignore], [ignore]) > > check cmp frag_test_srv.expected udp_frag_test_srv.rcvd > check cmp frag_test_client.expected udp_frag_test_c1.recvd > @@ -1536,14 +1536,14 @@ NETNS_START_TCPDUMP([pod], [-vnne "ip or icmp"], > [pod]) > echo -e "Hello UDP\nHello UDP" > udp.expected > echo -e "Hello TCP\nHello TCP" > tcp.expected > > -NETNS_DAEMONIZE([pod], [nc -e "$(command -v cat)" -v -l -u -o server_udp.log > 192.168.100.5 2323], [nc1.pid]) > -NETNS_DAEMONIZE([pod], [nc -e "$(command -v cat)" -v -l -o server_tcp.log > 192.168.100.5 2324], [nc2.pid]) > +NETNS_DAEMONIZE([pod], [$NC -e "$(command -v cat)" -v -l -u -o > server_udp.log 192.168.100.5 2323], [nc1.pid]) > +NETNS_DAEMONIZE([pod], [$NC -e "$(command -v cat)" -v -l -o server_tcp.log > 192.168.100.5 2324], [nc2.pid]) > > -NS_CHECK_EXEC([mgmt], [(echo "Hello UDP"; sleep 3) | nc -u -s 172.16.100.2 > -o client_udp.log 172.16.0.5 5656], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([mgmt], [(echo "Hello UDP"; sleep 3) | $NC -u -s 172.16.100.2 > -o client_udp.log 172.16.0.5 5656], [0], [ignore], [ignore]) > check cmp server_udp.log udp.expected > check cmp client_udp.log udp.expected > > -NS_CHECK_EXEC([mgmt], [(echo "Hello TCP"; sleep 3) | nc -s 172.16.100.2 -o > client_tcp.log 172.16.0.5 5657], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([mgmt], [(echo "Hello TCP"; sleep 3) | $NC -s 172.16.100.2 -o > client_tcp.log 172.16.0.5 5657], [0], [ignore], [ignore]) > check cmp server_tcp.log tcp.expected > check cmp client_tcp.log tcp.expected > > @@ -1604,7 +1604,7 @@ ADD_NAMESPACES(vm2) > ADD_VETH(vm2, vm2, br-int, "42.42.42.1/24", "00:00:00:00:00:02", > "42.42.42.2") > > dnl Start a server on vm1. > -NETNS_DAEMONIZE([vm1], [nc -l -k 41.41.41.1 8080], [vm1.pid]) > +NETNS_DAEMONIZE([vm1], [$NC -l -k 41.41.41.1 8080], [vm1.pid]) > > dnl Wait for ovn-controller to catch up. > wait_for_ports_up > @@ -1612,7 +1612,7 @@ check ovn-nbctl --wait=hv sync > > ovs-appctl revalidator/pause > on_exit 'ovs-appctl revalidator/resume' > -NS_CHECK_EXEC([vm2], [nc -z 42.42.42.2 8080], 0, [ignore], [ignore]) > +NS_CHECK_EXEC([vm2], [$NC -z 42.42.42.2 8080], 0, [ignore], [ignore]) > > dnl For each DP flow with ct action, make sure a CT entry exists as > established > dnl for the zone the ct action is taken. Otherwise it means HW offload is > diff --git a/tests/system-ovn.at b/tests/system-ovn.at > index dd1e77a44..8d20b952a 100644 > --- a/tests/system-ovn.at > +++ b/tests/system-ovn.at > @@ -1481,7 +1481,7 @@ AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > echo "foo" > foo > for i in `seq 1 20`; do > echo Request $i > - ip netns exec foo1 nc -p 30000 30.0.0.2 8000 < foo > + ip netns exec foo1 $NC -p 30000 30.0.0.2 8000 < foo > done > > dnl Only one backend should be chosen. > @@ -1496,7 +1496,7 @@ OVS_WAIT_UNTIL([ > AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > for i in `seq 1 20`; do > echo Request $i > - ip netns exec foo1 nc 30.0.0.2 8000 < foo > + ip netns exec foo1 $NC 30.0.0.2 8000 < foo > done > > dnl Only one backend should be chosen as eth_src and ip_src is fixed. > @@ -1726,7 +1726,7 @@ AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > echo "foo" > foo > for i in `seq 1 20`; do > echo Request $i > - ip netns exec foo1 nc -6 -p 30000 fd03::2 8000 < foo > + ip netns exec foo1 $NC -6 -p 30000 fd03::2 8000 < foo > done > > # Only one backend should be chosen. Since the source port is fixed, > @@ -1742,7 +1742,7 @@ OVS_WAIT_UNTIL([ > AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > for i in `seq 1 20`; do > echo Request $i > - ip netns exec foo1 nc -6 fd03::2 8000 < foo > + ip netns exec foo1 $NC -6 fd03::2 8000 < foo > done > > dnl Only one backend should be chosen as eth_src and ip_src is fixed. > @@ -1956,7 +1956,7 @@ AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > echo "foo" > foo > for i in $(seq 1 20); do > echo Request $i > - NS_EXEC([foo1], [nc -p 30000 30.0.0.1 8080 < foo]) > + NS_EXEC([foo1], [$NC -p 30000 30.0.0.1 8080 < foo]) > done > > # Only one backend should be chosen. > @@ -1968,7 +1968,7 @@ > tcp,orig=(src=192.168.1.2,dst=30.0.0.1,sport=<cleared>,dport=<cleared>),reply=(s > > for i in $(seq 1 20); do > echo Request $i > - NS_EXEC([foo1], [nc -6 -p 30000 fd03::2 8090 < foo]) > + NS_EXEC([foo1], [$NC -6 -p 30000 fd03::2 8090 < foo]) > done > > # Only one backend should be chosen. > @@ -1993,7 +1993,7 @@ done > > AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > for p in $(seq 3 20); do > - NS_EXEC([foo1], [nc -s 192.168.1.$p 30.0.0.1 8080 < foo]) > + NS_EXEC([foo1], [$NC -s 192.168.1.$p 30.0.0.1 8080 < foo]) > done > > bar1_ct=$(ovs-appctl dpctl/dump-conntrack | grep 172.16.1.2 -c) > @@ -2006,7 +2006,7 @@ AT_CHECK([test $bar3_ct -gt 0]) > > for p in $(seq 3 20); do > h=$(printf '%02x' $p) > - NS_EXEC([foo1], [nc -6 -s fd01::$h fd03::2 8090 < foo]) > + NS_EXEC([foo1], [$NC -6 -s fd01::$h fd03::2 8090 < foo]) > done > > bar1_ct=$(ovs-appctl dpctl/dump-conntrack | grep fd02::2 -c) > @@ -4574,7 +4574,7 @@ udp2_pid=$(cat udp2.pid) > > wait_row_count Service_Monitor 2 status=online > > -NETNS_DAEMONIZE(sw-ext-p1, [nc -4 -u 172.16.0.42 53 -d 0.1 -c 'for i in > $(seq 1 5); do echo "udp_data $i"; read msg; echo "$msg" >>./udp_data_1; > done'], [udp1_client.pid]) > +NETNS_DAEMONIZE(sw-ext-p1, [$NC -4 -u 172.16.0.42 53 -d 0.1 -c 'for i in > $(seq 1 5); do echo "udp_data $i"; read msg; echo "$msg" >>./udp_data_1; > done'], [udp1_client.pid]) > > OVS_WAIT_FOR_OUTPUT([cat ./udp_data_1], [0], [dnl > udp_data 1 > @@ -4595,7 +4595,7 @@ NS_CHECK_EXEC([sw0-p1], [pkill -P $udp1_pid; kill > $udp1_pid]) > wait_row_count Service_Monitor 1 logical_port=sw0-p1 status=offline > wait_row_count Service_Monitor 1 logical_port=sw0-p2 status=online > > -NETNS_DAEMONIZE(sw-ext-p1, [nc -4 -u 172.16.0.42 53 -d 0.1 -c 'for i in > $(seq 1 5); do echo "udp_data $i"; read msg; echo "$msg" >>./udp_data_2; > done'], [udp2_client.pid]) > +NETNS_DAEMONIZE(sw-ext-p1, [$NC -4 -u 172.16.0.42 53 -d 0.1 -c 'for i in > $(seq 1 5); do echo "udp_data $i"; read msg; echo "$msg" >>./udp_data_2; > done'], [udp2_client.pid]) > > OVS_WAIT_FOR_OUTPUT([cat ./udp_data_2], [0], [dnl > udp_data 1 > @@ -4769,7 +4769,7 @@ udp2_pid=$(cat udp2.pid) > > wait_row_count Service_Monitor 2 status=online > > -NETNS_DAEMONIZE(sw-ext-p1, [nc -6 -u fd20::42 53 -d 0.1 -c 'for i in $(seq 1 > 5); do echo "udp_data $i"; read msg; echo "$msg" >>./udp_data_1; done'], > [udp1_client.pid]) > +NETNS_DAEMONIZE(sw-ext-p1, [$NC -6 -u fd20::42 53 -d 0.1 -c 'for i in $(seq > 1 5); do echo "udp_data $i"; read msg; echo "$msg" >>./udp_data_1; done'], > [udp1_client.pid]) > > OVS_WAIT_FOR_OUTPUT([cat ./udp_data_1], [0], [dnl > udp_data 1 > @@ -4790,7 +4790,7 @@ NS_CHECK_EXEC([sw0-p1], [pkill -P $udp1_pid; kill > $udp1_pid]) > wait_row_count Service_Monitor 1 logical_port=sw0-p1 status=offline > wait_row_count Service_Monitor 1 logical_port=sw0-p2 status=online > > -NETNS_DAEMONIZE(sw-ext-p1, [nc -6 -u fd20::42 53 -d 0.1 -c 'for i in $(seq 1 > 5); do echo "udp_data $i"; read msg; echo "$msg" >>./udp_data_2; done'], > [udp2_client.pid]) > +NETNS_DAEMONIZE(sw-ext-p1, [$NC -6 -u fd20::42 53 -d 0.1 -c 'for i in $(seq > 1 5); do echo "udp_data $i"; read msg; echo "$msg" >>./udp_data_2; done'], > [udp2_client.pid]) > > OVS_WAIT_FOR_OUTPUT([cat ./udp_data_2], [0], [dnl > udp_data 1 > @@ -5255,21 +5255,21 @@ ADD_VETH(lsp, lsp, br-int, "42.42.42.1/24", > "00:00:00:00:00:01", \ > check ovn-nbctl --wait=hv -t 3 sync > > # Start IPv4 TCP server on lsp. > -NETNS_DAEMONIZE([lsp], [nc -l -k 42.42.42.1 4041], [lsp0.pid]) > +NETNS_DAEMONIZE([lsp], [$NC -l -k 42.42.42.1 4041], [lsp0.pid]) > > # Check that IPv4 TCP hairpin connection succeeds on both VIPs. > -NS_CHECK_EXEC([lsp], [nc 88.88.88.88 8080 -z], [0], [ignore], [ignore]) > -NS_CHECK_EXEC([lsp], [nc 88.88.88.89 8080 -z], [0], [ignore], [ignore]) > -NS_CHECK_EXEC([lsp], [nc 88.88.88.90 4041 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([lsp], [$NC 88.88.88.88 8080 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([lsp], [$NC 88.88.88.89 8080 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([lsp], [$NC 88.88.88.90 4041 -z], [0], [ignore], [ignore]) > > # Capture IPv4 UDP hairpinned packets. > filter="dst 42.42.42.1 and dst port 2021 and udp" > NETNS_START_TCPDUMP([lsp], [-nn -c 3 -i lsp ${filter}], [lsp]) > > # Generate IPv4 UDP hairpin traffic. > -NS_CHECK_EXEC([lsp], [echo a | nc -u 88.88.88.88 4040], [ignore], [ignore], > [ignore]) > -NS_CHECK_EXEC([lsp], [echo a | nc -u 88.88.88.89 4040], [ignore], [ignore], > [ignore]) > -NS_CHECK_EXEC([lsp], [echo a | nc -u 88.88.88.90 2021], [ignore], [ignore], > [ignore]) > +NS_CHECK_EXEC([lsp], [echo a | $NC -u 88.88.88.88 4040], [ignore], [ignore], > [ignore]) > +NS_CHECK_EXEC([lsp], [echo a | $NC -u 88.88.88.89 4040], [ignore], [ignore], > [ignore]) > +NS_CHECK_EXEC([lsp], [echo a | $NC -u 88.88.88.90 2021], [ignore], [ignore], > [ignore]) > > # Check hairpin traffic. > OVS_WAIT_UNTIL([ > @@ -5284,8 +5284,8 @@ check ovn-nbctl --apply-after-lb acl-add pg0 from-lport > 1002 "ip4 && udp" allow > check ovn-nbctl --wait=hv sync > > ## Check that IPv4 TCP hairpin connection succeeds on both VIPs. > -NS_CHECK_EXEC([lsp], [nc 88.88.88.88 8080 -z], [0], [ignore], [ignore]) > -NS_CHECK_EXEC([lsp], [nc 88.88.88.89 8080 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([lsp], [$NC 88.88.88.88 8080 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([lsp], [$NC 88.88.88.89 8080 -z], [0], [ignore], [ignore]) > > OVN_CLEANUP_CONTROLLER([hv1]) > > @@ -5402,19 +5402,19 @@ zone_lsp2_id=$(ovn-appctl -t ovn-controller > ct-zone-list | grep lsp2 | cut -d ' > AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > > # Start IPv4 TCP and UDP server on lsp1. > -NETNS_DAEMONIZE([lsp1], [nc -l -k 192.168.0.101 4041], [lsp1_tcp.pid]) > -NETNS_DAEMONIZE([lsp1], [nc -u -l 192.168.0.101 4042], [lsp1_udp.pid]) > +NETNS_DAEMONIZE([lsp1], [$NC -l -k 192.168.0.101 4041], [lsp1_tcp.pid]) > +NETNS_DAEMONIZE([lsp1], [$NC -u -l 192.168.0.101 4042], [lsp1_udp.pid]) > > # Create another server without load balancer to check that it > # does not create conntrack records. > -NETNS_DAEMONIZE([lsp1], [nc -l -k 192.168.0.101 4043], [lsp1_non_lb.pid]) > +NETNS_DAEMONIZE([lsp1], [$NC -l -k 192.168.0.101 4043], [lsp1_non_lb.pid]) > > # Send the packet to VIP from private network. > NETNS_START_TCPDUMP([lsp1], [-nnnei lsp1], [lsp1]) > -NS_CHECK_EXEC([lsp1], [nc -z 192.168.0.1 8080], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([lsp1], [$NC -z 192.168.0.1 8080], [0], [ignore], [ignore]) > > # Udp connections > -NS_CHECK_EXEC([lsp1], [echo a | nc -u 192.168.0.1 8081], [ignore], [ignore], > [ignore]) > +NS_CHECK_EXEC([lsp1], [echo a | $NC -u 192.168.0.1 8081], [ignore], > [ignore], [ignore]) > > # Check conntrack zone of lsp1 has tcp entry for lb > AT_CHECK([ovs-appctl dpctl/dump-conntrack zone=$zone_lsp1_id | \ > @@ -5427,7 +5427,7 @@ > udp,orig=(src=192.168.0.101,dst=192.168.0.1,sport=<cleared>,dport=<cleared>),rep > AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > > # Do the same sending a packet. > -NS_CHECK_EXEC([lsp1], [echo a | nc 192.168.0.1 8080], [0], [ignore], > [ignore]) > +NS_CHECK_EXEC([lsp1], [echo a | $NC 192.168.0.1 8080], [0], [ignore], > [ignore]) > > # Check conntrack zone of lsp1 has tcp entry for lb > AT_CHECK([ovs-appctl dpctl/dump-conntrack zone=$zone_lsp1_id | \ > @@ -5438,7 +5438,7 @@ > tcp,orig=(src=192.168.0.101,dst=192.168.0.1,sport=<cleared>,dport=<cleared>),rep > AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > > # Check that internal traffic not related to lb doesn't create conntrack > records > -NS_CHECK_EXEC([external], [nc -z 192.168.0.101 4043], [0], []) > +NS_CHECK_EXEC([external], [$NC -z 192.168.0.101 4043], [0], []) > > AT_CHECK([ovs-appctl dpctl/dump-conntrack zone=$zone_lsp1_id | > FORMAT_CT(192.168.0.101) | sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], > [dnl]) > > @@ -5497,21 +5497,21 @@ ADD_VETH(lsp, lsp, br-int, "4200::1/64", > "00:00:00:00:00:01", "4200::00ff", "nod > check ovn-nbctl --wait=hv -t 3 sync > > # Start IPv6 TCP server on lsp. > -NETNS_DAEMONIZE([lsp], [nc -l -k 4200::1 4041], [lsp0.pid]) > +NETNS_DAEMONIZE([lsp], [$NC -l -k 4200::1 4041], [lsp0.pid]) > > # Check that IPv6 TCP hairpin connection succeeds on both VIPs. > -NS_CHECK_EXEC([lsp], [nc 8800::0088 8080 -z], [0], [ignore], [ignore]) > -NS_CHECK_EXEC([lsp], [nc 8800::0089 8080 -z], [0], [ignore], [ignore]) > -NS_CHECK_EXEC([lsp], [nc 8800::0090 4041 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([lsp], [$NC 8800::0088 8080 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([lsp], [$NC 8800::0089 8080 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([lsp], [$NC 8800::0090 4041 -z], [0], [ignore], [ignore]) > > # Capture IPv6 UDP hairpinned packets. > filter="dst 4200::1 and dst port 2021 and udp" > NETNS_START_TCPDUMP([lsp], [-nn -c 3 -i lsp $filter], [lsp]) > > # Generate IPv6 UDP hairpin traffic. > -NS_CHECK_EXEC([lsp], [echo a | nc -u 8800::0088 4040], [ignore], [ignore], > [ignore]) > -NS_CHECK_EXEC([lsp], [echo a | nc -u 8800::0089 4040], [ignore], [ignore], > [ignore]) > -NS_CHECK_EXEC([lsp], [echo a | nc -u 8800::0090 2021], [ignore], [ignore], > [ignore]) > +NS_CHECK_EXEC([lsp], [echo a | $NC -u 8800::0088 4040], [ignore], [ignore], > [ignore]) > +NS_CHECK_EXEC([lsp], [echo a | $NC -u 8800::0089 4040], [ignore], [ignore], > [ignore]) > +NS_CHECK_EXEC([lsp], [echo a | $NC -u 8800::0090 2021], [ignore], [ignore], > [ignore]) > > # Check hairpin traffic. > OVS_WAIT_UNTIL([ > @@ -5526,8 +5526,8 @@ check ovn-nbctl --apply-after-lb acl-add pg0 from-lport > 1000 "ip6" drop > check ovn-nbctl --wait=hv sync > > # Check that IPv6 TCP hairpin connection succeeds on both VIPs. > -NS_CHECK_EXEC([lsp], [nc 8800::0088 8080 -z], [0], [ignore], [ignore]) > -NS_CHECK_EXEC([lsp], [nc 8800::0089 8080 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([lsp], [$NC 8800::0088 8080 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([lsp], [$NC 8800::0089 8080 -z], [0], [ignore], [ignore]) > > OVN_CLEANUP_CONTROLLER([hv1]) > > @@ -5619,12 +5619,12 @@ ADD_VETH(sw1-p1-rej, sw1-p1-rej, br-int, > "20.0.0.3/24", "40:54:00:00:00:03", \ > NETNS_START_TCPDUMP([sw0-p1-rej], [-nn -i sw0-p1-rej tcp], [sw0-p1-rej-ip4]) > > OVS_WAIT_UNTIL([ > - ip netns exec sw0-p1-rej nc -vz 10.0.0.4 80 2>&1 | grep -i 'connection > refused' > + ip netns exec sw0-p1-rej $NC -vz 10.0.0.4 80 2>&1 | grep -i 'connection > refused' > ]) > > # Now send traffic to port 84 > OVS_WAIT_UNTIL([ > - ip netns exec sw0-p1-rej nc -vz 10.0.0.4 84 2>&1 | grep -i 'connection > refused' > + ip netns exec sw0-p1-rej $NC -vz 10.0.0.4 84 2>&1 | grep -i 'connection > refused' > ]) > > OVS_WAIT_UNTIL([ > @@ -5642,7 +5642,7 @@ OVS_WAIT_UNTIL([ > NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -i sw0-p2-rej tcp port 80], > [sw0-p2-rej-ip6]) > > OVS_WAIT_UNTIL([ > - ip netns exec sw0-p2-rej nc -vz6 aef0::3 80 2>&1 | grep -i 'connection > refused' > + ip netns exec sw0-p2-rej $NC -vz6 aef0::3 80 2>&1 | grep -i 'connection > refused' > ]) > > > @@ -5656,7 +5656,7 @@ check ovn-nbctl acl-add sw1 to-lport 1004 "ip" > allow-related > check ovn-nbctl --log acl-add pg0 to-lport 1004 "outport == @pg0 && ip && > tcp && tcp.dst == 84" reject > > OVS_WAIT_UNTIL([ > - ip netns exec sw1-p1-rej nc -vz 10.0.0.4 84 2>&1 | grep -i 'connection > refused' > + ip netns exec sw1-p1-rej $NC -vz 10.0.0.4 84 2>&1 | grep -i 'connection > refused' > ]) > > > @@ -5666,7 +5666,7 @@ NETNS_START_TCPDUMP([sw0-p1-rej], [-nn -i sw0-p1-rej > icmp], [sw0-p1-rej-icmp]) > > printf '.%.0s' {1..100} > foo > OVS_WAIT_UNTIL([ > - ip netns exec sw0-p1-rej nc -u 10.0.0.4 90 < foo > + ip netns exec sw0-p1-rej $NC -u 10.0.0.4 90 < foo > c=$(cat sw0-p1-rej-icmp.tcpdump | grep \ > "10.0.0.4 > 10.0.0.3: ICMP 10.0.0.4 udp port 90 unreachable" | uniq | wc -l) > test $c -ge 1 > @@ -5679,7 +5679,7 @@ NETNS_START_TCPDUMP([sw0-p1-rej], [-nn -i sw0-p1-rej > udp port 94], [sw0-p1-rej-u > NETNS_START_TCPDUMP([sw0-p1-rej], [-nn -i sw0-p1-rej icmp], > [sw0-p1-rej-icmp]) > > OVS_WAIT_UNTIL([ > - ip netns exec sw0-p1-rej nc -u 10.0.0.4 94 < foo > + ip netns exec sw0-p1-rej $NC -u 10.0.0.4 94 < foo > c=$(cat sw0-p1-rej-icmp.tcpdump | grep \ > "10.0.0.4 > 10.0.0.3: ICMP 10.0.0.4 udp port 94 unreachable" | uniq | wc -l) > test $c -ge 1 > @@ -5690,7 +5690,7 @@ NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -i sw0-p2-rej > udp port 90], [sw0-p2-rej-i > NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -i sw0-p2-rej icmp6], > [sw0-p2-rej-icmp6]) > > OVS_WAIT_UNTIL([ > - ip netns exec sw0-p2-rej nc -u -6 aef0::3 90 < foo > + ip netns exec sw0-p2-rej $NC -u -6 aef0::3 90 < foo > c=$(cat sw0-p2-rej-icmp6.tcpdump | grep \ > "IP6 aef0::3 > aef0::4: ICMP6, destination unreachable, unreachable port, \ > aef0::3 udp port 90" | uniq | wc -l) > @@ -5704,7 +5704,7 @@ NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -i sw0-p2-rej > udp port 94], [sw0-p2-rej-i > NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -i sw0-p2-rej icmp6], > [sw0-p2-rej-icmp6]) > > OVS_WAIT_UNTIL([ > - ip netns exec sw0-p2-rej nc -u -6 aef0::3 94 < foo > + ip netns exec sw0-p2-rej $NC -u -6 aef0::3 94 < foo > c=$(cat sw0-p2-rej-icmp6.tcpdump | grep \ > "IP6 aef0::3 > aef0::4: ICMP6, destination unreachable, unreachable port, \ > aef0::3 udp port 94" | uniq | wc -l) > @@ -5717,11 +5717,11 @@ check ovn-nbctl pg-add pg0 sw0-p1-rej sw0-p2-rej > check ovn-nbctl --log acl-add pg0 from-lport 1004 "inport == @pg0 && ip && > (tcp || udp)" reject > > OVS_WAIT_UNTIL([ > - ip netns exec sw0-p1-rej nc -vz 10.0.0.4 80 2>&1 | grep -i 'connection > refused' > + ip netns exec sw0-p1-rej $NC -vz 10.0.0.4 80 2>&1 | grep -i 'connection > refused' > ]) > > OVS_WAIT_UNTIL([ > - ip netns exec sw0-p2-rej nc -vz6 aef0::3 80 2>&1 | grep -i 'connection > refused' > + ip netns exec sw0-p2-rej $NC -vz6 aef0::3 80 2>&1 | grep -i 'connection > refused' > ]) > > rm -f *.tcpdump > @@ -5730,7 +5730,7 @@ NETNS_START_TCPDUMP([sw0-p1-rej], [-nn -i sw0-p1-rej > icmp], [sw0-p1-rej-icmp]) > > printf '.%.0s' {1..100} > foo > OVS_WAIT_UNTIL([ > - ip netns exec sw0-p1-rej nc -u 10.0.0.4 90 < foo > + ip netns exec sw0-p1-rej $NC -u 10.0.0.4 90 < foo > c=$(cat sw0-p1-rej-icmp.tcpdump | grep \ > "10.0.0.4 > 10.0.0.3: ICMP 10.0.0.4 udp port 90 unreachable" | uniq | wc -l) > test $c -ge 1 > @@ -5742,7 +5742,7 @@ rm -f *.tcpdump > NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -i sw0-p2-rej icmp6], > [sw0-p2-rej-icmp6]) > > OVS_WAIT_UNTIL([ > - ip netns exec sw0-p2-rej nc -u -6 aef0::3 90 < foo > + ip netns exec sw0-p2-rej $NC -u -6 aef0::3 90 < foo > c=$(cat sw0-p2-rej-icmp6.tcpdump | grep \ > "IP6 aef0::3 > aef0::4: ICMP6, destination unreachable, unreachable port, \ > aef0::3 udp port 90" | uniq | wc -l) > @@ -5840,12 +5840,12 @@ ADD_VETH(sw1-p1-rej, sw1-p1-rej, br-int, > "20.0.0.3/24", "40:54:00:00:00:03", \ > NETNS_START_TCPDUMP([sw0-p1-rej], [-nn -i sw0-p1-rej tcp], [sw0-p1-rej-ip4]) > > OVS_WAIT_UNTIL([ > - ip netns exec sw0-p1-rej nc -vz 10.0.0.4 80 2>&1 | grep -i 'connection > refused' > + ip netns exec sw0-p1-rej $NC -vz 10.0.0.4 80 2>&1 | grep -i 'connection > refused' > ]) > > # Now send traffic to port 84 > OVS_WAIT_UNTIL([ > - ip netns exec sw0-p1-rej nc -vz 10.0.0.4 84 2>&1 | grep -i 'connection > refused' > + ip netns exec sw0-p1-rej $NC -vz 10.0.0.4 84 2>&1 | grep -i 'connection > refused' > ]) > > OVS_WAIT_UNTIL([ > @@ -5863,7 +5863,7 @@ OVS_WAIT_UNTIL([ > NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -i sw0-p2-rej tcp port 80], > [sw0-p2-rej-ip6]) > > OVS_WAIT_UNTIL([ > - ip netns exec sw0-p2-rej nc -vz6 aef0::3 80 2>&1 | grep -i 'connection > refused' > + ip netns exec sw0-p2-rej $NC -vz6 aef0::3 80 2>&1 | grep -i 'connection > refused' > ]) > > > @@ -5880,7 +5880,7 @@ check ovn-nbctl acl-add sw1 to-lport 1004 "ip" > allow-related > check ovn-nbctl --log acl-add pg0 to-lport 1004 "outport == @pg0 && ip && > tcp && tcp.dst == 84" reject > > OVS_WAIT_UNTIL([ > - ip netns exec sw1-p1-rej nc -vz 10.0.0.4 84 2>&1 | grep -i 'connection > refused' > + ip netns exec sw1-p1-rej $NC -vz 10.0.0.4 84 2>&1 | grep -i 'connection > refused' > ]) > > # Now test for IPv4 UDP. > @@ -5889,7 +5889,7 @@ NETNS_START_TCPDUMP([sw0-p1-rej], [-nn -i sw0-p1-rej > icmp], [sw0-p1-rej-icmp]) > > printf '.%.0s' {1..100} > foo > OVS_WAIT_UNTIL([ > - ip netns exec sw0-p1-rej nc -u 10.0.0.4 90 < foo > + ip netns exec sw0-p1-rej $NC -u 10.0.0.4 90 < foo > c=$(cat sw0-p1-rej-icmp.tcpdump | grep \ > "10.0.0.4 > 10.0.0.3: ICMP 10.0.0.4 udp port 90 unreachable" | uniq | wc -l) > test $c -ge 1 > @@ -5902,7 +5902,7 @@ NETNS_START_TCPDUMP([sw0-p1-rej], [-nn -i sw0-p1-rej > udp port 94], [sw0-p1-rej-u > NETNS_START_TCPDUMP([sw0-p1-rej], [-nn -i sw0-p1-rej icmp], > [sw0-p1-rej-icmp]) > > OVS_WAIT_UNTIL([ > - ip netns exec sw0-p1-rej nc -u 10.0.0.4 94 < foo > + ip netns exec sw0-p1-rej $NC -u 10.0.0.4 94 < foo > c=$(cat sw0-p1-rej-icmp.tcpdump | grep \ > "10.0.0.4 > 10.0.0.3: ICMP 10.0.0.4 udp port 94 unreachable" | uniq | wc -l) > test $c -ge 1 > @@ -5913,7 +5913,7 @@ NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -i sw0-p2-rej > udp port 90], [sw0-p2-rej-i > NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -i sw0-p2-rej icmp6], > [sw0-p2-rej-icmp6]) > > OVS_WAIT_UNTIL([ > - ip netns exec sw0-p2-rej nc -u -6 aef0::3 90 < foo > + ip netns exec sw0-p2-rej $NC -u -6 aef0::3 90 < foo > c=$(cat sw0-p2-rej-icmp6.tcpdump | grep \ > "IP6 aef0::3 > aef0::4: ICMP6, destination unreachable, unreachable port, \ > aef0::3 udp port 90" | uniq | wc -l) > @@ -5927,7 +5927,7 @@ NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -i sw0-p2-rej > udp port 94], [sw0-p2-rej-i > NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -i sw0-p2-rej icmp6], > [sw0-p2-rej-icmp6]) > > OVS_WAIT_UNTIL([ > - ip netns exec sw0-p2-rej nc -u -6 aef0::3 94 < foo > + ip netns exec sw0-p2-rej $NC -u -6 aef0::3 94 < foo > c=$(cat sw0-p2-rej-icmp6.tcpdump | grep \ > "IP6 aef0::3 > aef0::4: ICMP6, destination unreachable, unreachable port, \ > aef0::3 udp port 94" | uniq | wc -l) > @@ -5940,11 +5940,11 @@ check ovn-nbctl pg-add pg0 sw0-p1-rej sw0-p2-rej > check ovn-nbctl --log --apply-after-lb acl-add pg0 from-lport 1004 "inport > == @pg0 && ip && (tcp || udp)" reject > > OVS_WAIT_UNTIL([ > - ip netns exec sw0-p1-rej nc -vz 10.0.0.4 80 2>&1 | grep -i 'connection > refused' > + ip netns exec sw0-p1-rej $NC -vz 10.0.0.4 80 2>&1 | grep -i 'connection > refused' > ]) > > OVS_WAIT_UNTIL([ > - ip netns exec sw0-p2-rej nc -vz6 aef0::3 80 2>&1 | grep -i 'connection > refused' > + ip netns exec sw0-p2-rej $NC -vz6 aef0::3 80 2>&1 | grep -i 'connection > refused' > ]) > > kill $(pidof tcpdump) > @@ -5954,7 +5954,7 @@ NETNS_START_TCPDUMP([sw0-p1-rej], [-nn -i sw0-p1-rej > icmp], [sw0-p1-rej-icmp]) > > printf '.%.0s' {1..100} > foo > OVS_WAIT_UNTIL([ > - ip netns exec sw0-p1-rej nc -u 10.0.0.4 90 < foo > + ip netns exec sw0-p1-rej $NC -u 10.0.0.4 90 < foo > c=$(cat sw0-p1-rej-icmp.tcpdump | grep \ > "10.0.0.4 > 10.0.0.3: ICMP 10.0.0.4 udp port 90 unreachable" | uniq | wc -l) > test $c -ge 1 > @@ -5966,7 +5966,7 @@ rm -f *.tcpdump > NETNS_START_TCPDUMP([sw0-p2-rej], [-nn -i sw0-p2-rej icmp6], > [sw0-p2-rej-icmp6]) > > OVS_WAIT_UNTIL([ > - ip netns exec sw0-p2-rej nc -u -6 aef0::3 90 < foo > + ip netns exec sw0-p2-rej $NC -u -6 aef0::3 90 < foo > c=$(cat sw0-p2-rej-icmp6.tcpdump | grep \ > "IP6 aef0::3 > aef0::4: ICMP6, destination unreachable, unreachable port, \ > aef0::3 udp port 90" | uniq | wc -l) > @@ -6179,21 +6179,21 @@ NS_CHECK_EXEC([sw0-p2-lbc], [ip route delete default > via 10.0.0.1 dev sw0-p2-lbc > NS_CHECK_EXEC([sw0-p2-lbc], [ip route add default via 20.0.0.1 dev sw1p2], > [0]) > > # Start nc server on sw1p2 (sw0-p2-lbc is the parent) > -NETNS_DAEMONIZE([sw0-p2-lbc], [nc -l -k 20.0.0.4 80], [nc0.pid]) > +NETNS_DAEMONIZE([sw0-p2-lbc], [$NC -l -k 20.0.0.4 80], [nc0.pid]) > > # Send the packet to backend > -NS_CHECK_EXEC([sw0-p1-lbc], [nc -z 20.0.0.4 80], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([sw0-p1-lbc], [$NC -z 20.0.0.4 80], [0], [ignore], [ignore]) > > # Send the packet to VIP. > -NS_CHECK_EXEC([sw0-p1-lbc], [nc -z 30.0.0.10 80], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([sw0-p1-lbc], [$NC -z 30.0.0.10 80], [0], [ignore], [ignore]) > > # Now add an ACL in sw1. > check ovn-nbctl --wait=hv acl-add sw1 to-lport 2002 "ip" allow-related > # Send the packet to backend > -NS_CHECK_EXEC([sw0-p1-lbc], [nc -z 20.0.0.4 80], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([sw0-p1-lbc], [$NC -z 20.0.0.4 80], [0], [ignore], [ignore]) > > # Send the packet to VIP. > -NS_CHECK_EXEC([sw0-p1-lbc], [nc -z 30.0.0.10 80], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([sw0-p1-lbc], [$NC -z 30.0.0.10 80], [0], [ignore], [ignore]) > > OVN_CLEANUP_CONTROLLER([hv1]) > > @@ -6254,13 +6254,13 @@ wait_for_ports_up > check ovn-nbctl --wait=hv sync > > # Start IPv4 TCP server on vm1. > -NETNS_DAEMONIZE([vm1], [nc -k -l 42.42.42.2 4242], [nc-vm1.pid]) > +NETNS_DAEMONIZE([vm1], [$NC -k -l 42.42.42.2 4242], [nc-vm1.pid]) > > # Make sure connecting to the VIP works. > -NS_CHECK_EXEC([vm2], [nc 66.66.66.66 666 -p 2000 -z], [0], [ignore], > [ignore]) > +NS_CHECK_EXEC([vm2], [$NC 66.66.66.66 666 -p 2000 -z], [0], [ignore], > [ignore]) > > # Start IPv4 TCP connection to VIP from vm2. > -NS_CHECK_EXEC([vm2], [nc 66.66.66.66 666 -p 2001 -z], [0], [ignore], > [ignore]) > +NS_CHECK_EXEC([vm2], [$NC 66.66.66.66 666 -p 2001 -z], [0], [ignore], > [ignore]) > > # Check conntrack. We expect two entries: > # - one in vm1's zone (firewall) > @@ -6278,7 +6278,7 @@ > tcp,orig=(src=42.42.42.3,dst=66.66.66.66,sport=<clnt_s_port>,dport=666),reply=(s > > # Start IPv4 TCP connection to backend IP from vm2 which would require > # additional source port translation to avoid a tuple conflict. > -NS_CHECK_EXEC([vm2], [nc 42.42.42.2 4242 -p 2001 -z], [0], [ignore], > [ignore]) > +NS_CHECK_EXEC([vm2], [$NC 42.42.42.2 4242 -p 2001 -z], [0], [ignore], > [ignore]) > > # Check conntrack. We expect three entries: > # - one in vm1's zone (firewall) - reused from the previous connection. > @@ -6354,13 +6354,13 @@ wait_for_ports_up > check ovn-nbctl --wait=hv sync > > # Start IPv6 TCP server on vm1. > -NETNS_DAEMONIZE([vm1], [nc -k -l 4242::2 4242], [nc-vm1.pid]) > +NETNS_DAEMONIZE([vm1], [$NC -k -l 4242::2 4242], [nc-vm1.pid]) > > # Make sure connecting to the VIP works. > -NS_CHECK_EXEC([vm2], [nc 6666::1 666 -p 2000 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([vm2], [$NC 6666::1 666 -p 2000 -z], [0], [ignore], [ignore]) > > # Start IPv6 TCP connection to VIP from vm2. > -NS_CHECK_EXEC([vm2], [nc 6666::1 666 -p 2001 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([vm2], [$NC 6666::1 666 -p 2001 -z], [0], [ignore], [ignore]) > > # Check conntrack. We expect two entries: > # - one in vm1's zone (firewall) > @@ -6378,7 +6378,7 @@ > tcp,orig=(src=4242::3,dst=6666::1,sport=<clnt_s_port>,dport=666),reply=(src=4242 > > # Start IPv6 TCP connection to backend IP from vm2 which would require > # additional source port translation to avoid a tuple conflict. > -NS_CHECK_EXEC([vm2], [nc 4242::2 4242 -p 2001 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([vm2], [$NC 4242::2 4242 -p 2001 -z], [0], [ignore], [ignore]) > > # Check conntrack. We expect three entries: > # - one in vm1's zone (firewall) - reused from the previous connection. > @@ -6594,8 +6594,8 @@ check ovn-nbctl --wait=hv sync > > on_exit 'ovs-ofctl dump-flows br-int' > > -NETNS_DAEMONIZE([alice1], [nc -l -k 80], [alice1.pid]) > -NS_CHECK_EXEC([bob1], [nc -z 10.0.0.2 80], [0]) > +NETNS_DAEMONIZE([alice1], [$NC -l -k 80], [alice1.pid]) > +NS_CHECK_EXEC([bob1], [$NC -z 10.0.0.2 80], [0]) > NS_CHECK_EXEC([bob1], [ping -q -c 3 -i 0.3 -w 2 10.0.0.2 | FORMAT_PING], \ > [0], [dnl > 3 packets transmitted, 3 received, 0% packet loss, time 0ms > @@ -6631,7 +6631,7 @@ check ovn-nbctl set Logical_Switch_Port r2-ext \ > # Wait for ovn-controller before sending traffic > check ovn-nbctl --wait=hv sync > > -NS_CHECK_EXEC([bob1], [nc -z 10.0.0.2 80], [0]) > +NS_CHECK_EXEC([bob1], [$NC -z 10.0.0.2 80], [0]) > NS_CHECK_EXEC([bob1], [ping -q -c 3 -i 0.3 -w 2 10.0.0.2 | FORMAT_PING], \ > [0], [dnl > 3 packets transmitted, 3 received, 0% packet loss, time 0ms > @@ -6662,8 +6662,8 @@ AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > NS_CHECK_EXEC([bob1], [ip r d default via 172.16.0.2 dev bob1], [0]) > NS_CHECK_EXEC([bob1], [ip r a default via 172.16.0.3 dev bob1], [0]) > > -NETNS_DAEMONIZE([bob1], [nc -l -k 8080], [bob1.pid]) > -NS_CHECK_EXEC([alice1], [(echo "Packet 1"; sleep 1; echo "Packet 2") | nc > 172.16.0.1 8080], [0]) > +NETNS_DAEMONIZE([bob1], [$NC -l -k 8080], [bob1.pid]) > +NS_CHECK_EXEC([alice1], [(echo "Packet 1"; sleep 1; echo "Packet 2") | $NC > 172.16.0.1 8080], [0]) > NS_CHECK_EXEC([alice1], [ping -q -c 3 -i 0.3 -w 2 172.16.0.1 | FORMAT_PING], > \ > [0], [dnl > 3 packets transmitted, 3 received, 0% packet loss, time 0ms > @@ -6680,8 +6680,8 @@ > tcp,orig=(src=10.0.0.2,dst=172.16.0.1,sport=<cleared>,dport=<cleared>),reply=(sr > check ovn-nbctl --policy="src-ip" lr-route-del R1 10.0.0.0/24 20.0.0.3 > check ovn-nbctl --wait=hv sync > AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > -NETNS_DAEMONIZE([bob1], [nc -l -k 8081], [bob2.pid]) > -NS_CHECK_EXEC([alice1], [(echo "Packet 1"; sleep 1; echo "Packet 2") | nc > 172.16.0.1 8081], [0]) > +NETNS_DAEMONIZE([bob1], [$NC -l -k 8081], [bob2.pid]) > +NS_CHECK_EXEC([alice1], [(echo "Packet 1"; sleep 1; echo "Packet 2") | $NC > 172.16.0.1 8081], [0]) > NS_CHECK_EXEC([alice1], [ping -q -c 3 -i 0.3 -w 2 172.16.0.1 | FORMAT_PING], > \ > [0], [dnl > 3 packets transmitted, 3 received, 0% packet loss, time 0ms > @@ -6823,8 +6823,8 @@ check ovn-nbctl --wait=hv sync > > on_exit 'ovs-ofctl dump-flows br-int' > > -NETNS_DAEMONIZE([alice1], [nc -6 -l -k 80], [alice1.pid]) > -NS_CHECK_EXEC([bob1], [nc -6 -z fd01::2 80], [0]) > +NETNS_DAEMONIZE([alice1], [$NC -6 -l -k 80], [alice1.pid]) > +NS_CHECK_EXEC([bob1], [$NC -6 -z fd01::2 80], [0]) > NS_CHECK_EXEC([bob1], [ping -q -c 3 -i 0.3 -w 2 fd01::2 | FORMAT_PING], \ > [0], [dnl > 3 packets transmitted, 3 received, 0% packet loss, time 0ms > @@ -6859,7 +6859,7 @@ check ovn-nbctl set Logical_Router_Port R2_ext > mac='"00:00:10:01:02:04"' > check ovn-nbctl --wait=hv set Logical_Switch_Port r2-ext \ > type=router options:router-port=R2_ext addresses='"00:00:10:01:02:04"' > > -NS_CHECK_EXEC([bob1], [nc -6 -z fd01::2 80], [0]) > +NS_CHECK_EXEC([bob1], [$NC -6 -z fd01::2 80], [0]) > NS_CHECK_EXEC([bob1], [ping -q -c 3 -i 0.3 -w 2 fd01::2 | FORMAT_PING], \ > [0], [dnl > 3 packets transmitted, 3 received, 0% packet loss, time 0ms > @@ -6889,8 +6889,8 @@ test $(ovs-ofctl dump-flows br-int | grep -c > 'table=OFTABLE_ECMP_NH, n_packets') > > AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > > -NETNS_DAEMONIZE([bob1], [nc -6 -l -k 8080], [bob1.pid]) > -NS_CHECK_EXEC([alice1], [(echo "Packet 1"; sleep 1; echo "Packet 2") | nc -6 > fd07::1 8080], [0]) > +NETNS_DAEMONIZE([bob1], [$NC -6 -l -k 8080], [bob1.pid]) > +NS_CHECK_EXEC([alice1], [(echo "Packet 1"; sleep 1; echo "Packet 2") | $NC > -6 fd07::1 8080], [0]) > NS_CHECK_EXEC([alice1], [ping -q -c 3 -i 0.3 -w 2 fd07::1 | FORMAT_PING], \ > [0], [dnl > 3 packets transmitted, 3 received, 0% packet loss, time 0ms > @@ -6907,8 +6907,8 @@ > tcp,orig=(src=fd01::2,dst=fd07::1,sport=<cleared>,dport=<cleared>),reply=(src=fd > check ovn-nbctl --policy="src-ip" lr-route-del R1 fd01::/126 fd02::3 > check ovn-nbctl --wait=hv sync > AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > -NETNS_DAEMONIZE([bob1], [nc -6 -l -k 8081], [bob2.pid]) > -NS_CHECK_EXEC([alice1], [(echo "Packet 1"; sleep 1; echo "Packet 2") | nc -6 > fd07::1 8081], [0]) > +NETNS_DAEMONIZE([bob1], [$NC -6 -l -k 8081], [bob2.pid]) > +NS_CHECK_EXEC([alice1], [(echo "Packet 1"; sleep 1; echo "Packet 2") | $NC > -6 fd07::1 8081], [0]) > NS_CHECK_EXEC([alice1], [ping -q -c 3 -i 0.3 -w 2 fd07::1 | FORMAT_PING], \ > [0], [dnl > 3 packets transmitted, 3 received, 0% packet loss, time 0ms > @@ -8985,7 +8985,7 @@ ADD_VETH(sw11, sw11, br-int, "192.168.2.2/24", > "f0:00:00:02:02:03", \ > check ovn-nbctl lsp-add sw1 sw11 \ > -- lsp-set-addresses sw11 "f0:00:00:02:02:03 192.168.2.2" > > -NETNS_DAEMONIZE([sw01], [nc -k -l 8000], [nc-sw01.pid]) > +NETNS_DAEMONIZE([sw01], [$NC -k -l 8000], [nc-sw01.pid]) > > test_ping() { > NS_CHECK_EXEC([$1], [ping -q -c 1 $2 -w 2 | FORMAT_PING], \ > @@ -8998,7 +8998,7 @@ test_ping() { > check ovn-nbctl --wait=hv lr-nat-add R1 snat 172.16.1.21 192.168.2.0/24 > > echo "foo" > foo > -NS_CHECK_EXEC([sw11], [nc 192.168.1.2 8000 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([sw11], [$NC 192.168.1.2 8000 -z], [0], [ignore], [ignore]) > test_ping sw11 192.168.1.2 > > # Ensure nat has been hit > @@ -9015,7 +9015,7 @@ AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > > # SNAT and DNAT. using Logical IP > check ovn-nbctl --wait=hv lr-nat-add R1 dnat_and_snat 172.16.1.2 192.168.1.2 > -NS_CHECK_EXEC([sw11], [nc 192.168.1.2 8000 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([sw11], [$NC 192.168.1.2 8000 -z], [0], [ignore], [ignore]) > test_ping sw11 192.168.1.2 > > # Ensure conntrack entry is present > @@ -9029,7 +9029,7 @@ > tcp,orig=(src=192.168.2.2,dst=192.168.1.2,sport=<cleared>,dport=<cleared>),reply > AT_CHECK([ovs-appctl dpctl/flush-conntrack]) > > # SNAT and DNAT. using floating IP > -NS_CHECK_EXEC([sw11], [nc 172.16.1.2 8000 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([sw11], [$NC 172.16.1.2 8000 -z], [0], [ignore], [ignore]) > test_ping sw11 172.16.1.2 > > # Ensure conntrack entry is present > @@ -9435,8 +9435,8 @@ test_related_traffic() { > NETNS_START_TCPDUMP([server], [-U -i server -w server.pcap], [tcpdump1]) > > # Setup a dummy UDP listeners so we don't get "port unreachable". > - NETNS_DAEMONIZE([client], [nc -l -u 1], [nc0.pid]) > - NETNS_DAEMONIZE([server], [nc -l -u 2], [nc1.pid]) > + NETNS_DAEMONIZE([client], [$NC -l -u 1], [nc0.pid]) > + NETNS_DAEMONIZE([server], [$NC -l -u 2], [nc1.pid]) > > # Send UDP client -> server > check ovs-ofctl packet-out br-int > "in_port=ovs-client,packet=$client_udp,actions=resubmit(,0)" > @@ -9647,28 +9647,28 @@ name: 'vport4' value: '999' > ]) > > # Start IPv4 TCP server on vm1. > -NETNS_DAEMONIZE([vm1], [nc -k -l 42.42.42.2 4242], [nc-vm1.pid]) > +NETNS_DAEMONIZE([vm1], [$NC -k -l 42.42.42.2 4242], [nc-vm1.pid]) > > NETNS_START_TCPDUMP([vm1], > [-n -i vm1 -nnqleX -c6 udp and dst 42.42.42.2 and dst port 4343], > [vm1]) > > # Make sure connecting to the VIP works (hairpin, via ls and via lr). > -NS_CHECK_EXEC([vm1], [nc 66.66.66.66 666 -z], [0], [ignore], [ignore]) > -NS_CHECK_EXEC([vm2], [nc 66.66.66.66 666 -z], [0], [ignore], [ignore]) > -NS_CHECK_EXEC([vm3], [nc 66.66.66.66 666 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([vm1], [$NC 66.66.66.66 666 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([vm2], [$NC 66.66.66.66 666 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([vm3], [$NC 66.66.66.66 666 -z], [0], [ignore], [ignore]) > > -NS_CHECK_EXEC([vm1], [echo a | nc -u 66.66.66.66 777], [ignore], [ignore], > [ignore]) > -NS_CHECK_EXEC([vm2], [echo a | nc -u 66.66.66.66 777], [ignore], [ignore], > [ignore]) > -NS_CHECK_EXEC([vm3], [echo a | nc -u 66.66.66.66 777], [ignore], [ignore], > [ignore]) > +NS_CHECK_EXEC([vm1], [echo a | $NC -u 66.66.66.66 777], [ignore], [ignore], > [ignore]) > +NS_CHECK_EXEC([vm2], [echo a | $NC -u 66.66.66.66 777], [ignore], [ignore], > [ignore]) > +NS_CHECK_EXEC([vm3], [echo a | $NC -u 66.66.66.66 777], [ignore], [ignore], > [ignore]) > > -NS_CHECK_EXEC([vm1], [nc 66.66.66.66 888 -z], [0], [ignore], [ignore]) > -NS_CHECK_EXEC([vm2], [nc 66.66.66.66 888 -z], [0], [ignore], [ignore]) > -NS_CHECK_EXEC([vm3], [nc 66.66.66.66 888 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([vm1], [$NC 66.66.66.66 888 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([vm2], [$NC 66.66.66.66 888 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([vm3], [$NC 66.66.66.66 888 -z], [0], [ignore], [ignore]) > > -NS_CHECK_EXEC([vm1], [echo a | nc -u 66.66.66.66 999], [ignore], [ignore], > [ignore]) > -NS_CHECK_EXEC([vm2], [echo a | nc -u 66.66.66.66 999], [ignore], [ignore], > [ignore]) > -NS_CHECK_EXEC([vm3], [echo a | nc -u 66.66.66.66 999], [ignore], [ignore], > [ignore]) > +NS_CHECK_EXEC([vm1], [echo a | $NC -u 66.66.66.66 999], [ignore], [ignore], > [ignore]) > +NS_CHECK_EXEC([vm2], [echo a | $NC -u 66.66.66.66 999], [ignore], [ignore], > [ignore]) > +NS_CHECK_EXEC([vm3], [echo a | $NC -u 66.66.66.66 999], [ignore], [ignore], > [ignore]) > > OVS_WAIT_UNTIL([ > requests=`grep "UDP" -c vm1.tcpdump` > @@ -9785,28 +9785,28 @@ name: 'vport4' value: '999' > ]) > > # Start IPv6 TCP server on vm1. > -NETNS_DAEMONIZE([vm1], [nc -k -l 4242::2 4242], [nc-vm1.pid]) > +NETNS_DAEMONIZE([vm1], [$NC -k -l 4242::2 4242], [nc-vm1.pid]) > > NETNS_START_TCPDUMP([vm1], > [-n -i vm1 -nnqleX -c6 udp and dst 4242::2 and dst port 4343], > [vm1]) > > # Make sure connecting to the VIP works (hairpin, via ls and via lr). > -NS_CHECK_EXEC([vm1], [nc 6666::1 666 -z], [0], [ignore], [ignore]) > -NS_CHECK_EXEC([vm2], [nc 6666::1 666 -z], [0], [ignore], [ignore]) > -NS_CHECK_EXEC([vm3], [nc 6666::1 666 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([vm1], [$NC 6666::1 666 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([vm2], [$NC 6666::1 666 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([vm3], [$NC 6666::1 666 -z], [0], [ignore], [ignore]) > > -NS_CHECK_EXEC([vm1], [echo a | nc -u 6666::1 777], [ignore], [ignore], > [ignore]) > -NS_CHECK_EXEC([vm2], [echo a | nc -u 6666::1 777], [ignore], [ignore], > [ignore]) > -NS_CHECK_EXEC([vm3], [echo a | nc -u 6666::1 777], [ignore], [ignore], > [ignore]) > +NS_CHECK_EXEC([vm1], [echo a | $NC -u 6666::1 777], [ignore], [ignore], > [ignore]) > +NS_CHECK_EXEC([vm2], [echo a | $NC -u 6666::1 777], [ignore], [ignore], > [ignore]) > +NS_CHECK_EXEC([vm3], [echo a | $NC -u 6666::1 777], [ignore], [ignore], > [ignore]) > > -NS_CHECK_EXEC([vm1], [nc 6666::1 888 -z], [0], [ignore], [ignore]) > -NS_CHECK_EXEC([vm2], [nc 6666::1 888 -z], [0], [ignore], [ignore]) > -NS_CHECK_EXEC([vm3], [nc 6666::1 888 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([vm1], [$NC 6666::1 888 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([vm2], [$NC 6666::1 888 -z], [0], [ignore], [ignore]) > +NS_CHECK_EXEC([vm3], [$NC 6666::1 888 -z], [0], [ignore], [ignore]) > > -NS_CHECK_EXEC([vm1], [echo a | nc -u 6666::1 999], [ignore], [ignore], > [ignore]) > -NS_CHECK_EXEC([vm2], [echo a | nc -u 6666::1 999], [ignore], [ignore], > [ignore]) > -NS_CHECK_EXEC([vm3], [echo a | nc -u 6666::1 999], [ignore], [ignore], > [ignore]) > +NS_CHECK_EXEC([vm1], [echo a | $NC -u 6666::1 999], [ignore], [ignore], > [ignore]) > +NS_CHECK_EXEC([vm2], [echo a | $NC -u 6666::1 999], [ignore], [ignore], > [ignore]) > +NS_CHECK_EXEC([vm3], [echo a | $NC -u 6666::1 999], [ignore], [ignore], > [ignore]) > > OVS_WAIT_UNTIL([ > requests=`grep "UDP" -c vm1.tcpdump` > @@ -12199,7 +12199,7 @@ on_exit "ovs-ofctl -O OpenFlow13 dump-flows br-int" > dnl Should work with the virtual IP address through NAT > for i in `seq 1 20`; do > echo Request $i > - NS_CHECK_EXEC([alice1], [nc --sctp --recv-only 30.0.0.1 12345 > > client$i.log]) > + NS_CHECK_EXEC([alice1], [$NC --sctp --recv-only 30.0.0.1 12345 > > client$i.log]) > done > > dnl Each server should have at least one connection. > @@ -12213,7 +12213,7 @@ > sctp,orig=(src=172.16.1.2,dst=30.0.0.1,sport=<cleared>,dport=<cleared>),reply=(s > dnl Test load-balancing that includes L4 ports in NAT. > for i in `seq 1 20`; do > echo Request $i > - NS_CHECK_EXEC([alice1], [nc --sctp --recv-only 30.0.0.2 8000 > > clients$i.log]) > + NS_CHECK_EXEC([alice1], [$NC --sctp --recv-only 30.0.0.2 8000 > > clients$i.log]) > done > > dnl Each server should have at least one connection. > @@ -12256,7 +12256,7 @@ OVS_WAIT_UNTIL([ovs-ofctl -O OpenFlow13 dump-flows > br-int table=$(ovn-debug lflo > dnl Test load-balancing that includes L4 ports in NAT. > for i in `seq 1 20`; do > echo Request $i > - NS_CHECK_EXEC([alice1], [nc --sctp --recv-only 30.0.0.2 8000 > > clients$i.log]) > + NS_CHECK_EXEC([alice1], [$NC --sctp --recv-only 30.0.0.2 8000 > > clients$i.log]) > done > > dnl Each server should have at least one connection. > @@ -12319,12 +12319,12 @@ check ovn-nbctl lb-add lb-test 43.43.43.43:80 > 42.42.42.1:8080,42.42.42.2:8080 tc > dnl Start a server on vm1. > ADD_NAMESPACES(vm1) > ADD_VETH(vm1, vm1, br-int, "42.42.42.1/24", "00:00:00:00:00:01", > "42.42.42.3") > -NETNS_DAEMONIZE([vm1], [nc -l -k 42.42.42.1 8080], [vm1.pid]) > +NETNS_DAEMONIZE([vm1], [$NC -l -k 42.42.42.1 8080], [vm1.pid]) > > dnl Start a server on vm2. > ADD_NAMESPACES(vm2) > ADD_VETH(vm2, vm2, br-int, "42.42.42.2/24", "00:00:00:00:00:02", > "42.42.42.3") > -NETNS_DAEMONIZE([vm2], [nc -l -k 42.42.42.2 8080], [vm2.pid]) > +NETNS_DAEMONIZE([vm2], [$NC -l -k 42.42.42.2 8080], [vm2.pid]) > > dnl Wait for ovn-controller to catch up. > wait_for_ports_up > @@ -12332,7 +12332,7 @@ check ovn-nbctl --wait=hv sync > > dnl Test the connection. > OVS_WAIT_UNTIL([ > - ip netns exec vm1 nc -z 43.43.43.43 80 &> /dev/null > + ip netns exec vm1 $NC -z 43.43.43.43 80 &> /dev/null > ]) > > OVS_WAIT_UNTIL([test $(ovs-ofctl dump-flows br-int | grep > 'table=OFTABLE_CHK_LB_AFFINITY, n_packets' -c) -eq 1]) > @@ -12607,18 +12607,18 @@ ADD_NAMESPACES(server) > ADD_VETH(server, server, br-int, "2000::10/64", "f0:00:0f:01:02:03", \ > "2000::1", "nodad", "192.168.200.10/24", "192.168.200.1") > > -NETNS_DAEMONIZE([server], [nc -l -u 192.168.200.10 4242 > /dev/null], > [serverv4.pid]) > -NETNS_DAEMONIZE([server], [nc -l -u 2000::10 4243 > /dev/null], > [serverv6.pid]) > +NETNS_DAEMONIZE([server], [$NC -l -u 192.168.200.10 4242 > /dev/null], > [serverv4.pid]) > +NETNS_DAEMONIZE([server], [$NC -l -u 2000::10 4243 > /dev/null], > [serverv6.pid]) > > NETNS_START_TCPDUMP([client], [-l -U -i client -vnne udp], [client]) > NETNS_START_TCPDUMP([server], [-l -U -i server -vnne udp], [server]) > > check ovs-appctl dpctl/flush-conntrack > > -NS_CHECK_EXEC([client], [nc -z -u 192.168.100.20 4242], [ignore], [ignore], > [ignore]) > +NS_CHECK_EXEC([client], [$NC -z -u 192.168.100.20 4242], [ignore], [ignore], > [ignore]) > OVS_WAIT_UNTIL([grep -q "192.168.200.10" server.tcpdump]) > > -NS_CHECK_EXEC([client], [nc -z -u 1000::20 4243]) > +NS_CHECK_EXEC([client], [$NC -z -u 1000::20 4243]) > OVS_WAIT_UNTIL([grep -q "2000::10" server.tcpdump]) > > zone_id=$(ovn-appctl -t ovn-controller ct-zone-list | grep lr_dnat | cut -d > ' ' -f2) > @@ -12824,10 +12824,10 @@ ADD_VETH(vm2, vm2, br-int, "192.168.200.20/24", > "f0:00:0f:01:02:04", "192.168.20 > ADD_NAMESPACES(vm3) > ADD_VETH(vm3, vm3, br-int, "192.168.200.30/24", "f0:00:0f:01:02:05", > "192.168.200.1") > > -NETNS_DAEMONIZE([vm0], [nc -l -k 192.168.200.10 4242], [server0.pid]) > -NETNS_DAEMONIZE([vm1], [nc -l -k 192.168.100.10 4242], [server1.pid]) > -NETNS_DAEMONIZE([vm2], [nc -l -k 192.168.200.20 4242], [server2.pid]) > -NETNS_DAEMONIZE([vm3], [nc -l -k 192.168.200.30 4242], [server3.pid]) > +NETNS_DAEMONIZE([vm0], [$NC -l -k 192.168.200.10 4242], [server0.pid]) > +NETNS_DAEMONIZE([vm1], [$NC -l -k 192.168.100.10 4242], [server1.pid]) > +NETNS_DAEMONIZE([vm2], [$NC -l -k 192.168.200.20 4242], [server2.pid]) > +NETNS_DAEMONIZE([vm3], [$NC -l -k 192.168.200.30 4242], [server3.pid]) > > check_snat() { > check ovn-nbctl lr-nat-del lr > @@ -12838,9 +12838,9 @@ check_snat() { > > check ovs-appctl dpctl/flush-conntrack > > - NS_CHECK_EXEC([vm0], [nc -z 192.168.100.10 4242 -p 2000]) > - NS_CHECK_EXEC([vm0], [nc -z 192.168.100.10 4242 -p 2001]) > - NS_CHECK_EXEC([vm0], [nc -z 192.168.100.10 4242 -p 2002]) > + NS_CHECK_EXEC([vm0], [$NC -z 192.168.100.10 4242 -p 2000]) > + NS_CHECK_EXEC([vm0], [$NC -z 192.168.100.10 4242 -p 2001]) > + NS_CHECK_EXEC([vm0], [$NC -z 192.168.100.10 4242 -p 2002]) > > snat_id=$(ovn-appctl -t ovn-controller ct-zone-list | grep lr_snat | cut > -d ' ' -f2) > AT_CHECK_UNQUOTED([ovs-appctl dpctl/dump-conntrack | > FORMAT_CT(192.168.100.10) | grep "zone=$snat_id"], [0], [dnl > @@ -12859,9 +12859,9 @@ check_dnat() { > > check ovs-appctl dpctl/flush-conntrack > > - NS_CHECK_EXEC([vm1], [nc -z 192.168.100.100 4242 -p 2000]) > - NS_CHECK_EXEC([vm1], [nc -z 192.168.100.100 4242 -p 2001]) > - NS_CHECK_EXEC([vm1], [nc -z 192.168.100.100 4242 -p 2002]) > + NS_CHECK_EXEC([vm1], [$NC -z 192.168.100.100 4242 -p 2000]) > + NS_CHECK_EXEC([vm1], [$NC -z 192.168.100.100 4242 -p 2001]) > + NS_CHECK_EXEC([vm1], [$NC -z 192.168.100.100 4242 -p 2002]) > > dnat_id=$(ovn-appctl -t ovn-controller ct-zone-list | grep lr_dnat | cut > -d ' ' -f2) > AT_CHECK_UNQUOTED([ovs-appctl dpctl/dump-conntrack | > FORMAT_CT(192.168.100.100) | grep "zone=$dnat_id"], [0], [dnl > @@ -12950,10 +12950,10 @@ ADD_VETH(vm2, vm2, br-int, "2000::20/64", > "f0:00:0f:01:02:04", "2000::1", "nodad > ADD_NAMESPACES(vm3) > ADD_VETH(vm3, vm3, br-int, "2000::30/64", "f0:00:0f:01:02:05", "2000::1", > "nodad") > > -NETNS_DAEMONIZE([vm0], [nc -lk 2000::10 4242 > /dev/null], [server0.pid]) > -NETNS_DAEMONIZE([vm1], [nc -lk 1000::10 4242 > /dev/null], [server1.pid]) > -NETNS_DAEMONIZE([vm2], [nc -lk 2000::20 4242 > /dev/null], [server2.pid]) > -NETNS_DAEMONIZE([vm3], [nc -lk 2000::30 4242 > /dev/null], [server3.pid]) > +NETNS_DAEMONIZE([vm0], [$NC -lk 2000::10 4242 > /dev/null], [server0.pid]) > +NETNS_DAEMONIZE([vm1], [$NC -lk 1000::10 4242 > /dev/null], [server1.pid]) > +NETNS_DAEMONIZE([vm2], [$NC -lk 2000::20 4242 > /dev/null], [server2.pid]) > +NETNS_DAEMONIZE([vm3], [$NC -lk 2000::30 4242 > /dev/null], [server3.pid]) > > check_snat() { > check ovn-nbctl lr-nat-del lr > @@ -12964,9 +12964,9 @@ check_snat() { > > check ovs-appctl dpctl/flush-conntrack > > - NS_CHECK_EXEC([vm0], [nc -z 1000::10 4242 -p 2000]) > - NS_CHECK_EXEC([vm0], [nc -z 1000::10 4242 -p 2001]) > - NS_CHECK_EXEC([vm0], [nc -z 1000::10 4242 -p 2002]) > + NS_CHECK_EXEC([vm0], [$NC -z 1000::10 4242 -p 2000]) > + NS_CHECK_EXEC([vm0], [$NC -z 1000::10 4242 -p 2001]) > + NS_CHECK_EXEC([vm0], [$NC -z 1000::10 4242 -p 2002]) > > snat_id=$(ovn-appctl -t ovn-controller ct-zone-list | grep lr_snat | cut > -d ' ' -f2) > AT_CHECK_UNQUOTED([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(1000::10) > | grep "zone=$snat_id"], [0], [dnl > @@ -12985,9 +12985,9 @@ check_dnat() { > > check ovs-appctl dpctl/flush-conntrack > > - NS_CHECK_EXEC([vm1], [nc -z 1000::100 4242 -p 2000]) > - NS_CHECK_EXEC([vm1], [nc -z 1000::100 4242 -p 2001]) > - NS_CHECK_EXEC([vm1], [nc -z 1000::100 4242 -p 2002]) > + NS_CHECK_EXEC([vm1], [$NC -z 1000::100 4242 -p 2000]) > + NS_CHECK_EXEC([vm1], [$NC -z 1000::100 4242 -p 2001]) > + NS_CHECK_EXEC([vm1], [$NC -z 1000::100 4242 -p 2002]) > > dnat_id=$(ovn-appctl -t ovn-controller ct-zone-list | grep lr_dnat | cut > -d ' ' -f2) > AT_CHECK_UNQUOTED([ovs-appctl dpctl/dump-conntrack | > FORMAT_CT(1000::100) | grep "zone=$dnat_id"], [0], [dnl > @@ -13169,12 +13169,12 @@ dnl And wait for it to be up and running. > OVS_WAIT_UNTIL([ovs-ofctl dump-ipfix-flow br-int | grep -q '1 ids']) > > dnl Start UDP echo server on vm2. > -NETNS_DAEMONIZE([vm2], [nc -e "$PYTHON ./server.py" -k -u -v -l -m 1 1000], > [nc-vm2-1000.pid]) > -NETNS_DAEMONIZE([vm2], [nc -e "$PYTHON ./server.py" -k -u -v -l -m 1 1010], > [nc-vm2-1010.pid]) > -NETNS_DAEMONIZE([vm2], [nc -e "$PYTHON ./server.py" -k -u -v -l -m 1 2000], > [nc-vm2-2000.pid]) > -NETNS_DAEMONIZE([vm2], [nc -e "$PYTHON ./server.py" -k -u -v -l -m 1 2010], > [nc-vm2-2010.pid]) > -NETNS_DAEMONIZE([vm2], [nc -e "$PYTHON ./server.py" -k -u -v -l -m 1 3000], > [nc-vm2-3000.pid]) > -NETNS_DAEMONIZE([vm2], [nc -e "$PYTHON ./server.py" -k -u -v -l -m 1 3010], > [nc-vm2-3010.pid]) > +NETNS_DAEMONIZE([vm2], [$NC -e "$PYTHON ./server.py" -k -u -v -l -m 1 1000], > [nc-vm2-1000.pid]) > +NETNS_DAEMONIZE([vm2], [$NC -e "$PYTHON ./server.py" -k -u -v -l -m 1 1010], > [nc-vm2-1010.pid]) > +NETNS_DAEMONIZE([vm2], [$NC -e "$PYTHON ./server.py" -k -u -v -l -m 1 2000], > [nc-vm2-2000.pid]) > +NETNS_DAEMONIZE([vm2], [$NC -e "$PYTHON ./server.py" -k -u -v -l -m 1 2010], > [nc-vm2-2010.pid]) > +NETNS_DAEMONIZE([vm2], [$NC -e "$PYTHON ./server.py" -k -u -v -l -m 1 3000], > [nc-vm2-3000.pid]) > +NETNS_DAEMONIZE([vm2], [$NC -e "$PYTHON ./server.py" -k -u -v -l -m 1 3010], > [nc-vm2-3010.pid]) > NETNS_START_TCPDUMP([vm2], [-i vm2 -vnne], [vm2]) > > dnl Send traffic (2 packets) to the UDP LB1 (hits the from-lport ACL). > @@ -13332,10 +13332,10 @@ dnl And wait for it to be up and running. > OVS_WAIT_UNTIL([ovs-ofctl dump-ipfix-flow br-int | grep -q '1 ids']) > > dnl Start UDP echo server on vm2. > -NETNS_DAEMONIZE([vm2], [nc -e "$(command -v cat)" -k -u -v -l -m 1 1000], > [nc-vm2-1000.pid]) > +NETNS_DAEMONIZE([vm2], [$NC -e "$(command -v cat)" -k -u -v -l -m 1 1000], > [nc-vm2-1000.pid]) > > dnl Send traffic to the UDP server (hits both ACL tiers). > -NS_CHECK_EXEC([vm1], [echo a | nc --send-only -u 42.42.42.3 1000]) > +NS_CHECK_EXEC([vm1], [echo a | $NC --send-only -u 42.42.42.3 1000]) > > dnl Wait until OVS sampled all expected packets: > dnl - first packet sampled by both tiers > @@ -13450,10 +13450,10 @@ dnl And wait for it to be up and running. > OVS_WAIT_UNTIL([ovs-ofctl dump-ipfix-flow br-int | grep -q '1 ids']) > > dnl Start UDP echo server on vm2. > -NETNS_DAEMONIZE([vm2], [nc -e "$(command -v cat)" -k -u -v -l -m 1 1000], > [nc-vm2-1000.pid]) > +NETNS_DAEMONIZE([vm2], [$NC -e "$(command -v cat)" -k -u -v -l -m 1 1000], > [nc-vm2-1000.pid]) > > dnl Send traffic to the UDP server (hits both ACL tiers). > -NS_CHECK_EXEC([vm1], [echo a | nc --send-only -u 42.42.42.3 1000]) > +NS_CHECK_EXEC([vm1], [echo a | $NC --send-only -u 42.42.42.3 1000]) > > dnl Wait until OVS sampled all expected packets: > dnl In this case, we only expect a single sampled packet. > @@ -13671,8 +13671,8 @@ check ovn-nbctl --wait=hv sync > check_row_count nb:ACL 2 > check_row_count nb:Sample 2 > > -NETNS_DAEMONIZE([vm1], [nc -l -u 1234], [udp1.pid]) > -NETNS_DAEMONIZE([vm2], [nc -l -u 1235], [udp2.pid]) > +NETNS_DAEMONIZE([vm1], [$NC -l -u 1234], [udp1.pid]) > +NETNS_DAEMONIZE([vm2], [$NC -l -u 1235], [udp2.pid]) > > dnl Start an IPFIX collector. > DAEMONIZE([nfcapd -B 1024000 -w . -p 4242 2> collector.err], [collector.pid]) > @@ -13692,12 +13692,12 @@ OVS_WAIT_UNTIL([ovs-ofctl dump-ipfix-flow br-int | > grep -q '2 ids']) > > # Create the connection in the CT table. > echo "Hello" > Hello > -NS_EXEC([vm1], [nc -p 1234 -u 43.43.43.2 1235 < Hello]) > -NS_EXEC([vm2], [nc -p 1235 -u 42.42.42.2 1234 < Hello]) > +NS_EXEC([vm1], [$NC -p 1234 -u 43.43.43.2 1235 < Hello]) > +NS_EXEC([vm2], [$NC -p 1235 -u 42.42.42.2 1234 < Hello]) > # Send some more packets. > for i in $(seq 10); do > -NS_EXEC([vm1], [nc -p 1234 -u 43.43.43.2 1235 < Hello]) > -NS_EXEC([vm2], [nc -p 1235 -u 42.42.42.2 1234 < Hello]) > +NS_EXEC([vm1], [$NC -p 1234 -u 43.43.43.2 1235 < Hello]) > +NS_EXEC([vm2], [$NC -p 1235 -u 42.42.42.2 1234 < Hello]) > done > > OVS_WAIT_UNTIL([ovs-ofctl dump-ipfix-flow br-int | grep 'id 100' | grep -q > 'sampled pkts=21']) > @@ -13908,52 +13908,52 @@ OVS_WAIT_UNTIL([NS_EXEC([ext-foo], [ip a show dev > ext-foo | grep "fe80::" | grep > > # Verify that BGP control plane traffic is delivered to the "bgp-daemon" > # interface on both IPv4 and IPv6 LLA addresses > -NETNS_DAEMONIZE([bgp-daemon], [nc -l -k 172.16.1.1 179], [bgp_v4.pid]) > -NS_CHECK_EXEC([ext-foo], [echo "BGP IPv4 server traffic" | nc --send-only > 172.16.1.1 179]) > +NETNS_DAEMONIZE([bgp-daemon], [$NC -l -k 172.16.1.1 179], [bgp_v4.pid]) > +NS_CHECK_EXEC([ext-foo], [echo "BGP IPv4 server traffic" | $NC --send-only > 172.16.1.1 179]) > > -NETNS_DAEMONIZE([bgp-daemon], [nc -l -6 -k fe80::200:2ff:fe01:203%bgp-daemon > 179], [bgp_v6.pid]) > -NS_CHECK_EXEC([ext-foo], [echo "BGP IPv6 server traffic" | nc --send-only -6 > fe80::200:2ff:fe01:203%ext-foo 179]) > +NETNS_DAEMONIZE([bgp-daemon], [$NC -l -6 -k > fe80::200:2ff:fe01:203%bgp-daemon 179], [bgp_v6.pid]) > +NS_CHECK_EXEC([ext-foo], [echo "BGP IPv6 server traffic" | $NC --send-only > -6 fe80::200:2ff:fe01:203%ext-foo 179]) > > # Perform same set of checks as above for BFD daemon. > # We need to manually check that the message arrived on the receiving end as > Ncat will > # produce false positive results over UDP due to lack of ICMP port > unreachable messages > # from LRP's IP. > -NETNS_DAEMONIZE([bgp-daemon], [nc -l -u 172.16.1.1 3784 > > bgp-daemon_bfd_v4.out], [bfd_v4.pid]) > -NS_CHECK_EXEC([ext-foo], [echo "from ext-foo: BFD IPv4 server traffic" | nc > -u 172.16.1.1 3784]) > +NETNS_DAEMONIZE([bgp-daemon], [$NC -l -u 172.16.1.1 3784 > > bgp-daemon_bfd_v4.out], [bfd_v4.pid]) > +NS_CHECK_EXEC([ext-foo], [echo "from ext-foo: BFD IPv4 server traffic" | $NC > -u 172.16.1.1 3784]) > AT_CHECK([cat bgp-daemon_bfd_v4.out], [0], [dnl > from ext-foo: BFD IPv4 server traffic > ]) > > -NETNS_DAEMONIZE([bgp-daemon], [nc -l -6 -u fe80::200:2ff:fe01:203%bgp-daemon > 3784 > bgp-daemon_bfd_v6.out], [bfd_v6.pid]) > -NS_CHECK_EXEC([ext-foo], [echo "from ext-foo: BFD IPv6 server traffic" | nc > -u -6 fe80::200:2ff:fe01:203%ext-foo 3784]) > +NETNS_DAEMONIZE([bgp-daemon], [$NC -l -6 -u > fe80::200:2ff:fe01:203%bgp-daemon 3784 > bgp-daemon_bfd_v6.out], [bfd_v6.pid]) > +NS_CHECK_EXEC([ext-foo], [echo "from ext-foo: BFD IPv6 server traffic" | $NC > -u -6 fe80::200:2ff:fe01:203%ext-foo 3784]) > AT_CHECK([cat bgp-daemon_bfd_v6.out], [0], [dnl > from ext-foo: BFD IPv6 server traffic > ]) > > # Verify connection in other direction. i.e when BGP daemon running on > "bgp-daemon" port > # makes a client connection to its peer > -NETNS_DAEMONIZE([ext-foo], [nc -l -k 172.16.1.100 179], [reply_bgp_v4.pid]) > -NS_CHECK_EXEC([bgp-daemon], [echo "BGP IPv4 client traffic" | nc --send-only > 172.16.1.100 179]) > +NETNS_DAEMONIZE([ext-foo], [$NC -l -k 172.16.1.100 179], [reply_bgp_v4.pid]) > +NS_CHECK_EXEC([bgp-daemon], [echo "BGP IPv4 client traffic" | $NC > --send-only 172.16.1.100 179]) > > -NETNS_DAEMONIZE([ext-foo], [nc -l -6 -k fe80::210:10ff:fe01:213%ext-foo > 179], [reply_bgp_v6.pid]) > -NS_CHECK_EXEC([bgp-daemon], [echo "BGP IPv6 client traffic" | nc --send-only > -6 fe80::210:10ff:fe01:213%bgp-daemon 179]) > +NETNS_DAEMONIZE([ext-foo], [$NC -l -6 -k fe80::210:10ff:fe01:213%ext-foo > 179], [reply_bgp_v6.pid]) > +NS_CHECK_EXEC([bgp-daemon], [echo "BGP IPv6 client traffic" | $NC > --send-only -6 fe80::210:10ff:fe01:213%bgp-daemon 179]) > > # Perform same checks in other direction for BFD daemon > -NETNS_DAEMONIZE([ext-foo], [nc -l -u 172.16.1.100 3784 > > ext-foo_bfd_v4.out], [reply_bfd_v4.pid]) > -NS_CHECK_EXEC([bgp-daemon], [echo "from bgp-daemon: BFD IPv4 client traffic" > | nc -u 172.16.1.100 3784]) > +NETNS_DAEMONIZE([ext-foo], [$NC -l -u 172.16.1.100 3784 > > ext-foo_bfd_v4.out], [reply_bfd_v4.pid]) > +NS_CHECK_EXEC([bgp-daemon], [echo "from bgp-daemon: BFD IPv4 client traffic" > | $NC -u 172.16.1.100 3784]) > AT_CHECK([cat ext-foo_bfd_v4.out], [0], [dnl > from bgp-daemon: BFD IPv4 client traffic > ]) > > -NETNS_DAEMONIZE([ext-foo], [nc -l -6 -u fe80::210:10ff:fe01:213%ext-foo 3784 > > ext-foo_bfd_v6.out], [reply_bfd_v6.pid]) > -NS_CHECK_EXEC([bgp-daemon], [echo "from bgp-daemon: BFD IPv6 client traffic" > | nc -u -6 fe80::210:10ff:fe01:213%bgp-daemon 3784]) > +NETNS_DAEMONIZE([ext-foo], [$NC -l -6 -u fe80::210:10ff:fe01:213%ext-foo > 3784 > ext-foo_bfd_v6.out], [reply_bfd_v6.pid]) > +NS_CHECK_EXEC([bgp-daemon], [echo "from bgp-daemon: BFD IPv6 client traffic" > | $NC -u -6 fe80::210:10ff:fe01:213%bgp-daemon 3784]) > AT_CHECK([cat ext-foo_bfd_v6.out], [0], [dnl > from bgp-daemon: BFD IPv6 client traffic > ]) > > # Verify that hosts on the internal network can reach external networks > -NETNS_DAEMONIZE([ext-foo], [nc -l -k 172.16.1.100 2222], [nc_external.pid]) > -NS_CHECK_EXEC([bar1], [echo "TCP test" | nc -w 1 --send-only 172.16.1.100 > 2222]) > +NETNS_DAEMONIZE([ext-foo], [$NC -l -k 172.16.1.100 2222], [nc_external.pid]) > +NS_CHECK_EXEC([bar1], [echo "TCP test" | $NC -w 1 --send-only 172.16.1.100 > 2222]) > > OVN_CLEANUP_CONTROLLER([hv1]) > > @@ -14048,52 +14048,52 @@ OVS_WAIT_UNTIL([NS_EXEC([ext-foo], [ip a show dev > ext-foo | grep "fe80::" | grep > > # Verify that BGP control plane traffic is delivered to the "bgp-daemon" > # interface on both IPv4 and IPv6 LLA addresses > -NETNS_DAEMONIZE([bgp-daemon], [nc -l -k 172.16.1.1 179], [bgp_v4.pid]) > -NS_CHECK_EXEC([ext-foo], [echo "BGP IPv4 server traffic" | nc --send-only > 172.16.1.1 179]) > +NETNS_DAEMONIZE([bgp-daemon], [$NC -l -k 172.16.1.1 179], [bgp_v4.pid]) > +NS_CHECK_EXEC([ext-foo], [echo "BGP IPv4 server traffic" | $NC --send-only > 172.16.1.1 179]) > > -NETNS_DAEMONIZE([bgp-daemon], [nc -l -6 -k fe80::200:2ff:fe01:203%bgp-daemon > 179], [bgp_v6.pid]) > -NS_CHECK_EXEC([ext-foo], [echo "BGP IPv6 server traffic" | nc --send-only -6 > fe80::200:2ff:fe01:203%ext-foo 179]) > +NETNS_DAEMONIZE([bgp-daemon], [$NC -l -6 -k > fe80::200:2ff:fe01:203%bgp-daemon 179], [bgp_v6.pid]) > +NS_CHECK_EXEC([ext-foo], [echo "BGP IPv6 server traffic" | $NC --send-only > -6 fe80::200:2ff:fe01:203%ext-foo 179]) > > # Perform same set of checks as above for BFD daemon. > # We need to manually check that the message arrived on the receiving end as > Ncat will > # produce false positive results over UDP due to lack of ICMP port > unreachable messages > # from LRP's IP. > -NETNS_DAEMONIZE([bgp-daemon], [nc -l -u 172.16.1.1 3784 > > bgp-daemon_bfd_v4.out], [bfd_v4.pid]) > -NS_CHECK_EXEC([ext-foo], [echo "from ext-foo: BFD IPv4 server traffic" | nc > -u 172.16.1.1 3784]) > +NETNS_DAEMONIZE([bgp-daemon], [$NC -l -u 172.16.1.1 3784 > > bgp-daemon_bfd_v4.out], [bfd_v4.pid]) > +NS_CHECK_EXEC([ext-foo], [echo "from ext-foo: BFD IPv4 server traffic" | $NC > -u 172.16.1.1 3784]) > AT_CHECK([cat bgp-daemon_bfd_v4.out], [0], [dnl > from ext-foo: BFD IPv4 server traffic > ]) > > -NETNS_DAEMONIZE([bgp-daemon], [nc -l -6 -u fe80::200:2ff:fe01:203%bgp-daemon > 3784 > bgp-daemon_bfd_v6.out], [bfd_v6.pid]) > -NS_CHECK_EXEC([ext-foo], [echo "from ext-foo: BFD IPv6 server traffic" | nc > -u -6 fe80::200:2ff:fe01:203%ext-foo 3784]) > +NETNS_DAEMONIZE([bgp-daemon], [$NC -l -6 -u > fe80::200:2ff:fe01:203%bgp-daemon 3784 > bgp-daemon_bfd_v6.out], [bfd_v6.pid]) > +NS_CHECK_EXEC([ext-foo], [echo "from ext-foo: BFD IPv6 server traffic" | $NC > -u -6 fe80::200:2ff:fe01:203%ext-foo 3784]) > AT_CHECK([cat bgp-daemon_bfd_v6.out], [0], [dnl > from ext-foo: BFD IPv6 server traffic > ]) > > # Verify connection in other direction. i.e when BGP daemon running on > "bgp-daemon" port > # makes a client connection to its peer > -NETNS_DAEMONIZE([ext-foo], [nc -l -k 172.16.1.100 179], [reply_bgp_v4.pid]) > -NS_CHECK_EXEC([bgp-daemon], [echo "BGP IPv4 client traffic" | nc --send-only > 172.16.1.100 179]) > +NETNS_DAEMONIZE([ext-foo], [$NC -l -k 172.16.1.100 179], [reply_bgp_v4.pid]) > +NS_CHECK_EXEC([bgp-daemon], [echo "BGP IPv4 client traffic" | $NC > --send-only 172.16.1.100 179]) > > -NETNS_DAEMONIZE([ext-foo], [nc -l -6 -k fe80::210:10ff:fe01:213%ext-foo > 179], [reply_bgp_v6.pid]) > -NS_CHECK_EXEC([bgp-daemon], [echo "BGP IPv6 client traffic" | nc --send-only > -6 fe80::210:10ff:fe01:213%bgp-daemon 179]) > +NETNS_DAEMONIZE([ext-foo], [$NC -l -6 -k fe80::210:10ff:fe01:213%ext-foo > 179], [reply_bgp_v6.pid]) > +NS_CHECK_EXEC([bgp-daemon], [echo "BGP IPv6 client traffic" | $NC > --send-only -6 fe80::210:10ff:fe01:213%bgp-daemon 179]) > > # Perform same checks in other direction for BFD daemon > -NETNS_DAEMONIZE([ext-foo], [nc -l -u 172.16.1.100 3784 > > ext-foo_bfd_v4.out], [reply_bfd_v4.pid]) > -NS_CHECK_EXEC([bgp-daemon], [echo "from bgp-daemon: BFD IPv4 client traffic" > | nc -u 172.16.1.100 3784]) > +NETNS_DAEMONIZE([ext-foo], [$NC -l -u 172.16.1.100 3784 > > ext-foo_bfd_v4.out], [reply_bfd_v4.pid]) > +NS_CHECK_EXEC([bgp-daemon], [echo "from bgp-daemon: BFD IPv4 client traffic" > | $NC -u 172.16.1.100 3784]) > AT_CHECK([cat ext-foo_bfd_v4.out], [0], [dnl > from bgp-daemon: BFD IPv4 client traffic > ]) > > -NETNS_DAEMONIZE([ext-foo], [nc -l -6 -u fe80::210:10ff:fe01:213%ext-foo 3784 > > ext-foo_bfd_v6.out], [reply_bfd_v6.pid]) > -NS_CHECK_EXEC([bgp-daemon], [echo "from bgp-daemon: BFD IPv6 client traffic" > | nc -u -6 fe80::210:10ff:fe01:213%bgp-daemon 3784]) > +NETNS_DAEMONIZE([ext-foo], [$NC -l -6 -u fe80::210:10ff:fe01:213%ext-foo > 3784 > ext-foo_bfd_v6.out], [reply_bfd_v6.pid]) > +NS_CHECK_EXEC([bgp-daemon], [echo "from bgp-daemon: BFD IPv6 client traffic" > | $NC -u -6 fe80::210:10ff:fe01:213%bgp-daemon 3784]) > AT_CHECK([cat ext-foo_bfd_v6.out], [0], [dnl > from bgp-daemon: BFD IPv6 client traffic > ]) > > # Verify that hosts on the internal network can reach external networks > -NETNS_DAEMONIZE([ext-foo], [nc -l -k 172.16.1.100 2222], [nc_external.pid]) > -NS_CHECK_EXEC([bar1], [echo "TCP test" | nc -w 1 --send-only 172.16.1.100 > 2222]) > +NETNS_DAEMONIZE([ext-foo], [$NC -l -k 172.16.1.100 2222], [nc_external.pid]) > +NS_CHECK_EXEC([bar1], [echo "TCP test" | $NC -w 1 --send-only 172.16.1.100 > 2222]) > > OVN_CLEANUP_CONTROLLER([hv1]) > > @@ -15024,14 +15024,14 @@ check ovn-nbctl --ecmp-symmetric-reply lr-route-add > R1 172.16.2.0/24 172.16.1.3 > > wait_for_ports_up > check ovn-nbctl --wait=hv sync > -NETNS_DAEMONIZE([alice], [nc -l -k 80], [alice.pid]) > -NETNS_DAEMONIZE([peter], [nc -l -k 80], [peter.pid]) > +NETNS_DAEMONIZE([alice], [$NC -l -k 80], [alice.pid]) > +NETNS_DAEMONIZE([peter], [$NC -l -k 80], [peter.pid]) > > NS_CHECK_EXEC([bob], [ping -q -c 3 -i 0.3 -w 2 192.168.1.2 | FORMAT_PING], \ > [0], [dnl > 3 packets transmitted, 3 received, 0% packet loss, time 0ms > ]) > -NS_CHECK_EXEC([bob], [nc -z 192.168.1.2 80], [0]) > +NS_CHECK_EXEC([bob], [$NC -z 192.168.1.2 80], [0]) > > wait_row_count ECMP_Nexthop 2 > wait_column 'f0:00:00:01:02:04' ECMP_Nexthop mac nexthop='172.16.1.2' > @@ -15052,7 +15052,7 @@ NS_CHECK_EXEC([bob], [ping -q -c 3 -i 0.3 -w 2 > 192.168.1.2 | FORMAT_PING], \ > [0], [dnl > 3 packets transmitted, 3 received, 0% packet loss, time 0ms > ]) > -NS_CHECK_EXEC([bob], [nc -z 192.168.1.2 80], [0]) > +NS_CHECK_EXEC([bob], [$NC -z 192.168.1.2 80], [0]) > > wait_row_count ECMP_Nexthop 2 > check_column 'f0:00:00:01:02:04' ECMP_Nexthop mac nexthop='172.16.1.2' > @@ -15097,7 +15097,7 @@ NS_CHECK_EXEC([bob], [ping -q -c 3 -i 0.3 -w 2 > 192.168.1.2 | FORMAT_PING], \ > [0], [dnl > 3 packets transmitted, 3 received, 0% packet loss, time 0ms > ]) > -NS_CHECK_EXEC([bob], [nc -z 192.168.1.2 80], [0]) > +NS_CHECK_EXEC([bob], [$NC -z 192.168.1.2 80], [0]) > > AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(172.16.2.10) | \ > sed -e 's/zone=[[0-9]]*/zone=<cleared>/' | > @@ -15136,13 +15136,13 @@ NS_CHECK_EXEC([bob], [ping -q -c 3 -i 0.3 -w 2 > 192.168.1.2 | FORMAT_PING], \ > [0], [dnl > 3 packets transmitted, 3 received, 0% packet loss, time 0ms > ]) > -NS_CHECK_EXEC([bob], [nc -z 192.168.1.2 80], [0]) > +NS_CHECK_EXEC([bob], [$NC -z 192.168.1.2 80], [0]) > > NS_CHECK_EXEC([bob], [ping -q -c 3 -i 0.3 -w 2 192.168.2.2 | FORMAT_PING], \ > [0], [dnl > 3 packets transmitted, 3 received, 0% packet loss, time 0ms > ]) > -NS_CHECK_EXEC([bob], [nc -z 192.168.2.2 80], [0]) > +NS_CHECK_EXEC([bob], [$NC -z 192.168.2.2 80], [0]) > > AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(172.16.2.10) | \ > sed -e 's/zone=[[0-9]]*/zone=<cleared>/' | > @@ -15273,15 +15273,15 @@ net.ipv6.conf.all.forwarding = 1 > ]) > > check ovn-nbctl --wait=hv sync > -NETNS_DAEMONIZE([alice], [nc -6 -l -k 80], [alice.pid]) > -NETNS_DAEMONIZE([peter], [nc -6 -l -k 80], [peter.pid]) > +NETNS_DAEMONIZE([alice], [$NC -6 -l -k 80], [alice.pid]) > +NETNS_DAEMONIZE([peter], [$NC -6 -l -k 80], [peter.pid]) > > NS_CHECK_EXEC([bob], [ping -6 -q -c 3 -i 0.3 -w 2 fd11::2 | FORMAT_PING], \ > [0], [dnl > 3 packets transmitted, 3 received, 0% packet loss, time 0ms > ]) > > -NS_CHECK_EXEC([bob], [nc -6 -z fd11::2 80], [0]) > +NS_CHECK_EXEC([bob], [$NC -6 -z fd11::2 80], [0]) > > wait_row_count ECMP_Nexthop 2 > wait_column 'f0:00:00:01:02:04' ECMP_Nexthop mac nexthop='"fd12::2"' > @@ -15302,7 +15302,7 @@ NS_CHECK_EXEC([bob], [ping -6 -q -c 3 -i 0.3 -w 2 > fd11::2 | FORMAT_PING], \ > [0], [dnl > 3 packets transmitted, 3 received, 0% packet loss, time 0ms > ]) > -NS_CHECK_EXEC([bob], [nc -6 -z fd11::2 80], [0]) > +NS_CHECK_EXEC([bob], [$NC -6 -z fd11::2 80], [0]) > > wait_row_count ECMP_Nexthop 2 > check_column 'f0:00:00:01:02:04' ECMP_Nexthop mac nexthop='"fd12::2"' > @@ -15347,7 +15347,7 @@ NS_CHECK_EXEC([bob], [ping -6 -q -c 3 -i 0.3 -w 2 > fd11::2 | FORMAT_PING], \ > [0], [dnl > 3 packets transmitted, 3 received, 0% packet loss, time 0ms > ]) > -NS_CHECK_EXEC([bob], [nc -6 -z fd11::2 80], [0]) > +NS_CHECK_EXEC([bob], [$NC -6 -z fd11::2 80], [0]) > > AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(fd13::a) | \ > sed -e 's/zone=[[0-9]]*/zone=<cleared>/' | > @@ -15386,13 +15386,13 @@ NS_CHECK_EXEC([bob], [ping -6 -q -c 3 -i 0.3 -w 2 > fd11::2 | FORMAT_PING], \ > [0], [dnl > 3 packets transmitted, 3 received, 0% packet loss, time 0ms > ]) > -NS_CHECK_EXEC([bob], [nc -6 -z fd11::2 80], [0]) > +NS_CHECK_EXEC([bob], [$NC -6 -z fd11::2 80], [0]) > > NS_CHECK_EXEC([bob], [ping -6 -q -c 3 -i 0.3 -w 2 fd14::2 | FORMAT_PING], \ > [0], [dnl > 3 packets transmitted, 3 received, 0% packet loss, time 0ms > ]) > -NS_CHECK_EXEC([bob], [nc -6 -z fd14::2 80], [0]) > +NS_CHECK_EXEC([bob], [$NC -6 -z fd14::2 80], [0]) > > AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(fd13::a) | \ > sed -e 's/zone=[[0-9]]*/zone=<cleared>/' | > @@ -17947,7 +17947,7 @@ test_fragmented_traffic() { > > check ovs-appctl dpctl/flush-conntrack > > - NETNS_DAEMONIZE([server], [nc -l -u 172.16.1.2 4242 > /dev/null], > [server.pid]) > + NETNS_DAEMONIZE([server], [$NC -l -u 172.16.1.2 4242 > /dev/null], > [server.pid]) > > # Collect ICMP packets on client side > NETNS_START_TCPDUMP([client], [-U -i client -vnne udp], [tcpdump-client]) > @@ -20021,8 +20021,8 @@ OVN_POPULATE_ARP > check ovn-nbctl --wait=hv sync > wait_for_ports_up > > -NETNS_DAEMONIZE([vm3], [nc -l -k 80], [vm3.pid]) > -NS_CHECK_EXEC([vm1], [nc 30.0.0.2 80 -z]) > +NETNS_DAEMONIZE([vm3], [$NC -l -k 80], [vm3.pid]) > +NS_CHECK_EXEC([vm1], [$NC 30.0.0.2 80 -z]) > > OVN_CLEANUP_CONTROLLER([hv1]) > > @@ -21076,8 +21076,8 @@ > icmp,orig=(src=192.168.100.11,dst=172.16.0.100,id=<cleared>,type=8,code=0),reply > ]) > > # Test TCP traffic - should be blocked by ACLs. > -NETNS_DAEMONIZE([external], [nc -l -k 172.16.0.100 80], [external.pid]) > -NS_CHECK_EXEC([vm1], [nc -z 172.16.0.100 80], [1]) > +NETNS_DAEMONIZE([external], [$NC -l -k 172.16.0.100 80], [external.pid]) > +NS_CHECK_EXEC([vm1], [$NC -z 172.16.0.100 80], [1]) > > # Remove enable_router_port_acl and verify CT zone release. > check ovn-nbctl lsp-set-options ext_lr router-port=lr_ext > @@ -21696,14 +21696,14 @@ NETNS_START_TCPDUMP([server], [-U -i server -Q in > -nn ip and '(ip[[6:2]] & 0x3ff > NETNS_START_TCPDUMP([client], [-U -i client -Q in -nn ip and '(ip[[6:2]] & > 0x3fff != 0)'], [tcpdump-udp-client]) > > # Start UDP listeners on both sides. > -NETNS_DAEMONIZE([server], [nc -l -u 172.16.1.2 5060 > udp_server.rcvd], > [server.pid]) > -NETNS_DAEMONIZE([client], [nc -l -u 172.16.1.3 5061 > udp_client.rcvd], > [client.pid]) > +NETNS_DAEMONIZE([server], [$NC -l -u 172.16.1.2 5060 > udp_server.rcvd], > [server.pid]) > +NETNS_DAEMONIZE([client], [$NC -l -u 172.16.1.3 5061 > udp_client.rcvd], > [client.pid]) > > # Client sends to server (will be fragmented due to MTU 900). > -NS_CHECK_EXEC([client], [cat datafile | nc -w 1 -u 172.16.1.2 5060], [0], > [ignore], [ignore]) > +NS_CHECK_EXEC([client], [cat datafile | $NC -w 1 -u 172.16.1.2 5060], [0], > [ignore], [ignore]) > > # Server sends to client (will be fragmented due to MTU 900). > -NS_CHECK_EXEC([server], [cat datafile | nc -w 1 -u 172.16.1.3 5061], [0], > [ignore], [ignore]) > +NS_CHECK_EXEC([server], [cat datafile | $NC -w 1 -u 172.16.1.3 5061], [0], > [ignore], [ignore]) > > OVS_WAIT_UNTIL([test -s udp_server.rcvd]) > OVS_WAIT_UNTIL([test -s udp_client.rcvd]) > @@ -21792,8 +21792,8 @@ check ovn-nbctl --wait=hv sync > check ovs-appctl dpctl/flush-conntrack > > # Test client -> server direction. > -NETNS_DAEMONIZE([server], [nc -l 172.16.1.2 8080 > tcp_server.rcvd], > [server.pid]) > -NS_CHECK_EXEC([client], [nc -w 1 172.16.1.2 8080 < datafile], [0], [ignore], > [ignore]) > +NETNS_DAEMONIZE([server], [$NC -l 172.16.1.2 8080 > tcp_server.rcvd], > [server.pid]) > +NS_CHECK_EXEC([client], [$NC -w 1 172.16.1.2 8080 < datafile], [0], > [ignore], [ignore]) > > OVS_WAIT_UNTIL([test -s tcp_server.rcvd]) > check cmp datafile tcp_server.rcvd > @@ -21802,8 +21802,8 @@ check cmp datafile tcp_server.rcvd > kill $(cat server.pid) 2>/dev/null || true > > # Test server -> client direction. > -NETNS_DAEMONIZE([client], [nc -l 172.16.1.3 8081 > tcp_client.rcvd], > [client.pid]) > -NS_CHECK_EXEC([server], [nc -w 1 172.16.1.3 8081 < datafile], [0], [ignore], > [ignore]) > +NETNS_DAEMONIZE([client], [$NC -l 172.16.1.3 8081 > tcp_client.rcvd], > [client.pid]) > +NS_CHECK_EXEC([server], [$NC -w 1 172.16.1.3 8081 < datafile], [0], > [ignore], [ignore]) > > OVS_WAIT_UNTIL([test -s tcp_client.rcvd]) > check cmp datafile tcp_client.rcvd > @@ -21882,10 +21882,10 @@ check ovs-appctl dpctl/flush-conntrack > NETNS_START_TCPDUMP([server], [-U -i server -Q in -nn udp port 4000], > [tcpdump-drop-server]) > > # Start UDP listener on server (on port 4000 which is NOT allowed by ACLs). > -NETNS_DAEMONIZE([server], [nc -l -u 172.16.1.2 4000 > udp_drop.rcvd], > [drop_server.pid]) > +NETNS_DAEMONIZE([server], [$NC -l -u 172.16.1.2 4000 > udp_drop.rcvd], > [drop_server.pid]) > > # Client sends to server on disallowed port. > -NS_CHECK_EXEC([client], [echo "test" | nc -w 1 -u 172.16.1.2 4000], [0], > [ignore], [ignore]) > +NS_CHECK_EXEC([client], [echo "test" | $NC -w 1 -u 172.16.1.2 4000], [0], > [ignore], [ignore]) > > # Wait a bit for any packets to arrive. > sleep 2 > @@ -22055,7 +22055,7 @@ check ovn-nbctl --wait=hv sync > check_row_count sb:Service_Monitor 2 > > # Create one more health check on logical switch port. > -NETNS_DAEMONIZE([lport], [nc -l -k 192.168.0.10 4041], [lport_tcp.pid]) > +NETNS_DAEMONIZE([lport], [$NC -l -k 192.168.0.10 4041], [lport_tcp.pid]) > > # Wait until the services are set to online. > wait_row_count Service_Monitor 2 status=online > @@ -22063,7 +22063,7 @@ wait_row_count nb:Logical_Switch_Port_Health_Check 1 > status=online protocol=tcp > > check ovn-nbctl lsp-hc-add lport udp 192.168.0.250 4042 192.168.0.10 > > -NETNS_DAEMONIZE([lport], [nc -ulp 4042], [lport_udp.pid]) > +NETNS_DAEMONIZE([lport], [$NC -ulp 4042], [lport_udp.pid]) > > # Wait until the services are set to online. > wait_row_count Service_Monitor 3 status=online > @@ -22086,7 +22086,7 @@ check ovn-nbctl --wait=hv sync > check_row_count sb:Service_Monitor 2 > > # Start IPv6 TCP server. > -NETNS_DAEMONIZE([lport], [nc -6 -l -k 2001:db8::10 4043], > [lport_ipv6_tcp.pid]) > +NETNS_DAEMONIZE([lport], [$NC -6 -l -k 2001:db8::10 4043], > [lport_ipv6_tcp.pid]) > > # Wait until the services are set to online. > wait_row_count Service_Monitor 2 status=online > @@ -22098,7 +22098,7 @@ check ovn-nbctl --wait=hv sync > check_row_count sb:Service_Monitor 3 > > # Start IPv6 UDP server > -NETNS_DAEMONIZE([lport], [nc -6 -u -l 2001:db8::10 4044], > [lport_ipv6_udp.pid]) > +NETNS_DAEMONIZE([lport], [$NC -6 -u -l 2001:db8::10 4044], > [lport_ipv6_udp.pid]) > > # Wait until the services are set to online. > wait_row_count Service_Monitor 3 status=online > @@ -22174,7 +22174,7 @@ NETNS_START_TCPDUMP([lsp], [-nne -i lsp -Q in 'udp > port 42'], [lsp_in]) > NETNS_START_TCPDUMP([lsp], [-nne -i lsp -Q out 'udp port 42 || icmp'], > [lsp_out]) > > dnl Start a backend server, the monitor should change status to "online". > -NETNS_DAEMONIZE([lsp], [nc -l -u 42], [nc.pid]) > +NETNS_DAEMONIZE([lsp], [$NC -l -u 42], [nc.pid]) > wait_row_count Service_Monitor 1 status=online > > dnl Kill the backend server, the monitor should change status to "offline". > -- > 2.54.0 > > _______________________________________________ > dev mailing list > [email protected] > https://mail.openvswitch.org/mailman/listinfo/ovs-dev _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
