From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=none (p=none dis=none) header.from=gibson.dropbear.id.au Authentication-Results: passt.top; dkim=fail reason="key not found in DNS" header.d=gibson.dropbear.id.au header.i=@gibson.dropbear.id.au header.a=rsa-sha256 header.s=202312 header.b=FsO6Z+gp; dkim-atps=neutral Received: from mail.ozlabs.org (gandalf.ozlabs.org [150.107.74.76]) by passt.top (Postfix) with ESMTPS id AC6C05A0279 for ; Wed, 21 Aug 2024 06:20:33 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gibson.dropbear.id.au; s=202312; t=1724214023; bh=Zb/M8//QDoZDTHhP4vkfF1pdRQyjlxKnl3LtcAAL2qI=; h=From:To:Cc:Subject:Date:From; b=FsO6Z+gpo8mmYhsI6QGTYlELIBccvRl9f+2u5tjr5rNQvhCFMa9tLuIenA0ICd4MC dyZexmXIc0CxvLgzjKOgY8+BwmnMwb5Y9t1CfrmLS/lF29V3940otVl+4zUk+UaNch eJdWMj/5E2ZTz9rCuyAKig1QvNazMUDzav947fVNiQsF/JglzMQpAQQVZNQ6xz9gOt iojghyNSorDE6RQxxtNmruqnXZQXChAE5fFY1Mg0Q+1umEDzJ54Hqbs2mud2OFEXUH tDKx6kKXyCKJRAzAVCj2feWhA7yeEnhnz2YtQgFXvgEHmjVQUrux3NwqN7BkrAC9Us u2+Ulc3bRNL9A== Received: by gandalf.ozlabs.org (Postfix, from userid 1007) id 4WpY5z1V3pz4x89; Wed, 21 Aug 2024 14:20:23 +1000 (AEST) From: David Gibson To: passt-dev@passt.top, Stefano Brivio Subject: [PATCH v2 00/23] Allow configuration of special case NATs Date: Wed, 21 Aug 2024 14:19:56 +1000 Message-ID: <20240821042020.718422-1-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.46.0 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Message-ID-Hash: AFT7SLZZDUMN2662QKEOFN2GTRI74JVI X-Message-ID-Hash: AFT7SLZZDUMN2662QKEOFN2GTRI74JVI X-MailFrom: dgibson@gandalf.ozlabs.org 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 CC: Paul Holzinger , David Gibson 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: Based on Stefano's recent patch for faster tests. Allow the user to specify which addresses are translated when used by the guest, rather than always being the gateway address or nothing. We also allow this remapping to go to the host's global address (more precisely the address assigned to the guest) rather than just host loopback. Along the way to implementing that make many changes to clarify what various addresses we track mean, fixing a number of small bugs as well. Paul, amongst other things, I think this will allow podman to (finally) nicely address #19213, picking an address to remap to the host's external address with --map-guest-addr, much like it already uses --dns-forward. Changes in v2: * Assorted minor stylistic fixes based on Stefano's review * Change name of the new options from --nat-* to --map-* * Shorten descriptions of new options in --help (leave the full text to the man page) * Add fix for the fact that changing MTU causes IPv6 to be temporarily deconfigured during perf tests David Gibson (23): treewide: Use "our address" instead of "forwarding address" util: Helper for formatting MAC addresses treewide: Rename MAC address fields for clarity treewide: Use struct assignment instead of memcpy() for IP addresses conf: Use array indices rather than pointers for DNS array slots conf: More accurately count entries added in get_dns() conf: Move DNS array bounds checks into add_dns[46] conf: Move adding of a nameserver from resolv.conf into subfunction conf: Correct setting of dns_match address in add_dns6() conf: Treat --dns addresses as guest visible addresses conf: Remove incorrect initialisation of addr_ll_seen util: Correct sock_l4() binding for link local addresses treewide: Change misleading 'addr_ll' name Clarify which addresses in ip[46]_ctx are meaningful where Initialise our_tap_ll to ip6.gw when suitable fwd: Helpers to clarify what host addresses aren't guest accessible fwd: Split notion of "our tap address" from gateway for IPv4 Don't take "our" MAC address from the host conf, fwd: Split notion of gateway/router from guest-visible host address test: Reconfigure IPv6 address after changing MTU conf: Allow address remapped to host to be configured fwd: Distinguish translatable from untranslatable addresses on inbound fwd, conf: Allow NAT of the guest's assigned address arp.c | 4 +- conf.c | 318 +++++++++++++++++++++++++----------------- dhcp.c | 21 +-- dhcpv6.c | 21 +-- flow.c | 72 +++++----- flow.h | 18 +-- fwd.c | 170 +++++++++++++++++----- icmp.c | 4 +- ndp.c | 9 +- passt.1 | 43 +++++- passt.c | 2 +- passt.h | 53 +++++-- pasta.c | 14 +- tap.c | 12 +- tcp.c | 33 ++--- tcp_internal.h | 2 +- test/lib/setup | 11 +- test/passt_in_ns/dhcp | 73 ++++++++++ test/passt_in_ns/tcp | 38 +++-- test/passt_in_ns/udp | 22 +-- test/perf/passt_tcp | 37 ++--- test/perf/passt_udp | 31 ++-- test/perf/pasta_tcp | 29 ++-- test/perf/pasta_udp | 25 ++-- test/run | 4 +- udp.c | 12 +- util.c | 22 ++- util.h | 4 +- 28 files changed, 712 insertions(+), 392 deletions(-) create mode 100644 test/passt_in_ns/dhcp -- 2.46.0