diff --git a/src/confd/src/core.c b/src/confd/src/core.c index 48a7e30e..4337db88 100644 --- a/src/confd/src/core.c +++ b/src/confd/src/core.c @@ -13,6 +13,15 @@ static int startup_save_hook(sr_session_ctx_t *session, uint32_t sub_id, const c return SR_ERR_OK; } +static int commit_done_hook(sr_session_ctx_t *session, uint32_t sub_id, const char *module, + const char *xpath, sr_event_t event, unsigned request_id, void *priv) +{ + if (system("initctl -nbq reload")) + return SR_ERR_SYS; + + return SR_ERR_OK; +} + int sr_plugin_init_cb(sr_session_ctx_t *session, void **priv) { sr_session_ctx_t *startup; @@ -48,6 +57,12 @@ int sr_plugin_init_cb(sr_session_ctx_t *session, void **priv) goto err; } + if (rc = sr_module_change_subscribe(session, "ietf-system", "/ietf-system:system//.", + commit_done_hook, NULL, 0, SR_SUBSCR_PASSIVE | SR_SUBSCR_DONE_ONLY, &confd.sub)) { + ERROR("failed setting up startup-config hook: %s", sr_strerror(rc)); + goto err; + } + if (rc = sr_install_module(confd.conn, YANG_PATH_"kernelkit-infix-deviations.yang", NULL, NULL)) goto err;