aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/openconfig
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/openconfig')
-rw-r--r--src/plugins/openconfig/openconfig_interfaces.c62
-rw-r--r--src/plugins/openconfig/openconfig_interfaces.h29
-rw-r--r--src/plugins/openconfig/openconfig_local_routing.c61
-rw-r--r--src/plugins/openconfig/openconfig_local_routing.h28
-rw-r--r--src/plugins/openconfig/openconfig_plugin.c267
-rw-r--r--src/plugins/openconfig/openconfig_plugin.h78
6 files changed, 128 insertions, 397 deletions
diff --git a/src/plugins/openconfig/openconfig_interfaces.c b/src/plugins/openconfig/openconfig_interfaces.c
index e401e07..a1f66bb 100644
--- a/src/plugins/openconfig/openconfig_interfaces.c
+++ b/src/plugins/openconfig/openconfig_interfaces.c
@@ -24,6 +24,7 @@
#include <string.h>
#include <sysrepo/xpath.h>
#include <sysrepo/values.h>
+#include <sysrepo.h>
#define XPATH_SIZE 2000
@@ -209,7 +210,7 @@ int openconfig_interface_mod_cb(
__attribute__((unused)) sr_notif_event_t event,
__attribute__((unused)) void *private_ctx)
{
- SRP_LOG_INF("Module subscribe: %s", module_name);
+ SRP_LOG_DBG("Interface module subscribe: %s", module_name);
return SR_ERR_OK;
}
@@ -876,3 +877,62 @@ int openconfig_interfaces_interfaces_interface_subinterfaces_subinterface_oc_ip_
return SR_ERR_OK;
}
+const xpath_t oc_interfaces_xpaths[OC_INTERFACES_SIZE] = {
+ {
+ .xpath = "openconfig-interfaces",
+ .method = MODULE,
+ .datastore = SR_DS_RUNNING,
+ .cb.mcb = openconfig_interface_mod_cb,
+ .private_ctx = NULL,
+ .priority = 0,
+ //.opts = SR_SUBSCR_EV_ENABLED | SR_SUBSCR_APPLY_ONLY
+ .opts = SR_SUBSCR_EV_ENABLED | SR_SUBSCR_APPLY_ONLY | SR_SUBSCR_CTX_REUSE
+ },
+ {
+ .xpath = "/openconfig-interfaces:interfaces/interface/config",
+ .method = XPATH,
+ .datastore = SR_DS_RUNNING,
+ .cb.scb = openconfig_interfaces_interfaces_interface_config_cb,
+ .private_ctx = NULL,
+ .priority = 0,
+ //.opts = SR_SUBSCR_DEFAULT
+ .opts = SR_SUBSCR_CTX_REUSE
+ },
+ {
+ .xpath = "/openconfig-interfaces:interfaces/interface/state",
+ .method = GETITEM,
+ .datastore = SR_DS_RUNNING,
+ .cb.gcb = openconfig_interfaces_interfaces_interface_state_cb,
+ .private_ctx = NULL,
+ .priority = 0,
+ .opts = SR_SUBSCR_CTX_REUSE
+ },
+ {
+ .xpath = "/openconfig-interfaces:interfaces/interface/subinterfaces/subinterface/state",
+ .method = GETITEM,
+ .datastore = SR_DS_RUNNING,
+ .cb.gcb = openconfig_interfaces_interfaces_interface_subinterfaces_subinterface_state_cb,
+ .private_ctx = NULL,
+ .priority = 0,
+ .opts = SR_SUBSCR_CTX_REUSE
+ },
+ {
+ .xpath = "/openconfig-interfaces:interfaces/interface/subinterfaces/subinterface/openconfig-if-ip:ipv4/openconfig-if-ip:addresses/openconfig-if-ip:address/openconfig-if-ip:config",
+ .method = XPATH,
+ .datastore = SR_DS_RUNNING,
+ .cb.scb = openconfig_interfaces_interfaces_interface_subinterfaces_subinterface_oc_ip_ipv4_oc_ip_addresses_oc_ip_address_oc_ip_config_cb,
+ .private_ctx = NULL,
+ .priority = 0,
+ //.opts = SR_SUBSCR_DEFAULT
+ .opts = SR_SUBSCR_CTX_REUSE
+ },
+ {
+ .xpath = "/openconfig-interfaces:interfaces/interface/subinterfaces/subinterface/openconfig-if-ip:ipv4/openconfig-if-ip:addresses/openconfig-if-ip:address/openconfig-if-ip:state",
+ .method = GETITEM,
+ .datastore = SR_DS_RUNNING,
+ .cb.gcb = openconfig_interfaces_interfaces_interface_subinterfaces_subinterface_oc_ip_ipv4_oc_ip_addresses_oc_ip_address_oc_ip_state_cb,
+ .private_ctx = NULL,
+ .priority = 0,
+ .opts = SR_SUBSCR_CTX_REUSE
+ }
+};
diff --git a/src/plugins/openconfig/openconfig_interfaces.h b/src/plugins/openconfig/openconfig_interfaces.h
index df5e31c..88d5fe0 100644
--- a/src/plugins/openconfig/openconfig_interfaces.h
+++ b/src/plugins/openconfig/openconfig_interfaces.h
@@ -18,32 +18,9 @@
#ifndef __OPENCONFIG_INTERFACES_H__
#define __OPENCONFIG_INTERFACES_H__
-#include <sysrepo.h>
-
-int openconfig_interface_mod_cb(sr_session_ctx_t *session,
- const char *module_name,
- sr_notif_event_t event,
- void *private_ctx);
-
-int openconfig_interfaces_interfaces_interface_config_cb(
- sr_session_ctx_t *ds, const char *xpath, sr_notif_event_t event,
- void *private_ctx);
-
-int openconfig_interfaces_interfaces_interface_subinterfaces_subinterface_oc_ip_ipv4_oc_ip_addresses_oc_ip_address_oc_ip_state_cb(
- const char *xpath, sr_val_t **values, size_t *values_cnt,
- uint64_t request_id, const char *original_xpath, void *private_ctx);
-
-int openconfig_interfaces_interfaces_interface_subinterfaces_subinterface_state_cb(
- const char *xpath, sr_val_t **values, size_t *values_cnt,
- uint64_t request_id, const char *original_xpath, void *private_ctx);
-
-int openconfig_interfaces_interfaces_interface_state_cb(
- const char *xpath, sr_val_t **values, size_t *values_cnt,
- uint64_t request_id, const char *original_xpath, void *private_ctx);
-
-int openconfig_interfaces_interfaces_interface_subinterfaces_subinterface_oc_ip_ipv4_oc_ip_addresses_oc_ip_address_oc_ip_config_cb(
- sr_session_ctx_t *ds, const char *xpath, sr_notif_event_t event,
- void *private_ctx);
+#include "../sc_model.h"
+#define OC_INTERFACES_SIZE 6
+extern const xpath_t oc_interfaces_xpaths[OC_INTERFACES_SIZE];
#endif /* __OPENCONFIG_INTERFACES_H__ */
diff --git a/src/plugins/openconfig/openconfig_local_routing.c b/src/plugins/openconfig/openconfig_local_routing.c
index daf39cc..59574a2 100644
--- a/src/plugins/openconfig/openconfig_local_routing.c
+++ b/src/plugins/openconfig/openconfig_local_routing.c
@@ -22,6 +22,7 @@
#include <assert.h>
#include <string.h>
+#include <sysrepo.h>
#include <sysrepo/xpath.h>
#include <sysrepo/values.h>
@@ -728,3 +729,63 @@ int openconfig_local_routing_local_routes_static_routes_static_next_hops_next_ho
return next_hop_inner(true, xpath, values, values_cnt, request_id,
private_ctx);
}
+
+const xpath_t oc_local_routing_xpaths[OC_LROUTING_SIZE] = {
+ {
+ .xpath = "openconfig-local-routing",
+ .method = MODULE,
+ .datastore = SR_DS_RUNNING,
+ .cb.mcb = openconfig_local_routing_mod_cb,
+ .private_ctx = NULL,
+ .priority = 0,
+ //.opts = SR_SUBSCR_EV_ENABLED | SR_SUBSCR_APPLY_ONLY
+ .opts = SR_SUBSCR_EV_ENABLED | SR_SUBSCR_APPLY_ONLY | SR_SUBSCR_CTX_REUSE
+ },
+ {
+ .xpath = "/openconfig-local-routing:local-routes/static-routes/static/next-hops/next-hop/config",
+ .method = XPATH,
+ .datastore = SR_DS_RUNNING,
+ .cb.scb = openconfig_local_routing_local_routes_static_routes_static_next_hops_next_hop_config_cb,
+ .private_ctx = NULL,
+ .priority = 0,
+ //.opts = SR_SUBSCR_DEFAULT
+ .opts = SR_SUBSCR_CTX_REUSE
+ },
+ {
+ .xpath = "/openconfig-local-routing:local-routes/static-routes/static/next-hops/next-hop/interface-ref/config",
+ .method = XPATH,
+ .datastore = SR_DS_RUNNING,
+ .cb.scb = openconfig_local_routing_local_routes_static_routes_static_next_hops_next_hop_interface_ref_config_cb,
+ .private_ctx = NULL,
+ .priority = 0,
+ //.opts = SR_SUBSCR_DEFAULT
+ .opts = SR_SUBSCR_CTX_REUSE
+ },
+ {
+ .xpath = "/openconfig-local-routing:local-routes/static-routes/static/state",
+ .method = GETITEM,
+ .datastore = SR_DS_RUNNING,
+ .cb.gcb = openconfig_local_routing_local_routes_static_routes_static_state_cb,
+ .private_ctx = NULL,
+ .priority = 0,
+ .opts = SR_SUBSCR_CTX_REUSE
+ },
+ {
+ .xpath = "/openconfig-local-routing:local-routes/static-routes/static/next-hops/next-hop/state",
+ .method = GETITEM,
+ .datastore = SR_DS_RUNNING,
+ .cb.gcb = openconfig_local_routing_local_routes_static_routes_static_next_hops_next_hop_state_cb,
+ .private_ctx = NULL,
+ .priority = 0,
+ .opts = SR_SUBSCR_CTX_REUSE
+ },
+ {
+ .xpath = "/openconfig-local-routing:local-routes/static-routes/static/next-hops/next-hop/interface-ref/state",
+ .method = GETITEM,
+ .datastore = SR_DS_RUNNING,
+ .cb.gcb = openconfig_local_routing_local_routes_static_routes_static_next_hops_next_hop_interface_ref_state_cb,
+ .private_ctx = NULL,
+ .priority = 0,
+ .opts = SR_SUBSCR_CTX_REUSE
+ },
+};
diff --git a/src/plugins/openconfig/openconfig_local_routing.h b/src/plugins/openconfig/openconfig_local_routing.h
index 4cd2966..13d2982 100644
--- a/src/plugins/openconfig/openconfig_local_routing.h
+++ b/src/plugins/openconfig/openconfig_local_routing.h
@@ -17,31 +17,9 @@
#ifndef __OPENCONFIG_LOCAL_ROUTING_H__
#define __OPENCONFIG_LOCAL_ROUTING_H__
-#include <sysrepo.h>
+#include "../sc_model.h"
-int openconfig_local_routing_mod_cb(sr_session_ctx_t *session,
- const char *module_name,
- sr_notif_event_t event,
- void *private_ctx);
-
-int openconfig_local_routing_local_routes_static_routes_static_next_hops_next_hop_config_cb(
- sr_session_ctx_t *ds, const char *xpath, sr_notif_event_t event,
- void *private_ctx);
-
-int openconfig_local_routing_local_routes_static_routes_static_next_hops_next_hop_interface_ref_config_cb(
- sr_session_ctx_t *ds, const char *xpath, sr_notif_event_t event,
- void *private_ctx);
-
-int openconfig_local_routing_local_routes_static_routes_static_state_cb(
- const char *xpath, sr_val_t **values, size_t *values_cnt,
- uint64_t request_id, const char *original_xpath, void *private_ctx);
-
-int openconfig_local_routing_local_routes_static_routes_static_next_hops_next_hop_state_cb(
- const char *xpath, sr_val_t **values, size_t *values_cnt,
- uint64_t request_id, const char *original_xpath, void *private_ctx);
-
-int openconfig_local_routing_local_routes_static_routes_static_next_hops_next_hop_interface_ref_state_cb(
- const char *xpath, sr_val_t **values, size_t *values_cnt,
- uint64_t request_id, const char *original_xpath, void *private_ctx);
+#define OC_LROUTING_SIZE 6
+extern const xpath_t oc_local_routing_xpaths[OC_LROUTING_SIZE];
#endif /* __OPENCONFIG_LOCAL_ROUTING_H__ */
diff --git a/src/plugins/openconfig/openconfig_plugin.c b/src/plugins/openconfig/openconfig_plugin.c
deleted file mode 100644
index fbcd396..0000000
--- a/src/plugins/openconfig/openconfig_plugin.c
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * Copyright (c) 2018 PANTHEON.tech.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "openconfig_plugin.h"
-#include "sys_util.h"
-#include "openconfig_interfaces.h"
-#include "openconfig_local_routing.h"
-#include "sc_vpp_comm.h"
-
-#include <assert.h>
-#include <string.h>
-#include <sysrepo/xpath.h>
-#include <sysrepo/values.h>
-
-#define XPATH_SIZE 2000
-
-static struct _sys_repo_call sysrepo_callback[] = {
- {
- .xpath = "openconfig-interfaces",
- .method = MODULE,
- .datastore = RUNNING,
- .cb.mcb = openconfig_interface_mod_cb,
- .private_ctx = NULL,
- .priority = 0,
- .opts = SR_SUBSCR_EV_ENABLED | SR_SUBSCR_APPLY_ONLY
- },
- {
- .xpath = "openconfig-local-routing",
- .method = MODULE,
- .datastore = RUNNING,
- .cb.mcb = openconfig_local_routing_mod_cb,
- .private_ctx = NULL,
- .priority = 0,
- .opts = SR_SUBSCR_EV_ENABLED | SR_SUBSCR_APPLY_ONLY
- },
- {
- .xpath = "/openconfig-interfaces:interfaces/interface/config",
- .method = XPATH,
- .datastore = RUNNING,
- .cb.scb = openconfig_interfaces_interfaces_interface_config_cb,
- .private_ctx = NULL,
- .priority = 0,
- .opts = SR_SUBSCR_DEFAULT
- },
- {
- .xpath = "/openconfig-interfaces:interfaces/interface/state",
- .method = GETITEM,
- .datastore = RUNNING,
- .cb.gcb = openconfig_interfaces_interfaces_interface_state_cb,
- .private_ctx = NULL,
- .priority = 0,
- .opts = SR_SUBSCR_CTX_REUSE
- },
- {
- .xpath = "/openconfig-interfaces:interfaces/interface/subinterfaces/subinterface/state",
- .method = GETITEM,
- .datastore = RUNNING,
- .cb.gcb = openconfig_interfaces_interfaces_interface_subinterfaces_subinterface_state_cb,
- .private_ctx = NULL,
- .priority = 0,
- .opts = SR_SUBSCR_CTX_REUSE
- },
- {
- .xpath = "/openconfig-interfaces:interfaces/interface/subinterfaces/subinterface/openconfig-if-ip:ipv4/openconfig-if-ip:addresses/openconfig-if-ip:address/openconfig-if-ip:config",
- .method = XPATH,
- .datastore = RUNNING,
- .cb.scb = openconfig_interfaces_interfaces_interface_subinterfaces_subinterface_oc_ip_ipv4_oc_ip_addresses_oc_ip_address_oc_ip_config_cb,
- .private_ctx = NULL,
- .priority = 0,
- .opts = SR_SUBSCR_DEFAULT
- },
- {
- .xpath = "/openconfig-interfaces:interfaces/interface/subinterfaces/subinterface/openconfig-if-ip:ipv4/openconfig-if-ip:addresses/openconfig-if-ip:address/openconfig-if-ip:state",
- .method = GETITEM,
- .datastore = RUNNING,
- .cb.gcb = openconfig_interfaces_interfaces_interface_subinterfaces_subinterface_oc_ip_ipv4_oc_ip_addresses_oc_ip_address_oc_ip_state_cb,
- .private_ctx = NULL,
- .priority = 0,
- .opts = SR_SUBSCR_CTX_REUSE
- },
- {
- .xpath = "/openconfig-local-routing:local-routes/static-routes/static/next-hops/next-hop/config",
- .method = XPATH,
- .datastore = RUNNING,
- .cb.scb = openconfig_local_routing_local_routes_static_routes_static_next_hops_next_hop_config_cb,
- .private_ctx = NULL,
- .priority = 0,
- .opts = SR_SUBSCR_DEFAULT
- },
- {
- .xpath = "/openconfig-local-routing:local-routes/static-routes/static/next-hops/next-hop/interface-ref/config",
- .method = XPATH,
- .datastore = RUNNING,
- .cb.scb = openconfig_local_routing_local_routes_static_routes_static_next_hops_next_hop_interface_ref_config_cb,
- .private_ctx = NULL,
- .priority = 0,
- .opts = SR_SUBSCR_DEFAULT
- },
- {
- .xpath = "/openconfig-local-routing:local-routes/static-routes/static/state",
- .method = GETITEM,
- .datastore = RUNNING,
- .cb.gcb = openconfig_local_routing_local_routes_static_routes_static_state_cb,
- .private_ctx = NULL,
- .priority = 0,
- .opts = SR_SUBSCR_CTX_REUSE
- },
- {
- .xpath = "/openconfig-local-routing:local-routes/static-routes/static/next-hops/next-hop/state",
- .method = GETITEM,
- .datastore = RUNNING,
- .cb.gcb = openconfig_local_routing_local_routes_static_routes_static_next_hops_next_hop_state_cb,
- .private_ctx = NULL,
- .priority = 0,
- .opts = SR_SUBSCR_CTX_REUSE
- },
- {
- .xpath = "/openconfig-local-routing:local-routes/static-routes/static/next-hops/next-hop/interface-ref/state",
- .method = GETITEM,
- .datastore = RUNNING,
- .cb.gcb = openconfig_local_routing_local_routes_static_routes_static_next_hops_next_hop_interface_ref_state_cb,
- .private_ctx = NULL,
- .priority = 0,
- .opts = SR_SUBSCR_CTX_REUSE
- },
-};
-
-static inline void
-append(plugin_subcscription_t **list, plugin_subcscription_t *new)
-{
- plugin_subcscription_t **tmp = list;
-
- while (*tmp)
- tmp = &(*tmp)->next;
-
- *tmp = new;
-}
-
-static int sys_repo_subscribe(plugin_main_t *plugin_main, sr_session_ctx_t *ds,
- struct _sys_repo_call *call)
-{
- plugin_subcscription_t *end, *new;
- int rc;
-
- new = calloc(sizeof(plugin_subcscription_t), 1);
- if (new == NULL)
- return SR_ERR_NOMEM;
- new->datastore = call->datastore;
-
- if (call->method == MODULE) {
- rc = sr_module_change_subscribe(ds, call->xpath, call->cb.mcb,
- call->private_ctx, call->priority,
- call->opts,
- &(new->sr_subscription_ctx));
- if (SR_ERR_OK != rc)
- goto error;
- } else if (call->method == XPATH) {
- rc = sr_subtree_change_subscribe(ds, call->xpath, call->cb.scb,
- call->private_ctx, call->priority,
- call->opts,
- &(new->sr_subscription_ctx));
- if (SR_ERR_OK != rc)
- goto error;
- } else if (call->method == GETITEM) {
- rc = sr_dp_get_items_subscribe(ds, call->xpath, call->cb.gcb,
- call->private_ctx, call->opts,
- &(new->sr_subscription_ctx));
- if (SR_ERR_OK != rc)
- goto error;
- } else if (call->method == RPC) {
- rc = sr_rpc_subscribe(ds, call->xpath, call->cb.rcb,
- call->private_ctx, call->opts,
- &(new->sr_subscription_ctx));
- if (SR_ERR_OK != rc)
- goto error;
- }
-
- SRP_LOG_DBG("Subscribed to xpath: %s", call->xpath);
-
- //add new subscription to the end of plugin subscription Linked List
- append(&(plugin_main->plugin_subcscription), new);
-
- return SR_ERR_OK;
-
-error:
- SRP_LOG_ERR("Error subscribed to RPC: %s", call->xpath);
- return rc;
-}
-
-int openconfig_register_subscribe(plugin_main_t* plugin_main)
-{
- int rc = 0;
- uint32_t i = 0;
- sr_session_ctx_t *datastore = NULL;
-
- ARG_CHECK(-1, plugin_main);
-
- for (i = 0; i < ARRAY_SIZE(sysrepo_callback); i++) {
- if (STARTUP == sysrepo_callback[i].datastore) {
- datastore = plugin_main->ds_startup;
- } else if (RUNNING == sysrepo_callback[i].datastore) {
- datastore = plugin_main->ds_running;
- } else {
- SRP_LOG_ERR_MSG("Error: wrong database type");
- return -1;
- }
-
- rc = sys_repo_subscribe(plugin_main, datastore, &sysrepo_callback[i]);
- if (SR_ERR_OK != rc) {
- SRP_LOG_ERR("Error: subscribing to subtree change, xpath: %s",
- sysrepo_callback[i].xpath);
-// return -1;
- }
- }
-
- return 0;
-}
-
-void openconfig_unsubscribe(plugin_main_t* plugin_main)
-{
- plugin_subcscription_t *plugin_subcscription, *tmp;
-
- if (plugin_main->plugin_subcscription == NULL)
- return;
-
- plugin_subcscription = plugin_main->plugin_subcscription;
- do {
- tmp = plugin_subcscription;
- plugin_subcscription = plugin_subcscription->next;
-
- if (tmp->datastore == STARTUP)
- sr_unsubscribe(plugin_main->ds_startup, tmp->sr_subscription_ctx);
- else if (tmp->datastore == RUNNING)
- sr_unsubscribe(plugin_main->ds_running, tmp->sr_subscription_ctx);
-
- free(tmp);
- } while (plugin_subcscription != NULL);
-}
-
-plugin_main_t plugin_main;
-
-int openconfig_plugin_init(sr_session_ctx_t* session)
-{
- memset((void*) &plugin_main, 0, sizeof(plugin_main));
-
- plugin_main.ds_running = session;
-
- openconfig_register_subscribe(&plugin_main);
-}
-
-void openconfig_plugin_cleanup()
-{
- openconfig_unsubscribe(&plugin_main);
-}
diff --git a/src/plugins/openconfig/openconfig_plugin.h b/src/plugins/openconfig/openconfig_plugin.h
deleted file mode 100644
index 714ae7d..0000000
--- a/src/plugins/openconfig/openconfig_plugin.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (c) 2018 PANTHEON.tech.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __SWEETCOMB_OPENCONFIG_PLUGIN__
-#define __SWEETCOMB_OPENCONFIG_PLUGIN__
-
-#include <stdlib.h>
-#include <sysrepo.h>
-
-#define ARRAY_SIZE(X) (sizeof(X) / sizeof(*X))
-
-typedef enum {
- MODULE,
- XPATH,
- GETITEM,
- RPC,
-} method_e;
-
-typedef enum {
- STARTUP,
- RUNNING,
-} datastore_e;
-
-typedef struct _plugin_subcscription_t{
- datastore_e datastore;
- sr_subscription_ctx_t *sr_subscription_ctx;
- struct _plugin_subcscription_t *next;
-} plugin_subcscription_t;
-
-typedef struct {
- sr_conn_ctx_t *sr_conn_ctx;
- sr_session_ctx_t *ds_startup;
- sr_session_ctx_t *ds_running;
- //sr_session_ctx_t *ds_candidate;
- plugin_subcscription_t *plugin_subcscription;
-} plugin_main_t;
-
-struct _sys_repo_call {
- char *xpath;
- method_e method;
- datastore_e datastore;
- union {
- sr_module_change_cb mcb;
- sr_subtree_change_cb scb;
- sr_dp_get_items_cb gcb;
- sr_rpc_cb rcb;
- } cb;
- void *private_ctx;
- uint32_t priority;
- sr_subscr_options_t opts;
-};
-
-int openconfig_register_subscribe(plugin_main_t *plugin_main);
-void openconfig_unsubscribe(plugin_main_t *plugin_main);
-
-//FIXME:
-// This solution is not good and should be rewrite.
-// But first we must discuss the architecture of sweetcomb and how we should
-// register the new YANGS modules.
-// This function here is only for test.
-int openconfig_plugin_init(sr_session_ctx_t *session);
-void openconfig_plugin_cleanup();
-
-
-#endif /* __SWEETCOMB_OPENCONFIG_PLUGIN__ */