Use CTASSERT to make sure:
sizeof ether_header is 2 * ETHER_ADDR_LEN + 2 (14) bytes long sizeof ether_addr is ETHER_ADDR_LEN bytes long On arm, this shows that struct ether_addr needs to be __packed. The first condition muts be true for the bridging code to not dump core. The second one appears to be implicitly relied upon by wi (but many of the rids it sends down likely need __packed too to be safe) and maybe others. It appears to not hurt anything.
This commit is contained in:
parent
d2d6d8d537
commit
a20538a08a
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=164785
@ -68,7 +68,12 @@ struct ether_header {
|
||||
*/
|
||||
struct ether_addr {
|
||||
u_char octet[ETHER_ADDR_LEN];
|
||||
};
|
||||
} __packed;
|
||||
|
||||
#ifdef CTASSERT
|
||||
CTASSERT(sizeof (struct ether_header) == ETHER_ADDR_LEN * 2 + 2);
|
||||
CTASSERT(sizeof (struct ether_addr) == ETHER_ADDR_LEN);
|
||||
#endif
|
||||
|
||||
#define ETHER_IS_MULTICAST(addr) (*(addr) & 0x01) /* is address mcast/bcast? */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user