From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 2BB7C1FF17C for ; Wed, 9 Jul 2025 14:35:17 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id BC035B523; Wed, 9 Jul 2025 14:35:33 +0200 (CEST) From: Filip Schauer To: pve-devel@lists.proxmox.com Date: Wed, 9 Jul 2025 14:34:23 +0200 Message-ID: <20250709123435.64796-7-f.schauer@proxmox.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250709123435.64796-1-f.schauer@proxmox.com> References: <20250709123435.64796-1-f.schauer@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.014 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH container v3 06/13] configure static IP in LXC config for custom entrypoint X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" When a container uses the default `/sbin/init` entrypoint, network interface configuration is usually managed by processes within the container. However, containers with a different entrypoint might not have any internal network management process. Consequently, IP addresses might not be assigned. This change ensures that a static IP address is explicitly set in the LXC config for the container. Signed-off-by: Filip Schauer --- Changed since v2: * rebase onto newest master (5a8b3f962f16) and re-format with proxmox-perltidy * add an "ipmanagehost" property to pct.conf to control whether network interface IP configuration should be handled by the host. src/PVE/API2/LXC.pm | 4 ++++ src/PVE/LXC.pm | 15 +++++++++++++++ src/PVE/LXC/Config.pm | 14 ++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/src/PVE/API2/LXC.pm b/src/PVE/API2/LXC.pm index c3d0037..096dfb8 100644 --- a/src/PVE/API2/LXC.pm +++ b/src/PVE/API2/LXC.pm @@ -587,6 +587,10 @@ __PACKAGE__->register_method({ # An entrypoint other than /sbin/init breaks the tty console mode. # This is fixed by setting cmode: console $conf->{cmode} = 'console'; + + # Manage the IP configuration for the container. A container with a + # custom entrypoint likely lacks internal network management. + $conf->{ipmanagehost} = 1; } } diff --git a/src/PVE/LXC.pm b/src/PVE/LXC.pm index 37ff8e1..7c9caf6 100644 --- a/src/PVE/LXC.pm +++ b/src/PVE/LXC.pm @@ -835,6 +835,21 @@ sub update_lxc_config { if ($lxc_major >= 4) { $raw .= "lxc.net.$ind.script.up = /usr/share/lxc/lxcnetaddbr\n"; } + + if ((!defined($d->{link_down}) || $d->{link_down} != 1) && $conf->{ipmanagehost}) { + if (defined($d->{ip})) { + die "$k: DHCP is not supported with a custom entrypoint\n" if $d->{ip} eq 'dhcp'; + $raw .= "lxc.net.$ind.ipv4.address = $d->{ip}\n" if $d->{ip} ne 'manual'; + } + $raw .= "lxc.net.$ind.ipv4.gateway = $d->{gw}\n" if defined($d->{gw}); + if (defined($d->{ip6})) { + die "$k: DHCPv6 and SLAAC are not supported with a custom entrypoint\n" + if $d->{ip6} =~ /^(auto|dhcp)$/; + $raw .= "lxc.net.$ind.ipv6.address = $d->{ip6}\n" if $d->{ip6} ne 'manual'; + } + $raw .= "lxc.net.$ind.ipv6.gateway = $d->{gw6}\n" if defined($d->{gw6}); + $raw .= "lxc.net.$ind.flags = up\n"; + } } my $had_cpuset = 0; diff --git a/src/PVE/LXC/Config.pm b/src/PVE/LXC/Config.pm index fb370cf..c2f56e4 100644 --- a/src/PVE/LXC/Config.pm +++ b/src/PVE/LXC/Config.pm @@ -594,6 +594,12 @@ my $confdesc = { . " This is saved as comment inside the configuration file.", maxLength => 1024 * 8, }, + ipmanagehost => { + type => 'boolean', + description => + "Whether this interface's IP configuration should be managed by the host.", + optional => 1, + }, searchdomain => { optional => 1, type => 'string', @@ -1284,6 +1290,14 @@ sub update_pct_config { die "$opt: MTU size '$mtu' is bigger than bridge MTU '$bridge_mtu'\n" if ($mtu > $bridge_mtu); } + + if ((!defined($res->{link_down}) || $res->{link_down} != 1) && $conf->{ipmanagehost}) { + die "$opt: DHCP is not supported with a custom entrypoint\n" + if defined($res->{ip}) && $res->{ip} eq 'dhcp'; + + die "$opt: DHCPv6 and SLAAC are not supported with a custom entrypoint\n" + if defined($res->{ip6}) && $res->{ip6} =~ /^(auto|dhcp)$/; + } } elsif ($opt =~ m/^dev(\d+)$/) { my $device = $class->parse_device($value); -- 2.47.2 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel