Fix 2 bugs into the RC script (restart and quietstart) and add ISIS patch.
PR: 231984 Submitted by: pautina@kharkiv.net
This commit is contained in:
parent
067a4527b6
commit
9329a03da8
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=481322
3 changed files with 74 additions and 22 deletions
|
@ -2,7 +2,7 @@
|
|||
|
||||
PORTNAME= frr
|
||||
PORTVERSION= 5.0.1
|
||||
PORTREVISION= 2
|
||||
PORTREVISION= 3
|
||||
DISTVERSIONPREFIX= frr-
|
||||
CATEGORIES= net ipv6
|
||||
PKGNAMESUFFIX= 5
|
||||
|
|
|
@ -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
|
||||
|
|
51
net/frr5/files/patch-isisd_isis__circuit.c
Normal file
51
net/frr5/files/patch-isisd_isis__circuit.c
Normal file
|
@ -0,0 +1,51 @@
|
|||
From d4670f515b7f62bfd8f9bdd750540245aab542c0 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Franke <chris@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@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;
|
Loading…
Reference in a new issue