* [pve-devel] [PATCH container/manager 0/2] fix #3413: Add `Disconnect` option for LXC networks @ 2023-02-13 13:56 Christoph Heiss 2023-02-13 13:56 ` [pve-devel] [PATCH container 1/2] net: Add `link_down` config to allow setting interfaces as disconnected Christoph Heiss 2023-02-13 13:57 ` [pve-devel] [PATCH manager 2/2] lxc: Add `Disconnect` option for network interfaces Christoph Heiss 0 siblings, 2 replies; 8+ messages in thread From: Christoph Heiss @ 2023-02-13 13:56 UTC (permalink / raw) To: pve-devel This adds a `Disconnect` option for network interfaces on LXC containers, much like it already exists for VMs. This has been requested in #3413 [0] and seems useful, esp. considering we already support the same thing for VMs. One thing to note is that LXC does not seem to support the notion of setting an interface down. The `flags` property would suggest that this possible [1], but AFAICS it does not work. I tried setting the value as empty and to something else than "up" (since that is really the only supported option [2][3]), which both had absolutely no effect. The solution was to force the host-side link of the container network down, thus effectively becoming "physically" disconnected. [0] https://bugzilla.proxmox.com/show_bug.cgi?id=3413 [1] https://linuxcontainers.org/lxc/manpages/man5/lxc.container.conf.5.html#lbAO [2] https://github.com/lxc/lxc/blob/08f0e769/src/lxc/confile.c#L453-L467 [3] https://github.com/lxc/lxc/blob/08f0e769/src/lxc/confile.c#L5933-L5952 pve-container: Christoph Heiss (1): net: Add `link_down` config to allow setting interfaces as disconnected src/PVE/LXC.pm | 20 +++++++++++++------- src/PVE/LXC/Config.pm | 5 +++++ src/lxcnetaddbr | 3 ++- 3 files changed, 20 insertions(+), 8 deletions(-) pve-manager: Christoph Heiss (1): lxc: Add `Disconnect` option for network interfaces www/manager6/Parser.js | 3 +++ www/manager6/lxc/Network.js | 13 +++++++++++++ 2 files changed, 16 insertions(+) -- 2.39.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [pve-devel] [PATCH container 1/2] net: Add `link_down` config to allow setting interfaces as disconnected 2023-02-13 13:56 [pve-devel] [PATCH container/manager 0/2] fix #3413: Add `Disconnect` option for LXC networks Christoph Heiss @ 2023-02-13 13:56 ` Christoph Heiss 2023-02-13 14:31 ` Wolfgang Bumiller 2023-02-14 9:52 ` Thomas Lamprecht 2023-02-13 13:57 ` [pve-devel] [PATCH manager 2/2] lxc: Add `Disconnect` option for network interfaces Christoph Heiss 1 sibling, 2 replies; 8+ messages in thread From: Christoph Heiss @ 2023-02-13 13:56 UTC (permalink / raw) To: pve-devel If this network option is set, the host-side link will be forced down. This has the effect that the interface inside the container has LOWERLAYERDOWN set, which basically means that the PHY is considered down, thus effectivly being "unplugged". Also fix some trailing whitespace while touching the file. Signed-off-by: Christoph Heiss <c.heiss@proxmox.com> --- src/PVE/LXC.pm | 20 +++++++++++++------- src/PVE/LXC/Config.pm | 5 +++++ src/lxcnetaddbr | 3 ++- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/PVE/LXC.pm b/src/PVE/LXC.pm index ce6d5a5..039a476 100644 --- a/src/PVE/LXC.pm +++ b/src/PVE/LXC.pm @@ -668,7 +668,7 @@ sub update_lxc_config { # some init scripts expect a linux terminal (turnkey). $raw .= "lxc.environment = TERM=linux\n"; - + my $utsname = $conf->{hostname} || "CT$vmid"; $raw .= "lxc.uts.name = $utsname\n"; @@ -932,8 +932,9 @@ sub update_net { my $oldnet = PVE::LXC::Config->parse_lxc_network($oldnetcfg); if (safe_string_ne($oldnet->{hwaddr}, $newnet->{hwaddr}) || - safe_string_ne($oldnet->{name}, $newnet->{name})) { - + safe_string_ne($oldnet->{name}, $newnet->{name}) || + defined($oldnet->{link_down}) != defined($newnet->{link_down}) + ) { PVE::Network::veth_delete($veth); delete $conf->{$opt}; PVE::LXC::Config->write_config($vmid, $conf); @@ -1010,6 +1011,11 @@ sub hotplug_net { $cmd = ['lxc-attach', '-n', $vmid, '-s', 'NETWORK', '--', '/sbin/ip', 'link', 'set', $eth ,'up' ]; PVE::Tools::run_command($cmd); + # In case the network device should be disconnected, force the host-link down + if (defined($newnet->{link_down})) { + PVE::Tools::run_command(['/sbin/ip', 'link', 'set', 'dev', $veth, 'down']); + } + my $done = { type => 'veth' }; foreach (qw(bridge tag firewall hwaddr name)) { $done->{$_} = $newnet->{$_} if $newnet->{$_}; @@ -1703,14 +1709,14 @@ sub __mountpoint_mount { my $type = $mountpoint->{type}; my $quota = !$snapname && !$mountpoint->{ro} && $mountpoint->{quota}; my $mounted_dev; - + return if !$volid || !$mount; $mount =~ s!/+!/!g; my $mount_path; my ($mpfd, $parentfd, $last_dir); - + if (defined($rootdir)) { ($rootdir, $mount_path, $mpfd, $parentfd, $last_dir) = __mount_prepare_rootdir($rootdir, $mount, $rootuid, $rootgid); @@ -1719,7 +1725,7 @@ sub __mountpoint_mount { if (defined($stage_mount)) { $mount_path = $rootdir; } - + my ($storage, $volname) = PVE::Storage::parse_volume_id($volid, 1); die "unknown snapshot path for '$volid'" if !$storage && defined($snapname); @@ -1828,7 +1834,7 @@ sub __mountpoint_mount { warn "cannot enable quota control for bind mounts\n" if $quota; return wantarray ? ($volid, 0, undef) : $volid; } - + die "unsupported storage"; } diff --git a/src/PVE/LXC/Config.pm b/src/PVE/LXC/Config.pm index af25a96..1d4362e 100644 --- a/src/PVE/LXC/Config.pm +++ b/src/PVE/LXC/Config.pm @@ -814,6 +814,11 @@ our $netconf_desc = { description => "Apply rate limiting to the interface", optional => 1, }, + link_down => { + type => 'boolean', + description => 'Whether this interface should be disconnected (like pulling the plug).', + optional => 1, + }, }; PVE::JSONSchema::register_format('pve-lxc-network', $netconf_desc); diff --git a/src/lxcnetaddbr b/src/lxcnetaddbr index 83052e1..d8c6767 100755 --- a/src/lxcnetaddbr +++ b/src/lxcnetaddbr @@ -58,7 +58,8 @@ if (-d "/sys/class/net/$iface") { #avoid insecure dependency; ($bridgemtu) = $bridgemtu =~ /(\d+)/; - PVE::Tools::run_command("/sbin/ip link set dev $iface up mtu $bridgemtu"); + my $linkstate = defined($net->{link_down}) ? 'down' : 'up'; + PVE::Tools::run_command("/sbin/ip link set dev $iface $linkstate mtu $bridgemtu"); PVE::Tools::run_command("/sbin/ip addr add 0.0.0.0/0 dev $iface"); if ($have_sdn) { -- 2.39.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [pve-devel] [PATCH container 1/2] net: Add `link_down` config to allow setting interfaces as disconnected 2023-02-13 13:56 ` [pve-devel] [PATCH container 1/2] net: Add `link_down` config to allow setting interfaces as disconnected Christoph Heiss @ 2023-02-13 14:31 ` Wolfgang Bumiller 2023-02-14 9:29 ` Christoph Heiss 2023-02-14 9:52 ` Thomas Lamprecht 1 sibling, 1 reply; 8+ messages in thread From: Wolfgang Bumiller @ 2023-02-13 14:31 UTC (permalink / raw) To: Christoph Heiss; +Cc: pve-devel On Mon, Feb 13, 2023 at 02:56:59PM +0100, Christoph Heiss wrote: > If this network option is set, the host-side link will be forced down. > This has the effect that the interface inside the container has > LOWERLAYERDOWN set, which basically means that the PHY is considered > down, thus effectivly being "unplugged". > > Also fix some trailing whitespace while touching the file. > > Signed-off-by: Christoph Heiss <c.heiss@proxmox.com> > --- > src/PVE/LXC.pm | 20 +++++++++++++------- > src/PVE/LXC/Config.pm | 5 +++++ > src/lxcnetaddbr | 3 ++- > 3 files changed, 20 insertions(+), 8 deletions(-) > > diff --git a/src/PVE/LXC.pm b/src/PVE/LXC.pm > index ce6d5a5..039a476 100644 > --- a/src/PVE/LXC.pm > +++ b/src/PVE/LXC.pm > @@ -668,7 +668,7 @@ sub update_lxc_config { > > # some init scripts expect a linux terminal (turnkey). > $raw .= "lxc.environment = TERM=linux\n"; > - > + > my $utsname = $conf->{hostname} || "CT$vmid"; > $raw .= "lxc.uts.name = $utsname\n"; > > @@ -932,8 +932,9 @@ sub update_net { > my $oldnet = PVE::LXC::Config->parse_lxc_network($oldnetcfg); > > if (safe_string_ne($oldnet->{hwaddr}, $newnet->{hwaddr}) || > - safe_string_ne($oldnet->{name}, $newnet->{name})) { > - > + safe_string_ne($oldnet->{name}, $newnet->{name}) || > + defined($oldnet->{link_down}) != defined($newnet->{link_down}) Doing this here would cause the interface to be deleted and recreated in a "down" state, which is much more disruptive than it needs to be. Instead, this should be treated more like we do changing the 'bridge' property (the 'else' case just below this), and stop after the `tap_unplug` for the 'down' case. > + ) { > PVE::Network::veth_delete($veth); > delete $conf->{$opt}; > PVE::LXC::Config->write_config($vmid, $conf); > @@ -1010,6 +1011,11 @@ sub hotplug_net { > $cmd = ['lxc-attach', '-n', $vmid, '-s', 'NETWORK', '--', '/sbin/ip', 'link', 'set', $eth ,'up' ]; > PVE::Tools::run_command($cmd); > > + # In case the network device should be disconnected, force the host-link down > + if (defined($newnet->{link_down})) { > + PVE::Tools::run_command(['/sbin/ip', 'link', 'set', 'dev', $veth, 'down']); These interfaces are usually part of a bridge, and therefore the next `ifreload` (and probably some other things) would re-enable them automatically. We do need to actually "unplug" them from the bridge (tap_unplug) to avoid this. > + } > + > my $done = { type => 'veth' }; > foreach (qw(bridge tag firewall hwaddr name)) { > $done->{$_} = $newnet->{$_} if $newnet->{$_}; > @@ -1703,14 +1709,14 @@ sub __mountpoint_mount { > my $type = $mountpoint->{type}; > my $quota = !$snapname && !$mountpoint->{ro} && $mountpoint->{quota}; > my $mounted_dev; > - > + > return if !$volid || !$mount; > > $mount =~ s!/+!/!g; > > my $mount_path; > my ($mpfd, $parentfd, $last_dir); > - > + > if (defined($rootdir)) { > ($rootdir, $mount_path, $mpfd, $parentfd, $last_dir) = > __mount_prepare_rootdir($rootdir, $mount, $rootuid, $rootgid); > @@ -1719,7 +1725,7 @@ sub __mountpoint_mount { > if (defined($stage_mount)) { > $mount_path = $rootdir; > } > - > + > my ($storage, $volname) = PVE::Storage::parse_volume_id($volid, 1); > > die "unknown snapshot path for '$volid'" if !$storage && defined($snapname); > @@ -1828,7 +1834,7 @@ sub __mountpoint_mount { > warn "cannot enable quota control for bind mounts\n" if $quota; > return wantarray ? ($volid, 0, undef) : $volid; > } > - > + > die "unsupported storage"; > } > > diff --git a/src/PVE/LXC/Config.pm b/src/PVE/LXC/Config.pm > index af25a96..1d4362e 100644 > --- a/src/PVE/LXC/Config.pm > +++ b/src/PVE/LXC/Config.pm > @@ -814,6 +814,11 @@ our $netconf_desc = { > description => "Apply rate limiting to the interface", > optional => 1, > }, > + link_down => { > + type => 'boolean', > + description => 'Whether this interface should be disconnected (like pulling the plug).', > + optional => 1, > + }, > }; > PVE::JSONSchema::register_format('pve-lxc-network', $netconf_desc); > > diff --git a/src/lxcnetaddbr b/src/lxcnetaddbr > index 83052e1..d8c6767 100755 > --- a/src/lxcnetaddbr > +++ b/src/lxcnetaddbr > @@ -58,7 +58,8 @@ if (-d "/sys/class/net/$iface") { > #avoid insecure dependency; > ($bridgemtu) = $bridgemtu =~ /(\d+)/; > > - PVE::Tools::run_command("/sbin/ip link set dev $iface up mtu $bridgemtu"); > + my $linkstate = defined($net->{link_down}) ? 'down' : 'up'; We need to skip the rest altogether if the link is supposed to stay down reliably. As mentioned above, a 'down' interface that is still plugged into a bridge will get activated sooner or later... > + PVE::Tools::run_command("/sbin/ip link set dev $iface $linkstate mtu $bridgemtu"); > PVE::Tools::run_command("/sbin/ip addr add 0.0.0.0/0 dev $iface"); > > if ($have_sdn) { > -- > 2.39.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [pve-devel] [PATCH container 1/2] net: Add `link_down` config to allow setting interfaces as disconnected 2023-02-13 14:31 ` Wolfgang Bumiller @ 2023-02-14 9:29 ` Christoph Heiss 0 siblings, 0 replies; 8+ messages in thread From: Christoph Heiss @ 2023-02-14 9:29 UTC (permalink / raw) To: Wolfgang Bumiller; +Cc: pve-devel Thanks for the review! On Mon, Feb 13, 2023 at 03:31:32PM +0100, Wolfgang Bumiller wrote: > On Mon, Feb 13, 2023 at 02:56:59PM +0100, Christoph Heiss wrote: > > [..] > > > > diff --git a/src/PVE/LXC.pm b/src/PVE/LXC.pm > > index ce6d5a5..039a476 100644 > > --- a/src/PVE/LXC.pm > > +++ b/src/PVE/LXC.pm > > @@ -668,7 +668,7 @@ sub update_lxc_config { > > > > # some init scripts expect a linux terminal (turnkey). > > $raw .= "lxc.environment = TERM=linux\n"; > > - > > + > > my $utsname = $conf->{hostname} || "CT$vmid"; > > $raw .= "lxc.uts.name = $utsname\n"; > > > > @@ -932,8 +932,9 @@ sub update_net { > > my $oldnet = PVE::LXC::Config->parse_lxc_network($oldnetcfg); > > > > if (safe_string_ne($oldnet->{hwaddr}, $newnet->{hwaddr}) || > > - safe_string_ne($oldnet->{name}, $newnet->{name})) { > > - > > + safe_string_ne($oldnet->{name}, $newnet->{name}) || > > + defined($oldnet->{link_down}) != defined($newnet->{link_down}) > > Doing this here would cause the interface to be deleted and recreated in > a "down" state, which is much more disruptive than it needs to be. > Instead, this should be treated more like we do changing the 'bridge' > property (the 'else' case just below this), and stop after the > `tap_unplug` for the 'down' case. Ack. I see, that's a good point. > > > + ) { > > PVE::Network::veth_delete($veth); > > delete $conf->{$opt}; > > PVE::LXC::Config->write_config($vmid, $conf); > > @@ -1010,6 +1011,11 @@ sub hotplug_net { > > $cmd = ['lxc-attach', '-n', $vmid, '-s', 'NETWORK', '--', '/sbin/ip', 'link', 'set', $eth ,'up' ]; > > PVE::Tools::run_command($cmd); > > > > + # In case the network device should be disconnected, force the host-link down > > + if (defined($newnet->{link_down})) { > > + PVE::Tools::run_command(['/sbin/ip', 'link', 'set', 'dev', $veth, 'down']); > > These interfaces are usually part of a bridge, and therefore the next > `ifreload` (and probably some other things) would re-enable them > automatically. I did not know this, thanks for explaining! > > We do need to actually "unplug" them from the bridge (tap_unplug) to > avoid this. Will rework that for v2 and do it properly. > > > + } > > + > > my $done = { type => 'veth' }; > > foreach (qw(bridge tag firewall hwaddr name)) { > > $done->{$_} = $newnet->{$_} if $newnet->{$_}; > > > > [..] > > diff --git a/src/lxcnetaddbr b/src/lxcnetaddbr > > index 83052e1..d8c6767 100755 > > --- a/src/lxcnetaddbr > > +++ b/src/lxcnetaddbr > > @@ -58,7 +58,8 @@ if (-d "/sys/class/net/$iface") { > > #avoid insecure dependency; > > ($bridgemtu) = $bridgemtu =~ /(\d+)/; > > > > - PVE::Tools::run_command("/sbin/ip link set dev $iface up mtu $bridgemtu"); > > + my $linkstate = defined($net->{link_down}) ? 'down' : 'up'; > > We need to skip the rest altogether if the link is supposed to stay down > reliably. As mentioned above, a 'down' interface that is still plugged > into a bridge will get activated sooner or later... Funnily enough, in my first draft I actually had it like that, so that it wasn't connected to the brigde at all. Now I know what cases to also test for v2. > > > + PVE::Tools::run_command("/sbin/ip link set dev $iface $linkstate mtu $bridgemtu"); > > PVE::Tools::run_command("/sbin/ip addr add 0.0.0.0/0 dev $iface"); > > > > if ($have_sdn) { > > -- > > 2.39.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [pve-devel] [PATCH container 1/2] net: Add `link_down` config to allow setting interfaces as disconnected 2023-02-13 13:56 ` [pve-devel] [PATCH container 1/2] net: Add `link_down` config to allow setting interfaces as disconnected Christoph Heiss 2023-02-13 14:31 ` Wolfgang Bumiller @ 2023-02-14 9:52 ` Thomas Lamprecht 2023-02-14 10:10 ` Christoph Heiss 1 sibling, 1 reply; 8+ messages in thread From: Thomas Lamprecht @ 2023-02-14 9:52 UTC (permalink / raw) To: Proxmox VE development discussion, Christoph Heiss On 13/02/2023 14:56, Christoph Heiss wrote: > + link_down => { > + type => 'boolean', > + description => 'Whether this interface should be disconnected (like pulling the plug).', > + optional => 1, > + }, I'd prefer using kebab-case over snake_case for new properties, or do we really gain anything here (e.g., qemu-server related infra reuse?) besides from that, the patch here contains quite some unrelated whitespace changes, please avoid that. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [pve-devel] [PATCH container 1/2] net: Add `link_down` config to allow setting interfaces as disconnected 2023-02-14 9:52 ` Thomas Lamprecht @ 2023-02-14 10:10 ` Christoph Heiss 2023-02-14 10:20 ` Thomas Lamprecht 0 siblings, 1 reply; 8+ messages in thread From: Christoph Heiss @ 2023-02-14 10:10 UTC (permalink / raw) To: Thomas Lamprecht; +Cc: Proxmox VE development discussion On Tue, Feb 14, 2023 at 10:52:15AM +0100, Thomas Lamprecht wrote: > On 13/02/2023 14:56, Christoph Heiss wrote: > > + link_down => { > > + type => 'boolean', > > + description => 'Whether this interface should be disconnected (like pulling the plug).', > > + optional => 1, > > + }, > > I'd prefer using kebab-case over snake_case for new properties, or do > we really gain anything here (e.g., qemu-server related infra reuse?) Not that I would see. This was very much inspired by the qemu-server API and would provide some form of "uniformity" between those two, but I will change that for v2. kebap-case is nicer anyway. > > besides from that, the patch here contains quite some unrelated whitespace > changes, please avoid that. That was intentional (as noted), since there are trailing whitespaces all over the file, which can be somewhat annoying if one's editor automatically trims trailing whitespaces on save purposefully. But I will omit that from the next revision, fine by me. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [pve-devel] [PATCH container 1/2] net: Add `link_down` config to allow setting interfaces as disconnected 2023-02-14 10:10 ` Christoph Heiss @ 2023-02-14 10:20 ` Thomas Lamprecht 0 siblings, 0 replies; 8+ messages in thread From: Thomas Lamprecht @ 2023-02-14 10:20 UTC (permalink / raw) To: Christoph Heiss; +Cc: Proxmox VE development discussion On 14/02/2023 11:10, Christoph Heiss wrote: >> besides from that, the patch here contains quite some unrelated whitespace >> changes, please avoid that. > That was intentional (as noted), since there are trailing whitespaces > all over the file, which can be somewhat annoying if one's editor > automatically trims trailing whitespaces on save purposefully. > But I will omit that from the next revision, fine by me. I never said that fixing it is wrong, but it's completely unrelated for your change, and thus noise - please do that in a separate patch upfront for the next revision, then it could have been already applied now ;-) ^ permalink raw reply [flat|nested] 8+ messages in thread
* [pve-devel] [PATCH manager 2/2] lxc: Add `Disconnect` option for network interfaces 2023-02-13 13:56 [pve-devel] [PATCH container/manager 0/2] fix #3413: Add `Disconnect` option for LXC networks Christoph Heiss 2023-02-13 13:56 ` [pve-devel] [PATCH container 1/2] net: Add `link_down` config to allow setting interfaces as disconnected Christoph Heiss @ 2023-02-13 13:57 ` Christoph Heiss 1 sibling, 0 replies; 8+ messages in thread From: Christoph Heiss @ 2023-02-13 13:57 UTC (permalink / raw) To: pve-devel Signed-off-by: Christoph Heiss <c.heiss@proxmox.com> --- www/manager6/Parser.js | 3 +++ www/manager6/lxc/Network.js | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/www/manager6/Parser.js b/www/manager6/Parser.js index 9f7b2c84..c3772d3b 100644 --- a/www/manager6/Parser.js +++ b/www/manager6/Parser.js @@ -298,6 +298,8 @@ Ext.define('PVE.Parser', { data[match_res[1]] = match_res[2]; } else if ((match_res = p.match(/^firewall=(\d+)$/)) !== null) { data.firewall = PVE.Parser.parseBoolean(match_res[1]); + } else if ((match_res = p.match(/^link_down=(\d+)$/)) !== null) { + data.link_down = PVE.Parser.parseBoolean(match_res[1]); } else if (!p.match(/^type=\S+$/)) { console.warn(`could not parse LXC network string ${p}`); } @@ -319,6 +321,7 @@ Ext.define('PVE.Parser', { name: 1, rate: 1, tag: 1, + link_down: 1, }; return Object.entries(config) .filter(([k, v]) => v !== undefined && v !== '' && knownKeys[k]) diff --git a/www/manager6/lxc/Network.js b/www/manager6/lxc/Network.js index 85033bd8..746924b3 100644 --- a/www/manager6/lxc/Network.js +++ b/www/manager6/lxc/Network.js @@ -282,6 +282,12 @@ Ext.define('PVE.lxc.NetworkInputPanel', { minValue: 576, maxValue: 65535, }, + { + xtype: 'proxmoxcheckbox', + fieldLabel: gettext('Disconnect'), + name: 'link_down', + value: cdata.link_down, + }, ]; me.advancedColumn2 = [ @@ -539,6 +545,12 @@ Ext.define('PVE.lxc.NetworkView', { width: 80, dataIndex: 'mtu', }, + { + header: gettext('Disconnected'), + width: 100, + dataIndex: 'link_down', + renderer: Proxmox.Utils.format_boolean, + }, ], listeners: { activate: me.load, @@ -564,6 +576,7 @@ Ext.define('PVE.lxc.NetworkView', { 'tag', 'firewall', 'mtu', + 'link_down', ], }); }); -- 2.39.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-02-14 10:20 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2023-02-13 13:56 [pve-devel] [PATCH container/manager 0/2] fix #3413: Add `Disconnect` option for LXC networks Christoph Heiss 2023-02-13 13:56 ` [pve-devel] [PATCH container 1/2] net: Add `link_down` config to allow setting interfaces as disconnected Christoph Heiss 2023-02-13 14:31 ` Wolfgang Bumiller 2023-02-14 9:29 ` Christoph Heiss 2023-02-14 9:52 ` Thomas Lamprecht 2023-02-14 10:10 ` Christoph Heiss 2023-02-14 10:20 ` Thomas Lamprecht 2023-02-13 13:57 ` [pve-devel] [PATCH manager 2/2] lxc: Add `Disconnect` option for network interfaces Christoph Heiss
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox