Hi HansN, It seem you missed to see below :
On 8/12/2016 9:11 AM, A V Mahesh wrote: > Hi HansN, > > We were having ticket for this raised by Hans Feldt > `https://sourceforge.net/p/opensaf/tickets/634/` > > at that time i have give my analysis base the MDS code at that time as > below please check. > > ================================================================================================ > > > > The Linux TIPC 2.0 Programmer's Guide in section 1.5.7. Multicast > Message Delivery mention that. > > The TIPC currently does not permit an application to send a multicast > message with the "destination droppable" setting disabled. > Consequently, TIPC will never try to return an undeliverable multicast > message to its sender. > > so if we set destination droppable disabled , multicast is not permitted > I experimented setting TIPC_DEST_DROPPABLE=off in multicast_demo and > observed that multicast is working > > As if The Opensaf using multicast , it is not allowed to set > TIPC_DEST_DROPPABLE=off > > ========================================================================================== > So the TIPC_DEST_DROPPABLE should be enabled only if MDS_TIPC_MCAST_ENABLED is disabled, currently by default TIPC Multicast Messaging Setting enabled (MDS_TIPC_MCAST_ENABLED =1 ) in /etc/opensaf/nid.conf , if TIPC Multicast Messagingis disabled we can set TIPC_DEST_DROPPABLE dynamically. ========================================================================== # This is valid when above MDS_TRANSPORT is set to TIPC. # Setting MDS_TIPC_MCAST_ENABLED to 1 or 0, allows OpenSAF # to enable or disable TIPC Multicast Messaging. # By Default TIPC Multicast Messaging is Enabled. # Note: In case of TIPC Multicast Messaging disabled (0), the performance # of OpenSAF will be considerably lower as compared to Enabled (1). export MDS_TIPC_MCAST_ENABLED=1 ========================================================================== -AVM On 8/18/2016 2:43 PM, Hans Nordeback wrote: > osaf/libs/core/mds/mds_dt_tipc.c | 32 +++++++++++++++++++++++++------- > 1 files changed, 25 insertions(+), 7 deletions(-) > > > 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 > @@ -320,6 +320,15 @@ uint32_t mdtm_tipc_init(NODE_ID nodeid, > m_MDS_LOG_INFO("MDTM: Successfully set default socket > option TIPC_IMP = %d", TIPCIMPORTANCE); > } > > + int droppable = 0; > + if (setsockopt(tipc_cb.BSRsock, SOL_TIPC, TIPC_DEST_DROPPABLE, > &droppable, sizeof(droppable)) != 0) { > + LOG_ER("MDTM: Can't set TIPC_DEST_DROPPABLE to zero err > :%s\n", strerror(errno)); > + m_MDS_LOG_ERR("MDTM: Can't set TIPC_DEST_DROPPABLE to zero > err :%s\n", strerror(errno)); > + osafassert(0); > + } else { > + m_MDS_LOG_NOTIFY("MDTM: Successfully set TIPC_DEST_DROPPABLE > to zero"); > + } > + > return NCSCC_RC_SUCCESS; > } > > @@ -563,6 +572,8 @@ ssize_t recvfrom_connectionless (int sd, > unsigned char *cptr; > int i; > int has_addr; > + int anc_data[2]; > + > ssize_t sz; > > has_addr = (from != NULL) && (addrlen != NULL); > @@ -591,19 +602,26 @@ ssize_t recvfrom_connectionless (int sd, > if the message was sent using a TIPC name or name > sequence as the > destination rather than a TIPC port ID So abort for > TIPC_ERRINFO and TIPC_RETDATA*/ > if (anc->cmsg_type == TIPC_ERRINFO) { > - /* TIPC_ERRINFO - TIPC error code associated > with a returned data message or a connection termination message so abort */ > - m_MDS_LOG_CRITICAL("MDTM: undelivered message > condition ancillary data: TIPC_ERRINFO abort err :%s", strerror(errno) ); > - abort(); > + anc_data[0] = *((unsigned int*)(CMSG_DATA(anc) > + 0)); > + if (anc_data[0] == TIPC_ERR_OVERLOAD) { > + LOG_CR("MDTM: undelivered message > condition ancillary data: TIPC_ERR_OVERLOAD"); > + m_MDS_LOG_CRITICAL("MDTM: undelivered > message condition ancillary data: TIPC_ERR_OVERLOAD"); > + } else { > + /* TIPC_ERRINFO - TIPC error code > associated with a returned data message or a connection termination message > so abort */ > + LOG_CR("MDTM: undelivered message > condition ancillary data: TIPC_ERRINFO abort err : %d", anc_data[0]); > + m_MDS_LOG_CRITICAL("MDTM: undelivered > message condition ancillary data: TIPC_ERRINFO abort err : %d", anc_data[0]); > + } > } else if (anc->cmsg_type == TIPC_RETDATA) { > - /* If we set TIPC_DEST_DROPPABLE off messge > (configure TIPC to return rejected messages to the sender ) > + /* If we set TIPC_DEST_DROPPABLE off message > (configure TIPC to return rejected messages to the sender ) > we will hit this when we implement MDS > retransmit lost messages abort can be replaced with flow control logic*/ > for (i = anc->cmsg_len - sizeof(*anc); i > 0; > i--) { > - m_MDS_LOG_DBG("MDTM: returned byte > 0x%02x\n", *cptr); > + LOG_CR("MDTM: returned byte 0x%02x\n", > *cptr); > + m_MDS_LOG_CRITICAL("MDTM: returned byte > 0x%02x\n", *cptr); > cptr++; > } > /* TIPC_RETDATA -The contents of a returned > data message so abort */ > - m_MDS_LOG_CRITICAL("MDTM: undelivered message > condition ancillary data: TIPC_RETDATA abort err :%s", strerror(errno) ); > - abort(); > + LOG_CR("MDTM: undelivered message condition > ancillary data: TIPC_RETDATA"); > + m_MDS_LOG_CRITICAL("MDTM: undelivered message > condition ancillary data: TIPC_RETDATA"); > } else if (anc->cmsg_type == TIPC_DESTNAME) { > if (sz == 0) { > m_MDS_LOG_DBG("MDTM: recd bytes=0 on > received on sock, abnormal/unknown condition. Ignoring"); ------------------------------------------------------------------------------ _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel