diff options
| author | Alexandre Derumier <aderumier@odiso.com> | 2023-09-13 13:38:45 +0200 |
|---|---|---|
| committer | Fabian Grünbichler <f.gruenbichler@proxmox.com> | 2023-10-25 12:50:41 +0200 |
| commit | 9ce18f80bc9deece323a52e02d92e5fe978698f5 (patch) | |
| tree | 82d2026bec1002352453aceb4ad8b9bee9589ea4 /src/PVE/Network/SDN/Controllers/EvpnPlugin.pm | |
| parent | ced9392063d1cd2ecd93a2e41f5bf00fe3514665 (diff) | |
controllers: add isis router plugin
Diffstat (limited to 'src/PVE/Network/SDN/Controllers/EvpnPlugin.pm')
| -rw-r--r-- | src/PVE/Network/SDN/Controllers/EvpnPlugin.pm | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/src/PVE/Network/SDN/Controllers/EvpnPlugin.pm b/src/PVE/Network/SDN/Controllers/EvpnPlugin.pm index f1dd20f..3ac7d7e 100644 --- a/src/PVE/Network/SDN/Controllers/EvpnPlugin.pm +++ b/src/PVE/Network/SDN/Controllers/EvpnPlugin.pm @@ -53,11 +53,15 @@ sub generate_controller_config { my $loopback = undef; my $autortas = undef; my $bgprouter = find_bgp_controller($local_node, $controller_cfg); + my $isisrouter = find_isis_controller($local_node, $controller_cfg); + if ($bgprouter) { $ebgp = 1 if $plugin_config->{'asn'} ne $bgprouter->{asn}; $loopback = $bgprouter->{loopback} if $bgprouter->{loopback}; $asn = $bgprouter->{asn} if $bgprouter->{asn}; $autortas = $plugin_config->{'asn'} if $ebgp; + } elsif ($isisrouter) { + $loopback = $isisrouter->{loopback} if $isisrouter->{loopback}; } return if !$asn; @@ -86,10 +90,8 @@ sub generate_controller_config { push @controller_config, "neighbor VTEP remote-as $remoteas"; push @controller_config, "neighbor VTEP bfd"; - if($ebgp && $loopback) { - push @controller_config, "neighbor VTEP ebgp-multihop 10"; - push @controller_config, "neighbor VTEP update-source $loopback"; - } + push @controller_config, "neighbor VTEP ebgp-multihop 10" if $ebgp && $loopback; + push @controller_config, "neighbor VTEP update-source $loopback" if $loopback; # VTEP peers foreach my $address (@peers) { @@ -136,11 +138,15 @@ sub generate_controller_zone_config { my $loopback = undef; my $autortas = undef; my $bgprouter = find_bgp_controller($local_node, $controller_cfg); + my $isisrouter = find_isis_controller($local_node, $controller_cfg); + if($bgprouter) { $ebgp = 1 if $controller->{'asn'} ne $bgprouter->{asn}; $loopback = $bgprouter->{loopback} if $bgprouter->{loopback}; $asn = $bgprouter->{asn} if $bgprouter->{asn}; $autortas = $controller->{'asn'} if $ebgp; + } elsif ($isisrouter) { + $loopback = $isisrouter->{loopback} if $isisrouter->{loopback}; } return if !$vrf || !$vrfvxlan || !$asn; @@ -306,6 +312,20 @@ sub find_bgp_controller { return $res; } +sub find_isis_controller { + my ($nodename, $controller_cfg) = @_; + + my $res = undef; + foreach my $id (keys %{$controller_cfg->{ids}}) { + my $controller = $controller_cfg->{ids}->{$id}; + next if $controller->{type} ne 'isis'; + next if $controller->{node} ne $nodename; + $res = $controller; + last; + } + return $res; +} + sub generate_frr_recurse{ my ($final_config, $content, $parentkey, $level) = @_; |
