diff options
Diffstat (limited to 'staticd/static_main.c')
-rw-r--r-- | staticd/static_main.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/staticd/static_main.c b/staticd/static_main.c index 0d0de7e8d..d42916219 100644 --- a/staticd/static_main.c +++ b/staticd/static_main.c @@ -27,6 +27,8 @@ #include "static_debug.h" #include "static_nb.h" +#include "mgmt_be_client.h" + char backup_config_file[256]; bool mpls_enabled; @@ -51,6 +53,8 @@ struct option longopts[] = { { 0 } }; /* Master of threads. */ struct thread_master *master; +uintptr_t mgmt_lib_hndl; + static struct frr_daemon_info staticd_di; /* SIGHUP handler. */ static void sighup(void) @@ -67,6 +71,8 @@ static void sigint(void) /* Disable BFD events to avoid wasting processing. */ bfd_protocol_integration_set_shutdown(true); + mgmt_be_client_lib_destroy(mgmt_lib_hndl); + static_vrf_terminate(); static_zebra_stop(); @@ -100,6 +106,51 @@ struct frr_signal_t static_signals[] = { }, }; +static void static_mgmt_be_client_connect(uintptr_t lib_hndl, + uintptr_t usr_data, bool connected) +{ + (void)usr_data; + + assert(lib_hndl == mgmt_lib_hndl); + + zlog_debug("Got %s %s MGMTD Backend Client Server", + connected ? "connected" : "disconnected", + connected ? "to" : "from"); + + if (connected) + (void)mgmt_be_subscribe_yang_data(mgmt_lib_hndl, NULL, 0); +} + +#if 0 +static void +static_mgmt_txn_notify(uintptr_t lib_hndl, uintptr_t usr_data, + struct mgmt_be_client_txn_ctx *txn_ctx, + bool destroyed) +{ + zlog_debug("Got Txn %s Notify from MGMTD server", + destroyed ? "DESTROY" : "CREATE"); + + if (!destroyed) { + /* + * TODO: Allocate and install a private scratchpad for this + * transaction if required + */ + } else { + /* + * TODO: Uninstall and deallocate the private scratchpad for + * this transaction if installed earlier. + */ + } +} +#endif + +static struct mgmt_be_client_params mgmt_params = { + .name = "staticd", + .conn_retry_intvl_sec = 3, + .client_connect_notify = static_mgmt_be_client_connect, + .txn_notify = NULL, /* static_mgmt_txn_notify */ +}; + static const struct frr_yang_module_info *const staticd_yang_modules[] = { &frr_filter_info, &frr_interface_info, @@ -150,6 +201,10 @@ int main(int argc, char **argv, char **envp) static_zebra_init(); static_vty_init(); + /* Initialize MGMT backend functionalities */ + mgmt_lib_hndl = mgmt_be_client_lib_init(&mgmt_params, master); + assert(mgmt_lib_hndl); + hook_register(routing_conf_event, routing_control_plane_protocols_name_validate); |