From 14db4eb38399b3493c1a813bdc31b1c5d3b8aa44 Mon Sep 17 00:00:00 2001 From: apwiggins Date: Mon, 20 Jan 2020 11:17:45 -0400 Subject: [PATCH 1/3] added reset interfaces at FRR startup adds an interface down and up for all interfaces except lo; assists babel in particular --- daemon/core/services/frr.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/daemon/core/services/frr.py b/daemon/core/services/frr.py index 95ffb0b5..436bc82c 100644 --- a/daemon/core/services/frr.py +++ b/daemon/core/services/frr.py @@ -225,8 +225,23 @@ if [ "$1" != "zebra" ]; then echo "WARNING: '$1': all FRR daemons are launched by the 'zebra' service!" exit 1 fi + +resetinterfaces() +{ + for iface in $(ifconfig | cut -d ' ' -f1 | tr ':' '\\n' | awk NF) + do + if [ "$iface" != "lo" ] + then + ip link set dev $iface down + sleep 1 + ip link set dev $iface up + fi + done +} + confcheck bootfrr +resetinterfaces """ % ( cls.configs[0], frr_sbin_search, From 89af081712e5cad06d4e07656601825f813edcbc Mon Sep 17 00:00:00 2001 From: bharnden <32446120+bharnden@users.noreply.github.com> Date: Mon, 20 Jan 2020 22:38:34 -0800 Subject: [PATCH 2/3] Update frr.py replace deprecated ifconfig with ip --- daemon/core/services/frr.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/daemon/core/services/frr.py b/daemon/core/services/frr.py index 436bc82c..0694c6d3 100644 --- a/daemon/core/services/frr.py +++ b/daemon/core/services/frr.py @@ -228,7 +228,7 @@ fi resetinterfaces() { - for iface in $(ifconfig | cut -d ' ' -f1 | tr ':' '\\n' | awk NF) + for iface in $(ip -o link show up | awk -F': ' '{print $2}') do if [ "$iface" != "lo" ] then From 53dd1de090e83fb5b454470dee1c7d7bd0e15164 Mon Sep 17 00:00:00 2001 From: bharnden <32446120+bharnden@users.noreply.github.com> Date: Tue, 28 Jan 2020 13:33:34 -0800 Subject: [PATCH 3/3] Update frr.py updates to generate interface up/down commands for node interfaces --- daemon/core/services/frr.py | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/daemon/core/services/frr.py b/daemon/core/services/frr.py index 0694c6d3..1a266e92 100644 --- a/daemon/core/services/frr.py +++ b/daemon/core/services/frr.py @@ -131,7 +131,7 @@ class FRRZebra(CoreService): frr_sbin_search = node.session.options.get_config( "frr_sbin_search", default='"/usr/local/sbin /usr/sbin /usr/lib/frr"' ) - return """\ + cfg = """\ #!/bin/sh # auto-generated by zebra service (frr.py) FRR_CONF=%s @@ -226,28 +226,19 @@ if [ "$1" != "zebra" ]; then exit 1 fi -resetinterfaces() -{ - for iface in $(ip -o link show up | awk -F': ' '{print $2}') - do - if [ "$iface" != "lo" ] - then - ip link set dev $iface down - sleep 1 - ip link set dev $iface up - fi - done -} - confcheck bootfrr -resetinterfaces """ % ( cls.configs[0], frr_sbin_search, frr_bin_search, constants.FRR_STATE_DIR, ) + for ifc in node.netifs(): + cfg += f"ip link set dev {ifc.name} down\n" + cfg += "sleep 1\n" + cfg += f"ip link set dev {ifc.name} up\n" + return cfg @classmethod def generateFrrDaemons(cls, node):