confd: Add helper to get the diff being applied as a libyang tree

This commit is contained in:
Tobias Waldekranz
2023-05-12 14:24:41 +02:00
committed by Joachim Wiberg
parent 6e39b3dbf6
commit a5b4c04d08
2 changed files with 21 additions and 0 deletions
+19
View File
@@ -3,6 +3,25 @@
#include <stdarg.h>
#include "core.h"
sr_error_t srx_get_diff(sr_session_ctx_t *session, struct lyd_node **treep)
{
sr_error_t err = SR_ERR_OK;
sr_change_iter_t *iter;
struct lyd_node *tree;
err = sr_dup_changes_iter(session, "/ietf-system:system//.", &iter);
/* WARNING: sr_change_iter_t is opaque, we rely on the diff
* tree being the first member. */
tree = *((struct lyd_node **)iter);
if (lyd_dup_single(tree, NULL, LYD_DUP_RECURSIVE, treep))
err = SR_ERR_LY;
sr_free_change_iter(iter);
return err;
}
int srx_set_item(sr_session_ctx_t *session, const sr_val_t *val, sr_edit_options_t opts,
const char *fmt, ...)
{
+2
View File
@@ -8,6 +8,8 @@
#define SRX_GET_UINT8(s,v,fmt,...) srx_get_int(s, &v, SR_UINT8_T, fmt, ##__VA_ARGS__)
#define SRX_GET_UINT32(s,v,fmt,...) srx_get_int(s, &v, SR_UINT32_T, fmt, ##__VA_ARGS__)
sr_error_t srx_get_diff(sr_session_ctx_t *session, struct lyd_node **treep);
int srx_set_item(sr_session_ctx_t *session, const sr_val_t *val, sr_edit_options_t opts,
const char *fmt, ...) __attribute__ ((format (printf, 4, 5)));