summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorChristian Hopps <chopps@labn.net>2025-01-06 07:39:39 -0500
committerChristian Hopps <chopps@labn.net>2025-01-07 05:34:06 -0500
commit30777991c0771d80347c3842a286582260e4598c (patch)
tree7caab65ef5a543298e3356e817cfe9099b44d4dc /lib
parent86fdf0198cba52a425fcb242872cf9f39f652a24 (diff)
lib: add NOTIF message ops (notification, replace, delete, patch)
- needed for supporting backend datastore notifications Signed-off-by: Christian Hopps <chopps@labn.net>
Diffstat (limited to 'lib')
-rw-r--r--lib/mgmt_be_client.h16
-rw-r--r--lib/mgmt_msg_native.h13
2 files changed, 26 insertions, 3 deletions
diff --git a/lib/mgmt_be_client.h b/lib/mgmt_be_client.h
index 6ed8c2a39f..a3e3896d52 100644
--- a/lib/mgmt_be_client.h
+++ b/lib/mgmt_be_client.h
@@ -112,6 +112,22 @@ extern struct mgmt_be_client *
mgmt_be_client_create(const char *name, struct mgmt_be_client_cbs *cbs,
uintptr_t user_data, struct event_loop *event_loop);
+
+/**
+ * mgmt_be_send_ds_delete_notification() - Send a datastore delete notification.
+ */
+extern int mgmt_be_send_ds_delete_notification(const char *path);
+
+/**
+ * mgmt_be_send_ds_patch_notification() - Send a datastore YANG patch notification.
+ */
+extern int mgmt_be_send_ds_patch_notification(const char *path, const struct lyd_node *tree);
+
+/**
+ * mgmt_be_send_ds_replace_notification() - Send a datastore replace notification.
+ */
+extern int mgmt_be_send_ds_replace_notification(const char *path, const struct lyd_node *tree);
+
/*
* Initialize library vty (adds debug support).
*
diff --git a/lib/mgmt_msg_native.h b/lib/mgmt_msg_native.h
index 587a002801..4076977a22 100644
--- a/lib/mgmt_msg_native.h
+++ b/lib/mgmt_msg_native.h
@@ -323,22 +323,29 @@ _Static_assert(sizeof(struct mgmt_msg_get_data) ==
offsetof(struct mgmt_msg_get_data, xpath),
"Size mismatch");
+
+#define NOTIFY_OP_NOTIFICATION 0
+#define NOTIFY_OP_DS_REPLACE 1
+#define NOTIFY_OP_DS_DELETE 2
+#define NOTIFY_OP_DS_PATCH 3
+
/**
* struct mgmt_msg_notify_data - Message carrying notification data.
*
* @result_type: ``LYD_FORMAT`` for format of the @result value.
* @data: The xpath string of the notification followed by the tree data in
* @result_type format.
+ * @op: notify operation type.
*/
struct mgmt_msg_notify_data {
struct mgmt_msg_header;
uint8_t result_type;
- uint8_t resv2[7];
+ uint8_t op;
+ uint8_t resv2[6];
alignas(8) char data[];
};
-_Static_assert(sizeof(struct mgmt_msg_notify_data) ==
- offsetof(struct mgmt_msg_notify_data, data),
+_Static_assert(sizeof(struct mgmt_msg_notify_data) == offsetof(struct mgmt_msg_notify_data, data),
"Size mismatch");
#define EDIT_FLAG_IMPLICIT_LOCK 0x01