diff options
author | 2019-05-19 12:35:28 +0800 | |
---|---|---|
committer | 2019-05-22 04:37:38 +0000 | |
commit | ce1a0daa15be4c3b7a3df64ea57ad231664e700f (patch) | |
tree | fdb1fac57156ebc6e12e8ce9cd7942a8f4023c03 /src/plugins/sc_model.h | |
parent | aeb421c7219178ac464e8a2e62b35772a08a2c1c (diff) |
Introduce a new registration mechanism to sweetcomb.
Sweetcomb plugins register for various [initialization] events
by placing structures and __attribute__((constructor)) functions
into the library. When sysrepo plugin is initializing, the framework
walks constructor-generated singly-linked structure lists, calls the
indicated functions.
Change-Id: I0cb078391f2662e4f6dd08c1a383173f203adf2a
Signed-off-by: jackiechen1985 <xiaobo.chen@tieto.com>
Diffstat (limited to 'src/plugins/sc_model.h')
-rw-r--r-- | src/plugins/sc_model.h | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/src/plugins/sc_model.h b/src/plugins/sc_model.h deleted file mode 100644 index a9392f9..0000000 --- a/src/plugins/sc_model.h +++ /dev/null @@ -1,85 +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 __SC_MODEL_H__ -#define __SC_MODEL_H__ - -/* - * IETF or Openconfig YANG models registering/unregistering - * - * Every model supports a certain number of operations which require a - * subscription to sysrepo : xpath_t - */ - -#include <sysrepo.h> -#include <sysrepo/xpath.h> -#include <sysrepo/values.h> -#include <sysrepo/plugins.h> - -#include <scvpp/comm.h> //for ARG_CHECK only - -typedef enum { - MODULE, - XPATH, - GETITEM, - RPC, -} method_e; - -#define ARRAY_SIZE(X) (sizeof(X) / sizeof(X[0])) - -typedef struct _xpath_t { - char *xpath; - method_e method; - sr_datastore_t 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; -} xpath_t; - -/* - * Stateful informations. Keep sesssions informations about a user - */ - -typedef struct { - sr_session_ctx_t *session; - sr_subscription_ctx_t *subscription; -} plugin_main_t; - - -int -model_register(plugin_main_t *plugin_main, const xpath_t *xpaths, size_t size); - -/* Declare registration */ - -#define OC_INTERFACES_SIZE 5 -extern const xpath_t oc_interfaces_xpaths[OC_INTERFACES_SIZE]; - -#define OC_LROUTING_SIZE 6 -extern const xpath_t oc_local_routing_xpaths[OC_LROUTING_SIZE]; - -#define IETF_NAT_SIZE 2 -extern const xpath_t ietf_nat_xpaths[IETF_NAT_SIZE]; - -#define IETF_INTERFACES_SIZE 5 -extern const xpath_t ietf_interfaces_xpaths[IETF_INTERFACES_SIZE]; - -#endif /* __SC_MODEL_H__ */ |