sysrepo 2.0.53
YANG-based system repository for all-around configuration management.
Loading...
Searching...
No Matches
sysrepo.h File Reference

public API sysrepo header More...

#include <stdint.h>
#include <stdlib.h>
#include <sys/types.h>
#include <time.h>
#include <unistd.h>
#include <libyang/libyang.h>
#include "sysrepo_types.h"
Include dependency graph for sysrepo.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define SRP_CLEANUP_CB   "sr_plugin_cleanup_cb"
 sysrepo-plugind plugin cleanup callback name that must exist in every plugin.
 
#define SRP_INIT_CB   "sr_plugin_init_cb"
 sysrepo-plugind plugin initialization callback name that must exist in every plugin.
 
#define SRP_LOG_DBG(...)   srp_log(SR_LL_DBG, __VA_ARGS__)
 Deprecated, use SRPLG_LOG_DBG.
 
#define SRP_LOG_ERR(...)   srp_log(SR_LL_ERR, __VA_ARGS__)
 Deprecated, use SRPLG_LOG_ERR.
 
#define SRP_LOG_INF(...)   srp_log(SR_LL_INF, __VA_ARGS__)
 Deprecated, use SRPLG_LOG_INF.
 
#define SRP_LOG_WRN(...)   srp_log(SR_LL_WRN, __VA_ARGS__)
 Deprecated, use SRPLG_LOG_WRN.
 
#define SRPLG_LOG_DBG(plg_name, ...)   srplg_log(plg_name, SR_LL_DBG, __VA_ARGS__)
 Log a plugin debug message with format arguments.
 
#define SRPLG_LOG_ERR(plg_name, ...)   srplg_log(plg_name, SR_LL_ERR, __VA_ARGS__)
 Log a plugin error message with format arguments.
 
#define SRPLG_LOG_INF(plg_name, ...)   srplg_log(plg_name, SR_LL_INF, __VA_ARGS__)
 Log a plugin info message with format arguments.
 
#define SRPLG_LOG_WRN(plg_name, ...)   srplg_log(plg_name, SR_LL_WRN, __VA_ARGS__)
 Log a plugin warning message with format arguments.
 

Functions

int sr_apply_changes (sr_session_ctx_t *session, uint32_t timeout_ms)
 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.
 
int sr_cancel_update_module (sr_conn_ctx_t *conn, const char *module_name)
 Cancel scheduled update of a module.
 
int sr_check_module_ds_access (sr_conn_ctx_t *conn, const char *module_name, int mod_ds, int *read, int *write)
 Check whether the current application has read/write access to a module.
 
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.
 
int sr_connection_count (uint32_t *conn_count)
 Learn the current global number of alive connections.
 
int sr_copy_config (sr_session_ctx_t *session, const char *module_name, sr_datastore_t src_datastore, uint32_t timeout_ms)
 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.
 
int sr_delete_item (sr_session_ctx_t *session, const char *path, const sr_edit_options_t opts)
 Prepare to delete 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.
 
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!
 
int sr_discard_changes (sr_session_ctx_t *session)
 Discard prepared changes made in the current session.
 
int sr_discard_oper_changes (sr_conn_ctx_t *conn, sr_session_ctx_t *session, const char *xpath, uint32_t timeout_ms)
 Discard stored push operational data owned by this connection.
 
int sr_disconnect (sr_conn_ctx_t *conn)
 Disconnect from the sysrepo datastore.
 
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.
 
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().
 
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!
 
int sr_event_notif_send (sr_session_ctx_t *session, const char *path, const sr_val_t *values, const size_t values_cnt, uint32_t timeout_ms, int wait)
 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().
 
int sr_event_notif_send_tree (sr_session_ctx_t *session, struct lyd_node *notif, uint32_t timeout_ms, int wait)
 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().
 
int sr_event_notif_sub_get_info (sr_subscription_ctx_t *subscription, uint32_t sub_id, const char **module_name, const char **xpath, time_t *start_time, time_t *stop_time, uint32_t *filtered_out)
 Deprecated, use sr_notif_sub_get_info() instead.
 
int sr_event_notif_sub_modify_stop_time (sr_subscription_ctx_t *subscription, uint32_t sub_id, time_t stop_time)
 Deprecated, use sr_notif_sub_modify_stop_time() instead.
 
int sr_event_notif_sub_modify_xpath (sr_subscription_ctx_t *subscription, uint32_t sub_id, const char *xpath)
 Modify an existing notification subscription by changing its XPath filter. Special SR_EV_NOTIF_MODIFIED notification is delivered.
 
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)
 Deprecated, use sr_notif_subscribe() instead.
 
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)
 Deprecated, use sr_notif_subscribe_tree() instead.
 
void sr_free_change_iter (sr_change_iter_t *iter)
 Frees sr_change_iter_t iterator and all memory allocated within it.
 
void sr_free_val (sr_val_t *value)
 Free sr_val_t structure and all memory allocated within it.
 
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).
 
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.
 
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, int *prev_dflt)
 Returns the next change from the provided iterator created by sr_get_changes_iter call. Data are represented as libyang subtrees.
 
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.
 
