summaryrefslogtreecommitdiff
path: root/tools/frr-reload.py
AgeCommit message (Collapse)Author
2025-01-29tools: Fix frr-reload for ebgp-multihop TTL reconfiguration.Nobuhiro MIKI
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> (cherry picked from commit 594e917656da5502b302309aed3cf596df24713f)
2025-01-04tools: Add missing rpki keyword to vrf in frr-reloadJonathan Voss
When reloading the following configuration: ``` vrf red rpki rpki cache tcp 172.65.0.2 8282 preference 1 exit exit-vrf ``` frr-reload.py does not properly enter the `rpki` context within a `vrf`. Because of this, it fails to apply RPKI configurations. Signed-off-by: Jonathan Voss <jvoss@onvox.net> (cherry picked from commit 975ee8ed6eb22f68538f3446b29ca34d65bec72f)
2024-04-30tools: Handle seq num for BGP as-path in frr-reload.pyChirag Shah
If frr.conf has bgp as-path access-list clause without sequence number then upon performing frr-rleoad, the running config clause with sequence number will always be deleted and the new ones without sequence will be re-added. This could lead to blackholing until the config gets reapplied. Testing: frr.conf: bgp as-path access-list important_internet_bgp_as_numbers permit _16509_ Running config: bgp as-path access-list important_internet_bgp_as_numbers seq 5 permit _16509_ ! Before fix Upon frr-reload it deletes and readd line as without seq 2024-04-26 03:16:45,772 INFO: Executed "no bgp as-path access-list important_internet_bgp_as_numbers seq 5 permit _16509_" 'bgp as-path access-list important_internet_bgp_as_numbers permit _16509_\n' After fix: no form is not executed and no delta determine between frr.conf and running-config. Signed-off-by: Chirag Shah <chirag@nvidia.com> (cherry picked from commit 439c6f70b5bf7c8d92719458a37c9cce70b241c9)
2024-04-17tools: frr-reload strip interface vrf ctx lineChirag Shah
if frr.conf file contains 'interface x vrf <name> config it causes protocol (like ospf) neighbor session flap, as it deletes interface base config line ('interface x') from running config and readds with 'interface x vrf <name>' line from frr.conf. This deletion and readdition of lines leads to neighborship flaps. This issue is by product of (PR-10411 | https://github.com/FRRouting/frr/pull/10411) (commit id: 788a036fdb) where running config for interface config no loger displays associated vrf line. Ticket: #3858146 Testing: frr.conf interface swp1.2 vrf vrf1012 ip ospf network point-to-point running-config: interface swp1.2 ip ospf network point-to-point exit Before fix: frr-reload logs: 2024-04-09 00:28:31,096 INFO: Executed "interface swp1.2 no ip ospf network point-to-point exit" 'interface swp1.2 vrf vrf1012\n ip ospf network point-to-point\nexit\n', After fix: frr-reload strips vrf line, thus no config change between frr.conf and running config. Signed-off-by: Chirag Shah <chirag@nvidia.com> (cherry picked from commit c1356f0e85e7b8480295d38b843a729d4a491d41)
2023-12-14tools: Use error log level when failing to execute commands via frr-reload.pyDonatas Abraitis
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-12-12tools: fix frr-reload multiple no description cmdsChirag Shah
Ensure to change description for index 0 from the list. Ticket: #3628756 Testing Done: After fix: start with three interfaces description delete in lines_to_del: (Pdb) lines_to_del [(('interface swp1',), "description swp1 -> sp1's swp1"), (('interface swp2',), "description swp2 -> sp2's swp 1"), (('interface swp3',), "description swp3 -> sp3's swp1")] After first iteration swp1: (Pdb) index 0 (Pdb) lines_to_del [(('interface swp1',), 'description'), (('interface swp2',), "description swp2 -> sp2's swp1"), (('interface swp 1s2',), "description swp3 -> sp3's swp1")] After second iteration swp2: (Pdb) lines_to_del [(('interface swp1',), 'description'), (('interface swp2',), 'description'), (('interface swp3',), "description swp3 -> sp3's swp1")] After third iteration swp3 fix (Pdb) lines_to_del [(('interface swp1',), 'description'), (('interface swp2',), 'description'), (('interface swp3',), 'description' )] Signed-off-by: Chirag Shah <chirag@nvidia.com>
2023-11-28tools: fix frr-reload interface desc cmdChirag Shah
Fix frr-reload script to only render 'no description' rather than 'no description blah' Ticket:#3628756 Testing Done: Before: 2023-11-29 02:38:55,758 INFO: Failed to execute interface hostbond_1 no description hostbond_1_to_host exit 2023-11-29 02:38:55,758 ERROR: "interface hostbond_1 -- no description hostbond_1_to_host -- exit" we failed to remove this command 2023-11-29 02:38:55,758 ERROR: % Unknown command: no description hostbond_1_to_host Signed-off-by: Chirag Shah <chirag@nvidia.com>
2023-11-02tools: Apply black formatting for tools/frr-reload.pyDonatas Abraitis
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-11-01tools: fix frr-reload route-map desc cmdChirag Shah
Fix frr-reload script to only render 'no description' rather than 'no description blah' Ticket:#3650752 Testing: route-map TEST permit 140 description rule for PFIX_IPV6_7 match ipv6 address prefix-list PFIX_IPV6_7 exit ! end torc-11# confi t torc-11(config)# route-map TEST permit 140 torc-11(config-route-map)# no description rule for PFIX_IPV6_7 % Unknown command: no description rule for PFIX_IPV6_7 torc-11(config-route-map)# no description rule % There is no matched command. torc-11(config-route-map)# no description <cr> torc-11(config-route-map)# no description torc-11(config-route-map)# Using frr-reload failure log: 2023-10-31 00:30:31,972 INFO: Failed to execute route-map TEST permit 140 no description rule for PFIX_IPV6_7 exit 2023-10-31 00:30:31,972 ERROR: "route-map TEST permit 140 -- no description rule for PFIX_IPV6_7 -- exit" we failed to remove this command 2023-10-31 00:30:31,972 ERROR: % Unknown command: no description rule for PFIX_IPV6_7 With fix: 2023-11-02 06:10:30,024 INFO: Executed "route-map TEST permit 140 no description exit" Signed-off-by: Chirag Shah <chirag@nvidia.com>
2023-07-27tools: fix key chain reload removalRafael Zalamena
When deleting a key chain with frr-reload track if the whole root node is being removed or not. Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2023-07-18Merge pull request #10136 from idryzhov/frr-reload-exitMark Stapp
tools: always append "exit" in frr-reload.py
2023-07-09tools: fix ospf area stub summary in frr-reloadChirag Shah
OSPFv2 no area x stub no-summary only resets 'no-summary' config. From frr-reload if the config line 'area x stub no-summary' is removed then it needs to remove completely. Before this change it took two frr-roload to remove the config which is inconsistent behavior. Fix is to frr-reload to add extra line to delete 'no area x stub'. Ticket:#3514775 Testing Done: Running config: router ospf ospf router-id 6.6.6.6 area 0.0.0.1 stub no-summary area 0.0.0.2 stub exit ! router ospf vrf sym_1 area 0.0.1.1 range 24.1.1.0/24 area 0.0.1.2 stub no-summary exit changed frr.conf: router ospf ospf router-id 6.6.6.6 area 0.0.0.2 stub exit ! router ospf vrf sym_1 area 0.0.1.1 range 24.1.1.0/24 exit Lines To Delete =============== router ospf no area 0.0.0.1 stub <<<< newly added router ospf vrf sym_1 no area 0.0.1.2 stub <<<< newly added router ospf no area 0.0.0.1 stub no-summary router ospf vrf sym_1 no area 0.0.1.2 stub no-summary After fix new running-config post reload: i router ospf ospf router-id 6.6.6.6 area 0.0.0.2 stub exit ! router ospf vrf sym_1 area 0.0.1.1 range 24.1.1.0/24 exit Before fix running-config post 1st reload: router ospf ospf router-id 6.6.6.6 area 0.0.0.1 stub area 0.0.0.2 stub exit ! router ospf vrf sym_1 area 0.0.1.1 range 24.1.1.0/24 area 0.0.1.2 stub exit Signed-off-by: Chirag Shah <chirag@nvidia.com>
2023-07-04tools: always append "exit" in frr-reload.pyIgor Ryzhov
When reloading the following config: ``` router ospf6 area 0 range 2001:db8::/32 advertise exit ! interface eth0 ipv6 ospf6 area 0 exit ``` frr-reload.py doesn't execute "exit" commands. Because of that, it tries to execute "interface eth0" inside the "router ospf6" context and fails. To always execute all commands from the correct context, frr-reload.py should properly exit from every entered node. Fixes #10132. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2023-06-29tools: fix pim interface config deletionChirag Shah
When no ip pim is performed subsequent pim related configs under the interface also implicitly deleted. When doing this via frr-reload requires to remove any explicit no ip pim <blah> lines so delete list. Testing Done: running-config: interface lo ip pim ip pim use-source 6.0.0.1 exit frr.conf: remove two pim config lines. interface lo exit Before fix: 2023-06-29 23:44:26,062 INFO: Failed to execute interface lo no ip pim use-source 6.0.0.1 2023-06-29 23:44:26,142 INFO: Failed to execute interface lo no ip pim use-source 2023-06-29 23:44:26,221 INFO: Executed "interface lo no ip pim" After fix: Only no ip pim executed and rest of the other lines removed from delete list. 2023-06-30 01:07:32,618 INFO: Executed "interface lo no ip pim" Signed-off-by: Chirag Shah <chirag@nvidia.com>
2023-06-05tools: fix list value remove in frr-reloadChirag Shah
There might be a time element(s) from temporary list are removed more than once which leads to valueError in certain python3 version. commit-id 1543f58b5 did not handle valueError properly. This caused regression where prefix-list config leads to delete followed by add. The new fix should just pass the exception as value removal from list_to_add or list_to_del is best effort. This allows prefix-list config has no change then removes the lines from lines_to_del and lines_to_add properly. Ticket:#3490252 Testing: Configure prefix-list in frr.conf and perform multiple frr-reload. After first reload operatoin subsequent ones should not result in delete followed by add of the prefix-list but rather no-op operation. (Pdb) lines_to_add [(('ip prefix-list FOO permit 10.2.1.0/24',), None)] (Pdb) lines_to_del [(('ip prefix-list FOO seq 5 permit 10.2.1.0/24',), None), (('ip prefix-list FOO seq 10 permit 10.2.1.0/24',), None)] (Pdb) lines_to_del_to_del [(('ip prefix-list FOO seq 5 permit 10.2.1.0/24',), None), (('ip prefix-list FOO seq 10 permit 10.2.1.0/24',), None)] (Pdb) lines_to_add_to_del [(('ip prefix-list FOO permit 10.2.1.0/24',), None), (('ip prefix-list FOO permit 10.2.1.0/24',), None)] (Pdb) c > /usr/lib/frr/frr-reload.py(1562)ignore_delete_re_add_lines() -> return (lines_to_add, lines_to_del) (Pdb) lines_to_add [] (Pdb) lines_to_del [] Signed-off-by: Chirag Shah <chirag@nvidia.com>
2023-04-15tools: Make check flag really work for reloadanlan_cs
The check flag of `found_pg_cmd` is already there, but not used. So, make it really work for reload. Signed-off-by: anlan_cs <vic.lan@pica8.com>
2023-04-15tools: fix missing remote-as configuration when reloadanlan_cs
From commit `411d1a2`, `bgp_delete_nbr_remote_as_line()` is added to remove some specific bgp neighbors. But, when reloading the following configuration, it will wrongly remove some good ones: `neighbor 66.66.66.6 remote-as internal`: ``` router bgp 66 bgp router-id 172.16.204.6 neighbor ANLAN peer-group neighbor ANLAN remote-as internal neighbor 66.66.66.6 remote-as internal <- LOST neighbor 66.66.66.60 peer-group ANLAN ``` The reason is that "66.66.66.6" is included in "66.66.66.60" literally, then it is mistakenly thought to be a match. Just fix it with excat match. Signed-off-by: anlan_cs <vic.lan@pica8.com>
2023-03-14tools: frr-reload fix list value not presentChirag Shah
Check for value present in list before removing as in certain python3 ValueError traceback is observed. Traceback (most recent call last): File "/usr/lib/frr/frr-reload.py", line 2278, in <module> (lines_to_add, lines_to_del, restart_frr) = compare_context_objects(newconf, running) File "/usr/lib/frr/frr-reload.py", line 1933, in compare_context_objects lines_to_add, lines_to_del File "/usr/lib/frr/frr-reload.py", line 1549, in ignore_delete_re_add_lines lines_to_del.remove((ctx_keys, line)) ValueError: list.remove(x): x not in list Ticket:#3389979 Issue:3389979 Testing Done: With fix perform frr-relaod on frr.conf config where earlier traceback was seen. Signed-off-by: Donald Sharp <sharpd@nvidia.com> Signed-off-by: Chirag Shah <chirag@nvidia.com>
2023-02-09*: auto-convert to SPDX License IDsDavid Lamparter
Done with a combination of regex'ing and banging my head against a wall. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2023-01-15tools: Add missing daemonsYuxiang Zhu
Got `ERROR: Daemon babeld is not a valid option for 'show running-config'` when using `frr-reload.py --reload --daemon babeld`. Adds `babeld` and `nhrpd` as valid daemons. Signed-off-by: Yuxiang Zhu <vfreex@gmail.com>
2022-12-22tools: Ignore agentx command for frr-reload.pyDonatas Abraitis
agentx can't be disabled once enabled, so we should ignore it for frr-reload.py. ``` $ /usr/lib/frr/frr-reload.py --reload /etc/frr/bgpd.conf --bindir /usr/local/bin "no agentx" we failed to remove this command SNMP AgentX support cannot be disabled once enabled ``` Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-10-11tools: Apply black formatting for frr-reload.pyDonatas Abraitis
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-10-11tools: Handle sequence numbers for BGP community (large/ext) in frr-reload.pyDonatas Abraitis
If we add/modify community/large/ext lists without sequence numbers, and doing frr-reload.py, then rules with sequence numbers (show running-config always adds sequence numbers) will be deleted and new ones will be re-added. This could lead to blackholing for some time. Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-08-06tools: Add pim6d to tools so that pim6d will work properlyDonald Sharp
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-05-30tools: add eigrp support on frr-reloadChristian Poessinger
Signed-off-by: Christian Poessinger <christian@poessinger.com>
2022-04-24tools: string literals -> commentsChirag Shah
Convert string literals to comment. Signed-off-by: Chirag Shah <chirag@nvidia.com>
2022-04-23tools: frr-reload fix bgp nbr deleteChirag Shah
When a bgp neighbor removed from associated to peer-group, the neighbor is fully deleted, subsequent deletion of any configuration related to the neighbor leads to failure in frr-reload. Fix: In frr-reload lines to delete check if any neighbor with peer-group removal line is present, if so then remove any further config deletion associated the neighbor needs to removed from the lines to delete. Ticket:#3032234 Reviewed By: Testing Done: BEFORE FIX: ----------- 2022-04-08 20:03:32,734 INFO: Executed "router bgp 4200000005 no neighbor swp5 interface peer-group UNDERLAY" 2022-04-08 20:03:32,892 INFO: Failed to execute router bgp 4200000005 no neighbor swp5 password SSSS 2022-04-08 20:03:33,050 INFO: Failed to execute router bgp 4200000005 no neighbor swp5 password 2022-04-08 20:03:33,218 INFO: Failed to execute router bgp 4200000005 no neighbor swp5 2022-04-08 20:03:33,354 INFO: Failed to execute router bgp 4200000005 no neighbor 2022-04-08 20:03:33,520 INFO: Failed to execute router bgp 4200000005 no 2022-04-08 20:03:33,521 ERROR: "router bgp 4200000005 -- no" we failed to remove this command 2022-04-08 20:03:33,521 ERROR: % Specify remote-as or peer-group commands first 2022-04-08 20:03:33,691 INFO: Failed to execute router bgp 4200000005 no neighbor swp5 advertisement-interval 0 2022-04-08 20:03:33,853 INFO: Failed to execute router bgp 4200000005 no neighbor swp5 advertisement-interval 2022-04-08 20:03:34,015 INFO: Failed to execute router bgp 4200000005 no neighbor swp5 2022-04-08 20:03:34,145 INFO: Failed to execute router bgp 4200000005 no neighbor 2022-04-08 20:03:34,326 INFO: Failed to execute router bgp 4200000005 no 2022-04-08 20:03:34,327 ERROR: "router bgp 4200000005 -- no" we failed to remove this command 2022-04-08 20:03:34,327 ERROR: % Specify remote-as or peer-group commands first AFTER FIX: ---------- delete of numbered neighbor: 2022-04-08 19:52:17,204 INFO: Executed "router bgp 4200000005 no neighbor 1.2.3.4 peer-group UNDERLAY" 2022-04-08 19:52:17,205 INFO: /var/run/frr/reload-GRFX1M.txt content delete of unnumbered neighbor: 2022-04-08 20:00:02,952 INFO: Executed "router bgp 4200000005 no neighbor swp5 interface peer-group UNDERLAY" 2022-04-08 20:00:02,953 INFO: /var/run/frr/reload-722C3P.txt content Signed-off-by: Chirag Shah <chirag@nvidia.com>
2022-04-23tools: fix bgp instances deletion in frr-reloadChirag Shah
BGPd does not allow default instance deletion in presence of bgp vrf instance; frr-reload script fails if delete list contains default instance followed by vrf instance. Fix: frr-reload scans lines_to_delete to look for 'router bgp' and 'router bgp vrf ...' line. If both are present switch the order to delete bgp vrf instance(s) than default instance at the end. Testing Done: Before: INFO: Loading Config object from file /etc/frr/frr.conf INFO: Loading Config object from vtysh show running INFO: Failed to execute no router bgp 40201 <-- Failed to delete INFO: Failed to execute no router bgp INFO: Failed to execute no router ERROR: "no router" we failed to remove this command ERROR: % Cannot delete default BGP instance. Dependent VRF instances exist INFO: Executed "no router bgp 40201 vrf bgp-test" <-- vrf instance deleted INFO: Loading Config object from vtysh show running After: order of deletion switched INFO: Loading Config object from file /etc/frr/frr.conf INFO: Loading Config object from vtysh show running INFO: Executed "no router bgp 40201 vrf bgp-test" INFO: Executed "no router bgp 40201" INFO: Loading Config object from vtysh show running Signed-off-by: Chirag Shah <chirag@nvidia.com>
2022-04-19packaging: Set default permissions for /var/log/frr to 0755Donatas Abraitis
At the moment we set /var/log/frr permissions to 0750 (frr:frr), but the log file is 0640 (root:adm) (unless logrotated) and that doesn't allow adm group to even open the directory. Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-02-10tools: fix frr-reload context keywordsIgor Ryzhov
There are singline-line commands inside `router bgp` that start with `vnc ` or `bmp `. Those commands are currently treated as node-entering commands. We need to specify such commands more precisely. Fixes #10548. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2022-01-09Merge pull request #10030 from anlancs/cleanup-reload-null0Igor Ryzhov
tools: cleanup convertion of "Null0"
2022-01-09Merge pull request #9517 from anlancs/reload-add-strJafar Al-Gharaibeh
tools: fix wrong get_contexts() of Config class.
2021-12-31tools: cleanup route convertion from null0/Null0 to blackholeanlan_cs
Signed-off-by: anlan_cs <anlan_cs@tom.com>
2021-12-07Merge pull request #10187 from chiragshah6/freloadRuss White
tools: exit when reload fails to parse config file
2021-12-06tools: exit when reload fails to parse config fileChirag Shah
frr-reload triggers restart of service in case it fails to parse new config file and conjunction with running config contains 'router bgp' (default bgp instnace). When frr-reload fails to parse new config file, it fails to build newconfig context (empty object). Instead of bailing out it compares against the running config context. If the running config contains default bgp instance it thinks new config is removing default bgp instance so it triggers frr restart. Fix is to to bail out reload script when it fails to parse config file. Ticket:#2861989 Reviewed By: MR-83 Testing Done: router bgp 102 vrf RED bgp router-id 2.2.2.2 neighbor underlay peer-group neighbor underlay remote-as <---- Partial config Before fix: 2021-12-02 02:43:16,987 ERROR: vtysh failed to process new configuration: vtysh (mark file) exited with status 4: b'line 79: % Command incomplete: neighbor underlay remote-as\n\n' 2021-12-02 02:43:17,145 INFO: Loading Config object from vtysh show running 2021-12-02 02:43:17,362 INFO: "frr version 7.5+cl5.0.0u0" cannot be removed 2021-12-02 02:43:17,362 INFO: "frr defaults datacenter" cannot be removed 2021-12-02 02:43:17,362 INFO: "service integrated-vtysh-config" cannot be removed 2021-12-02 02:43:17,363 INFO: "line vty" cannot be removed 2021-12-02 02:43:17,522 INFO: EVPN is enabled and default instance del needed 2021-12-02 02:43:17,522 INFO: Restarting FRR <---- Restart frr After fix: Just throw Error and abort the script. root@TORS1:mgmt:/home/cumulus# /usr/lib/frr/frr-reload.py --debug --reload --stdout /etc/frr/frr.conf 2021-12-02 04:00:56,519 INFO: Called via "Namespace(bindir='/usr/bin', confdir='/etc/frr', daemon='', debug=True, filename='/etc/frr/$ rr.conf', input=None, overwrite=False, pathspace=None, reload=True, rundir='/var/run/frr', stdout=True, test=False, vty_socket=None)" 2021-12-02 04:00:56,520 INFO: Loading Config object from file /etc/frr/frr.conf 2021-12-02 04:00:56,679 ERROR: vtysh failed to process new configuration: vtysh (mark file) exited with status 4: b'line 79: % Command incomplete: neighbor underlay remote-as\n\n' root@TORS1:mgmt:/home/cumulus# Signed-off-by: Chirag Shah <chirag@nvidia.com>
2021-12-05frr-reload: fix bgp nbr remote-asChirag Shah
Remove neighbor <> remote-as <> config line, if the neighbor is part of the peer-group and peer-group contains remote-as config. Neighbors which are part of the peer-group cannot override remote-as. Fix: Frr-reload needs to remote 'neighbor <> remote-as <>' from lines_to_add if its already part of peer-group and peer-group has remote-as config. Testing Done: Before: Config snippet: neighbor PEERS peer-group neighbor PEERS remote-as external neighbor PEERS timers 3 9 neighbor 10.2.1.1 remote-as external neighbor 10.2.1.1 peer-group PEERS neighbor 10.2.1.1 timers 3 9 neighbor 10.2.1.2 remote-as external neighbor 10.2.1.2 peer-group PEERS Frr-reload failure: line 179: Failure to communicate[13] to bgpd, line: neighbor 10.2.1.1 remote-as external % Peer-group member cannot override remote-as of peer-group line 179: Failure to communicate[13] to bgpd, line: neighbor 10.2.1.2 remote-as external % Peer-group member cannot override remote-as of peer-group After: frr-reload apply the config successfully. Signed-off-by: Chirag Shah <chirag@nvidia.com>
2021-11-17tools, vtysh: Remove final vestige of `address-family evpn`Donald Sharp
This was deprecated over a year ago now. Let's finally remove it from the system. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-11-12tools: simplify excessively complex conditionalQuentin Young
Signed-off-by: Quentin Young <qlyoung@nvidia.com>
2021-11-12tools: string literals -> commentsQuentin Young
Convert all floating string literals being used as comments, to comments Signed-off-by: Quentin Young <qlyoung@nvidia.com>
2021-10-09tools: fix wrong get_contexts() of Config class.anlan_cs
Calling get_contexts() can't display as expected, it wrongly displays: <__main__.Context object at 0x7fdee1d5ad50> So make it display correct data by add __str__ in Context class. Signed-off-by: anlan_cs <anlan_cs@tom.com>
2021-09-04tests: cleanup: rerun changed files through blackChristian Hopps
Signed-off-by: Christian Hopps <chopps@labn.net>
2021-09-04tests: cleanup - remove unused importsChristian Hopps
Signed-off-by: Christian Hopps <chopps@labn.net>
2021-09-04tools: move frr-reload.py to python3 explicitlyChristian Hopps
We already, reasonably, require python3 elsewhere. Do so here, and reap some benefit. Signed-off-by: Christian Hopps <chopps@labn.net>
2021-08-23tools: significantly simplify frr-reload context processingIgor Ryzhov
Currently, in frr-reload we: - store a list of single-line context keywords which needs to be frequently updated, - have a separate "if" clause for every node and subnode we have in FRR. Instead, we can store the tree of all known FRR nodes. This tree needs to be updated whenever we add a new node, which is not frequent. And, most importantly, it allows us to write node-agnostic code and save more than 250 LOC. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-08-08Merge pull request #8870 from anlancs/master-fix-reload-serviceDonald Sharp
tools: add "vni" to oneline list
2021-07-15tools: improve frr-reload.py delta file creationChristian Hopps
- Remove incorrect requirement for `service integrated-vtysh-config` when producing a delta. - Add `--test-reset` option which suppresses non-parseable lines from the produced delta - Use new features in common_config.py Signed-off-by: Christian Hopps <chopps@labn.net>
2021-06-30tools: add "vni" to oneline listanlancs
Add "vni" into oneline list. Additionally, keep them in order in oneline list. Signed-off-by: anlancs <anlan_cs@tom.com>
2021-06-23tools: limit bgp route-maps to direct changes onlyDonald Sharp
When using frr-reload.py to modify a bgp neighbors route-map the code was doing this: a) deleting the previous route-map: `no neighbor XX route-map YY (in|out)` b) Adding the new route-map back in `neighbor XX route-may ZZ (in|out)` Now imagine that we have an outgoing route-map that we are changing and the reload is large because of a large number of lines in frr.conf Item (a) will happen. BGP will immediately start sending all local routes. At some point in time in the future (b) will be applied. This of course causes a withdraw but for a short amount of time we are leaking unintended routes. This is bad for several reasons not 1) route churn upstream, 2) we might influence traffic to go the wrong way. 3) if upstream has a maximum-prefix command the routes being sent might trip its circuitry and shutdown the peer entirely not even allowing you to get to (b). Ticket: #2589685 Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-06-22Merge pull request #8867 from wesleycoakley/pbr-table-range-single-lineMark Stapp
tools: make frr-reload recognize `pbr table range` lines as single-line contexts
2021-06-18tools: add mac access-list context to frr-reload.pyDon Slice
Problem reported that frr-reload.py didn't handle the mac access-list command correctly, causing reloads to fail. This fix adds the support for the command as a single line context. Signed-off-by: Don Slice <dslice@nvidia.com>