diff options
author | Igor Ryzhov <iryzhov@nfware.com> | 2024-01-13 21:34:17 +0100 |
---|---|---|
committer | Igor Ryzhov <iryzhov@nfware.com> | 2024-01-14 19:00:22 +0100 |
commit | 25d79af9578ba339b105c3d65c9706ae17419527 (patch) | |
tree | fff4c0b539cf86c28baa9df302304c196614d198 /lib | |
parent | vtysh, mgmtd: send interface commands to mgmtd (diff) | |
download | frr-25d79af9578ba339b105c3d65c9706ae17419527.tar.xz frr-25d79af9578ba339b105c3d65c9706ae17419527.zip |
lib, mgmtd: add separate get-data request for the frontend
Currently it's the same as get-tree request for the backend, but it is
going to be expanded in the following commits.
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/mgmt_fe_client.c | 14 | ||||
-rw-r--r-- | lib/mgmt_fe_client.h | 4 | ||||
-rw-r--r-- | lib/mgmt_msg_native.c | 1 | ||||
-rw-r--r-- | lib/mgmt_msg_native.h | 21 | ||||
-rw-r--r-- | lib/vty.c | 10 | ||||
-rw-r--r-- | lib/vty.h | 2 |
6 files changed, 36 insertions, 16 deletions
diff --git a/lib/mgmt_fe_client.c b/lib/mgmt_fe_client.c index 0bea66300..16559c610 100644 --- a/lib/mgmt_fe_client.c +++ b/lib/mgmt_fe_client.c @@ -306,25 +306,25 @@ int mgmt_fe_send_regnotify_req(struct mgmt_fe_client *client, } /* - * Send get-tree request. + * Send get-data request. */ -int mgmt_fe_send_get_tree_req(struct mgmt_fe_client *client, +int mgmt_fe_send_get_data_req(struct mgmt_fe_client *client, uint64_t session_id, uint64_t req_id, LYD_FORMAT result_type, const char *xpath) { - struct mgmt_msg_get_tree *msg; + struct mgmt_msg_get_data *msg; size_t xplen = strlen(xpath); int ret; - msg = mgmt_msg_native_alloc_msg(struct mgmt_msg_get_tree, xplen + 1, - MTYPE_MSG_NATIVE_GET_TREE); + msg = mgmt_msg_native_alloc_msg(struct mgmt_msg_get_data, xplen + 1, + MTYPE_MSG_NATIVE_GET_DATA); msg->refer_id = session_id; msg->req_id = req_id; - msg->code = MGMT_MSG_CODE_GET_TREE; + msg->code = MGMT_MSG_CODE_GET_DATA; msg->result_type = result_type; strlcpy(msg->xpath, xpath, xplen + 1); - MGMTD_FE_CLIENT_DBG("Sending GET_TREE_REQ session-id %" PRIu64 + MGMTD_FE_CLIENT_DBG("Sending GET_DATA_REQ session-id %" PRIu64 " req-id %" PRIu64 " xpath: %s", session_id, req_id, xpath); diff --git a/lib/mgmt_fe_client.h b/lib/mgmt_fe_client.h index f3292d18f..95e73ca59 100644 --- a/lib/mgmt_fe_client.h +++ b/lib/mgmt_fe_client.h @@ -367,7 +367,7 @@ extern int mgmt_fe_send_regnotify_req(struct mgmt_fe_client *client, int num_reqs); /* - * Send GET-TREE to MGMTD daemon. + * Send GET-DATA to MGMTD daemon. * * client * Client object. @@ -387,7 +387,7 @@ extern int mgmt_fe_send_regnotify_req(struct mgmt_fe_client *client, * Returns: * 0 on success, otherwise msg_conn_send_msg() return values. */ -extern int mgmt_fe_send_get_tree_req(struct mgmt_fe_client *client, +extern int mgmt_fe_send_get_data_req(struct mgmt_fe_client *client, uint64_t session_id, uint64_t req_id, LYD_FORMAT result_type, const char *xpath); diff --git a/lib/mgmt_msg_native.c b/lib/mgmt_msg_native.c index b6dc126d4..a9b26718d 100644 --- a/lib/mgmt_msg_native.c +++ b/lib/mgmt_msg_native.c @@ -13,6 +13,7 @@ DEFINE_MTYPE(MSG_NATIVE, MSG_NATIVE_MSG, "native mgmt msg"); DEFINE_MTYPE(MSG_NATIVE, MSG_NATIVE_ERROR, "native error msg"); DEFINE_MTYPE(MSG_NATIVE, MSG_NATIVE_GET_TREE, "native get tree msg"); DEFINE_MTYPE(MSG_NATIVE, MSG_NATIVE_TREE_DATA, "native tree data msg"); +DEFINE_MTYPE(MSG_NATIVE, MSG_NATIVE_GET_DATA, "native get data msg"); int vmgmt_msg_native_send_error(struct msg_conn *conn, uint64_t sess_or_txn_id, uint64_t req_id, bool short_circuit_ok, diff --git a/lib/mgmt_msg_native.h b/lib/mgmt_msg_native.h index 3f6283025..93ff6f012 100644 --- a/lib/mgmt_msg_native.h +++ b/lib/mgmt_msg_native.h @@ -142,6 +142,7 @@ DECLARE_MTYPE(MSG_NATIVE_MSG); DECLARE_MTYPE(MSG_NATIVE_ERROR); DECLARE_MTYPE(MSG_NATIVE_GET_TREE); DECLARE_MTYPE(MSG_NATIVE_TREE_DATA); +DECLARE_MTYPE(MSG_NATIVE_GET_DATA); /* * Native message codes @@ -149,6 +150,7 @@ DECLARE_MTYPE(MSG_NATIVE_TREE_DATA); #define MGMT_MSG_CODE_ERROR 0 #define MGMT_MSG_CODE_GET_TREE 1 #define MGMT_MSG_CODE_TREE_DATA 2 +#define MGMT_MSG_CODE_GET_DATA 3 /** * struct mgmt_msg_header - Header common to all native messages. @@ -193,7 +195,7 @@ _Static_assert(sizeof(struct mgmt_msg_error) == "Size mismatch"); /** - * struct mgmt_msg_get_tree - Message carrying xpath query request. + * struct mgmt_msg_get_tree - backend oper data request. * * @result_type: ``LYD_FORMAT`` for the returned result. * @xpath: the query for the data to return. @@ -231,6 +233,23 @@ _Static_assert(sizeof(struct mgmt_msg_tree_data) == offsetof(struct mgmt_msg_tree_data, result), "Size mismatch"); +/** + * struct mgmt_msg_get_data - frontend get-data request. + * + * @result_type: ``LYD_FORMAT`` for the returned result. + * @xpath: the query for the data to return. + */ +struct mgmt_msg_get_data { + struct mgmt_msg_header; + uint8_t result_type; + uint8_t resv2[7]; + + alignas(8) char xpath[]; +}; +_Static_assert(sizeof(struct mgmt_msg_get_data) == + offsetof(struct mgmt_msg_get_data, xpath), + "Size mismatch"); + #define MGMT_MSG_VALIDATE_NUL_TERM(msgp, len) \ ((len) >= sizeof(*msg) + 1 && ((char *)msgp)[(len)-1] == 0) @@ -4105,23 +4105,23 @@ int vty_mgmt_send_get_req(struct vty *vty, bool is_config, return 0; } -int vty_mgmt_send_get_tree_req(struct vty *vty, LYD_FORMAT result_type, +int vty_mgmt_send_get_data_req(struct vty *vty, LYD_FORMAT result_type, const char *xpath) { LYD_FORMAT intern_format = result_type; vty->mgmt_req_id++; - if (mgmt_fe_send_get_tree_req(mgmt_fe_client, vty->mgmt_session_id, + if (mgmt_fe_send_get_data_req(mgmt_fe_client, vty->mgmt_session_id, vty->mgmt_req_id, intern_format, xpath)) { - zlog_err("Failed to send GET-TREE to MGMTD session-id: %" PRIu64 + zlog_err("Failed to send GET-DATA to MGMTD session-id: %" PRIu64 " req-id %" PRIu64 ".", vty->mgmt_session_id, vty->mgmt_req_id); - vty_out(vty, "Failed to send GET-TREE to MGMTD!\n"); + vty_out(vty, "Failed to send GET-DATA to MGMTD!\n"); return -1; } - vty->mgmt_req_pending_cmd = "MESSAGE_GET_TREE_REQ"; + vty->mgmt_req_pending_cmd = "MESSAGE_GET_DATA_REQ"; vty->mgmt_req_pending_data = result_type; return 0; @@ -420,7 +420,7 @@ extern int vty_mgmt_send_commit_config(struct vty *vty, bool validate_only, extern int vty_mgmt_send_get_req(struct vty *vty, bool is_config, Mgmtd__DatastoreId datastore, const char **xpath_list, int num_req); -extern int vty_mgmt_send_get_tree_req(struct vty *vty, LYD_FORMAT result_type, +extern int vty_mgmt_send_get_data_req(struct vty *vty, LYD_FORMAT result_type, const char *xpath); extern int vty_mgmt_send_lockds_req(struct vty *vty, Mgmtd__DatastoreId ds_id, bool lock, bool scok); |