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