[pve-devel] [PATCH v2 pve-network 3/5] zones: evpn: move vnet mac option to evpn zone plugin
Alexandre Derumier
aderumier at odiso.com
Wed Apr 21 22:55:47 CEST 2021
This is only used by evpn plugin, and we can have
same anycast mac for all vnets like cisco,juniper,arista...
Signed-off-by: Alexandre Derumier <aderumier at odiso.com>
---
PVE/Network/SDN/VnetPlugin.pm | 6 ------
PVE/Network/SDN/Zones/EvpnPlugin.pm | 17 +++++++++++------
test/zones/evpn/ipv4/expected_sdn_interfaces | 1 +
test/zones/evpn/ipv4/sdn_config | 2 +-
4 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/PVE/Network/SDN/VnetPlugin.pm b/PVE/Network/SDN/VnetPlugin.pm
index 34841ae..96a13b4 100644
--- a/PVE/Network/SDN/VnetPlugin.pm
+++ b/PVE/Network/SDN/VnetPlugin.pm
@@ -70,11 +70,6 @@ sub properties {
description => "alias name of the vnet",
optional => 1,
},
- mac => {
- type => 'string',
- description => "Anycast router mac address",
- optional => 1, format => 'mac-addr'
- }
};
}
@@ -83,7 +78,6 @@ sub options {
zone => { optional => 0},
tag => { optional => 1},
alias => { optional => 1 },
- mac => { optional => 1 },
vlanaware => { optional => 1 },
};
}
diff --git a/PVE/Network/SDN/Zones/EvpnPlugin.pm b/PVE/Network/SDN/Zones/EvpnPlugin.pm
index ca000cf..d68d3ee 100644
--- a/PVE/Network/SDN/Zones/EvpnPlugin.pm
+++ b/PVE/Network/SDN/Zones/EvpnPlugin.pm
@@ -28,6 +28,11 @@ sub properties {
type => 'string',
description => "Frr router name",
},
+ 'mac' => {
+ type => 'string',
+ description => "Anycast logical router mac address",
+ optional => 1, format => 'mac-addr'
+ },
'exitnodes' => get_standard_option('pve-node-list'),
};
}
@@ -40,6 +45,7 @@ sub options {
controller => { optional => 0 },
exitnodes => { optional => 1 },
mtu => { optional => 1 },
+ mac => { optional => 1 },
dns => { optional => 1 },
reversedns => { optional => 1 },
dnszone => { optional => 1 },
@@ -55,7 +61,7 @@ sub generate_sdn_config {
my $alias = $vnet->{alias};
my $ipv4 = $vnet->{ipv4};
my $ipv6 = $vnet->{ipv6};
- my $mac = $vnet->{mac};
+ my $mac = $plugin_config->{'mac'};
my $vrf_iface = "vrf_$zoneid";
my $vrfvxlan = $plugin_config->{'vrf-vxlan'};
@@ -184,6 +190,10 @@ sub on_update_hook {
if (defined($zone_cfg->{ids}->{$id}->{'vrf-vxlan'}) && $zone_cfg->{ids}->{$id}->{'vrf-vxlan'} eq $vrfvxlan);
}
+ if (!defined($zone_cfg->{ids}->{$zoneid}->{'mac'})) {
+ my $dc = PVE::Cluster::cfs_read_file('datacenter.cfg');
+ $zone_cfg->{ids}->{$zoneid}->{'mac'} = PVE::Tools::random_ether_addr($dc->{mac_prefix});
+ }
}
@@ -206,11 +216,6 @@ sub vnet_update_hook {
next if $other_zone->{type} ne 'vxlan' && $other_zone->{type} ne 'evpn';
raise_param_exc({ tag => "vxlan tag $tag already exist in vnet $id in zone $other_zoneid "}) if $other_tag && $tag eq $other_tag;
}
-
- if (!defined($vnet->{mac})) {
- my $dc = PVE::Cluster::cfs_read_file('datacenter.cfg');
- $vnet->{mac} = PVE::Tools::random_ether_addr($dc->{mac_prefix});
- }
}
diff --git a/test/zones/evpn/ipv4/expected_sdn_interfaces b/test/zones/evpn/ipv4/expected_sdn_interfaces
index 6d2d3b6..e2d5a75 100644
--- a/test/zones/evpn/ipv4/expected_sdn_interfaces
+++ b/test/zones/evpn/ipv4/expected_sdn_interfaces
@@ -3,6 +3,7 @@
auto myvnet
iface myvnet
address 10.0.0.1/24
+ hwaddress A2:1D:CB:1A:C0:8B
bridge_ports vxlan_myvnet
bridge_stp off
bridge_fd 0
diff --git a/test/zones/evpn/ipv4/sdn_config b/test/zones/evpn/ipv4/sdn_config
index 4c115a9..dd73b5c 100644
--- a/test/zones/evpn/ipv4/sdn_config
+++ b/test/zones/evpn/ipv4/sdn_config
@@ -7,7 +7,7 @@
},
zones => {
- ids => { myzone => { ipam => "pve", type => "evpn", controller => "evpnctl", 'vrf-vxlan' => 1000 } },
+ ids => { myzone => { ipam => "pve", type => "evpn", controller => "evpnctl", 'vrf-vxlan' => 1000, 'mac' => 'A2:1D:CB:1A:C0:8B' } },
},
controllers => {
ids => { evpnctl => { type => "evpn", 'peers' => '192.168.0.1,192.168.0.2,192.168.0.3', asn => "65000" } },
--
2.20.1
More information about the pve-devel
mailing list