summaryrefslogtreecommitdiff
path: root/lib/mgmt_be_client.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mgmt_be_client.c')
-rw-r--r--lib/mgmt_be_client.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/mgmt_be_client.c b/lib/mgmt_be_client.c
index 6530022db8..e2a720acb7 100644
--- a/lib/mgmt_be_client.c
+++ b/lib/mgmt_be_client.c
@@ -964,13 +964,21 @@ static void be_client_handle_notify(struct mgmt_be_client *client, void *msgbuf,
{
struct mgmt_msg_notify_data *notif_msg = msgbuf;
struct mgmt_be_client_notification_cb *cb;
- const char *notif;
+ char notif[XPATH_MAXLEN];
+ struct lyd_node *dnode;
+ LY_ERR err;
uint i;
debug_be_client("Received notification for client %s", client->name);
- /* "{\"modname:notification-name\": ...}" */
- notif = (const char *)notif_msg->result + 2;
+ err = yang_parse_notification(notif_msg->result_type,
+ (char *)notif_msg->result, &dnode);
+ if (err)
+ return;
+
+ lysc_path(dnode->schema, LYSC_PATH_DATA, notif, sizeof(notif));
+
+ lyd_free_all(dnode);
for (i = 0; i < client->cbs.nnotify_cbs; i++) {
cb = &client->cbs.notify_cbs[i];