On Mon, Dec 14, 2015 at 04:41:28PM +0100, Thomas Monjalon wrote: > 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; >
Unfortunate. While the idea seems good, I think the structures being different on the different OS's is a problem that need to be solved before we make such a change. /Bruce