Subject: CVS commit: syssrc/sys
To: None <source-changes@netbsd.org>
From: Jason R Thorpe <thorpej@netbsd.org>
List: source-changes
Date: 07/01/2002 01:40:41
Module Name:	syssrc
Committed By:	thorpej
Date:		Sun Jun 30 22:40:41 UTC 2002

Modified Files:
	syssrc/sys/kern: uipc_mbuf.c
	syssrc/sys/netinet: icmp_var.h igmp.c igmp_var.h ip_flow.c ip_icmp.c
	    ip_input.c ip_var.h tcp_input.c tcp_var.h udp_usrreq.c udp_var.h
	syssrc/sys/netinet6: icmp6.c ip6_input.c ip6_var.h
	syssrc/sys/sys: mbuf.h

Log Message:
Changes to allow the IPv4 and IPv6 layers to align headers themseves,
as necessary:
* Implement a new mbuf utility routine, m_copyup(), is is like
  m_pullup(), except that it always prepends and copies, rather
  than only doing so if the desired length is larger than m->m_len.
  m_copyup() also allows an offset into the destination mbuf, which
  allows space for packet headers, in the forwarding case.
* Add *_HDR_ALIGNED_P() macros for IP, IPv6, ICMP, and IGMP.  These
  macros expand to 1 if __NO_STRICT_ALIGNMENT is defined, so that
  architectures which do not have strict alignment constraints don't
  pay for the test or visit the new align-if-needed path.
* Use the new macros to check if a header needs to be aligned, or to
  assert that it already is, as appropriate.

Note: This code is still somewhat experimental.  However, the new
code path won't be visited if individual device drivers continue
to guarantee that packets are delivered to layer 3 already properly
aligned (which are rules that are already in use).


To generate a diff of this commit:
cvs rdiff -r1.59 -r1.60 syssrc/sys/kern/uipc_mbuf.c
cvs rdiff -r1.20 -r1.21 syssrc/sys/netinet/icmp_var.h
cvs rdiff -r1.29 -r1.30 syssrc/sys/netinet/igmp.c
cvs rdiff -r1.13 -r1.14 syssrc/sys/netinet/igmp_var.h
cvs rdiff -r1.24 -r1.25 syssrc/sys/netinet/ip_flow.c
cvs rdiff -r1.68 -r1.69 syssrc/sys/netinet/ip_icmp.c
cvs rdiff -r1.153 -r1.154 syssrc/sys/netinet/ip_input.c
cvs rdiff -r1.47 -r1.48 syssrc/sys/netinet/ip_var.h
cvs rdiff -r1.145 -r1.146 syssrc/sys/netinet/tcp_input.c
cvs rdiff -r1.92 -r1.93 syssrc/sys/netinet/tcp_var.h
cvs rdiff -r1.94 -r1.95 syssrc/sys/netinet/udp_usrreq.c
cvs rdiff -r1.18 -r1.19 syssrc/sys/netinet/udp_var.h
cvs rdiff -r1.82 -r1.83 syssrc/sys/netinet6/icmp6.c
cvs rdiff -r1.56 -r1.57 syssrc/sys/netinet6/ip6_input.c
cvs rdiff -r1.21 -r1.22 syssrc/sys/netinet6/ip6_var.h
cvs rdiff -r1.66 -r1.67 syssrc/sys/sys/mbuf.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.