From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Brivio To: passt-dev@passt.top Subject: [PATCH] conf: Fix initialisation of IPv6 unicast and link-local addresses Date: Wed, 13 Jul 2022 08:18:35 +0200 Message-ID: <20220713061835.1429854-1-sbrivio@redhat.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============7691825481108762805==" --===============7691825481108762805== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable In commit 675174d4ba25 ("conf, tap: Split netlink and pasta functions, allow interface configuration"), I broke the initial setting of the observed IPv6 addresses in two ways: - the size copied from the configured addresses corresponds to an IPv4 address, not to an IPv6 address - the observed link-local address is initialised to the configured unicast address, not the link-local one If we haven't seen the guest using some type of addresses yet, we should default to the configured values, hence these initial settings: fix both. This resulted in UDP flows to the guest from a unique local address on the network not working before the guest shows passt a valid address itself, as reported by Alona. Reported-by: Alona Paz Link: https://bugs.passt.top/show_bug.cgi?id=3D16 Fixes: 675174d4ba25 ("conf, tap: Split netlink and pasta functions, allow int= erface configuration") Signed-off-by: Stefano Brivio --- conf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf.c b/conf.c index 13cb5a1..cff71ff 100644 --- a/conf.c +++ b/conf.c @@ -589,8 +589,8 @@ static void conf_ip(struct ctx *c) IN6_IS_ADDR_UNSPECIFIED(&c->addr6) ? &c->addr6 : NULL, &prefix_len, &c->addr6_ll); =20 - memcpy(&c->addr6_seen, &c->addr6, sizeof(c->addr4_seen)); - memcpy(&c->addr6_ll_seen, &c->addr6, sizeof(c->addr4_seen)); + memcpy(&c->addr6_seen, &c->addr6, sizeof(c->addr6)); + memcpy(&c->addr6_ll_seen, &c->addr6_ll, sizeof(c->addr6_ll)); } =20 if (!c->gw4 || !c->addr4 || --=20 2.35.1 --===============7691825481108762805==--