2015-12-14 15:30, Bruce Richardson: > On Mon, Dec 14, 2015 at 03:54:06PM +0100, Thomas Monjalon wrote: > > 2015-12-10 15:27, Stephen Hemminger: > > > Plan to change to <net/ethernet.h> version of struct ether_addr in > > > DPDK 2.3. The change in DPDK source is trivial but it will impact > > > source compatablilty therefore notification is necessary. > > [...] > > > +* librte_ether: The structure ether_addr in DPDK will be replaced > > > + by using the standard header file <net/ethernet.h>. The structure > > > + size will be the same (no ABI impact), but the structure field name > > > + will change from addr_bytes[] to ether_addr_octet[]. > > > > > > Acked-by: Thomas Monjalon <thomas.monjalon at 6wind.com> > > > > Any other votes for this API cleanup? > > > Are the structures and contents of net/ethernet.h the same on both Linux and > FreeBSD?
Good question. I'm afraid the answer is no. In FreeBSD, it is ether_addr.octet[]. Linux ----- struct ether_addr { u_int8_t ether_addr_octet[ETH_ALEN]; } __attribute__ ((__packed__)); struct ether_header { u_int8_t ether_dhost[ETH_ALEN]; /* destination eth addr */ u_int8_t ether_shost[ETH_ALEN]; /* source ether addr */ u_int16_t ether_type; /* packet type ID field */ } __attribute__ ((__packed__)); FreeBSD ------- struct ether_addr { u_char octet[ETHER_ADDR_LEN]; } __packed; struct ether_header { u_char ether_dhost[ETHER_ADDR_LEN]; u_char ether_shost[ETHER_ADDR_LEN]; u_short ether_type; } __packed;