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 Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel