osaf/libs/core/mds/mds_dt_trans.c | 108 ++++++++----
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 +-
7 files changed, 99 insertions(+), 53 deletions(-)
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
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;
------------------------------------------------------------------------------
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