]> git.proxmox.com Git - pve-network.git/commitdiff
controllers: bgp: use loopback ip src for loopback network
authorAlexandre Derumier <aderumier@odiso.com>
Fri, 11 Feb 2022 09:33:23 +0000 (10:33 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Sun, 13 Feb 2022 13:23:36 +0000 (14:23 +0100)
can be usefull if we want to join other loopback ips,
like a ceph cluster in the underlay network

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
PVE/Network/SDN/Controllers/BgpPlugin.pm
PVE/Network/SDN/Controllers/EvpnPlugin.pm
test/zones/evpn/ebgp_loopback/expected_controller_config

index 69c688be2c45b1f2c0a0f036288b242a4ea9ac88..075ca905a9e18b9dc0969dcbbaf4311d034d6aa0 100644 (file)
@@ -110,6 +110,13 @@ sub generate_controller_config {
        push(@{$bgp->{"address-family"}->{"$ipversion unicast"}}, "neighbor BGP soft-reconfiguration inbound");
     }
 
+    if ($loopback) {
+       push(@{$config->{frr}->{''}}, "ip prefix-list loopbacks_ips seq 10 permit 0.0.0.0/0 le 32");
+       push(@{$config->{frr}->{''}}, "ip protocol bgp route-map correct_src");
+       push(@{$config->{frr}->{'route-map'}->{'correct_src permit 1'}}, "match ip address prefix-list loopbacks_ips");
+       push(@{$config->{frr}->{'route-map'}->{'correct_src permit 1'}}, "set src $ifaceip");
+    }
+
     return $config;
 }
 
index 3e450cfd5838fbfbd093e8f8d201857def33188f..61a631455aa7783e48b24e876e4a364e2b6c8f59 100644 (file)
@@ -258,6 +258,7 @@ sub sort_frr_config {
     $order->{'ipv4 unicast'} = 1;
     $order->{'ipv6 unicast'} = 2;
     $order->{'l2vpn evpn'} = 3;
+    $order->{'route-map'} = 200;
 
     my $a_val = 100;
     my $b_val = 100;
@@ -283,6 +284,7 @@ sub generate_frr_recurse{
    $keylist->{vrf} = 1;
    $keylist->{'address-family'} = 1;
    $keylist->{router} = 1;
+   $keylist->{'route-map'} = 1;
 
    my $exitkeylist = {};
    $exitkeylist->{vrf} = 1;
index 23be7f9d52bd76520672bba3088ff75123b929d3..01cb2c24450f3e2dfc832ffb673932537a74424c 100644 (file)
@@ -5,6 +5,8 @@ frr defaults datacenter
 service integrated-vtysh-config
 hostname localhost
 !
+ip prefix-list loopbacks_ips seq 10 permit 0.0.0.0/0 le 32
+ip protocol bgp route-map correct_src
 !
 vrf vrf_myzone
  vni 1000
@@ -49,5 +51,9 @@ router bgp 65001 vrf vrf_myzone
   route-target export 65000:1000
  exit-address-family
 !
+route-map correct_src permit 1
+ match ip address prefix-list loopbacks_ips
+ set src 192.168.0.1
+!
 line vty
 !
\ No newline at end of file