conf: Fix initialisation of IPv6 unicast and link-local addresses
In commit675174d4ba
("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 <alkaplan@redhat.com> Link: https://bugs.passt.top/show_bug.cgi?id=16 Fixes:675174d4ba
("conf, tap: Split netlink and pasta functions, allow interface configuration") Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
parent
f3198c4a06
commit
4de37151c9
1 changed files with 2 additions and 2 deletions
4
conf.c
4
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);
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
if (!c->gw4 || !c->addr4 ||
|
||||
|
|
Loading…
Reference in a new issue