sysrepo
1.4.168
YANG datastore
|
public API sysrepo header More...
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
#include <time.h>
#include <libyang/libyang.h>
Go to the source code of this file.
Data Structures | |
struct | sr_error_info_msg_s |
A single, detailed error message. Used in sr_error_info_s. More... | |
struct | sr_error_info_s |
Detailed sysrepo session error information. More... | |
union | sr_data_u |
Data of an element (if applicable), properly set according to the type. More... | |
struct | sr_val_s |
Structure that contains value of an data element stored in the sysrepo datastore. More... | |
Macros | |
#define | SRP_INIT_CB "sr_plugin_init_cb" |
Sysrepo plugin initialization callback name that must exist in every plugin. More... | |
#define | SRP_CLEANUP_CB "sr_plugin_cleanup_cb" |
Sysrepo plugin cleanup callback name that must exist in every plugin. More... | |
#define | SRP_LOG_ERR(...) srp_log(SR_LL_ERR, __VA_ARGS__) |
Log a plugin error message with format arguments. More... | |
#define | SRP_LOG_WRN(...) srp_log(SR_LL_WRN, __VA_ARGS__) |
Log a plugin warning message with format arguments. More... | |
#define | SRP_LOG_INF(...) srp_log(SR_LL_INF, __VA_ARGS__) |
Log a plugin info message with format arguments. More... | |
#define | SRP_LOG_DBG(...) srp_log(SR_LL_DBG, __VA_ARGS__) |
Log a plugin debug message with format arguments. More... | |
#define | SRP_LOG_ERRMSG(msg) srp_log(SR_LL_ERR, msg) |
Log a simple plugin error message. More... | |
#define | SRP_LOG_WRNMSG(msg) srp_log(SR_LL_WRN, msg) |
Log a simple plugin warning message. More... | |
#define | SRP_LOG_INFMSG(msg) srp_log(SR_LL_INF, msg) |
Log a simple plugin info message. More... | |
#define | SRP_LOG_DBGMSG(msg) srp_log(SR_LL_DBG, msg) |
Log a simple plugin debug message. More... | |
Typedefs | |
typedef enum sr_error_e | sr_error_t |
Sysrepo error codes. More... | |
typedef void(* | sr_log_cb )(sr_log_level_t level, const char *message) |
Sets callback that will be called when a log entry would be populated. More... | |
typedef struct sr_conn_ctx_s | sr_conn_ctx_t |
Sysrepo connection. More... | |
typedef struct sr_session_ctx_s | sr_session_ctx_t |
Sysrepo session on a connection. More... | |
typedef enum sr_conn_flag_e | sr_conn_flag_t |
Flags used to override default connection handling by sr_connect call. More... | |
typedef uint32_t | sr_conn_options_t |
Options overriding default connection handling by sr_connect call, it is supposed to be bitwise OR-ed value of any sr_conn_flag_t flags. More... | |
typedef enum sr_datastore_e | sr_datastore_t |
Datastores that sysrepo supports. To change which datastore a session operates on, use sr_session_switch_ds. More... | |
typedef struct sr_error_info_msg_s | sr_error_info_msg_t |
A single, detailed error message. Used in sr_error_info_s. More... | |
typedef struct sr_error_info_s | sr_error_info_t |
Detailed sysrepo session error information. More... | |
typedef int(* | sr_diff_check_cb )(sr_session_ctx_t *session, const struct lyd_node *diff) |
Callback to be called before applying a diff. Set it using sr_set_diff_check_callback. More... | |
typedef enum sr_type_e | sr_type_t |
Possible types of a data element stored in the sysrepo datastore. More... | |
typedef union sr_data_u | sr_data_t |
Data of an element (if applicable), properly set according to the type. More... | |
typedef struct sr_val_s | sr_val_t |
Structure that contains value of an data element stored in the sysrepo datastore. More... | |
typedef enum sr_get_oper_flag_e | sr_get_oper_flag_t |
Flags used to override default data get behaviour on SR_DS_OPERATIONAL by sr_get_data call. More... | |
typedef uint32_t | sr_get_oper_options_t |
Options overriding default get handling by sr_get_data call, it is supposed to be bitwise OR-ed value of any sr_get_oper_flag_t flags. More... | |
typedef enum sr_edit_flag_e | sr_edit_flag_t |
Flags used to override default behavior of data manipulation calls. More... | |
typedef uint32_t | sr_edit_options_t |
Options overriding default behavior of data manipulation calls, it is supposed to be bitwise OR-ed value of any sr_edit_flag_t flags. More... | |
typedef enum sr_move_position_e | sr_move_position_t |
Options for specifying move direction of sr_move_item call. More... | |
typedef enum sr_subscr_flag_e | sr_subscr_flag_t |
Flags used to override default handling of subscriptions. More... | |
typedef struct sr_subscription_ctx_s | sr_subscription_ctx_t |
Sysrepo subscription context returned from sr_*_subscribe calls, it is supposed to be released by the caller using sr_unsubscribe call. More... | |
typedef uint32_t | sr_subscr_options_t |
Options overriding default behavior of subscriptions, it is supposed to be a bitwise OR-ed value of any sr_subscr_flag_t flags. More... | |
typedef enum sr_event_e | sr_event_t |
Type of the event that has occurred (passed to application callbacks). More... | |
typedef enum sr_change_oper_e | sr_change_oper_t |
Type of the operation made on an item, used by changeset retrieval in sr_get_change_next. More... | |
typedef struct sr_change_iter_s | sr_change_iter_t |
Iterator used for retrieval of a changeset using sr_get_changes_iter call. More... | |
typedef int(* | sr_module_change_cb )(sr_session_ctx_t *session, const char *module_name, const char *xpath, sr_event_t event, uint32_t request_id, void *private_data) |
Callback to be called on the event of changing datastore content of the specified module. More... | |
typedef int(* | sr_rpc_cb )(sr_session_ctx_t *session, const char *xpath, const sr_val_t *input, const size_t input_cnt, sr_event_t event, uint32_t request_id, sr_val_t **output, size_t *output_cnt, void *private_data) |
Callback to be called for the delivery of an RPC/action. Data are represented as sr_val_t structures. More... | |
typedef int(* | sr_rpc_tree_cb )(sr_session_ctx_t *session, const char *op_path, const struct lyd_node *input, sr_event_t event, uint32_t request_id, struct lyd_node *output, void *private_data) |
Callback to be called for the delivery of an RPC/action. Data are represented as libyang subtrees. More... | |
typedef enum sr_ev_notif_type_e | sr_ev_notif_type_t |
Type of the notification passed to the sr_event_notif_cb and sr_event_notif_tree_cb callbacks. More... | |
typedef void(* | sr_event_notif_cb )(sr_session_ctx_t *session, const sr_ev_notif_type_t notif_type, const char *xpath, const sr_val_t *values, const size_t values_cnt, time_t timestamp, void *private_data) |
Callback to be called for the delivery of a notification. Data are represented as sr_val_t structures. More... | |
typedef void(* | sr_event_notif_tree_cb )(sr_session_ctx_t *session, const sr_ev_notif_type_t notif_type, const struct lyd_node *notif, time_t timestamp, void *private_data) |
Callback to be called for the delivery of a notification. Data are represented as libyang subtrees. More... | |
typedef int(* | sr_oper_get_items_cb )(sr_session_ctx_t *session, const char *module_name, const char *path, const char *request_xpath, uint32_t request_id, struct lyd_node **parent, void *private_data) |
Callback to be called when operational data at the selected xpath are requested. Data are represented as libyang subtrees. More... | |
typedef int(* | srp_init_cb_t )(sr_session_ctx_t *session, void **private_data) |
Sysrepo plugin initialization callback. More... | |
typedef void(* | srp_cleanup_cb_t )(sr_session_ctx_t *session, void *private_data) |
Sysrepo plugin cleanup callback. More... | |
Functions | |
const char * | sr_strerror (int err_code) |
Returns the error message corresponding to the error code. More... | |
void | sr_log_stderr (sr_log_level_t log_level) |
Enables / disables / changes log level (verbosity) of logging to standard error output. More... | |
sr_log_level_t | sr_log_get_stderr (void) |
Learn current standard error output log level. More... | |
void | sr_log_syslog (const char *app_name, sr_log_level_t log_level) |
Enables / disables / changes log level (verbosity) of logging to system log. More... | |
sr_log_level_t | sr_log_get_syslog (void) |
Learn current system log log level. More... | |
void | sr_log_set_cb (sr_log_cb log_callback) |
Sets callback that will be called when a log entry would be populated. Callback will be called for every message regardless of any log level. More... | |
int | sr_connect (const sr_conn_options_t opts, sr_conn_ctx_t **conn) |
Connects to the sysrepo datastore. If possible (no other connections exist), also apply any scheduled changes. More... | |
int | sr_disconnect (sr_conn_ctx_t *conn) |
Disconnect from the sysrepo datastore. More... | |
int | sr_connection_count (uint32_t *conn_count) |
Learn the current global number of alive connections. More... | |
struct ly_ctx * | sr_get_context (sr_conn_ctx_t *conn) |
Get the libyang context used by a connection. Can be used in an application for working with data and schemas. Do NOT change this context! More... | |
void | sr_set_diff_check_callback (sr_conn_ctx_t *conn, sr_diff_check_cb callback) |
Set callback for checking every diff before it is applied on the datastore. The diff is final (only CRUD operations) but without any implicit changes caused by validation. This callback is primarily meant to allow full NACM (NETCONF Access Control) to be performed by a NETCONF server. More... | |
int | sr_session_start (sr_conn_ctx_t *conn, const sr_datastore_t datastore, sr_session_ctx_t **session) |
Start a new session. More... | |
int | sr_session_stop (sr_session_ctx_t *session) |
Stop current session and releases resources tied to the session. More... | |
int | sr_session_notif_buffer (sr_session_ctx_t *session) |
Use notification buffering for the session. More... | |
int | sr_session_switch_ds (sr_session_ctx_t *session, sr_datastore_t ds) |
Change datastore which the session operates on. All subsequent calls will be issued on the chosen datastore. Previous calls are not affected. More... | |
sr_datastore_t | sr_session_get_ds (sr_session_ctx_t *session) |
Learn the datastore a session operates on. More... | |
int | sr_get_error (sr_session_ctx_t *session, const sr_error_info_t **error_info) |
Retrieve information about the error that has occurred during the last operation executed within provided session. More... | |
int | sr_set_error (sr_session_ctx_t *session, const char *path, const char *format,...) |
Set detailed error information into provided session. Used to notify the client library about errors that occurred in the application code. Does not print the message. More... | |
uint32_t | sr_session_get_id (sr_session_ctx_t *session) |
Return the assigned session ID of the sysrepo session. More... | |
uint32_t | sr_session_get_event_sr_id (sr_session_ctx_t *session) |
Return the session ID of the event originator sysrepo session. Should be used on the implicit session in event callbacks. More... | |
void | sr_session_set_nc_id (sr_session_ctx_t *session, uint32_t nc_sid) |
Set a NETCONF session ID for a sysrepo session. Any application callbacks handling operations initiated by this session will be able to read this ID from the session provided. More... | |
uint32_t | sr_session_get_nc_id (sr_session_ctx_t *session) |
Learn NETCONF session ID set for a sysrepo session. More... | |
uint32_t | sr_session_get_event_nc_id (sr_session_ctx_t *session) |
Learn NETCONF session ID set for the event originator sysrepo session. Should be used on the implicit session in event callbacks. More... | |
int | sr_session_set_user (sr_session_ctx_t *session, const char *user) |
Set the effective user of a session to a different one that the process owner. More... | |
const char * | sr_session_get_user (sr_session_ctx_t *session) |
Get the effective user of a session. More... | |
const char * | sr_session_get_event_user (sr_session_ctx_t *session) |
Get the effective user of the event originator sysrepo session. Should be used on the implicit session in event callbacks. More... | |
sr_conn_ctx_t * | sr_session_get_connection (sr_session_ctx_t *session) |
Get the connection the session was created on. More... | |
const char * | sr_get_repo_path (void) |
Get the common path prefix for all sysrepo files. More... | |
int | sr_install_module (sr_conn_ctx_t *conn, const char *schema_path, const char *search_dirs, const char **features, int feat_count) |
Install a new schema (module) into sysrepo. Deferred until there are no connections! More... | |
int | sr_install_module_data (sr_conn_ctx_t *conn, const char *module_name, const char *data, const char *data_path, LYD_FORMAT format) |
Set newly installed module startup and running data. It is necessary in case empty data are not valid for the particular schema (module). More... | |
int | sr_remove_module (sr_conn_ctx_t *conn, const char *module_name) |
Remove an installed module from sysrepo. Deferred until there are no connections! More... | |
int | sr_update_module (sr_conn_ctx_t *conn, const char *schema_path, const char *search_dirs) |
Update an installed schema (module) to a new revision. Deferred until there are no connections! More... | |
int | sr_cancel_update_module (sr_conn_ctx_t *conn, const char *module_name) |
Cancel scheduled update of a module. More... | |
int | sr_set_module_replay_support (sr_conn_ctx_t *conn, const char *module_name, int replay_support) |
Change module replay support. More... | |
int | sr_set_module_access (sr_conn_ctx_t *conn, const char *module_name, const char *owner, const char *group, mode_t perm) |
Change module filesystem permissions. More... | |
int | sr_get_module_access (sr_conn_ctx_t *conn, const char *module_name, char **owner, char **group, mode_t *perm) |
Learn about module filesystem permissions. More... | |
int | sr_enable_module_feature (sr_conn_ctx_t *conn, const char *module_name, const char *feature_name) |
Enable a module feature. Deferred until there are no connections! More... | |
int | sr_disable_module_feature (sr_conn_ctx_t *conn, const char *module_name, const char *feature_name) |
Disable a module feature. Deferred until there are no connections! More... | |
int | sr_get_module_info (sr_conn_ctx_t *conn, struct lyd_node **sysrepo_data) |
Get internal sysrepo data tree, which holds information about installed modules. These data are from the sysrepo module found in modules/sysrepo.yang . More... | |
int | sr_get_item (sr_session_ctx_t *session, const char *path, uint32_t timeout_ms, sr_val_t **value) |
Retrieve a single data element selected by the provided path. Data are represented as sr_val_t structures. More... | |
int | sr_get_items (sr_session_ctx_t *session, const char *xpath, uint32_t timeout_ms, const sr_get_oper_options_t opts, sr_val_t **values, size_t *value_cnt) |
Retrieve an array of data elements selected by the provided XPath. Data are represented as sr_val_t structures. More... | |
int | sr_get_subtree (sr_session_ctx_t *session, const char *path, uint32_t timeout_ms, struct lyd_node **subtree) |
Retrieve a single subtree whose root node is selected by the provided path. Data are represented as libyang subtrees. More... | |
int | sr_get_data (sr_session_ctx_t *session, const char *xpath, uint32_t max_depth, uint32_t timeout_ms, const sr_get_oper_options_t opts, struct lyd_node **data) |
Retrieve a tree whose root nodes match the provided XPath. Data are represented as libyang subtrees. More... | |
void | sr_free_val (sr_val_t *value) |
Free sr_val_t structure and all memory allocated within it. More... | |
void | sr_free_values (sr_val_t *values, size_t count) |
Free array of sr_val_t structures (and all memory allocated within of each array element). More... | |
int | sr_set_item (sr_session_ctx_t *session, const char *path, const sr_val_t *value, const sr_edit_options_t opts) |
Prepare to set (create) the value of a leaf, leaf-list, list, or presence container. These changes are applied only after calling sr_apply_changes. Data are represented as sr_val_t structures. More... | |
int | sr_set_item_str (sr_session_ctx_t *session, const char *path, const char *value, const char *origin, const sr_edit_options_t opts) |
Prepare to set (create) the value of a leaf, leaf-list, list, or presence container. These changes are applied only after calling sr_apply_changes. Data are represented as pairs of a path and string value. More... | |
int | sr_delete_item (sr_session_ctx_t *session, const char *path, const sr_edit_options_t opts) |
Prepare to selete the nodes matching the specified xpath. These changes are applied only after calling sr_apply_changes. The accepted values are the same as for sr_set_item_str. More... | |
int | sr_move_item (sr_session_ctx_t *session, const char *path, const sr_move_position_t position, const char *list_keys, const char *leaflist_value, const char *origin, const sr_edit_options_t opts) |
Prepare to move/create the instance of an user-ordered list or leaf-list to the specified position. These changes are applied only after calling sr_apply_changes. More... | |
int | sr_edit_batch (sr_session_ctx_t *session, const struct lyd_node *edit, const char *default_operation) |
Provide a prepared edit data tree to be applied. These changes are applied only after calling sr_apply_changes. More... | |
int | sr_validate (sr_session_ctx_t *session, const char *module_name, uint32_t timeout_ms) |
Perform the validation a datastore and any changes made in the current session, but do not apply nor discard them. More... | |
int | sr_apply_changes (sr_session_ctx_t *session, uint32_t timeout_ms, int wait) |
Apply changes made in the current session. In case the changes could not be applied successfully for any reason, they remain intact in the session. More... | |
int | sr_has_changes (sr_session_ctx_t *session) |
Learn whether there are any prepared non-applied changes in the session. More... | |
int | sr_discard_changes (sr_session_ctx_t *session) |
Discard prepared changes made in the current session. More... | |
int | sr_replace_config (sr_session_ctx_t *session, const char *module_name, struct lyd_node *src_config, uint32_t timeout_ms, int wait) |
Replace a datastore with the contents of a data tree. If the module is specified, limit the operation only to the specified module. If it is not specified, the operation is performed on all modules. More... | |
int | sr_copy_config (sr_session_ctx_t *session, const char *module_name, sr_datastore_t src_datastore, uint32_t timeout_ms, int wait) |
Replaces a conventional datastore with the contents of another conventional datastore. If the module is specified, limits the operation only to the specified module. If it is not specified, the operation is performed on all modules. More... | |
int | sr_lock (sr_session_ctx_t *session, const char *module_name) |
Locks the data of the specified module or the whole datastore. More... | |
int | sr_unlock (sr_session_ctx_t *session, const char *module_name) |
Unlocks the data of the specified module or the whole datastore. More... | |
int | sr_get_lock (sr_conn_ctx_t *conn, sr_datastore_t datastore, const char *module_name, int *is_locked, uint32_t *id, uint32_t *nc_id, time_t *timestamp) |
Check whether the data of the specified module or the whole datastore are locked. More... | |
int | sr_get_event_pipe (sr_subscription_ctx_t *subscription, int *event_pipe) |
Get the event pipe of a subscription. Do not call unless SR_SUBSCR_NO_THREAD flag was used when subscribing! Event pipe can be used in select() , poll() , or similar functions to listen for new events. It will then be ready for reading. More... | |
int | sr_process_events (sr_subscription_ctx_t *subscription, sr_session_ctx_t *session, time_t *stop_time_in) |
Process any pending new events on a subscription. Should not be called unless SR_SUBSCR_NO_THREAD flag was used when subscribing! Usually called after this subscription's event pipe is ready for reading but can also be called periodically. More... | |
int | sr_unsubscribe (sr_subscription_ctx_t *subscription) |
Unsubscribes from a subscription acquired by any of sr_*_subscribe calls and releases all subscription-related data. More... | |
int | sr_module_change_subscribe (sr_session_ctx_t *session, const char *module_name, const char *xpath, sr_module_change_cb callback, void *private_data, uint32_t priority, sr_subscr_options_t opts, sr_subscription_ctx_t **subscription) |
Subscribe for changes made in the specified module. If there are changes made in several modules, the module order is determined by the order in the changes (it is kept). More... | |
int | sr_get_changes_iter (sr_session_ctx_t *session, const char *xpath, sr_change_iter_t **iter) |
Create an iterator for retrieving the changes (list of newly added / removed / modified nodes) in module-change callbacks. It cannot be used outside the callback. More... | |
int | sr_dup_changes_iter (sr_session_ctx_t *session, const char *xpath, sr_change_iter_t **iter) |
Create an iterator for retrieving the changes (list of newly added / removed / modified nodes) in module-change callbacks. It can be used even outside the callback. More... | |
int | sr_get_change_next (sr_session_ctx_t *session, sr_change_iter_t *iter, sr_change_oper_t *operation, sr_val_t **old_value, sr_val_t **new_value) |
Return the next change from the provided iterator created by sr_get_changes_iter call. Data are represented as sr_val_t structures. More... | |
int | sr_get_change_tree_next (sr_session_ctx_t *session, sr_change_iter_t *iter, sr_change_oper_t *operation, const struct lyd_node **node, const char **prev_value, const char **prev_list, bool *prev_dflt) |
Returns the next change from the provided iterator created by sr_get_changes_iter call. Data are represented as libyang subtrees. More... | |
void | sr_free_change_iter (sr_change_iter_t *iter) |
Frees sr_change_iter_t iterator and all memory allocated within it. More... | |
int | sr_rpc_subscribe (sr_session_ctx_t *session, const char *xpath, sr_rpc_cb callback, void *private_data, uint32_t priority, sr_subscr_options_t opts, sr_subscription_ctx_t **subscription) |
Subscribe for the delivery of an RPC/action. Data are represented as sr_val_t structures. More... | |
int | sr_rpc_subscribe_tree (sr_session_ctx_t *session, const char *xpath, sr_rpc_tree_cb callback, void *private_data, uint32_t priority, sr_subscr_options_t opts, sr_subscription_ctx_t **subscription) |
Subscribe for the delivery of an RPC/action. Data are represented as libyang subtrees. More... | |
int | sr_rpc_send (sr_session_ctx_t *session, const char *path, const sr_val_t *input, const size_t input_cnt, uint32_t timeout_ms, sr_val_t **output, size_t *output_cnt) |
Send an RPC/action and wait for the result. Data are represented as sr_val_t structures. More... | |
int | sr_rpc_send_tree (sr_session_ctx_t *session, struct lyd_node *input, uint32_t timeout_ms, struct lyd_node **output) |
Send an RPC/action and wait for the result. Data are represented as libyang subtrees. More... | |
int | sr_event_notif_subscribe (sr_session_ctx_t *session, const char *module_name, const char *xpath, time_t start_time, time_t stop_time, sr_event_notif_cb callback, void *private_data, sr_subscr_options_t opts, sr_subscription_ctx_t **subscription) |
Subscribe for the delivery of a notification(s). Data are represented as sr_val_t structures. More... | |
int | sr_event_notif_subscribe_tree (sr_session_ctx_t *session, const char *module_name, const char *xpath, time_t start_time, time_t stop_time, sr_event_notif_tree_cb callback, void *private_data, sr_subscr_options_t opts, sr_subscription_ctx_t **subscription) |
Subscribes for the delivery of a notification(s). Data are represented as libyang subtrees. More... | |
int | sr_event_notif_send (sr_session_ctx_t *session, const char *path, const sr_val_t *values, const size_t values_cnt) |
Send a notification. Data are represented as sr_val_t structures. In case there are particularly many notifications send on a session (100 notif/s or more) and all of them are stored for replay, consider using sr_session_notif_buffer(). More... | |
int | sr_event_notif_send_tree (sr_session_ctx_t *session, struct lyd_node *notif) |
Send a notification. Data are represented as libyang subtrees. In case there are particularly many notifications send on a session (100 notif/s or more) and all of them are stored for replay, consider using sr_session_notif_buffer(). More... | |
uint32_t | sr_event_notif_sub_id_get_last (const sr_subscription_ctx_t *subscription) |
Get the subscription ID of the last notification subscription. More... | |
int | sr_event_notif_sub_suspend (sr_subscription_ctx_t *subscription, uint32_t sub_id) |
Suspend a notification subscription, special SR_EV_NOTIF_SUSPENDED notification is delivered. More... | |
int | sr_event_notif_sub_resume (sr_subscription_ctx_t *subscription, uint32_t sub_id) |
Resume a previously suspended notification subscription, special SR_EV_NOTIF_RESUMED notification is delivered. More... | |
int | sr_oper_get_items_subscribe (sr_session_ctx_t *session, const char *module_name, const char *path, sr_oper_get_items_cb callback, void *private_data, sr_subscr_options_t opts, sr_subscription_ctx_t **subscription) |
Register for providing operational data at the given xpath. More... | |
void | srp_log (sr_log_level_t ll, const char *format,...) |
public API sysrepo header
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.
Definition in file sysrepo.h.
void srp_log | ( | sr_log_level_t | ll, |
const char * | format, | ||
... | |||
) |