I just changed the way IdleHold time is reset to the default values.
Another place I think it makes sense to reset these backoff values is
when an admin issues a bgpctl nei 192.0.2.2 clear or up.

This should help bringing sessions up between systems after instabilities
(or in my case when testing too much and therefor reseting the session
over and over again).

OK?
-- 
:wq Claudio

Index: control.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/control.c,v
retrieving revision 1.98
diff -u -p -r1.98 control.c
--- control.c   8 Aug 2019 20:06:29 -0000       1.98
+++ control.c   12 Aug 2019 14:11:12 -0000
@@ -376,6 +376,9 @@ control_dispatch_msg(struct pollfd *pfd,
                                        bgp_fsm(p, EVNT_START);
                                        p->conf.down = 0;
                                        p->conf.shutcomm[0] = '\0';
+                                       p->IdleHoldTime =
+                                           INTERVAL_IDLE_HOLD_INITIAL;
+                                       p->errcnt = 0;
                                        control_result(c, CTL_RES_OK);
                                        break;
                                case IMSG_CTL_NEIGHBOR_DOWN:
@@ -390,6 +393,9 @@ control_dispatch_msg(struct pollfd *pfd,
                                        strlcpy(p->conf.shutcomm,
                                            neighbor->shutcomm,
                                            sizeof(neighbor->shutcomm));
+                                       p->IdleHoldTime =
+                                           INTERVAL_IDLE_HOLD_INITIAL;
+                                       p->errcnt = 0;
                                        if (!p->conf.down) {
                                                session_stop(p,
                                                    ERR_CEASE_ADMIN_RESET);

Reply via email to