svn commit: r203343 - head/sys/netinet

Luigi Rizzo luigi at FreeBSD.org
Mon Feb 1 14:13:44 UTC 2010


Author: luigi
Date: Mon Feb  1 14:13:44 2010
New Revision: 203343
URL: http://svn.freebsd.org/changeset/base/203343

Log:
  use u_char instead of u_int for short bitfields.
  
  For our compiler the two constructs are completely equivalent, but
  some compilers (including MSC and tcc) use the base type for alignment,
  which in the cases touched here result in aligning the bitfields
  to 32 bit instead of the 8 bit that is meant here.
  
  Note that almost all other headers where small bitfields
  are used have u_int8_t instead of u_int.
  
  MFC after:	3 days

Modified:
  head/sys/netinet/ip.h
  head/sys/netinet/tcp.h

Modified: head/sys/netinet/ip.h
==============================================================================
--- head/sys/netinet/ip.h	Mon Feb  1 13:30:06 2010	(r203342)
+++ head/sys/netinet/ip.h	Mon Feb  1 14:13:44 2010	(r203343)
@@ -48,11 +48,11 @@
  */
 struct ip {
 #if BYTE_ORDER == LITTLE_ENDIAN
-	u_int	ip_hl:4,		/* header length */
+	u_char	ip_hl:4,		/* header length */
 		ip_v:4;			/* version */
 #endif
 #if BYTE_ORDER == BIG_ENDIAN
-	u_int	ip_v:4,			/* version */
+	u_char	ip_v:4,			/* version */
 		ip_hl:4;		/* header length */
 #endif
 	u_char	ip_tos;			/* type of service */
@@ -142,11 +142,11 @@ struct	ip_timestamp {
 	u_char	ipt_len;		/* size of structure (variable) */
 	u_char	ipt_ptr;		/* index of current entry */
 #if BYTE_ORDER == LITTLE_ENDIAN
-	u_int	ipt_flg:4,		/* flags, see below */
+	u_char	ipt_flg:4,		/* flags, see below */
 		ipt_oflw:4;		/* overflow counter */
 #endif
 #if BYTE_ORDER == BIG_ENDIAN
-	u_int	ipt_oflw:4,		/* overflow counter */
+	u_char	ipt_oflw:4,		/* overflow counter */
 		ipt_flg:4;		/* flags, see below */
 #endif
 	union ipt_timestamp {

Modified: head/sys/netinet/tcp.h
==============================================================================
--- head/sys/netinet/tcp.h	Mon Feb  1 13:30:06 2010	(r203342)
+++ head/sys/netinet/tcp.h	Mon Feb  1 14:13:44 2010	(r203343)
@@ -52,11 +52,11 @@ struct tcphdr {
 	tcp_seq	th_seq;			/* sequence number */
 	tcp_seq	th_ack;			/* acknowledgement number */
 #if BYTE_ORDER == LITTLE_ENDIAN
-	u_int	th_x2:4,		/* (unused) */
+	u_char	th_x2:4,		/* (unused) */
 		th_off:4;		/* data offset */
 #endif
 #if BYTE_ORDER == BIG_ENDIAN
-	u_int	th_off:4,		/* data offset */
+	u_char	th_off:4,		/* data offset */
 		th_x2:4;		/* (unused) */
 #endif
 	u_char	th_flags;


More information about the svn-src-all mailing list