diff options
author | Konstantin Shalygin | 2019-04-29 13:55:54 +0700 |
---|---|---|
committer | Konstantin Shalygin | 2019-04-29 13:55:54 +0700 |
commit | 6076e7ed34de554d8c8b74b60ac95a2a12c5528f (patch) | |
tree | e5a5c5b54ddcd589ee471d19fd266ee61b35c58b | |
parent | 57dcac2d430da618ff239e2162fa7ff3bec8ba9f (diff) | |
download | aur-6076e7ed34de554d8c8b74b60ac95a2a12c5528f.tar.gz |
Revert 'per daemon service' systemd patch & added @eugeneai patches.
-rw-r--r-- | .SRCINFO | 8 | ||||
-rw-r--r-- | PKGBUILD | 19 | ||||
-rw-r--r-- | frr_6.0_systemd_arch.patch | 303 | ||||
-rw-r--r-- | frr_7.0_Archlinux.patch | 104 |
4 files changed, 429 insertions, 5 deletions
@@ -1,9 +1,9 @@ # Generated by mksrcinfo v8 -# Thu Mar 14 02:29:14 UTC 2019 +# Mon Apr 29 06:55:02 UTC 2019 pkgbase = frr pkgdesc = FRRouting (quagga fork) supports BGP4, OSPFv2, OSPFv3, ISIS, RIP, RIPng, PIM, LDP, NHRP and EIGRP. pkgver = 7.0 - pkgrel = 1 + pkgrel = 2 url = https://frrouting.org/ arch = any license = GPL2 @@ -32,9 +32,13 @@ pkgbase = frr source = https://github.com/FRRouting/frr/archive/frr-7.0.tar.gz source = frr.sysusers source = frr.tmpfiles + source = frr_6.0_systemd_arch.patch + source = frr_7.0_Archlinux.patch sha256sums = 15b62dc0c52531e4bcefa6b830e9b9b07d1d0f189c2110307dbc19d80b719354 sha256sums = 9371cc0522d13621c623b5da77719052bdebdceb7ffdbdc06fc32a2f07118e7e sha256sums = 6f8dd86ef9c600763faead3052908531e8dc8ef67058e6f7f8da01bf0fe4eb89 + sha256sums = 9d98a0b5d7016cb66fe3cbec234f70327f0a961de47f7eae39a5bd4477b072ce + sha256sums = 4bfa5c8014869741cae034c6dfb133acfe5c4dbe37838770e36a6796dc411b39 pkgname = frr @@ -3,7 +3,7 @@ pkgname='frr' pkgver='7.0' -pkgrel='1' +pkgrel='2' pkgdesc='FRRouting (quagga fork) supports BGP4, OSPFv2, OSPFv3, ISIS, RIP, RIPng, PIM, LDP, NHRP and EIGRP.' arch=('any') url="https://frrouting.org/" @@ -16,14 +16,24 @@ conflicts=('quagga' 'babeld' 'quagga_cumulus') provides=('quagga' 'quagga_cumulus') source=("https://github.com/FRRouting/${pkgname}/archive/${pkgname}-${pkgver}.tar.gz" "${pkgname}.sysusers" - "${pkgname}.tmpfiles") + "${pkgname}.tmpfiles" + "${pkgname}_6.0_systemd_arch.patch" + "${pkgname}_7.0_Archlinux.patch") sha256sums=('15b62dc0c52531e4bcefa6b830e9b9b07d1d0f189c2110307dbc19d80b719354' '9371cc0522d13621c623b5da77719052bdebdceb7ffdbdc06fc32a2f07118e7e' - '6f8dd86ef9c600763faead3052908531e8dc8ef67058e6f7f8da01bf0fe4eb89') + '6f8dd86ef9c600763faead3052908531e8dc8ef67058e6f7f8da01bf0fe4eb89' + '9d98a0b5d7016cb66fe3cbec234f70327f0a961de47f7eae39a5bd4477b072ce' + '4bfa5c8014869741cae034c6dfb133acfe5c4dbe37838770e36a6796dc411b39') prepare() { cd "${srcdir}/${pkgname}-${pkgname}-${pkgver}" + # https://github.com/FRRouting/frr/issues/1422 + patch -p1 -i "${srcdir}/${pkgname}_6.0_systemd_arch.patch" + + # https://github.com/FRRouting/frr/issues/4167 + patch -p1 -i "${srcdir}/${pkgname}_7.0_Archlinux.patch" + autoreconf -fvi ./configure \ --prefix="/usr" \ @@ -63,6 +73,9 @@ package() { sed -ri 's|/var/run/frr|/run/frr|g' "${pkgname}.logrotate" sed -ri 's|/usr/lib/frr/|/usr/bin/|g' "${pkgname}.service" install -Dm0644 "${pkgname}.logrotate" "${pkgdir}/etc/logrotate.d/${pkgname}" + for d in babeld bgpd bfdd eigrpd isisd ldpd nhrpd ospf6d ospfd ospfd-instance@ pbrd pimd ripd ripngd staticd zebra; do + install -Dm0644 ${d}.service "${pkgdir}/usr/lib/systemd/system/${d}.service" + done install -Dm0644 "daemons" "${pkgdir}/etc/frr/daemons.conf" install -Dm0644 "${pkgname}.pam" "${pkgdir}/etc/pam.d/${pkgname}" install -Dm0644 "${pkgname}.service" "${pkgdir}/usr/lib/systemd/system/${pkgname}.service" diff --git a/frr_6.0_systemd_arch.patch b/frr_6.0_systemd_arch.patch new file mode 100644 index 000000000000..a05d313fa33d --- /dev/null +++ b/frr_6.0_systemd_arch.patch @@ -0,0 +1,303 @@ +diff -Naupr frr-frr-6.0_orig/redhat/babeld.service frr-frr-6.0/redhat/babeld.service +--- frr-frr-6.0_orig/redhat/babeld.service 1970-01-01 07:00:00.000000000 +0700 ++++ frr-frr-6.0/redhat/babeld.service 2018-10-12 09:58:16.424665052 +0700 +@@ -0,0 +1,15 @@ ++[Unit] ++Description=Babel routing daemon ++Documentation=man:babeld(8) man:zebra(8) ++BindTo=zebra.service ++After=network.target zebra.service ++ ++[Service] ++Type=forking ++PIDFile=/run/frr/babeld.pid ++ExecStart=/usr/bin/babeld -d ++ExecReload=/bin/kill -HUP $MAINPID ++Restart=on-abort ++ ++[Install] ++WantedBy=multi-user.target +diff -Naupr frr-frr-6.0_orig/redhat/bfdd.service frr-frr-6.0/redhat/bfdd.service +--- frr-frr-6.0_orig/redhat/bfdd.service 1970-01-01 07:00:00.000000000 +0700 ++++ frr-frr-6.0/redhat/bfdd.service 2018-10-12 10:05:33.009496639 +0700 +@@ -0,0 +1,15 @@ ++[Unit] ++Description=Communication failure detection daemon ++Documentation=man:bfdd(8) man:zebra(8) ++BindTo=zebra.service ++After=network.target zebra.service ++ ++[Service] ++Type=forking ++PIDFile=/run/frr/bfdd.pid ++ExecStart=/usr/bin/bfdd -d ++ExecReload=/bin/kill -HUP $MAINPID ++Restart=on-abort ++ ++[Install] ++WantedBy=multi-user.target +diff -Naupr frr-frr-6.0_orig/redhat/bgpd.service frr-frr-6.0/redhat/bgpd.service +--- frr-frr-6.0_orig/redhat/bgpd.service 1970-01-01 07:00:00.000000000 +0700 ++++ frr-frr-6.0/redhat/bgpd.service 2018-10-12 09:58:16.424665052 +0700 +@@ -0,0 +1,15 @@ ++[Unit] ++Description=BGP routing daemon ++Documentation=man:bgpd(8) man:zebra(8) ++BindTo=zebra.service ++After=network.target zebra.service ++ ++[Service] ++Type=forking ++PIDFile=/run/frr/bgpd.pid ++ExecStart=/usr/bin/bgpd -d ++ExecReload=/bin/kill -HUP $MAINPID ++Restart=on-abort ++ ++[Install] ++WantedBy=multi-user.target +diff -Naupr frr-frr-6.0_orig/redhat/eigrpd.service frr-frr-6.0/redhat/eigrpd.service +--- frr-frr-6.0_orig/redhat/eigrpd.service 1970-01-01 07:00:00.000000000 +0700 ++++ frr-frr-6.0/redhat/eigrpd.service 2018-10-12 09:58:16.424665052 +0700 +@@ -0,0 +1,15 @@ ++[Unit] ++Description=EIGRP routing daemon ++Documentation=man:eigrpd(8) man:zebra(8) ++BindTo=zebra.service ++After=network.target zebra.service ++ ++[Service] ++Type=forking ++PIDFile=/run/frr/eigrpd.pid ++ExecStart=/usr/bin/eigrpd -d ++ExecReload=/bin/kill -HUP $MAINPID ++Restart=on-abort ++ ++[Install] ++WantedBy=multi-user.target +diff -Naupr frr-frr-6.0_orig/redhat/isisd.service frr-frr-6.0/redhat/isisd.service +--- frr-frr-6.0_orig/redhat/isisd.service 1970-01-01 07:00:00.000000000 +0700 ++++ frr-frr-6.0/redhat/isisd.service 2018-10-12 09:58:16.424665052 +0700 +@@ -0,0 +1,15 @@ ++[Unit] ++Description=IS-IS routing daemon ++Documentation=man:isis(8) man:zebra(8) ++BindTo=zebra.service ++After=network.target zebra.service ++ ++[Service] ++Type=forking ++PIDFile=/run/frr/isisd.pid ++ExecStart=/usr/bin/isisd -d ++ExecReload=/bin/kill -HUP $MAINPID ++Restart=on-abort ++ ++[Install] ++WantedBy=multi-user.target +diff -Naupr frr-frr-6.0_orig/redhat/ldpd.service frr-frr-6.0/redhat/ldpd.service +--- frr-frr-6.0_orig/redhat/ldpd.service 1970-01-01 07:00:00.000000000 +0700 ++++ frr-frr-6.0/redhat/ldpd.service 2018-10-12 09:58:16.424665052 +0700 +@@ -0,0 +1,15 @@ ++[Unit] ++Description=LDP engine ++Documentation=man:ldpd(8) man:zebra(8) ++BindTo=zebra.service ++After=network.target zebra.service ++ ++[Service] ++Type=forking ++PIDFile=/run/frr/ldpd.pid ++ExecStart=/usr/bin/ldpd -d ++ExecReload=/bin/kill -HUP $MAINPID ++Restart=on-abort ++ ++[Install] ++WantedBy=multi-user.target +diff -Naupr frr-frr-6.0_orig/redhat/nhrpd.service frr-frr-6.0/redhat/nhrpd.service +--- frr-frr-6.0_orig/redhat/nhrpd.service 1970-01-01 07:00:00.000000000 +0700 ++++ frr-frr-6.0/redhat/nhrpd.service 2018-10-12 09:58:16.424665052 +0700 +@@ -0,0 +1,15 @@ ++[Unit] ++Description=NHRP daemon ++Documentation=man:nhrpd(8) man:zebra(8) ++BindTo=zebra.service ++After=network.target zebra.service ++ ++[Service] ++Type=forking ++PIDFile=/run/frr/nhrpd.pid ++ExecStart=/usr/bin/nhrpd -d ++ExecReload=/bin/kill -HUP $MAINPID ++Restart=on-abort ++ ++[Install] ++WantedBy=multi-user.target +diff -Naupr frr-frr-6.0_orig/redhat/ospf6d.service frr-frr-6.0/redhat/ospf6d.service +--- frr-frr-6.0_orig/redhat/ospf6d.service 1970-01-01 07:00:00.000000000 +0700 ++++ frr-frr-6.0/redhat/ospf6d.service 2018-10-12 09:58:16.424665052 +0700 +@@ -0,0 +1,15 @@ ++[Unit] ++Description=OSPF routing daemon for IPv6 ++Documentation=man:ospfd(8) man:zebra(8) ++BindTo=zebra.service ++After=network.target zebra.service ++ ++[Service] ++Type=forking ++PIDFile=/run/frr/ospf6d.pid ++ExecStart=/usr/bin/ospf6d -d ++ExecReload=/bin/kill -HUP $MAINPID ++Restart=on-abort ++ ++[Install] ++WantedBy=multi-user.target +diff -Naupr frr-frr-6.0_orig/redhat/ospfd-instance@.service frr-frr-6.0/redhat/ospfd-instance@.service +--- frr-frr-6.0_orig/redhat/ospfd-instance@.service 1970-01-01 07:00:00.000000000 +0700 ++++ frr-frr-6.0/redhat/ospfd-instance@.service 2018-10-12 09:58:16.424665052 +0700 +@@ -0,0 +1,15 @@ ++[Unit] ++Description=OSPF routing daemon instance %i ++Documentation=man:ospfd(8) man:zebra(8) ++BindTo=zebra.service ++After=network.target zebra.service ospfd.service ++ ++[Service] ++Type=forking ++PIDFile=/run/frr/ospfd-%i.pid ++ExecStart=/usr/bin/ospfd -n %i -d ++ExecReload=/bin/kill -HUP $MAINPID ++Restart=on-abort ++ ++[Install] ++WantedBy=multi-user.target +diff -Naupr frr-frr-6.0_orig/redhat/ospfd.service frr-frr-6.0/redhat/ospfd.service +--- frr-frr-6.0_orig/redhat/ospfd.service 1970-01-01 07:00:00.000000000 +0700 ++++ frr-frr-6.0/redhat/ospfd.service 2018-10-12 09:58:16.424665052 +0700 +@@ -0,0 +1,15 @@ ++[Unit] ++Description=OSPF routing daemon ++Documentation=man:ospfd(8) man:zebra(8) ++BindTo=zebra.service ++After=network.target zebra.service ++ ++[Service] ++Type=forking ++PIDFile=/run/frr/ospfd.pid ++ExecStart=/usr/bin/ospfd -d ++ExecReload=/bin/kill -HUP $MAINPID ++Restart=on-abort ++ ++[Install] ++WantedBy=multi-user.target +diff -Naupr frr-frr-6.0_orig/redhat/pbrd.service frr-frr-6.0/redhat/pbrd.service +--- frr-frr-6.0_orig/redhat/pbrd.service 1970-01-01 07:00:00.000000000 +0700 ++++ frr-frr-6.0/redhat/pbrd.service 2018-10-12 09:58:16.424665052 +0700 +@@ -0,0 +1,15 @@ ++[Unit] ++Description=PBR routing daemon ++Documentation=man:pbrd(8) man:zebra(8) ++BindTo=zebra.service ++After=network.target zebra.service ++ ++[Service] ++Type=forking ++PIDFile=/run/frr/pbrd.pid ++ExecStart=/usr/bin/pbrd -d ++ExecReload=/bin/kill -HUP $MAINPID ++Restart=on-abort ++ ++[Install] ++WantedBy=multi-user.target +diff -Naupr frr-frr-6.0_orig/redhat/pimd.service frr-frr-6.0/redhat/pimd.service +--- frr-frr-6.0_orig/redhat/pimd.service 1970-01-01 07:00:00.000000000 +0700 ++++ frr-frr-6.0/redhat/pimd.service 2018-10-12 09:58:16.424665052 +0700 +@@ -0,0 +1,14 @@ ++[Unit] ++Description=PIM multicast routing engine ++Documentation=man:pimd(8) man:zebra(8) ++BindTo=zebra.service ++After=network.target zebra.service ++ ++[Service] ++Type=forking ++PIDFile=/run/frr/pimd.pid ++ExecStart=/usr/bin/pimd -d ++Restart=on-abort ++ ++[Install] ++WantedBy=multi-user.target +diff -Naupr frr-frr-6.0_orig/redhat/ripd.service frr-frr-6.0/redhat/ripd.service +--- frr-frr-6.0_orig/redhat/ripd.service 1970-01-01 07:00:00.000000000 +0700 ++++ frr-frr-6.0/redhat/ripd.service 2018-10-12 09:58:16.424665052 +0700 +@@ -0,0 +1,15 @@ ++[Unit] ++Description=RIP routing daemon ++Documentation=man:ripd(8) man:zebra(8) ++BindTo=zebra.service ++After=network.target zebra.service ++ ++[Service] ++Type=forking ++PIDFile=/run/frr/ripd.pid ++ExecStart=/usr/bin/ripd -d ++ExecReload=/bin/kill -HUP $MAINPID ++Restart=on-abort ++ ++[Install] ++WantedBy=multi-user.target +diff -Naupr frr-frr-6.0_orig/redhat/ripngd.service frr-frr-6.0/redhat/ripngd.service +--- frr-frr-6.0_orig/redhat/ripngd.service 1970-01-01 07:00:00.000000000 +0700 ++++ frr-frr-6.0/redhat/ripngd.service 2018-10-12 09:58:16.424665052 +0700 +@@ -0,0 +1,15 @@ ++[Unit] ++Description=RIP routing daemon for IPv6 ++Documentation=man:ripngd(8) man:zebra(8) ++BindTo=zebra.service ++After=network.target zebra.service ++ ++[Service] ++Type=forking ++PIDFile=/run/frr/ripngd.pid ++ExecStart=/usr/bin/ripngd -d ++ExecReload=/bin/kill -HUP $MAINPID ++Restart=on-abort ++ ++[Install] ++WantedBy=multi-user.target +diff -Naupr frr-frr-6.0_orig/redhat/staticd.service frr-frr-6.0/redhat/staticd.service +--- frr-frr-6.0_orig/redhat/staticd.service 1970-01-01 07:00:00.000000000 +0700 ++++ frr-frr-6.0/redhat/staticd.service 2018-10-12 10:13:47.017305494 +0700 +@@ -0,0 +1,15 @@ ++[Unit] ++Description=Zebra daemon responsible for management of static routes ++Documentation=man:staticd(8) man:zebra(8) ++BindTo=zebra.service ++After=network.target zebra.service ++ ++[Service] ++Type=forking ++PIDFile=/run/frr/staticd.pid ++ExecStart=/usr/bin/staticd -d ++ExecReload=/bin/kill -HUP $MAINPID ++Restart=on-abort ++ ++[Install] ++WantedBy=multi-user.target +diff -Naupr frr-frr-6.0_orig/redhat/zebra.service frr-frr-6.0/redhat/zebra.service +--- frr-frr-6.0_orig/redhat/zebra.service 1970-01-01 07:00:00.000000000 +0700 ++++ frr-frr-6.0/redhat/zebra.service 2018-10-12 09:58:16.424665052 +0700 +@@ -0,0 +1,15 @@ ++[Unit] ++Description=GNU Zebra routing manager ++Documentation=man:zebra(8) ++After=network.target ++ ++[Service] ++Type=forking ++PIDFile=/run/frr/zebra.pid ++ExecStartPre=/usr/bin/ip route flush proto zebra ++ExecStart=/usr/bin/zebra -d ++ExecReload=/bin/kill -HUP $MAINPID ++Restart=on-abort ++ ++[Install] ++WantedBy=multi-user.target diff --git a/frr_7.0_Archlinux.patch b/frr_7.0_Archlinux.patch new file mode 100644 index 000000000000..a48af7998bf2 --- /dev/null +++ b/frr_7.0_Archlinux.patch @@ -0,0 +1,104 @@ +diff -Naupr frr-frr-7.0_orig/redhat/daemons frr-frr-7.0/redhat/daemons +--- frr-frr-7.0_orig/redhat/daemons 2019-03-01 06:32:04.000000000 +0700 ++++ frr-frr-7.0/redhat/daemons 2019-04-29 13:42:01.157161004 +0700 +@@ -35,7 +35,7 @@ + # group "frrvty" and set to ug=rw,o= though. Check /etc/pam.d/frr, too. + # + watchfrr_enable=yes +-watchfrr_options="-r '/usr/lib/frr/frr restart %s' -s '/usr/lib/frr/frr start %s' -k '/usr/lib/frr/frr stop %s'" ++watchfrr_options="-d -r '/usr/bin/frr restart %s' -s '/usr/bin/frr start %s' -k '/usr/bin/frr stop %s'" + # + zebra=no + bgpd=no +@@ -58,23 +58,23 @@ fabricd=no + # + # Command line options for the daemons + # +-zebra_options=("-A 127.0.0.1") +-bgpd_options=("-A 127.0.0.1") +-ospfd_options=("-A 127.0.0.1") +-ospf6d_options=("-A ::1") +-ripd_options=("-A 127.0.0.1") +-ripngd_options=("-A ::1") +-isisd_options=("-A 127.0.0.1") +-ldpd_options=("-A 127.0.0.1") +-pimd_options=("-A 127.0.0.1") +-nhrpd_options=("-A 127.0.0.1") +-eigrpd_options=("-A 127.0.0.1") +-babeld_options=("-A 127.0.0.1") +-sharpd_options=("-A 127.0.0.1") +-pbrd_options=("-A 127.0.0.1") +-staticd_options=("-A 127.0.0.1") +-bfdd_options=("-A 127.0.0.1") +-fabricd_options=("-A 127.0.0.1") ++zebra_options=("-A 127.0.0.1 -d") ++bgpd_options=("-A 127.0.0.1 -d") ++ospfd_options=("-A 127.0.0.1 -d") ++ospf6d_options=("-A ::1 -d") ++ripd_options=("-A 127.0.0.1 -d") ++ripngd_options=("-A ::1 -d") ++isisd_options=("-A 127.0.0.1 -d") ++ldpd_options=("-A 127.0.0.1 -d") ++pimd_options=("-A 127.0.0.1 -d") ++nhrpd_options=("-A 127.0.0.1 -d") ++eigrpd_options=("-A 127.0.0.1 -d") ++babeld_options=("-A 127.0.0.1 -d") ++sharpd_options=("-A 127.0.0.1 -d") ++pbrd_options=("-A 127.0.0.1 -d") ++staticd_options=("-A 127.0.0.1 -d") ++bfdd_options=("-A 127.0.0.1 -d") ++fabricd_options=("-A 127.0.0.1 -d") + + # + # If the vtysh_enable is yes, then the unified config is read +diff -Naupr frr-frr-7.0_orig/tools/frrcommon.sh.in frr-frr-7.0/tools/frrcommon.sh.in +--- frr-frr-7.0_orig/tools/frrcommon.sh.in 2019-03-01 06:32:04.000000000 +0700 ++++ frr-frr-7.0/tools/frrcommon.sh.in 2019-04-29 11:50:28.826125721 +0700 +@@ -270,7 +270,7 @@ load_old_config() { + [ -s "$oldcfg" ] || return 0 + grep -v '^[[:blank:]]*\(#\|$\)' "$oldcfg" > /dev/null || return 0 + +- log_warning_msg "Reading deprecated $oldcfg. Please move its settings to $C_PATH/daemons and remove it." ++ log_warning_msg "Reading deprecated $oldcfg. Please move its settings to $C_PATH/daemons.conf and remove it." + + # save off settings from daemons for the OR below + for dmn in $DAEMONS; do eval "_new_$dmn=\${$dmn:-no}"; done +@@ -281,8 +281,8 @@ load_old_config() { + for dmn in $DAEMONS; do eval "test \$_new_$dmn != no && $dmn=\$_new_$dmn; unset _new_$dmn"; done + } + +-[ -r "$C_PATH/daemons" ] || { +- log_failure_msg "cannot run $@: $C_PATH/daemons does not exist" ++[ -r "$C_PATH/daemons.conf" ] || { ++ log_failure_msg "cannot run $@: $C_PATH/daemons.conf does not exist" + exit 1 + } + . "$C_PATH/daemons" +diff -Naupr frr-frr-7.0_orig/tools/frr.in frr-frr-7.0/tools/frr.in +--- frr-frr-7.0_orig/tools/frr.in 2019-03-01 06:32:04.000000000 +0700 ++++ frr-frr-7.0/tools/frr.in 2019-04-29 11:50:23.632759891 +0700 +@@ -500,10 +500,9 @@ check_status() + ######################################################### + + # Config broken but script must exit silently. +-[ ! -r "$C_PATH/daemons" ] && exit 0 ++[ ! -r "$C_PATH/daemons.conf" ] && exit 0 + + # Load configuration +-. "$C_PATH/daemons" + . "$C_PATH/daemons.conf" + + # Read configuration variable file if it is present +diff -Naupr frr-frr-7.0_orig/tools/frr-reload frr-frr-7.0/tools/frr-reload +--- frr-frr-7.0_orig/tools/frr-reload 2019-03-01 06:32:04.000000000 +0700 ++++ frr-frr-7.0/tools/frr-reload 2019-04-29 11:51:12.669735089 +0700 +@@ -1,7 +1,7 @@ + #!/bin/sh + +-if test -e /usr/lib/frr/frr-reload.py; then +- exec /usr/lib/frr/frr-reload.py --reload /etc/frr/frr.conf ++if test -e /usr/bin/frr-reload.py; then ++ exec /usr/bin/frr-reload.py --reload /etc/frr/frr.conf + fi + >&2 echo "Please install frr-pythontools package. Required for reload" + exit 1 |