From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: passt.top; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=Q4ZHYOsU; dkim-atps=neutral Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by passt.top (Postfix) with ESMTPS id 82CE25A0265 for ; Tue, 17 Feb 2026 23:18:22 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771366701; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KDaRWW7hJd8JN6g2ynNAS0ypVX2y70aV25FhgRDcylI=; b=Q4ZHYOsUAcLoz763bcOmqvnD8H0eAo91Xxfd80hgVOQ966xFFs72NCRr2/R7yxLPq5uoqN sY/hZNs8S9H9SDvHbUtUPaImN/HorAz/pfcPJUVO1Z5WRgaa2bG2u1EaIutJ+e42UecA1B NkrnOY7N7c4VJBO7Kp+OAhaUjhiCMAI= Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-3-tfaPDyyIOtqXQyArEodUrw-1; Tue, 17 Feb 2026 17:18:18 -0500 X-MC-Unique: tfaPDyyIOtqXQyArEodUrw-1 X-Mimecast-MFC-AGG-ID: tfaPDyyIOtqXQyArEodUrw_1771366697 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 0849F18003F5; Tue, 17 Feb 2026 22:18:17 +0000 (UTC) Received: from jmaloy-thinkpadp16vgen1.rmtcaqc.csb (unknown [10.22.80.48]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 6E09B1800668; Tue, 17 Feb 2026 22:18:15 +0000 (UTC) From: Jon Maloy To: sbrivio@redhat.com, dgibson@redhat.com, david@gibson.dropbear.id.au, jmaloy@redhat.com, passt-dev@passt.top Subject: [PATCH v4 00/12] Introduce multiple addresses Date: Tue, 17 Feb 2026 17:18:02 -0500 Message-ID: <20260217221814.4053583-1-jmaloy@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: wrI6hbcsjoyguiwtmgKlBtP_yP-wi5MWou-oTxT7f5M_1771366697 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit content-type: text/plain; charset="US-ASCII"; x-default=true Message-ID-Hash: YAA5QSSMQEY2KHYRVU4EWUR4FZGKWWFA X-Message-ID-Hash: YAA5QSSMQEY2KHYRVU4EWUR4FZGKWWFA X-MailFrom: jmaloy@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: 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