Won't this break whole lot of third-party software, which expects FreeBSD to be slightly different in this regards? Just curious.

-Maxim

On 10/7/2011 6:43 AM, Andre Oppermann wrote:
Author: andre
Date: Fri Oct  7 13:43:01 2011
New Revision: 226105
URL: http://svn.freebsd.org/changeset/base/226105

Log:
   Add back the IP header length to the total packet length field on
   raw IP sockets.  It was deducted in ip_input() in preparation for
   protocols interested only in the payload.

   On raw sockets the IP header should be delivered as it at came in
   from the network except for the byte order swaps in some fields.

   This brings us in line with all other OS'es that provide raw
   IP sockets.

   Reported by: Matthew Cini Sarreo<mcins1-at-gmail.com>
   MFC after: 3 days

Modified:
   head/sys/netinet/raw_ip.c

Modified: head/sys/netinet/raw_ip.c
==============================================================================
--- head/sys/netinet/raw_ip.c   Fri Oct  7 13:16:21 2011        (r226104)
+++ head/sys/netinet/raw_ip.c   Fri Oct  7 13:43:01 2011        (r226105)
@@ -289,6 +289,13 @@ rip_input(struct mbuf *m, int off)
        last = NULL;

        ifp = m->m_pkthdr.rcvif;
+       /*
+        * Add back the IP header length which was
+        * removed by ip_input().  Raw sockets do
+        * not modify the packet except for some
+        * byte order swaps.
+        */
+       ip->ip_len += off;

        hash = INP_PCBHASH_RAW(proto, ip->ip_src.s_addr,
            ip->ip_dst.s_addr, V_ripcbinfo.ipi_hashmask);



_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to