[Click] ip.h bitfields and CLICK_BYTE_ORDER?
Markku Savela
Markku.Savela at vtt.fi
Mon Mar 19 07:43:13 EDT 2012
I see following in ip.h (and similar stuff in ip6.h):
struct click_ip {
#if CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN
unsigned ip_v : 4; /* 0 version == 4 */
unsigned ip_hl : 4; /* header length */
#elif CLICK_BYTE_ORDER == CLICK_LITTLE_ENDIAN
unsigned ip_hl : 4; /* 0 header length */
unsigned ip_v : 4; /* version == 4 */
#else
# error "unknown byte order"
#endif
How can these ever work reliably? I mean, what has bitfield
placement within a byte (or int) to do with the byte order?
The C standard gives the compiler a total freedom of
placing the consecutive bit fields within a struct.
More information about the click
mailing list