]> git.proxmox.com Git - pve-container.git/commitdiff
lxc: add sdn veth_create|plug
authorAlexandre Derumier <aderumier@odiso.com>
Mon, 9 Mar 2020 09:24:30 +0000 (10:24 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Tue, 10 Mar 2020 18:38:08 +0000 (19:38 +0100)
src/PVE/LXC.pm
src/lxcnetaddbr

index 0f6f7fa189b9fc88a9ba84f80e508c4fe9f8645e..0245dfb1375754b70473e4f37d785dfd2ad7c9ca 100644 (file)
@@ -33,6 +33,11 @@ use PVE::GuestHelpers qw(safe_string_ne safe_num_ne safe_boolean_ne);
 use PVE::LXC::Tools;
 
 use Time::HiRes qw (gettimeofday);
+my $have_sdn;
+eval {
+    require PVE::Network::SDN::Zones;
+    $have_sdn = 1;
+};
 
 my $LXC_CONFIG_PATH = '/usr/share/lxc/config';
 
@@ -913,7 +918,12 @@ sub update_net {
                    PVE::LXC::Config->write_config($vmid, $conf);
                }
 
-               PVE::Network::tap_plug($veth, $newnet->{bridge}, $newnet->{tag}, $newnet->{firewall}, $newnet->{trunks}, $newnet->{rate});
+               if($have_sdn) {
+                   PVE::Network::SDN::Zones::tap_plug($veth, $newnet->{bridge}, $newnet->{tag}, $newnet->{firewall}, $newnet->{trunks}, $newnet->{rate});
+               } else {
+                   PVE::Network::tap_plug($veth, $newnet->{bridge}, $newnet->{tag}, $newnet->{firewall}, $newnet->{trunks}, $newnet->{rate});
+               }
+
                # This includes the rate:
                foreach (qw(bridge tag firewall rate)) {
                    $oldnet->{$_} = $newnet->{$_} if $newnet->{$_};
@@ -941,8 +951,13 @@ sub hotplug_net {
     my $vethpeer = $veth . "p";
     my $eth = $newnet->{name};
 
-    PVE::Network::veth_create($veth, $vethpeer, $newnet->{bridge}, $newnet->{hwaddr});
-    PVE::Network::tap_plug($veth, $newnet->{bridge}, $newnet->{tag}, $newnet->{firewall}, $newnet->{trunks}, $newnet->{rate});
+    if($have_sdn) {
+       PVE::Network::SDN::Zones::veth_create($veth, $vethpeer, $newnet->{bridge}, $newnet->{hwaddr});
+       PVE::Network::SDN::Zones::tap_plug($veth, $newnet->{bridge}, $newnet->{tag}, $newnet->{firewall}, $newnet->{trunks}, $newnet->{rate});
+    } else {
+       PVE::Network::veth_create($veth, $vethpeer, $newnet->{bridge}, $newnet->{hwaddr});
+       PVE::Network::tap_plug($veth, $newnet->{bridge}, $newnet->{tag}, $newnet->{firewall}, $newnet->{trunks}, $newnet->{rate});
+    }
 
     # attach peer in container
     my $cmd = ['lxc-device', '-n', $vmid, 'add', $vethpeer, "$eth" ];
index 5cb6b0b8da11e1d94bf952ffc46f7450791608d9..ddc87f73629798fea7332beb445bbfff16b5da67 100755 (executable)
@@ -9,6 +9,11 @@ use PVE::LXC;
 use PVE::Tools qw(run_command);
 use PVE::Network;
 use PVE::ProcFSTools;
+my $have_sdn;
+eval {
+    require PVE::Network::SDN::Zones;
+    $have_sdn = 1;
+};
 
 die "got unexpected argument count\n" if scalar(@ARGV) != 5;
 
@@ -47,6 +52,10 @@ die "missing bridge configuration" if !$bridge;
 
 if (-d "/sys/class/net/$iface") {
 
+    if($have_sdn) {
+       ($bridge, undef) = PVE::Network::SDN::Zones::get_bridge_vlan($bridge);
+    } 
+
     my $bridgemtu = PVE::Tools::file_read_firstline("/sys/class/net/$bridge/mtu");
     die "bridge '$bridge' does not exist\n" if !$bridgemtu;
     #avoid insecure dependency;
@@ -54,7 +63,12 @@ if (-d "/sys/class/net/$iface") {
 
     PVE::Tools::run_command("/sbin/ip link set dev $iface up mtu $bridgemtu");
     PVE::Tools::run_command("/sbin/ip addr add 0.0.0.0/0 dev $iface");
-    PVE::Network::tap_plug($iface, $bridge, $tag, $firewall, $trunks, $rate);
+
+    if($have_sdn) {
+       PVE::Network::SDN::Zones::tap_plug($iface, $net->{bridge}, $tag, $firewall, $trunks, $rate);
+    } else {
+       PVE::Network::tap_plug($iface, $bridge, $tag, $firewall, $trunks, $rate);
+    }
 }
 
 exit 0;