]> git.puffer.fish Git - mirror/frr.git/commitdiff
lib: add NOTIF message ops (notification, replace, delete, patch)
authorChristian Hopps <chopps@labn.net>
Mon, 6 Jan 2025 12:39:39 +0000 (07:39 -0500)
committerChristian Hopps <chopps@labn.net>
Tue, 7 Jan 2025 10:34:06 +0000 (05:34 -0500)
- needed for supporting backend datastore notifications

Signed-off-by: Christian Hopps <chopps@labn.net>
lib/mgmt_be_client.h
lib/mgmt_msg_native.h

index 6ed8c2a39f0a5184d1bad6f85b26379058943703..a3e3896d52954896e89f19374bc0ec0b9dcc2847 100644 (file)
@@ -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).
  *
index 587a00280122983ab1bdca0ef8d35cbe746205e5..4076977a225bd2ad3e0a76dde7ecf5810794df00 100644 (file)
@@ -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