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? Jon Maloy (9): conf: Support CIDR notation for -a/--address option ip: Introduce unified multi-address data structures conf: Refactor conf_print() for multi-address support fwd: Check all configured addresses in guest accessibility functions arp: Check all configured addresses in ARP filtering conf: Allow multiple -a/--address options per address family pasta: Unify address configuration paths using address array ip: Track observed guest IPv4 addresses in unified address array ip: Track observed guest IPv6 addresses in unified address array arp.c | 12 ++- conf.c | 290 +++++++++++++++++++++++++++++++++++++----------------- dhcp.c | 8 +- dhcpv6.c | 10 +- dhcpv6.h | 2 +- fwd.c | 137 ++++++++++++++++++++------ inany.c | 29 ++++++ inany.h | 19 ++++ ip.c | 21 ++++ ip.h | 6 ++ migrate.c | 105 ++++++++++++++++++-- ndp.c | 6 +- netlink.c | 84 ++++++++++++++++ netlink.h | 5 + passt.1 | 17 +++- passt.h | 26 ++--- pasta.c | 54 ++++++---- tap.c | 116 ++++++++++++++++++---- 18 files changed, 744 insertions(+), 203 deletions(-) -- 2.52.0