Re: release of updated network sources for 4.3BSD


C. Philip Wood (cpw%sneezy@LANL.GOV)
Thu, 7 Apr 88 09:08:35 MDT


For those of you with VAX's that are planning on incorporating the Berkeley
fixes, the following patch should be applied to ip_output.c. It's the
old byte order problem coming back to haunt us...

Index: /sys/netinet/ip_output.c 4.3 (with new inet code)
Submitted by: C. Philip Wood

Description:
        Ip_output, when called upon to fragment, sends the incorrect
        length and fragment flag in the first packet.
Repeat-By:
        Use minor internet discard protocol with udp and a packet length > the
        mtu of the network you are netting on, and monitor the network with a
        suitable tool.

                % discard -t datagram -l 1700 -p 1 doc

        Or, ship it through a vanilla IP gateway that keeps track of
        data length and header header length errors for IP. Take a snap
        before and after you send the fragmented packet and watch the
        count of bad packets.

                % netstat -s | grep "with data length"
                265 with data length < header length
                % netstat -s | grep "with data length"
                266 with data length < header length

Fix:
*** ip_output.c Wed Apr 6 11:52:50 1988
--- ip_output.c.orig Tue Mar 15 22:12:40 1988
***************
*** 10,14 ****
   * is provided ``as is'' without express or implied warranty.
   *
! * @(#)ip_output.c 7.9 (LANL) 3/15/88
   */

--- 10,14 ----
   * is provided ``as is'' without express or implied warranty.
   *
! * @(#)ip_output.c 7.9 (Berkeley) 3/15/88
   */

***************
*** 233,238 ****
         */
        m_adj(m0, hlen + firstlen - ip->ip_len);
! ip->ip_len = htons((u_short)(hlen + firstlen));
! ip->ip_off = htons((u_short)(ip->ip_off | IP_MF));
        ip->ip_sum = 0;
        ip->ip_sum = in_cksum(m0, hlen);
--- 233,238 ----
         */
        m_adj(m0, hlen + firstlen - ip->ip_len);
! ip->ip_len = hlen + firstlen;
! ip->ip_off |= IP_MF;
        ip->ip_sum = 0;
        ip->ip_sum = in_cksum(m0, hlen);



This archive was generated by hypermail 2.0b3 on Thu Mar 09 2000 - 14:41:55 GMT