This version contains what I perceive as the least controversial parts of my previous RFC series. It basically makes address handling behave like before, but now allowing multiple addresses both at the host side and the guest side. v2: - Added the earlier standalone CIDR commit to the head of the series. - Replaced the guest namespace interface subscriptions with just an address observation feature, so that it works with both PASTA and PASST. - Unified 'no_copy_addrs' and 'copy_addrs' code paths, as suggested by David G. - Multiple other changes, also based on feedback from David. - Removed the host interface subscription patches, -for now. I intend to re-add them once this series is applied. - Outstanding question: When do we add an IPv4 link local address to the guest? Only in local/opaque mode? Only when explicitly requested? Always? v3: - Unified the IPv4 and IPv6 arrays into one array - Changed prefix_len to always be in IPv6/IpV4 mapped format - Updated migration protocol to v3, handling multiple addresses - Many other smaller changes, based on feedback from the PASST team v4: - Numerous changes based on feedback - Added several new commits, mostly broken out of the pre-existing ones. Jon Maloy (12): ip: Introduce unified multi-address data structures ip: Introduce for_each_addr() macro for address iteration fwd: Unify guest accessibility checks with unified address array arp: Check all configured addresses in ARP filtering pasta: Extract pasta_ns_conf_ip4/6() to reduce nesting netlink: Return prefix length for IPv6 addresses in nl_addr_get() conf: Allow multiple -a/--address options per address family ip: Track observed guest IPv4 addresses in unified address array ip: Track observed guest IPv6 addresses in unified address array fwd: Unify fwd_set_observed_ip4() and fwd_set_observed_ip6() migrate: Rename v1 address functions to v2 for clarity migrate: Update protocol to v3 for multi-address support arp.c | 15 +++- conf.c | 147 +++++++++++++++++++++--------------- conf.h | 8 ++ dhcp.c | 13 +++- dhcpv6.c | 11 ++- dhcpv6.h | 2 +- fwd.c | 221 ++++++++++++++++++++++++++++++++++++++---------------- fwd.h | 3 + inany.h | 3 + ip.h | 5 ++ migrate.c | 185 ++++++++++++++++++++++++++++++++++++++++----- ndp.c | 17 ++++- netlink.c | 4 +- passt.h | 104 +++++++++++++++++++++---- pasta.c | 200 ++++++++++++++++++++++++++++-------------------- tap.c | 72 +++++++++++++----- 16 files changed, 736 insertions(+), 274 deletions(-) -- 2.52.0