From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from imap.gmail.com [173.194.76.109] by localhost with POP3 (fetchmail-6.3.26) for (single-drop); Wed, 22 May 2024 09:23:12 +0200 (CEST) Received: by 2002:a05:6a11:2489:b0:55f:c3c0:ed08 with SMTP id sg9csp471876pxb; Wed, 22 May 2024 00:22:59 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCX1YV3VnQQaNXODhC4PkV9w9yVVYAchmLTyEJGd9VVY8MYV8eWpqBizBCScVYmeiqC9UXtYRCWV3EEmy3FC6nd0beyhW3HC4Fw= X-Google-Smtp-Source: AGHT+IGxYs329CIEoH3vfJC60FfweVnshTxSUKvd9q+cGLEBtKeMEZqeJqEtDrVrOWVFz3PQGC3s X-Received: by 2002:a05:620a:468b:b0:792:b995:3a3d with SMTP id af79cd13be357-7949945183dmr128480985a.45.1716362579755; Wed, 22 May 2024 00:22:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1716362579; cv=none; d=google.com; s=arc-20160816; b=lHBbYrCpR5jVMUKOLn8vNvlvRhhatR1VPhdBjffnavH/Lk1/lSbRBjAJtunYfraKvq ms/ITRmuwUhWkbEvuV2Yr/l9xzve6pffl9bMks1kTlSdQ497rPp0t16asFNl8wb/GoRf mTdfQcuK1otWeGoIRR6YaTGj3F/IdXv5nfEjKUm2JadYwq1/FszXvIZHwG8g+jN5w/ZL k/YKRPjllJTFOPTHOMLeu/tXCpJY91BBKoNoSIbglLvByaP1KmRGiOLsPyzmP2IDG9gp hj52WN4Lv+GSi88VvCnbibjF3zsy44GXovHWBqQAPS65iM+hwSBWpZ8C53218O2fhQVG E/WA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:delivered-to; bh=+Ctyzutc9SCsVip7e9Zpxvadp2QurYIC2CtwfS8WQf4=; fh=B9P+sN9+DXw/2owp5Dpo2kcyUJ9BYCsy+1Oixol/LeQ=; b=Ox6gnxEebukUFcCLn0qqLaMSBhokwhFKEFcdWwxuJIeuUN/o7Sg1RvkNojnVG3cxc9 6/wFwWuNy9VUoH5whTt9W1GRG3TNIe9IH5MfnsAWAqaufz79OBKgvI0AB31tuYOhY+x4 VvCJnOQ4hC6IB4+x5XcsD1khwFKPqHIrictVkk/xgAMSYdi/CQI71Rtlocqo1Bv8DkDK QxD5aWms4BBW8U6lOn2jwb6a2sBLz1ZpU+mUQ9JVxEviaajDBAqTlyFk/FC0VOUEQMwo AyylmTtY1NkkdfMdnYLtFbnfykcNIhYbNHF9vatVyMriBaoQQzxXDeEAYdZ45HQC+Ww6 PV3g==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of dgibson@gandalf.ozlabs.org designates 150.107.74.76 as permitted sender) smtp.mailfrom=dgibson@gandalf.ozlabs.org Return-Path: Received: from us-smtp-inbound-delivery-1.mimecast.com (us-smtp-delivery-1.mimecast.com. [205.139.110.120]) by mx.google.com with ESMTPS id af79cd13be357-792bf30b647si3203946885a.361.2024.05.22.00.22.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 May 2024 00:22:59 -0700 (PDT) Received-SPF: pass (google.com: domain of dgibson@gandalf.ozlabs.org designates 150.107.74.76 as permitted sender) client-ip=150.107.74.76; Authentication-Results: mx.google.com; spf=pass (google.com: domain of dgibson@gandalf.ozlabs.org designates 150.107.74.76 as permitted sender) smtp.mailfrom=dgibson@gandalf.ozlabs.org Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-136-4Zj2Wis7NB6QBYJ1XEX0cw-1; Wed, 22 May 2024 03:22:57 -0400 X-MC-Unique: 4Zj2Wis7NB6QBYJ1XEX0cw-1 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 450BE19541A7 for ; Wed, 22 May 2024 07:22:56 +0000 (UTC) Received: by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) id 363723001D30; Wed, 22 May 2024 07:22:56 +0000 (UTC) Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.58]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 33C5A3001D21 for ; Wed, 22 May 2024 07:22:56 +0000 (UTC) Received: from us-smtp-inbound-delivery-1.mimecast.com (us-smtp-delivery-1.mimecast.com [170.10.128.131]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id C9BA41955F2A for ; Wed, 22 May 2024 07:22:55 +0000 (UTC) Received: from mail.ozlabs.org (gandalf.ozlabs.org [150.107.74.76]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-349-qYn30CtaNNa-Bcs5ICicbA-1; Wed, 22 May 2024 03:22:52 -0400 X-MC-Unique: qYn30CtaNNa-Bcs5ICicbA-1 Received: by gandalf.ozlabs.org (Postfix, from userid 1007) id 4VkjSR4x2Vz4wyl; Wed, 22 May 2024 17:22:47 +1000 (AEST) From: David Gibson To: passt-dev@passt.top, Stefano Brivio Cc: David Gibson Subject: [PATCH] netlink, test: Ignore deprecated addresses Date: Wed, 22 May 2024 17:22:32 +1000 Message-ID: <20240522072232.2801307-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition;Similar Internal Domain=false;Similar Monitored External Domain=false;Custom External Domain=false;Mimecast External Domain=false;Newly Observed Domain=false;Internal User Name=false;Custom Display Name List=false;Reply-to Address Mismatch=false;Targeted Threat Dictionary=false;Mimecast Threat Dictionary=false;Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: gibson.dropbear.id.au Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="US-ASCII"; x-default=true List-Id: When we retrieve or copy host addresses we can include deprecated addresses, which is not what we want. Adjust our logic to exclude them. Similarly our tests can retrieve deprecated addresses, so exclude them there too. I hit this in practice because my router sometimes temporarily advertises an fd00:: prefix before the real delegated IPv6 prefix. The deprecated address can hang around for some time messing up my tests. Signed-off-by: David Gibson --- netlink.c | 5 +++-- test/passt/dhcp | 2 +- test/passt/ndp | 2 +- test/pasta/dhcp | 2 +- test/pasta/ndp | 2 +- test/two_guests/basic | 2 +- 6 files changed, 8 insertions(+), 7 deletions(-) diff --git a/netlink.c b/netlink.c index b1c0ccef..d3bea68c 100644 --- a/netlink.c +++ b/netlink.c @@ -696,7 +696,7 @@ int nl_addr_get(int s, unsigned int ifi, sa_family_t af= , =09=09struct rtattr *rta; =09=09size_t na; =20 -=09=09if (ifa->ifa_index !=3D ifi) +=09=09if (ifa->ifa_index !=3D ifi || ifa->ifa_flags & IFA_F_DEPRECATED) =09=09=09continue; =20 =09=09for (rta =3D IFA_RTA(ifa), na =3D IFA_PAYLOAD(nh); RTA_OK(rta, na); @@ -833,7 +833,8 @@ int nl_addr_dup(int s_src, unsigned int ifi_src, =09=09ifa =3D (struct ifaddrmsg *)NLMSG_DATA(nh); =20 =09=09if (rc < 0 || ifa->ifa_scope =3D=3D RT_SCOPE_LINK || -=09=09 ifa->ifa_index !=3D ifi_src) +=09=09 ifa->ifa_index !=3D ifi_src || +=09=09 ifa->ifa_flags & IFA_F_DEPRECATED) =09=09=09continue; =20 =09=09ifa->ifa_index =3D ifi_dst; diff --git a/test/passt/dhcp b/test/passt/dhcp index 53ee641e..3ec2faf2 100644 --- a/test/passt/dhcp +++ b/test/passt/dhcp @@ -50,7 +50,7 @@ check=09[ "__SEARCH__" =3D "__HOST_SEARCH__" ] test=09DHCPv6: address guest=09/sbin/dhclient -6 __IFNAME__ gout=09ADDR6 ip -j -6 addr show|jq -rM '[.[] | select(.ifname =3D=3D "__IF= NAME__").addr_info[] | select(.prefixlen =3D=3D 128).local] | .[0]' -hout=09HOST_ADDR6 ip -j -6 addr show|jq -rM '[.[] | select(.ifname =3D=3D = "__HOST_IFNAME6__").addr_info[] | select(.scope =3D=3D "global").local] | .= [0]' +hout=09HOST_ADDR6 ip -j -6 addr show|jq -rM '[.[] | select(.ifname =3D=3D = "__HOST_IFNAME6__").addr_info[] | select(.scope =3D=3D "global" and .deprec= ated !=3D true).local] | .[0]' check=09[ "__ADDR6__" =3D "__HOST_ADDR6__" ] =20 test=09DHCPv6: route diff --git a/test/passt/ndp b/test/passt/ndp index 7b2dbfef..6bf8af30 100644 --- a/test/passt/ndp +++ b/test/passt/ndp @@ -23,7 +23,7 @@ check=09[ -n "__IFNAME__" ] test=09SLAAC: prefix gout=09ADDR6 ip -j -6 addr show|jq -rM '[.[] | select(.ifname =3D=3D "__IF= NAME__").addr_info[] | select(.scope =3D=3D "global" and .prefixlen =3D=3D = 64).local] | .[0]' gout=09PREFIX6 sipcalc __ADDR6__/64 | grep prefix | cut -d' ' -f4 -hout=09HOST_ADDR6 ip -j -6 addr show|jq -rM '[.[] | select(.ifname =3D=3D = "__HOST_IFNAME6__").addr_info[] | select(.scope =3D=3D "global").local] | .= [0]' +hout=09HOST_ADDR6 ip -j -6 addr show|jq -rM '[.[] | select(.ifname =3D=3D = "__HOST_IFNAME6__").addr_info[] | select(.scope =3D=3D "global" and .deprec= ated !=3D true).local] | .[0]' hout=09HOST_PREFIX6 sipcalc __HOST_ADDR6__/64 | grep prefix | cut -d' ' -f= 4 check=09[ "__PREFIX6__" =3D "__HOST_PREFIX6__" ] =20 diff --git a/test/pasta/dhcp b/test/pasta/dhcp index 112633ab..41556b85 100644 --- a/test/pasta/dhcp +++ b/test/pasta/dhcp @@ -37,7 +37,7 @@ test=09DHCPv6: address ns=09/sbin/dhclient -6 --no-pid __IFNAME__ hout=09HOST_IFNAME6 ip -j -6 route show|jq -rM '[.[] | select(.dst =3D=3D = "default").dev] | .[0]' nsout=09ADDR6 ip -j -6 addr show|jq -rM '[.[] | select(.ifname =3D=3D "__I= FNAME__").addr_info[] | select(.prefixlen =3D=3D 128).local] | .[0]' -hout=09HOST_ADDR6 ip -j -6 addr show|jq -rM '[.[] | select(.ifname =3D=3D = "__HOST_IFNAME6__").addr_info[] | select(.scope =3D=3D "global").local] | .= [0]' +hout=09HOST_ADDR6 ip -j -6 addr show|jq -rM '[.[] | select(.ifname =3D=3D = "__HOST_IFNAME6__").addr_info[] | select(.scope =3D=3D "global" and .deprec= ated !=3D true).local] | .[0]' check=09[ __ADDR6__ =3D __HOST_ADDR6__ ] =20 test=09DHCPv6: route diff --git a/test/pasta/ndp b/test/pasta/ndp index 2a8afe62..d45ff7b8 100644 --- a/test/pasta/ndp +++ b/test/pasta/ndp @@ -23,7 +23,7 @@ sleep=092 test=09SLAAC: prefix nsout=09ADDR6 ip -j -6 addr show|jq -rM '[.[] | select(.ifname =3D=3D "__I= FNAME__").addr_info[] | select(.scope =3D=3D "global" and .prefixlen =3D=3D= 64).local] | .[0]' nsout=09PREFIX6 sipcalc __ADDR6__/64 | grep prefix | cut -d' ' -f4 -hout=09HOST_ADDR6 ip -j -6 addr show|jq -rM ['.[] | select(.ifname =3D=3D = "__IFNAME__").addr_info[] | select(.scope =3D=3D "global").local] | .[0]' +hout=09HOST_ADDR6 ip -j -6 addr show|jq -rM ['.[] | select(.ifname =3D=3D = "__IFNAME__").addr_info[] | select(.scope =3D=3D "global" and .deprecated != =3D true).local] | .[0]' hout=09HOST_PREFIX6 sipcalc __HOST_ADDR6__/64 | grep prefix | cut -d' ' -f= 4 check=09[ "__PREFIX6__" =3D "__HOST_PREFIX6__" ] =20 diff --git a/test/two_guests/basic b/test/two_guests/basic index fa0608bc..4d49e851 100644 --- a/test/two_guests/basic +++ b/test/two_guests/basic @@ -41,7 +41,7 @@ guest1=09/sbin/dhclient -6 __IFNAME1__ guest2=09/sbin/dhclient -6 __IFNAME2__ g1out=09ADDR1_6 ip -j -6 addr show|jq -rM '[.[] | select(.ifname =3D=3D "_= _IFNAME1__").addr_info[] | select(.prefixlen =3D=3D 128).local] | .[0]' g2out=09ADDR2_6 ip -j -6 addr show|jq -rM '[.[] | select(.ifname =3D=3D "_= _IFNAME2__").addr_info[] | select(.prefixlen =3D=3D 128).local] | .[0]' -hout=09HOST_ADDR6 ip -j -6 addr show|jq -rM '[.[] | select(.ifname =3D=3D = "__HOST_IFNAME6__").addr_info[] | select(.scope =3D=3D "global").local] | .= [0]' +hout=09HOST_ADDR6 ip -j -6 addr show|jq -rM '[.[] | select(.ifname =3D=3D = "__HOST_IFNAME6__").addr_info[] | select(.scope =3D=3D "global" and .deprec= ated !=3D true).local] | .[0]' check=09[ "__ADDR1_6__" =3D "__HOST_ADDR6__" ] check=09[ "__ADDR2_6__" =3D "__HOST_ADDR6__" ] =20 --=20 2.45.1