diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2024-10-18 12:35:52 +1100 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2024-10-18 20:27:51 +0200 |
commit | 53176ca91d176ea15d8abf3b1429e43bc93e516c (patch) | |
tree | 9cb95b8eb757277016c3b9aac69b12382e8fa35b /test/two_guests/basic | |
parent | 75b9c0feb0b54b040a8c49f160cfc2defe28c045 (diff) | |
download | passt-53176ca91d176ea15d8abf3b1429e43bc93e516c.tar passt-53176ca91d176ea15d8abf3b1429e43bc93e516c.tar.gz passt-53176ca91d176ea15d8abf3b1429e43bc93e516c.tar.bz2 passt-53176ca91d176ea15d8abf3b1429e43bc93e516c.tar.lz passt-53176ca91d176ea15d8abf3b1429e43bc93e516c.tar.xz passt-53176ca91d176ea15d8abf3b1429e43bc93e516c.tar.zst passt-53176ca91d176ea15d8abf3b1429e43bc93e516c.zip |
test: Wait for DAD on DHCPv6 addresses
After running dhclient -6 we expect the DHCPv6 assigned address to be
immediately usable. That's true with the Fedora dhclient-script (and the
upstream ISC DHCP one), however it's not true with the Debian
dhclient-script. The Debian script can complete with the address still
in "tentative" state, and the address won't be usable until Duplicate
Address Detection (DAD) completes. That's arguably a bug in Debian (see
link below), but for the time being we need to work around it anyway.
We usually get away with this, because by the time we do anything where the
address matters, DAD has completed. However, it's not robust, so we should
explicitly wait for DAD to complete when we get an DHCPv6 address.
Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1085231
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'test/two_guests/basic')
-rw-r--r-- | test/two_guests/basic | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/test/two_guests/basic b/test/two_guests/basic index ac50ff8..9ba5efe 100644 --- a/test/two_guests/basic +++ b/test/two_guests/basic @@ -40,6 +40,9 @@ guest1 while ip -j -6 addr show tentative | jq -e '.[].addr_info'; do sleep 0.1; guest2 while ip -j -6 addr show tentative | jq -e '.[].addr_info'; do sleep 0.1; done guest1 /sbin/dhclient -6 __IFNAME1__ guest2 /sbin/dhclient -6 __IFNAME2__ +# Wait for DAD to complete on the DHCP address +guest1 while ip -j -6 addr show tentative | jq -e '.[].addr_info'; do sleep 0.1; done +guest2 while ip -j -6 addr show tentative | jq -e '.[].addr_info'; do sleep 0.1; done g1out ADDR1_6 ip -j -6 addr show|jq -rM '[.[] | select(.ifname == "__IFNAME1__").addr_info[] | select(.prefixlen == 128).local] | .[0]' g2out ADDR2_6 ip -j -6 addr show|jq -rM '[.[] | select(.ifname == "__IFNAME2__").addr_info[] | select(.prefixlen == 128).local] | .[0]' hout HOST_ADDR6 ip -j -6 addr show|jq -rM '[.[] | select(.ifname == "__HOST_IFNAME6__").addr_info[] | select(.scope == "global" and .deprecated != true).local] | .[0]' |