]> git.puffer.fish Git - mirror/frr.git/commitdiff
mgmtd: consolidate getcfg and getdata msgs into "get"
authorChristian Hopps <chopps@labn.net>
Tue, 27 Jun 2023 17:58:54 +0000 (13:58 -0400)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Thu, 29 Jun 2023 22:15:11 +0000 (22:15 +0000)
eliminates tons of copy and paste code.

Signed-off-by: Christian Hopps <chopps@labn.net>
(cherry picked from commit dbb1bc6f355ae53ce1f2402a1ac196e9f9e18a42)

lib/mgmt.proto
lib/mgmt_fe_client.c
lib/mgmt_fe_client.h
lib/vty.c
lib/vty.h
mgmtd/mgmt_fe_adapter.c
mgmtd/mgmt_fe_adapter.h
mgmtd/mgmt_txn.c
mgmtd/mgmt_txn.h
mgmtd/mgmt_vty.c

index ac44eefd9e245c2dbaada83eebe4f2c0abdb5711..14d00fa10064e0930dc5c2f1c8e5410ea99f4d04 100644 (file)
@@ -267,36 +267,22 @@ message FeCommitConfigReply {
   optional string error_if_any = 8;
 }
 
-message FeGetConfigReq {
+message FeGetReq {
   required uint64 session_id = 1;
-  required DatastoreId ds_id = 2;
-  required uint64 req_id = 3;
-  repeated YangGetDataReq data = 4;
-}
-
-message FeGetConfigReply {
-  required uint64 session_id = 1;
-  required DatastoreId ds_id = 2;
-  required uint64 req_id = 3;
-  required bool success = 4;
-  optional string error_if_any = 5;
-  optional YangDataReply data = 6;
-}
-
-message FeGetDataReq {
-  required uint64 session_id = 1;
-  required DatastoreId ds_id = 2;
-  required uint64 req_id = 3;
-  repeated YangGetDataReq data = 4;
+  required bool config = 2;
+  required DatastoreId ds_id = 3;
+  required uint64 req_id = 4;
+  repeated YangGetDataReq data = 5;
 }
 
-message FeGetDataReply {
+message FeGetReply {
   required uint64 session_id = 1;
-  required DatastoreId ds_id = 2;
-  required uint64 req_id = 3;
-  required bool success = 4;
-  optional string error_if_any = 5;
-  optional YangDataReply data = 6;
+  required bool config = 2;
+  required DatastoreId ds_id = 3;
+  required uint64 req_id = 4;
+  required bool success = 5;
+  optional string error_if_any = 6;
+  optional YangDataReply data = 7;
 }
 
 message FeNotifyDataReq {
@@ -322,10 +308,8 @@ message FeMessage {
     FeSetConfigReply setcfg_reply = 8;
     FeCommitConfigReq commcfg_req = 9;
     FeCommitConfigReply commcfg_reply = 10;
-    FeGetConfigReq getcfg_req = 11;
-    FeGetConfigReply getcfg_reply = 12;
-    FeGetDataReq getdata_req = 13;
-    FeGetDataReply getdata_reply = 14;
+    FeGetReq get_req = 11;
+    FeGetReply get_reply = 12;
     FeNotifyDataReq notify_data_req = 15;
     FeRegisterNotifyReq regnotify_req = 16;
   }
index 45d57175d62950ee7e11a1dd00605769ce680493..da19db463f37453d6feadd866051e08f2cf14514 100644 (file)
@@ -247,58 +247,31 @@ int mgmt_fe_send_commitcfg_req(struct mgmt_fe_client *client,
        return mgmt_fe_client_send_msg(client, &fe_msg, false);
 }
 
-int mgmt_fe_send_getcfg_req(struct mgmt_fe_client *client, uint64_t session_id,
-                           uint64_t req_id, Mgmtd__DatastoreId ds_id,
-                           Mgmtd__YangGetDataReq *data_req[],
-                           int num_data_reqs)
+int mgmt_fe_send_get_req(struct mgmt_fe_client *client, uint64_t session_id,
+                        uint64_t req_id, bool is_config,
+                        Mgmtd__DatastoreId ds_id,
+                        Mgmtd__YangGetDataReq *data_req[], int num_data_reqs)
 {
        (void)req_id;
        Mgmtd__FeMessage fe_msg;
-       Mgmtd__FeGetConfigReq getcfg_req;
+       Mgmtd__FeGetReq getcfg_req;
 
-       mgmtd__fe_get_config_req__init(&getcfg_req);
+       mgmtd__fe_get_req__init(&getcfg_req);
        getcfg_req.session_id = session_id;
+       getcfg_req.config = is_config;
        getcfg_req.ds_id = ds_id;
        getcfg_req.req_id = req_id;
        getcfg_req.data = data_req;
        getcfg_req.n_data = (size_t)num_data_reqs;
 
        mgmtd__fe_message__init(&fe_msg);
-       fe_msg.message_case = MGMTD__FE_MESSAGE__MESSAGE_GETCFG_REQ;
-       fe_msg.getcfg_req = &getcfg_req;
+       fe_msg.message_case = MGMTD__FE_MESSAGE__MESSAGE_GET_REQ;
+       fe_msg.get_req = &getcfg_req;
 
-       MGMTD_FE_CLIENT_DBG(
-               "Sending GET_CONFIG_REQ message for DS:%s session-id %" PRIu64
-               " (#xpaths:%d)",
-               dsid2name(ds_id), session_id, num_data_reqs);
-
-       return mgmt_fe_client_send_msg(client, &fe_msg, false);
-}
-
-int mgmt_fe_send_getdata_req(struct mgmt_fe_client *client, uint64_t session_id,
-                            uint64_t req_id, Mgmtd__DatastoreId ds_id,
-                            Mgmtd__YangGetDataReq *data_req[],
-                            int num_data_reqs)
-{
-       (void)req_id;
-       Mgmtd__FeMessage fe_msg;
-       Mgmtd__FeGetDataReq getdata_req;
-
-       mgmtd__fe_get_data_req__init(&getdata_req);
-       getdata_req.session_id = session_id;
-       getdata_req.ds_id = ds_id;
-       getdata_req.req_id = req_id;
-       getdata_req.data = data_req;
-       getdata_req.n_data = (size_t)num_data_reqs;
-
-       mgmtd__fe_message__init(&fe_msg);
-       fe_msg.message_case = MGMTD__FE_MESSAGE__MESSAGE_GETDATA_REQ;
-       fe_msg.getdata_req = &getdata_req;
-
-       MGMTD_FE_CLIENT_DBG(
-               "Sending GET_CONFIG_REQ message for DS:%s session-id %" PRIu64
-               " (#xpaths:%d)",
-               dsid2name(ds_id), session_id, num_data_reqs);
+       MGMTD_FE_CLIENT_DBG("Sending GET_REQ (iscfg %d) message for DS:%s session-id %" PRIu64
+                           " (#xpaths:%d)",
+                           is_config, dsid2name(ds_id), session_id,
+                           num_data_reqs);
 
        return mgmt_fe_client_send_msg(client, &fe_msg, false);
 }
@@ -434,58 +407,33 @@ static int mgmt_fe_client_handle_msg(struct mgmt_fe_client *client,
                                fe_msg->commcfg_reply->validate_only,
                                fe_msg->commcfg_reply->error_if_any);
                break;
-       case MGMTD__FE_MESSAGE__MESSAGE_GETCFG_REPLY:
-               MGMTD_FE_CLIENT_DBG("Got GETCFG_REPLY for session-id %" PRIu64,
-                                   fe_msg->getcfg_reply->session_id);
+       case MGMTD__FE_MESSAGE__MESSAGE_GET_REPLY:
+               MGMTD_FE_CLIENT_DBG("Got GET_REPLY for session-id %" PRIu64,
+                                   fe_msg->get_reply->session_id);
 
-               session = mgmt_fe_find_session_by_session_id(
-                       client, fe_msg->getcfg_reply->session_id);
+               session =
+                       mgmt_fe_find_session_by_session_id(client,
+                                                          fe_msg->get_reply
+                                                                  ->session_id);
 
                if (session && session->client &&
                    session->client->cbs.get_data_notify)
                        (*session->client->cbs.get_data_notify)(
                                client, client->user_data, session->client_id,
-                               fe_msg->getcfg_reply->session_id,
-                               session->user_ctx, fe_msg->getcfg_reply->req_id,
-                               fe_msg->getcfg_reply->success,
-                               fe_msg->getcfg_reply->ds_id,
-                               fe_msg->getcfg_reply->data
-                                       ? fe_msg->getcfg_reply->data->data
-                                       : NULL,
-                               fe_msg->getcfg_reply->data
-                                       ? fe_msg->getcfg_reply->data->n_data
-                                       : 0,
-                               fe_msg->getcfg_reply->data
-                                       ? fe_msg->getcfg_reply->data->next_indx
-                                       : 0,
-                               fe_msg->getcfg_reply->error_if_any);
-               break;
-       case MGMTD__FE_MESSAGE__MESSAGE_GETDATA_REPLY:
-               MGMTD_FE_CLIENT_DBG("Got GETDATA_REPLY for session-id %" PRIu64,
-                                   fe_msg->getdata_reply->session_id);
-
-               session = mgmt_fe_find_session_by_session_id(
-                       client, fe_msg->getdata_reply->session_id);
-
-               if (session && session->client &&
-                   session->client->cbs.get_data_notify)
-                       (*session->client->cbs.get_data_notify)(
-                               client, client->user_data, session->client_id,
-                               fe_msg->getdata_reply->session_id,
-                               session->user_ctx,
-                               fe_msg->getdata_reply->req_id,
-                               fe_msg->getdata_reply->success,
-                               fe_msg->getdata_reply->ds_id,
-                               fe_msg->getdata_reply->data
-                                       ? fe_msg->getdata_reply->data->data
+                               fe_msg->get_reply->session_id,
+                               session->user_ctx, fe_msg->get_reply->req_id,
+                               fe_msg->get_reply->success,
+                               fe_msg->get_reply->ds_id,
+                               fe_msg->get_reply->data
+                                       ? fe_msg->get_reply->data->data
                                        : NULL,
-                               fe_msg->getdata_reply->data
-                                       ? fe_msg->getdata_reply->data->n_data
+                               fe_msg->get_reply->data
+                                       ? fe_msg->get_reply->data->n_data
                                        : 0,
-                               fe_msg->getdata_reply->data
-                                       ? fe_msg->getdata_reply->data->next_indx
+                               fe_msg->get_reply->data
+                                       ? fe_msg->get_reply->data->next_indx
                                        : 0,
-                               fe_msg->getdata_reply->error_if_any);
+                               fe_msg->get_reply->error_if_any);
                break;
        case MGMTD__FE_MESSAGE__MESSAGE_NOTIFY_DATA_REQ:
        case MGMTD__FE_MESSAGE__MESSAGE_REGNOTIFY_REQ:
@@ -502,8 +450,7 @@ static int mgmt_fe_client_handle_msg(struct mgmt_fe_client *client,
        case MGMTD__FE_MESSAGE__MESSAGE_LOCKDS_REQ:
        case MGMTD__FE_MESSAGE__MESSAGE_SETCFG_REQ:
        case MGMTD__FE_MESSAGE__MESSAGE_COMMCFG_REQ:
-       case MGMTD__FE_MESSAGE__MESSAGE_GETCFG_REQ:
-       case MGMTD__FE_MESSAGE__MESSAGE_GETDATA_REQ:
+       case MGMTD__FE_MESSAGE__MESSAGE_GET_REQ:
        case MGMTD__FE_MESSAGE__MESSAGE__NOT_SET:
        default:
                /*
index 532fee43972929431dc2cb686adf78751056c1b5..286141da443a94597c0706c1a2099b3ccfd464e9 100644 (file)
@@ -294,7 +294,10 @@ extern int mgmt_fe_send_commitcfg_req(struct mgmt_fe_client *client,
                                      bool validate_only, bool abort);
 
 /*
- * Send GET_CONFIG_REQ to MGMTD for one or more config data item(s).
+ * Send GET_REQ to MGMTD for one or more config data item(s).
+ *
+ * If is_config is true gets config from the MGMTD datastore, otherwise
+ * operational state is queried from the backend clients.
  *
  * lib_hndl
  *    Client library handler.
@@ -302,6 +305,9 @@ extern int mgmt_fe_send_commitcfg_req(struct mgmt_fe_client *client,
  * session_id
  *    Client session ID.
  *
+ * is_config
+ *    True if get-config else get-data.
+ *
  * req_id
  *    Client request ID.
  *
@@ -309,31 +315,19 @@ extern int mgmt_fe_send_commitcfg_req(struct mgmt_fe_client *client,
  *    Datastore ID (Running/Candidate)
  *
  * data_req
- *    Get config requested.
+ *    Get xpaths requested.
  *
  * num_req
- *    Number of get config requests.
+ *    Number of get xpath requests.
  *
  * Returns:
  *    0 on success, otherwise msg_conn_send_msg() return values.
  */
-extern int mgmt_fe_send_getcfg_req(struct mgmt_fe_client *client,
-                                  uint64_t session_id, uint64_t req_id,
-                                  Mgmtd__DatastoreId ds_id,
-                                  Mgmtd__YangGetDataReq **data_req,
-                                  int num_reqs);
+extern int mgmt_fe_send_get_req(struct mgmt_fe_client *client,
+                               uint64_t session_id, uint64_t req_id,
+                               bool is_config, Mgmtd__DatastoreId ds_id,
+                               Mgmtd__YangGetDataReq **data_req, int num_reqs);
 
-/*
- * Send GET_DATA_REQ to MGMTD for one or more data item(s).
- *
- * Similar to get config request but supports getting data
- * from operational ds aka backend clients directly.
- */
-extern int mgmt_fe_send_getdata_req(struct mgmt_fe_client *client,
-                                   uint64_t session_id, uint64_t req_id,
-                                   Mgmtd__DatastoreId ds_id,
-                                   Mgmtd__YangGetDataReq **data_req,
-                                   int num_reqs);
 
 /*
  * Send NOTIFY_REGISTER_REQ to MGMTD daemon.
index fc6bed6a0a43526c6f583a62de2bdb645c870a54..c9de00a2713dde69b0d3d64e23e94e51b4899485 100644 (file)
--- a/lib/vty.c
+++ b/lib/vty.c
@@ -3822,8 +3822,9 @@ int vty_mgmt_send_commit_config(struct vty *vty, bool validate_only, bool abort)
        return 0;
 }
 
-int vty_mgmt_send_get_config(struct vty *vty, Mgmtd__DatastoreId datastore,
-                            const char **xpath_list, int num_req)
+int vty_mgmt_send_get_req(struct vty *vty, bool is_config,
+                         Mgmtd__DatastoreId datastore, const char **xpath_list,
+                         int num_req)
 {
        Mgmtd__YangData yang_data[VTY_MAXCFGCHANGES];
        Mgmtd__YangGetDataReq get_req[VTY_MAXCFGCHANGES];
@@ -3841,13 +3842,11 @@ int vty_mgmt_send_get_config(struct vty *vty, Mgmtd__DatastoreId datastore,
                get_req[i].data = &yang_data[i];
                getreq[i] = &get_req[i];
        }
-       if (mgmt_fe_send_getcfg_req(mgmt_fe_client, vty->mgmt_session_id,
-                                   vty->mgmt_req_id, datastore, getreq,
-                                   num_req)) {
-               zlog_err(
-                       "Failed to send GET-CONFIG to MGMTD for req-id %" PRIu64
-                       ".",
-                       vty->mgmt_req_id);
+       if (mgmt_fe_send_get_req(mgmt_fe_client, vty->mgmt_session_id,
+                                vty->mgmt_req_id, is_config, datastore, getreq,
+                                num_req)) {
+               zlog_err("Failed to send GET- to MGMTD for req-id %" PRIu64 ".",
+                        vty->mgmt_req_id);
                vty_out(vty, "Failed to send GET-CONFIG to MGMTD!\n");
                return -1;
        }
@@ -3857,40 +3856,6 @@ int vty_mgmt_send_get_config(struct vty *vty, Mgmtd__DatastoreId datastore,
        return 0;
 }
 
-int vty_mgmt_send_get_data(struct vty *vty, Mgmtd__DatastoreId datastore,
-                          const char **xpath_list, int num_req)
-{
-       Mgmtd__YangData yang_data[VTY_MAXCFGCHANGES];
-       Mgmtd__YangGetDataReq get_req[VTY_MAXCFGCHANGES];
-       Mgmtd__YangGetDataReq *getreq[VTY_MAXCFGCHANGES];
-       int i;
-
-       vty->mgmt_req_id++;
-
-       for (i = 0; i < num_req; i++) {
-               mgmt_yang_get_data_req_init(&get_req[i]);
-               mgmt_yang_data_init(&yang_data[i]);
-
-               yang_data->xpath = (char *)xpath_list[i];
-
-               get_req[i].data = &yang_data[i];
-               getreq[i] = &get_req[i];
-       }
-       if (mgmt_fe_send_getdata_req(mgmt_fe_client, vty->mgmt_session_id,
-                                    vty->mgmt_req_id, datastore, getreq,
-                                    num_req)) {
-               zlog_err("Failed to send GET-DATA to MGMTD for req-id %" PRIu64
-                        ".",
-                        vty->mgmt_req_id);
-               vty_out(vty, "Failed to send GET-DATA to MGMTD!\n");
-               return -1;
-       }
-
-       vty->mgmt_req_pending_cmd = "MESSAGE_GETDATA_REQ";
-
-       return 0;
-}
-
 /* Install vty's own commands like `who' command. */
 void vty_init(struct event_loop *master_thread, bool do_command_logging)
 {
index 8fb1483e5b6da0c1e48ba6c42b79e1a5d297add6..ac3d2e5019592635e037d245f004801dcb1d45a6 100644 (file)
--- a/lib/vty.h
+++ b/lib/vty.h
@@ -411,11 +411,9 @@ extern bool mgmt_vty_read_configs(void);
 extern int vty_mgmt_send_config_data(struct vty *vty, bool implicit_commit);
 extern int vty_mgmt_send_commit_config(struct vty *vty, bool validate_only,
                                       bool abort);
-extern int vty_mgmt_send_get_config(struct vty *vty,
-                                   Mgmtd__DatastoreId datastore,
-                                   const char **xpath_list, int num_req);
-extern int vty_mgmt_send_get_data(struct vty *vty, Mgmtd__DatastoreId datastore,
-                                 const char **xpath_list, int num_req);
+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_lockds_req(struct vty *vty, Mgmtd__DatastoreId ds_id,
                                    bool lock, bool scok);
 extern void vty_mgmt_resume_response(struct vty *vty, bool success);
index 70c08d5cb40fa655cacb86ea1a49a94ea71aebc1..c12d8646b17c5b71043b66f86f43c6f58652a5be 100644 (file)
@@ -273,9 +273,8 @@ mgmt_fe_create_session(struct mgmt_fe_client_adapter *adapter,
        return session;
 }
 
-static int mgmt_fe_adapter_send_msg(struct mgmt_fe_client_adapter *adapter,
-                                   Mgmtd__FeMessage *fe_msg,
-                                   bool short_circuit_ok)
+static int fe_adapter_send_msg(struct mgmt_fe_client_adapter *adapter,
+                              Mgmtd__FeMessage *fe_msg, bool short_circuit_ok)
 {
        return msg_conn_send_msg(
                adapter->conn, MGMT_MSG_VERSION_PROTOBUF, fe_msg,
@@ -284,10 +283,9 @@ static int mgmt_fe_adapter_send_msg(struct mgmt_fe_client_adapter *adapter,
                short_circuit_ok);
 }
 
-static int
-mgmt_fe_send_session_reply(struct mgmt_fe_client_adapter *adapter,
-                              struct mgmt_fe_session_ctx *session,
-                              bool create, bool success)
+static int fe_adapter_send_session_reply(struct mgmt_fe_client_adapter *adapter,
+                                        struct mgmt_fe_session_ctx *session,
+                                        bool create, bool success)
 {
        Mgmtd__FeMessage fe_msg;
        Mgmtd__FeSessionReply session_reply;
@@ -309,13 +307,13 @@ mgmt_fe_send_session_reply(struct mgmt_fe_client_adapter *adapter,
                "Sending SESSION_REPLY message to MGMTD Frontend client '%s'",
                adapter->name);
 
-       return mgmt_fe_adapter_send_msg(adapter, &fe_msg, true);
+       return fe_adapter_send_msg(adapter, &fe_msg, true);
 }
 
-static int mgmt_fe_send_lockds_reply(struct mgmt_fe_session_ctx *session,
-                                        Mgmtd__DatastoreId ds_id,
-                                        uint64_t req_id, bool lock_ds,
-                                        bool success, const char *error_if_any)
+static int fe_adapter_send_lockds_reply(struct mgmt_fe_session_ctx *session,
+                                       Mgmtd__DatastoreId ds_id,
+                                       uint64_t req_id, bool lock_ds,
+                                       bool success, const char *error_if_any)
 {
        Mgmtd__FeMessage fe_msg;
        Mgmtd__FeLockDsReply lockds_reply;
@@ -340,10 +338,10 @@ static int mgmt_fe_send_lockds_reply(struct mgmt_fe_session_ctx *session,
                "Sending LOCK_DS_REPLY message to MGMTD Frontend client '%s' scok: %d",
                session->adapter->name, scok);
 
-       return mgmt_fe_adapter_send_msg(session->adapter, &fe_msg, scok);
+       return fe_adapter_send_msg(session->adapter, &fe_msg, scok);
 }
 
-static int mgmt_fe_send_setcfg_reply(struct mgmt_fe_session_ctx *session,
+static int fe_adapter_send_set_cfg_reply(struct mgmt_fe_session_ctx *session,
                                         Mgmtd__DatastoreId ds_id,
                                         uint64_t req_id, bool success,
                                         const char *error_if_any,
@@ -387,10 +385,10 @@ static int mgmt_fe_send_setcfg_reply(struct mgmt_fe_session_ctx *session,
                gettimeofday(&session->adapter->setcfg_stats.last_end, NULL);
        mgmt_fe_adapter_compute_set_cfg_timers(&session->adapter->setcfg_stats);
 
-       return mgmt_fe_adapter_send_msg(session->adapter, &fe_msg, false);
+       return fe_adapter_send_msg(session->adapter, &fe_msg, false);
 }
 
-static int mgmt_fe_send_commitcfg_reply(
+static int fe_adapter_send_commit_cfg_reply(
        struct mgmt_fe_session_ctx *session, Mgmtd__DatastoreId src_ds_id,
        Mgmtd__DatastoreId dst_ds_id, uint64_t req_id, enum mgmt_result result,
        bool validate_only, const char *error_if_any)
@@ -433,83 +431,43 @@ static int mgmt_fe_send_commitcfg_reply(
        if (mm->perf_stats_en)
                gettimeofday(&session->adapter->cmt_stats.last_end, NULL);
        mgmt_fe_session_compute_commit_timers(&session->adapter->cmt_stats);
-       return mgmt_fe_adapter_send_msg(session->adapter, &fe_msg, false);
-}
-
-static int mgmt_fe_send_getcfg_reply(struct mgmt_fe_session_ctx *session,
-                                        Mgmtd__DatastoreId ds_id,
-                                        uint64_t req_id, bool success,
-                                        Mgmtd__YangDataReply *data,
-                                        const char *error_if_any)
-{
-       Mgmtd__FeMessage fe_msg;
-       Mgmtd__FeGetConfigReply getcfg_reply;
-
-       assert(session->adapter);
-
-       mgmtd__fe_get_config_reply__init(&getcfg_reply);
-       getcfg_reply.session_id = session->session_id;
-       getcfg_reply.ds_id = ds_id;
-       getcfg_reply.req_id = req_id;
-       getcfg_reply.success = success;
-       getcfg_reply.data = data;
-       if (error_if_any)
-               getcfg_reply.error_if_any = (char *)error_if_any;
-
-       mgmtd__fe_message__init(&fe_msg);
-       fe_msg.message_case = MGMTD__FE_MESSAGE__MESSAGE_GETCFG_REPLY;
-       fe_msg.getcfg_reply = &getcfg_reply;
-
-       MGMTD_FE_ADAPTER_DBG(
-               "Sending GET_CONFIG_REPLY message to MGMTD Frontend client '%s'",
-               session->adapter->name);
-
-       /*
-        * Cleanup the SHOW transaction associated with this session.
-        */
-       if (session->txn_id && (!success || (data && data->next_indx < 0)))
-               mgmt_fe_session_register_event(
-                       session, MGMTD_FE_SESSION_SHOW_TXN_CLNUP);
-
-       return mgmt_fe_adapter_send_msg(session->adapter, &fe_msg, false);
+       return fe_adapter_send_msg(session->adapter, &fe_msg, false);
 }
 
-static int mgmt_fe_send_getdata_reply(struct mgmt_fe_session_ctx *session,
-                                         Mgmtd__DatastoreId ds_id,
-                                         uint64_t req_id, bool success,
-                                         Mgmtd__YangDataReply *data,
-                                         const char *error_if_any)
+static int fe_adapter_send_get_reply(struct mgmt_fe_session_ctx *session,
+                                    Mgmtd__DatastoreId ds_id, uint64_t req_id,
+                                    bool success, Mgmtd__YangDataReply *data,
+                                    const char *error_if_any)
 {
        Mgmtd__FeMessage fe_msg;
-       Mgmtd__FeGetDataReply getdata_reply;
+       Mgmtd__FeGetReply get_reply;
 
        assert(session->adapter);
 
-       mgmtd__fe_get_data_reply__init(&getdata_reply);
-       getdata_reply.session_id = session->session_id;
-       getdata_reply.ds_id = ds_id;
-       getdata_reply.req_id = req_id;
-       getdata_reply.success = success;
-       getdata_reply.data = data;
+       mgmtd__fe_get_reply__init(&get_reply);
+       get_reply.session_id = session->session_id;
+       get_reply.ds_id = ds_id;
+       get_reply.req_id = req_id;
+       get_reply.success = success;
+       get_reply.data = data;
        if (error_if_any)
-               getdata_reply.error_if_any = (char *)error_if_any;
+               get_reply.error_if_any = (char *)error_if_any;
 
        mgmtd__fe_message__init(&fe_msg);
-       fe_msg.message_case = MGMTD__FE_MESSAGE__MESSAGE_GETDATA_REPLY;
-       fe_msg.getdata_reply = &getdata_reply;
+       fe_msg.message_case = MGMTD__FE_MESSAGE__MESSAGE_GET_REPLY;
+       fe_msg.get_reply = &get_reply;
 
-       MGMTD_FE_ADAPTER_DBG(
-               "Sending GET_DATA_REPLY message to MGMTD Frontend client '%s'",
-               session->adapter->name);
+       MGMTD_FE_ADAPTER_DBG("Sending GET_REPLY message to MGMTD Frontend client '%s'",
+                            session->adapter->name);
 
        /*
         * Cleanup the SHOW transaction associated with this session.
         */
        if (session->txn_id && (!success || (data && data->next_indx < 0)))
-               mgmt_fe_session_register_event(
-                       session, MGMTD_FE_SESSION_SHOW_TXN_CLNUP);
+               mgmt_fe_session_register_event(session,
+                                              MGMTD_FE_SESSION_SHOW_TXN_CLNUP);
 
-       return mgmt_fe_adapter_send_msg(session->adapter, &fe_msg, false);
+       return fe_adapter_send_msg(session->adapter, &fe_msg, false);
 }
 
 static void mgmt_fe_session_cfg_txn_clnup(struct event *thread)
@@ -562,19 +520,6 @@ mgmt_fe_find_adapter_by_fd(int conn_fd)
        return NULL;
 }
 
-static struct mgmt_fe_client_adapter *
-mgmt_fe_find_adapter_by_name(const char *name)
-{
-       struct mgmt_fe_client_adapter *adapter;
-
-       FOREACH_ADAPTER_IN_LIST (adapter) {
-               if (!strncmp(adapter->name, name, sizeof(adapter->name)))
-                       return adapter;
-       }
-
-       return NULL;
-}
-
 static void mgmt_fe_adapter_delete(struct mgmt_fe_client_adapter *adapter)
 {
        struct mgmt_fe_session_ctx *session;
@@ -631,7 +576,7 @@ mgmt_fe_session_handle_lockds_req_msg(struct mgmt_fe_session_ctx *session,
 
        if (lockds_req->ds_id != MGMTD_DS_CANDIDATE &&
            lockds_req->ds_id != MGMTD_DS_RUNNING) {
-               mgmt_fe_send_lockds_reply(
+               fe_adapter_send_lockds_reply(
                        session, lockds_req->ds_id, lockds_req->req_id,
                        lockds_req->lock, false,
                        "Lock/Unlock on DS other than candidate or running DS not supported");
@@ -640,10 +585,10 @@ mgmt_fe_session_handle_lockds_req_msg(struct mgmt_fe_session_ctx *session,
 
        ds_ctx = mgmt_ds_get_ctx_by_id(mm, lockds_req->ds_id);
        if (!ds_ctx) {
-               mgmt_fe_send_lockds_reply(
-                       session, lockds_req->ds_id, lockds_req->req_id,
-                       lockds_req->lock, false,
-                       "Failed to retrieve handle for DS!");
+               fe_adapter_send_lockds_reply(session, lockds_req->ds_id,
+                                            lockds_req->req_id,
+                                            lockds_req->lock, false,
+                                            "Failed to retrieve handle for DS!");
                return -1;
        }
 
@@ -651,7 +596,7 @@ mgmt_fe_session_handle_lockds_req_msg(struct mgmt_fe_session_ctx *session,
                if (mgmt_fe_session_write_lock_ds(lockds_req->ds_id,
                                                      ds_ctx, session)
                    != 0) {
-                       mgmt_fe_send_lockds_reply(
+                       fe_adapter_send_lockds_reply(
                                session, lockds_req->ds_id, lockds_req->req_id,
                                lockds_req->lock, false,
                                "Lock already taken on DS by another session!");
@@ -659,7 +604,7 @@ mgmt_fe_session_handle_lockds_req_msg(struct mgmt_fe_session_ctx *session,
                }
        } else {
                if (!session->ds_locked[lockds_req->ds_id]) {
-                       mgmt_fe_send_lockds_reply(
+                       fe_adapter_send_lockds_reply(
                                session, lockds_req->ds_id, lockds_req->req_id,
                                lockds_req->lock, false,
                                "Lock on DS was not taken by this session!");
@@ -669,10 +614,9 @@ mgmt_fe_session_handle_lockds_req_msg(struct mgmt_fe_session_ctx *session,
                mgmt_fe_session_unlock_ds(lockds_req->ds_id, ds_ctx, session);
        }
 
-       if (mgmt_fe_send_lockds_reply(session, lockds_req->ds_id,
-                                          lockds_req->req_id, lockds_req->lock,
-                                          true, NULL)
-           != 0) {
+       if (fe_adapter_send_lockds_reply(session, lockds_req->ds_id,
+                                        lockds_req->req_id, lockds_req->lock,
+                                        true, NULL) != 0) {
                MGMTD_FE_ADAPTER_DBG(
                        "Failed to send LOCK_DS_REPLY for DS %u session-id: %" PRIu64
                        " from %s",
@@ -700,7 +644,7 @@ mgmt_fe_session_handle_setcfg_req_msg(struct mgmt_fe_session_ctx *session,
 
        /* MGMTD currently only supports editing the candidate DS. */
        if (setcfg_req->ds_id != MGMTD_DS_CANDIDATE) {
-               mgmt_fe_send_setcfg_reply(
+               fe_adapter_send_set_cfg_reply(
                        session, setcfg_req->ds_id, setcfg_req->req_id, false,
                        "Set-Config on datastores other than Candidate DS not supported",
                        setcfg_req->implicit_commit);
@@ -712,7 +656,7 @@ mgmt_fe_session_handle_setcfg_req_msg(struct mgmt_fe_session_ctx *session,
        /* MGMTD currently only supports targetting the running DS. */
        if (setcfg_req->implicit_commit &&
            setcfg_req->commit_ds_id != MGMTD_DS_RUNNING) {
-               mgmt_fe_send_setcfg_reply(
+               fe_adapter_send_set_cfg_reply(
                        session, setcfg_req->ds_id, setcfg_req->req_id, false,
                        "Implicit commit on datastores other than running DS not supported",
                        setcfg_req->implicit_commit);
@@ -723,10 +667,10 @@ mgmt_fe_session_handle_setcfg_req_msg(struct mgmt_fe_session_ctx *session,
 
        /* User should have write lock to change the DS */
        if (!session->ds_locked[setcfg_req->ds_id]) {
-               mgmt_fe_send_setcfg_reply(session, setcfg_req->ds_id,
-                                         setcfg_req->req_id, false,
-                                         "Candidate DS is not locked",
-                                         setcfg_req->implicit_commit);
+               fe_adapter_send_set_cfg_reply(session, setcfg_req->ds_id,
+                                             setcfg_req->req_id, false,
+                                             "Candidate DS is not locked",
+                                             setcfg_req->implicit_commit);
                return 0;
        }
 
@@ -738,7 +682,7 @@ mgmt_fe_session_handle_setcfg_req_msg(struct mgmt_fe_session_ctx *session,
                session->cfg_txn_id = mgmt_create_txn(session->session_id,
                                                      MGMTD_TXN_TYPE_CONFIG);
                if (session->cfg_txn_id == MGMTD_SESSION_ID_NONE) {
-                       mgmt_fe_send_setcfg_reply(
+                       fe_adapter_send_set_cfg_reply(
                                session, setcfg_req->ds_id, setcfg_req->req_id,
                                false,
                                "Failed to create a Configuration session!",
@@ -761,7 +705,7 @@ mgmt_fe_session_handle_setcfg_req_msg(struct mgmt_fe_session_ctx *session,
                         * In this scenario need to skip cleanup of the txn,
                         * so setting implicit commit to false.
                         */
-                       mgmt_fe_send_setcfg_reply(
+                       fe_adapter_send_set_cfg_reply(
                                session, setcfg_req->ds_id, setcfg_req->req_id,
                                false,
                                "A Configuration transaction is already in progress!",
@@ -771,16 +715,16 @@ mgmt_fe_session_handle_setcfg_req_msg(struct mgmt_fe_session_ctx *session,
        }
 
        /* Create the SETConfig request under the transaction. */
-       if (mgmt_txn_send_set_config_req(
-                   session->cfg_txn_id, setcfg_req->req_id, setcfg_req->ds_id,
-                   ds_ctx, setcfg_req->data, setcfg_req->n_data,
-                   setcfg_req->implicit_commit, setcfg_req->commit_ds_id,
-                   dst_ds_ctx)
-           != 0) {
-               mgmt_fe_send_setcfg_reply(
-                       session, setcfg_req->ds_id, setcfg_req->req_id, false,
-                       "Request processing for SET-CONFIG failed!",
-                       setcfg_req->implicit_commit);
+       if (mgmt_txn_send_set_config_req(session->cfg_txn_id, setcfg_req->req_id,
+                                        setcfg_req->ds_id, ds_ctx,
+                                        setcfg_req->data, setcfg_req->n_data,
+                                        setcfg_req->implicit_commit,
+                                        setcfg_req->commit_ds_id,
+                                        dst_ds_ctx) != 0) {
+               fe_adapter_send_set_cfg_reply(session, setcfg_req->ds_id,
+                                             setcfg_req->req_id, false,
+                                             "Request processing for SET-CONFIG failed!",
+                                             setcfg_req->implicit_commit);
 
                /* delete transaction if we just created it */
                if (txn_created)
@@ -790,33 +734,27 @@ mgmt_fe_session_handle_setcfg_req_msg(struct mgmt_fe_session_ctx *session,
        return 0;
 }
 
-static int
-mgmt_fe_session_handle_getcfg_req_msg(struct mgmt_fe_session_ctx *session,
-                                         Mgmtd__FeGetConfigReq *getcfg_req)
+static int mgmt_fe_session_handle_get_req_msg(struct mgmt_fe_session_ctx *session,
+                                             Mgmtd__FeGetReq *get_req)
 {
        struct mgmt_ds_ctx *ds_ctx;
        struct nb_config *cfg_root = NULL;
-
-       /*
-        * Get the DS handle.
-        */
-       ds_ctx = mgmt_ds_get_ctx_by_id(mm, getcfg_req->ds_id);
-       if (!ds_ctx) {
-               mgmt_fe_send_getcfg_reply(session, getcfg_req->ds_id,
-                                             getcfg_req->req_id, false, NULL,
-                                             "No such DS exists!");
-               return 0;
-       }
-
-       /* GETCFG must be on candidate or running DS */
-       if (getcfg_req->ds_id != MGMTD_DS_CANDIDATE
-           && getcfg_req->ds_id != MGMTD_DS_RUNNING) {
-               mgmt_fe_send_getcfg_reply(
-                       session, getcfg_req->ds_id, getcfg_req->req_id, false,
-                       NULL,
-                       "Get-Config on datastores other than Candidate or Running DS not permitted!");
+       Mgmtd__DatastoreId ds_id = get_req->ds_id;
+       uint64_t req_id = get_req->req_id;
+       bool is_cfg = get_req->config;
+       bool ds_ok = true;
+
+       if (is_cfg && ds_id != MGMTD_DS_CANDIDATE && ds_id != MGMTD_DS_RUNNING)
+               ds_ok = false;
+       else if (!is_cfg && ds_id != MGMTD_DS_OPERATIONAL)
+               ds_ok = false;
+       if (!ds_ok) {
+               fe_adapter_send_get_reply(session, ds_id, req_id, false, NULL,
+                                         "get-req on unsupported datastore");
                return 0;
        }
+       ds_ctx = mgmt_ds_get_ctx_by_id(mm, ds_id);
+       assert(ds_ctx);
 
        if (session->txn_id == MGMTD_TXN_ID_NONE) {
                /*
@@ -825,44 +763,43 @@ mgmt_fe_session_handle_getcfg_req_msg(struct mgmt_fe_session_ctx *session,
                session->txn_id = mgmt_create_txn(session->session_id,
                                                  MGMTD_TXN_TYPE_SHOW);
                if (session->txn_id == MGMTD_SESSION_ID_NONE) {
-                       mgmt_fe_send_getcfg_reply(
-                               session, getcfg_req->ds_id, getcfg_req->req_id,
-                               false, NULL,
-                               "Failed to create a Show transaction!");
-                       goto mgmt_fe_sess_handle_getcfg_req_failed;
+                       fe_adapter_send_get_reply(session, ds_id, req_id, false,
+                                                 NULL,
+                                                 "Failed to create a Show transaction!");
+                       return -1;
                }
 
                MGMTD_FE_ADAPTER_DBG("Created new show txn-id: %" PRIu64
                                     " for session-id: %" PRIu64,
                                     session->txn_id, session->session_id);
        } else {
-               MGMTD_FE_ADAPTER_DBG("Show txn-id: %" PRIu64
-                                    " for session-id: %" PRIu64
-                                    " already created",
+               fe_adapter_send_get_reply(session, ds_id, req_id, false, NULL,
+                                         "Request processing for GET failed!");
+               MGMTD_FE_ADAPTER_DBG("Transaction in progress txn-id: %" PRIu64
+                                    " for session-id: %" PRIu64,
                                     session->txn_id, session->session_id);
+               return -1;
        }
 
        /*
         * Get a copy of the datastore config root, avoids locking.
         */
-       cfg_root = nb_config_dup(mgmt_ds_get_nb_config(ds_ctx));
+       if (is_cfg)
+               cfg_root = nb_config_dup(mgmt_ds_get_nb_config(ds_ctx));
 
        /*
-        * Create a GETConfig request under the transaction.
+        * Create a GET request under the transaction.
         */
-       if (mgmt_txn_send_get_config_req(
-                   session->txn_id, getcfg_req->req_id, getcfg_req->ds_id,
-                   cfg_root, getcfg_req->data, getcfg_req->n_data) != 0) {
-               mgmt_fe_send_getcfg_reply(
-                       session, getcfg_req->ds_id, getcfg_req->req_id, false,
-                       NULL, "Request processing for GET-CONFIG failed!");
-               goto mgmt_fe_sess_handle_getcfg_req_failed;
+       if (mgmt_txn_send_get_req(session->txn_id, req_id, ds_id, cfg_root,
+                                 get_req->data, get_req->n_data)) {
+               fe_adapter_send_get_reply(session, ds_id, req_id, false, NULL,
+                                         "Request processing for GET failed!");
+
+               goto failed;
        }
 
        return 0;
-
-mgmt_fe_sess_handle_getcfg_req_failed:
-
+failed:
        if (cfg_root)
                nb_config_free(cfg_root);
        /*
@@ -874,79 +811,6 @@ mgmt_fe_sess_handle_getcfg_req_failed:
        return -1;
 }
 
-static int
-mgmt_fe_session_handle_getdata_req_msg(struct mgmt_fe_session_ctx *session,
-                                          Mgmtd__FeGetDataReq *getdata_req)
-{
-       struct mgmt_ds_ctx *ds_ctx;
-
-       /*
-        * Get the DS handle.
-        */
-       ds_ctx = mgmt_ds_get_ctx_by_id(mm, getdata_req->ds_id);
-       if (!ds_ctx) {
-               mgmt_fe_send_getdata_reply(session, getdata_req->ds_id,
-                                              getdata_req->req_id, false, NULL,
-                                              "No such DS exists!");
-               return 0;
-       }
-
-       /* GETDATA must be on operational DS */
-       if (getdata_req->ds_id != MGMTD_DS_OPERATIONAL) {
-               mgmt_fe_send_getdata_reply(
-                       session, getdata_req->ds_id, getdata_req->req_id, false,
-                       NULL,
-                       "Get-Data on datastore other than Operational DS not permitted!");
-               return 0;
-       }
-
-       if (session->txn_id == MGMTD_TXN_ID_NONE) {
-               /*
-                * Start a SHOW Transaction (if not started already)
-                */
-               session->txn_id = mgmt_create_txn(session->session_id,
-                                                 MGMTD_TXN_TYPE_SHOW);
-               if (session->txn_id == MGMTD_SESSION_ID_NONE) {
-                       mgmt_fe_send_getdata_reply(
-                               session, getdata_req->ds_id,
-                               getdata_req->req_id, false, NULL,
-                               "Failed to create a Show transaction!");
-                       goto mgmt_fe_sess_handle_getdata_req_failed;
-               }
-
-               MGMTD_FE_ADAPTER_DBG("Created new Show Txn %" PRIu64
-                                    " for session %" PRIu64,
-                                    session->txn_id, session->session_id);
-       } else {
-               MGMTD_FE_ADAPTER_DBG("Show txn-id: %" PRIu64
-                                    " for session %" PRIu64 " already created",
-                                    session->txn_id, session->session_id);
-       }
-
-       /*
-        * Create a GETData request under the transaction.
-        */
-       if (mgmt_txn_send_get_data_req(session->txn_id, getdata_req->req_id,
-                                      getdata_req->ds_id, getdata_req->data,
-                                      getdata_req->n_data) != 0) {
-               mgmt_fe_send_getdata_reply(
-                       session, getdata_req->ds_id, getdata_req->req_id, false,
-                       NULL, "Request processing for GET-CONFIG failed!");
-               goto mgmt_fe_sess_handle_getdata_req_failed;
-       }
-
-       return 0;
-
-mgmt_fe_sess_handle_getdata_req_failed:
-
-       /*
-        * Destroy the transaction created recently.
-        */
-       if (session->txn_id != MGMTD_TXN_ID_NONE)
-               mgmt_destroy_txn(&session->txn_id);
-
-       return -1;
-}
 
 static int mgmt_fe_session_handle_commit_config_req_msg(
        struct mgmt_fe_session_ctx *session,
@@ -961,7 +825,7 @@ static int mgmt_fe_session_handle_commit_config_req_msg(
        /* Validate source and dest DS */
        if (commcfg_req->src_ds_id != MGMTD_DS_CANDIDATE ||
            commcfg_req->dst_ds_id != MGMTD_DS_RUNNING) {
-               mgmt_fe_send_commitcfg_reply(
+               fe_adapter_send_commit_cfg_reply(
                        session, commcfg_req->src_ds_id, commcfg_req->dst_ds_id,
                        commcfg_req->req_id, MGMTD_INTERNAL_ERROR,
                        commcfg_req->validate_only,
@@ -976,7 +840,7 @@ static int mgmt_fe_session_handle_commit_config_req_msg(
        /* User should have lock on both source and dest DS */
        if (!session->ds_locked[commcfg_req->dst_ds_id] ||
            !session->ds_locked[commcfg_req->src_ds_id]) {
-               mgmt_fe_send_commitcfg_reply(
+               fe_adapter_send_commit_cfg_reply(
                        session, commcfg_req->src_ds_id, commcfg_req->dst_ds_id,
                        commcfg_req->req_id, MGMTD_DS_LOCK_FAILED,
                        commcfg_req->validate_only,
@@ -991,11 +855,10 @@ static int mgmt_fe_session_handle_commit_config_req_msg(
                session->cfg_txn_id = mgmt_create_txn(session->session_id,
                                                MGMTD_TXN_TYPE_CONFIG);
                if (session->cfg_txn_id == MGMTD_SESSION_ID_NONE) {
-                       mgmt_fe_send_commitcfg_reply(
+                       fe_adapter_send_commit_cfg_reply(
                                session, commcfg_req->src_ds_id,
                                commcfg_req->dst_ds_id, commcfg_req->req_id,
-                               MGMTD_INTERNAL_ERROR,
-                               commcfg_req->validate_only,
+                               MGMTD_INTERNAL_ERROR, commcfg_req->validate_only,
                                "Failed to create a Configuration session!");
                        return 0;
                }
@@ -1013,7 +876,7 @@ static int mgmt_fe_session_handle_commit_config_req_msg(
                    commcfg_req->src_ds_id, src_ds_ctx, commcfg_req->dst_ds_id,
                    dst_ds_ctx, commcfg_req->validate_only, commcfg_req->abort,
                    false) != 0) {
-               mgmt_fe_send_commitcfg_reply(
+               fe_adapter_send_commit_cfg_reply(
                        session, commcfg_req->src_ds_id, commcfg_req->dst_ds_id,
                        commcfg_req->req_id, MGMTD_INTERNAL_ERROR,
                        commcfg_req->validate_only,
@@ -1058,8 +921,8 @@ mgmt_fe_adapter_handle_msg(struct mgmt_fe_client_adapter *adapter,
 
                        session = mgmt_fe_create_session(
                                adapter, fe_msg->session_req->client_conn_id);
-                       mgmt_fe_send_session_reply(adapter, session, true,
-                                                      session ? true : false);
+                       fe_adapter_send_session_reply(adapter, session, true,
+                                                     session ? true : false);
                } else if (
                        !fe_msg->session_req->create
                        && fe_msg->session_req->id_case
@@ -1071,8 +934,8 @@ mgmt_fe_adapter_handle_msg(struct mgmt_fe_client_adapter *adapter,
 
                        session = mgmt_session_id2ctx(
                                fe_msg->session_req->session_id);
-                       mgmt_fe_send_session_reply(adapter, session, false,
-                                                      true);
+                       fe_adapter_send_session_reply(adapter, session, false,
+                                                     true);
                        mgmt_fe_cleanup_session(&session);
                }
                break;
@@ -1116,29 +979,15 @@ mgmt_fe_adapter_handle_msg(struct mgmt_fe_client_adapter *adapter,
                mgmt_fe_session_handle_commit_config_req_msg(
                        session, fe_msg->commcfg_req);
                break;
-       case MGMTD__FE_MESSAGE__MESSAGE_GETCFG_REQ:
-               session = mgmt_session_id2ctx(
-                               fe_msg->getcfg_req->session_id);
-               MGMTD_FE_ADAPTER_DBG(
-                       "Got GETCFG_REQ for DS:%s (xpaths: %d) on session-id %" PRIu64
-                       " from '%s'",
-                       mgmt_ds_id2name(fe_msg->getcfg_req->ds_id),
-                       (int)fe_msg->getcfg_req->n_data,
-                       fe_msg->getcfg_req->session_id, adapter->name);
-               mgmt_fe_session_handle_getcfg_req_msg(
-                       session, fe_msg->getcfg_req);
-               break;
-       case MGMTD__FE_MESSAGE__MESSAGE_GETDATA_REQ:
-               session = mgmt_session_id2ctx(
-                               fe_msg->getdata_req->session_id);
-               MGMTD_FE_ADAPTER_DBG(
-                       "Got GETDATA_REQ for DS:%s (xpaths: %d) on session-id %" PRIu64
-                       " from '%s'",
-                       mgmt_ds_id2name(fe_msg->getdata_req->ds_id),
-                       (int)fe_msg->getdata_req->n_data,
-                       fe_msg->getdata_req->session_id, adapter->name);
-               mgmt_fe_session_handle_getdata_req_msg(
-                       session, fe_msg->getdata_req);
+       case MGMTD__FE_MESSAGE__MESSAGE_GET_REQ:
+               session = mgmt_session_id2ctx(fe_msg->get_req->session_id);
+               MGMTD_FE_ADAPTER_DBG("Got GET_REQ (iscfg %d) for DS:%s (xpaths: %d) on session-id %" PRIu64
+                                    " from '%s'",
+                                    (int)fe_msg->get_req->config,
+                                    mgmt_ds_id2name(fe_msg->get_req->ds_id),
+                                    (int)fe_msg->get_req->n_data,
+                                    fe_msg->get_req->session_id, adapter->name);
+               mgmt_fe_session_handle_get_req_msg(session, fe_msg->get_req);
                break;
        case MGMTD__FE_MESSAGE__MESSAGE_NOTIFY_DATA_REQ:
        case MGMTD__FE_MESSAGE__MESSAGE_REGNOTIFY_REQ:
@@ -1157,8 +1006,7 @@ mgmt_fe_adapter_handle_msg(struct mgmt_fe_client_adapter *adapter,
        case MGMTD__FE_MESSAGE__MESSAGE_LOCKDS_REPLY:
        case MGMTD__FE_MESSAGE__MESSAGE_SETCFG_REPLY:
        case MGMTD__FE_MESSAGE__MESSAGE_COMMCFG_REPLY:
-       case MGMTD__FE_MESSAGE__MESSAGE_GETCFG_REPLY:
-       case MGMTD__FE_MESSAGE__MESSAGE_GETDATA_REPLY:
+       case MGMTD__FE_MESSAGE__MESSAGE_GET_REPLY:
        case MGMTD__FE_MESSAGE__MESSAGE__NOT_SET:
        default:
                /*
@@ -1293,11 +1141,6 @@ struct msg_conn *mgmt_fe_create_adapter(int conn_fd, union sockunion *from)
        return adapter->conn;
 }
 
-struct mgmt_fe_client_adapter *mgmt_fe_get_adapter(const char *name)
-{
-       return mgmt_fe_find_adapter_by_name(name);
-}
-
 int mgmt_fe_send_set_cfg_reply(uint64_t session_id, uint64_t txn_id,
                                   Mgmtd__DatastoreId ds_id, uint64_t req_id,
                                   enum mgmt_result result,
@@ -1316,9 +1159,10 @@ int mgmt_fe_send_set_cfg_reply(uint64_t session_id, uint64_t txn_id,
                return -1;
        }
 
-       return mgmt_fe_send_setcfg_reply(
-               session, ds_id, req_id, result == MGMTD_SUCCESS ? true : false,
-               error_if_any, implicit_commit);
+       return fe_adapter_send_set_cfg_reply(session, ds_id, req_id,
+                                            result == MGMTD_SUCCESS ? true
+                                                                    : false,
+                                            error_if_any, implicit_commit);
 }
 
 int mgmt_fe_send_commit_cfg_reply(uint64_t session_id, uint64_t txn_id,
@@ -1334,16 +1178,16 @@ int mgmt_fe_send_commit_cfg_reply(uint64_t session_id, uint64_t txn_id,
        if (!session || session->cfg_txn_id != txn_id)
                return -1;
 
-       return mgmt_fe_send_commitcfg_reply(session, src_ds_id, dst_ds_id,
+       return fe_adapter_send_commit_cfg_reply(session, src_ds_id, dst_ds_id,
                                                req_id, result, validate_only,
                                                error_if_any);
 }
 
-int mgmt_fe_send_get_cfg_reply(uint64_t session_id, uint64_t txn_id,
-                                  Mgmtd__DatastoreId ds_id, uint64_t req_id,
-                                  enum mgmt_result result,
-                                  Mgmtd__YangDataReply *data_resp,
-                                  const char *error_if_any)
+int mgmt_fe_send_get_reply(uint64_t session_id, uint64_t txn_id,
+                          Mgmtd__DatastoreId ds_id, uint64_t req_id,
+                          enum mgmt_result result,
+                          Mgmtd__YangDataReply *data_resp,
+                          const char *error_if_any)
 {
        struct mgmt_fe_session_ctx *session;
 
@@ -1351,34 +1195,9 @@ int mgmt_fe_send_get_cfg_reply(uint64_t session_id, uint64_t txn_id,
        if (!session || session->txn_id != txn_id)
                return -1;
 
-       return mgmt_fe_send_getcfg_reply(session, ds_id, req_id,
-                                            result == MGMTD_SUCCESS, data_resp,
-                                            error_if_any);
-}
-
-int mgmt_fe_send_get_data_reply(uint64_t session_id, uint64_t txn_id,
-                                   Mgmtd__DatastoreId ds_id, uint64_t req_id,
-                                   enum mgmt_result result,
-                                   Mgmtd__YangDataReply *data_resp,
-                                   const char *error_if_any)
-{
-       struct mgmt_fe_session_ctx *session;
-
-       session = mgmt_session_id2ctx(session_id);
-       if (!session || session->txn_id != txn_id)
-               return -1;
-
-       return mgmt_fe_send_getdata_reply(session, ds_id, req_id,
-                                             result == MGMTD_SUCCESS,
-                                             data_resp, error_if_any);
-}
-
-int mgmt_fe_send_data_notify(Mgmtd__DatastoreId ds_id,
-                                Mgmtd__YangData * data_resp[], int num_data)
-{
-       /* struct mgmt_fe_session_ctx *session; */
-
-       return 0;
+       return fe_adapter_send_get_reply(session, ds_id, req_id,
+                                        result == MGMTD_SUCCESS, data_resp,
+                                        error_if_any);
 }
 
 struct mgmt_setcfg_stats *
index fef205f36a9ebb264ad91325a5134d6487a5496f..d2991ec1dbd0cc5df43e34f0681f07d0faa61c04 100644 (file)
@@ -87,10 +87,6 @@ mgmt_fe_adapter_unlock(struct mgmt_fe_client_adapter **adapter);
 extern struct msg_conn *mgmt_fe_create_adapter(int conn_fd,
                                               union sockunion *su);
 
-/* Fetch frontend adapter given a name */
-extern struct mgmt_fe_client_adapter *
-mgmt_fe_get_adapter(const char *name);
-
 /*
  * Send set-config reply to the frontend client.
  *
@@ -134,29 +130,13 @@ extern int mgmt_fe_send_commit_cfg_reply(
        enum mgmt_result result, const char *error_if_any);
 
 /*
- * Send get-config reply to the frontend client.
- */
-extern int mgmt_fe_send_get_cfg_reply(uint64_t session_id, uint64_t txn_id,
-                                         Mgmtd__DatastoreId ds_id,
-                                         uint64_t req_id,
-                                         enum mgmt_result result,
-                                         Mgmtd__YangDataReply *data_resp,
-                                         const char *error_if_any);
-
-/*
- * Send get-data reply to the frontend client.
- */
-extern int mgmt_fe_send_get_data_reply(
-       uint64_t session_id, uint64_t txn_id, Mgmtd__DatastoreId ds_id,
-       uint64_t req_id, enum mgmt_result result,
-       Mgmtd__YangDataReply *data_resp, const char *error_if_any);
-
-/*
- * Send data notify to the frontend client.
+ * Send get-config/get-data reply to the frontend client.
  */
-extern int mgmt_fe_send_data_notify(Mgmtd__DatastoreId ds_id,
-                                       Mgmtd__YangData * data_resp[],
-                                       int num_data);
+extern int mgmt_fe_send_get_reply(uint64_t session_id, uint64_t txn_id,
+                                 Mgmtd__DatastoreId ds_id, uint64_t req_id,
+                                 enum mgmt_result result,
+                                 Mgmtd__YangDataReply *data_resp,
+                                 const char *error_if_any);
 
 /* Fetch frontend client session set-config stats */
 extern struct mgmt_setcfg_stats *
index d3f321807d0225f6c609405d1521012ccb4629b2..eff3b7e34c1e15b821d0f51a18deb67c86ea0671 100644 (file)
@@ -1659,11 +1659,10 @@ static void mgmt_txn_send_getcfg_reply_data(struct mgmt_txn_req *txn_req,
 
        switch (txn_req->req_event) {
        case MGMTD_TXN_PROC_GETCFG:
-               if (mgmt_fe_send_get_cfg_reply(txn_req->txn->session_id,
-                                              txn_req->txn->txn_id,
-                                              get_req->ds_id, txn_req->req_id,
-                                              MGMTD_SUCCESS, data_reply,
-                                              NULL) != 0) {
+               if (mgmt_fe_send_get_reply(txn_req->txn->session_id,
+                                          txn_req->txn->txn_id, get_req->ds_id,
+                                          txn_req->req_id, MGMTD_SUCCESS,
+                                          data_reply, NULL) != 0) {
                        MGMTD_TXN_ERR("Failed to send GET-CONFIG-REPLY txn-id: %" PRIu64
                                      " session-id: %" PRIu64
                                      " req-id: %" PRIu64,
@@ -1672,11 +1671,10 @@ static void mgmt_txn_send_getcfg_reply_data(struct mgmt_txn_req *txn_req,
                }
                break;
        case MGMTD_TXN_PROC_GETDATA:
-               if (mgmt_fe_send_get_data_reply(txn_req->txn->session_id,
-                                               txn_req->txn->txn_id,
-                                               get_req->ds_id, txn_req->req_id,
-                                               MGMTD_SUCCESS, data_reply,
-                                               NULL) != 0) {
+               if (mgmt_fe_send_get_reply(txn_req->txn->session_id,
+                                          txn_req->txn->txn_id, get_req->ds_id,
+                                          txn_req->req_id, MGMTD_SUCCESS,
+                                          data_reply, NULL) != 0) {
                        MGMTD_TXN_ERR("Failed to send GET-DATA-REPLY txn-id: %" PRIu64
                                      " session-id: %" PRIu64
                                      " req-id: %" PRIu64,
@@ -1755,7 +1753,7 @@ static int mgmt_txn_get_config(struct mgmt_txn_ctx *txn,
                get_data->reply = XCALLOC(MTYPE_MGMTD_TXN_GETDATA_REPLY,
                                          sizeof(struct mgmt_get_data_reply));
                if (!get_data->reply) {
-                       mgmt_fe_send_get_cfg_reply(
+                       mgmt_fe_send_get_reply(
                                txn->session_id, txn->txn_id, get_data->ds_id,
                                txn_req->req_id, MGMTD_INTERNAL_ERROR, NULL,
                                "Internal error: Unable to allocate reply buffers!");
@@ -1783,11 +1781,10 @@ static int mgmt_txn_get_config(struct mgmt_txn_ctx *txn,
                                      (void *)txn_req) == -1) {
                        MGMTD_TXN_DBG("Invalid Xpath '%s",
                                      get_data->xpaths[indx]);
-                       mgmt_fe_send_get_cfg_reply(txn->session_id, txn->txn_id,
-                                                  get_data->ds_id,
-                                                  txn_req->req_id,
-                                                  MGMTD_INTERNAL_ERROR, NULL,
-                                                  "Invalid xpath");
+                       mgmt_fe_send_get_reply(txn->session_id, txn->txn_id,
+                                              get_data->ds_id, txn_req->req_id,
+                                              MGMTD_INTERNAL_ERROR, NULL,
+                                              "Invalid xpath");
                        goto mgmt_txn_get_config_failed;
                }
                MGMTD_TXN_DBG("Got %d remaining data-replies for xpath '%s'",
@@ -1884,11 +1881,10 @@ static void mgmt_txn_process_get_data(struct event *thread)
                 * TODO: Trigger GET procedures for Backend
                 * For now return back error.
                 */
-               mgmt_fe_send_get_data_reply(txn->session_id, txn->txn_id,
-                                           txn_req->req.get_data->ds_id,
-                                           txn_req->req_id,
-                                           MGMTD_INTERNAL_ERROR, NULL,
-                                           "GET-DATA on Oper DS is not supported yet!");
+               mgmt_fe_send_get_reply(txn->session_id, txn->txn_id,
+                                      txn_req->req.get_data->ds_id,
+                                      txn_req->req_id, MGMTD_INTERNAL_ERROR,
+                                      NULL, "GET-DATA is not supported yet!");
                /*
                 * Delete the txn request.
                 * Note: The following will remove it from the list
@@ -2532,52 +2528,24 @@ int mgmt_txn_notify_be_cfg_apply_reply(uint64_t txn_id, bool success,
        return 0;
 }
 
-int mgmt_txn_send_get_config_req(uint64_t txn_id, uint64_t req_id,
-                                Mgmtd__DatastoreId ds_id,
-                                struct nb_config *cfg_root,
-                                Mgmtd__YangGetDataReq **data_req,
-                                size_t num_reqs)
+int mgmt_txn_send_get_req(uint64_t txn_id, uint64_t req_id,
+                         Mgmtd__DatastoreId ds_id, struct nb_config *cfg_root,
+                         Mgmtd__YangGetDataReq **data_req, size_t num_reqs)
 {
        struct mgmt_txn_ctx *txn;
        struct mgmt_txn_req *txn_req;
+       enum mgmt_txn_event req_event;
        size_t indx;
 
        txn = mgmt_txn_id2ctx(txn_id);
        if (!txn)
                return -1;
 
-       txn_req = mgmt_txn_req_alloc(txn, req_id, MGMTD_TXN_PROC_GETCFG);
-       txn_req->req.get_data->ds_id = ds_id;
-       txn_req->req.get_data->cfg_root = cfg_root;
-       for (indx = 0;
-            indx < num_reqs && indx < MGMTD_MAX_NUM_DATA_REPLY_IN_BATCH;
-            indx++) {
-               MGMTD_TXN_DBG("XPath: '%s'", data_req[indx]->data->xpath);
-               txn_req->req.get_data->xpaths[indx] =
-                       strdup(data_req[indx]->data->xpath);
-               txn_req->req.get_data->num_xpaths++;
-       }
-
-       mgmt_txn_register_event(txn, MGMTD_TXN_PROC_GETCFG);
+       req_event = cfg_root ? MGMTD_TXN_PROC_GETCFG : MGMTD_TXN_PROC_GETDATA;
 
-       return 0;
-}
-
-int mgmt_txn_send_get_data_req(uint64_t txn_id, uint64_t req_id,
-                              Mgmtd__DatastoreId ds_id,
-                              Mgmtd__YangGetDataReq **data_req, size_t num_reqs)
-{
-       struct mgmt_txn_ctx *txn;
-       struct mgmt_txn_req *txn_req;
-       size_t indx;
-
-       txn = mgmt_txn_id2ctx(txn_id);
-       if (!txn)
-               return -1;
-
-       txn_req = mgmt_txn_req_alloc(txn, req_id, MGMTD_TXN_PROC_GETDATA);
+       txn_req = mgmt_txn_req_alloc(txn, req_id, req_event);
        txn_req->req.get_data->ds_id = ds_id;
-       txn_req->req.get_data->cfg_root = NULL;
+       txn_req->req.get_data->cfg_root = cfg_root;
        for (indx = 0;
             indx < num_reqs && indx < MGMTD_MAX_NUM_DATA_REPLY_IN_BATCH;
             indx++) {
@@ -2587,7 +2555,7 @@ int mgmt_txn_send_get_data_req(uint64_t txn_id, uint64_t req_id,
                txn_req->req.get_data->num_xpaths++;
        }
 
-       mgmt_txn_register_event(txn, MGMTD_TXN_PROC_GETDATA);
+       mgmt_txn_register_event(txn, req_event);
 
        return 0;
 }
index 69d75fed07aa782d3acaef664e111d9ba3b6a9e3..068f07a5ca8adf43dd0912a6f31d751ac62b77b5 100644 (file)
@@ -177,25 +177,16 @@ extern int mgmt_txn_send_commit_config_req(uint64_t txn_id, uint64_t req_id,
                                           bool implicit);
 
 /*
- * Send get-config request to be processed later in transaction.
+ * Send get-{cfg,data} request to be processed later in transaction.
  *
- * Similar to set-config request.
+ * Is get-config if cfg_root is provided and the config is gathered locally,
+ * otherwise it's get-data and data is fetched from backedn clients.
  */
-extern int mgmt_txn_send_get_config_req(uint64_t txn_id, uint64_t req_id,
-                                       Mgmtd__DatastoreId ds_id,
-                                       struct nb_config *cfg_root,
-                                       Mgmtd__YangGetDataReq **data_req,
-                                       size_t num_reqs);
-
-/*
- * Send get-data request to be processed later in transaction.
- *
- * Similar to get-config request, but here data is fetched from backedn client.
- */
-extern int mgmt_txn_send_get_data_req(uint64_t txn_id, uint64_t req_id,
-                                      Mgmtd__DatastoreId ds_id,
-                                      Mgmtd__YangGetDataReq **data_req,
-                                      size_t num_reqs);
+extern int mgmt_txn_send_get_req(uint64_t txn_id, uint64_t req_id,
+                                Mgmtd__DatastoreId ds_id,
+                                struct nb_config *cfg_root,
+                                Mgmtd__YangGetDataReq **data_req,
+                                size_t num_reqs);
 
 /*
  * Notifiy backend adapter on connection.
index 6a6f32353df44d0de4b2b1f53ab52d844131a462..44c6c0097ad6066bf29c55172223111f8ea6263b 100644 (file)
@@ -194,7 +194,7 @@ DEFPY(show_mgmt_get_config, show_mgmt_get_config_cmd,
                datastore = mgmt_ds_name2id(dsname);
 
        xpath_list[0] = path;
-       vty_mgmt_send_get_config(vty, datastore, xpath_list, 1);
+       vty_mgmt_send_get_req(vty, true, datastore, xpath_list, 1);
        return CMD_SUCCESS;
 }
 
@@ -214,7 +214,7 @@ DEFPY(show_mgmt_get_data, show_mgmt_get_data_cmd,
                datastore = mgmt_ds_name2id(dsname);
 
        xpath_list[0] = path;
-       vty_mgmt_send_get_data(vty, datastore, xpath_list, 1);
+       vty_mgmt_send_get_req(vty, false, datastore, xpath_list, 1);
        return CMD_SUCCESS;
 }