[pve-devel] [PATCH container v2 06/11] configure static IP in LXC config for custom entrypoint
Wolfgang Bumiller
w.bumiller at proxmox.com
Wed Jun 25 10:30:43 CEST 2025
On Wed, Jun 25, 2025 at 10:26:20AM +0200, Wolfgang Bumiller wrote:
> On Wed, Jun 11, 2025 at 04:48:58PM +0200, Filip Schauer wrote:
> > When a container uses the default `/sbin/init` entrypoint, network
>
> I'm not a fan of this logic, also because it does not support 'dhcp' (in
> which case it should IMO fail instead).
(Missed that there will be a dhcp patch - that one could revert the
error message then - I'd still prefer to have an error initially here.
Anyway, the point about having a property to control this behavior still
stands.)
> But maybe we can figure out an IP if SDN is in use to support the dhcp
> case if there are static/permanent leases? (@Stefan?)
>
> I think this should be handled with a separate key in the containers
> network configuration. Maybe a "setup" property which defaults to
> "container" and can be set to "host" (not sure if we ever need more,
> if we know we don't, it could be a boolean...)
>
> > 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 <f.schauer at proxmox.com>
> > ---
> > src/PVE/LXC.pm | 12 ++++++++++++
> > 1 file changed, 12 insertions(+)
> >
> > diff --git a/src/PVE/LXC.pm b/src/PVE/LXC.pm
> > index b2be27e..0131ac3 100644
> > --- a/src/PVE/LXC.pm
> > +++ b/src/PVE/LXC.pm
> > @@ -818,6 +818,18 @@ 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
> > + && PVE::LXC::Config->get_entrypoint($conf) ne "/sbin/init"
> > + ) {
> > + $raw .= "lxc.net.$ind.ipv4.address = $d->{ip}\n"
> > + if defined($d->{ip}) && $d->{ip} !~ /^(dhcp|manual)$/;
> > + $raw .= "lxc.net.$ind.ipv4.gateway = $d->{gw}\n" if defined($d->{gw});
> > + $raw .= "lxc.net.$ind.ipv6.address = $d->{ip6}\n"
> > + if defined($d->{ip6}) && $d->{ip6} !~ /^(auto|dhcp|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;
> > --
> > 2.39.5
More information about the pve-devel
mailing list