summaryrefslogtreecommitdiff
path: root/mgmtd
diff options
context:
space:
mode:
Diffstat (limited to 'mgmtd')
-rw-r--r--mgmtd/mgmt.h5
-rw-r--r--mgmtd/mgmt_main.c22
-rw-r--r--mgmtd/mgmt_vty.c19
3 files changed, 29 insertions, 17 deletions
diff --git a/mgmtd/mgmt.h b/mgmtd/mgmt.h
index 603296bb38..f52d478bc2 100644
--- a/mgmtd/mgmt.h
+++ b/mgmtd/mgmt.h
@@ -68,8 +68,6 @@ struct mgmt_master {
};
extern struct mgmt_master *mm;
-extern char const *const mgmt_daemons[];
-extern uint mgmt_daemons_count;
/* Inline functions */
static inline unsigned long timeval_elapsed(struct timeval a, struct timeval b)
@@ -102,7 +100,8 @@ extern void mgmt_reset(void);
extern time_t mgmt_clock(void);
extern int mgmt_config_write(struct vty *vty);
-
+extern struct vty *mgmt_vty_read_config(const char *config_file,
+ char *config_default_dir);
extern void mgmt_master_init(struct event_loop *master, const int buffer_size);
extern void mgmt_init(void);
diff --git a/mgmtd/mgmt_main.c b/mgmtd/mgmt_main.c
index ad9f40e2a5..a705990cac 100644
--- a/mgmtd/mgmt_main.c
+++ b/mgmtd/mgmt_main.c
@@ -17,20 +17,12 @@
#include "routing_nb.h"
-char const *const mgmt_daemons[] = {
-#ifdef HAVE_STATICD
- "staticd",
-#endif
-};
-uint mgmt_daemons_count = array_size(mgmt_daemons);
-
/* mgmt options, we use GNU getopt library. */
static const struct option longopts[] = {
{"skip_runas", no_argument, NULL, 'S'},
{"no_zebra", no_argument, NULL, 'Z'},
{"socket_size", required_argument, NULL, 's'},
- {0}
-};
+ {0}};
static void mgmt_exit(int);
static void mgmt_vrf_terminate(void);
@@ -201,8 +193,11 @@ static void mgmt_vrf_terminate(void)
* all individual Backend clients.
*/
static const struct frr_yang_module_info *const mgmt_yang_modules[] = {
- &frr_filter_info, &frr_interface_info, &frr_route_map_info,
- &frr_routing_info, &frr_vrf_info,
+ &frr_filter_info,
+ &frr_interface_info,
+ &frr_route_map_info,
+ &frr_routing_info,
+ &frr_vrf_info,
/*
* YANG module info supported by backend clients get added here.
* NOTE: Always set .ignore_cbs true for to avoid validating
@@ -221,11 +216,12 @@ FRR_DAEMON_INFO(mgmtd, MGMTD, .vty_port = MGMTD_VTY_PORT,
.signals = mgmt_signals, .n_signals = array_size(mgmt_signals),
.privs = &mgmt_privs, .yang_modules = mgmt_yang_modules,
- .n_yang_modules = array_size(mgmt_yang_modules),
-);
+ .n_yang_modules = array_size(mgmt_yang_modules));
#define DEPRECATED_OPTIONS ""
+struct frr_daemon_info *mgmt_daemon_info = &mgmtd_di;
+
/* Main routine of mgmt. Treatment of argument and start mgmt finite
* state machine is handled at here.
*/
diff --git a/mgmtd/mgmt_vty.c b/mgmtd/mgmt_vty.c
index 7d6c8f206c..5cb172f3c9 100644
--- a/mgmtd/mgmt_vty.c
+++ b/mgmtd/mgmt_vty.c
@@ -10,6 +10,7 @@
#include "command.h"
#include "json.h"
+#include "network.h"
#include "northbound_cli.h"
#include "mgmtd/mgmt.h"
@@ -20,6 +21,8 @@
#include "mgmtd/mgmt_vty_clippy.c"
+extern struct frr_daemon_info *mgmt_daemon_info;
+
DEFPY(show_mgmt_be_adapter,
show_mgmt_be_adapter_cmd,
"show mgmt backend-adapter all",
@@ -452,6 +455,16 @@ DEFPY(debug_mgmt, debug_mgmt_cmd,
}
/*
+ * We need an event driven file reader for reading in config files.
+ */
+
+static void mgmt_config_read_in(struct event *event)
+{
+ mgmt_vty_read_configs();
+}
+
+#if 0
+/*
* Analog of `frr_config_read_in()`, instead of our config file though we loop
* over all daemons that have transitioned to mgmtd, loading their configs
*/
@@ -477,6 +490,7 @@ static int mgmt_config_pre_hook(struct event_loop *loop)
}
return 0;
}
+#endif
void mgmt_vty_init(void)
{
@@ -491,7 +505,10 @@ void mgmt_vty_init(void)
static_vty_init();
#endif
- hook_register(frr_config_pre, mgmt_config_pre_hook);
+ // hook_register(frr_config_pre, mgmt_config_pre_hook);
+
+ event_add_event(mm->master, mgmt_config_read_in, NULL, 0,
+ &mgmt_daemon_info->read_in);
install_node(&debug_node);