uint32_t sr_get_content_id (sr_conn_ctx_t *conn)
 Get content ID of the current YANG module set. It conforms to the requirements for ietf-yang-library "content-id" node value.
 
const 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!
 
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.
 
int sr_get_error_data (sr_error_info_err_t *err, uint32_t idx, uint32_t *size, const void **data)
 Get a specific chunk of error data.
 
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.
 
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.
 
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.
 
int sr_get_lock (sr_conn_ctx_t *conn, sr_datastore_t datastore, const char *module_name, int *is_locked, uint32_t *id, struct timespec *timestamp)
 Check whether the data of the specified module or the whole datastore are locked.
 
int sr_get_module_access (sr_conn_ctx_t *conn, const char *module_name, char **owner, char **group, mode_t *perm)
 Deprecated, use sr_get_module_ds_access() instead.
 
int sr_get_module_ds_access (sr_conn_ctx_t *conn, const char *module_name, int mod_ds, char **owner, char **group, mode_t *perm)
 Learn about module permissions.
 
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.
 
const char * sr_get_repo_path (void)
 Get the common path prefix for all sysrepo files.
 
uid_t sr_get_su_uid (void)
 Get the sysrepo SUPERUSER UID.
 
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.
 
int sr_has_changes (sr_session_ctx_t *session)
 Learn whether there are any prepared non-applied changes in the session.
 
int sr_install_module (sr_conn_ctx_t *conn, const char *schema_path, const char *search_dirs, const char **features)
 Install a new schema (module) into sysrepo. Deferred until there are no connections!
 
int sr_install_module_custom_ds (sr_conn_ctx_t *conn, const char *schema_path, const char *search_dirs, const char **features, const sr_module_ds_t *module_ds)
 Install a new schema (module) into sysrepo. Deferred until there are no connections!
 
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).
 
int sr_lock (sr_session_ctx_t *session, const char *module_name)
 Locks the data of the specified module or the whole datastore.
 
sr_log_level_t sr_log_get_stderr (void)
 Learn current standard error output log level.
 
sr_log_level_t sr_log_get_syslog (void)
 Learn current system log log level.
 
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.
 
void sr_log_stderr (sr_log_level_t log_level)
 Enables / disables / changes log level (verbosity) of logging to standard error output.
 
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.
 
int sr_module_change_sub_get_info (sr_subscription_ctx_t *subscription, uint32_t sub_id, const char **module_name, sr_datastore_t *ds, const char **xpath, uint32_t *filtered_out)
 Get information about an existing change subscription.
 
int sr_module_change_sub_modify_xpath (sr_subscription_ctx_t *subscription, uint32_t sub_id, const char *xpath)
 Modify an existing change subscription by changing its XPath filter.
 
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).
 
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.
 
int sr_notif_sub_get_info (sr_subscription_ctx_t *subscription, uint32_t sub_id, const char **module_name, const char **xpath, struct timespec *start_time, struct timespec *stop_time, uint32_t *filtered_out)
 Get information about an existing notification subscription.
 
int sr_notif_sub_modify_stop_time (sr_subscription_ctx_t *subscription, uint32_t sub_id, const struct timespec *stop_time)
 Modify an existing notification subscription by changing its stop time. Special SR_EV_NOTIF_MODIFIED notification is delivered.
 
