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

Reply via email to