sysrepo 5.2.24
YANG-based system repository for all-around configuration management.
Loading...
Searching...
No Matches
sysrepo.h
Go to the documentation of this file.
1
16
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
31extern "C" {
32#endif
33
35// Logging API
37
42
49const char *sr_strerror(int err_code);
50
62
69
86void sr_log_syslog(const char *app_name, sr_log_level_t log_level);
87
94
102void sr_log_set_cb(sr_log_cb log_callback);
103
112
119
121
123// Connection / Session Management
125
130
141int sr_connect(const uint32_t opts, sr_conn_ctx_t **conn);
142
155
166void sr_cache_running(int enable);
167
183int sr_context_options(uint32_t opts, int apply, uint32_t *prev_opts);
184
196const struct ly_ctx *sr_acquire_context(sr_conn_ctx_t *conn);
197
209const struct ly_ctx *sr_session_acquire_context(sr_session_ctx_t *session);
210
221
232
237LY_ERR sr_ly_ext_data_clb(const struct lysc_ext_instance *ext, const struct lyd_node *parent, void *user_data,
238 void **ext_data, ly_bool *ext_data_free);
239
248
257int sr_get_plugins(sr_conn_ctx_t *conn, const char ***ds_plugins, const char ***ntf_plugins);
258
264uid_t sr_get_su_uid(void);
265
273
284int sr_filter_subtree2xpath(sr_session_ctx_t *session, const struct lyd_node *subtree, int for_eval, char **xpath_filter);
285
291const char *sr_yang_module_dir(void);
292
300int sr_set_yang_module_dir(const char *path);
301
311int sr_session_start(sr_conn_ctx_t *conn, const sr_datastore_t datastore, sr_session_ctx_t **session);
312
326
337
350
361
369
379
395int sr_session_set_orig_name(sr_session_ctx_t *session, const char *orig_name);
396
404
416int sr_session_push_orig_data(sr_session_ctx_t *session, uint32_t size, const void *data);
417
424
434int sr_session_get_orig_data(sr_session_ctx_t *session, uint32_t idx, uint32_t *size, const void **data);
435
446int sr_session_get_error(sr_session_ctx_t *session, const sr_error_info_t **error_info);
447
456
475int sr_session_set_error(sr_session_ctx_t *session, const char *err_format_name, sr_error_t err_code,
476 const char *err_msg_format, ...);
477
481int sr_session_set_error_message(sr_session_ctx_t *session, const char *format, ...);
482
486int sr_session_set_error_format(sr_session_ctx_t *session, const char *error_format);
487
498int sr_session_push_error_data(sr_session_ctx_t *session, uint32_t size, const void *data);
499
512int sr_get_error_data(const sr_error_info_err_t *err, uint32_t idx, uint32_t *size, const void **data);
513
521
531int sr_session_set_user(sr_session_ctx_t *session, const char *user);
532
540
548
550
552// Schema Manipulation API
554
559
568const char *sr_get_repo_path(void);
569
575const char *sr_get_shm_path(void);
576
582const char *sr_get_shm_prefix(void);
583
597int sr_install_module(sr_conn_ctx_t *conn, const char *schema_path, const char *search_dirs, const char **features);
598
608
635int sr_install_module2(sr_conn_ctx_t *conn, const char *schema_path, const char *search_dirs, const char **features,
636 const sr_module_ds_t *module_ds, const char *owner, const char *group, mode_t perm, const char *data,
637 const char *data_path, LYD_FORMAT format);
638
654int sr_install_modules(sr_conn_ctx_t *conn, const char **schema_paths, const char *search_dirs,
655 const char ***features);
656
674int sr_install_modules2(sr_conn_ctx_t *conn, const sr_install_mod_t *modules, uint32_t module_count,
675 const char *search_dirs, const char *data, const char *data_path, LYD_FORMAT format);
676
689int sr_remove_module(sr_conn_ctx_t *conn, const char *module_name, int force);
690
703int sr_remove_modules(sr_conn_ctx_t *conn, const char **module_names, int force);
704
717int sr_update_module(sr_conn_ctx_t *conn, const char *schema_path, const char *search_dirs);
718
731int sr_update_modules(sr_conn_ctx_t *conn, const char **schema_paths, const char *search_dirs);
732
741int sr_set_module_replay_support(sr_conn_ctx_t *conn, const char *module_name, int enable);
742
753int sr_get_module_replay_support(sr_conn_ctx_t *conn, const char *module_name, struct timespec *earliest_notif,
754 int *enabled);
755
767int sr_get_module_replay_start(sr_conn_ctx_t *conn, const char *module_name, const struct timespec *after,
768 struct timespec *earliest_notif, struct timespec *replay_start);
769
781int sr_set_module_ds_access(sr_conn_ctx_t *conn, const char *module_name, int mod_ds, const char *owner,
782 const char *group, mode_t perm);
783
795int sr_get_module_ds_access(sr_conn_ctx_t *conn, const char *module_name, int mod_ds, char **owner, char **group,
796 mode_t *perm);
797
808int sr_check_module_ds_access(sr_conn_ctx_t *conn, const char *module_name, int mod_ds, int *read, int *write);
809
822int sr_enable_module_feature(sr_conn_ctx_t *conn, const char *module_name, const char *feature_name);
823
836int sr_disable_module_feature(sr_conn_ctx_t *conn, const char *module_name, const char *feature_name);
837
847int sr_get_module_info(sr_conn_ctx_t *conn, sr_data_t **sysrepo_data);
848
857int sr_is_module_internal(const struct lys_module *ly_mod);
858
860
862// Data Retrieval API (get / get-config functionality)
864
869
891int sr_get_item(sr_session_ctx_t *session, const char *path, uint32_t timeout_ms, sr_val_t **value);
892
910int sr_get_items(sr_session_ctx_t *session, const char *xpath, uint32_t timeout_ms, const uint32_t opts,
911 sr_val_t **values, size_t *value_cnt);
912
927int sr_session_acquire_data(sr_session_ctx_t *session, struct lyd_node *tree, sr_data_t **data);
928
941int sr_acquire_data(sr_conn_ctx_t *conn, struct lyd_node *tree, sr_data_t **data);
942
963int sr_get_subtree(sr_session_ctx_t *session, const char *path, uint32_t timeout_ms, sr_data_t **subtree);
964
991int sr_get_data(sr_session_ctx_t *session, const char *xpath, uint32_t max_depth, uint32_t timeout_ms,
992 const uint32_t opts, sr_data_t **data);
993
1012int sr_get_node(sr_session_ctx_t *session, const char *path, uint32_t timeout_ms, sr_data_t **node);
1013
1023
1030
1038void sr_free_values(sr_val_t *values, size_t count);
1039
1041
1043// Data Manipulation API (edit-config functionality)
1045
1050
1080int sr_set_item(sr_session_ctx_t *session, const char *path, const sr_val_t *value, const uint32_t opts);
1081
1099int sr_set_item_str(sr_session_ctx_t *session, const char *path, const char *value, const char *origin,
1100 const uint32_t opts);
1101
1123int sr_delete_item(sr_session_ctx_t *session, const char *path, const uint32_t opts);
1124
1128int sr_oper_delete_item_str(sr_session_ctx_t *session, const char *path, const char *value, const uint32_t opts);
1129
1149int sr_discard_items(sr_session_ctx_t *session, const char *xpath);
1150
1166int sr_delete_discard_items(sr_session_ctx_t *session, const char *xpath, const uint32_t opts);
1167
1196int sr_move_item(sr_session_ctx_t *session, const char *path, const sr_move_position_t position, const char *list_keys,
1197 const char *leaflist_value, const char *origin, const uint32_t opts);
1198
1215int sr_edit_batch(sr_session_ctx_t *session, const struct lyd_node *edit, const char *default_operation);
1216
1228int sr_validate(sr_session_ctx_t *session, const char *module_name, uint32_t timeout_ms);
1229
1249int sr_apply_changes(sr_session_ctx_t *session, uint32_t timeout_ms);
1250
1258
1267const struct lyd_node *sr_get_changes(sr_session_ctx_t *session);
1268
1278
1288int sr_discard_changes_xpath(sr_session_ctx_t *session, const char *xpath);
1289
1303int sr_replace_config(sr_session_ctx_t *session, const char *module_name, struct lyd_node *src_config,
1304 uint32_t timeout_ms);
1305
1323int sr_copy_config(sr_session_ctx_t *session, const char *module_name, sr_datastore_t src_datastore, uint32_t timeout_ms);
1324
1335int sr_discard_oper_changes(sr_session_ctx_t *session, const char *module_name, uint32_t timeout_ms);
1336
1345int sr_get_oper_changes(sr_session_ctx_t *session, const char *module_name, sr_data_t **data);
1346
1360int sr_set_oper_changes_order(sr_session_ctx_t *session, const char *module_name, uint32_t order);
1361
1371int sr_get_oper_changes_order(sr_session_ctx_t *session, const char *module_name, uint32_t *order);
1372
1374
1376// Locking API
1378
1383
1400int sr_lock(sr_session_ctx_t *session, const char *module_name, uint32_t timeout_ms);
1401
1411int sr_unlock(sr_session_ctx_t *session, const char *module_name);
1412
1428int sr_get_lock(sr_conn_ctx_t *conn, sr_datastore_t datastore, const char *module_name, int *is_locked, uint32_t *id,
1429 struct timespec *timestamp);
1430
1432
1434// Subscription API
1436
1441
1452int sr_get_event_pipe(sr_subscription_ctx_t *subscription, int *event_pipe);
1453
1467 struct timespec *wake_up_in);
1468
1476
1485int sr_subscription_get_suspended(sr_subscription_ctx_t *subscription, uint32_t sub_id, int *suspended);
1486
1495int sr_subscription_suspend(sr_subscription_ctx_t *subscription, uint32_t sub_id);
1496
1505int sr_subscription_resume(sr_subscription_ctx_t *subscription, uint32_t sub_id);
1506
1520int sr_unsubscribe_sub(sr_subscription_ctx_t *subscription, uint32_t sub_id);
1521
1530
1538
1547
1557
1559
1561// Change Subscriptions API
1563
1568
1594int sr_module_change_set_order(sr_conn_ctx_t *conn, const char *module_name, sr_datastore_t ds, uint32_t priority);
1595
1607int sr_module_change_get_order(sr_conn_ctx_t *conn, const char *module_name, sr_datastore_t ds, uint32_t *priority);
1608
1628int sr_module_change_subscribe(sr_session_ctx_t *session, const char *module_name, const char *xpath,
1629 sr_module_change_cb callback, void *private_data, uint32_t priority, uint32_t opts,
1630 sr_subscription_ctx_t **subscription);
1631
1643int sr_module_change_sub_get_info(sr_subscription_ctx_t *subscription, uint32_t sub_id, const char **module_name,
1644 sr_datastore_t *ds, const char **xpath, uint32_t *filtered_out);
1645
1654int sr_module_change_sub_modify_xpath(sr_subscription_ctx_t *subscription, uint32_t sub_id, const char *xpath);
1655
1669int sr_get_changes_iter(sr_session_ctx_t *session, const char *xpath, sr_change_iter_t **iter);
1670
1684int sr_dup_changes_iter(sr_session_ctx_t *session, const char *xpath, sr_change_iter_t **iter);
1685
1705 sr_val_t **old_value, sr_val_t **new_value);
1706
1730 const struct lyd_node **node, const char **prev_value, const char **prev_list, int *prev_dflt);
1731
1738
1746const struct lyd_node *sr_get_change_diff(sr_session_ctx_t *session);
1747
1749
1751// RPC (Remote Procedure Calls) and Action API
1753
1758
1774int sr_rpc_subscribe(sr_session_ctx_t *session, const char *xpath, sr_rpc_cb callback, void *private_data,
1775 uint32_t priority, uint32_t opts, sr_subscription_ctx_t **subscription);
1776
1792int sr_rpc_subscribe_tree(sr_session_ctx_t *session, const char *xpath, sr_rpc_tree_cb callback,
1793 void *private_data, uint32_t priority, uint32_t opts, sr_subscription_ctx_t **subscription);
1794
1814int sr_rpc_send(sr_session_ctx_t *session, const char *path, const sr_val_t *input, const size_t input_cnt,
1815 uint32_t timeout_ms, sr_val_t **output, size_t *output_cnt);
1816
1830int sr_rpc_send_tree(sr_session_ctx_t *session, struct lyd_node *input, uint32_t timeout_ms, sr_data_t **output);
1831
1833
1835// Notifications API
1837
1842
1860int sr_notif_subscribe(sr_session_ctx_t *session, const char *module_name, const char *xpath,
1861 const struct timespec *start_time, const struct timespec *stop_time, sr_event_notif_cb callback,
1862 void *private_data, uint32_t opts, sr_subscription_ctx_t **subscription);
1863
1881int sr_notif_subscribe_tree(sr_session_ctx_t *session, const char *module_name, const char *xpath,
1882 const struct timespec *start_time, const struct timespec *stop_time, sr_event_notif_tree_cb callback,
1883 void *private_data, uint32_t opts, sr_subscription_ctx_t **subscription);
1884
1905int sr_notif_send(sr_session_ctx_t *session, const char *path, const sr_val_t *values, const size_t values_cnt,
1906 uint32_t timeout_ms, int wait);
1907
1925int sr_notif_send_tree(sr_session_ctx_t *session, struct lyd_node *notif, uint32_t timeout_ms, int wait);
1926
1939int sr_notif_sub_get_info(sr_subscription_ctx_t *subscription, uint32_t sub_id, const char **module_name,
1940 const char **xpath, struct timespec *start_time, struct timespec *stop_time, uint32_t *filtered_out);
1941
1951int sr_notif_sub_modify_xpath(sr_subscription_ctx_t *subscription, uint32_t sub_id, const char *xpath);
1952
1962int sr_notif_sub_modify_stop_time(sr_subscription_ctx_t *subscription, uint32_t sub_id, const struct timespec *stop_time);
1963
1965
1967// Operational Data API
1969
1974
2003int sr_oper_get_subscribe(sr_session_ctx_t *session, const char *module_name, const char *path,
2004 sr_oper_get_items_cb callback, void *private_data, uint32_t opts, sr_subscription_ctx_t **subscription);
2005
2038int sr_oper_poll_subscribe(sr_session_ctx_t *session, const char *module_name, const char *path, uint32_t valid_ms,
2039 uint32_t opts, sr_subscription_ctx_t **subscription);
2040
2042
2044// sysrepo-plugind Plugin API
2046
2051
2057#define SRP_INIT_CB "sr_plugin_init_cb"
2058
2064#define SRP_CLEANUP_CB "sr_plugin_cleanup_cb"
2065
2077void srplg_log_errinfo(sr_error_info_t **err_info, const char *plg_name, const char *err_format_name,
2078 sr_error_t err_code, const char *format, ...) _FORMAT_PRINTF(5, 6);
2079
2091int srplg_errinfo_push_error_data(sr_error_info_t *err_info, uint32_t size, const void *data);
2092
2099
2104#define SRPLG_LOG_ERR(plg_name, ...) srplg_log(plg_name, SR_LL_ERR, __VA_ARGS__)
2105
2112#define SRPLG_LOG_WRN(plg_name, ...) srplg_log(plg_name, SR_LL_WRN, __VA_ARGS__)
2113
2120#define SRPLG_LOG_INF(plg_name, ...) srplg_log(plg_name, SR_LL_INF, __VA_ARGS__)
2121
2128#define SRPLG_LOG_DBG(plg_name, ...) srplg_log(plg_name, SR_LL_DBG, __VA_ARGS__)
2129
2131
2141void srplg_log(const char *plg_name, sr_log_level_t ll, const char *format, ...) _FORMAT_PRINTF(3, 4);
2142
2143#ifdef __cplusplus
2144}
2145#endif
2146
2147#endif /* _SYSREPO_H */
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_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_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_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, uint32_t opts, sr_subscription_ctx_t **subscription)
Subscribe for changes made in the specified module.
sr_change_oper_t
Type of the operation made on an item, used by changeset retrieval in sr_get_change_next.
const 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 ...
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_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_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....
struct sr_change_iter_s sr_change_iter_t
Iterator used for retrieval of a changeset using sr_get_changes_iter call.
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.
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_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.
void sr_free_change_iter(sr_change_iter_t *iter)
Frees sr_change_iter_t iterator and all memory allocated within it.
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_session_set_error_message(sr_session_ctx_t *session, const char *format,...)
Deprecated, use sr_session_set_error().
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_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....
void sr_release_context(sr_conn_ctx_t *conn)
Release libyang context obtained from a session/connection.
void sr_session_release_context(sr_session_ctx_t *session)
Release libyang context obtained from a session/connection.
void sr_cache_running(int enable)
Enable or disable caching running datastore data for all connections.
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_context_options(uint32_t opts, int apply, uint32_t *prev_opts)
Set options for the YANG context.
LY_ERR sr_ly_ext_data_clb(const struct lysc_ext_instance *ext, const struct lyd_node *parent, void *user_data, void **ext_data, ly_bool *ext_data_free)
Ext data callback for libyang context that can be used by applications for their own context to get t...
uid_t sr_get_su_uid(void)
Get the sysrepo SUPERUSER UID.
int sr_disconnect(sr_conn_ctx_t *conn)
Disconnect from the sysrepo datastore.
int sr_session_unsubscribe(sr_session_ctx_t *session)
Unsubscribe all subscriptions created by this 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.
int sr_session_stop(sr_session_ctx_t *session)
Stop the session and releases resources tied to it.
int sr_connect(const uint32_t opts, sr_conn_ctx_t **conn)
Connects to the sysrepo datastore.
sr_cid_t sr_get_cid(sr_conn_ctx_t *conn)
Get the connection ID.
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_start(sr_conn_ctx_t *conn, const sr_datastore_t datastore, sr_session_ctx_t **session)
Start a new session.
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.
const 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...
sr_datastore_t sr_session_get_ds(sr_session_ctx_t *session)
Learn the datastore a session operates on.
const 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_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_session_get_id(sr_session_ctx_t *session)
Return the assigned session ID of the sysrepo session.
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.
uint32_t sr_session_get_orig_sid(sr_session_ctx_t *session)
Get event originator session ID.
const char * sr_yang_module_dir(void)
Get the directory with internal sysrepo YANG modules.
int sr_session_set_error_format(sr_session_ctx_t *session, const char *error_format)
Deprecated, use sr_session_set_error().
void sr_session_del_orig_data(sr_session_ctx_t *session)
Remove all pushed event originator data.
int sr_filter_subtree2xpath(sr_session_ctx_t *session, const struct lyd_node *subtree, int for_eval, char **xpath_filter)
Transform a subtree filter into an XPath filter.
int sr_session_notif_buffer(sr_session_ctx_t *session)
Use notification buffering for the session.
struct sr_conn_ctx_s sr_conn_ctx_t
Sysrepo connection.
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_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.
const char * sr_session_get_user(sr_session_ctx_t *session)
Get the effective user of a session.
int sr_set_yang_module_dir(const char *path)
Set the directory with internal sysrepo YANG modules.
sr_conn_ctx_t * sr_session_get_connection(sr_session_ctx_t *session)
Get the connection the session was created on.
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_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 ...
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....
int sr_oper_delete_item_str(sr_session_ctx_t *session, const char *path, const char *value, const uint32_t opts)
Deprecated, not supported.
int sr_delete_item(sr_session_ctx_t *session, const char *path, const uint32_t opts)
Prepare to delete the nodes matching the specified xpath. These changes are applied only after callin...
int sr_set_item(sr_session_ctx_t *session, const char *path, const sr_val_t *value, const uint32_t opts)
Prepare to set (create) the value of a leaf, leaf-list, list, or presence container....
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 uint32_t opts)
Prepare to move/create the instance of an user-ordered list or leaf-list to the specified position....
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...
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...
sr_move_position_t
Options for specifying move direction of sr_move_item call.
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_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...
const struct lyd_node * sr_get_changes(sr_session_ctx_t *session)
Retrieve stored changes (prepared, not yet applied).
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...
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.
int sr_set_item_str(sr_session_ctx_t *session, const char *path, const char *value, const char *origin, const uint32_t opts)
Prepare to set (create) the value of a leaf, leaf-list, list, or presence container....
int sr_discard_changes(sr_session_ctx_t *session)
Discard prepared changes made in the current session.
int sr_has_changes(sr_session_ctx_t *session)
Learn whether there are any prepared non-applied changes in the session.
int sr_delete_discard_items(sr_session_ctx_t *session, const char *xpath, const uint32_t opts)
Remove a 'discard-items' node from a push oper data of a session. Usable only for SR_DS_OPERATIONAL d...
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_discard_oper_changes(sr_session_ctx_t *session, const char *module_name, uint32_t timeout_ms)
Discard push operational changes of a module for a session.
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.
Structure that safely wraps libyang data and prevents unexpected context changes.
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_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...
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.
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_data(sr_session_ctx_t *session, const char *xpath, uint32_t max_depth, uint32_t timeout_ms, const uint32_t opts, sr_data_t **data)
Retrieve a tree whose root nodes match the provided XPath. Data are represented as libyang subtrees.
void sr_release_data(sr_data_t *data)
Release SR data structure, whoch consists of freeing the data tree, releasing the context,...
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_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.
int sr_get_items(sr_session_ctx_t *session, const char *xpath, uint32_t timeout_ms, const uint32_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_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_unlock(sr_session_ctx_t *session, const char *module_name)
Unlocks the data of the specified module or the whole datastore.
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.
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.
void sr_log_set_cb(sr_log_cb log_callback)
Sets callback that will be called when a log entry would be populated. By default the callback is cal...
sr_error_t
Sysrepo error codes.
void sr_log_stderr(sr_log_level_t log_level)
Enables / disables / changes log level (verbosity) of logging to standard error output.
sr_log_level_t sr_log_get_cb_level(void)
Learn current log callback log level.
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.
const char * sr_strerror(int err_code)
Returns the error message corresponding to the error code.
void sr_log_set_cb_level(sr_log_level_t log_level)
Enables / disables / changes log level (verbosity) of logging to log callback.
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.
sr_log_level_t
Log levels used to determine if message of certain severity should be printed.
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_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.
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...
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...
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.
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_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, uint32_t opts, sr_subscription_ctx_t **subscription)
Subscribes for the delivery of a notification(s). Data are represented as libyang subtrees.
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, uint32_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_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...
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, uint32_t opts, sr_subscription_ctx_t **subscription)
Start periodic retrieval and caching of operational data at the given path.
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, uint32_t opts, sr_subscription_ctx_t **subscription)
Register for providing operational data at the given path.
int sr_rpc_subscribe_tree(sr_session_ctx_t *session, const char *xpath, sr_rpc_tree_cb callback, void *private_data, uint32_t priority, uint32_t opts, sr_subscription_ctx_t **subscription)
Subscribe for the delivery of an RPC/action. Data are represented as libyang subtrees.
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_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_subscribe(sr_session_ctx_t *session, const char *xpath, sr_rpc_cb callback, void *private_data, uint32_t priority, uint32_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_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.
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.
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_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.
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_enable_module_feature(sr_conn_ctx_t *conn, const char *module_name, const char *feature_name)
Enable a module feature.
const sr_module_ds_t * sr_get_module_ds_default(void)
Get the default datastore plugins.
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_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_disable_module_feature(sr_conn_ctx_t *conn, const char *module_name, const char *feature_name)
Disable a module feature.
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_remove_module(sr_conn_ctx_t *conn, const char *module_name, int force)
Remove an installed module from sysrepo.
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...
const char * sr_get_shm_prefix(void)
Get the common SHM file prefix prepended to all SHM files.
const char * sr_get_repo_path(void)
Get the path (directory) for all persistent sysrepo files.
int sr_set_module_replay_support(sr_conn_ctx_t *conn, const char *module_name, int enable)
Change module replay support.
int sr_get_module_replay_start(sr_conn_ctx_t *conn, const char *module_name, const struct timespec *after, struct timespec *earliest_notif, struct timespec *replay_start)
Learn replay details of a module.
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.
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....
int sr_remove_modules(sr_conn_ctx_t *conn, const char **module_names, int force)
Remove installed modules from sysrepo.
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_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.
const char * sr_get_shm_path(void)
Get the path (directory) for all volatile sysrepo files, created as SHM files.
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.
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 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.
void srplg_errinfo_free(sr_error_info_t **err_info)
Free a superfluous error info.
int sr_subscription_thread_notify(sr_subscription_ctx_t *subscription)
Notify (wake up) a subscription thread signalling there is a new event to process....
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_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_unsubscribe_sub(sr_subscription_ctx_t *subscription, uint32_t sub_id)
Unsubscribe a specific or all the subscriptions in a subscription structure.
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_subscription_get_suspended(sr_subscription_ctx_t *subscription, uint32_t sub_id, int *suspended)
Learn the suspend state of a specific subscription.
int sr_unsubscribe(sr_subscription_ctx_t *subscription)
Unsubscribe all the subscriptions in a subscription structure and free it.
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_thread_suspend(sr_subscription_ctx_t *subscription)
Suspend the default handler thread of a subscription structure. Meaning it will stop handling any eve...
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_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_subscription_thread_resume(sr_subscription_ctx_t *subscription)
Resume the default handler thread of a subscription structure that was suspended previously.
void srplg_log(const char *plg_name, sr_log_level_t ll, const char *format,...) _FORMAT_PRINTF(3
public sysrepo types header
struct sr_session_ctx_s sr_session_ctx_t
Sysrepo session on a connection.
uint32_t sr_cid_t
Connection ID.
sr_datastore_t
Datastores that sysrepo supports. To change which datastore a session operates on,...
Custom datastore implementation config for each datastore and notifications of a module.
Information about a module to be installed.
Structure that contains value of an data element stored in the sysrepo datastore.
A single, detailed error message. Used in sr_error_info_t.
Detailed sysrepo session error information.