Hi Lennart ,

On 2/5/2016 5:30 PM, Lennart Lund wrote:
A patch (2 of 3) seems to be missing and it's not possible to build.

I Just copyed the ` PATCH_1_of_3.patch , PATCH_2_of_3.patch & PATCH_3_of_3.patch` form the published mail ( please find attached for your reference) and able to build rpms successfully with `gcc version 4.8.3 (GCC)` and Opensaf configure options `./bootstrap.sh ; ./configure --enable-tipc --enable-imm-pbe`
on SUSE Linux Enterprise Server 11 SP2  (x86_64) .

Can you provide what was the build error you are facing .

- AVM


On 2/5/2016 5:30 PM, Lennart Lund wrote:
Hi Mahesh

I have looked at the test logs in the log code and I have not seen any 
surprises. Since this will work with both TIPC and TCP it will be form the log 
perspective a good solution.
However I have not been able to build and test, a patch (2 of 3) seems to be 
missing and it's not possible to build.

Thanks
Lennart

-----Original Message-----
From: [email protected] [mailto:[email protected]]
Sent: den 5 februari 2016 07:26
To: Lennart Lund; Beatriz Brandao; [email protected];
[email protected]
Cc: [email protected]
Subject: [PATCH 0 of 3] Review Request for MDS: Include node name as a
part of Transport callback_info events [#1522]

Summary:MDS: Include node name as a part of Transport callback_info
events [#1522]
Review request for Trac Ticket(s): #1522
Peer Reviewer(s): Lennart /Beatriz /Mathi /Ramesh
Pull request to: avm
Affected branch(es): default
Development branch: default

--------------------------------
Impacted area       Impact y/n
--------------------------------
  Docs                    n
  Build system            n
  RPM/packaging           n
  Configuration files     n
  Startup scripts         n
  SAF services            n
  OpenSAF services        n
  Core libraries          y
  Samples                 n
  Tests                   n
  Other                   n


Comments (indicate scope for each "y" above):
---------------------------------------------

changeset 690a41fd9dae68acda8b692f47455a879703b941
Author: A V Mahesh <[email protected]>
Date:   Fri, 05 Feb 2016 11:43:56 +0530

        MDS:TIPC include node name as a part of callback_info events
[#1522]
        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

changeset 1137585f6e9af2c3b4e66363d94454dcb5133895
Author: A V Mahesh <[email protected]>
Date:   Fri, 05 Feb 2016 11:46:34 +0530

        MDS:TCP include node name as a part of callback_info events
[#1522] This
        patch enhancement the Opensaf Transport provides Node
Name of the sender
        as part of ncsmds_callback_info (NCSMDS_CALLBACK_INFO).

         This enhancement is implemented for both TCP & TIPC
        Transport.

         In additional to TIPC Transport 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).

         TCP MDS transport will provide part of
        ncsmds_callback_info for following events :

         - MDS_CALLBACK_NODE_EVENT_INFO
                        - MDS_CALLBACK_DEC_INFO
                        - MDS_CALLBACK_RECEIVE_INFO
                        - MDS_CALLBACK_DIRECT_RECEIVE_INFO

         Example :

         Feb 5 11:41:02 SC-2 osafclmd[16086]: TEST LGS:node_name :
        SC-1 NCSMDS_NODE_UP ncsmds_callback_info Feb 5 11:41:02
        SC-2 osafclmd[16086]: TEST LGS:node_name : SC-2
NCSMDS_NODE_UP
        ncsmds_callback_info

         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

changeset 8b761c82746a547b7cd60cf8e98e983172975a74
Author: A V Mahesh <[email protected]>
Date:   Fri, 05 Feb 2016 11:49:30 +0530

        MDS: use case examples of node_name from
NCSMDS_CALLBACK_INFO [#1522]
        Example node_name from ncsmds_callback_info
(NCSMDS_CALLBACK_INFO) use case
        this will not be committed , just to show use case.


Complete diffstat:
------------------
  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_dt_trans.c                          |  108
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++-----------------------------------
  osaf/libs/core/mds/mds_main.c                              |   55
+++++++++++++++++++++++++++++++++++++++----------------
  osaf/services/infrastructure/dtms/dtm/dtm_intra.c          |    8 ++++----
  osaf/services/infrastructure/dtms/dtm/dtm_intra_svc.c      |   20
++++++++++++++------
  osaf/services/infrastructure/dtms/dtm/dtm_node.c           |    4 ++--
  osaf/services/infrastructure/dtms/include/dtm_cb.h         |    5 ++---
  osaf/services/infrastructure/dtms/include/dtm_intra.h      |    2 +-
  osaf/services/infrastructure/dtms/include/dtm_intra_disc.h |    5 +++--
  osaf/services/saf/clmsv/clms/clms_mds.c                    |    1 +
  osaf/services/saf/logsv/lgs/lgs_mds.cc                     |    4 ++--
  18 files changed, 290 insertions(+), 129 deletions(-)


Testing Commands:
-----------------
Patch 4 of 4 provided use case.

Testing, Expected Results:
--------------------------


Conditions of Submission:
-------------------------
  <<HOW MANY DAYS BEFORE PUSHING, CONSENSUS ETC>>


Arch      Built     Started    Linux distro
-------------------------------------------
mips        n          n
mips64      n          n
x86         n          n
x86_64      y          y
powerpc     n          n
powerpc64   n          n


Reviewer Checklist:
-------------------
[Submitters: make sure that your review doesn't trigger any checkmarks!]


Your checkin has not passed review because (see checked entries):

___ Your RR template is generally incomplete; it has too many blank entries
     that need proper data filled in.

___ You have failed to nominate the proper persons for review and push.

___ Your patches do not have proper short+long header

___ You have grammar/spelling in your header that is unacceptable.

___ You have exceeded a sensible line length in your
headers/comments/text.

___ You have failed to put in a proper Trac Ticket # into your commits.

___ You have incorrectly put/left internal data in your comments/files
     (i.e. internal bug tracking tool IDs, product names etc)

___ You have not given any evidence of testing beyond basic build tests.
     Demonstrate some level of runtime or other sanity testing.

___ You have ^M present in some of your files. These have to be removed.

___ You have needlessly changed whitespace or added whitespace crimes
     like trailing spaces, or spaces before tabs.

___ You have mixed real technical changes with whitespace and other
     cosmetic code cleanup changes. These have to be separate commits.

___ You need to refactor your submission into logical chunks; there is
     too much content into a single commit.

___ You have extraneous garbage in your review (merge commits etc)

___ You have giant attachments which should never have been sent;
     Instead you should place your content in a public tree to be pulled.

___ You have too many commits attached to an e-mail; resend as threaded
     commits, or place in a public tree for a pull.

___ You have resent this content multiple times without a clear indication
     of what has changed between each re-send.

___ You have failed to adequately and individually address all of the
     comments and change requests that were proposed in the initial review.

___ You have a misconfigured ~/.hgrc file (i.e. username, email etc)

___ Your computer have a badly configured date and time; confusing the
     the threaded patch review.

___ Your changes affect IPC mechanism, and you don't present any results
     for in-service upgradability test.

___ Your changes affect user manual and documentation, your patch series
     do not contain the patch that updates the Doxygen manual.

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;

diff --git a/osaf/libs/core/mds/mds_dt_trans.c b/osaf/libs/core/mds/mds_dt_trans.c
--- a/osaf/libs/core/mds/mds_dt_trans.c
+++ b/osaf/libs/core/mds/mds_dt_trans.c
@@ -33,8 +33,9 @@
 #define MDTM_FRAG_HDR_PLUS_LEN_2_TCP (2 + MDS_SEND_ADDRINFO_TCP + MDTM_FRAG_HDR_LEN_TCP)
 
 /* Defines regarding to the Send and receive buff sizes */
-#define MDS_HDR_LEN_TCP         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_TCP         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 */
 
 #define MDTM_FRAG_HDR_LEN_TCP    8	/* Msg Seq_no-32bit, More Frag-1bit, Frag_num-15bit, Frag_size-16bit */
 #define MDS_SEND_ADDRINFO_TCP    22	/* Identifier-32bit, Version-8bit, message type-8bit, DestNodeid-32bit, DestProcessid-32bit, SrcNodeid-32bit, SrcProcessid-32bit */
@@ -87,6 +88,15 @@ static uint32_t mdtm_add_mds_hdr_tcp(uin
 	uint32_t zero_32 = 0;
 
 	uint32_t xch_id = 0;
+	uint16_t mds_hdr_len_tcp;
+	int version = req->msg_arch_word & 0x7;
+	if (version > 1) {
+		mds_hdr_len_tcp = (MDS_HDR_LEN_TCP + gl_mds_mcm_cb->node_name_len);
+	} else {
+		/* Old MDS_HDR_LEN = 24 */
+		mds_hdr_len_tcp  = (MDS_HDR_LEN_TCP - 1);
+		syslog(LOG_ERR, "LOG: inservice-testing sending message to Old version Node mds_hdr_len_tcp  : %d", mds_hdr_len_tcp);
+        }
 
 	uint8_t *ptr;
 	ptr = buffer;
@@ -113,10 +123,9 @@ static uint32_t mdtm_add_mds_hdr_tcp(uin
 	ncs_encode_32bit(&ptr, zero_32);
 	ncs_encode_16bit(&ptr, zero_16);
 	ncs_encode_16bit(&ptr, zero_16);
-
 	/* 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_tcp);	/* 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);
@@ -146,7 +155,10 @@ static uint32_t mdtm_add_mds_hdr_tcp(uin
 
 	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;
 }
 
@@ -226,7 +238,20 @@ static uint32_t mdtm_frag_and_send_tcp(M
 	uint8_t *p8;
 	uint16_t i = 1;
 	uint16_t frag_val = 0;
+	uint32_t sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp;
+	uint32_t mdtm_max_send_pkt_size_tcp;
+        int version = req->msg_arch_word & 0x7;
+	if (version > 1) {
 
+		sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp = (SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP + gl_mds_mcm_cb->node_name_len);
+		mdtm_max_send_pkt_size_tcp = (MDTM_MAX_SEND_PKT_SIZE_TCP + gl_mds_mcm_cb->node_name_len);
+
+	} else {
+		sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp = (SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP - 1);
+                mdtm_max_send_pkt_size_tcp = (MDTM_MAX_SEND_PKT_SIZE_TCP - 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_tcp);
+	}
+	
 	switch (req->msg.encoding) {
 	case MDS_ENC_TYPE_FULL:
 		usrbuf = req->msg.data.fullenc_uba.start;
@@ -253,11 +278,11 @@ static uint32_t mdtm_frag_and_send_tcp(M
 	while (len != 0) {
 		if (len > MDS_DIRECT_BUF_MAXSIZE) {
 			if (i == 1) {
-				len_buf = MDTM_MAX_SEND_PKT_SIZE_TCP;
+				len_buf = mdtm_max_send_pkt_size_tcp;
 				frag_val = MORE_FRAG_BIT | i;
 			} else {
-				if ((len + MDTM_FRAG_HDR_PLUS_LEN_2_TCP) > MDTM_MAX_SEND_PKT_SIZE_TCP) {
-					len_buf = MDTM_MAX_SEND_PKT_SIZE_TCP;
+				if ((len + MDTM_FRAG_HDR_PLUS_LEN_2_TCP) > mdtm_max_send_pkt_size_tcp) {
+					len_buf = mdtm_max_send_pkt_size_tcp;
 					frag_val = MORE_FRAG_BIT | i;
 				} else {
 					len_buf = len + MDTM_FRAG_HDR_PLUS_LEN_2_TCP;
@@ -273,12 +298,12 @@ static uint32_t mdtm_frag_and_send_tcp(M
 			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_TCP),
+								  (len_buf - sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp),
 								  (char *)
-								  (body + SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP));
+								  (body + sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp));
 
-				if (p8 != (body + SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP))
-					memcpy((body + SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP), p8, (len_buf - SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP));
+				if (p8 != (body + sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp))
+					memcpy((body + sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp), p8, (len_buf - sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp));
 
 				if (NCSCC_RC_SUCCESS != mdtm_add_mds_hdr_tcp(body, req, len_buf)) {
 					m_MDS_LOG_ERR("MDTM: frg MDS hdr addition failed\n");
@@ -302,9 +327,9 @@ static uint32_t mdtm_frag_and_send_tcp(M
 					return NCSCC_RC_FAILURE;
 				}
 
-				m_MMGR_REMOVE_FROM_START(&usrbuf, len_buf - SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP);
+				m_MMGR_REMOVE_FROM_START(&usrbuf, len_buf - sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp);
 				free(body);
-				len = len - (len_buf - SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP);
+				len = len - (len_buf - sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp);
 			} else {
 				p8 = (uint8_t *)m_MMGR_DATA_AT_START(usrbuf, len_buf - MDTM_FRAG_HDR_PLUS_LEN_2_TCP,
 								  (char *)(body + MDTM_FRAG_HDR_PLUS_LEN_2_TCP));
@@ -360,6 +385,15 @@ static uint32_t mdtm_frag_and_send_tcp(M
 uint32_t mds_mdtm_send_tcp(MDTM_SEND_REQ *req)
 {
 	uint32_t status = 0;
+	uint32_t sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp;
+	int version = req->msg_arch_word & 0x7;
+	if (version > 1) {
+		sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp = (SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP + gl_mds_mcm_cb->node_name_len);
+	} else {
+		sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp = (SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP - 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_tcp);
+	}
+
 
 	if (req->to == DESTINATION_SAME_PROCESS) {
 		MDS_DATA_RECV recv;
@@ -378,6 +412,8 @@ uint32_t mds_mdtm_send_tcp(MDTM_SEND_REQ
 		recv.pri = req->pri;
 		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) {
@@ -407,7 +443,7 @@ uint32_t mds_mdtm_send_tcp(MDTM_SEND_REQ
 
 		/* 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_TCP;
+			uint8_t len = sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp;
 			uint8_t buffer_ack[len];
 
 			/* Add mds_hdr */
@@ -461,17 +497,17 @@ uint32_t mds_mdtm_send_tcp(MDTM_SEND_REQ
 				} else {
 					uint8_t *p8;
 					uint8_t *body = NULL;
-					body = calloc(1, len + SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP);
+					body = calloc(1, len + sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp);
 
 					p8 = (uint8_t *)m_MMGR_DATA_AT_START(usrbuf, len, (char *)
-									  (body + SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP));
+									  (body + sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp));
 
-					if (p8 != (body + SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP))
-						memcpy((body + SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP), p8, len);
+					if (p8 != (body + sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp))
+						memcpy((body + sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp), p8, len);
 
 					if (NCSCC_RC_SUCCESS !=
 					    mdtm_add_mds_hdr_tcp(body, req,
-								 len + SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP)) {
+								 (len + sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp))) {
 						m_MDS_LOG_ERR("MDTM: Unable to add the mds Hdr to the send msg\n");
 						m_MMGR_FREE_BUFR_LIST(usrbuf);
 						free(body);
@@ -480,7 +516,7 @@ uint32_t mds_mdtm_send_tcp(MDTM_SEND_REQ
 
 					if (NCSCC_RC_SUCCESS !=
 					    mdtm_add_frag_hdr_tcp((body + 24),
-								  (len + SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP),
+								  (len + sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp),
 								  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);
@@ -492,7 +528,7 @@ uint32_t mds_mdtm_send_tcp(MDTM_SEND_REQ
 					    ("MDTM: Sending message with Service Seqno=%d, TO Dest_id=<0x%08x:%u> ",
 					     req->svc_seq_num, id.node_id, id.process_id);
 
-					if (NCSCC_RC_SUCCESS != mds_sock_send(body, (len + SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP))) {
+					if (NCSCC_RC_SUCCESS != mds_sock_send(body, (len + sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp))) {
 						m_MDS_LOG_ERR("MDTM: Unable to send the msg \n");
 						m_MMGR_FREE_BUFR_LIST(usrbuf);
 						free(body);
@@ -508,7 +544,7 @@ uint32_t mds_mdtm_send_tcp(MDTM_SEND_REQ
 		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_TCP)) {
+				    (MDTM_MAX_DIRECT_BUFF_SIZE - sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp)) {
 					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);
@@ -519,12 +555,12 @@ uint32_t mds_mdtm_send_tcp(MDTM_SEND_REQ
 					       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_TCP));
+				body = calloc(1, (req->msg.data.buff_info.len + sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp));
 
 				if (NCSCC_RC_SUCCESS !=
 				    mdtm_add_mds_hdr_tcp(body, req,
-							 req->msg.data.buff_info.len +
-							 SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP)) {
+							 (req->msg.data.buff_info.len +
+							 sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp))) {
 					m_MDS_LOG_ERR("MDTM: Unable to add the mds Hdr to the send msg\n");
 					free(body);
 					mds_free_direct_buff(req->msg.data.buff_info.buff);
@@ -533,16 +569,16 @@ uint32_t mds_mdtm_send_tcp(MDTM_SEND_REQ
 				if (NCSCC_RC_SUCCESS !=
 				    mdtm_add_frag_hdr_tcp((body + 24),
 							  req->msg.data.buff_info.len +
-							  SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP, frag_seq_num, 0)) {
+							  sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp, 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_TCP), req->msg.data.buff_info.buff,
+				memcpy((body + sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp), req->msg.data.buff_info.buff,
 				       req->msg.data.buff_info.len);
 
-				if (NCSCC_RC_SUCCESS != mds_sock_send(body, (req->msg.data.buff_info.len + SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP))) {
+				if (NCSCC_RC_SUCCESS != mds_sock_send(body, (req->msg.data.buff_info.len + sum_mds_hdr_plus_mdtm_hdr_plus_len_tcp))) {
 					m_MDS_LOG_ERR("MDTM: Unable to send the msg \n");
 					free(body);
 					mds_free_direct_buff(req->msg.data.buff_info.buff);
@@ -911,6 +947,7 @@ static uint32_t mds_mdtm_process_recvdat
 		{
 			uint16_t addr_family; /* Indicates V4 or V6 */
 			char node_ip[INET6_ADDRSTRLEN];
+			char node_name[HOST_NAME_MAX];
 			node_id = ncs_decode_32bit(&buffer);
 			ref_val = ncs_decode_64bit(&buffer);
 
@@ -922,13 +959,14 @@ static uint32_t mds_mdtm_process_recvdat
 			if (msg_type == MDTM_LIB_NODE_UP_TYPE) {
 				addr_family = ncs_decode_8bit(&buffer);
 				memset(node_ip,0, INET6_ADDRSTRLEN);
+				memset(node_name,0, HOST_NAME_MAX);
 				memcpy(node_ip, (uint8_t *)buffer, INET6_ADDRSTRLEN);
-				m_MDS_LOG_INFO("MDTM: NODE_UP node_ip:%s, node_id:%u addr_family:%d msg_type:%d",
-						node_ip, node_id, addr_family, msg_type);
-				mds_mcm_node_up(svc_hdl, node_id, node_ip, addr_family);
-			}
-
-			if (msg_type == MDTM_LIB_NODE_DOWN_TYPE) {
+				buffer = buffer+INET6_ADDRSTRLEN;
+				memcpy(node_name, (uint8_t *)buffer, HOST_NAME_MAX);	
+				m_MDS_LOG_INFO("MDTM: NODE_UP for node_name:%s, node_ip:%s, node_id:%u addr_family:%d msg_type:%d",
+						node_name, node_ip, node_id, addr_family, msg_type);
+				mds_mcm_node_up(svc_hdl, node_id, node_ip, addr_family, node_name);
+			} else if (msg_type == MDTM_LIB_NODE_DOWN_TYPE) {
 				m_MDS_LOG_INFO("MDTM: NODE_DOWN  node_id:%u msg_type:%d",node_id, msg_type);
 				/* TBD if required this can be AF_INET or AF_INET6
 				   for now to distinguished between TCP & TIPC   hardcoding to AF_INET
diff --git a/osaf/services/infrastructure/dtms/dtm/dtm_intra.c b/osaf/services/infrastructure/dtms/dtm/dtm_intra.c
--- a/osaf/services/infrastructure/dtms/dtm/dtm_intra.c
+++ b/osaf/services/infrastructure/dtms/dtm/dtm_intra.c
@@ -56,7 +56,7 @@ static struct pollfd *pfd_list;
 
 static int  dtm_intranode_max_fd;
 
-static uint32_t dtm_intra_processing_init(char *node_ip, DTM_IP_ADDR_TYPE i_addr_family, int32_t sndbuf_size, int32_t rcvbuf_size);
+static uint32_t dtm_intra_processing_init(char *node_name, char *node_ip, DTM_IP_ADDR_TYPE i_addr_family, int32_t sndbuf_size, int32_t rcvbuf_size);
 static void dtm_intranode_processing(void);
 static uint32_t dtm_intranode_add_poll_fdlist(int fd, uint16_t event);
 static uint32_t dtm_intranode_create_rcv_task(int task_hdl);
@@ -77,7 +77,7 @@ uint32_t dtm_socket_domain = AF_UNIX;
  */
 uint32_t dtm_service_discovery_init(DTM_INTERNODE_CB *dtms_cb)
 {
-	return dtm_intra_processing_init(dtms_cb->ip_addr, dtms_cb->i_addr_family, dtms_cb->sock_sndbuf_size,dtms_cb->sock_rcvbuf_size);
+	return dtm_intra_processing_init(dtms_cb->node_name, dtms_cb->ip_addr, dtms_cb->i_addr_family, dtms_cb->sock_sndbuf_size,dtms_cb->sock_rcvbuf_size);
 }
 
 
@@ -89,7 +89,7 @@ uint32_t dtm_service_discovery_init(DTM_
  * @return NCSCC_RC_FAILURE
  *
  */
-uint32_t dtm_intra_processing_init(char *node_ip, DTM_IP_ADDR_TYPE i_addr_family, int32_t sndbuf_size, int32_t rcvbuf_size)
+uint32_t dtm_intra_processing_init(char *node_name, char *node_ip, DTM_IP_ADDR_TYPE i_addr_family, int32_t sndbuf_size, int32_t rcvbuf_size)
 {
 
 	int servlen;	/* For socket fd and server len */
@@ -260,7 +260,7 @@ uint32_t dtm_intra_processing_init(char 
 		return NCSCC_RC_FAILURE;
 	}
 
-	dtm_intranode_add_self_node_to_node_db(dtm_intranode_cb->nodeid, node_ip, i_addr_family);
+	dtm_intranode_add_self_node_to_node_db(dtm_intranode_cb->nodeid, node_name, node_ip, i_addr_family);
 
 	if (m_NCS_IPC_CREATE(&dtm_intranode_cb->mbx) != NCSCC_RC_SUCCESS) {
 		/* Mail box creation failed */
diff --git a/osaf/services/infrastructure/dtms/dtm/dtm_intra_svc.c b/osaf/services/infrastructure/dtms/dtm/dtm_intra_svc.c
--- a/osaf/services/infrastructure/dtms/dtm/dtm_intra_svc.c
+++ b/osaf/services/infrastructure/dtms/dtm/dtm_intra_svc.c
@@ -666,9 +666,11 @@ uint32_t dtm_intranode_process_node_subs
 			} else {
 				node_up_msg.node_id = node_db->node_id;
 				node_up_msg.ref_val = node_subscr_info->subtn_ref_val;
-				strcpy(node_up_msg.node_ip, node_db->node_ip);
+				strncpy(node_up_msg.node_ip, node_db->node_ip, INET6_ADDRSTRLEN);
+				strncpy(node_up_msg.node_name, node_db->node_name, HOST_NAME_MAX); 
 				node_up_msg.i_addr_family = node_db->i_addr_family;
-				TRACE("DTM: node_ip:%s, node_id:%u i_addr_family:%d ", node_up_msg.node_ip, node_up_msg.node_id, node_up_msg.i_addr_family);
+				TRACE("DTM: node_ip:%s, node_id:%u i_addr_family:%d",
+						node_up_msg.node_ip, node_up_msg.node_id, node_up_msg.i_addr_family);
 				dtm_lib_prepare_node_up_msg(&node_up_msg, buffer);
 				dtm_lib_msg_snd_common(buffer,
 						       node_subscr_info->process_id, DTM_LIB_NODE_UP_MSG_SIZE_FULL);
@@ -1383,6 +1385,8 @@ static uint32_t dtm_lib_prepare_node_up_
 	ncs_encode_64bit(&data, up_msg->ref_val);
 	ncs_encode_8bit(&data, (uint8_t)up_msg->i_addr_family);
 	memcpy(data, up_msg->node_ip, INET6_ADDRSTRLEN);
+	data = data+INET6_ADDRSTRLEN;
+	memcpy(data, up_msg->node_name, HOST_NAME_MAX);
 	TRACE_LEAVE();
 	return NCSCC_RC_SUCCESS;
 }
@@ -1437,7 +1441,8 @@ uint32_t dtm_intranode_process_node_up(N
 	node_db_info->mbx = mbx;
 	node_db_info->i_addr_family = i_addr_family;
 	strcpy(node_db_info->node_ip, node_ip);
-	TRACE("node_ip:%s, node_id:%u i_addr_family:%d ", node_db_info->node_ip, node_db_info->node_id, node_db_info->i_addr_family);
+	TRACE("node_name:%s, node_ip:%s, node_id:%u i_addr_family:%d ", 
+			node_db_info->node_name, node_db_info->node_ip, node_db_info->node_id, node_db_info->i_addr_family);
 	/* Initialize the pat tree */
 	pat_tree_params.key_size = sizeof(uint32_t);
 	if (NCSCC_RC_SUCCESS != ncs_patricia_tree_init(&node_db_info->dtm_rem_node_svc_tree, &pat_tree_params)) {
@@ -1457,7 +1462,8 @@ uint32_t dtm_intranode_process_node_up(N
 		uint8_t buffer[DTM_LIB_NODE_UP_MSG_SIZE_FULL];
 		node_up_msg.node_id = node_id;
 		node_up_msg.i_addr_family = i_addr_family;
-		strcpy(node_up_msg.node_ip, node_ip);
+		strncpy(node_up_msg.node_ip, node_ip, INET6_ADDRSTRLEN);
+		strncpy(node_up_msg.node_name, node_db_info->node_name, HOST_NAME_MAX);
 		TRACE("DTM: node_ip:%s, node_id:%u i_addr_family:%d ", node_up_msg.node_ip, node_up_msg.node_id, node_up_msg.i_addr_family);
 		dtm_lib_prepare_node_up_msg(&node_up_msg, buffer);
 		while (NULL != node_subscr_info) {
@@ -1914,7 +1920,7 @@ uint32_t dtm_process_internode_service_d
             2 - NCSCC_RC_FAILURE
 
 *********************************************************/
-uint32_t dtm_intranode_add_self_node_to_node_db(NODE_ID node_id,char *node_ip, DTM_IP_ADDR_TYPE i_addr_family)
+uint32_t dtm_intranode_add_self_node_to_node_db(NODE_ID node_id, char *node_name, char *node_ip, DTM_IP_ADDR_TYPE i_addr_family)
 {
 	/* Add to the node db list */
 	DTM_INTRANODE_NODE_DB *node_db_info = NULL;
@@ -1925,7 +1931,9 @@ uint32_t dtm_intranode_add_self_node_to_
 	node_db_info->node_id = node_id;
 	node_db_info->i_addr_family = i_addr_family;
 	memcpy(node_db_info->node_ip, node_ip, INET6_ADDRSTRLEN);
-	TRACE("DTM: node_ip:%s, node_id:%u i_addr_family:%d ",node_db_info->node_ip,node_db_info->node_id,node_db_info->i_addr_family);
+	memcpy(node_db_info->node_name, node_name, HOST_NAME_MAX);
+	TRACE("DTM: nnode_name:%s, node_ip:%s, node_id:%u i_addr_family:%d ",
+			node_db_info->node_name, node_db_info->node_ip,node_db_info->node_id,node_db_info->i_addr_family);
 	if (NCSCC_RC_SUCCESS != (dtm_add_to_node_db_list(node_db_info))) {
 		/* This is critical */
 		LOG_ER("DTM INTRA: Unable to add the node to node_db_list");
diff --git a/osaf/services/infrastructure/dtms/dtm/dtm_node.c b/osaf/services/infrastructure/dtms/dtm/dtm_node.c
--- a/osaf/services/infrastructure/dtms/dtm/dtm_node.c
+++ b/osaf/services/infrastructure/dtms/dtm/dtm_node.c
@@ -29,7 +29,7 @@
 /* packet_size +  mds_indentifier + mds_version +  msg_type  +node_id + node_name_len + node_name */
 #define NODE_INFO_HDR_SIZE 16
 
-#define NODE_INFO_PKT_SIZE (NODE_INFO_HDR_SIZE + MAX_NAME_LENGTH)
+#define NODE_INFO_PKT_SIZE (NODE_INFO_HDR_SIZE + HOST_NAME_MAX)
 
 static struct pollfd fds[MAX_FD];	/* Poll fds global list */
 static int nfds = 0;
@@ -78,7 +78,7 @@ uint32_t dtm_process_node_info(DTM_INTER
 	uint32_t node_id;
 	DTM_NODE_DB *node;
 	uint32_t nodename_len;
-	char nodename[MAX_NAME_LENGTH];
+	char nodename[HOST_NAME_MAX];
 	int rc = 0;
 	uint8_t *data = buffer;
 	TRACE_ENTER();
diff --git a/osaf/services/infrastructure/dtms/include/dtm_cb.h b/osaf/services/infrastructure/dtms/include/dtm_cb.h
--- a/osaf/services/infrastructure/dtms/include/dtm_cb.h
+++ b/osaf/services/infrastructure/dtms/include/dtm_cb.h
@@ -18,7 +18,6 @@
 #ifndef DTM_CB_H
 #define DTM_CB_H
 
-#define MAX_NAME_LENGTH 256
 #define MAX_PORT_LENGTH 256
 
 typedef enum dtm_ip_addr_type {
@@ -38,7 +37,7 @@ typedef struct dtm_internode_unsent_msgs
 typedef struct node_list {
 	uint16_t cluster_id;
 	NODE_ID node_id;
-	char node_name[MAX_NAME_LENGTH];
+	char node_name[HOST_NAME_MAX];
 	char node_ip[INET6_ADDRSTRLEN];
 	DTM_IP_ADDR_TYPE i_addr_family; /* Indicates V4 or V6 */
 	int comm_socket;
@@ -66,7 +65,7 @@ char remoteIP[INET6_ADDRSTRLEN];
 typedef struct dtm_internode_cb {
 	uint16_t cluster_id;
 	NODE_ID node_id;	/* Self  Node Id  */
-	char node_name[MAX_NAME_LENGTH];	/* optional */
+	char node_name[HOST_NAME_MAX];	/* optional */
 	char ip_addr[INET6_ADDRSTRLEN];	/* ipv4 ipv6 addrBuffer */
 	char mcast_addr[INET6_ADDRSTRLEN];	/* ipv4 ipv6 addrBuffer */
 	char bcast_addr[INET6_ADDRSTRLEN];
diff --git a/osaf/services/infrastructure/dtms/include/dtm_intra.h b/osaf/services/infrastructure/dtms/include/dtm_intra.h
--- a/osaf/services/infrastructure/dtms/include/dtm_intra.h
+++ b/osaf/services/infrastructure/dtms/include/dtm_intra.h
@@ -46,7 +46,7 @@ typedef enum dtm_lib_types {
 	DTM_LIB_MESSAGE_TYPE = 5,
 } DTM_LIB_TYPES;
 
-extern uint32_t dtm_intranode_add_self_node_to_node_db(NODE_ID node_id, char *node_ip, DTM_IP_ADDR_TYPE i_addr_family);
+extern uint32_t dtm_intranode_add_self_node_to_node_db(NODE_ID node_id, char *node_name, char *node_ip, DTM_IP_ADDR_TYPE i_addr_family);
 uint32_t dtm_intranode_reset_poll_fdlist(int fd);
 
 #endif
diff --git a/osaf/services/infrastructure/dtms/include/dtm_intra_disc.h b/osaf/services/infrastructure/dtms/include/dtm_intra_disc.h
--- a/osaf/services/infrastructure/dtms/include/dtm_intra_disc.h
+++ b/osaf/services/infrastructure/dtms/include/dtm_intra_disc.h
@@ -32,7 +32,7 @@
 /* 2 -len(0), 4 - iden(2), 1- ver(6), 1-msg type(7), 4- node_id (8),
 			8 -ref_val(12) */
 
-#define DTM_LIB_NODE_UP_MSG_SIZE (18 + 1 /*i_addr_family*/ + 46 /*ip_addr*/)
+#define DTM_LIB_NODE_UP_MSG_SIZE (18 + 1 /*i_addr_family*/ + 46 /*ip_addr*/ + HOST_NAME_MAX  /* node_name */)
 
 #define DTM_LIB_NODE_DOWN_MSG_SIZE 18
 
@@ -65,6 +65,7 @@ typedef struct dtm_lib_node_up_msg {
 	uint64_t ref_val;
 	DTM_IP_ADDR_TYPE i_addr_family; /* Indicates V4 or V6 */
 	char node_ip[INET6_ADDRSTRLEN];
+	char node_name[HOST_NAME_MAX];
 } DTM_LIB_NODE_UP_MSG;
 
 typedef DTM_LIB_NODE_UP_MSG DTM_LIB_NODE_DOWN_MSG;
@@ -114,7 +115,7 @@ typedef struct dtm_intranode_pid_info {
 typedef struct dtm_intranode_node_db {
 	struct dtm_intranode_node_db *next;
 	NODE_ID node_id;
-	char node_name[255];
+	char node_name[HOST_NAME_MAX];
 	SYSF_MBX mbx;
 	int fd;
 	DTM_IP_ADDR_TYPE i_addr_family;

diff --git a/osaf/services/saf/clmsv/clms/clms_mds.c b/osaf/services/saf/clmsv/clms/clms_mds.c
--- a/osaf/services/saf/clmsv/clms/clms_mds.c
+++ b/osaf/services/saf/clmsv/clms/clms_mds.c
@@ -976,6 +976,7 @@ static uint32_t clms_mds_node_event(stru
 		 * sending it to the CLM clients.
 		 */
 		TRACE("Adding ipinformation to the ip list: %u", node_id);
+		syslog(LOG_ERR, "TEST LGS:node_name : %s  NCSMDS_NODE_UP ncsmds_callback_info\n", mds_info->info.node_evt.i_node_name);
 		node_id = mds_info->info.node_evt.node_id;
 		if ((ip = (IPLIST *)ncs_patricia_tree_get(&clms_cb->iplist, (uint8_t *)&node_id)) == NULL) {
 			IPLIST *ip = (IPLIST *)calloc(1,sizeof(IPLIST));
diff --git a/osaf/services/saf/logsv/lgs/lgs_mds.cc b/osaf/services/saf/logsv/lgs/lgs_mds.cc
--- a/osaf/services/saf/logsv/lgs/lgs_mds.cc
+++ b/osaf/services/saf/logsv/lgs/lgs_mds.cc
@@ -825,7 +825,7 @@ static uint32_t mds_dec(struct ncsmds_ca
 		p8 = ncs_dec_flatten_space(uba, local_data, 4);
 		evt->info.msg.info.api_info.type = static_cast<lgsv_api_msg_type_t>(ncs_decode_32bit(&p8));
 		ncs_dec_skip_space(uba, 4);
-
+		syslog(LOG_ERR, "LGS: mds_dec() node_name : %s  evt.type :%d from ncsmds_callback_info \n", info->info.dec.i_node_name, evt->info.msg.type);
 		/* FIX error handling for dec functions */
 		switch (evt->info.msg.info.api_info.type) {
 		case LGSV_INITIALIZE_REQ:
@@ -986,7 +986,7 @@ static uint32_t mds_rcv(struct ncsmds_ca
 	evt->fr_dest = mds_info->info.receive.i_fr_dest;
 	evt->rcvd_prio = mds_info->info.receive.i_priority;
 	evt->mds_ctxt = mds_info->info.receive.i_msg_ctxt;
-	
+	syslog(LOG_ERR, "LGS: mds_rcv() node_name : %s  evt.type :%d from ncsmds_callback_info\n", mds_info->info.receive.i_node_name, api_info->type);	
 	/* for all msg types but WRITEs, sample curr time and store in msg */
 	if ((type == LGSV_INITIALIZE_REQ) || (type == LGSV_STREAM_OPEN_REQ)) {
 		osaf_clock_gettime(CLOCK_MONOTONIC, &evt->entered_at);
------------------------------------------------------------------------------
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