From f560807158c6e8fdf3065a0bf430684e2e84e2b2 Mon Sep 17 00:00:00 2001 From: Christian Hopps Date: Thu, 12 Oct 2023 14:38:39 -0400 Subject: [PATCH] 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 --- mgmtd/mgmt.c | 17 +++++++++++++---- mgmtd/mgmt_vty.c | 9 ++++++++- 2 files changed, 21 insertions(+), 5 deletions(-) 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) -- 2.39.5