Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 31 May 2006 21:57:03 -0700
From:      Emil Kondayan <emil@ekon-bg.com>
To:        freebsd-net@freebsd.org
Subject:   Question about netinet/ip.h
Message-ID:  <200605312157.04027.emil@ekon-bg.com>
In-Reply-To: <200605291103.k4TB38uo097477@freefall.freebsd.org>
References:  <200605291103.k4TB38uo097477@freefall.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Can someone tell me why "ip_hl" and "ip_v" are of type "u_int" when the 
structure is packed and they only fill a byte?
And my second question:do these "#define ..." directives allocate space in the 
structure?

struct ip {
#if BYTE_ORDER == LITTLE_ENDIAN
u_int ip_hl:4, /* header length */
ip_v:4; /* version */
#endif
#if BYTE_ORDER == BIG_ENDIAN
u_int ip_v:4, /* version */
ip_hl:4; /* header length */
#endif
u_char ip_tos; /* type of service */
u_short ip_len; /* total length */
u_short ip_id; /* identification */
u_short ip_off; /* fragment offset field */
#define IP_RF 0x8000 /* reserved fragment flag */
#define IP_DF 0x4000 /* dont fragment flag */
#define IP_MF 0x2000 /* more fragments flag */
#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */
u_char ip_ttl; /* time to live */
u_char ip_p; /* protocol */
u_short ip_sum; /* checksum */
struct in_addr ip_src,ip_dst; /* source and dest address */
} __packed;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200605312157.04027.emil>