osaf/libs/core/mds/include/mds_core.h | 7 +
osaf/libs/core/mds/include/mds_dt2c.h | 1 +
osaf/libs/core/mds/include/mds_dt_tcp.h | 1 +
osaf/libs/core/mds/mds_c_api.c | 17 ++-
osaf/libs/core/mds/mds_c_db.c | 176 ++++++++++++++++++++++++++++++++
osaf/libs/core/mds/mds_c_sndrcv.c | 24 ++-
osaf/libs/core/mds/mds_dt_common.c | 1 +
osaf/libs/core/mds/mds_dt_tcp.c | 3 +
osaf/libs/core/mds/mds_dt_tipc.c | 6 +
osaf/libs/core/mds/mds_main.c | 1 +
10 files changed, 227 insertions(+), 10 deletions(-)
1) Update once adest details in MDS_SUBSCRIPTION_RESULTS_INFO
For now adest will be printed like Adest = <node[1]:osafamfd[2871]> for
local node
This is just being level changes still long way to go.....
Example :
Aug 14 9:52:26.073064 osafamfd[2871] NOTIFY |MDTM: svc up event for svc_id =
IMMND(25), subscri. by svc_id = IMMA_OI(27) pwe_id=1 Adest =
<node[1]:osafamfd[2871]>
Aug 14 9:52:28.179722 osafclmd[2852] NOTIFY |MDTM: svc up event for svc_id =
AVND(13), subscri. by svc_id = CLMS(34) pwe_id=1 Adest =
<node[1]:osafclmd[2852]>
diff --git a/osaf/libs/core/mds/include/mds_core.h
b/osaf/libs/core/mds/include/mds_core.h
--- a/osaf/libs/core/mds/include/mds_core.h
+++ b/osaf/libs/core/mds/include/mds_core.h
@@ -159,6 +159,7 @@ typedef struct mds_subscription_results_
MDS_SVC_ARCHWORD_TYPE rem_svc_arch_word;
uint32_t msg_snd_cnt; /* Message send count to this
destination */
uint32_t msg_rcv_cnt; /* Message rcv count from this
destination */
+ char sub_adest_details[255]; /* <node[slotno]:processname[pid]> */
} MDS_SUBSCRIPTION_RESULTS_INFO;
@@ -188,6 +189,7 @@ typedef struct mds_subscription_info {
this is Mcast or Bcast differentiators if conut is ZERO mcast else
count is grater than ZERO bcast (multi-unicast) */
uint32_t prev_ver_sub_count;
+ char sub_adest_details[255]; /* <node[slotno]:processname[pid]> */
} MDS_SUBSCRIPTION_INFO;
@@ -277,12 +279,14 @@ typedef struct mds_svc_info {
bool i_node_subscr; /* suscription to node */
MDS_SUBTN_REF_VAL node_subtn_ref_val;
bool i_msg_loss_indication; /* message loss indication if set to 1
*/
+ char adest_details[255]; /* <node[slotno]:processname[pid]> */
} MDS_SVC_INFO;
MDS_SVC_INFO *mds_get_svc_info_by_hdl(MDS_SVC_HDL hdl);
typedef struct mds_mcm_cb {
MDS_DEST adest;
+ char adest_details[255]; /* <node[slotno]:processname[pid]> */
/* List of all subscription results MDS_SUBSCRIPTION_RESULTS_INFO */
NCS_PATRICIA_TREE subtn_results;
@@ -485,6 +489,9 @@ extern uint32_t mds_mcm_validate_scope(N
extern uint32_t mds_mcm_free_msg_uba_start(MDS_ENCODED_MSG msg);
+extern void get_adest_details(MDS_DEST adest, char* adest_details);
+extern void get_subtn_adest_details(MDS_PWE_HDL pwe_hdl, MDS_SVC_ID svc_id,
+ MDS_DEST adest, char* adest_details);
/* ******************************************** */
/* ******************************************** */
/* MMGR Macros */
diff --git a/osaf/libs/core/mds/include/mds_dt2c.h
b/osaf/libs/core/mds/include/mds_dt2c.h
--- a/osaf/libs/core/mds/include/mds_dt2c.h
+++ b/osaf/libs/core/mds/include/mds_dt2c.h
@@ -138,6 +138,7 @@ typedef struct mdtm_send_req {
such scheme
*/
MDS_DEST adest; /* MDTM to do local/remote routing, destination
adest */
+ char sub_adest_details[255]; /* <node[slotno]:processname[pid]> */
MDS_SEND_PRIORITY_TYPE pri;
MDS_CLIENT_MSG_FORMAT_VER msg_fmt_ver; /* message format version
specification */
MDS_SVC_PVT_SUB_PART_VER src_svc_sub_part_ver;
diff --git a/osaf/libs/core/mds/include/mds_dt_tcp.h
b/osaf/libs/core/mds/include/mds_dt_tcp.h
--- a/osaf/libs/core/mds/include/mds_dt_tcp.h
+++ b/osaf/libs/core/mds/include/mds_dt_tcp.h
@@ -36,6 +36,7 @@ typedef struct mdtm_tcp_cb {
void *mdtm_hdle_task;
uint64_t adest;
+ char adest_details[255]; /* <node[slotno]:processname[pid]> */
SYSF_MBX tmr_mbx;
int tmr_fd;
diff --git a/osaf/libs/core/mds/mds_c_api.c b/osaf/libs/core/mds/mds_c_api.c
--- a/osaf/libs/core/mds/mds_c_api.c
+++ b/osaf/libs/core/mds/mds_c_api.c
@@ -25,6 +25,7 @@
#include "mds_core.h"
#include "mds_log.h"
+#include "mds_core.h"
/*********************************************************
@@ -1517,6 +1518,7 @@ uint32_t mds_mcm_svc_up(PW_ENV_ID pwe_id
MDS_SUBSCRIPTION_RESULTS_INFO *subtn_result_info = NULL;
MDS_SUBSCRIPTION_RESULTS_INFO *active_subtn_result_info = NULL;
MDS_SUBSCRIPTION_RESULTS_INFO *next_active_result_info = NULL;
+ MDS_SUBSCRIPTION_RESULTS_INFO *log_subtn_result_info = NULL;
m_MDS_LOG_DBG("MCM_API : Entering : mds_mcm_svc_up : Details below :");
m_MDS_LOG_DBG("MCM_API : LOCAL SVC INFO : SVC id = %d | PWE id = %d |
VDEST id = %d |",
@@ -1627,11 +1629,14 @@ else (entry exists)
/*************** Validation for SCOPE **********************/
- status = mds_subtn_res_tbl_query_by_adest(local_svc_hdl, svc_id,
vdest_id, adest);
+ status = mds_get_subtn_res_tbl_by_adest(local_svc_hdl, svc_id,
vdest_id, adest, &log_subtn_result_info);
if (status == NCSCC_RC_FAILURE) { /* Subscription result tabel
entry doesn't exist */
if (vdest_id == m_VDEST_ID_FOR_ADEST_ENTRY) { /* Remote svc
is on ADEST */
+ char to_adest_details[255];
+
get_subtn_adest_details(m_MDS_GET_PWE_HDL_FROM_SVC_HDL(local_svc_hdl),
+ svc_id, adest, to_adest_details);
mds_subtn_res_tbl_add(local_svc_hdl, svc_id,
(MDS_VDEST_ID)vdest_id, adest,
role,
@@ -1669,6 +1674,9 @@ else (entry exists)
&tmr_running, &subtn_result_info, true);
/* check if any other active present */
if (status == NCSCC_RC_FAILURE) {
/* No active present */
+ char to_adest_details[255];
+
get_subtn_adest_details(m_MDS_GET_PWE_HDL_FROM_SVC_HDL(local_svc_hdl),
+ svc_id,
active_adest, to_adest_details);
/* Add entry to subscription
result table */
status =
mds_subtn_res_tbl_add(local_svc_hdl,
svc_id,
@@ -2556,6 +2564,7 @@ uint32_t mds_mcm_svc_down(PW_ENV_ID pwe_
bool tmr_running;
MDS_SUBSCRIPTION_RESULTS_INFO *subtn_result_info = NULL;
MDS_SUBSCRIPTION_RESULTS_INFO *next_active_result_info = NULL;
+ MDS_SUBSCRIPTION_RESULTS_INFO *log_subtn_result_info = NULL;
V_DEST_RL dest_role;
m_MDS_LOG_DBG("MCM_API : Entering : mds_mcm_svc_down : Details below
:");
@@ -2669,7 +2678,7 @@ else (entry exists)
}
/*************** Validation for SCOPE **********************/
- status = mds_subtn_res_tbl_query_by_adest(local_svc_hdl, svc_id,
(MDS_VDEST_ID)vdest_id, adest);
+ status = mds_get_subtn_res_tbl_by_adest(local_svc_hdl, svc_id,
(MDS_VDEST_ID)vdest_id, adest, &log_subtn_result_info);
if (status == NCSCC_RC_FAILURE) { /* Subscription result tabel
entry doesn't exist */
/* Discard : Getting down before getting up */
@@ -3375,6 +3384,8 @@ uint32_t mds_mcm_user_event_callback(MDS
if (vdest_id == m_VDEST_ID_FOR_ADEST_ENTRY) {
/* Service is on remote ADEST */
cbinfo->info.svc_evt.i_dest = adest;
+ if ((event_type == NCSMDS_UP) || (event_type == NCSMDS_RED_UP))
+ get_adest_details(adest,
cbinfo->info.svc_evt.i_dest_details);
cbinfo->info.svc_evt.i_anc = 0; /* anchor same as adest */
} else {
/* Service is on remote VDEST */
@@ -3382,6 +3393,8 @@ uint32_t mds_mcm_user_event_callback(MDS
if (event_type == NCSMDS_RED_UP || event_type ==
NCSMDS_RED_DOWN || event_type == NCSMDS_CHG_ROLE) {
cbinfo->info.svc_evt.i_anc = adest; /* anchor same
as adest */
+ if (event_type == NCSMDS_RED_UP)
+ get_adest_details(adest,
cbinfo->info.svc_evt.i_dest_details);
} else {
cbinfo->info.svc_evt.i_anc = 0;
}
diff --git a/osaf/libs/core/mds/mds_c_db.c b/osaf/libs/core/mds/mds_c_db.c
--- a/osaf/libs/core/mds/mds_c_db.c
+++ b/osaf/libs/core/mds/mds_c_db.c
@@ -25,6 +25,177 @@
#include "mds_core.h"
#include "mds_log.h"
+#include "ncs_main_papi.h"
+extern char *tipc_or_tcp;
+extern uint32_t mds_mcm_check_intranode(MDS_DEST adest);
+/*****************************************************
+Function NAME: get_adest_details()
+Returns : <node[slotno]:processname[pid]>
+*****************************************************/
+void get_adest_details(MDS_DEST adest, char* adest_details)
+{
+ char *token;
+ struct stat s;
+ uint32_t process_id = 0;
+ NCS_PHY_SLOT_ID phy_slot;
+ NCS_SUB_SLOT_ID sub_slot;
+ char name[1024];
+ char process_name[255];
+ bool remote = false;
+ memset(adest_details, 0, sizeof(adest_details));
+
+ m_NCS_GET_PHYINFO_FROM_NODE_ID(m_NCS_NODE_ID_FROM_MDS_DEST(adest),
NULL, &phy_slot, &sub_slot);
+
+ if (strcmp(tipc_or_tcp, "TCP") == 0) {
+ process_id = m_MDS_GET_PROCESS_ID_FROM_ADEST(adest);
+ if (NCSCC_RC_SUCCESS == mds_mcm_check_intranode(adest)) {
+ sprintf(name, "/proc/%d/cmdline", process_id);
+ if(stat(name, &s) != 0) {
+ sprintf(process_name, "pid[%u]", process_id);
+ } else {
+
+ FILE* f = fopen(name,"r");
+ if(f){
+ size_t size;
+ size = fread(name, sizeof(char), 1024,
f);
+ if(size>0){
+ if('\n' == name[size-1])
+ name[size-1]='\0';
+ }
+ fclose(f);
+ }
+ token = strtok(name, "/");
+ while( token != NULL )
+ {
+ strcpy(name,token);
+ token = strtok(NULL, "/");
+ }
+ sprintf(process_name, "%s[%u]", name,
process_id);
+ }
+
+ } else {
+ sprintf(process_name, "dest_pid[%u]", process_id);
+ remote = true;
+ }
+ } else if (strcmp(tipc_or_tcp, "TIPC") == 0) {
+ process_id = getpid();
+ if (NCSCC_RC_SUCCESS == mds_mcm_check_intranode(adest)) {
+ sprintf(name, "/proc/%d/cmdline", process_id);
+ if(stat(name, &s) != 0) {
+ sprintf(process_name, "tipc_id_ref[%u]",
process_id);
+ } else {
+
+ FILE* f = fopen(name,"r");
+ if(f){
+ size_t size;
+ size = fread(name, sizeof(char), 1024,
f);
+ if(size>0){
+ if('\n' == name[size-1])
+ name[size-1]='\0';
+ }
+ fclose(f);
+ }
+ token = strtok(name, "/");
+ while( token != NULL )
+ {
+ strcpy(name,token);
+ token = strtok(NULL, "/");
+ }
+ sprintf(process_name, "%s[%u]", name,
process_id);
+ }
+
+ } else {
+
+ process_id = m_MDS_GET_PROCESS_ID_FROM_ADEST(adest);
+ sprintf(process_name,
"dest_tipc_id_ref[%u]",process_id);
+ remote = true;
+ }
+ }
+
+ if (remote == true)
+ sprintf(adest_details, "<rem_node[%d]:%s>",
+ phy_slot, process_name);
+ else
+ sprintf(adest_details, "<node[%d]:%s>",
+ phy_slot, process_name);
+
+ m_MDS_LOG_DBG("MCM_DB : Leaving : F : get_adest_details adest_details:
%s ", adest_details);
+}
+
+
+/*****************************************************
+ Function NAME: get_subtn_adest_details
+ Returns : <node[slotno]:processname[pid]>
+ *****************************************************/
+void get_subtn_adest_details(MDS_PWE_HDL pwe_hdl, MDS_SVC_ID svc_id, MDS_DEST
adest, char* adest_details)
+{
+ uint32_t process_id = 0;
+ NCS_PHY_SLOT_ID phy_slot;
+ NCS_SUB_SLOT_ID sub_slot;
+ char process_name[255];
+ bool remote = false;
+ MDS_SVC_INFO *svc_info = NULL;
+
+ char name[1024];
+ char *token;
+ struct stat s;
+
+ memset(adest_details, 0, sizeof(adest_details));
+ m_NCS_GET_PHYINFO_FROM_NODE_ID(m_NCS_NODE_ID_FROM_MDS_DEST(adest),
NULL, &phy_slot, &sub_slot);
+ process_id = m_MDS_GET_PROCESS_ID_FROM_ADEST(adest);
+
+ if (NCSCC_RC_SUCCESS == mds_mcm_check_intranode(adest)) {
+ if (NCSCC_RC_SUCCESS == mds_svc_tbl_get(pwe_hdl, svc_id,
(NCSCONTEXT)&svc_info)) {
+ strcpy(adest_details, svc_info->adest_details);
+ goto done;
+ } else if (strcmp(tipc_or_tcp, "TCP") == 0) {
+
+ sprintf(name, "/proc/%d/cmdline", process_id);
+ if(stat(name, &s) != 0) {
+ sprintf(process_name, "pid[%u]", process_id);
+ } else {
+
+ FILE* f = fopen(name,"r");
+ if(f){
+ size_t size;
+ size = fread(name, sizeof(char), 1024,
f);
+ if(size>0){
+ if('\n' == name[size-1])
+ name[size-1]='\0';
+ }
+ fclose(f);
+ }
+ token = strtok(name, "/");
+ while( token != NULL )
+ {
+ strcpy(name,token);
+ token = strtok(NULL, "/");
+ }
+ sprintf(process_name, "%s[%u]", name,
process_id);
+ }
+ } else {
+ /* Service Doesn't exist */
+ sprintf(process_name, "tipc_id_ref[%u]", process_id);
+ }
+ } else {
+ if (strcmp(tipc_or_tcp, "TCP") == 0) {
+ sprintf(process_name, "dest_pid[%u]", process_id);
+ remote = true;
+ } else {
+ sprintf(process_name,
"dest_tipc_id_ref[%u]",process_id);
+ remote = true;
+ }
+ }
+
+ if (remote == true)
+ sprintf(adest_details, "<rem_node[%d]:%s>",
+ phy_slot, process_name);
+ else
+ sprintf(adest_details, "<node[%d]:%s>",
+ phy_slot, process_name);
+done:
+ m_MDS_LOG_DBG("MCM_DB : Leaving : F : get_subtn_adest_details
adest_details: %s ", adest_details);
+}
/* ******************************************** */
/* ******************************************** */
@@ -574,6 +745,7 @@ uint32_t mds_svc_tbl_add(NCSMDS_INFO *in
info->info.svc_install.o_sel_obj =
m_NCS_IPC_GET_SEL_OBJ(&svc_info->q_mbx);
}
+ strcpy(svc_info->adest_details, gl_mds_mcm_cb->adest_details);
svc_info->svc_list_node.key_info = (uint8_t *)&svc_info->svc_hdl;
ncs_patricia_tree_add(&gl_mds_mcm_cb->svc_list, (NCS_PATRICIA_NODE
*)&svc_info->svc_list_node);
@@ -944,6 +1116,7 @@ uint32_t mds_subtn_tbl_add(MDS_SVC_HDL s
subtn_info->next = svc_info->subtn_info;
svc_info->subtn_info = subtn_info;
+ strcpy(subtn_info->sub_adest_details, svc_info->adest_details);
/* STEP 2.b: Start Subscription Timer */
subtn_info->tmr_flag = true;
@@ -1459,6 +1632,9 @@ uint32_t mds_subtn_res_tbl_add(MDS_SVC_H
subtn_res_info->rem_svc_sub_part_ver = svc_sub_part_ver;
subtn_res_info->rem_svc_arch_word = archword_type;
+ get_subtn_adest_details(m_MDS_GET_PWE_HDL_FROM_SVC_HDL(svc_hdl),
+ subscr_svc_id, adest,
subtn_res_info->sub_adest_details);
+
ncs_patricia_tree_add(&gl_mds_mcm_cb->subtn_results, (NCS_PATRICIA_NODE
*)&subtn_res_info->node);
if (vdest_id != m_VDEST_ID_FOR_ADEST_ENTRY) { /* Entry to add is
VDEST entry */
diff --git a/osaf/libs/core/mds/mds_c_sndrcv.c
b/osaf/libs/core/mds/mds_c_sndrcv.c
--- a/osaf/libs/core/mds/mds_c_sndrcv.c
+++ b/osaf/libs/core/mds/mds_c_sndrcv.c
@@ -328,7 +328,7 @@ static uint32_t mcm_pvt_process_svc_bcas
NCSMDS_SCOPE_TYPE scope,
MDS_SEND_PRIORITY_TYPE pri,
uint8_t flag /* For normal=0,
red=1 */ );
-static uint32_t mds_mcm_check_intranode(MDS_DEST adest);
+uint32_t mds_mcm_check_intranode(MDS_DEST adest);
#define MDS_GET_NODE_ID(p) m_MDS_GET_NODE_ID_FROM_ADEST(p)
@@ -929,6 +929,7 @@ static uint32_t mcm_pvt_normal_snd_proce
MDS_PWE_HDL pwe_hdl = (MDS_PWE_HDL)env_hdl;
MDS_SVC_INFO *svc_cb = NULL;
MDS_SUBSCRIPTION_RESULTS_INFO *tx_send_hdl = NULL; /* Subscription
Result */
+ MDS_SUBSCRIPTION_RESULTS_INFO *log_tx_send_hdl = NULL; /*
Subscription Result */
uint32_t status = 0;
@@ -973,7 +974,7 @@ static uint32_t mcm_pvt_normal_snd_proce
/* Query one type to get the tx_send_hdl(results) */
if (NCSCC_RC_SUCCESS !=
- mds_subtn_res_tbl_query_by_adest(svc_cb->svc_hdl,
dest_svc_id, dest_vdest_id, dest)) {
+ mds_get_subtn_res_tbl_by_adest(svc_cb->svc_hdl,
dest_svc_id, dest_vdest_id, dest, &log_tx_send_hdl)) {
tx_send_hdl = NULL;
} else {
/* Route available, send the data now */
@@ -1267,6 +1268,7 @@ static uint32_t mcm_msg_cpy_send(uint8_t
}
req.adest = dest;
+ strcpy(req.sub_adest_details, lcl_subtn_res->sub_adest_details);
m_MDS_LOG_INFO("MDS_SND_RCV: Sending the data to MDTM layer\n");
m_MDS_LOG_DBG("MDS_SND_RCV : Leaving mcm_msg_cpy_send\n");
return mds_mdtm_send(&req);
@@ -1318,7 +1320,7 @@ static uint32_t mcm_msg_direct_send_buff
req.pri = pri;
req.msg_fmt_ver = msg_fmt_ver;
-
+ strcpy(req.sub_adest_details, lcl_subtn_res->sub_adest_details);
m_MDS_LOG_INFO("MDS_SND_RCV: Sending the data to MDTM layer\n");
m_MDS_LOG_DBG("MDS_SND_RCV : Leaving mcm_msg_direct_send_buff\n");
@@ -1492,6 +1494,7 @@ static uint32_t mcm_msg_encode_full_or_f
msg_send.dest_pwe_id = m_MDS_GET_PWE_ID_FROM_SVC_HDL(svc_cb->svc_hdl);
msg_send.dest_vdest_id = dest_vdest_id;
msg_send.src_svc_sub_part_ver = svc_cb->svc_sub_part_ver;
+ strcpy(msg_send.sub_adest_details, lcl_subtn_res->sub_adest_details);
if ((((svc_cb->subtn_info->prev_ver_sub_count > 0))
&& (snd_type == MDS_SENDTYPE_BCAST || snd_type
== MDS_SENDTYPE_RBCAST))
@@ -1628,6 +1631,7 @@ static uint32_t mds_mcm_process_disc_que
bool time_wait = false;
MDS_SUBSCRIPTION_RESULTS_INFO *t_send_hdl = NULL; /* Subscription
Result */
+ MDS_SUBSCRIPTION_RESULTS_INFO *log_t_send_hdl = NULL; /*
Subscription Result */
m_MDS_LOG_DBG("MDS_SND_RCV :Entering
mds_mcm_process_disc_queue_checks\n");
@@ -1694,7 +1698,7 @@ static uint32_t mds_mcm_process_disc_que
/* Query one type to get the tx_send_hdl(results) */
if (NCSCC_RC_SUCCESS !=
- mds_subtn_res_tbl_query_by_adest(svc_cb->svc_hdl,
dest_svc_id, dest_vdest_id, anchor)) {
+ mds_get_subtn_res_tbl_by_adest(svc_cb->svc_hdl,
dest_svc_id, dest_vdest_id, anchor, &log_t_send_hdl)) {
/* m_MDS_LOG_ERR("MDS_SND_RCV: No Route FOUND
from SVC id = %d "); */
m_MDS_LOG_ERR
("MDS_SND_RCV:No Route Found from SVC id =
%d to SVC id = %d on ADEST <0x%08x, %u>",
@@ -2208,6 +2212,7 @@ static uint32_t mcm_pvt_red_snd_process_
uint32_t status = 0;
MDS_SUBSCRIPTION_RESULTS_INFO *subs_result_hdl = NULL;
+ MDS_SUBSCRIPTION_RESULTS_INFO *log_subs_result_hdl = NULL;
V_DEST_RL role_ret = 0; /* Not used, only passed to get the
subscription result ptr */
if (to_msg.msg_type == MSG_NCSCONTEXT) {
@@ -2247,7 +2252,7 @@ static uint32_t mcm_pvt_red_snd_process_
/* Check dest_svc_id, dest_pwe_id, Destination <ADEST, VDEST>,
exists in subscription result table */
- if (NCSCC_RC_SUCCESS !=
mds_subtn_res_tbl_query_by_adest(svc_cb->svc_hdl, dest_svc_id, dest_vdest_id,
dest)) {
+ if (NCSCC_RC_SUCCESS != mds_get_subtn_res_tbl_by_adest(svc_cb->svc_hdl,
dest_svc_id, dest_vdest_id, dest, &log_subs_result_hdl)) {
/* Destination Route Not Found, still some validations required
*/
/* Check in subscriptions whether this exists */
if (NCSCC_RC_SUCCESS !=
@@ -2295,6 +2300,7 @@ static uint32_t mds_mcm_process_disc_que
{
MDS_SUBSCRIPTION_INFO *sub_info = NULL;
+ MDS_SUBSCRIPTION_RESULTS_INFO *log_subtn_result_info = NULL;
uint32_t disc_rc;
bool time_wait = false;
@@ -2345,8 +2351,8 @@ static uint32_t mds_mcm_process_disc_que
}
return NCSCC_RC_FAILURE;
} else {
- if (NCSCC_RC_SUCCESS !=
(mds_subtn_res_tbl_query_by_adest(svc_cb->svc_hdl, dest_svc_id,
-
dest_vdest_id, anchor))) {
+ if (NCSCC_RC_SUCCESS !=
(mds_get_subtn_res_tbl_by_adest(svc_cb->svc_hdl, dest_svc_id,
+
dest_vdest_id, anchor, &log_subtn_result_info))) {
m_MDS_LOG_ERR
("MDS_SND_RCV: Destination Route not found even
after the DISCOVERY Timer timeout\n");
return NCSCC_RC_FAILURE;
@@ -2864,6 +2870,7 @@ static uint32_t mcm_pvt_process_sndrack_
MDS_VDEST_ID dest_vdest_id = 0;
NCSCONTEXT hdl;
+ MDS_SUBSCRIPTION_RESULTS_INFO *log_subtn_result_info = NULL;
MDS_SVC_INFO *svc_cb = NULL;
@@ -3910,7 +3917,7 @@ static uint32_t mcm_pvt_process_svc_bcas
* NCSCC_RC_FAILURE
*
****************************************************************************/
-static uint32_t mds_mcm_check_intranode(MDS_DEST adest)
+uint32_t mds_mcm_check_intranode(MDS_DEST adest)
{
if (MDS_GET_NODE_ID(adest) == MDS_GET_NODE_ID(m_MDS_GET_ADEST))
return NCSCC_RC_SUCCESS;
@@ -6162,6 +6169,7 @@ uint32_t mds_await_active_tbl_send(MDS_A
req.dest_vdest_id, adest, &lcl_subtn_res);
req.svc_seq_num = lcl_subtn_res->msg_snd_cnt++;
req.adest = adest;
+ strcpy(req.sub_adest_details, lcl_subtn_res->sub_adest_details);
mds_mdtm_send(&req);
mov_ptr = queue;
queue = queue->next_msg;
diff --git a/osaf/libs/core/mds/mds_dt_common.c
b/osaf/libs/core/mds/mds_dt_common.c
--- a/osaf/libs/core/mds/mds_dt_common.c
+++ b/osaf/libs/core/mds/mds_dt_common.c
@@ -17,6 +17,7 @@
#include "mds_dt.h"
#include "mds_log.h"
+#include "mds_core.h"
#include "ncssysf_def.h"
#include "ncssysf_tsk.h"
#include "ncssysf_mem.h"
diff --git a/osaf/libs/core/mds/mds_dt_tcp.c b/osaf/libs/core/mds/mds_dt_tcp.c
--- a/osaf/libs/core/mds/mds_dt_tcp.c
+++ b/osaf/libs/core/mds/mds_dt_tcp.c
@@ -17,6 +17,7 @@
#include "mds_dt.h"
#include "mds_log.h"
+#include "mds_core.h"
#include "ncssysf_def.h"
#include "ncssysf_tsk.h"
#include "ncssysf_mem.h"
@@ -195,6 +196,8 @@ uint32_t mds_mdtm_init_tcp(NODE_ID nodei
*mds_tcp_ref = mdtm_pid;
+ get_adest_details(tcp_cb->adest, tcp_cb->adest_details);
+
if (mds_socket_domain == AF_UNIX) {
int servlen = 0;
server_addr_un.sun_family = AF_UNIX;
diff --git a/osaf/libs/core/mds/mds_dt_tipc.c b/osaf/libs/core/mds/mds_dt_tipc.c
--- a/osaf/libs/core/mds/mds_dt_tipc.c
+++ b/osaf/libs/core/mds/mds_dt_tipc.c
@@ -26,6 +26,7 @@
*/
#include "mds_dt.h"
#include "mds_log.h"
+#include "mds_core.h"
#include "ncssysf_def.h"
#include "ncssysf_tsk.h"
#include "ncssysf_mem.h"
@@ -111,6 +112,7 @@ typedef struct mdtm_tipc_cb {
void *mdtm_hdle_task;
int hdle_mdtm;
uint64_t adest;
+ char adest_details[255];
SYSF_MBX tmr_mbx;
int tmr_fd;
@@ -226,6 +228,7 @@ uint32_t mdtm_tipc_init(NODE_ID nodeid,
tipc_cb.adest = ((uint64_t)(nodeid)) << 32;
tipc_cb.adest |= addr.addr.id.ref;
tipc_cb.node_id = nodeid;
+ get_adest_details(tipc_cb.adest, tipc_cb.adest_details);
tipc_node_id = mdtm_tipc_own_node(tipc_cb.BSRsock); /* This gets
the tipc ownaddress */
@@ -822,6 +825,7 @@ static uint32_t mdtm_process_discovery_e
MDS_VDEST_ID vdest;
NCS_VDEST_TYPE policy = 0;
MDS_SVC_HDL svc_hdl;
+ char adest_details[255];
MDS_SVC_PVT_SUB_PART_VER svc_sub_part_ver;
MDS_SVC_ARCHWORD_TYPE archword_type;
@@ -887,6 +891,8 @@ static uint32_t mdtm_process_discovery_e
svc_id,
m_MDS_GET_SVC_ID_FROM_SVC_HDL(svc_hdl), node, discovery_event);
return NCSCC_RC_FAILURE;
}
+
get_subtn_adest_details(m_MDS_GET_PWE_HDL_FROM_SVC_HDL(svc_hdl),
m_MDS_GET_SVC_ID_FROM_SVC_HDL(svc_hdl),
+ adest, adest_details);
if (TIPC_PUBLISHED == discovery_event) {
m_MDS_LOG_NOTIFY
diff --git a/osaf/libs/core/mds/mds_main.c b/osaf/libs/core/mds/mds_main.c
--- a/osaf/libs/core/mds/mds_main.c
+++ b/osaf/libs/core/mds/mds_main.c
@@ -284,6 +284,7 @@ uint32_t mds_lib_req(NCS_LIB_REQ_INFO *r
return NCSCC_RC_FAILURE;
}
gl_mds_mcm_cb->adest =
m_MDS_GET_ADEST_FROM_NODE_ID_AND_PROCESS_ID(node_id, mds_tipc_ref);
+ get_adest_details(gl_mds_mcm_cb->adest,
gl_mds_mcm_cb->adest_details);
/* Initialize logging */
{
------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel