]> git.puffer.fish Git - matthieu/frr.git/commitdiff
tools: Fix frr-reload for ebgp-multihop TTL reconfiguration.
authorNobuhiro MIKI <nob@bobuhiro11.net>
Wed, 29 Jan 2025 04:31:53 +0000 (04:31 +0000)
committerNobuhiro MIKI <nob@bobuhiro11.net>
Wed, 29 Jan 2025 04:43:17 +0000 (04:43 +0000)
In ebgp-multihop, there is a difference in reload behavior when TTL is
unspecified (meaning default 255) and when 255 is explicitly specified.
For example, when reloading with 'neighbor <neighbor> ebgp-multihop
255' in the config, the following difference is created. This commit
fixes that.

    Lines To Delete
    ===============
    router bgp 65001
     no neighbor 10.0.0.4 ebgp-multihop
    exit

    Lines To Add
    ============
    router bgp 65001
     neighbor 10.0.0.4 ebgp-multihop 255
    exit

The commit 767aaa3a8048 is not sufficient and frr-reload needs to be
fixed to handle both unspecified and specified cases.

Signed-off-by: Nobuhiro MIKI <nob@bobuhiro11.net>
tools/frr-reload.py

index a138e4e239114b13fb0ac1d65d79e58a09d62797..f124cae713074c37537b2b4bca117865e6fd9ea9 100755 (executable)
@@ -237,6 +237,14 @@ def get_normalized_interface_vrf(line):
     return line
 
 
+def get_normalized_ebgp_multihop_line(line):
+    obj = re.search(r"(.*)ebgp-multihop\s+255", line)
+    if obj:
+        line = obj.group(1) + "ebgp-multihop"
+
+    return line
+
+
 # This dictionary contains a tree of all commands that we know start a
 # new multi-line context. All other commands are treated either as
 # commands inside a multi-line context or as single-line contexts. This
@@ -382,6 +390,9 @@ class Config(object):
             if ":" in line:
                 line = get_normalized_mac_ip_line(line)
 
+            if "ebgp-multihop" in line:
+                line = get_normalized_ebgp_multihop_line(line)
+
             # vrf static routes can be added in two ways. The old way is:
             #
             # "ip route x.x.x.x/x y.y.y.y vrf <vrfname>"