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?

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

Reply via email to