Hi,
(jumping out now, forgive me for being so brief)
> If I understand correctly, you said about the alignment of
> "lower_level" and "upper_level".
> I thought this place is a fine position for variables as regards the
> alignment and I didn't try to put each variable in different places.
>
> If I misunderstood your mention, please let me know.
Not sure what you mean, alignment doesn't matter for them (they're u8).
I was thinking of the packing for the overall struct, we have:
unsigned int max_mtu;
unsigned short type;
unsigned short hard_header_len;
unsigned char min_header_len;
+ unsigned char upper_level, lower_level;
unsigned short needed_headroom;
unsigned short needed_tailroom;
Previously, there was a one byte hole at that spot due to a single
"unsigned char" (after something aligned at least 4 bytes) followed by
"unsigned short" - now you push that out a bit.
If you place the variables a bit lower, below "name_assign_type", you
probably fill a hole instead.
Check out the 'pahole' tool.
johannes