sysrepo  3.7.4
YANG-based system repository for all-around configuration management.
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
sysrepo.h
Go to the documentation of this file.
1 
17 #ifndef _SYSREPO_H
18 #define _SYSREPO_H
19 
20 #include <stdint.h>
21 #include <stdlib.h>
22 #include <sys/types.h>
23 #include <time.h>
24 #include <unistd.h>
25 
26 #include <libyang/libyang.h>
27 
28 #include "sysrepo_types.h"
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
35 // Logging API
37 
49 const char *sr_strerror(int err_code);
50 
61 void sr_log_stderr(sr_log_level_t log_level);
62 
69 
86 void sr_log_syslog(const char *app_name, sr_log_level_t log_level);
87 
94 
101 void sr_log_set_cb(sr_log_cb log_callback);
102 
105 // Connection / Session Management
108 
124 int sr_connect(const sr_conn_options_t opts, sr_conn_ctx_t **conn);
125 
137 int sr_disconnect(sr_conn_ctx_t *conn);
138 
150 const struct ly_ctx *sr_acquire_context(sr_conn_ctx_t *conn);
151 
161 const struct ly_ctx *sr_session_acquire_context(sr_session_ctx_t *session);
162 
171 
180 
188 uint32_t sr_get_content_id(sr_conn_ctx_t *conn);
189 
198 int sr_get_plugins(sr_conn_ctx_t *conn, const char ***ds_plugins, const char ***ntf_plugins);
199 
205 uid_t sr_get_su_uid(void);
206 
214 
224 int sr_session_start(sr_conn_ctx_t *conn, const sr_datastore_t datastore, sr_session_ctx_t **session);
225 
238 int sr_session_stop(sr_session_ctx_t *session);
239 
250 
263 
274 
282 
298 int sr_session_set_orig_name(sr_session_ctx_t *session, const char *orig_name);
299 
306 const char *sr_session_get_orig_name(sr_session_ctx_t *session);
307 
319 int sr_session_push_orig_data(sr_session_ctx_t *session, uint32_t size, const void *data);
320 
327 
337 int sr_session_get_orig_data(sr_session_ctx_t *session, uint32_t idx, uint32_t *size, const void **data);
338 
349 int sr_session_get_error(sr_session_ctx_t *session, const sr_error_info_t **error_info);
350 
358 int sr_session_dup_error(sr_session_ctx_t *src_session, sr_session_ctx_t *trg_session);
359 
378 int sr_session_set_error(sr_session_ctx_t *session, const char *err_format_name, sr_error_t err_code,
379  const char *err_msg_format, ...);
380 
384 int sr_session_set_error_message(sr_session_ctx_t *session, const char *format, ...);
385 
389 int sr_session_set_error_format(sr_session_ctx_t *session, const char *error_format);
390 
401 int sr_session_push_error_data(sr_session_ctx_t *session, uint32_t size, const void *data);
402 
415 int sr_get_error_data(const sr_error_info_err_t *err, uint32_t idx, uint32_t *size, const void **data);
416 
423 uint32_t sr_session_get_id(sr_session_ctx_t *session);
424 
434 int sr_session_set_user(sr_session_ctx_t *session, const char *user);
435 
442 const char *sr_session_get_user(sr_session_ctx_t *session);
443 
451 
454 // Schema Manipulation API
457 
471 const char *sr_get_repo_path(void);
472 
478 const char *sr_get_shm_path(void);
479 
485 const char *sr_get_shm_prefix(void);
486 
498 int sr_install_module(sr_conn_ctx_t *conn, const char *schema_path, const char *search_dirs, const char **features);
499 
509 
534 int sr_install_module2(sr_conn_ctx_t *conn, const char *schema_path, const char *search_dirs, const char **features,
535  const sr_module_ds_t *module_ds, const char *owner, const char *group, mode_t perm, const char *data,
536  const char *data_path, LYD_FORMAT format);
537 
551 int sr_install_modules(sr_conn_ctx_t *conn, const char **schema_paths, const char *search_dirs,
552  const char ***features);
553 
569 int sr_install_modules2(sr_conn_ctx_t *conn, const sr_install_mod_t *modules, uint32_t module_count,
570  const char *search_dirs, const char *data, const char *data_path, LYD_FORMAT format);
571 
582 int sr_remove_module(sr_conn_ctx_t *conn, const char *module_name, int force);
583 
594 int sr_remove_modules(sr_conn_ctx_t *conn, const char **module_names, int force);
595 
606 int sr_update_module(sr_conn_ctx_t *conn, const char *schema_path, const char *search_dirs);
607 
618 int sr_update_modules(sr_conn_ctx_t *conn, const char **schema_paths, const char *search_dirs);
619 
628 int sr_set_module_replay_support(sr_conn_ctx_t *conn, const char *module_name, int enable);
629 
640 int sr_get_module_replay_support(sr_conn_ctx_t *conn, const char *module_name, struct timespec *earliest_notif,
641  int *enabled);
642 
654 int sr_set_module_ds_access(sr_conn_ctx_t *conn, const char *module_name, int mod_ds, const char *owner,
655  const char *group, mode_t perm);
656 
668 int sr_get_module_ds_access(sr_conn_ctx_t *conn, const char *module_name, int mod_ds, char **owner, char **group,
669  mode_t *perm);
670 
681 int sr_check_module_ds_access(sr_conn_ctx_t *conn, const char *module_name, int mod_ds, int *read, int *write);
682 
693 int sr_enable_module_feature(sr_conn_ctx_t *conn, const char *module_name, const char *feature_name);
694 
705 int sr_disable_module_feature(sr_conn_ctx_t *conn, const char *module_name, const char *feature_name);
706 
716 int sr_get_module_info(sr_conn_ctx_t *conn, sr_data_t **sysrepo_data);
717 
726 int sr_is_module_internal(const struct lys_module *ly_mod);
727 
730 // Data Retrieval API (get / get-config functionality)
733 
760 int sr_get_item(sr_session_ctx_t *session, const char *path, uint32_t timeout_ms, sr_val_t **value);
761 
779 int sr_get_items(sr_session_ctx_t *session, const char *xpath, uint32_t timeout_ms, const sr_get_options_t opts,
780  sr_val_t **values, size_t *value_cnt);
781 
794 int sr_session_acquire_data(sr_session_ctx_t *session, struct lyd_node *tree, sr_data_t **data);
795 
806 int sr_acquire_data(sr_conn_ctx_t *conn, struct lyd_node *tree, sr_data_t **data);
807 
826 int sr_get_subtree(sr_session_ctx_t *session, const char *path, uint32_t timeout_ms, sr_data_t **subtree);
827 
852 int sr_get_data(sr_session_ctx_t *session, const char *xpath, uint32_t max_depth, uint32_t timeout_ms,
853  const sr_get_options_t opts, sr_data_t **data);
854 
871 int sr_get_node(sr_session_ctx_t *session, const char *path, uint32_t timeout_ms, sr_data_t **node);
872 
879 void sr_release_data(sr_data_t *data);
880 
886 void sr_free_val(sr_val_t *value);
887 
895 void sr_free_values(sr_val_t *values, size_t count);
896 
899 // Data Manipulation API (edit-config functionality)
902 
935 int sr_set_item(sr_session_ctx_t *session, const char *path, const sr_val_t *value, const sr_edit_options_t opts);
936 
952 int sr_set_item_str(sr_session_ctx_t *session, const char *path, const char *value, const char *origin,
953  const sr_edit_options_t opts);
954 
974 int sr_delete_item(sr_session_ctx_t *session, const char *path, const sr_edit_options_t opts);
975 
979 int sr_oper_delete_item_str(sr_session_ctx_t *session, const char *path, const char *value, const sr_edit_options_t opts);
980 
998 int sr_discard_items(sr_session_ctx_t *session, const char *xpath);
999 
1013 int sr_delete_discard_items(sr_session_ctx_t *session, const char *xpath, const sr_edit_options_t opts);
1014 
1041 int sr_move_item(sr_session_ctx_t *session, const char *path, const sr_move_position_t position, const char *list_keys,
1042  const char *leaflist_value, const char *origin, const sr_edit_options_t opts);
1043 
1058 int sr_edit_batch(sr_session_ctx_t *session, const struct lyd_node *edit, const char *default_operation);
1059 
1071 int sr_validate(sr_session_ctx_t *session, const char *module_name, uint32_t timeout_ms);
1072 
1089 int sr_apply_changes(sr_session_ctx_t *session, uint32_t timeout_ms);
1090 
1097 int sr_has_changes(sr_session_ctx_t *session);
1098 
1107 const struct lyd_node *sr_get_changes(sr_session_ctx_t *session);
1108 
1115 int sr_discard_changes(sr_session_ctx_t *session);
1116 
1124 int sr_discard_changes_xpath(sr_session_ctx_t *session, const char *xpath);
1125 
1139 int sr_replace_config(sr_session_ctx_t *session, const char *module_name, struct lyd_node *src_config,
1140  uint32_t timeout_ms);
1141 
1159 int sr_copy_config(sr_session_ctx_t *session, const char *module_name, sr_datastore_t src_datastore, uint32_t timeout_ms);
1160 
1170 int sr_discard_oper_changes(sr_conn_ctx_t *conn, sr_session_ctx_t *session, const char *module_name, uint32_t timeout_ms);
1171 
1180 int sr_get_oper_changes(sr_session_ctx_t *session, const char *module_name, sr_data_t **data);
1181 
1195 int sr_set_oper_changes_order(sr_session_ctx_t *session, const char *module_name, uint32_t order);
1196 
1206 int sr_get_oper_changes_order(sr_session_ctx_t *session, const char *module_name, uint32_t *order);
1207 
1210 // Locking API
1213 
1235 int sr_lock(sr_session_ctx_t *session, const char *module_name, uint32_t timeout_ms);
1236 
1246 int sr_unlock(sr_session_ctx_t *session, const char *module_name);
1247 
1263 int sr_get_lock(sr_conn_ctx_t *conn, sr_datastore_t datastore, const char *module_name, int *is_locked, uint32_t *id,
1264  struct timespec *timestamp);
1265 
1268 // Subscription API
1271 
1287 int sr_get_event_pipe(sr_subscription_ctx_t *subscription, int *event_pipe);
1288 
1302  struct timespec *wake_up_in);
1303 
1310 uint32_t sr_subscription_get_last_sub_id(const sr_subscription_ctx_t *subscription);
1311 
1320 int sr_subscription_get_suspended(sr_subscription_ctx_t *subscription, uint32_t sub_id, int *suspended);
1321 
1330 int sr_subscription_suspend(sr_subscription_ctx_t *subscription, uint32_t sub_id);
1331 
1340 int sr_subscription_resume(sr_subscription_ctx_t *subscription, uint32_t sub_id);
1341 
1355 int sr_unsubscribe_sub(sr_subscription_ctx_t *subscription, uint32_t sub_id);
1356 
1365 
1373 
1382 
1391 int sr_unsubscribe(sr_subscription_ctx_t *subscription);
1392 
1395 // Change Subscriptions API
1398 
1429 int sr_module_change_set_order(sr_conn_ctx_t *conn, const char *module_name, sr_datastore_t ds, uint32_t priority);
1430 
1442 int sr_module_change_get_order(sr_conn_ctx_t *conn, const char *module_name, sr_datastore_t ds, uint32_t *priority);
1443 
1463 int sr_module_change_subscribe(sr_session_ctx_t *session, const char *module_name, const char *xpath,
1464  sr_module_change_cb callback, void *private_data, uint32_t priority, sr_subscr_options_t opts,
1465  sr_subscription_ctx_t **subscription);
1466 
1478 int sr_module_change_sub_get_info(sr_subscription_ctx_t *subscription, uint32_t sub_id, const char **module_name,
1479  sr_datastore_t *ds, const char **xpath, uint32_t *filtered_out);
1480 
1489 int sr_module_change_sub_modify_xpath(sr_subscription_ctx_t *subscription, uint32_t sub_id, const char *xpath);
1490 
1506 int sr_get_changes_iter(sr_session_ctx_t *session, const char *xpath, sr_change_iter_t **iter);
1507 
1523 int sr_dup_changes_iter(sr_session_ctx_t *session, const char *xpath, sr_change_iter_t **iter);
1524 
1544  sr_val_t **old_value, sr_val_t **new_value);
1545 
1569  const struct lyd_node **node, const char **prev_value, const char **prev_list, int *prev_dflt);
1570 
1577 
1585 const struct lyd_node *sr_get_change_diff(sr_session_ctx_t *session);
1586 
1589 // RPC (Remote Procedure Calls) and Action API
1592 
1613 int sr_rpc_subscribe(sr_session_ctx_t *session, const char *xpath, sr_rpc_cb callback, void *private_data,
1614  uint32_t priority, sr_subscr_options_t opts, sr_subscription_ctx_t **subscription);
1615 
1631 int sr_rpc_subscribe_tree(sr_session_ctx_t *session, const char *xpath, sr_rpc_tree_cb callback,
1632  void *private_data, uint32_t priority, sr_subscr_options_t opts, sr_subscription_ctx_t **subscription);
1633 
1653 int sr_rpc_send(sr_session_ctx_t *session, const char *path, const sr_val_t *input, const size_t input_cnt,
1654  uint32_t timeout_ms, sr_val_t **output, size_t *output_cnt);
1655 
1669 int sr_rpc_send_tree(sr_session_ctx_t *session, struct lyd_node *input, uint32_t timeout_ms, sr_data_t **output);
1670 
1673 // Notifications API
1676 
1699 int sr_notif_subscribe(sr_session_ctx_t *session, const char *module_name, const char *xpath,
1700  const struct timespec *start_time, const struct timespec *stop_time, sr_event_notif_cb callback,
1701  void *private_data, sr_subscr_options_t opts, sr_subscription_ctx_t **subscription);
1702 
1720 int sr_notif_subscribe_tree(sr_session_ctx_t *session, const char *module_name, const char *xpath,
1721  const struct timespec *start_time, const struct timespec *stop_time, sr_event_notif_tree_cb callback,
1722  void *private_data, sr_subscr_options_t opts, sr_subscription_ctx_t **subscription);
1723 
1744 int sr_notif_send(sr_session_ctx_t *session, const char *path, const sr_val_t *values, const size_t values_cnt,
1745  uint32_t timeout_ms, int wait);
1746 
1764 int sr_notif_send_tree(sr_session_ctx_t *session, struct lyd_node *notif, uint32_t timeout_ms, int wait);
1765 
1778 int sr_notif_sub_get_info(sr_subscription_ctx_t *subscription, uint32_t sub_id, const char **module_name,
1779  const char **xpath, struct timespec *start_time, struct timespec *stop_time, uint32_t *filtered_out);
1780 
1790 int sr_notif_sub_modify_xpath(sr_subscription_ctx_t *subscription, uint32_t sub_id, const char *xpath);
1791 
1801 int sr_notif_sub_modify_stop_time(sr_subscription_ctx_t *subscription, uint32_t sub_id, const struct timespec *stop_time);
1802 
1805 // Operational Data API
1808 
1842 int sr_oper_get_subscribe(sr_session_ctx_t *session, const char *module_name, const char *path,
1843  sr_oper_get_items_cb callback, void *private_data, sr_subscr_options_t opts, sr_subscription_ctx_t **subscription);
1844 
1877 int sr_oper_poll_subscribe(sr_session_ctx_t *session, const char *module_name, const char *path, uint32_t valid_ms,
1878  sr_subscr_options_t opts, sr_subscription_ctx_t **subscription);
1879 
1882 // sysrepo-plugind Plugin API
1885 
1896 #define SRP_INIT_CB "sr_plugin_init_cb"
1897 
1903 #define SRP_CLEANUP_CB "sr_plugin_cleanup_cb"
1904 
1916 void srplg_log_errinfo(sr_error_info_t **err_info, const char *plg_name, const char *err_format_name,
1917  sr_error_t err_code, const char *format, ...) _FORMAT_PRINTF(5, 6);
1918 
1930 int srplg_errinfo_push_error_data(sr_error_info_t *err_info, uint32_t size, const void *data);
1931 
1937 void srplg_errinfo_free(sr_error_info_t **err_info);
1938 
1943 #define SRPLG_LOG_ERR(plg_name, ...) srplg_log(plg_name, SR_LL_ERR, __VA_ARGS__)
1944 
1951 #define SRPLG_LOG_WRN(plg_name, ...) srplg_log(plg_name, SR_LL_WRN, __VA_ARGS__)
1952 
1959 #define SRPLG_LOG_INF(plg_name, ...) srplg_log(plg_name, SR_LL_INF, __VA_ARGS__)
1960 
1967 #define SRPLG_LOG_DBG(plg_name, ...) srplg_log(plg_name, SR_LL_DBG, __VA_ARGS__)
1968 
1980 void srplg_log(const char *plg_name, sr_log_level_t ll, const char *format, ...) _FORMAT_PRINTF(3, 4);
1981 
1982 #ifdef __cplusplus
1983 }
1984 #endif
1985 
1986 #endif /* _SYSREPO_H */
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_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 dat...
int sr_get_data(sr_session_ctx_t *session, const char *xpath, uint32_t max_depth, uint32_t timeout_ms, const sr_get_options_t opts, sr_data_t **data)
Retrieve a tree whose root nodes match the provided XPath. Data are represented as libyang subtrees...
int sr_discard_changes(sr_session_ctx_t *session)
Discard prepared changes made in the current session.
const char * sr_get_shm_prefix(void)
Get the common SHM file prefix prepended to all SHM files.
const char * sr_strerror(int err_code)
Returns the error message corresponding to the error code.
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...
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 prov...
uint32_t sr_get_options_t
Options overriding default get handling by sr_get_data call, it is supposed to be a bitmask sr_get_op...
int sr_subscription_thread_notify(sr_subscription_ctx_t *subscription)
Notify (wake up) a subscription thread signalling there is a new event to process. Useful, for example, when an event return SR_ERR_CALLBACK_SHELVE to signal that the event can now be fully processed.
int sr_discard_oper_changes(sr_conn_ctx_t *conn, sr_session_ctx_t *session, const char *module_name, uint32_t timeout_ms)
Discard push operational changes of a module for a session.
sr_conn_ctx_t * sr_session_get_connection(sr_session_ctx_t *session)
Get the connection the session was created on.
sr_datastore_t
Datastores that sysrepo supports. To change which datastore a session operates on, use sr_session_switch_ds.
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 struct...
sr_cid_t sr_get_cid(sr_conn_ctx_t *conn)
Get the connection ID.
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_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...
sr_log_level_t sr_log_get_stderr(void)
Learn current standard error output log level.
int sr_get_oper_changes(sr_session_ctx_t *session, const char *module_name, sr_data_t **data)
Get stored push operational changes of a session.
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_session_start(sr_conn_ctx_t *conn, const sr_datastore_t datastore, sr_session_ctx_t **session)
Start a new session.
int sr_remove_module(sr_conn_ctx_t *conn, const char *module_name, int force)
Remove an installed module from sysrepo.
int sr_remove_modules(sr_conn_ctx_t *conn, const char **module_names, int force)
Remove installed modules from sysrepo.
void sr_release_data(sr_data_t *data)
Release SR data structure, whoch consists of freeing the data tree, releasing the context...
int sr_session_set_error_format(sr_session_ctx_t *session, const char *error_format)
Deprecated, use sr_session_set_error().
int sr_session_acquire_data(sr_session_ctx_t *session, struct lyd_node *tree, sr_data_t **data)
Acquire libyang data tree together with its context lock in a SR data structure.
uint32_t sr_edit_options_t
Options overriding default behavior of data manipulation calls, it is supposed to be bitwise OR-ed va...
void sr_free_change_iter(sr_change_iter_t *iter)
Frees sr_change_iter_t iterator and all memory allocated within it.
void srplg_errinfo_free(sr_error_info_t **err_info)
Free a superfluous error info.
int sr_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...
int sr_rpc_send_tree(sr_session_ctx_t *session, struct lyd_node *input, uint32_t timeout_ms, sr_data_t **output)
Send an RPC/action and wait for the result. Data are represented as libyang subtrees.
int sr_discard_items(sr_session_ctx_t *session, const char *xpath)
Prepare to discard nodes matching the specified xpath in the operational datastore before applying th...
int(* sr_rpc_tree_cb)(sr_session_ctx_t *session, uint32_t sub_id, const char *op_path, const struct lyd_node *input, sr_event_t event, uint32_t operation_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...
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_get_items(sr_session_ctx_t *session, const char *xpath, uint32_t timeout_ms, const sr_get_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 s...
int sr_session_unsubscribe(sr_session_ctx_t *session)
Unsubscribe all subscriptions created by this session.
int sr_is_module_internal(const struct lys_module *ly_mod)
Check whether a module is an internal libyang or sysrepo module. Evaluates to true for all the module...
sr_error_t
Sysrepo error codes.
Definition: sysrepo_types.h:40
uint32_t sr_subscription_get_last_sub_id(const sr_subscription_ctx_t *subscription)
Get the subscription ID of the last created subscription.
void int srplg_errinfo_push_error_data(sr_error_info_t *err_info, uint32_t size, const void *data)
Push (add) another chunk of error data for a failed plugin callback. Its meaning is specific to the e...
void sr_free_val(sr_val_t *value)
Free sr_val_t structure and all memory allocated within it.
Information about a module to be installed.
sr_log_level_t
Log levels used to determine if message of certain severity should be printed.
Definition: sysrepo_types.h:63
void srplg_log(const char *plg_name, sr_log_level_t ll, const char *format,...) _FORMAT_PRINTF(3
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_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.
void(* sr_event_notif_tree_cb)(sr_session_ctx_t *session, uint32_t sub_id, const sr_ev_notif_type_t notif_type, const struct lyd_node *notif, struct timespec *timestamp, void *private_data)
Callback to be called for the delivery of a notification. Data are represented as libyang subtrees...
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).
void(* sr_event_notif_cb)(sr_session_ctx_t *session, uint32_t sub_id, const sr_ev_notif_type_t notif_type, const char *xpath, const sr_val_t *values, const size_t values_cnt, struct timespec *timestamp, void *private_data)
Callback to be called for the delivery of a notification. Data are represented as sr_val_t structures...
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 ev...
int sr_has_changes(sr_session_ctx_t *session)
Learn whether there are any prepared non-applied changes in the session.
int sr_module_change_get_order(sr_conn_ctx_t *conn, const char *module_name, sr_datastore_t ds, uint32_t *priority)
Get the current global priority of change subscriptions of a module.
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 ...
int sr_set_module_replay_support(sr_conn_ctx_t *conn, const char *module_name, int enable)
Change module replay support.
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...
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.
struct ly_ctx * sr_session_acquire_context(sr_session_ctx_t *session)
Get the libyang context used by a connection. Can be used in an application for working with data and...
void sr_session_release_context(sr_session_ctx_t *session)
Release libyang context obtained from a session/connection.
int sr_get_oper_changes_order(sr_session_ctx_t *session, const char *module_name, uint32_t *order)
Get push operational changes order determining when they are applied relative to other sessions for t...
public sysrepo types header
struct lyd_node * sr_get_changes(sr_session_ctx_t *session)
Retrieve stored changes (prepared, not yet applied).
Custom datastore implementation config for each datastore and notifications of a module.
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_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.
int sr_update_modules(sr_conn_ctx_t *conn, const char **schema_paths, const char *search_dirs)
Update installed schemas (modules) to new revisions in a batch.
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.
int sr_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_MODIFI...
uint32_t sr_conn_options_t
Options overriding default connection handling by sr_connect call, it is supposed to be bitwise OR-ed...
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 callin...
int sr_unsubscribe(sr_subscription_ctx_t *subscription)
Unsubscribe all the subscriptions in a subscription structure and free it.
struct lyd_node * sr_get_change_diff(sr_session_ctx_t *session)
Get the changes directly in the form of a diff in module-change callbacks. It cannot be used outside ...
Detailed sysrepo session error information.
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 mod...
int sr_get_plugins(sr_conn_ctx_t *conn, const char ***ds_plugins, const char ***ntf_plugins)
Get loaded plugins of a connection.
int sr_oper_get_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 path.
const char * sr_get_repo_path(void)
Get the path (directory) for all persistent sysrepo files.
int sr_set_oper_changes_order(sr_session_ctx_t *session, const char *module_name, uint32_t order)
Set explicit push operational changes order determining when they are applied relative to other sessi...
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.
int sr_session_set_error(sr_session_ctx_t *session, const char *err_format_name, sr_error_t err_code, const char *err_msg_format,...)
Set an error for a failed callback communicated back to the originator. Does not print the message...
uint32_t sr_cid_t
Connection ID.
Definition: sysrepo_types.h:94
void sr_log_stderr(sr_log_level_t log_level)
Enables / disables / changes log level (verbosity) of logging to standard error output.
struct sr_session_ctx_s sr_session_ctx_t
Sysrepo session on a connection.
Definition: sysrepo_types.h:99
void sr_session_del_orig_data(sr_session_ctx_t *session)
Remove all pushed event originator data.
int sr_session_notif_buffer(sr_session_ctx_t *session)
Use notification buffering for the session.
int sr_get_subtree(sr_session_ctx_t *session, const char *path, uint32_t timeout_ms, sr_data_t **subtree)
Retrieve a single subtree whose root node is selected by the provided path. Data are represented as l...
int sr_get_node(sr_session_ctx_t *session, const char *path, uint32_t timeout_ms, sr_data_t **node)
Retrieve a single value matching the provided XPath. Data are represented as a single libyang node...
A single, detailed error message. Used in sr_error_info_t.
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...
struct sr_conn_ctx_s sr_conn_ctx_t
Sysrepo connection.
Definition: sysrepo_types.h:89
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.
void sr_release_context(sr_conn_ctx_t *conn)
Release libyang context obtained from a session/connection.
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_oper_get_items_cb)(sr_session_ctx_t *session, uint32_t sub_id, const char *module_name, const char *path, const char *request_xpath, uint32_t operation_id, struct lyd_node **parent, void *private_data)
Callback to be called when operational data at the selected xpath are requested. Data are represented...
int sr_oper_poll_subscribe(sr_session_ctx_t *session, const char *module_name, const char *path, uint32_t valid_ms, sr_subscr_options_t opts, sr_subscription_ctx_t **subscription)
Start periodic retrieval and caching of operational data at the given path.
int sr_install_module2(sr_conn_ctx_t *conn, const char *schema_path, const char *search_dirs, const char **features, const sr_module_ds_t *module_ds, const char *owner, const char *group, mode_t perm, const char *data, const char *data_path, LYD_FORMAT format)
Install a new schema (module) into sysrepo with all the available options.
sr_datastore_t sr_session_get_ds(sr_session_ctx_t *session)
Learn the datastore a session operates on.
int sr_unlock(sr_session_ctx_t *session, const char *module_name)
Unlocks the data of the specified module or the whole datastore.
struct sr_change_iter_s sr_change_iter_t
Iterator used for retrieval of a changeset using sr_get_changes_iter call.
void srplg_log_errinfo(sr_error_info_t **err_info, const char *plg_name, const char *err_format_name, sr_error_t err_code, const char *format,...) _FORMAT_PRINTF(5
Log a plugin error message and add the error into an error info structure.
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.
sr_change_oper_t
Type of the operation made on an item, used by changeset retrieval in sr_get_change_next.
int sr_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 no...
const char * sr_session_get_orig_name(sr_session_ctx_t *session)
Get event originator name.
int(* sr_module_change_cb)(sr_session_ctx_t *session, uint32_t sub_id, const char *module_name, const char *xpath, sr_event_t event, uint32_t operation_id, void *private_data)
Callback to be called on the event of changing datastore content of the specified module...
int sr_discard_changes_xpath(sr_session_ctx_t *session, const char *xpath)
Discard prepared changes made in the current session matching an XPath expression.
uint32_t sr_session_get_id(sr_session_ctx_t *session)
Return the assigned session ID of the sysrepo session.
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 ...
const char * sr_session_get_user(sr_session_ctx_t *session)
Get the effective user of a session.
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.
Definition: sysrepo_types.h:77
int sr_get_module_replay_support(sr_conn_ctx_t *conn, const char *module_name, struct timespec *earliest_notif, int *enabled)
Learn replay support of a module.
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 suspende...
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.
int sr_get_error_data(const sr_error_info_err_t *err, uint32_t idx, uint32_t *size, const void **data)
Get a specific chunk of error data.
int sr_oper_delete_item_str(sr_session_ctx_t *session, const char *path, const char *value, const sr_edit_options_t opts)
Deprecated, not supported.
int sr_session_stop(sr_session_ctx_t *session)
Stop the session and releases resources tied to it.
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 mod...
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...
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_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...
int sr_subscription_process_events(sr_subscription_ctx_t *subscription, sr_session_ctx_t *session, struct timespec *wake_up_in)
Process any pending new events on a subscription. Should not be called unless SR_SUBSCR_NO_THREAD fla...
int sr_lock(sr_session_ctx_t *session, const char *module_name, uint32_t timeout_ms)
Locks the data of the specified module or the whole datastore.
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_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.
int sr_enable_module_feature(sr_conn_ctx_t *conn, const char *module_name, const char *feature_name)
Enable a module feature.
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 impl...
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...
const char * sr_get_shm_path(void)
Get the path (directory) for all volatile sysrepo files, created as SHM files.
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_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 subsc...
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 ...
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_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...
uint32_t sr_subscr_options_t
Options overriding default behavior of subscriptions, it is supposed to be a bitwise OR-ed value of a...
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_delete_discard_items(sr_session_ctx_t *session, const char *xpath, const sr_edit_options_t opts)
Remove a &#39;discard-items&#39; node from a push oper data of a session. Usable only for SR_DS_OPERATIONAL d...
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. ...
sr_move_position_t
Options for specifying move direction of sr_move_item call.
int sr_session_set_user(sr_session_ctx_t *session, const char *user)
Set the effective user of a session to a different one than the process owner.
int sr_session_set_error_message(sr_session_ctx_t *session, const char *format,...)
Deprecated, use sr_session_set_error().
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_appl...
struct ly_ctx * sr_acquire_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...
int sr_acquire_data(sr_conn_ctx_t *conn, struct lyd_node *tree, sr_data_t **data)
Acquire libyang data tree together with its context lock in a SR data structure.
int sr_disable_module_feature(sr_conn_ctx_t *conn, const char *module_name, const char *feature_name)
Disable a module feature.
int sr_module_change_set_order(sr_conn_ctx_t *conn, const char *module_name, sr_datastore_t ds, uint32_t priority)
Change the global priority of modules being notified about their changes. The default priority of eve...
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 eve...
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...
const sr_module_ds_t * sr_get_module_ds_default(void)
Get the default datastore plugins.
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 ...
int sr_connect(const sr_conn_options_t opts, sr_conn_ctx_t **conn)
Connects to the sysrepo datastore.
int sr_install_modules2(sr_conn_ctx_t *conn, const sr_install_mod_t *modules, uint32_t module_count, const char *search_dirs, const char *data, const char *data_path, LYD_FORMAT format)
Install new schemas (modules) into sysrepo in a batch with all the available options.
int sr_disconnect(sr_conn_ctx_t *conn)
Disconnect from the sysrepo datastore.
int sr_get_module_info(sr_conn_ctx_t *conn, sr_data_t **sysrepo_data)
Get internal sysrepo data tree, which holds detailed information about installed modules. It should not be needed except for some specific use-cases. These data are from the sysrepo module found in modules/sysrepo.yang.
Structure that safely wraps libyang data and prevents unexpected context changes. ...
int sr_install_modules(sr_conn_ctx_t *conn, const char **schema_paths, const char *search_dirs, const char ***features)
Install new schemas (modules) into sysrepo in a batch.
sr_log_level_t sr_log_get_syslog(void)
Learn current system log log level.
uid_t sr_get_su_uid(void)
Get the sysrepo SUPERUSER UID.
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_rpc_cb)(sr_session_ctx_t *session, uint32_t sub_id, const char *xpath, const sr_val_t *input, const size_t input_cnt, sr_event_t event, uint32_t operation_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...
Structure that contains value of an data element stored in the sysrepo datastore. ...