panic

Matthew Dillon dillon at apollo.backplane.com
Thu Apr 6 23:43:44 PDT 2006


:Now I know a bit more, about what's going on. I'm using IPSEC from 
:my laptop to a router to protect my WLAN. 
:I can easily reproduce the problem by accessing 
:http://www.outdoor.ch/article112.html
:
:Then at in tcp_output() (sys/netinet/tcp_output.c) at
:
:#ifdef IPSEC
:    ipoptlen += ipsec_hdrsiz_tcp(tp);
:#endif
:
:    /*
:     * Adjust data length if insertion of options will
:     * bump the packet length beyond the t_maxopd length.
:     * Clear the FIN bit because we cut off the tail of
:     * the segment.
:     */
:    if (len + optlen + ipoptlen > tp->t_maxopd) {
:        /*
:         * If there is still more to send, don't close the connection.
:         */
:        flags &= ~TH_FIN;
:        len = tp->t_maxopd - optlen - ipoptlen;
:        sendalot = TRUE;
:    }
:
:
:len ends up beeing -13 because tp->t_maxopd = 64, optlen = 12, 
:and ipoptlen = 65 (because ipsec_hdrsiz_tcp(tp) = 65.
:
:But I don't know, how to handle this case correctly.
:
: Johannes

    I appreciate the sleuthing work!  I've forwarded your email to our
    networking expert, Jeffrey Hsu.  If it isn't tracked down in the next
    few days by him or someone else I'll have a go at it myself.

					-Matt
					Matthew Dillon 
					<dillon at xxxxxxxxxxxxx>





More information about the Bugs mailing list