In fact, I believe the C++ standard forces sizeof(unpacked click_ether) == 16 on a four-byte-alignment machine: 5.3.3 par.2: ... When [operator sizeof is] applied to a class, the result is the number of bytes in an object of that class including any padding required for placing objects of that type in an array. Eddie