int sr_notif_subscribe (sr_session_ctx_t *session, const char *module_name, const char *xpath, const struct timespec *start_time, const struct timespec *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.
 
int sr_notif_subscribe_tree (sr_session_ctx_t *session, const char *module_name, const char *xpath, const struct timespec *start_time, const struct timespec *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.
 
int sr_oper_delete_item_str (sr_session_ctx_t *session, const char *path, const char *value, const sr_edit_options_t opts)
 Prepare to delete 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.
 
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.
 
int sr_process_events (sr_subscription_ctx_t *subscription, sr_session_ctx_t *session, time_t *stop_time_in)
 Deprecated, use sr_subscription_process_events() instead.
 
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!
 
int sr_replace_config (sr_session_ctx_t *session, const char *module_name, struct lyd_node *src_config, uint32_t timeout_ms)
 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.
 
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.
 
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.
 
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.
 
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.
 
void sr_session_del_orig_data (sr_session_ctx_t *session)
 Remove all pushed event originator data.
 
int sr_session_dup_error (sr_session_ctx_t *src_session, sr_session_ctx_t *trg_session)
 Copy the first error (if any) from a session to a callback session.
 
sr_conn_ctx_tsr_session_get_connection (sr_session_ctx_t *session)
 Get the connection the session was created on.
 
sr_datastore_t sr_session_get_ds (sr_session_ctx_t *session)
 Learn the datastore a session operates on.
 
int sr_session_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.
 
uint32_t sr_session_get_id (sr_session_ctx_t *session)
 Return the assigned session ID of the sysrepo session.
 
int sr_session_get_orig_data (sr_session_ctx_t *session, uint32_t idx, uint32_t *size, const void **data)
 Get a specific chunk of event originator data in a callback.
 
const char * sr_session_get_orig_name (sr_session_ctx_t *session)
 Get event originator name.
 
const char * sr_session_get_user (sr_session_ctx_t *session)
 Get the effective user of a session.
 
int sr_session_notif_buffer (sr_session_ctx_t *session)
 Use notification buffering for the session.
 
int sr_session_push_error_data (sr_session_ctx_t *session, uint32_t size, const void *data)
 Push (add) another chunk of error data for a failed callback communicated back to the originator. Its meaning is specific to the error data format (which must be set prior to calling this function) identifier and can be read from the error structure by the originator using sr_get_error_data().
 
int sr_session_push_orig_data (sr_session_ctx_t *session, uint32_t size, const void *data)
 Push (add) another chunk of event originator data used for all events sent on this session. Its meaning is specific to the originator name (which must be set prior to calling this function) and can be read from the implicit event session in the callbacks using sr_session_get_orig_data().
 
int sr_session_set_error_format (sr_session_ctx_t *session, const char *error_format)
 Set error data format identifier for a failed callback communicated back to the originator. This format name should be used for interpreting the error data set by sr_session_push_error_data().
 
int sr_session_set_error_message (sr_session_ctx_t *session, const char *format,...)
 Set an error message for a failed callback communicated back to the originator. Does not print the message.
 
int sr_session_set_orig_name (sr_session_ctx_t *session, const char *orig_name)
 Set event originator name used for all events sent on this session. It can then be read from the implicit event session in the callbacks using sr_session_get_orig_name(). This name should be used for interpreting the data set by sr_session_push_orig_data().
 
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.
 
int sr_session_start (sr_conn_ctx_t *conn, const sr_datastore_t datastore, sr_session_ctx_t **session)
 Start a new session.
 
int sr_session_stop (sr_session_ctx_t *session)
 Stop the session and releases resources tied to it.
 
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.
 
int sr_session_unsubscribe (sr_session_ctx_t *session)
 Unsubscribe all subscriptions created by this session.
 
int 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.
 
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.
 
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.
 
int sr_set_module_access (sr_conn_ctx_t *conn, const char *module_name, const char *owner, const char *group, mode_t perm)
 Deprecated, use sr_set_module_ds_access() instead.
 
int sr_set_module_ds_access (sr_conn_ctx_t *conn, const char *module_name, int mod_ds, const char *owner, const char *group, mode_t perm)
 Change module permissions.
 
int sr_set_module_replay_support (sr_conn_ctx_t *conn, const char *module_name, int replay_support)
 Change module replay support.
 
const char * sr_strerror (int err_code)
 Returns the error message corresponding to the error code.
 
uint32_t sr_subscription_get_last_sub_id (const sr_subscription_ctx_t *subscription)
 Get the subscription ID of the last created subscription.
 
int sr_subscription_get_suspended (sr_subscription_ctx_t *subscription, uint32_t sub_id, int *suspended)
 Learn the suspend state of a specific subscription.
 
int sr_subscription_process_events (sr_subscription_ctx_t *subscription, sr_session_ctx_t *session, struct timespec *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.
 
int sr_subscription_resume (sr_subscription_ctx_t *subscription, uint32_t sub_id)
 Resume a previously suspended subscription. Special SR_EV_NOTIF_RESUMED notification is delivered for resumed notification subscriptions.
 
int sr_subscription_suspend (sr_subscription_ctx_t *subscription, uint32_t sub_id)
 Suspend a specific subscription. Special SR_EV_NOTIF_SUSPENDED notification is delivered for suspended notification subscriptions.
 
int sr_subscription_thread_resume (sr_subscription_ctx_t *subscription)
 Resume the default handler thread of a subscription structure that was suspended previously.
 
int sr_subscription_thread_suspend (sr_subscription_ctx_t *subscription)
 Suspend the default handler thread of a subscription structure. Meaning it will stop handling any events on the subscription until it is resumed.
 
int sr_unlock (sr_session_ctx_t *session, const char *module_name)
 Unlocks the data of the specified module or the whole datastore.
 
int sr_unsubscribe (sr_subscription_ctx_t *subscription)
 Unsubscribe all the subscriptions in a subscription structure and free it.
 
int sr_unsubscribe_sub (sr_subscription_ctx_t *subscription, uint32_t sub_id)
 Unsubscribe a specific or all the subscriptions in a subscription structure.
 
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!
 
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.
 
void srp_log (sr_log_level_t ll, const char *format,...)
 
void srplg_log (const char *plg_name, sr_log_level_t ll, const char *format,...)
 

Detailed Description

public API sysrepo header

Author
Michal Vasko mvask.nosp@m.o@ce.nosp@m.snet..nosp@m.cz

This source code is licensed under BSD 3-Clause License (the "License"). You may not use this file except in compliance with the License. You may obtain a copy of the License at

https://opensource.org/licenses/BSD-3-Clause

Definition in file sysrepo.h.

Function Documentation

◆ srp_log()

void srp_log ( sr_log_level_t  ll,
const char *  format,
  ... 
)

◆ srplg_log()

void srplg_log ( const char *  plg_name,
sr_log_level_t  ll,
const char *  format,
  ... 
)