From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=none (p=none dis=none) header.from=haytok.jp Authentication-Results: passt.top; dkim=pass (2048-bit key; unprotected) header.d=haytok.jp header.i=@haytok.jp header.a=rsa-sha256 header.s=sig1 header.b=HN425/QH; dkim-atps=neutral Received: from outbound.ci.icloud.com (ci-2003f-snip6-11.eps.apple.com [IPv6:2a01:b747:3005:200::3f]) by passt.top (Postfix) with ESMTPS id DE3B75A0269 for ; Sat, 22 Aug 2026 10:49:20 +0200 (CEST) Received: from outbound.ci.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-central-1k-60-percent-0 (Postfix) with ESMTPS id 41ACE180011D; Sat, 22 Aug 2026 08:49:18 +0000 (UTC) X-ICL-RepId: 01a028a8-fb52-7455-a426-1f8ed143e6f6 X-ICL-Out-Info: HUtFAUMHWwJACUgATUQeDx5WFlZNRAJCTQhNAEMFXwReC0gHQwZSClBcHA4JUh1yGFgBRwJcRVgAGR5XUF8KSwRWEx0HR0tAEwRKEwVSB11NVg1HD1geXBQXG1pDXgheH0wcHQ5YBhIATQoONgZZBV4JVgNDBTYSFF1FWwxOH10bFxJDTVoCVk0FSgNfAVsKQgtIC1kPXgReCkELXBpaHxRcDnMFVhJGH1JWWR0JS0YJSR0ODkIYRh9UJ1cCWgpbHg== Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=haytok.jp; s=sig1; t=1787388559; x=1789980559; bh=Vp44ePa3ctKiDRdmC5F8jsbFIYEkgLBAUFia6/8Ow2I=; h=From:To:Subject:Date:Message-Id:MIME-Version:x-icloud-hme; b=HN425/QHknaAH63Bu4rFQz+5toe2FfSeK9ZMzjMaOFesKXswft5dZbflEkgrXqn+jfnaRIFiYHLzuJdryMj5RpeeknFV+9YS4HpTMdJSYTM7KjXV8wZLjeP8+TbNwrFgEXUJCC4yyvhRTBHpXZZ8XRJEkrggDb+b+mxBdoaGGRZCVochKd4cJaYloJ5CeIAazBGXjVjwhzZSwZoj+tbAqrW3JIni7TpXh0+hul0MVjWLlYBHkOEGFVnAytRdMlIcop8NseWFwiVB1jguUpwAZ+TudvqrgdtpphNTE/WHXknVJjJ9pbdGVwMgSio3E1N3WeG8cWF3aqALF9/pVIiXVQ== mail-alias-created-date: 1766251435121 Received: from localhost.localdomain (unknown [17.57.156.36]) by p00-icloudmta-asmtp-us-central-1k-60-percent-0 (Postfix) with ESMTPSA id CE7B9180011A; Sat, 22 Aug 2026 08:49:16 +0000 (UTC) From: Hayato Kiwata To: passt-dev@passt.top Subject: [PATCH] netlink: Don't warn about multiple interfaces when there's only one Message-Id: <20260822084856.3981-1-dev@haytok.jp> X-Mailer: git-send-email 2.39.5 (Apple Git-154) MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Proofpoint-ORIG-GUID: kX0cPz6gpt8V2ihXaSCG2FpCnm6FD11B X-Proofpoint-GUID: kX0cPz6gpt8V2ihXaSCG2FpCnm6FD11B X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODIyMDA3MSBTYWx0ZWRfXxS3sawNStsk1 2QEabagDbREIXWm/FW5D22YCMwmuMEY07K6pIWslI7SvVLgEykgWtCebZE9psUaI5poQVhPnLW0 672o11pkMq4V6uzHBpyA2GlqVuLe5U2lAF9bM2tFTj6RDgd/hJ0FQZf9EDCg0BWmThZWCy1hNux AHiC066lopgC/3aZ8G9Z0VQypMEAZtbuhelJ9RM/uA7DqQJewNN9gEKI/DxyjihAID9EMJmHqYs jEgmBYKpMLQL5F2ZxfCuaLuAgFP4j3bl7WnfOcFTVOZxEtfSFi0vkIIobu8WsORVN2vl39RcEX3 YCTbRPVuAFU4BbG5tNRSdBIuaCmHcou9TxBtN0dRMr/f4Bf5D7jlvigVB1MexE= X-Authority-Info-Out: v=2.4 cv=R9wO2NRX c=1 sm=1 tr=0 ts=6a89628e cx=c_apl:c_pps:t_out a=2G65uMN5HjSv0sBfM2Yj2w==:117 a=2G65uMN5HjSv0sBfM2Yj2w==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=IbASOmaacnKWj21hykwA:9 X-JNJ: AAAAAAABgO20A5oEEgmfTuuJulRFp91QWdC5eBkccqGokRS/oS+GpoTolXYbdtY5Tpr+FFlfd1hPVaKPPstu9/gM3GWOMEPMVS79jApAstXXbJz0e/Ya6t6mjr8gpi8eAYTt8zoGzvapvSjS6wwaqq3oSR8FuH2seR5qbmEhWpQkZe5nolVPS08kbBzVWazkDXAPkaaW5OJWqDHdo8dReJDQILWNUA5qHVMkx3pX6kggv+2AQezsIIpKOkVu5DvRuZG/Fa2ifjPI0W8Y33SenFP5ttUauYQypsNVs4+G0WfTqfFP6+QtRKLWDYz0ijJZUVPvkY2RngO/quYrvKltHc7XEkv4vuUtcpVFbc6GnaPa6ihhIB8mX9/5kQCEaLUN8p2LSjkOvxiFmOmKNEpxc9vtgy0TOndDUs5uDnkEfXse3n3VH13qGVP7hnAUpG6cfqxOVky71IRii9eIa5BrGj91PQOptBBdce4LLm5FijX9f93Di1HwvluZRmxqeFnTirPzsXx5PU8JDTjDGma+dCQZ/qyVxODTzCEaRtE2f0cj26APLhdSM7hcw8zL2diVGt8Vj7jNajwzWgL4ATqZlfRx+kB4vYAAPYbUAnR09PVf8iyI6+x3IWlb2/0WbncJ3rS5EiesgXjcby+rKsV5SsKPpJJ3sc4KwiekP9hRLiYjKmk3Recf/+k9qNRF0MNQL0fuIDnnNOXnpi+zEPfMg78xpmIidYEu8dB3HkWCHo9xmbDLomabmy8QL9+eO/9xei4lwQpw31Me7ztM6gCttkTn6G/DhpH9WmkujOHaS6z4vTa3wRhV5eVEfS8neerE0RK5U/JlPBWaZUGyQe2V1pUHS1ENGbXhAOb/NTPWSvKGwLP9dCqYdyuvn0f8VMPQGh4/dKaeFFKbZ79T9ugbZmAvzfgZsRISYJnbvfyp3zMwHbY3ZvRltfNl0fQl1kenQSq5xBS/hLTRWhAi3WQdwFYyMEks8/E eDz+XlC8PJMCedwOyeKp6mVuCRBxulAInZUnoDvCi1QLs7Qcj5RBGIAvjdCo6mWd65dsSUrtwlYWZhoUn+LcJHxipXmX6K/SZ6cRZKRv46COncZ1iNL8vtITKEOLmEunOMkiYL3fy9a+6uyCiCLE9zNVXfHupiedzfyOWCE81kF7ouX+NKCSnAclEfjSWBGhQcLi+MVDk3J+jgFwUNF0qCQ== X-MailFrom: dev@haytok.jp X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation Message-ID-Hash: 6DGBIEXZLAUCGL32GTA2HGIYHPGMDXMO X-Message-ID-Hash: 6DGBIEXZLAUCGL32GTA2HGIYHPGMDXMO X-Mailman-Approved-At: Sun, 23 Aug 2026 20:53:57 +0200 CC: Hayato Kiwata X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Date: Sat, 22 Aug 2026 08:49:21 X-Original-Date: Sat, 22 Aug 2026 17:48:56 +0900 Suppose there is a single network interface on the host, with two addresses of different prefixes assigned to it. In this situation, running pasta to create an isolated netns prints "Multiple interfaces with %s routes, picked first", even though there is in fact only one candidate interface. Reproducer: sudo ip link add dummy42 type dummy sudo ip link set dev dummy42 up sudo ip addr add fdaa:aaaa:aaaa::1/64 dev dummy42 sudo ip addr add fdbb:bbbb:bbbb::1/64 dev dummy42 pasta --config-net -- true This message is meant to indicate that there are multiple candidate interfaces, but in fact there is only one, which can mislead users. Therefore, avoid printing this message when there are multiple non-default routes that all belong to the same interface. Fixes: 450a6131beab ("netlink: With no default route, pick the first interface with a route") Signed-off-by: Hayato Kiwata --- netlink.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/netlink.c b/netlink.c index 8d20dbb..225b666 100644 --- a/netlink.c +++ b/netlink.c @@ -271,6 +271,7 @@ unsigned int nl_get_ext_if(int s, sa_family_t af) }; unsigned defifi = 0, anyifi = 0; unsigned ndef = 0, nany = 0; + bool multi_anyif = false; struct nlmsghdr *nh; struct rtattr *rta; char buf[NLBUFSIZ]; @@ -330,6 +331,8 @@ unsigned int nl_get_ext_if(int s, sa_family_t af) nany++; if (!anyifi) anyifi = thisifi; + else if (anyifi != thisifi) + multi_anyif = true; } } @@ -345,7 +348,7 @@ unsigned int nl_get_ext_if(int s, sa_family_t af) } if (anyifi) { - if (nany > 1) { + if (multi_anyif) { info("Multiple interfaces with %s routes, picked first", af_name(af)); } -- 2.39.5 (Apple Git-154)