Let's use _POSIX_HOST_NAME_MAX. It is a part of LSB 4.1. Thanks, Mathi.
----- [email protected] wrote: > Hi Anders Widell/Vu, > > On 2/16/2016 9:41 PM, Anders Widell wrote: > > I think it looks like HOST_NAME_MAX is not included in LSB. Please > > check http://refspecs.linuxfoundation.org/ > > > > Also, it looks like you are using an 8-bit variable for storing the > > > length of the host name, so you are assuming HOST_NAME_MAX is not > > larger than 255? Maybe it is better to just use our own constant and > > > decide that we don't support host names longer than 255 byte? > > As we know `/etc/opensaf/node_name` file is generated with the short > > form of the hostname ('hostname -s') > when the controller or payload rpm is installed , And the there are > hard > limits for the line size in the /etc/hosts file, > Maximum line size is 256 is e hard limits for the /etc/hosts file. > > The Opensaf 00-README.conf also says : > > "The node_name file contains the RDN value of the CLM node name. A > user can > change the default value but the changed value 'must match' with the > value > specified in the nodes.cfg that was used to generate the imm.xml.i.e. > the > node_name value should match the value present in the generated > imm.xml. > The node_name must be set to a unique value(as described above) for > > each node." > > > As the RDN value of the CLM node name it self is max 255 , so their is > > no possibility of > `/etc/opensaf/node_name` exceeding 255 with combining with RDN > name > for example : > > `safAmfNode=SC-1,safAmfCluster=myAmfCluster` > > That is why I derived the name_name max as 255 where MDS is being > fetching the node_name > from `/etc/opensaf/node_name`. > > -AVM > > > > > regards, > > Anders Widell > > > > On 02/16/2016 10:05 AM, Vu Minh Nguyen wrote: > >> Hi Mahesh, > >> > >> I see you are using constant HOST_NAME_MAX for node_name string. > >> > >> Referring to following page, it states HOST_NAME_MAX value possibly > "is > >> unspecified." > >> > http://pubs.opengroup.org/onlinepubs/009695399/basedefs/limits.h.html > >> With _POSIX_HOST_NAME_MAX constant, the value is determined. Its > >> value is > >> 255. > >> > >> I wonder it is safe to use HOST_NAME_MAX or not. > >> > >> Regards, Vu. > >> > >> > >>> -----Original Message----- > >>> From: [email protected] [mailto:[email protected]] > >>> Sent: Friday, February 05, 2016 1:26 PM > >>> To: [email protected]; [email protected]; > >>> [email protected]; [email protected] > >>> Cc: [email protected] > >>> Subject: [devel] [PATCH 1 of 3] MDS:TIPC include node name as a > part of > >>> callback_info events [#1522] > >>> > >>> osaf/libs/core/include/mds_papi.h | 8 ++- > >>> osaf/libs/core/mds/include/mds_core.h | 4 +- > >>> osaf/libs/core/mds/include/mds_dt.h | 5 +- > >>> osaf/libs/core/mds/include/mds_dt2c.h | 6 +- > >>> osaf/libs/core/mds/mds_c_api.c | 14 ++- > >>> osaf/libs/core/mds/mds_c_sndrcv.c | 5 + > >>> osaf/libs/core/mds/mds_dt_common.c | 49 ++++++++++---- > >>> osaf/libs/core/mds/mds_dt_tipc.c | 116 > >> ++++++++++++++++++++++++-------- > >>> - > >>> osaf/libs/core/mds/mds_main.c | 55 +++++++++++---- > >>> 9 files changed, 188 insertions(+), 74 deletions(-) > >>> > >>> > >>> This patch enhences the Opensaf Transport provides Node > > >>> Name of > >> the > >>> sender > >>> as part of ncsmds_callback_info > >> (NCSMDS_CALLBACK_INFO). > >>> This enhences implemented for both TCP & > TIPC > >> Transport. > >>> In addtional to TIPC list DEC_INFO, > >>> RECEIVE_INFO & > >>> DIRECT_RECEIVE, > >>> TCP Transport provides Node Name of the > >>> sender as > >> part of > >>> NODE_EVENT event also. > >>> > >>> Patch supports in-serrvice upgrade both > TCP & > >> TIPC Transport > >>> (NOT YET TESTED). > >>> > >>> > >>> > >>> TIPC MDS transport will provide part of > >> ncsmds_callback_info > >>> for follwing events : > >>> > >>> - MDS_CALLBACK_DEC_INFO > >>> - MDS_CALLBACK_RECEIVE_INFO > >>> - MDS_CALLBACK_DIRECT_RECEIVE_INFO > >>> > >>> > >>> Example : > >>> > >>> Feb 5 11:41:06 SC-1 osaflogd[21413]: LGS: mds_dec() node_name : > SC-1 > >>> evt.type :0 from ncsmds_callback_info > >>> Feb 5 11:41:06 SC-1 osaflogd[21413]: LGS: mds_rcv() node_name : > SC-1 > >>> evt.type :4 from ncsmds_callback_info > >>> Feb 5 11:41:06 SC-1 osaflogd[21413]: LGS: mds_dec() node_name : > SC-2 > >>> evt.type :0 from ncsmds_callback_info > >>> Feb 5 11:41:06 SC-1 osaflogd[21413]: LGS: mds_rcv() node_name : > SC-2 > >>> evt.type :0 from ncsmds_callback_info > >>> > >>> diff --git a/osaf/libs/core/include/mds_papi.h > >>> b/osaf/libs/core/include/mds_papi.h > >>> --- a/osaf/libs/core/include/mds_papi.h > >>> +++ b/osaf/libs/core/include/mds_papi.h > >>> @@ -700,6 +700,7 @@ typedef uint8_t *MDS_DIRECT_BUFF; > >>> NCSCONTEXT o_msg; /* New message resulting from decode > >>> */ > >>> NODE_ID i_node_id; /* Node id of the sender > >> */ > >>> MDS_CLIENT_MSG_FORMAT_VER i_msg_fmt_ver; > >>> + char i_node_name[HOST_NAME_MAX]; /* Node Name of the > >>> sender */ > >>> > >>> } MDS_CALLBACK_DEC_INFO; > >>> > >>> @@ -732,6 +733,7 @@ unpack individual structure members. */ > >>> MDS_SVC_ID i_to_svc_id; > >>> MDS_SEND_PRIORITY_TYPE i_priority; /* Priority with > >> which > >>> this message was sent */ > >>> NODE_ID i_node_id; /* Node id of the sender > >> */ > >>> + char i_node_name[HOST_NAME_MAX]; /* Node Name of the > >>> sender */ > >>> > >>> /* Local handle to the PWE of "svc_id". It is meaningful > >> only to > >>> "Global > >>> MDS services". Global MDS services are global to a > >>> "MDS_DEST" scope. > >>> @@ -764,6 +766,7 @@ unpack individual structure members. */ > >>> MDS_SVC_ID i_to_svc_id; > >>> MDS_SEND_PRIORITY_TYPE i_priority; /* Priority with > >> which > >>> this message was sent */ > >>> NODE_ID i_node_id; /* Node id of the sender > >> */ > >>> + char i_node_name[HOST_NAME_MAX]; /* Node Name of the > >>> sender */ > >>> > >>> /* Local handle to the PWE of "svc_id". It is meaningful > >> only to > >>> "Global > >>> MDS services". Global MDS services are global to a > >>> "MDS_DEST" scope. > >>> @@ -835,8 +838,11 @@ unpack individual structure members. */ > >>> NCSMDS_NODE_CHG node_chg; > >>> NODE_ID node_id; > >>> uint16_t addr_family; > >>> - uint16_t length; > >>> + uint16_t length; /* will be deprecated after few version > */ > >>> + uint16_t ip_addr_len; > >>> uint8_t ip_addr[INET6_ADDRSTRLEN]; > >>> + uint16_t i_node_name_len; > >>> + char i_node_name[HOST_NAME_MAX]; /* Node Name of the > >>> sender */ > >>> } MDS_CALLBACK_NODE_EVENT_INFO; > >>> > >>> typedef struct mds_callback_msg_loss_event_info { > >>> 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 > >>> @@ -106,9 +106,9 @@ typedef struct mds_mcm_sync_send_queue { > >>> MDS_DEST adest; > >>> } dest_sndrack_adest; /* Filled, when the sndrack and > >>> redrack is > >>> being sent to originator and checked when ack > >>> is recd for the sent sndrack or redrack > >> */ > >>> - > >>> struct mds_mcm_sync_send_queue *next_send; > >>> MDS_CLIENT_MSG_FORMAT_VER msg_fmt_ver; > >>> + char i_node_name[HOST_NAME_MAX]; /* Node Name of the > sender*/ > >>> > >>> } MDS_MCM_SYNC_SEND_QUEUE; > >>> > >>> @@ -287,6 +287,8 @@ MDS_SVC_INFO *mds_get_svc_info_by_hdl(MD > >>> typedef struct mds_mcm_cb { > >>> MDS_DEST adest; > >>> char adest_details[MDS_MAX_PROCESS_NAME_LEN]; /* > >>> <node[slotno]:processname[pid]> */ > >>> + char node_name[HOST_NAME_MAX]; /* Node Name of this Node*/ > >>> + uint8_t node_name_len; /* configured Node Name len of this > Node*/ > >>> > >>> /* List of all subscription results > >>> MDS_SUBSCRIPTION_RESULTS_INFO */ > >>> NCS_PATRICIA_TREE subtn_results; > >>> diff --git a/osaf/libs/core/mds/include/mds_dt.h > >>> b/osaf/libs/core/mds/include/mds_dt.h > >>> --- a/osaf/libs/core/mds/include/mds_dt.h > >>> +++ b/osaf/libs/core/mds/include/mds_dt.h > >>> @@ -73,8 +73,7 @@ typedef struct mdtm_reassembly_queue { > >>> } MDTM_REASSEMBLY_QUEUE; > >>> > >>> /* Defines regarding to the Send and receive buff sizes */ > >>> -#define MDS_HDR_LEN 24 /* Mds_prot-4bit, > Mds_version-2bit , > >> Msg > >>> prior-2bit, Hdr_len-16bit, Seq_no-32bit, Enc_dec_type-2bit, > >>> Msg_snd_type- > >>> 6bit, > >>> - Pwe_id-16bit, Sndr_vdest_id-16bit, > >>> Sndr_svc_id-16bit, Rcvr_vdest_id-16bit, Rcvr_svc_id-16bit, > >>> Exch_id-32bit, > >>> App_Vers-16bit */ > >>> +#define MDS_HDR_LEN 25 /* Mds_prot-4bit, > Mds_version-2bit , > >>> Msg prior-2bit, Hdr_len-16bit, Seq_no-32bit, Enc_dec_type-2bit, > >>> Msg_snd_type-6bit, Pwe_id-16bit, Sndr_vdest_id-16bit, > >>> Sndr_svc_id-16bit, > >>> Rcvr_vdest_id-16bit, Rcvr_svc_id-16bit, Exch_id-32bit, > App_Vers-16bit > >>> node_name_len-8bit, dynamic value > node_name-<HOST_NAME_MAX>bits*/ > >>> > >>> /* Following defines the positions of each field in the mds hdr > */ > >>> #define MDS_HEADER_PROT_VER_PRIOR_POSITION 0 > >>> @@ -88,6 +87,8 @@ typedef struct mdtm_reassembly_queue { > >>> #define MDS_HEADER_RCVR_SVC_ID_POSITION 16 > >>> #define MDS_HEADER_EXCHG_ID_POSITION 18 > >>> #define MDS_HEADER_APP_VERSION_ID_POSITION 22 > >>> +#define MDS_HEADER_NODE_NAME_LEN_POSITION 24 > >>> +#define MDS_HEADER_NODE_NAME_POSITION 25 > >>> > >>> #define MDTM_FRAG_HDR_LEN 8 /* Msg Seq_no-32bit, More > Frag-1bit, > >>> Frag_num-15bit, Frag_size-16bit */ > >>> > >>> 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 > >>> @@ -43,7 +43,7 @@ typedef uint8_t MDS_SVC_ARCHWORD_TYPE; / > >>> * Version 0 uses 1400 bytes fragmentation. > >>> * Version 1 uses TIPC max msg (66000 bytes) fragmentation. > >>> */ > >>> -#define MDS_SELF_ARCHWORD ((MDS_SVC_ARCHWORD_TYPE) > >>> ((MDS_WORD_SIZE_TYPE<<3) | 1)) > >>> +#define MDS_SELF_ARCHWORD ((MDS_SVC_ARCHWORD_TYPE) > >>> ((MDS_WORD_SIZE_TYPE<<3) | 2)) > >>> > >>> typedef enum { > >>> MDS_VIEW_NORMAL, > >>> @@ -106,6 +106,8 @@ typedef struct mds_data_recv { > >>> MDS_CLIENT_MSG_FORMAT_VER msg_fmt_ver; /* message format > >>> version specification */ > >>> MDS_SVC_PVT_SUB_PART_VER src_svc_sub_part_ver; > >>> MDS_SVC_ARCHWORD_TYPE msg_arch_word; > >>> + uint8_t src_node_name_len; > >>> + char src_node_name[HOST_NAME_MAX]; /* Node Name of the > >>> sender/source*/ > >>> uint32_t src_seq_num; > >>> pid_t pid; > >>> uid_t uid; > >>> @@ -400,7 +402,7 @@ extern uint32_t mds_mcm_svc_down(PW_ENV_ > >>> MDS_SVC_PVT_SUB_PART_VER svc_sub_part_ver, > >>> MDS_SVC_ARCHWORD_TYPE archword_type); > >>> > >>> /* NODE UP */ > >>> -extern uint32_t mds_mcm_node_up(MDS_SVC_HDL local_svc_hdl, > NODE_ID > >>> node_id, char *node_ip, uint16_t addr_family); > >>> +extern uint32_t mds_mcm_node_up(MDS_SVC_HDL local_svc_hdl, > NODE_ID > >>> node_id, char *node_ip, uint16_t addr_family, char *node_name); > >>> > >>> /* NODE DOWN */ > >>> extern uint32_t mds_mcm_node_down(MDS_SVC_HDL local_svc_hdl, > NODE_ID > >>> node_id, uint16_t addr_family); > >>> 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 > >>> @@ -2884,8 +2884,7 @@ else (entry exists) > >>> 2 - NCSCC_RC_FAILURE > >>> > >>> *********************************************************/ > >>> -uint32_t mds_mcm_node_up(MDS_SVC_HDL local_svc_hdl, NODE_ID > node_id, > >>> char *node_ip, uint16_t addr_family) > >>> - > >>> +uint32_t mds_mcm_node_up(MDS_SVC_HDL local_svc_hdl, NODE_ID > node_id, > >>> char *node_ip, uint16_t addr_family, char *node_name) > >>> { > >>> MDS_MCM_MSG_ELEM *event_msg = NULL; > >>> MDS_SVC_INFO *local_svc_info = NULL; > >>> @@ -2929,13 +2928,18 @@ uint32_t mds_mcm_node_up(MDS_SVC_HDL loc > >>> cbinfo->info.node_evt.node_id = node_id; > >>> cbinfo->info.node_evt.addr_family = addr_family; > >>> if (node_ip) { > >>> - memcpy(cbinfo->info.node_evt.ip_addr, node_ip, > >>> INET6_ADDRSTRLEN); > >>> - cbinfo->info.node_evt.length = strlen(node_ip); > >>> + cbinfo->info.node_evt.ip_addr_len = strlen(node_ip); > >>> + cbinfo->info.node_evt.length = cbinfo- > >>>> info.node_evt.ip_addr_len; > >>> + memcpy(cbinfo->info.node_evt.ip_addr, node_ip, cbinfo- > >>>> info.node_evt.ip_addr_len); > >>> } > >>> > >>> m_MDS_LOG_INFO("MDTM: node up node_ip:%s, length:%d > >>> node_id:%u addr_family:%d msg_type:%d", > >>> - cbinfo->info.node_evt.ip_addr, cbinfo- > >>>> info.node_evt.length, > >>> + cbinfo->info.node_evt.ip_addr, cbinfo- > >>>> info.node_evt.ip_addr_len, > >>> cbinfo->info.node_evt.node_id, cbinfo- > >>>> info.node_evt.addr_family, cbinfo->info.node_evt.node_chg); > >>> + if (node_name) { > >>> + cbinfo->info.node_evt.i_node_name_len = > strlen(node_name); > >>> + strncpy(cbinfo->info.node_evt.i_node_name, node_name, > >>> cbinfo->info.node_evt.i_node_name_len); > >>> + } > >>> > >>> /* Post to mail box If Q Ownership is enabled Else Call user > >> callback */ > >>> if (local_svc_info->q_ownership == true) { > >>> 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 > >>> @@ -4289,6 +4289,7 @@ static uint32_t mds_mcm_process_recv_snd > >>> cbinfo.info.receive.i_to_svc_id = svccb->svc_id; > >>> cbinfo.info.receive.i_priority = recv->pri; > >>> cbinfo.info.receive.i_msg_fmt_ver = recv- > >>>> msg_fmt_ver; > >>> + strncpy(cbinfo.info.receive.i_node_name, recv- > >>>> src_node_name , recv->src_node_name_len); > >>> } else if (recv->msg.encoding == > MDS_ENC_TYPE_DIRECT_BUFF) > >>> { > >>> cbinfo.i_op = MDS_CALLBACK_DIRECT_RECEIVE; > >>> cbinfo.info.direct_receive.i_fr_anc = > >> recv->src_adest; > >>> @@ -4319,6 +4320,7 @@ static uint32_t mds_mcm_process_recv_snd > >>> cbinfo.info.direct_receive.i_to_svc_id = > >> svccb->svc_id; > >>> cbinfo.info.direct_receive.i_priority = recv->pri; > >>> cbinfo.info.direct_receive.i_msg_fmt_ver = recv- > >>>> msg_fmt_ver; > >>> + strncpy(cbinfo.info.direct_receive.i_node_name, > >> recv- > >>>> src_node_name , recv->src_node_name_len); > >>> } else if (recv->msg.encoding == MDS_ENC_TYPE_CPY) { > >>> cbinfo.i_op = MDS_CALLBACK_RECEIVE; > >>> > >>> @@ -4346,6 +4348,7 @@ static uint32_t mds_mcm_process_recv_snd > >>> cbinfo.info.receive.i_to_svc_id = svccb->svc_id; > >>> cbinfo.info.receive.i_priority = recv->pri; > >>> cbinfo.info.receive.i_msg_fmt_ver = recv- > >>>> msg_fmt_ver; > >>> + strncpy(cbinfo.info.receive.i_node_name, recv- > >>>> src_node_name , recv->src_node_name_len); > >>> } else { > >>> mds_mcm_free_msg_memory(recv->msg); > >>> return NCSCC_RC_FAILURE; > >>> @@ -4904,6 +4907,7 @@ static uint32_t mds_mcm_do_decode_full_o > >>> cbinfo->info.dec.o_msg = orig_msg; > >>> > >>> cbinfo->info.dec.i_msg_fmt_ver = recv_msg->msg_fmt_ver; > >>> + strncpy(cbinfo->info.dec.i_node_name, recv_msg- > >>>> src_node_name , recv_msg->src_node_name_len); > >>> m_MDS_LOG_DBG("MDS_SND_RCV : calling callback ptr\n"); > >>> > >>> @@ -4923,6 +4927,7 @@ static uint32_t mds_mcm_do_decode_full_o > >>> cbinfo->info.dec_flat.o_msg = orig_msg; > >>> > >>> cbinfo->info.dec_flat.i_msg_fmt_ver = > recv_msg->msg_fmt_ver; > >>> + strncpy(cbinfo->info.dec_flat.i_node_name, recv_msg- > >>>> src_node_name , recv_msg->src_node_name_len); > >>> m_MDS_LOG_DBG("MDS_SND_RCV : calling callback ptr\n"); > >>> > >>> if ((rc = svccb->cback_ptr(cbinfo)) != NCSCC_RC_SUCCESS) > { > >>> 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 > >>> @@ -294,13 +294,7 @@ uint32_t mdtm_process_recv_message_commo > >>> > >>> return NCSCC_RC_FAILURE; > >>> } > >>> - /* Check whether mds header length received is not less > than > >>> mds header length of this instance */ > >>> - if (len_mds_hdr < MDS_HDR_LEN) { > >>> - m_MDS_LOG_ERR > >>> - ("MDTM:Mds hdr len of recd msg (Non frag) = %d > >> is > >>> less than local mds hdr len = %d", > >>> - len_mds_hdr, MDS_HDR_LEN); > >>> - return NCSCC_RC_FAILURE; > >>> - } > >>> + > >>> > >>> data = &buffer[MDS_HEADER_PWE_ID_POSITION]; > >>> > >>> @@ -412,9 +406,26 @@ uint32_t mdtm_process_recv_message_commo > >>> break; > >>> } > >>> > >>> + data = NULL; > >>> data = &buffer[MDS_HEADER_APP_VERSION_ID_POSITION]; > >>> reassem_queue->recv.msg_fmt_ver = > >>> ncs_decode_16bit(&data); /* For the version field */ > >>> > >>> + data = NULL; > >>> + data = &buffer[MDS_HEADER_NODE_NAME_LEN_POSITION]; > >>> + reassem_queue->recv.src_node_name_len = > >>> ncs_decode_8bit(&data); > >>> + > >>> + /* Check whether mds header length received is not > less > >> than mds > >>> header length of this instance */ > >>> + if (len_mds_hdr < (MDS_HDR_LEN + reassem_queue- > >>>> recv.src_node_name_len)) { > >>> + m_MDS_LOG_ERR > >>> + ("MDTM:Mds hdr len of recd msg (Non > >>> frag) = %d > >> is less than > >>> local mds hdr len = %d", > >>> + len_mds_hdr, (MDS_HDR_LEN + > >>> reassem_queue- > >>>> recv.src_node_name_len)); > >>> + return NCSCC_RC_FAILURE; > >>> + } > >>> + > >>> + data = NULL; > >>> + data = &buffer[MDS_HEADER_NODE_NAME_POSITION]; > >>> + strncpy((char *)reassem_queue->recv.src_node_name, (char > >>> *)data, reassem_queue->recv.src_node_name_len); > >>> + > >>> reassem_queue->recv.exchange_id = xch_id; > >>> reassem_queue->next_frag_num = 0; > >>> reassem_queue->recv.dest_svc_hdl = dest_svc_hdl; > >>> @@ -519,13 +530,6 @@ uint32_t mdtm_process_recv_message_commo > >>> transport_adest); > >>> return NCSCC_RC_FAILURE; > >>> } > >>> - /* Check whether mds header length received is not less > than > >>> mds header length of this instance */ > >>> - if (len_mds_hdr < MDS_HDR_LEN) { > >>> - m_MDS_LOG_DBG > >>> - ("MDTM:Mds hdr len of recd msg(Frag first pkt) = > >> %d > >>> is less than local mds hdr len = %d", > >>> - len_mds_hdr, MDS_HDR_LEN); > >>> - return NCSCC_RC_FAILURE; > >>> - } > >>> data = &buffer[MDS_HEADER_PWE_ID_POSITION + > >>> MDTM_FRAG_HDR_LEN]; > >>> > >>> pwe_id = ncs_decode_16bit(&data); > >>> @@ -642,6 +646,23 @@ uint32_t mdtm_process_recv_message_commo > >>> data = &buffer[MDS_HEADER_APP_VERSION_ID_POSITION + > >>> MDTM_FRAG_HDR_LEN]; > >>> reassem_queue->recv.msg_fmt_ver = > >>> ncs_decode_16bit(&data); /* For the version field */ > >>> > >>> + > >>> + data = NULL; > >>> + data = &buffer[MDS_HEADER_NODE_NAME_LEN_POSITION + > >>> MDTM_FRAG_HDR_LEN]; > >>> + reassem_queue->recv.src_node_name_len = > >>> ncs_decode_8bit(&data); > >>> + > >>> + /* Check whether mds header length received is not less > than > >>> mds header length of this instance */ > >>> + if (len_mds_hdr < (MDS_HDR_LEN + reassem_queue- > >>>> recv.src_node_name_len)) { > >>> + m_MDS_LOG_ERR > >>> + ("MDTM:Mds hdr len of recd msg ( frag) = %d > >> is > >>> less than local mds hdr len = %d", > >>> + len_mds_hdr, (MDS_HDR_LEN + > >>> reassem_queue->recv.src_node_name_len)); > >>> + return NCSCC_RC_FAILURE; > >>> + } > >>> + > >>> + data = NULL; > >>> + data = &buffer[MDS_HEADER_NODE_NAME_POSITION + > >>> MDTM_FRAG_HDR_LEN]; > >>> + strncpy((char > *)reassem_queue->recv.src_node_name, > >>> (char > >> *)data, > >>> reassem_queue->recv.src_node_name_len); > >>> + > >>> reassem_queue->recv.exchange_id = xch_id; > >>> reassem_queue->next_frag_num = 2; > >>> reassem_queue->recv.dest_svc_hdl = dest_svc_hdl; > >>> 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 > >>> @@ -710,9 +710,11 @@ static uint32_t mdtm_process_recv_events > >>> assert(0); > >>> } > >>> } > >>> - } else if (pfd[0].revents & POLLHUP) { /* This > >> value is > >>> returned when the number of subscriptions made cross the tipc > >>> max_subscr > >>> limit, so no more connection to the tipc topserver is present(viz > no > >>> more > >>> up/down events), so abort and exit the process */ > >>> - m_MDS_LOG_CRITICAL > >>> - ("MDTM: POLLHUP returned on Discovery > >>> Socket, No. of subscriptions=%d", > >>> + } else if (pfd[0].revents & POLLHUP) { > >>> + /* This value is returned when the number of > >>> subscriptions made cross the tipc max_subscr limit, > >>> + so no more connection to the tipc > >> topserver > >>> is present(viz no more up/down events), > >>> + so abort and exit the process */ > >>> + m_MDS_LOG_CRITICAL("MDTM: POLLHUP > >>> returned on Discovery Socket, No. of subscriptions=%d", > >>> num_subscriptions); > >>> abort(); /* This means, the process > >> is use less > >>> as > >>> it has lost the > >> connectivity > >>> with the topology server > >>> @@ -980,7 +982,8 @@ static uint32_t mdtm_process_discovery_e > >>> } else { > >>> m_MDS_LOG_ERR("MDTM: Dropping the svc > >>> event for svc_id = %s(%d), subscribed by " > >>> "svc_id = %s(%d) as the TIPC > >>> NODEid is not in the prescribed range=0x%08x, SVC Event type=%d", > >>> - get_svc_names(svc_id), svc_id, > >>> get_svc_names(m_MDS_GET_SVC_ID_FROM_SVC_HDL(svc_hdl)), > >>> m_MDS_GET_SVC_ID_FROM_SVC_HDL(svc_hdl), node, discovery_event); > >>> + get_svc_names(svc_id), > >> svc_id, > >>> get_svc_names(m_MDS_GET_SVC_ID_FROM_SVC_HDL(svc_hdl)), > >>> + > >>> 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), > >>> @@ -988,26 +991,30 @@ static uint32_t mdtm_process_discovery_e > >>> > >>> if (TIPC_PUBLISHED == discovery_event) { > >>> m_MDS_LOG_NOTIFY("MDTM: svc up event for > >>> svc_id = %s(%d), subscri. by svc_id = %s(%d) pwe_id=%d Adest = > %s", > >>> - get_svc_names(svc_id), svc_id, > >>> get_svc_names(m_MDS_GET_SVC_ID_FROM_SVC_HDL(svc_hdl)), > >>> m_MDS_GET_SVC_ID_FROM_SVC_HDL(svc_hdl), pwe_id, adest_details); > >>> + get_svc_names(svc_id), > >> svc_id, > >>> get_svc_names(m_MDS_GET_SVC_ID_FROM_SVC_HDL(svc_hdl)), > >>> + > >>> m_MDS_GET_SVC_ID_FROM_SVC_HDL(svc_hdl), pwe_id, > adest_details); > >>> > >>> if (NCSCC_RC_SUCCESS != > >>> mds_mcm_svc_up(pwe_id, svc_id, role, scope, > >>> > >> vdest, > >>> policy, adest, 0, svc_hdl, subtn_ref_val, > >>> > >>> svc_sub_part_ver, archword_type)) { > >>> m_MDS_LOG_ERR("SVC-UP Event > >>> processsing failed for svc_id = %s(%d), subscribed by svc_id = > %s(%d)", > >>> - get_svc_names(svc_id), svc_id, > >>> get_svc_names(m_MDS_GET_SVC_ID_FROM_SVC_HDL(svc_hdl)), > >>> m_MDS_GET_SVC_ID_FROM_SVC_HDL(svc_hdl)); > >>> + get_svc_names(svc_id), svc_id, > >>> get_svc_names(m_MDS_GET_SVC_ID_FROM_SVC_HDL(svc_hdl)), > >>> + > >>> m_MDS_GET_SVC_ID_FROM_SVC_HDL(svc_hdl)); > >>> return NCSCC_RC_FAILURE; > >>> } > >>> return NCSCC_RC_SUCCESS; > >>> } else if (TIPC_WITHDRAWN == discovery_event) { > >>> m_MDS_LOG_NOTIFY("MDTM: svc down event > >>> for svc_id = %s(%d), subscri. by svc_id = %s(%d) pwe_id=%d Adest = > %s", > >>> - get_svc_names(svc_id), svc_id, > >>> get_svc_names(m_MDS_GET_SVC_ID_FROM_SVC_HDL(svc_hdl)), > >>> m_MDS_GET_SVC_ID_FROM_SVC_HDL(svc_hdl), pwe_id, adest_details); > >>> + get_svc_names(svc_id), > >> svc_id, > >>> get_svc_names(m_MDS_GET_SVC_ID_FROM_SVC_HDL(svc_hdl)), > >>> + > >>> m_MDS_GET_SVC_ID_FROM_SVC_HDL(svc_hdl), pwe_id, > adest_details); > >>> > >>> if (NCSCC_RC_SUCCESS != > >>> mds_mcm_svc_down(pwe_id, svc_id, role, scope, > >>> > >> vdest, > >>> policy, adest, 0, svc_hdl, > >>> > >>> subtn_ref_val, svc_sub_part_ver, > >>> > >>> archword_type)) { > >>> m_MDS_LOG_ERR("MDTM: SVC-DOWN > >>> Event processsing failed for svc_id = %s(%d), subscribed by svc_id > = > >> %s(%d)\n", > >>> - get_svc_names(svc_id), svc_id, > >>> get_svc_names(m_MDS_GET_SVC_ID_FROM_SVC_HDL(svc_hdl)), > >>> m_MDS_GET_SVC_ID_FROM_SVC_HDL(svc_hdl)); > >>> + > >> get_svc_names(svc_id), > >>> svc_id, get_svc_names(m_MDS_GET_SVC_ID_FROM_SVC_HDL(svc_hdl)), > >>> + > >>> m_MDS_GET_SVC_ID_FROM_SVC_HDL(svc_hdl)); > >>> return NCSCC_RC_FAILURE; > >>> } > >>> return NCSCC_RC_SUCCESS; > >>> @@ -1089,7 +1096,18 @@ static uint32_t mdtm_process_discovery_e > >>> > >>> if (TIPC_PUBLISHED == discovery_event) { > >>> m_MDS_LOG_INFO("MDTM: Raising the NODE > >>> UP event for NODE id = %d", node_id); > >>> - return mds_mcm_node_up(svc_hdl, node_id, > >>> NULL, AF_TIPC); > >>> + uint32_t up_node_id; > >>> + if ((up_node_id = > >>> m_MDS_GET_NODE_ID_FROM_ADEST(m_MDS_GET_ADEST)) == node_id) { > >>> + m_MDS_LOG_INFO("MDTM:NODE_UP > >>> for subtn_ref_val:%lu node_name:%s, node_id:%u addr_family:%d ", > >>> + > >>> (uint64_t)subtn_ref_val,gl_mds_mcm_cb->node_name, node_id, > >>> AF_TIPC); > >>> + return mds_mcm_node_up(svc_hdl, > >>> node_id, NULL, AF_TIPC, gl_mds_mcm_cb->node_name); > >>> + } else { > >>> + > >>> + m_MDS_LOG_INFO("MDTM:NODE_UP > >>> for subtn_ref_val:%lu node_name:%s, node_id:%u addr_family:%d ", > >>> + > >> (uint64_t)subtn_ref_val, "REMOTE_NODE", > >>> node_id, AF_TIPC); > >>> + return mds_mcm_node_up(svc_hdl, > >>> node_id, NULL, AF_TIPC, "REMOTE_NODE"); > >>> + } > >>> + > >>> } else if (TIPC_WITHDRAWN == discovery_event) { > >>> m_MDS_LOG_INFO("MDTM: Raising the NODE > >>> DOWN event for NODE id = %d", node_id); > >>> return mds_mcm_node_down(svc_hdl, > >>> node_id, AF_TIPC); > >>> @@ -2024,6 +2042,15 @@ uint32_t mds_mdtm_send_tipc(MDTM_SEND_RE > >>> send message > >>> */ > >>> uint32_t status = 0; > >>> + uint32_t sum_mds_hdr_plus_mdtm_hdr_plus_len; > >>> + int version = req->msg_arch_word & 0x7; > >>> + if (version > 1) { > >>> + sum_mds_hdr_plus_mdtm_hdr_plus_len = > >>> (SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN + gl_mds_mcm_cb- > >>>> node_name_len); > >>> + } else { > >>> + /* sending message to Old version Node */ > >>> + sum_mds_hdr_plus_mdtm_hdr_plus_len = > >>> (SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN - 1 ); > >>> + syslog(LOG_ERR, "LOG: inservice-testing sending message > to > >>> Old version Node hdr_plus_len : %d", > >>> sum_mds_hdr_plus_mdtm_hdr_plus_len); > >>> + } > >>> > >>> if (req->to == DESTINATION_SAME_PROCESS) { > >>> MDS_DATA_RECV recv; > >>> @@ -2043,6 +2070,7 @@ uint32_t mds_mdtm_send_tipc(MDTM_SEND_RE > >>> recv.msg_fmt_ver = req->msg_fmt_ver; > >>> recv.src_svc_sub_part_ver = req->src_svc_sub_part_ver; > >>> > >>> + strncpy((char *)recv.src_node_name, (char > *)gl_mds_mcm_cb- > >>>> node_name, gl_mds_mcm_cb->node_name_len); > >>> /* This is exclusively for the Bcast ENC and ENC_FLAT > case > >> */ > >>> if (recv.msg.encoding == MDS_ENC_TYPE_FULL) { > >>> ncs_dec_init_space(&recv.msg.data.fullenc_uba, > >>> recv.msg.data.fullenc_uba.start); > >>> @@ -2081,7 +2109,7 @@ uint32_t mds_mdtm_send_tipc(MDTM_SEND_RE > >>> > >>> /* Only for the ack and not for any other message */ > >>> if (req->snd_type == MDS_SENDTYPE_ACK || req->snd_type == > >>> MDS_SENDTYPE_RACK) { > >>> - uint8_t len = > >>> SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN; > >>> + uint8_t len = sum_mds_hdr_plus_mdtm_hdr_plus_len; > >>> uint8_t buffer_ack[len]; > >>> > >>> /* Add mds_hdr */ > >>> @@ -2124,7 +2152,6 @@ uint32_t mds_mdtm_send_tipc(MDTM_SEND_RE > >>> > >>> // determine fragment limit using a bit in > >>> destination archword > >>> int frag_size; > >>> - int version = req->msg_arch_word & 0x7; > >>> if (version > 0) { > >>> // normal mode, use TIPC > >>> fragmentation > >>> frag_size = MDS_DIRECT_BUF_MAXSIZE; > >>> @@ -2141,13 +2168,13 @@ uint32_t mds_mdtm_send_tipc(MDTM_SEND_RE > >>> } else { > >>> uint8_t *p8; > >>> uint8_t *body = NULL; > >>> - body = calloc(1, len + > >>> SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN); > >>> + body = calloc(1, len + > >>> sum_mds_hdr_plus_mdtm_hdr_plus_len); > >>> > >>> p8 = (uint8_t > >>> *)m_MMGR_DATA_AT_START(usrbuf, len, (char *) > >>> - > >> (body > >>> + SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN)); > >>> - > >>> - if (p8 != (body + > >>> SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN)) > >>> - memcpy((body + > >>> SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN), p8, len); > >>> + > >> (body > >>> + sum_mds_hdr_plus_mdtm_hdr_plus_len)); > >>> + > >>> + if (p8 != (body + > >>> sum_mds_hdr_plus_mdtm_hdr_plus_len)) > >>> + memcpy((body + > >>> sum_mds_hdr_plus_mdtm_hdr_plus_len), p8, len); > >>> > >>> if (NCSCC_RC_SUCCESS != > >>> mdtm_add_mds_hdr(body, req)) { > >>> m_MDS_LOG_ERR("MDTM: > >>> Unable to add the mds Hdr to the send msg\n"); > >>> @@ -2157,7 +2184,7 @@ uint32_t mds_mdtm_send_tipc(MDTM_SEND_RE > >>> } > >>> > >>> if (NCSCC_RC_SUCCESS != > >>> - mdtm_add_frag_hdr(body, (len + > >>> SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN), > >>> + mdtm_add_frag_hdr(body, (len + > >>> sum_mds_hdr_plus_mdtm_hdr_plus_len), > >>> frag_seq_num, > >> 0)) { > >>> m_MDS_LOG_ERR("MDTM: > >>> Unable to add the frag Hdr to the send msg\n"); > >>> > >>> m_MMGR_FREE_BUFR_LIST(usrbuf); > >>> @@ -2169,7 +2196,7 @@ uint32_t mds_mdtm_send_tipc(MDTM_SEND_RE > >>> ("MDTM:Sending message with > >>> Service Seqno=%d, TO Dest_Tipc_id=<0x%08x:%u> ", > >>> req->svc_seq_num, tipc_id.node, > >>> tipc_id.ref); > >>> > >>> - len += > >>> SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN; > >>> + len += > >>> sum_mds_hdr_plus_mdtm_hdr_plus_len; > >>> if (((req->snd_type == > >>> MDS_SENDTYPE_RBCAST) || (req->snd_type == MDS_SENDTYPE_BCAST)) && > >>> (version > 0) && > >>> (tipc_mcast_enabled)) { > >>> m_MDS_LOG_DBG("MDTM: > >>> User Sending Multicast Data lenght=%d From svc_id = %s(%d) to > svc_id = > >>> %s(%d)\n", len, > >>> @@ -2208,7 +2235,7 @@ uint32_t mds_mdtm_send_tipc(MDTM_SEND_RE > >>> case MDS_ENC_TYPE_DIRECT_BUFF: > >>> { > >>> if (req->msg.data.buff_info.len > > >>> - (MDTM_MAX_DIRECT_BUFF_SIZE - > >>> SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN)) { > >>> + (MDTM_MAX_DIRECT_BUFF_SIZE - > >>> sum_mds_hdr_plus_mdtm_hdr_plus_len)) { > >>> m_MDS_LOG_CRITICAL > >>> ("MDTM: Passed pkt len is more > >>> than the single send direct buff\n"); > >>> mds_free_direct_buff(req- > >>>> msg.data.buff_info.buff); > >>> @@ -2219,7 +2246,7 @@ uint32_t mds_mdtm_send_tipc(MDTM_SEND_RE > >>> req->msg.data.buff_info.len, > >>> get_svc_names(req->src_svc_id), req->src_svc_id, > get_svc_names(req- > >>>> dest_svc_id), req->dest_svc_id); > >>> uint8_t *body = NULL; > >>> - body = calloc(1, > >> (req->msg.data.buff_info.len + > >>> SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN)); > >>> + body = calloc(1, > >> (req->msg.data.buff_info.len + > >>> sum_mds_hdr_plus_mdtm_hdr_plus_len)); > >>> > >>> if (NCSCC_RC_SUCCESS != > >>> mdtm_add_mds_hdr(body, req)) { > >>> m_MDS_LOG_ERR("MDTM: Unable to > >>> add the mds Hdr to the send msg\n"); > >>> @@ -2229,19 +2256,19 @@ uint32_t mds_mdtm_send_tipc(MDTM_SEND_RE > >>> } > >>> if (NCSCC_RC_SUCCESS != > >>> mdtm_add_frag_hdr(body, > >>> - > >> req->msg.data.buff_info.len > >>> + SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN, > >>> + > >> req->msg.data.buff_info.len > >>> + sum_mds_hdr_plus_mdtm_hdr_plus_len, > >>> frag_seq_num, 0)) { > >>> m_MDS_LOG_ERR("MDTM: Unable to > >>> add the frag Hdr to the send msg\n"); > >>> free(body); > >>> mds_free_direct_buff(req- > >>>> msg.data.buff_info.buff); > >>> return NCSCC_RC_FAILURE; > >>> } > >>> - > >>> memcpy(&body[SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN], req- > >>>> msg.data.buff_info.buff, > >>> + > >>> memcpy(&body[sum_mds_hdr_plus_mdtm_hdr_plus_len], req- > >>>> msg.data.buff_info.buff, > >>> req->msg.data.buff_info.len); > >>> > >>> if (NCSCC_RC_SUCCESS != > >>> mdtm_sendto(body, > >>> - (req->msg.data.buff_info.len > >> + > >>> SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN), > >>> + (req->msg.data.buff_info.len > >> + > >>> sum_mds_hdr_plus_mdtm_hdr_plus_len), > >>> tipc_id)) { > >>> m_MDS_LOG_ERR("MDTM: Unable to > >>> send the msg thru TIPC\n"); > >>> free(body); > >>> @@ -2298,7 +2325,17 @@ uint32_t mdtm_frag_and_send(MDTM_SEND_RE > >>> uint8_t *p8; > >>> uint16_t i = 1; > >>> uint16_t frag_val = 0; > >>> - int max_send_pkt_size = frag_size + > >>> SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN; > >>> + uint32_t sum_mds_hdr_plus_mdtm_hdr_plus_len; > >>> + int version = req->msg_arch_word & 0x7; > >>> + > >>> + if (version > 1) { > >>> + sum_mds_hdr_plus_mdtm_hdr_plus_len = > >>> (SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN + gl_mds_mcm_cb- > >>>> node_name_len); > >>> + } else { > >>> + sum_mds_hdr_plus_mdtm_hdr_plus_len = > >>> (SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN - 1 ); > >>> + syslog(LOG_ERR, "LOG: inservice-testing sending message > to > >>> Old version Node hdr_plus_len : %d", > >>> sum_mds_hdr_plus_mdtm_hdr_plus_len); > >>> + } > >>> + > >>> + int max_send_pkt_size = frag_size + > >>> sum_mds_hdr_plus_mdtm_hdr_plus_len; > >>> > >>> switch (req->msg.encoding) { > >>> case MDS_ENC_TYPE_FULL: > >>> @@ -2347,11 +2384,11 @@ uint32_t mdtm_frag_and_send(MDTM_SEND_RE > >>> body = calloc(1, len_buf); > >>> if (i == 1) { > >>> p8 = (uint8_t > >>> *)m_MMGR_DATA_AT_START(usrbuf, > >>> - (len_buf - > >>> SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN), > >>> - (char > >> *)(body > >>> + SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN)); > >>> - > >>> - if (p8 != (body + > >>> SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN)) > >>> - memcpy((body + > >>> SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN), p8, (len_buf - > >>> SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN)); > >>> + (len_buf - > >>> sum_mds_hdr_plus_mdtm_hdr_plus_len), > >>> + (char > >> *)(body > >>> + sum_mds_hdr_plus_mdtm_hdr_plus_len)); > >>> + > >>> + if (p8 != (body + > >>> sum_mds_hdr_plus_mdtm_hdr_plus_len)) > >>> + memcpy((body + > >>> sum_mds_hdr_plus_mdtm_hdr_plus_len), p8, (len_buf - > >>> sum_mds_hdr_plus_mdtm_hdr_plus_len)); > >>> > >>> if (NCSCC_RC_SUCCESS != > >>> mdtm_add_mds_hdr(body, req)) { > >>> m_MDS_LOG_ERR("MDTM: frg MDS hdr > >>> addition failed\n"); > >>> @@ -2370,9 +2407,9 @@ uint32_t mdtm_frag_and_send(MDTM_SEND_RE > >>> ("MDTM:Sending message with Service > >>> Seqno=%d, Fragment Seqnum=%d, frag_num=%d, TO > >>> Dest_Tipc_id=<0x%08x:%u>", > >>> req->svc_seq_num, seq_num, frag_val, > >>> id.node, id.ref); > >>> mdtm_sendto(body, len_buf, id); > >>> - m_MMGR_REMOVE_FROM_START(&usrbuf, > >>> len_buf - SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN); > >>> + m_MMGR_REMOVE_FROM_START(&usrbuf, > >>> len_buf - sum_mds_hdr_plus_mdtm_hdr_plus_len); > >>> free(body); > >>> - len = len - (len_buf - > >>> SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN); > >>> + len = len - (len_buf - > >>> sum_mds_hdr_plus_mdtm_hdr_plus_len); > >>> } else { > >>> p8 = (uint8_t > >>> *)m_MMGR_DATA_AT_START(usrbuf, len_buf - > >>> MDTM_FRAG_HDR_PLUS_LEN_2, > >>> (char > >> *)(body > >>> + MDTM_FRAG_HDR_PLUS_LEN_2)); > >>> @@ -2533,6 +2570,16 @@ static uint32_t mdtm_mcast_sendto(void * > >>> static uint32_t mdtm_add_mds_hdr(uint8_t *buffer, MDTM_SEND_REQ > *req) > >>> { > >>> uint8_t prot_ver = 0, enc_snd_type = 0; > >>> + uint16_t mds_hdr_len; > >>> + int version = req->msg_arch_word & 0x7; > >>> + if (version > 1) { > >>> + mds_hdr_len = (MDS_HDR_LEN + gl_mds_mcm_cb- > >>>> node_name_len); > >>> + } else { > >>> + /* Old MDS_HDR_LEN = 24 */ > >>> + mds_hdr_len = (MDS_HDR_LEN - 1); > >>> + syslog(LOG_ERR, "LOG: inservice-testing sending message > to > >>> Old version Node mds_hdr_len : %d", mds_hdr_len); > >>> + } > >>> + > >>> #ifdef MDS_CHECKSUM_ENABLE_FLAG > >>> uint8_t zero_8 = 0; > >>> #endif > >>> @@ -2564,7 +2611,7 @@ static uint32_t mdtm_add_mds_hdr(uint8_t > >>> > >>> /* MDS HDR */ > >>> ncs_encode_8bit(&ptr, prot_ver); > >>> - ncs_encode_16bit(&ptr, (uint16_t)MDS_HDR_LEN); /* Will be > >>> updated if any additional options are being added at the end */ > >>> + ncs_encode_16bit(&ptr, (uint16_t)mds_hdr_len); /* Will be > >>> updated if any additional options are being added at the end */ > >>> ncs_encode_32bit(&ptr, req->svc_seq_num); > >>> ncs_encode_8bit(&ptr, enc_snd_type); > >>> ncs_encode_16bit(&ptr, req->src_pwe_id); > >>> @@ -2594,7 +2641,10 @@ static uint32_t mdtm_add_mds_hdr(uint8_t > >>> > >>> ncs_encode_32bit(&ptr, xch_id); > >>> ncs_encode_16bit(&ptr, req->msg_fmt_ver); /* New field */ > >>> - > >>> + if (version > 1) { > >>> + ncs_encode_8bit(&ptr, gl_mds_mcm_cb->node_name_len); /* > >>> New field 1 */ > >>> + ncs_encode_octets(&ptr, (uint8_t *)gl_mds_mcm_cb- > >>>> node_name, gl_mds_mcm_cb->node_name_len); /* New field 2 */ > >>> + } > >>> return NCSCC_RC_SUCCESS; > >>> } > >>> > >>> 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 > >>> @@ -395,15 +395,47 @@ uint32_t mds_lib_req(NCS_LIB_REQ_INFO *r > >>> } > >>> } > >>> > >>> - /* Get tipc_mcast_enabled */ > >>> - if ((ptr = getenv("MDS_TIPC_MCAST_ENABLED")) != NULL) { > >>> - tipc_mcast_enabled = atoi(ptr); > >>> - if (tipc_mcast_enabled != false) > >>> - tipc_mcast_enabled = true; > >>> - > >>> - m_MDS_LOG_DBG("MDS: TIPC_MCAST_ENABLED: %d > >>> Set argument \n",tipc_mcast_enabled); > >>> +#ifdef ENABLE_TIPC_TRANSPORT > >>> + int rc; > >>> + struct stat sockStat; > >>> + FILE *fp; > >>> + > >>> + rc = stat(MDS_MDTM_CONNECT_PATH, &sockStat); > >>> + if (rc != 0) { > >>> + /* dtm intra server not exists */ > >>> + tipc_mode_enabled = true; > >>> } > >>> > >>> + if (tipc_mode_enabled) { > >>> + /* Get tipc_mcast_enabled */ > >>> + if ((ptr = getenv("MDS_TIPC_MCAST_ENABLED")) != > >>> NULL) { > >>> + tipc_mcast_enabled = atoi(ptr); > >>> + if (tipc_mcast_enabled != false) > >>> + tipc_mcast_enabled = true; > >>> + > >>> + m_MDS_LOG_DBG("MDS: > >>> TIPC_MCAST_ENABLED: %d Set argument \n",tipc_mcast_enabled); > >>> + } > >>> + > >>> + } > >>> +#endif > >>> + fp = fopen(PKGSYSCONFDIR "/node_name", "r"); > >>> + if (fp == NULL) { > >>> + LOG_ER("MDS:TIPC Could not open file node_name "); > >>> + mds_mcm_destroy(); > >>> + osaf_mutex_unlock_ordie(&gl_mds_library_mutex); > >>> + return m_LEAP_DBG_SINK(NCSCC_RC_FAILURE); > >>> + } > >>> + if (EOF == fscanf(fp, "%s", gl_mds_mcm_cb->node_name)) { > >>> + fclose(fp); > >>> + LOG_ER("MDS:TIPC Could not get node name "); > >>> + mds_mcm_destroy(); > >>> + osaf_mutex_unlock_ordie(&gl_mds_library_mutex); > >>> + return m_LEAP_DBG_SINK(NCSCC_RC_FAILURE); > >>> + } > >>> + fclose(fp); > >>> + gl_mds_mcm_cb->node_name_len = > >>> (uint8_t)strlen(gl_mds_mcm_cb->node_name); > >>> + m_MDS_LOG_DBG("MDS:TIPC config->node_name : %s", > >>> gl_mds_mcm_cb->node_name); > >>> + > >>> /* to use cluster id in mds prefix? */ > >>> > >>> /* Get gl_mds_log_level */ > >>> @@ -599,15 +631,6 @@ uint32_t mds_lib_req(NCS_LIB_REQ_INFO *r > >>> void mds_init_transport(void) > >>> { > >>> #ifdef ENABLE_TIPC_TRANSPORT > >>> - int rc; > >>> - struct stat sockStat; > >>> - > >>> - rc = stat(MDS_MDTM_CONNECT_PATH, &sockStat); > >>> - if (rc != 0) { > >>> - /* dtm intra server not exists */ > >>> - tipc_mode_enabled = true; > >>> - } > >>> - > >>> if (tipc_mode_enabled) { > >>> mds_mdtm_init = mdtm_tipc_init; > >>> mds_mdtm_destroy = mdtm_tipc_destroy; > >>> > >>> > --------------------------------------------------------------------------- > > >>> > >> --- > >>> Site24x7 APM Insight: Get Deep Visibility into Application > Performance > >>> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month > >>> Monitor end-to-end web transactions and take corrective actions > now > >>> Troubleshoot faster and improve end-user experience. Signup Now! > >>> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140 > >>> _______________________________________________ > >>> Opensaf-devel mailing list > >>> [email protected] > >>> https://lists.sourceforge.net/lists/listinfo/opensaf-devel > >> > >> > ------------------------------------------------------------------------------ > > >> > >> Site24x7 APM Insight: Get Deep Visibility into Application > Performance > >> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month > >> Monitor end-to-end web transactions and take corrective actions > now > >> Troubleshoot faster and improve end-user experience. Signup Now! > >> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140 > >> _______________________________________________ > >> Opensaf-devel mailing list > >> [email protected] > >> https://lists.sourceforge.net/lists/listinfo/opensaf-devel > >> > > ------------------------------------------------------------------------------ Site24x7 APM Insight: Get Deep Visibility into Application Performance APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month Monitor end-to-end web transactions and take corrective actions now Troubleshoot faster and improve end-user experience. Signup Now! http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140 _______________________________________________ Opensaf-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/opensaf-devel
