Hi HansN,

I managed to create TIPC_ERRINFO/TIPC_RETDATA  error cases ( not 
TIPC_ERR_OVERLOAD error )  with normal messages
and It is observed that  TIPC_DEST_DROPPABLE set to true even error 
TIPC_ERRINFO is NOT notified ( it means TIPC_ERR_OVERLOAD ) ,
if TIPC_DEST_DROPPABLE set to false TIPC_ERRINFO/TIPC_RETDATA errors are 
notified.

Now I will also check implication of TIPC_DEST_DROPPABLE set to false on 
multicast and broadcast  messages, based on that
we can re-arrange the TIPC_DEST_DROPPABLE setting to false conditions  
based on agent `i_msg_loss_indication = true` condition
mds can return to agent the same error  TIPC_ERR_OVERLOAD.

TIPC_DEST_DROPPABLE to false:

==================================================================

Sep 15 16:10:39 SC-1 osafimmnd[32051]: NO Implementer disconnected 13 
<0, 2040f> (MsgQueueService132111)
Sep 15 16:10:39 SC-1 osafimmd[32040]:  777 MDTM: undelivered message 
condition ancillary data: TIPC_ERRINFO abort err : 2
Sep 15 16:10:39 SC-1 osafimmd[32040]: 7777 MDTM: undelivered message 
condition ancillary data: TIPC_RETDATA
Sep 15 16:10:39 SC-1 osafimmd[32040]: NO MDS event from svc_id 25 
(change:4, dest:567413369208836)
Sep 15 16:10:39 SC-1 osafimmd[32040]:  777 MDTM: undelivered message 
condition ancillary data: TIPC_ERRINFO abort err : 2
Sep 15 16:10:39 SC-1 osafimmd[32040]: 7777 MDTM: undelivered message 
condition ancillary data: TIPC_RETDATA
Sep 15 16:10:39 SC-1 osafimmd[32040]:  777 MDTM: undelivered message 
condition ancillary data: TIPC_ERRINFO abort err : 2
Sep 15 16:10:39 SC-1 osafimmd[32040]: 7777 MDTM: undelivered message 
condition ancillary data: TIPC_RETDATA
Sep 15 16:10:39 SC-1 osafimmd[32040]:  777 MDTM: undelivered message 
condition ancillary data: TIPC_ERRINFO abort err : 2
Sep 15 16:10:39 SC-1 osafimmd[32040]: 7777 MDTM: undelivered message 
condition ancillary data: TIPC_RETDATA
Sep 15 16:10:39 SC-1 osafimmd[32040]:  777 MDTM: undelivered message 
condition ancillary data: TIPC_ERRINFO abort err : 2
Sep 15 16:10:39 SC-1 osafimmd[32040]: 7777 MDTM: undelivered message 
condition ancillary data: TIPC_RETDATA
Sep 15 16:10:39 SC-1 osafimmd[32040]:  777 MDTM: undelivered message 
condition ancillary data: TIPC_ERRINFO abort err : 2
Sep 15 16:10:39 SC-1 osafimmd[32040]: 7777 MDTM: undelivered message 
condition ancillary data: TIPC_RETDATA
Sep 15 16:10:39 SC-1 osafimmd[32040]:  777 MDTM: undelivered message 
condition ancillary data: TIPC_ERRINFO abort err : 2
Sep 15 16:10:39 SC-1 osafimmd[32040]: 7777 MDTM: undelivered message 
condition ancillary data: TIPC_RETDATA
Sep 15 16:10:39 SC-1 osafimmd[32040]:  777 MDTM: undelivered message 
condition ancillary data: TIPC_ERRINFO abort err : 2
Sep 15 16:10:39 SC-1 osafimmd[32040]: 7777 MDTM: undelivered message 
condition ancillary data: TIPC_RETDATA
Sep 15 16:10:39 SC-1 osafimmd[32040]:  777 MDTM: undelivered message 
condition ancillary data: TIPC_ERRINFO abort err : 2
Sep 15 16:10:39 SC-1 osafimmd[32040]: 7777 MDTM: undelivered message 
condition ancillary data: TIPC_RETDATA
Sep 15 16:10:39 SC-1 osafimmd[32040]:  777 MDTM: undelivered message 
condition ancillary data: TIPC_ERRINFO abort err : 2
Sep 15 16:10:39 SC-1 osafimmd[32040]: 7777 MDTM: undelivered message 
condition ancillary data: TIPC_RETDATA
Sep 15 16:10:39 SC-1 osafamfd[32114]: NO Node 'PL-4' left the cluster

==================================================================

TIPC_DEST_DROPPABLE to true:

==================================================================

Sep 15 15:59:55 SC-1 osafimmnd[26461]: NO Implementer disconnected 13 
<0, 2040f> (MsgQueueService132111)
Sep 15 15:59:55 SC-1 osafimmd[26450]: NO MDS event from svc_id 25 
(change:4, dest:567412923957252)
Sep 15 15:59:55 SC-1 osafimmnd[26461]: NO Global discard node received 
for nodeId:2040f pid:410
Sep 15 15:59:55 SC-1 osafamfd[28810]: NO Node 'PL-4' left the cluster
Sep 15 15:59:58 SC-1 kernel: [ 5147.648737] tipc: Resetting link 
<1.1.1:eth0-1.1.4:eth0>, peer not responding
Sep 15 15:59:58 SC-1 kernel: [ 5147.648756] tipc: Lost link 
<1.1.1:eth0-1.1.4:eth0> on network plane A
Sep 15 15:59:58 SC-1 kernel: [ 5147.648771] tipc: Lost contact with <1.1.4>

==================================================================

-AVM


On 9/1/2016 10:59 AM, Hans Nordebäck wrote:
> Hi Mahesh,
>
> I have not tested this, but the following should work:
>
> - Set BSRsock TIPC_IMPORTANCE to TIPC_LOW_IMPORTANCE
>
> - set socket receive buffer to a small value:
>
>   optval = "small socket recieive buffer size" , 5000 ?
>
>   setsockopt(tipc_cb.BSRsock, SOL_SOCKET, SO_RCVBUF, &optval, optlen)
>
> -  sysctl -w net.tipc.tipc_rmem="5000 40000000 68240400" (or smaller 
> values)
>
> - add some delays when processing messages in 
> mdtm_process_recv_events(), to provoke overloading the socket receive 
> buffer.
>
> We experience dropped packages in a 75 node system, and as a 
> workaround increasing the default so receive buffer size it seems 
> working for that setup.
>
> /Thanks HansN
>
> On 09/01/2016 05:50 AM, A V Mahesh wrote:
>> Hi HansN,
>>
>> Do you have any tips to created overload case,
>>
>> I would like test and observe TIPC_DEST_DROPPABLE enabled & disabled 
>> cases.
>>
>> -AVM
>>
>>
>> On 9/1/2016 9:12 AM, A V Mahesh wrote:
>>> Hi HansN,
>>>
>>> Sorry for the delay.
>>>
>>> I will test it and get back to you soon.
>>>
>>> -AVM
>>>
>>>
>>> On 8/31/2016 4:29 PM, Hans Nordebäck wrote:
>>>> Hi Mahesh,
>>>> Any updates on this?
>>>>
>>>> /Regards HansN
>>>>
>>>> -----Original Message-----
>>>> From: Anders Widell
>>>> Sent: den 25 augusti 2016 13:11
>>>> To: A V Mahesh <mahesh.va...@oracle.com>; Hans Nordebäck 
>>>> <hans.nordeb...@ericsson.com>; mathi.naic...@oracle.com
>>>> Cc: opensaf-devel@lists.sourceforge.net
>>>> Subject: Re: [PATCH 1 of 1] MDS: Log TIPC dropped messages [#1957]
>>>>
>>>> Hi!
>>>>
>>>> This is what the TIPC user documentation says about 
>>>> TIPC_DEST_DROPPABLE:
>>>> "This option governs the handling of messages sent by the socket if 
>>>> the message cannot be delivered to its destination, either because 
>>>> the receiver is congested or because the specified receiver does 
>>>> not exist.
>>>> If enabled, the message is discarded; otherwise the message is 
>>>> returned to the sender."
>>>>
>>>> This is what the TIPC user documentation says about the return 
>>>> value from the recvmsg() system call: "When used with a 
>>>> connectionless socket, a return value of 0 indicates the arrival of 
>>>> a returned data message that was originally sent by this socket."
>>>>
>>>> I think the documentation is pretty clear. If you set 
>>>> TIPC_DEST_DROPPABLE to true, the receiver can discard messages e.g. 
>>>> when the receive buffer is full. The sender will not be notified in 
>>>> this case. If TIPC_DEST_DROPPABLE is set to false, the message will 
>>>> be returned to the sender in case of a full receive buffer. The 
>>>> sender knows that it has received such a returned message when the 
>>>> recvmsg() call returns zero.
>>>>
>>>> regards,
>>>> Anders Widell
>>>>
>>>> On 08/25/2016 11:30 AM, A V Mahesh wrote:
>>>>> Hi HansN,
>>>>>
>>>>>
>>>>> On 8/23/2016 5:22 PM, Hans Nordebäck wrote:
>>>>>
>>>>>> Hi Mahesh,
>>>>>>
>>>>>> Yes, this is my understanding too, if TIPC_DROPPABLE = true tipc may
>>>>>> drop messages silently,  at receive sock buffer full condition,  but
>>>>>> do not return any ancillary message.
>>>>>> If TIPC_DROPPABLE = false tipc may drop message but will send an
>>>>>> ancillary message to inform about TIPC_ERR_OVERLOAD.
>>>>> [AVM]
>>>>>
>>>>> My observation are understanding is different, based on TIPC code and
>>>>> Linux TIPC 2.0 Programmer's Guide , that the TIPC_ERR_OVERLOAD error
>>>>> returned when TIPC is unable to enqueue an incoming message on the
>>>>> receiving socket's receive queue irrelevant of TIPC_DEST_DROPPABLE
>>>>> enabled or disabled.
>>>>>
>>>>> The only difference between TIPC_DEST_DROPPABLE enabled or 
>>>>> disabled is
>>>>> , If  TIPC_DEST_DROPPABLE enabled, the message is discarded and
>>>>> recvmsg() returned size is ZERO and application will get errors, if
>>>>> TIPC_DEST_DROPPABLE disabled  the message is returned to the 
>>>>> sender it
>>>>> means the recvmsg() returned size is user send data size and
>>>>> application will get errors .
>>>>>
>>>>> I did check the TIPC code and documentations  and I haven't get any
>>>>> evidences that  TIPC_ERR_OVERLOAD error code will be send only If
>>>>> TIPC_DEST_DROPPABLE = false.
>>>>>
>>>>> Even while testing #1227
>>>>> (https://sourceforge.net/p/opensaf/mailman/message/33207717/) my
>>>>> observations and understanding was, an individual TIPC socket is only
>>>>> allowed to queue up
>>>>> OVERLOAD_LIMIT_BASE/2 messages of the lowest importance level before
>>>>> it starts rejecting them.
>>>>> Once a socket receiving queue length exceeds the maximum limit value,
>>>>> the receiving socket will send out a reject message  with
>>>>> TIPC_ERR_OVERLOAD error code with cmsg_type as
>>>>> TIPC_ERRINFO/TIPC_RETDATA, and the tipc code and Linux TIPC 2.0
>>>>> Programmer's Guide  confirmed the same .
>>>>>
>>>>> tipc/socket.c
>>>>> =======================================================
>>>>> /* Reject message if there isn't room to queue it */
>>>>>
>>>>> recv_q_len = (u32)atomic_read(&tipc_queue_size);
>>>>> if (unlikely(recv_q_len >= OVERLOAD_LIMIT_BASE)) {
>>>>>      if (rx_queue_full(msg, recv_q_len, OVERLOAD_LIMIT_BASE))
>>>>>          return TIPC_ERR_OVERLOAD;
>>>>> }
>>>>> recv_q_len = skb_queue_len(&sk->sk_receive_queue);
>>>>> if (unlikely(recv_q_len >= (OVERLOAD_LIMIT_BASE / 2))) {
>>>>>      if (rx_queue_full(msg, recv_q_len, OVERLOAD_LIMIT_BASE / 2))
>>>>>          return TIPC_ERR_OVERLOAD;
>>>>> }
>>>>> =======================================================
>>>>>
>>>>>
>>>>> 2.1.17. setsockopt() of  TIPC 2.0 Programmer's Guide
>>>>> =======================================================
>>>>> TIPC_DEST_DROPPABLE
>>>>> This option governs the handling of messages sent by the socket if 
>>>>> the
>>>>> message cannot be delivered to its destination, either because the
>>>>> receiver is congested or because the specified receiver does not
>>>>> exist. If enabled, the message is discarded; otherwise the message is
>>>>> returned to the sender.
>>>>>
>>>>> By default, this option is disabled for SOCK_SEQPACKET and 
>>>>> SOCK_STREAM
>>>>> socket types, and enabled for SOCK_RDM and SOCK_DGRAM, This
>>>>> arrangement ensures proper teardown of failed connections when
>>>>> connection-oriented data transfer is used, without increasing the
>>>>> complexity of connectionless data transfer.
>>>>>
>>>>> TIPC_SRC_DROPPABLE
>>>>> This option governs the handling of messages sent by the socket if
>>>>> link congestion occurs. If enabled, the message is discarded;
>>>>> otherwise the system queues the message for later transmission.
>>>>> By default, this option is disabled for SOCK_SEQPACKET, SOCK_STREAM,
>>>>> and SOCK_RDM socket types (resulting in "reliable" data transfer), 
>>>>> and
>>>>> enabled for SOCK_DGRAM (resulting in "unreliable" data transfer).
>>>>> =======================================================
>>>>>
>>>>> Now I will try to create OVERLOAD case and update you soon my latest
>>>>> observations.
>>>>>
>>>>> -AVM
>>>>>
>>>>>> Correcting this and adding an abort is not backward compatible as
>>>>>> some service already handle flow control in some way, only log when
>>>>>> packages are dropped.
>>>>>> Regarding ticket #1960 there are other solutions than introducing
>>>>>> flow control in MDS, e.g. expose an option to the service to choose
>>>>>> connection oriented or connection less.
>>>>>> The problem with dropped messages seems in one case related to, (by
>>>>>> MDS), intensive MDS logging.
>>>>>>
>>>>>> /Thanks HansN
>>>>>> -----Original Message-----
>>>>>> From: A V Mahesh [mailto:mahesh.va...@oracle.com]
>>>>>> Sent: den 23 augusti 2016 11:27
>>>>>> To: Hans Nordebäck <hans.nordeb...@ericsson.com>; Anders Widell
>>>>>> <anders.wid...@ericsson.com>; mathi.naic...@oracle.com
>>>>>> Cc: opensaf-devel@lists.sourceforge.net
>>>>>> Subject: Re: [PATCH 1 of 1] MDS: Log TIPC dropped messages [#1957]
>>>>>>
>>>>>> Hi HansN,
>>>>>>
>>>>>> It seems I am missing some thing , please allow me to under stand
>>>>>>
>>>>>> If I currently understand you observation :
>>>>>>
>>>>>> With current Opensaf code ( this #1957 patch NOT applied ) , by
>>>>>> default TIPC_DROPPABLE=true ,while running Opensaf with that binary
>>>>>> when TIPC_ERR_OVERLOAD  occurring, TIPC is not  given errors
>>>>>> TIPC_ERRINFO or  TIPC_RETDATA and following code is not being get 
>>>>>> hit
>>>>>> of function recvfrom_connectionless(), is my understanding right ?
>>>>>>
>>>>>> ===================================================================== 
>>>>>>
>>>>>> ========================================
>>>>>>
>>>>>>
>>>>>> *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();*
>>>>>> *} else if (anc->cmsg_type == TIPC_RETDATA) {*
>>>>>>        /* If we set TIPC_DEST_DROPPABLE off messge (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);
>>>>>>            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();*
>>>>>> }
>>>>>>
>>>>>> ===================================================================== 
>>>>>>
>>>>>> ========================================
>>>>>>
>>>>>>
>>>>>> -AVM
>>>>>>
>>>>>>
>>>>>> On 8/23/2016 1:08 PM, Hans Nordebäck wrote:
>>>>>>> Hi Mahesh,
>>>>>>>
>>>>>>> Please see response below with [HansN] /Thanks HansN
>>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: A V Mahesh [mailto:mahesh.va...@oracle.com]
>>>>>>> Sent: den 23 augusti 2016 08:25
>>>>>>> To: Hans Nordebäck <hans.nordeb...@ericsson.com>; Anders Widell
>>>>>>> <anders.wid...@ericsson.com>; mathi.naic...@oracle.com
>>>>>>> Cc: opensaf-devel@lists.sourceforge.net
>>>>>>> Subject: Re: [PATCH 1 of 1] MDS: Log TIPC dropped messages [#1957]
>>>>>>>
>>>>>>> Hi HansN
>>>>>>>
>>>>>>> Please see response below with [AVM]
>>>>>>>
>>>>>>> -AVM
>>>>>>>
>>>>>>> On 8/23/2016 11:41 AM, Hans Nordebäck wrote:
>>>>>>>> Hi Mahesh,
>>>>>>>>
>>>>>>>> please see comments below.
>>>>>>>>
>>>>>>>> /Thanks HansN
>>>>>>>>
>>>>>>>>
>>>>>>>> On 08/23/2016 07:21 AM, A V Mahesh wrote:
>>>>>>>>> Hi HansN,
>>>>>>>>>
>>>>>>>>> Let us fist discuss the error handling and abort, then we can 
>>>>>>>>> come
>>>>>>>>> back to interpretation of  TIPC currently  does permit  OR does
>>>>>>>>> not permit an application to send a multicast message with the
>>>>>>>>> "destination droppable" setting disabled.
>>>>>>>>>
>>>>>>>>> Let us disable TIPC_DEST_DROPPABLE, so that  TIPC will try to
>>>>>>>>> return an undelivered multicast message to its sender and we can
>>>>>>>>> determine issue is  because of TIPC_ERR_OVERLOAD, this helps in
>>>>>>>>> debugging , so that application may increased SO_SNDBUF/SO_RCVBUF
>>>>>>>>> to reduce the problem.
>>>>>>>>>
>>>>>>>>> But still we need to abort(), the reason for that is current MDS
>>>>>>>>> implementations doesn't have flow control logic ( no retry 
>>>>>>>>> because
>>>>>>>>> of error ) , so Application like AMF can go wrong and cluster 
>>>>>>>>> will
>>>>>>>>> go into unstable/recoverble state.
>>>>>>>>>
>>>>>>>> [HansN] In the current implementation messages are dropped 
>>>>>>>> silently
>>>>>>>> and no abort is done.
>>>>>>> [AVM]  I can see  abort(); in current code , you mean abort(); is
>>>>>>> not working and application(amf) is not existing ?
>>>>>>> [HansN] In case of TIPC_DROPPABLE=true and messages are dropped,
>>>>>>> (TIPC_ERR_OVERLOAD)  no abort is be performed, e.g amfd detects 
>>>>>>> this
>>>>>>> in the msg sanity chk and logs "invalid msg id ..."
>>>>>>> ==================================================================== 
>>>>>>>
>>>>>>> ==
>>>>>>> ======
>>>>>>> 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();*
>>>>>>> } else if (anc->cmsg_type == TIPC_RETDATA) {
>>>>>>>         /* If we set TIPC_DEST_DROPPABLE off messge (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);
>>>>>>>             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();*
>>>>>>> }
>>>>>>> ==================================================================== 
>>>>>>>
>>>>>>> ==
>>>>>>> ======
>>>>>>>> This patch enables logging
>>>>>>>> when packages are dropped to help in debugging. I don't agree that
>>>>>>>> we should also introduce abort, but instead:
>>>>>>>> 1) Implement a solution to handle dropped packages, ticket #1960
>>>>>>> [AVM]  This is nothing but flow control implementation in MDS, this
>>>>>>> is future enhancement
>>>>>>>
>>>>>>>> 2) Investigate why packages may be dropped, the receiving MDS
>>>>>>>> thread is a real time thread and should be able to consume a large
>>>>>>>> amount of incoming messages.
>>>>>>>> E.g. is the receiving MDS thread "live hanging" due to locks, file
>>>>>>>> I/O etc?
>>>>>>>>> This was the reason we haven't gone for it while addressing 
>>>>>>>>> Ticket
>>>>>>>>> #1227
>>>>>>>>> (https://sourceforge.net/p/opensaf/mailman/message/33207717/)
>>>>>>>>> So currently we don't have any advantage of disabling
>>>>>>>>> TIPC_DEST_DROPPABLE and not allowing multicast messages.
>>>>>>>>>
>>>>>>>>> -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