svn: head/sys/netinet
Maxim Sobolev
sobomax at FreeBSD.org
Fri Dec 30 19:59:16 UTC 2011
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);
>
>
More information about the svn-src-head
mailing list