I think the right fix here is to eliminate the ‘values’ field and reintroduce the miniflow_get_values() getter. I’ll post a patch to that effect as part of the v3 of the rest of the series.
Jarno > On Jul 16, 2015, at 12:18 PM, Alin Serdean <aserd...@cloudbasesolutions.com> > wrote: > > Won't work with changing [0] to []. > > We need to shift the [0] to be the last member of a struct. I have no idea > about the implications that it will have but something like would work: > > diff --git a/lib/classifier.c b/lib/classifier.c > index 2ed8697..9f58d43 100644 > --- a/lib/classifier.c > +++ b/lib/classifier.c > @@ -1351,8 +1351,8 @@ classifier_rule_overlaps(const struct classifier *cls, > PVECTOR_FOR_EACH_PRIORITY (subtable, target->priority - 1, 2, > sizeof(struct cls_subtable), &cls->subtables) { > struct { > - struct minimask mask; > uint64_t storage[FLOW_U64S]; > + struct minimask mask; > } m; > const struct cls_rule *rule; > > diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c > index 9e7343b..054fc48 100644 > --- a/lib/dpif-netdev.c > +++ b/lib/dpif-netdev.c > @@ -97,8 +97,8 @@ static struct odp_support dp_netdev_support = { > struct netdev_flow_key { > uint32_t hash; /* Hash function differs for different users. */ > uint32_t len; /* Length of the following miniflow (incl. map). */ > - struct miniflow mf; > uint64_t buf[FLOW_MAX_PACKET_U64S]; > + struct miniflow mf; > }; > > /* Exact match cache for frequently used flows > @@ -133,8 +133,8 @@ struct emc_entry { > }; > > struct emc_cache { > - struct emc_entry entries[EM_FLOW_HASH_ENTRIES]; > int sweep_idx; /* For emc_cache_slow_sweep(). */ > + struct emc_entry entries[EM_FLOW_HASH_ENTRIES]; > }; > > /* Iterate in the exact match cache through every entry that might contain a > @@ -166,7 +166,7 @@ static void dpcls_insert(struct dpcls *, struct > dpcls_rule *, > const struct netdev_flow_key *mask); > static void dpcls_remove(struct dpcls *, struct dpcls_rule *); > static bool dpcls_lookup(const struct dpcls *cls, > - const struct netdev_flow_key keys[], > + const struct netdev_flow_key *, > struct dpcls_rule **rules, size_t cnt); > ^L > /* Datapath based on the network device interface from netdev.h. > diff --git a/lib/flow.h b/lib/flow.h > index 392cb59..fb412ae 100644 > --- a/lib/flow.h > +++ b/lib/flow.h > @@ -398,7 +398,7 @@ BUILD_ASSERT_DECL(FLOW_U64S <= 64); > * many elements as there are 1-bits in 'map'. */ > struct miniflow { > uint64_t map; > - uint64_t values[0]; > + uint64_t values[]; > }; > BUILD_ASSERT_DECL(sizeof(struct miniflow) == sizeof(uint64_t)); > > But afterwards we will hit > (https://msdn.microsoft.com/en-us/library/0scy7z2d.aspx): > > lib/dpif-netdev.c(137) : error C2233: 'entries' : arrays of objects > containing zero-size arrays are illegal > lib/dpif-netdev.c(3337) : error C2233: 'keys' : arrays of objects containing > zero-size arrays are illegal > lib/dpif-netdev.c(3881) : error C2233: 'keys' : arrays of objects containing > zero-size arrays are illegal > lib/dpif-netdev.c(3883) : warning C4028: formal parameter 4 different from > declaration > > Alin. > > -----Mesaj original----- > De la: Ben Pfaff [mailto:b...@nicira.com] > Trimis: Thursday, July 16, 2015 10:27 AM > Către: Alin Serdean > Cc: Jarno Rajahalme; dev@openvswitch.org > Subiect: Re: [ovs-dev] [RFC PATCH v2 3/7] flow: Always inline miniflows. > > On Thu, Jul 16, 2015 at 01:35:14AM +0000, Alin Serdean wrote: >> Hi Jarno, >> >> This is breaking the windows build >> (https://ci.appveyor.com/project/blp/ovs/build/1.0.459): >> lib/classifier.c(1355) : error C2229: struct '<unnamed-tag>' has an illegal >> zero-sized array. >> >> The problem is the following >> (https://msdn.microsoft.com/en-us/library/0scy7z2d.aspx ): >> https://github.com/openvswitch/ovs/commit/8fd4792403254f868398a89fb562 >> 5830ee5a08eb#diff-b87c023d7e733f983131f231a672e71eR389 >> >> Could you please take a look into it? > > Usually changing [0] to [] fixes such issues, can you check that that works > here? _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev