Author: tuexen
Date: Wed Sep 16 14:47:50 2009
New Revision: 197258
URL: http://svn.freebsd.org/changeset/base/197258

Log:
  MFC 197257:
  Fix a bug reported by Daniel Mentz:
  When authenticating DATA chunks some DATA chunks
  might get stuck when the MTU gets decreased via
  an ICMP message.
  
  Approved by: re, rrs (mentor)

Modified:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)
  stable/8/sys/netinet/sctp_usrreq.c

Modified: stable/8/sys/netinet/sctp_usrreq.c
==============================================================================
--- stable/8/sys/netinet/sctp_usrreq.c  Wed Sep 16 14:23:31 2009        
(r197257)
+++ stable/8/sys/netinet/sctp_usrreq.c  Wed Sep 16 14:47:50 2009        
(r197258)
@@ -106,6 +106,7 @@ sctp_pathmtu_adjustment(struct sctp_inpc
     uint16_t nxtsz)
 {
        struct sctp_tmit_chunk *chk;
+       uint16_t overhead;
 
        /* Adjust that too */
        stcb->asoc.smallest_mtu = nxtsz;
@@ -114,13 +115,17 @@ sctp_pathmtu_adjustment(struct sctp_inpc
        SCTP_PRINTF("sctp_pathmtu_adjust called inp:%p stcb:%p net:%p 
nxtsz:%d\n",
            inp, stcb, net, nxtsz);
 #endif
+       overhead = IP_HDR_SIZE;
+       if (sctp_auth_is_required_chunk(SCTP_DATA, 
stcb->asoc.peer_auth_chunks)) {
+               overhead += sctp_get_auth_chunk_len(stcb->asoc.peer_hmac_id);
+       }
        TAILQ_FOREACH(chk, &stcb->asoc.send_queue, sctp_next) {
-               if ((chk->send_size + IP_HDR_SIZE) > nxtsz) {
+               if ((chk->send_size + overhead) > nxtsz) {
                        chk->flags |= CHUNK_FLAGS_FRAGMENT_OK;
                }
        }
        TAILQ_FOREACH(chk, &stcb->asoc.sent_queue, sctp_next) {
-               if ((chk->send_size + IP_HDR_SIZE) > nxtsz) {
+               if ((chk->send_size + overhead) > nxtsz) {
                        /*
                         * For this guy we also mark for immediate resend
                         * since we sent to big of chunk
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to