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