From 2ce26af10059f532c753d0504675cb307f1da64f Mon Sep 17 00:00:00 2001 From: Daniel Walton Date: Tue, 4 Apr 2017 18:51:32 +0000 Subject: [PATCH] tools: quagga-reload.py fails to change max-paths Signed-off-by: Daniel Walton Reviewed-by: Donald Sharp --- tools/frr-reload.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tools/frr-reload.py b/tools/frr-reload.py index 4c26300099..c91392da15 100755 --- a/tools/frr-reload.py +++ b/tools/frr-reload.py @@ -988,6 +988,21 @@ if __name__ == '__main__': # the "neighbor 1.1.1.1 route-map FOO out" line...so we compare the # configs again to put this line back. + # There are many keywords in quagga that can only appear one time under + # a context, take "bgp router-id" for example. If the config that we are + # reloading against has the following: + # + # router bgp 10 + # bgp router-id 1.1.1.1 + # bgp router-id 2.2.2.2 + # + # The final config needs to contain "bgp router-id 2.2.2.2". On the + # first pass we will add "bgp router-id 2.2.2.2" but then on the second + # pass we will see that "bgp router-id 1.1.1.1" is missing and add that + # back which cancels out the "bgp router-id 2.2.2.2". The fix is for the + # second pass to include all of the "adds" from the first pass. + lines_to_add_first_pass = [] + for x in range(2): running = Config() running.load_from_show_running() @@ -995,6 +1010,11 @@ if __name__ == '__main__': (lines_to_add, lines_to_del) = compare_context_objects(newconf, running) + if x == 0: + lines_to_add_first_pass = lines_to_add + else: + lines_to_add.extend(lines_to_add_first_pass) + # Only do deletes on the first pass. The reason being if we # configure a bgp neighbor via "neighbor swp1 interface" quagga # will automatically add: