In state IDLE handle EVNT_STOP and stop the IdleHold timer. This way
authorclaudio <claudio@openbsd.org>
Mon, 22 Apr 2024 09:43:11 +0000 (09:43 +0000)
committerclaudio <claudio@openbsd.org>
Mon, 22 Apr 2024 09:43:11 +0000 (09:43 +0000)
a down of an idle connection will properly stop the session.

OK tb@ (as part of larger diff)

usr.sbin/bgpd/session.c

index 751d962..e2260e2 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: session.c,v 1.472 2024/04/22 09:36:04 claudio Exp $ */
+/*     $OpenBSD: session.c,v 1.473 2024/04/22 09:43:11 claudio Exp $ */
 
 /*
  * Copyright (c) 2003, 2004, 2005 Henning Brauer <henning@openbsd.org>
@@ -623,6 +623,9 @@ bgp_fsm(struct peer *peer, enum session_events event)
                        }
                        peer->passive = 0;
                        break;
+               case EVNT_STOP:
+                       timer_stop(&peer->timers, Timer_IdleHold);
+                       break;
                default:
                        /* ignore */
                        break;