Signed-off-by: Alexandre Derumier <aderum...@odiso.com>
---
 PVE/Network/SDN/VxlanPlugin.pm | 45 ++++++++++++++++++++++++++++++++--
 1 file changed, 43 insertions(+), 2 deletions(-)

diff --git a/PVE/Network/SDN/VxlanPlugin.pm b/PVE/Network/SDN/VxlanPlugin.pm
index ae1f86a..c93dbc4 100644
--- a/PVE/Network/SDN/VxlanPlugin.pm
+++ b/PVE/Network/SDN/VxlanPlugin.pm
@@ -34,6 +34,14 @@ sub properties {
            description => "Unicast peers address ip list.",
            type => 'string',  #fixme: format 
        },
+       'vrf' => {
+           description => "vrf name.",
+           type => 'string',  #fixme: format 
+       },
+       'vrf-vxlan' => {
+           type => 'integer',
+           description => "l3vni.",
+       },
     };
 }
 
@@ -44,6 +52,8 @@ sub options {
         'multicast-address' => { optional => 1 },
         'unicast-address' => { optional => 1 },
         'vxlan-allowed' => { optional => 1 },
+        'vrf' => { optional => 1 },
+        'vrf-vxlan' => { optional => 1 },
     };
 }
 
@@ -58,6 +68,8 @@ sub generate_sdn_config {
 
     my $uplink = $plugin_config->{'uplink-id'};
     my $vxlanallowed = $plugin_config->{'vxlan-allowed'};
+    my $vrf = $plugin_config->{'vrf'};
+    my $vrfvxlan = $plugin_config->{'vrf-vxlan'};
 
     die "missing vxlan tag" if !$tag;
     my $iface = "uplink$uplink";
@@ -90,8 +102,6 @@ sub generate_sdn_config {
        $config .= "       vxlan-local-tunnelip $ifaceip\n" if $ifaceip;
        $config .= "       bridge-learning off\n";
        $config .= "       bridge-arp-nd-suppress on\n";
-       $config .= "       bridge-unicast-flood off\n";
-       $config .= "       bridge-multicast-flood off\n";
     }
 
     $config .= "       mtu $mtu\n" if $mtu;
@@ -103,6 +113,37 @@ sub generate_sdn_config {
     $config .= "       bridge_fd 0\n";
     $config .= "       mtu $mtu\n" if $mtu;
     $config .= "       alias $alias\n" if $alias;
+    $config .= "       vrf $vrf\n" if $vrf;
+
+    if ($vrf) {
+       $config .= "\n";
+       $config .= "auto $vrf\n";
+       $config .= "iface $vrf\n";
+       $config .= "       vrf-table auto\n";
+
+       if ($vrfvxlan) {
+
+           my $vxlanvrf = "vxlan$vrf";
+           my $brvrf = "br$vrf";
+
+           $config .= "\n";
+           $config .= "auto $vxlanvrf\n";
+           $config .= "iface $vxlanvrf\n";
+           $config .= "        vxlan-id $vrfvxlan\n";
+           $config .= "        vxlan-local-tunnelip $ifaceip\n" if $ifaceip;
+           $config .= "        bridge-learning off\n";
+           $config .= "        bridge-arp-nd-suppress on\n";
+           $config .= "        mtu $mtu\n" if $mtu;
+
+           $config .= "\n";
+           $config .= "auto $brvrf\n";
+           $config .= "        bridge-ports $vxlanvrf\n";
+           $config .= "        bridge_stp off\n";
+           $config .= "        bridge_fd 0\n";
+           $config .= "        mtu $mtu\n" if $mtu;
+           $config .= "        vrf $vrf\n";
+       }
+    }
 
     return $config;
 }
-- 
2.20.1

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to