svn commit: r481322 - in head/net/frr5: . files
Olivier Cochard
olivier at FreeBSD.org
Sat Oct 6 07:25:22 UTC 2018
Author: olivier
Date: Sat Oct 6 07:25:21 2018
New Revision: 481322
URL: https://svnweb.freebsd.org/changeset/ports/481322
Log:
Fix 2 bugs into the RC script (restart and quietstart) and add ISIS patch.
PR: 231984
Submitted by: pautina at kharkiv.net
Added:
head/net/frr5/files/patch-isisd_isis__circuit.c (contents, props changed)
Modified:
head/net/frr5/Makefile
head/net/frr5/files/frr.in
Modified: head/net/frr5/Makefile
==============================================================================
--- head/net/frr5/Makefile Sat Oct 6 06:12:47 2018 (r481321)
+++ head/net/frr5/Makefile Sat Oct 6 07:25:21 2018 (r481322)
@@ -2,7 +2,7 @@
PORTNAME= frr
PORTVERSION= 5.0.1
-PORTREVISION= 2
+PORTREVISION= 3
DISTVERSIONPREFIX= frr-
CATEGORIES= net ipv6
PKGNAMESUFFIX= 5
Modified: head/net/frr5/files/frr.in
==============================================================================
--- head/net/frr5/files/frr.in Sat Oct 6 06:12:47 2018 (r481321)
+++ head/net/frr5/files/frr.in Sat Oct 6 07:25:21 2018 (r481322)
@@ -89,6 +89,7 @@ do_cmd()
{
local ret
ret=0
+ frr_cmd=$1
for daemon in ${frr_daemons}; do
command=%%PREFIX%%/sbin/${daemon}
required_files=%%ETCDIR%%/${daemon}.conf
@@ -118,11 +119,11 @@ frr_cmd=$1
case "$1" in
force*)
- frr_cmd=${frr_cmd#force}
- ;;
+ frr_cmd=${frr_cmd#force}
+ ;;
fast*)
- frr_cmd=${frr_cmd#fast}
- ;;
+ frr_cmd=${frr_cmd#fast}
+ ;;
esac
shift
@@ -131,24 +132,24 @@ if [ $# -ge 1 ]; then
fi
case "${frr_cmd}" in
- start)
- if [ -n "${frr_extralibs_path}" ]; then
- /sbin/ldconfig -m ${frr_extralibs_path}
- fi
- # Why should I need to add this check ?
- checkyesno frr_enable && do_cmd "start"
- ;;
+ start|quietstart)
+ if [ -n "${frr_extralibs_path}" ]; then
+ /sbin/ldconfig -m ${frr_extralibs_path}
+ fi
+ # Why should I need to add this check ?
+ checkyesno frr_enable && do_cmd "start"
+ ;;
stop)
- frr_daemons=$(reverse_list ${frr_daemons})
- do_cmd "stop"
- ;;
+ frr_daemons=$(reverse_list ${frr_daemons})
+ do_cmd "stop"
+ ;;
restart)
- frr_daemons=$(reverse_list ${frr_daemons})
- do_cmd "stop"
- frr_daemons=$(reverse_list ${frr_daemons})
- checkyesno frr_enable && do_cmd "start"
- ;;
+ frr_daemons=$(reverse_list ${frr_daemons})
+ do_cmd "stop"
+ frr_daemons=$(reverse_list ${frr_daemons})
+ checkyesno frr_enable && do_cmd "start"
+ ;;
*)
- do_cmd "${frr_cmd}"
- ;;
+ do_cmd "${frr_cmd}"
+ ;;
esac
Added: head/net/frr5/files/patch-isisd_isis__circuit.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/net/frr5/files/patch-isisd_isis__circuit.c Sat Oct 6 07:25:21 2018 (r481322)
@@ -0,0 +1,51 @@
+From d4670f515b7f62bfd8f9bdd750540245aab542c0 Mon Sep 17 00:00:00 2001
+From: Christian Franke <chris at opensourcerouting.org>
+Date: Tue, 17 Jul 2018 15:14:54 -0400
+Subject: [PATCH] isisd: don't crash when isis_sock_init fails
+
+When isis_sock_init fails in isis_circuit_up, isis_circuit_down would
+be called to cancel timers which were scheduled. However
+isis_circuit_down would immediately return, since the state had not been
+changed to 'UP' yet.
+
+Fix this by having isis_circuit_down always cancel all the timers.
+
+Signed-off-by: Christian Franke <chris at opensourcerouting.org>
+--- isisd/isis_circuit.c.orig 2018-07-05 07:40:17 UTC
++++ isisd/isis_circuit.c
+@@ -638,7 +638,7 @@ int isis_circuit_up(struct isis_circuit *circuit)
+ thread_add_timer(master, isis_run_dr_l2, circuit,
+ 2 * circuit->hello_interval[1],
+ &circuit->u.bc.t_run_dr[1]);
+- } else {
++ } else if (circuit->circ_type == CIRCUIT_T_P2P) {
+ /* initializing the hello send threads
+ * for a ptp IF
+ */
+@@ -682,9 +682,6 @@ int isis_circuit_up(struct isis_circuit *circuit)
+
+ void isis_circuit_down(struct isis_circuit *circuit)
+ {
+- if (circuit->state != C_STATE_UP)
+- return;
+-
+ /* Clear the flags for all the lsps of the circuit. */
+ isis_circuit_update_all_srmflags(circuit, 0);
+
+@@ -756,10 +753,12 @@ void isis_circuit_down(struct isis_circuit *circuit)
+ }
+
+ /* send one gratuitous hello to spead up convergence */
+- if (circuit->is_type & IS_LEVEL_1)
+- send_hello(circuit, IS_LEVEL_1);
+- if (circuit->is_type & IS_LEVEL_2)
+- send_hello(circuit, IS_LEVEL_2);
++ if (circuit->state == C_STATE_UP) {
++ if (circuit->is_type & IS_LEVEL_1)
++ send_hello(circuit, IS_LEVEL_1);
++ if (circuit->is_type & IS_LEVEL_2)
++ send_hello(circuit, IS_LEVEL_2);
++ }
+
+ circuit->upadjcount[0] = 0;
+ circuit->upadjcount[1] = 0;
More information about the svn-ports-all
mailing list