aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/sc_plugins.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/sc_plugins.c')
-rw-r--r--src/plugins/sc_plugins.c28
1 files changed, 17 insertions, 11 deletions
diff --git a/src/plugins/sc_plugins.c b/src/plugins/sc_plugins.c
index df191bf..e0de0f6 100644
--- a/src/plugins/sc_plugins.c
+++ b/src/plugins/sc_plugins.c
@@ -13,12 +13,18 @@
* limitations under the License.
*/
-#include "sc_model.h"
#include "sc_plugins.h"
+
#include <dirent.h>
+sc_plugin_main_t sc_plugin_main;
static int vpp_pid_start;
+sc_plugin_main_t *sc_get_plugin_main()
+{
+ return &sc_plugin_main;
+}
+
/* get vpp pid in system */
int get_vpp_pid()
{
@@ -63,26 +69,24 @@ int get_vpp_pid()
int sr_plugin_init_cb(sr_session_ctx_t *session, void **private_ctx)
{
- plugin_main_t plugin_main;
int rc;
+ sc_plugin_main.session = session;
+
rc = sc_connect_vpp();
if (0 != rc) {
SRP_LOG_ERR("vpp connect error , with return %d.", rc);
return SR_ERR_INTERNAL;
}
- plugin_main.session = session;
- plugin_main.subscription = NULL;
-
- /* Use the same sr_subscription_ctx for all models */
- model_register(&plugin_main, ietf_interfaces_xpaths, IETF_INTERFACES_SIZE);
- model_register(&plugin_main, ietf_nat_xpaths, IETF_NAT_SIZE);
- model_register(&plugin_main, oc_interfaces_xpaths, OC_INTERFACES_SIZE);
- model_register(&plugin_main, oc_local_routing_xpaths, OC_LROUTING_SIZE);
+ rc = sc_call_all_init_function(&sc_plugin_main);
+ if (rc != SR_ERR_OK) {
+ SRP_LOG_ERR("Call all init function error: %d", rc);
+ return rc;
+ }
/* set subscription as our private context */
- *private_ctx = plugin_main.subscription;
+ *private_ctx = sc_plugin_main.subscription;
/* get the vpp pid sweetcomb connected, we assumed that only one vpp is run in system */
vpp_pid_start = get_vpp_pid();
return SR_ERR_OK;
@@ -90,6 +94,8 @@ int sr_plugin_init_cb(sr_session_ctx_t *session, void **private_ctx)
void sr_plugin_cleanup_cb(sr_session_ctx_t *session, void *private_ctx)
{
+ sc_call_all_exit_function(&sc_plugin_main);
+
/* subscription was set as our private context */
if (private_ctx != NULL)
sr_unsubscribe(session, private_ctx);