Ramesh,

Thank you very much for the review, please find my responses as [AVM]  
for you comment.

On 12/26/2013 2:23 PM, Ramesh Betham wrote:
 > [Ramesh]: Why addr_family is required to process DOWN msg? In my 
opinion it may not be required.. am I missing anything here?.

[AVM] It is CLM requirement  based on  addr_family  , CLM will 
distinguish  whether it is TCP/TIPC  and take action or no-action .

 > [Ramesh]: do encode/decode of addr_family with 16-bit, if one byte is 
sufficient.. please define addr_family as uint8_t.

[AVM] It is again CLM requirement ,  CLM  expects as  uint16_t

 >[Ramesh]: Hardcoded addr_family to AF_INET? what about AF_INET6?, why 
there was no encoded/decoded of addr_family for DOWN msg.
 >Any ways as I mentioned that addr_family may not required for DOWN 
msg, so we can remove updating addr_family..

[AVM]  In DOWN msg  CLM just need to distinguishes  whether it is 
TCP/TIPC  and take action or no-action ,
and at this location it is just function() call to  DOWN msg of mds 
libriary , so in TCP function() it   Hardcoded  addr_family to AF_INET
and in TIPC function() it  Hardcoded  addr_family to AF_TIPC.

 >[Ramesh]: Hope this messaging is with in the node (intra node) and not 
across the nodes (inter node).

[AVM] you are right now backward compatible issue.


-AVM

