From: Christian Hopps Date: Thu, 12 Oct 2023 18:38:39 +0000 (-0400) Subject: mgmtd: clarify the startup dance in comments X-Git-Tag: base_10.0~361^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=f560807158c6e8fdf3065a0bf430684e2e84e2b2;p=matthieu%2Ffrr.git mgmtd: clarify the startup dance in comments Also retry the config read vs. aborting if we haven't got a FE client connection yet. Signed-off-by: Christian Hopps --- diff --git a/mgmtd/mgmt.c b/mgmtd/mgmt.c index 77c4473e49..8d41643065 100644 --- a/mgmtd/mgmt.c +++ b/mgmtd/mgmt.c @@ -52,17 +52,26 @@ void mgmt_init(void) /* Initialize the MGMTD Frontend Adapter Module */ mgmt_fe_adapter_init(mm->master); - /* Initialize the CLI frontend client */ + /* + * Initialize the CLI frontend client -- this queues an event for the + * client to short-circuit connect to the server (ourselves). + */ vty_init_mgmt_fe(); - /* MGMTD VTY commands installation. */ + /* + * MGMTD VTY commands installation -- the frr lib code will queue an + * event to read the config files which needs to happen after the + * connect from above is made. + */ mgmt_vty_init(); /* * Initialize the MGMTD Backend Adapter Module * - * We do this after the FE stuff so that we always read our config file - * prior to any BE connection. + * We do this after the FE stuff so that we have read our config file + * prior to any BE connection. Setting up the server will queue a + * "socket read" event to accept BE connections. So the code is counting + * on the above 2 events to run prior to any `accept` event from here. */ mgmt_be_adapter_init(mm->master); } diff --git a/mgmtd/mgmt_vty.c b/mgmtd/mgmt_vty.c index b49bf80306..d8f5976f4d 100644 --- a/mgmtd/mgmt_vty.c +++ b/mgmtd/mgmt_vty.c @@ -452,7 +452,14 @@ DEFPY(debug_mgmt, debug_mgmt_cmd, static void mgmt_config_read_in(struct event *event) { - mgmt_vty_read_configs(); + if (vty_mgmt_fe_enabled()) + mgmt_vty_read_configs(); + else { + zlog_warn("%s: no connection to front-end server, retry in 1s", + __func__); + event_add_timer(mm->master, mgmt_config_read_in, NULL, 1, + &mgmt_daemon_info->read_in); + } } void mgmt_vty_init(void)