From a0f7db44e8395d3ca8b3428da9d18409a696a3ad Mon Sep 17 00:00:00 2001 From: Paul Holzinger Date: Wed, 4 Jun 2025 16:46:39 +0200 Subject: [PATCH] quadlet: add InterfaceName option to network unit I noticed this was missing, its a simple 1 to 1 mapping to --interface-name. Signed-off-by: Paul Holzinger --- docs/source/markdown/podman-systemd.unit.5.md | 9 +++++++++ pkg/systemd/quadlet/quadlet.go | 7 +++++-- test/e2e/quadlet/interface-name.network | 5 +++++ test/e2e/quadlet_test.go | 1 + 4 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 test/e2e/quadlet/interface-name.network diff --git a/docs/source/markdown/podman-systemd.unit.5.md b/docs/source/markdown/podman-systemd.unit.5.md index b2cba3976f..3e802fd123 100644 --- a/docs/source/markdown/podman-systemd.unit.5.md +++ b/docs/source/markdown/podman-systemd.unit.5.md @@ -1393,6 +1393,7 @@ Valid options for `[Network]` are listed below: | Driver=bridge | --driver bridge | | Gateway=192.168.55.3 | --gateway 192.168.55.3 | | GlobalArgs=--log-level=debug | --log-level=debug | +| InterfaceName=enp1 | --interface-name enp1 | | Internal=true | --internal | | IPAMDriver=dhcp | --ipam-driver dhcp | | IPRange=192.168.55.128/25 | --ip-range 192.168.55.128/25 | @@ -1450,6 +1451,14 @@ escaped to allow inclusion of whitespace and other control characters. This key can be listed multiple times. +### `InterfaceName=` + +This option maps the *network_interface* option in the network config, see **podman network inspect**. +Depending on the driver, this can have different effects; for `bridge`, it uses the bridge interface name. +For `macvlan` and `ipvlan`, it is the parent device on the host. It is the same as `--opt parent=...`. + +This is equivalent to the Podman `--interface-name` option. + ### `Internal=` (defaults to `false`) Restrict external access of this network. diff --git a/pkg/systemd/quadlet/quadlet.go b/pkg/systemd/quadlet/quadlet.go index 5856e1b3eb..4fd27deab9 100644 --- a/pkg/systemd/quadlet/quadlet.go +++ b/pkg/systemd/quadlet/quadlet.go @@ -111,6 +111,7 @@ const ( KeyHostName = "HostName" KeyImage = "Image" KeyImageTag = "ImageTag" + KeyInterfaceName = "InterfaceName" KeyInternal = "Internal" KeyIP = "IP" KeyIP6 = "IP6" @@ -372,6 +373,7 @@ var ( KeyIPAMDriver: true, KeyIPRange: true, KeyIPv6: true, + KeyInterfaceName: true, KeyInternal: true, KeyNetworkName: true, KeyNetworkDeleteOnStop: true, @@ -975,8 +977,9 @@ func ConvertNetwork(network *parser.UnitFile, name string, unitsInfoMap map[stri lookupAndAddBoolean(network, NetworkGroup, boolKeys, podman) stringKeys := map[string]string{ - KeyDriver: "--driver", - KeyIPAMDriver: "--ipam-driver", + KeyDriver: "--driver", + KeyIPAMDriver: "--ipam-driver", + KeyInterfaceName: "--interface-name", } lookupAndAddString(network, NetworkGroup, stringKeys, podman) diff --git a/test/e2e/quadlet/interface-name.network b/test/e2e/quadlet/interface-name.network new file mode 100644 index 0000000000..531da56681 --- /dev/null +++ b/test/e2e/quadlet/interface-name.network @@ -0,0 +1,5 @@ +## assert-podman-final-args systemd-interface-name +## assert-podman-args "--interface-name" "enp1" + +[Network] +InterfaceName=enp1 diff --git a/test/e2e/quadlet_test.go b/test/e2e/quadlet_test.go index c4c2fe8165..daf63e9d04 100644 --- a/test/e2e/quadlet_test.go +++ b/test/e2e/quadlet_test.go @@ -1005,6 +1005,7 @@ BOGUS=foo Entry("Network - Gateway", "gateway.network"), Entry("Network - IPAM Driver", "ipam-driver.network"), Entry("Network - IPv6", "ipv6.network"), + Entry("Network - InterfaceName network", "interface-name.network"), Entry("Network - Internal network", "internal.network"), Entry("Network - Label", "label.network"), Entry("Network - Multiple Options", "options.multiple.network"),