On 12/26/2013 2:23 PM, Ramesh Betham wrote:
> Hi Mahesh,
>
> Ack. Please find my review comments inline[Ramesh].
>
> Regards,
> Ramesh.
>
> On 12/18/2013 10:27 AM, mahesh.va...@oracle.com wrote:
>>   osaf/libs/core/include/mds_papi.h                          |   3 +
>>   osaf/libs/core/mds/include/mds_dt2c.h                      |   4 +-
>>   osaf/libs/core/mds/mds_c_api.c                             |  18 +++++++++-
>>   osaf/libs/core/mds/mds_dt_tipc.c                           |   4 +-
>>   osaf/libs/core/mds/mds_dt_trans.c                          |  16 ++++++++-
>>   osaf/services/infrastructure/dtms/dtm/dtm_inter_svc.c      |   6 +++-
>>   osaf/services/infrastructure/dtms/dtm/dtm_intra.c          |  22 
>> +++++++++----
>>   osaf/services/infrastructure/dtms/dtm/dtm_intra_svc.c      |  22 
>> ++++++++++++-
>>   osaf/services/infrastructure/dtms/dtm/dtm_main.c           |   2 +-
>>   osaf/services/infrastructure/dtms/dtm/dtm_node.c           |  10 +++--
>>   osaf/services/infrastructure/dtms/dtm/dtm_node_sockets.c   |  16 ++++++---
>>   osaf/services/infrastructure/dtms/include/dtm.h            |   5 ++-
>>   osaf/services/infrastructure/dtms/include/dtm_cb.h         |   1 +
>>   osaf/services/infrastructure/dtms/include/dtm_inter.h      |   2 +-
>>   osaf/services/infrastructure/dtms/include/dtm_intra.h      |   2 +-
>>   osaf/services/infrastructure/dtms/include/dtm_intra_disc.h |  12 +++++--
>>   osaf/services/infrastructure/dtms/include/dtm_node.h       |   2 +-
>>   17 files changed, 108 insertions(+), 39 deletions(-)
>>
>>
>> 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
>> @@ -816,6 +816,9 @@ unpack individual structure members. */
>>               */
>>              NCSMDS_NODE_CHG  node_chg;
>>              NODE_ID node_id;
>> +            uint16_t addr_family;
>> +            uint16_t length;
>> +            uint8_t ip_addr[INET6_ADDRSTRLEN];
>>      } MDS_CALLBACK_NODE_EVENT_INFO;
>>   
>>      typedef struct mds_callback_msg_loss_event_info {
>> 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
>> @@ -394,10 +394,10 @@ 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);
>> +extern uint32_t mds_mcm_node_up(MDS_SVC_HDL local_svc_hdl, NODE_ID node_id, 
>> char *node_ip, uint16_t addr_family);
>>   
>>   /* NODE DOWN */
>> -extern uint32_t mds_mcm_node_down(MDS_SVC_HDL local_svc_hdl, NODE_ID 
>> node_id);
>> +extern uint32_t mds_mcm_node_down(MDS_SVC_HDL local_svc_hdl, NODE_ID 
>> node_id, uint16_t addr_family);
> [Ramesh]: Why addr_family is required to process DOWN msg? In my 
> opinion it may not be required.. am I missing anything here?.
>>   
>>   /* VDEST UP */
>>   extern uint32_t mds_mcm_vdest_up(MDS_VDEST_ID vdest_id, MDS_DEST adest);
>> 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
>> @@ -2941,7 +2941,7 @@ else (entry exists)
>>               2 - NCSCC_RC_FAILURE
>>   
>>   *********************************************************/
>> -uint32_t mds_mcm_node_up(MDS_SVC_HDL local_svc_hdl, NODE_ID node_id)
>> +uint32_t mds_mcm_node_up(MDS_SVC_HDL local_svc_hdl, NODE_ID node_id, char 
>> *node_ip, uint16_t addr_family)
>>   
>>   {
>>      MDS_MCM_MSG_ELEM *event_msg = NULL;
>> @@ -2984,6 +2984,15 @@ uint32_t mds_mcm_node_up(MDS_SVC_HDL loc
>>      cbinfo->info.node_evt.node_chg = NCSMDS_NODE_UP;
>>   
>>      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);
>> +    }
>> +
>> +    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.node_id, 
>> cbinfo->info.node_evt.addr_family, cbinfo->info.node_evt.node_chg);
>>   
>>      /* Post to mail box If Q Ownership is enabled Else Call user callback */
>>      if (local_svc_info->q_ownership == true) {
>> @@ -3021,7 +3030,7 @@ uint32_t mds_mcm_node_up(MDS_SVC_HDL loc
>>               2 - NCSCC_RC_FAILURE
>>   
>>   *********************************************************/
>> -uint32_t mds_mcm_node_down(MDS_SVC_HDL local_svc_hdl, NODE_ID node_id)
>> +uint32_t mds_mcm_node_down(MDS_SVC_HDL local_svc_hdl, NODE_ID node_id, 
>> uint16_t addr_family)
>>   
>>   {
>>      MDS_MCM_MSG_ELEM *event_msg = NULL;
>> @@ -3063,7 +3072,10 @@ uint32_t mds_mcm_node_down(MDS_SVC_HDL l
>>      cbinfo->info.node_evt.node_chg = NCSMDS_NODE_DOWN;
>>   
>>      cbinfo->info.node_evt.node_id = node_id;
>> -
>> +    cbinfo->info.node_evt.addr_family = addr_family;
>> +
>> +    m_MDS_LOG_INFO("MDTM: node down  node_id:%u  addr_family:%d  
>> msg_type:%d",
>> +                    cbinfo->info.node_evt.node_id, 
>> cbinfo->info.node_evt.addr_family, cbinfo->info.node_evt.node_chg);
>>      /* 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_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
>> @@ -1004,10 +1004,10 @@ 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);
>> +                            return mds_mcm_node_up(svc_hdl, node_id, NULL, 
>> AF_TIPC);
>>                      } 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);
>> +                            return mds_mcm_node_down(svc_hdl, node_id, 
>> AF_TIPC);
>>                      } else {
>>                              m_MDS_LOG_INFO
>>                                  ("MDTM: TIPC EVENT UNSUPPORTED for Node 
>> (other than Publish and Withdraw)\n");
>> 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
>> @@ -1012,6 +1012,8 @@ static uint32_t mds_mdtm_process_recvdat
>>      case MDTM_LIB_NODE_DOWN_TYPE:
>>   
>>              {
>> +                    uint16_t addr_family; /* Indicates V4 or V6 */
>> +                    char node_ip[INET6_ADDRSTRLEN];
>>                      node_id = ncs_decode_32bit(&buffer);
>>                      ref_val = ncs_decode_64bit(&buffer);
>>   
>> @@ -1021,11 +1023,21 @@ static uint32_t mds_mdtm_process_recvdat
>>                      }
>>   
>>                      if (msg_type == MDTM_LIB_NODE_UP_TYPE) {
>> -                            mds_mcm_node_up(svc_hdl, node_id);
>> +                            addr_family = ncs_decode_8bit(&buffer);
> [Ramesh]: do encode/decode of addr_family with 16-bit, if one byte is 
> sufficient.. please define addr_family as uint8_t.
>> +                            memset(node_ip,0, INET6_ADDRSTRLEN);
>> +                            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) {
>> -                            mds_mcm_node_down(svc_hdl, node_id);
>> +                            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
>> +                               in case of TIPC  we receive this as AF_TIPC 
>> */
>> +                            addr_family = AF_INET; /* AF_INET or AF_INET6 */
>> +                            mds_mcm_node_down(svc_hdl, node_id, 
>> addr_family);
> [Ramesh]: Hardcoded addr_family to AF_INET? what about AF_INET6?, why 
> there was no encoded/decoded of addr_family for DOWN msg. Any ways as 
> I mentioned that addr_family may not required for DOWN msg, so we can 
> remove updating addr_family..
>>                      }
>>              }
>>              break;
>> diff --git a/osaf/services/infrastructure/dtms/dtm/dtm_inter_svc.c 
>> b/osaf/services/infrastructure/dtms/dtm/dtm_inter_svc.c
>> --- a/osaf/services/infrastructure/dtms/dtm/dtm_inter_svc.c
>> +++ b/osaf/services/infrastructure/dtms/dtm/dtm_inter_svc.c
>> @@ -112,7 +112,7 @@ uint32_t dtm_internode_process_rcv_down_
>>    * @return NCSCC_RC_FAILURE
>>    *
>>    */
>> -uint32_t dtm_node_up(NODE_ID node_id, char *node_name, SYSF_MBX mbx)
>> +uint32_t dtm_node_up(NODE_ID node_id, char *node_name, char *node_ip, 
>> DTM_IP_ADDR_TYPE i_addr_family, SYSF_MBX mbx)
>>   {
>>      /* Function call from inter thread */
>>      /* Post the event to the mailbox of the intra_thread */
>> @@ -129,6 +129,10 @@ uint32_t dtm_node_up(NODE_ID node_id, ch
>>      dtm_msg_elem->info.node.node_id = node_id;
>>      dtm_msg_elem->info.node.mbx = mbx;
>>      strcpy(dtm_msg_elem->info.node.node_name, node_name);
>> +    dtm_msg_elem->info.node.i_addr_family = i_addr_family;  /* Indicates V4 
>> or V6 */
>> +    strcpy(dtm_msg_elem->info.node.node_ip, node_ip);
>> +    TRACE("DTM: node_ip:%s, node_id:%u i_addr_family:%d ", 
>> dtm_msg_elem->info.node.node_ip,
>> +                    dtm_msg_elem->info.node.node_id, 
>> dtm_msg_elem->info.node.i_addr_family);
>>   
>>      /* Do a mailbox post */
>>      if ((m_NCS_IPC_SEND(&dtm_intranode_cb->mbx, dtm_msg_elem, 
>> dtm_msg_elem->pri)) != NCSCC_RC_SUCCESS) {
>> 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
>> @@ -58,7 +58,7 @@ static struct pollfd pfd_list[DTM_INTRAN
>>   
>>   static int  dtm_intranode_max_fd;
>>   
>> -static uint32_t dtm_intra_processing_init(void);
>> +static uint32_t dtm_intra_processing_init(char *node_ip, DTM_IP_ADDR_TYPE 
>> i_addr_family);
>>   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,9 +77,9 @@ uint32_t dtm_socket_domain = AF_UNIX;
>>    * @return NCSCC_RC_FAILURE
>>    *
>>    */
>> -uint32_t dtm_service_discovery_init(void)
>> +uint32_t dtm_service_discovery_init(DTM_INTERNODE_CB *dtms_cb)
>>   {
>> -    return dtm_intra_processing_init();
>> +    return dtm_intra_processing_init(dtms_cb->ip_addr, 
>> dtms_cb->i_addr_family);
>>   }
>>   
>>   #define DTM_INTRANODE_SOCK_SIZE 64000
>> @@ -92,7 +92,7 @@ uint32_t dtm_service_discovery_init(void
>>    * @return NCSCC_RC_FAILURE
>>    *
>>    */
>> -uint32_t dtm_intra_processing_init(void)
>> +uint32_t dtm_intra_processing_init(char *node_ip, DTM_IP_ADDR_TYPE 
>> i_addr_family)
>>   {
>>   
>>      int servlen, size = DTM_INTRANODE_SOCK_SIZE;    /* For socket fd and 
>> server len */
>> @@ -244,7 +244,7 @@ uint32_t dtm_intra_processing_init(void)
>>              return NCSCC_RC_FAILURE;
>>      }
>>   
>> -    dtm_intranode_add_self_node_to_node_db(dtm_intranode_cb->nodeid);
>> +    dtm_intranode_add_self_node_to_node_db(dtm_intranode_cb->nodeid, 
>> node_ip, i_addr_family);
>>   
>>      if (m_NCS_IPC_CREATE(&dtm_intranode_cb->mbx) != NCSCC_RC_SUCCESS) {
>>              /* Mail box creation failed */
>> @@ -626,10 +626,18 @@ static void dtm_intranode_processing(voi
>>                                                                              
>>                node_id);
>>                                                      
>> free(msg_elem->info.svc_event.buffer);
>>                                              } else if (DTM_MBX_NODE_UP_TYPE 
>> == msg_elem->type) {
>> +                                                    TRACE("DTM: node_ip:%s, 
>> node_id:%u i_addr_family:%d ",
>> +                                                                    
>> msg_elem->info.node.node_ip, msg_elem->info.node.node_id,
>> +                                                                    
>> msg_elem->info.node.i_addr_family);
>>                                                      
>> dtm_intranode_process_node_up(msg_elem->info.node.node_id,
>> -                                                                            
>>       msg_elem->info.node.node_name,
>> -                                                                            
>>       msg_elem->info.node.mbx);
>> +                                                                    
>> msg_elem->info.node.node_name,
>> +                                                                    
>> msg_elem->info.node.node_ip,
>> +                                                                    
>> msg_elem->info.node.i_addr_family,
>> +                                                                    
>> msg_elem->info.node.mbx);
>>                                              } else if 
>> (DTM_MBX_NODE_DOWN_TYPE == msg_elem->type) {
>> +                                                    TRACE("DTM: node_ip:%s, 
>> node_id:%u i_addr_family:%d ",
>> +                                                                    
>> msg_elem->info.node.node_ip, msg_elem->info.node.node_id,
>> +                                                                    
>> msg_elem->info.node.i_addr_family);
>>                                                      
>> dtm_intranode_process_node_down(msg_elem->info.node.node_id);
>>                                              } else if (DTM_MBX_MSG_TYPE == 
>> msg_elem->type) {
>>                                                      
>> dtm_process_rcv_internode_data_msg(msg_elem->info.data.buffer,
>> 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
>> @@ -657,6 +657,9 @@ 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);
>> +                            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);
>>                              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);
>> @@ -1193,6 +1196,7 @@ uint32_t dtm_add_to_node_db_list(DTM_INT
>>   {
>>      DTM_INTRANODE_NODE_DB *node_db = dtm_intranode_node_list_db;
>>      TRACE_ENTER();
>> +    TRACE("node_ip:%s, node_id:%u i_addr_family:%d 
>> ",add_node->node_ip,add_node->node_id,add_node->i_addr_family);
>>      if (NULL == node_db) {
>>              add_node->next = NULL;
>>              dtm_intranode_node_list_db = add_node;
>> @@ -1360,12 +1364,15 @@ static uint32_t dtm_lib_prepare_node_up_
>>   {
>>      uint8_t *data = buffer;
>>      TRACE_ENTER();
>> +    TRACE("node_ip:%s, node_id:%u i_addr_family:%d ", up_msg->node_ip, 
>> up_msg->node_id, up_msg->i_addr_family);
>>      ncs_encode_16bit(&data, (uint16_t)DTM_LIB_NODE_UP_MSG_SIZE);
>>      ncs_encode_32bit(&data, (uint32_t)DTM_INTRANODE_SND_MSG_IDENTIFIER);
>>      ncs_encode_8bit(&data, (uint8_t)DTM_INTRANODE_SND_MSG_VER);
>>      ncs_encode_8bit(&data, (uint8_t)DTM_LIB_NODE_UP_TYPE);
>>      ncs_encode_32bit(&data, up_msg->node_id);
>>      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);
>>      TRACE_LEAVE();
>>      return NCSCC_RC_SUCCESS;
>>   }
>> @@ -1406,7 +1413,7 @@ static uint32_t dtm_lib_prepare_node_dow
>>               2 - NCSCC_RC_FAILURE
>>   
>>   *********************************************************/
>> -uint32_t dtm_intranode_process_node_up(NODE_ID node_id, char *node_name, 
>> SYSF_MBX mbx)
>> +uint32_t dtm_intranode_process_node_up(NODE_ID node_id, char *node_name, 
>> char *node_ip, DTM_IP_ADDR_TYPE i_addr_family, SYSF_MBX mbx)
>>   {
>>      /* Add to the node db list */
>>      DTM_INTRANODE_NODE_DB *node_db_info = NULL;
>> @@ -1418,6 +1425,9 @@ uint32_t dtm_intranode_process_node_up(N
>>      node_db_info->node_id = node_id;
>>      strcpy(node_db_info->node_name, node_name);
>>      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);
>>      /* 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)) {
>> @@ -1436,6 +1446,9 @@ uint32_t dtm_intranode_process_node_up(N
>>              DTM_LIB_NODE_UP_MSG node_up_msg = { 0 };
>>              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);
>> +            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) {
>>                      uint8_t *snd_buf = NULL;
>> @@ -1492,7 +1505,7 @@ uint32_t dtm_intranode_process_node_down
>>              } else {
>>                      uint8_t *ptr = &buffer[12];
>>                      ncs_encode_64bit(&ptr, node_subscr_info->subtn_ref_val);
>> -                    memcpy(snd_buf, buffer, DTM_LIB_NODE_UP_MSG_SIZE_FULL);
>> +                    memcpy(snd_buf, buffer, 
>> DTM_LIB_NODE_DOWN_MSG_SIZE_FULL);
>>                      dtm_lib_msg_snd_common(snd_buf, 
>> node_subscr_info->process_id, DTM_LIB_NODE_DOWN_MSG_SIZE_FULL);
>>              }
>>              node_subscr_info = node_subscr_info->next;
>> @@ -1891,7 +1904,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)
>> +uint32_t dtm_intranode_add_self_node_to_node_db(NODE_ID node_id,char 
>> *node_ip, DTM_IP_ADDR_TYPE i_addr_family)
>>   {
>>      /* Add to the node db list */
>>      DTM_INTRANODE_NODE_DB *node_db_info = NULL;
>> @@ -1900,6 +1913,9 @@ uint32_t dtm_intranode_add_self_node_to_
>>              return NCSCC_RC_FAILURE;
>>      }
>>      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);
>>      if (NCSCC_RC_SUCCESS != (dtm_add_to_node_db_list(node_db_info))) {
>>              /* This is critical */
>>              TRACE("DTM : Unable to add the node to node_db_list");
>> diff --git a/osaf/services/infrastructure/dtms/dtm/dtm_main.c 
>> b/osaf/services/infrastructure/dtms/dtm/dtm_main.c
>> --- a/osaf/services/infrastructure/dtms/dtm/dtm_main.c
>> +++ b/osaf/services/infrastructure/dtms/dtm/dtm_main.c
>> @@ -321,7 +321,7 @@ int main(int argc, char *argv[])
>>      /*************************************************************/
>>      /* Set up the initialservice_discovery_task */
>>      /*************************************************************/
>> -    rc = dtm_service_discovery_init();
>> +    rc = dtm_service_discovery_init(dtms_cb);
>>      if (NCSCC_RC_SUCCESS != rc) {
>>              LOG_ER("DTM:service_discovery thread CREATE failed rc : %d ", 
>> rc);
>>              goto done1;
>> 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
>> @@ -124,7 +124,8 @@ uint32_t dtm_process_node_info(DTM_INTER
>>              } else
>>                      osafassert(0);
>>   
>> -            rc = dtm_process_node_up_down(node->node_id, node->node_name, 
>> node->comm_status);
>> +            TRACE("DTM: dtm_process_node_info node_ip:%s, node_id:%u 
>> i_addr_family:%d ", node->node_ip, node->node_id, node->i_addr_family);
>> +            rc = dtm_process_node_up_down(node->node_id, node->node_name, 
>> node->node_ip , node->i_addr_family, node->comm_status);
>>   
>>              if (rc != NCSCC_RC_SUCCESS) {
>>                      LOG_ER("DTM: dtm_process_node_up_down() failed rc : %d 
>> ", rc);
>> @@ -161,7 +162,7 @@ uint32_t add_self_node(DTM_INTERNODE_CB
>>      tmp_node.cluster_id = dtms_cb->cluster_id;
>>      tmp_node.node_id = dtms_cb->node_id;
>>      memcpy(tmp_node.node_ip, (uint8_t *)dtms_cb->ip_addr, INET6_ADDRSTRLEN);
>> -
>> +    tmp_node.i_addr_family = dtms_cb->i_addr_family;
>>      strncpy(tmp_node.node_name, dtms_cb->node_name, 
>> strlen(dtms_cb->node_name));
>>      tmp_node.comm_status = true;
>>      tmp_node.comm_socket = 0;
>> @@ -238,10 +239,11 @@ void datagram_buff_dump(uint8_t *buff, u
>>    * @return NCSCC_RC_FAILURE
>>    *
>>    */
>> -uint32_t dtm_process_node_up_down(NODE_ID node_id, char *node_name, uint8_t 
>> comm_status)
>> +uint32_t dtm_process_node_up_down(NODE_ID node_id, char *node_name, char 
>> *node_ip, DTM_IP_ADDR_TYPE i_addr_family, uint8_t comm_status)
>>   {
>>      if (true == comm_status) {
>> -            dtm_node_up(node_id, node_name, 0);
>> +            TRACE("DTM: dtm_process_node_up_down node_ip:%s, node_id:%u 
>> i_addr_family:%d ", node_ip, node_id, i_addr_family);
>> +            dtm_node_up(node_id, node_name, node_ip, i_addr_family, 0);
>>      } else {
>>              dtm_node_down(node_id, node_name, 0);
>>      }
>> diff --git a/osaf/services/infrastructure/dtms/dtm/dtm_node_sockets.c 
>> b/osaf/services/infrastructure/dtms/dtm/dtm_node_sockets.c
>> --- a/osaf/services/infrastructure/dtms/dtm/dtm_node_sockets.c
>> +++ b/osaf/services/infrastructure/dtms/dtm/dtm_node_sockets.c
>> @@ -373,7 +373,8 @@ uint32_t dtm_comm_socket_close(int *comm
>>      if (node != NULL) {
>>              TRACE("DTM: node deleting  enty ");
>>              if (true == node->comm_status) {
>> -                    if (dtm_process_node_up_down(node->node_id, 
>> node->node_name, false) != NCSCC_RC_SUCCESS) {
>> +                    TRACE("DTM: dtm_comm_socket_close node_ip:%s, 
>> node_id:%u i_addr_family:%d ", node->node_ip, node->node_id, 
>> node->i_addr_family);
>> +                    if (dtm_process_node_up_down(node->node_id, 
>> node->node_name, node->node_ip, node->i_addr_family, false) != 
>> NCSCC_RC_SUCCESS) {
>>                              LOG_ER(" dtm_process_node_up_down() failed rc : 
>> %d ", rc);
>>                              rc = NCSCC_RC_FAILURE;
>>                              goto done;
>> @@ -1116,7 +1117,6 @@ int dtm_process_connect(DTM_INTERNODE_CB
>>      DTM_NODE_DB node = { 0 };
>>      DTM_NODE_DB *new_node = NULL;
>>      uint8_t *buffer = data, mcast_flag;
>> -    DTM_IP_ADDR_TYPE ip_addr_type = 0;
>>      TRACE_ENTER();
>>   
>>      memset(&node, 0, sizeof(DTM_NODE_DB));
>> @@ -1149,8 +1149,8 @@ int dtm_process_connect(DTM_INTERNODE_CB
>>   
>>      /* foreign_port = htons((in_port_t)(ncs_decode_16bit(&buffer))); */
>>      foreign_port = ((in_port_t)(ncs_decode_16bit(&buffer)));
>> -    ip_addr_type = ncs_decode_8bit(&buffer);
>> -    memcpy(node.node_ip, buffer, INET6_ADDRSTRLEN);
>> +    node.i_addr_family = ncs_decode_8bit(&buffer);
>> +    memcpy(node.node_ip, (uint8_t *)buffer, INET6_ADDRSTRLEN);
>>   
> [Ramesh]: Hope this messaging is with in the node (intra node) and not 
> across the nodes (inter node).
>>      if (initial_discovery_phase == true) {
>>              if (node.node_id < dtms_cb->node_id) {
>> @@ -1205,11 +1205,12 @@ int dtm_process_connect(DTM_INTERNODE_CB
>>              goto node_fail;
>>      }
>>   
>> -    sock_desc = comm_socket_setup_new(dtms_cb, (char *)&node.node_ip, 
>> foreign_port, ip_addr_type);
>> +    sock_desc = comm_socket_setup_new(dtms_cb, (char *)&node.node_ip, 
>> foreign_port, node.i_addr_family);
>>   
>>      new_node->comm_socket = sock_desc;
>>      new_node->node_id = node.node_id;
>>      memcpy(new_node->node_ip, node.node_ip, INET6_ADDRSTRLEN);
>> +    new_node->i_addr_family = node.i_addr_family;
>>   
>>      if (sock_desc != -1) {
>>   
>> @@ -1238,6 +1239,8 @@ int dtm_process_connect(DTM_INTERNODE_CB
>>                      free(new_node);
>>                      goto node_fail;
>>              }
>> +            else
>> +              TRACE("DTM: dtm_node_add add .node_ip: %s, node_id: %u", 
>> new_node->node_ip, new_node->node_id);
>>      }
>>   
>>    node_fail:
>> @@ -1325,6 +1328,7 @@ int dtm_process_accept(DTM_INTERNODE_CB
>>              goto done;
>>      } else {
>>              memcpy(node.node_ip, (uint8_t *)addrBuffer, INET6_ADDRSTRLEN);
>> +            node.i_addr_family = clnt_addr1->sa_family;
>>      }
>>   
>>      if (new_conn_sd != -1) {
>> @@ -1404,7 +1408,7 @@ int dtm_dgram_recvfrom_bmcast(DTM_INTERN
>>              if (inet_ntop(clnt_addr1->sa_family, numericAddress, 
>> addrBuffer, sizeof(addrBuffer)) == NULL) {
>>                      TRACE("DTM: invalid address :%s", addrBuffer);
>>              } else {
>> -                    memcpy(node_ip, (char *)addrBuffer, INET6_ADDRSTRLEN);
>> +                    memcpy(node_ip, (uint8_t *)addrBuffer, 
>> INET6_ADDRSTRLEN);
>>              }
>>      }
>>   
>> diff --git a/osaf/services/infrastructure/dtms/include/dtm.h 
>> b/osaf/services/infrastructure/dtms/include/dtm.h
>> --- a/osaf/services/infrastructure/dtms/include/dtm.h
>> +++ b/osaf/services/infrastructure/dtms/include/dtm.h
>> @@ -68,6 +68,9 @@ typedef struct dtm_rcv_msg_elem {
>>                      char node_name[255];
>>                      NODE_ID node_id;
>>                      SYSF_MBX mbx;
>> +                    DTM_IP_ADDR_TYPE i_addr_family; /* Indicates V4 or V6 */
>> +                    char node_ip[INET6_ADDRSTRLEN];
>> +
>>              } node;
>>      } info;
>>   
>> @@ -109,6 +112,6 @@ extern uint32_t dtm_node_add(DTM_NODE_DB
>>   extern uint32_t dtm_node_delete(DTM_NODE_DB * nnode, int i);
>>   extern DTM_NODE_DB *dtm_node_new(DTM_NODE_DB * new_node);
>>   extern int dtm_read_config(DTM_INTERNODE_CB * config, char 
>> *dtm_config_file);
>> -uint32_t dtm_service_discovery_init(void);
>> +uint32_t dtm_service_discovery_init(DTM_INTERNODE_CB *dtms_cb);
>>   
>>   #endif
>> 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
>> @@ -40,6 +40,7 @@ typedef struct node_list {
>>      NODE_ID node_id;
>>      char node_name[MAX_NAME_LENGTH];
>>      char node_ip[INET6_ADDRSTRLEN];
>> +    DTM_IP_ADDR_TYPE i_addr_family; /* Indicates V4 or V6 */
>>      int comm_socket;
>>      NCS_PATRICIA_NODE pat_nodeid;
>>      NCS_PATRICIA_NODE pat_comm_socket;
>> diff --git a/osaf/services/infrastructure/dtms/include/dtm_inter.h 
>> b/osaf/services/infrastructure/dtms/include/dtm_inter.h
>> --- a/osaf/services/infrastructure/dtms/include/dtm_inter.h
>> +++ b/osaf/services/infrastructure/dtms/include/dtm_inter.h
>> @@ -33,7 +33,7 @@ typedef enum dtm_msg_types {
>>      DTM_MESSAGE_MSG_TYPE = 4,
>>   } DTM_MSG_TYPES;
>>   
>> -extern uint32_t dtm_node_up(NODE_ID node_id, char *node_name, SYSF_MBX mbx);
>> +extern uint32_t dtm_node_up(NODE_ID node_id, char *node_name, char 
>> *node_ip, DTM_IP_ADDR_TYPE i_addr_family, SYSF_MBX mbx);
>>   extern uint32_t dtm_internode_process_rcv_up_msg(uint8_t *buffer, uint16_t 
>> len, NODE_ID node_id);
>>   extern uint32_t dtm_internode_process_rcv_down_msg(uint8_t *buffer, 
>> uint16_t len, NODE_ID node_id);
>>   extern uint32_t dtm_node_down(NODE_ID node_id, char *node_name, SYSF_MBX 
>> mbx);
>> 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);
>> +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);
>>   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
>> @@ -34,13 +34,13 @@
>>   /* 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
>> +#define DTM_LIB_NODE_UP_MSG_SIZE (18 + 1 /*i_addr_family*/ + 46 /*ip_addr*/)
>>   
>> -#define DTM_LIB_NODE_DOWN_MSG_SIZE DTM_LIB_NODE_UP_MSG_SIZE
>> +#define DTM_LIB_NODE_DOWN_MSG_SIZE 18
>>   
>>   #define DTM_LIB_NODE_UP_MSG_SIZE_FULL (DTM_LIB_NODE_UP_MSG_SIZE+2)
>>   
>> -#define DTM_LIB_NODE_DOWN_MSG_SIZE_FULL DTM_LIB_NODE_UP_MSG_SIZE_FULL
>> +#define DTM_LIB_NODE_DOWN_MSG_SIZE_FULL (DTM_LIB_NODE_DOWN_MSG_SIZE+2)
>>   
>>   typedef enum dtm_svc_install_scope {
>>      DTM_SVC_INSTALL_SCOPE_PCON = 1,
>> @@ -65,6 +65,8 @@ typedef DTM_LIB_UP_MSG DTM_LIB_DOWN_MSG;
>>   typedef struct dtm_lib_node_up_msg {
>>      NODE_ID node_id;
>>      uint64_t ref_val;
>> +    DTM_IP_ADDR_TYPE i_addr_family; /* Indicates V4 or V6 */
>> +    char node_ip[INET6_ADDRSTRLEN];
>>   } DTM_LIB_NODE_UP_MSG;
>>   
>>   typedef DTM_LIB_NODE_UP_MSG DTM_LIB_NODE_DOWN_MSG;
>> @@ -117,6 +119,8 @@ typedef struct dtm_intranode_node_db {
>>      char node_name[255];
>>      SYSF_MBX mbx;
>>      int fd;
>> +    DTM_IP_ADDR_TYPE i_addr_family;
>> +    char node_ip[INET6_ADDRSTRLEN];
>>      NCS_PATRICIA_TREE dtm_rem_node_svc_tree;        /* Tree of service 
>> install info */
>>   } DTM_INTRANODE_NODE_DB;
>>   
>> @@ -175,7 +179,7 @@ uint32_t dtm_intranode_process_node_unsu
>>   
>>   uint32_t dtm_process_internode_service_up_msg(uint8_t *buffer, uint16_t 
>> len, NODE_ID node_id);
>>   uint32_t dtm_process_internode_service_down_msg(uint8_t *buffer, uint16_t 
>> len, NODE_ID node_id);
>> -uint32_t dtm_intranode_process_node_up(NODE_ID node_id, char *node_name, 
>> SYSF_MBX mbx);
>> +uint32_t dtm_intranode_process_node_up(NODE_ID node_id, char *node_name, 
>> char *node_ip, DTM_IP_ADDR_TYPE i_addr_family, SYSF_MBX mbx);
>>   uint32_t dtm_intranode_process_node_down(NODE_ID node_id);
>>   
>>   uint32_t dtm_intranode_process_pid_down(int fd);
>> diff --git a/osaf/services/infrastructure/dtms/include/dtm_node.h 
>> b/osaf/services/infrastructure/dtms/include/dtm_node.h
>> --- a/osaf/services/infrastructure/dtms/include/dtm_node.h
>> +++ b/osaf/services/infrastructure/dtms/include/dtm_node.h
>> @@ -35,7 +35,7 @@ extern int dtm_dgram_recvfrom_bmcast(DTM
>>   extern uint32_t dtm_comm_socket_send(int sock_desc, const void *buffer, 
>> int buffer_len);
>>   extern uint32_t dtm_comm_socket_recv(int sock_desc, void *buffer, int 
>> buffer_len);
>>   extern uint32_t dtm_comm_socket_close(int *comm_socket);
>> -extern uint32_t dtm_process_node_up_down(NODE_ID node_id, char *node_name, 
>> uint8_t comm_status);
>> +extern uint32_t dtm_process_node_up_down(NODE_ID node_id, char *node_name, 
>> char *node_ip, DTM_IP_ADDR_TYPE i_addr_family, uint8_t comm_status);
>>   uint32_t dtm_internode_set_poll_fdlist(int fd, uint16_t event);
>>   uint32_t dtm_internode_reset_poll_fdlist(int fd);
>>   
>

------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to