On Sun, Dec 14, 2025 at 08:54:30PM -0500, Jon Maloy wrote: > As preparation for supporting multiple addresses per interface, we > replace the single addr/prefix_len fields with arrays. > > - We add an ip4_addr_entry and an ip6_addr_entry struct containing > address and prefix length. > > - We set the array sizes to IP4_MAX_ADDRS=8 and IP6_MAX_ADDRS=16, > respectively. > > The only functional change is that the IPv6 prefix length now is > properly stored instead of being hardcoded to 64 even when set > via the -a option. > > Signed-off-by: Jon Maloy > --- > arp.c | 4 +-- > conf.c | 97 +++++++++++++++++++++++++++++++++----------------------- > dhcp.c | 8 ++--- > dhcpv6.c | 6 ++-- > fwd.c | 12 +++---- > ip.h | 26 +++++++++++++++ > ndp.c | 6 ++-- > passt.h | 16 ++++++---- > pasta.c | 12 ++++--- > tap.c | 4 +-- > util.h | 1 + > 11 files changed, 122 insertions(+), 70 deletions(-) > > diff --git a/arp.c b/arp.c > index bb042e9..7eaf517 100644 > --- a/arp.c > +++ b/arp.c > @@ -54,7 +54,7 @@ static bool ignore_arp(const struct ctx *c, > return true; > > /* Don't resolve the guest's assigned address, either. */ > - if (!memcmp(am->tip, &c->ip4.addr, sizeof(am->tip))) > + if (!memcmp(am->tip, &c->ip4.addrs[0].addr, sizeof(am->tip))) > return true; Sorry, missed this on my first pass. This needs to skip *all* of the guest addresses, not just the first one. Otherwise passt will respond to arps for the guest's other addresses with its own MAC which will break everything. -- David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson