On Wed, Jan 7, 2015 at 3:10 AM, Thomas Graf <tg...@suug.ch> wrote: > On 01/06/15 at 07:37pm, Alexei Starovoitov wrote: >> Even it works ok, I think this struct layout is ugly. >> imo would be much easier to read if you replace >> the whole vxlanhdr with vxlanhdr_gbp >> or split vxlanhdr into two 32-bit structs. >> then __packed hacks won't be needed. > > The main reason why I merged it into vxlanhdr is for documentation > purposes and to avoid duplicating the generic VXLAN header for every > extension. The RCO and GPE extensions would need to duplicate this > over and over. It gets messy in particular when multiple extensions > can be used in combination (such as GBP and RCO) which then each > have their own conflicting header definitions. This way, it is clear > which extensions are compatible by just looking at the definition > of the structure.
I'm afraid 'union' style with first u8 flags working as selector won't work for the case you're describing, but since md.gbp = ntohs(vxh->gbp.policy_id); 2652: 41 0f b7 55 0a movzwl 0xa(%r13),%edx then at least from performance side it's ok at least on x86. So this _packed stuff is fine, though not pretty. It's internal header, so we can improve it later. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev