#include "sockopt.h"
#ifdef REDIRECT_DEBUG_TO_STDERR
-#define MGMTD_BE_CLIENT_DBG(fmt, ...) \
+#define MGMTD_BE_CLIENT_DBG(fmt, ...) \
fprintf(stderr, "%s: " fmt "\n", __func__, ##__VA_ARGS__)
-#define MGMTD_BE_CLIENT_ERR(fmt, ...) \
+#define MGMTD_BE_CLIENT_ERR(fmt, ...) \
fprintf(stderr, "%s: ERROR, " fmt "\n", __func__, ##__VA_ARGS__)
#else /* REDIRECT_DEBUG_TO_STDERR */
-#define MGMTD_BE_CLIENT_DBG(fmt, ...) \
+#define MGMTD_BE_CLIENT_DBG(fmt, ...) \
do { \
- if (mgmt_debug_be_client) \
- zlog_debug("%s: " fmt, __func__, ##__VA_ARGS__); \
+ if (mgmt_debug_be_client) \
+ zlog_debug("%s: " fmt, __func__, ##__VA_ARGS__); \
} while (0)
-#define MGMTD_BE_CLIENT_ERR(fmt, ...) \
+#define MGMTD_BE_CLIENT_ERR(fmt, ...) \
zlog_err("%s: ERROR: " fmt, __func__, ##__VA_ARGS__)
#endif /* REDIRECT_DEBUG_TO_STDERR */
MGMTD_BE_CLIENT_DBG(
"Avg-nb-edit-duration %lu uSec, nb-prep-duration %lu (avg: %lu) uSec, batch size %u",
client_ctx->avg_edit_nb_cfg_tm, prep_nb_cfg_tm,
- client_ctx->avg_prep_nb_cfg_tm, (uint32_t)num_processed);
+ client_ctx->avg_prep_nb_cfg_tm,
+ (uint32_t)num_processed);
if (error)
mgmt_be_txn_cfg_abort(txn);
FOREACH_SESSION_IN_LIST (client_ctx, session) {
if (session->session_id == session_id) {
MGMTD_FE_CLIENT_DBG(
- "Found session %p for session-id %llu.", session,
- (unsigned long long)session_id);
+ "Found session %p for session-id %llu.",
+ session, (unsigned long long)session_id);
return session;
}
}
MGMTD_FE_CLIENT_DBG(
"Sending %sLOCK_REQ message for Ds:%d session %llu to MGMTD Frontend server",
- lock ? "" : "UN", ds_id, (unsigned long long)session->client_id);
+ lock ? "" : "UN", ds_id,
+ (unsigned long long)session->client_id);
return mgmt_fe_client_send_msg(client_ctx, &fe_msg);
}
return mgmt_fe_client_send_msg(client_ctx, &fe_msg);
}
-static int
-mgmt_fe_send_commitcfg_req(struct mgmt_fe_client_ctx *client_ctx,
- struct mgmt_fe_client_session *session,
- uint64_t req_id, Mgmtd__DatastoreId src_ds_id,
- Mgmtd__DatastoreId dest_ds_id, bool validate_only,
- bool abort)
+static int mgmt_fe_send_commitcfg_req(struct mgmt_fe_client_ctx *client_ctx,
+ struct mgmt_fe_client_session *session,
+ uint64_t req_id,
+ Mgmtd__DatastoreId src_ds_id,
+ Mgmtd__DatastoreId dest_ds_id,
+ bool validate_only, bool abort)
{
(void)req_id;
Mgmtd__FeMessage fe_msg;
if (session && fe_msg->session_reply->success) {
MGMTD_FE_CLIENT_DBG(
"Session Create for client-id %llu successful.",
- (unsigned long long)fe_msg
- ->session_reply->client_conn_id);
+ (unsigned long long)
+ fe_msg->session_reply
+ ->client_conn_id);
session->session_id =
fe_msg->session_reply->session_id;
} else {
MGMTD_FE_CLIENT_ERR(
"Session Create for client-id %llu failed.",
- (unsigned long long)fe_msg
- ->session_reply->client_conn_id);
+ (unsigned long long)
+ fe_msg->session_reply
+ ->client_conn_id);
}
} else if (!fe_msg->session_reply->create) {
MGMTD_FE_CLIENT_DBG(
.be_clients =
(enum mgmt_be_client_id[]){
#if HAVE_STATICD
- MGMTD_BE_CLIENT_ID_STATICD,
+ MGMTD_BE_CLIENT_ID_STATICD,
#endif
MGMTD_BE_CLIENT_ID_MAX}},
{.xpath_regexp = "/frr-interface:lib/*",
.be_clients =
(enum mgmt_be_client_id[]){
#if HAVE_STATICD
- MGMTD_BE_CLIENT_ID_STATICD,
+ MGMTD_BE_CLIENT_ID_STATICD,
#endif
MGMTD_BE_CLIENT_ID_MAX}},
{.xpath_regexp =
- "/frr-routing:routing/control-plane-protocols/control-plane-protocol[type='frr-staticd:staticd'][name='staticd'][vrf='default']/frr-staticd:staticd/*",
+ "/frr-routing:routing/control-plane-protocols/control-plane-protocol[type='frr-staticd:staticd'][name='staticd'][vrf='default']/frr-staticd:staticd/*",
.be_clients =
(enum mgmt_be_client_id[]){
#if HAVE_STATICD
- MGMTD_BE_CLIENT_ID_STATICD,
+ MGMTD_BE_CLIENT_ID_STATICD,
#endif
MGMTD_BE_CLIENT_ID_MAX}},
};
struct mgmt_be_client_adapter *old;
FOREACH_ADAPTER_IN_LIST (old) {
- if (old != adapter
- && !strncmp(adapter->name, old->name, sizeof(adapter->name))) {
+ if (old != adapter &&
+ !strncmp(adapter->name, old->name, sizeof(adapter->name))) {
/*
* We have a Zombie lingering around
*/
void mgmt_ds_reset_candidate(void)
{
struct lyd_node *dnode = mm->candidate_ds->root.cfg_root->dnode;
+
if (dnode)
yang_dnode_free(dnode);
if (implicit_commit) {
if (mm->perf_stats_en)
- gettimeofday(&session->adapter->cmt_stats.last_end, NULL);
+ gettimeofday(&session->adapter->cmt_stats.last_end,
+ NULL);
mgmt_fe_session_compute_commit_timers(
&session->adapter->cmt_stats);
}
struct mgmt_fe_client_adapter *old;
FOREACH_ADAPTER_IN_LIST (old) {
- if (old != adapter
- && !strncmp(adapter->name, old->name, sizeof(adapter->name))) {
+ if (old != adapter &&
+ !strncmp(adapter->name, old->name, sizeof(adapter->name))) {
/*
* We have a Zombie lingering around
*/
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,
+ 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;
}
sizeof(buf)));
vty_out(vty, " Apply-Config Start: \t\t%s\n",
mgmt_realtime_to_string(
- &adapter->cmt_stats.apply_cfg_start, buf,
- sizeof(buf)));
+ &adapter->cmt_stats.apply_cfg_start,
+ buf, sizeof(buf)));
vty_out(vty, " Apply-Config End: \t\t%s\n",
mgmt_realtime_to_string(
&adapter->cmt_stats.apply_cfg_end, buf,
adapter->setcfg_stats.avg_tm);
vty_out(vty, " Last-Set-Cfg-Details:\n");
vty_out(vty, " Set-Cfg Start: \t\t\t%s\n",
- mgmt_realtime_to_string(&adapter->setcfg_stats.last_start,
- buf, sizeof(buf)));
+ mgmt_realtime_to_string(
+ &adapter->setcfg_stats.last_start, buf,
+ sizeof(buf)));
vty_out(vty, " Set-Cfg End: \t\t\t%s\n",
mgmt_realtime_to_string(&adapter->setcfg_stats.last_end,
buf, sizeof(buf)));
struct mgmt_fe_session_ctx *session;
FOREACH_ADAPTER_IN_LIST (adapter) {
- memset(&adapter->setcfg_stats, 0, sizeof(adapter->setcfg_stats));
+ memset(&adapter->setcfg_stats, 0,
+ sizeof(adapter->setcfg_stats));
FOREACH_SESSION_IN_LIST (adapter, session) {
- memset(&adapter->cmt_stats, 0, sizeof(adapter->cmt_stats));
+ memset(&adapter->cmt_stats, 0,
+ sizeof(adapter->cmt_stats));
}
}
}
* The only instance of VTY session that has triggered an ongoing
* config rollback operation.
*/
-static struct vty *rollback_vty = NULL;
+static struct vty *rollback_vty;
static bool mgmt_history_record_exists(char *file_path)
{
return new;
}
-static struct mgmt_cmt_info_t *mgmt_history_find_cmt_record(const char *cmtid_str)
+static struct mgmt_cmt_info_t *
+mgmt_history_find_cmt_record(const char *cmtid_str)
{
struct mgmt_cmt_info_t *cmt_info;
while ((fread(&cmt_info, sizeof(cmt_info), 1, fp)) > 0) {
if (cnt < MGMTD_MAX_COMMIT_LIST) {
- if (!mgmt_history_record_exists(cmt_info.cmt_json_file)) {
+ if (!mgmt_history_record_exists(
+ cmt_info.cmt_json_file)) {
zlog_err(
"Commit record present in index_file, but commit file %s missing",
cmt_info.cmt_json_file);
FOREACH_CMT_REC (mm, cmt_info) {
if (strncmp(cmt_info->cmtid_str, cmtid_str,
MGMTD_MD5_HASH_STR_HEX_LEN) == 0) {
- ret = mgmt_history_rollback_to_cmt(vty, cmt_info, false);
+ ret = mgmt_history_rollback_to_cmt(vty, cmt_info,
+ false);
return ret;
}
FOREACH_CMT_REC (mm, cmt_info) {
if (cnt == num_cmts) {
- ret = mgmt_history_rollback_to_cmt(vty, cmt_info, false);
+ ret = mgmt_history_rollback_to_cmt(vty, cmt_info,
+ false);
return ret;
}
void mgmt_history_new_record(struct mgmt_ds_ctx *ds_ctx)
{
struct mgmt_cmt_info_t *cmt_info = mgmt_history_create_cmt_rec();
+
mgmt_ds_dump_ds_to_file(cmt_info->cmt_json_file, ds_ctx);
mgmt_history_dump_cmt_record_index();
}
// SPDX-License-Identifier: GPL-2.0-or-later
/*
- * Copyright (C) 2021 Vmware, Inc.
- * Pushpasis Sarkar <spushpasis@vmware.com>
- * Copyright (c) 2023, LabN Consulting, L.L.C.
- *
- */
+ * Copyright (C) 2021 Vmware, Inc.
+ * Pushpasis Sarkar <spushpasis@vmware.com>
+ * Copyright (c) 2023, LabN Consulting, L.L.C.
+ *
+ */
#ifndef _FRR_MGMTD_HISTORY_H_
#define _FRR_MGMTD_HISTORY_H_
char err_buf[1024] = {0};
nb_ctx.client = NB_CLIENT_MGMTD_SERVER;
nb_ctx.user = (void *)txn;
+
ret = nb_candidate_validate_yang(nb_config, false, err_buf,
sizeof(err_buf) - 1);
if (ret != NB_OK) {
static int config_write_mgmt_debug_helper(struct vty *vty, bool config)
{
int n = mgmt_debug_be + mgmt_debug_fe + mgmt_debug_ds + mgmt_debug_txn;
+
if (!n)
return 0;
"Transaction debug\n")
{
bool set = !no;
+
if (all)
be = fe = ds = txn = set ? all : NULL;