struct mgmt_be_client_adapter *adapter;
FOREACH_ADAPTER_IN_LIST (adapter) {
- if (adapter->conn.fd == conn_fd)
+ if (adapter->conn->fd == conn_fd)
return adapter;
}
static int mgmt_be_adapter_notify_disconnect(struct msg_conn *conn)
{
- struct mgmt_be_client_adapter *adapter =
- container_of(conn, struct mgmt_be_client_adapter, conn);
+ struct mgmt_be_client_adapter *adapter = conn->user;
/*
* Notify about disconnect for appropriate cleanup
*/
MGMTD_BE_ADAPTER_DBG(
"Client '%s' (FD:%d) seems to have reconnected. Removing old connection (FD:%d)!",
- adapter->name, adapter->conn.fd, old->conn.fd);
- msg_conn_disconnect(&old->conn, false);
+ adapter->name, adapter->conn->fd,
+ old->conn->fd);
+ /* this will/should delete old */
+ msg_conn_disconnect(old->conn, false);
}
}
}
MGMTD_BE_ADAPTER_ERR(
"Unable to resolve adapter '%s' to a valid ID. Disconnecting!",
adapter->name);
- msg_conn_disconnect(&adapter->conn, false);
+ /* this will/should delete old */
+ msg_conn_disconnect(adapter->conn, false);
zlog_err("XXX different from original code");
break;
}
Mgmtd__BeMessage *be_msg)
{
return msg_conn_send_msg(
- &adapter->conn, MGMT_MSG_VERSION_PROTOBUF, be_msg,
+ adapter->conn, MGMT_MSG_VERSION_PROTOBUF, be_msg,
mgmtd__be_message__get_packed_size(be_msg),
(size_t(*)(void *, void *))mgmtd__be_message__pack);
}
static void mgmt_be_adapter_process_msg(uint8_t version, uint8_t *data,
size_t len, struct msg_conn *conn)
{
- struct mgmt_be_client_adapter *adapter;
- Mgmtd__BeMessage *be_msg;
+ struct mgmt_be_client_adapter *adapter = conn->user;
+ Mgmtd__BeMessage *be_msg = mgmtd__be_message__unpack(NULL, len, data);
- adapter = container_of(conn, struct mgmt_be_client_adapter, conn);
- be_msg = mgmtd__be_message__unpack(NULL, len, data);
if (!be_msg) {
MGMTD_BE_ADAPTER_DBG(
"Failed to decode %zu bytes for adapter: %s", len,
struct mgmt_be_client_adapter *adapter;
adapter = (struct mgmt_be_client_adapter *)EVENT_ARG(thread);
- assert(adapter && adapter->conn.fd >= 0);
+ assert(adapter && adapter->conn->fd >= 0);
/*
* Check first if the current session can run a CONFIG
*/
if (mgmt_txn_notify_be_adapter_conn(adapter, true) != 0) {
zlog_err("XXX notify be adapter conn fail");
- msg_conn_disconnect(&adapter->conn, false);
+ msg_conn_disconnect(adapter->conn, false);
adapter = NULL;
}
}
if (!--a->refcount) {
mgmt_be_adapters_del(&mgmt_be_adapters, a);
EVENT_OFF(a->conn_init_ev);
- msg_conn_cleanup(&a->conn);
+ msg_server_conn_delete(a->conn);
XFREE(MTYPE_MGMTD_BE_ADPATER, a);
}
mgmt_be_adapters_add_tail(&mgmt_be_adapters, adapter);
RB_INIT(nb_config_cbs, &adapter->cfg_chgs);
- msg_conn_accept_init(&adapter->conn, mgmt_loop, conn_fd,
+ msg_conn_accept_init(adapter->conn, mgmt_loop, conn_fd,
mgmt_be_adapter_notify_disconnect,
mgmt_be_adapter_process_msg,
MGMTD_BE_MAX_NUM_MSG_PROC,
FOREACH_ADAPTER_IN_LIST (adapter) {
vty_out(vty, " Client: \t\t\t%s\n", adapter->name);
- vty_out(vty, " Conn-FD: \t\t\t%d\n", adapter->conn.fd);
+ vty_out(vty, " Conn-FD: \t\t\t%d\n", adapter->conn->fd);
vty_out(vty, " Client-Id: \t\t\t%d\n", adapter->id);
vty_out(vty, " Ref-Count: \t\t\t%u\n", adapter->refcount);
vty_out(vty, " Msg-Recvd: \t\t\t%" PRIu64 "\n",
- adapter->mstate.nrxm);
+ adapter->conn->mstate.nrxm);
vty_out(vty, " Bytes-Recvd: \t\t%" PRIu64 "\n",
- adapter->mstate.nrxb);
+ adapter->conn->mstate.nrxb);
vty_out(vty, " Msg-Sent: \t\t\t%" PRIu64 "\n",
- adapter->mstate.ntxm);
+ adapter->conn->mstate.ntxm);
vty_out(vty, " Bytes-Sent: \t\t%" PRIu64 "\n",
- adapter->mstate.ntxb);
+ adapter->conn->mstate.ntxb);
}
vty_out(vty, " Total: %d\n",
(int)mgmt_be_adapters_count(&mgmt_be_adapters));
PREDECL_LIST(mgmt_txn_badapters);
struct mgmt_be_client_adapter {
- struct msg_conn conn;
- struct mgmt_msg_state mstate;
+ struct msg_conn *conn;
struct event *conn_init_ev;
Mgmtd__FeMessage *fe_msg)
{
return msg_conn_send_msg(
- &adapter->conn, MGMT_MSG_VERSION_PROTOBUF, fe_msg,
+ adapter->conn, MGMT_MSG_VERSION_PROTOBUF, fe_msg,
mgmtd__fe_message__get_packed_size(fe_msg),
(size_t(*)(void *, void *))mgmtd__fe_message__pack);
}
struct mgmt_fe_client_adapter *adapter;
FOREACH_ADAPTER_IN_LIST (adapter) {
- if (adapter->conn.fd == conn_fd)
+ if (adapter->conn->fd == conn_fd)
return adapter;
}
static int mgmt_fe_adapter_notify_disconnect(struct msg_conn *conn)
{
- struct mgmt_fe_client_adapter *adapter;
-
- adapter = container_of(conn, struct mgmt_fe_client_adapter, conn);
+ struct mgmt_fe_client_adapter *adapter = conn->user;
/* TODO: notify about client disconnect for appropriate cleanup */
mgmt_fe_cleanup_sessions(adapter);
*/
MGMTD_FE_ADAPTER_DBG(
"Client '%s' (FD:%d) seems to have reconnected. Removing old connection (FD:%d)!",
- adapter->name, adapter->conn.fd, old->conn.fd);
- msg_conn_disconnect(&old->conn, false);
+ adapter->name, adapter->conn->fd,
+ old->conn->fd);
+ msg_conn_disconnect(old->conn, false);
}
}
}
static void mgmt_fe_adapter_process_msg(uint8_t version, uint8_t *data,
size_t len, struct msg_conn *conn)
{
- struct mgmt_fe_client_adapter *adapter;
- Mgmtd__FeMessage *fe_msg;
+ struct mgmt_fe_client_adapter *adapter = conn->user;
+ Mgmtd__FeMessage *fe_msg = mgmtd__fe_message__unpack(NULL, len, data);
- adapter = container_of(conn, struct mgmt_fe_client_adapter, conn);
- fe_msg = mgmtd__fe_message__unpack(NULL, len, data);
if (!fe_msg) {
MGMTD_FE_ADAPTER_DBG(
"Failed to decode %zu bytes for adapter: %s", len,
if (!--a->refcount) {
mgmt_fe_adapters_del(&mgmt_fe_adapters, a);
- msg_conn_cleanup(&a->conn);
- XFREE(MTYPE_MGMTD_BE_ADPATER, a);
+ msg_server_conn_delete(a->conn);
+ XFREE(MTYPE_MGMTD_FE_ADPATER, a);
}
*adapter = NULL;
}
mgmt_fe_adapter_lock(adapter);
mgmt_fe_adapters_add_tail(&mgmt_fe_adapters, adapter);
- msg_conn_accept_init(&adapter->conn, mgmt_loop, conn_fd,
- mgmt_fe_adapter_notify_disconnect,
- mgmt_fe_adapter_process_msg,
- MGMTD_FE_MAX_NUM_MSG_PROC,
- MGMTD_FE_MAX_NUM_MSG_WRITE,
- MGMTD_FE_MSG_MAX_LEN, "FE-adapter");
+ adapter->conn = msg_server_conn_create(
+ mgmt_loop, conn_fd, mgmt_fe_adapter_notify_disconnect,
+ mgmt_fe_adapter_process_msg, MGMTD_FE_MAX_NUM_MSG_PROC,
+ MGMTD_FE_MAX_NUM_MSG_WRITE, MGMTD_FE_MSG_MAX_LEN,
+ adapter, "FE-adapter");
adapter->setcfg_stats.min_tm = ULONG_MAX;
adapter->cmt_stats.min_tm = ULONG_MAX;
FOREACH_ADAPTER_IN_LIST (adapter) {
vty_out(vty, " Client: \t\t\t\t%s\n", adapter->name);
- vty_out(vty, " Conn-FD: \t\t\t\t%d\n", adapter->conn.fd);
+ vty_out(vty, " Conn-FD: \t\t\t\t%d\n", adapter->conn->fd);
if (detail) {
mgmt_fe_adapter_setcfg_stats_write(vty, adapter);
mgmt_fe_adapter_cmt_stats_write(vty, adapter);
vty_out(vty, " Total-Sessions: \t\t\t%d\n",
(int)mgmt_fe_sessions_count(&adapter->fe_sessions));
vty_out(vty, " Msg-Recvd: \t\t\t\t%" PRIu64 "\n",
- adapter->conn.mstate.nrxm);
+ adapter->conn->mstate.nrxm);
vty_out(vty, " Bytes-Recvd: \t\t\t%" PRIu64 "\n",
- adapter->conn.mstate.nrxb);
+ adapter->conn->mstate.nrxb);
vty_out(vty, " Msg-Sent: \t\t\t\t%" PRIu64 "\n",
- adapter->conn.mstate.ntxm);
+ adapter->conn->mstate.ntxm);
vty_out(vty, " Bytes-Sent: \t\t\t%" PRIu64 "\n",
- adapter->conn.mstate.ntxb);
+ adapter->conn->mstate.ntxb);
}
vty_out(vty, " Total: %d\n",
(int)mgmt_fe_adapters_count(&mgmt_fe_adapters));
PREDECL_LIST(mgmt_fe_adapters);
struct mgmt_fe_client_adapter {
- struct msg_conn conn;
+ struct msg_conn *conn;
char name[MGMTD_CLIENT_NAME_MAX_LEN];
/* List of sessions created and being maintained for this client. */