From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shahaf Shuler Subject: Re: [dpdk-stable] [PATCH v2 11/13] ethdev: fix C++ errors in flow API Date: Tue, 25 Apr 2017 11:35:58 +0000 Message-ID: References: <1ee903d53826fd4709eca74275b2913eb11c83b9.1493108423.git.adrien.mazarguil@6wind.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Cc: "stable@dpdk.org" To: Adrien Mazarguil , "dev@dpdk.org" Return-path: In-Reply-To: <1ee903d53826fd4709eca74275b2913eb11c83b9.1493108423.git.adrien.mazarguil@6wind.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Tuesday, April 25, 2017 11:30 AM, Adrien Mazarguil: > This commit addresses the following compilation errors: >=20 > In file included from build/include/rte_flow_driver.h:50:0, > from /tmp/check-includes.sh.1397.cc:1: > build/include/rte_flow.h:428:2: error: expected primary-expression befor= e > '.' token > [...] > build/include/rte_flow.h:469:1: sorry, unimplemented: non-trivial > designated initializers not supported [...] >=20 > C++ does not support the C99-style designated initializers used in this > file for the default item masks. While the resulting symbols are primaril= y > useful to PMDs (written in C), they are exposed as part of the public API= for > documentation purposes and to assist application writers. >=20 > Considering that: >=20 > - using pre-C99 initialization style for compatibility with C++ would > render them difficult to understand (all struct members must be > initialized) > - using both initialization styles would be needlessly verbose > - not exposing them at all would defeat their purpose > - applications do not normally need these symbols at run time >=20 > This commit hides these symbols from C++ applications. Specific C++ > initializers will be added later if necessary. >=20 > Fixes: 6de5c0f1302c ("ethdev: define default item masks in flow API") >=20 > Cc: stable@dpdk.org > Signed-off-by: Adrien Mazarguil Acked-by: Shahaf Shuler > --- > lib/librte_ether/rte_flow.h | 26 ++++++++++++++++++++++++++ > 1 file changed, 26 insertions(+) >=20 > diff --git a/lib/librte_ether/rte_flow.h b/lib/librte_ether/rte_flow.h in= dex > 7749491..bc7bc45 100644 > --- a/lib/librte_ether/rte_flow.h > +++ b/lib/librte_ether/rte_flow.h > @@ -314,9 +314,11 @@ struct rte_flow_item_any { }; >=20 > /** Default mask for RTE_FLOW_ITEM_TYPE_ANY. */ > +#ifndef __cplusplus > static const struct rte_flow_item_any rte_flow_item_any_mask =3D { > .num =3D 0x00000000, > }; > +#endif >=20 > /** > * RTE_FLOW_ITEM_TYPE_VF > @@ -341,9 +343,11 @@ struct rte_flow_item_vf { }; >=20 > /** Default mask for RTE_FLOW_ITEM_TYPE_VF. */ > +#ifndef __cplusplus > static const struct rte_flow_item_vf rte_flow_item_vf_mask =3D { > .id =3D 0x00000000, > }; > +#endif >=20 > /** > * RTE_FLOW_ITEM_TYPE_PORT > @@ -370,9 +374,11 @@ struct rte_flow_item_port { }; >=20 > /** Default mask for RTE_FLOW_ITEM_TYPE_PORT. */ > +#ifndef __cplusplus > static const struct rte_flow_item_port rte_flow_item_port_mask =3D { > .index =3D 0x00000000, > }; > +#endif >=20 > /** > * RTE_FLOW_ITEM_TYPE_RAW > @@ -403,6 +409,7 @@ struct rte_flow_item_raw { }; >=20 > /** Default mask for RTE_FLOW_ITEM_TYPE_RAW. */ > +#ifndef __cplusplus > static const struct rte_flow_item_raw rte_flow_item_raw_mask =3D { > .relative =3D 1, > .search =3D 1, > @@ -411,6 +418,7 @@ static const struct rte_flow_item_raw > rte_flow_item_raw_mask =3D { > .limit =3D 0xffff, > .length =3D 0xffff, > }; > +#endif >=20 > /** > * RTE_FLOW_ITEM_TYPE_ETH > @@ -424,11 +432,13 @@ struct rte_flow_item_eth { }; >=20 > /** Default mask for RTE_FLOW_ITEM_TYPE_ETH. */ > +#ifndef __cplusplus > static const struct rte_flow_item_eth rte_flow_item_eth_mask =3D { > .dst.addr_bytes =3D "\xff\xff\xff\xff\xff\xff", > .src.addr_bytes =3D "\xff\xff\xff\xff\xff\xff", > .type =3D 0x0000, > }; > +#endif >=20 > /** > * RTE_FLOW_ITEM_TYPE_VLAN > @@ -444,10 +454,12 @@ struct rte_flow_item_vlan { }; >=20 > /** Default mask for RTE_FLOW_ITEM_TYPE_VLAN. */ > +#ifndef __cplusplus > static const struct rte_flow_item_vlan rte_flow_item_vlan_mask =3D { > .tpid =3D 0x0000, > .tci =3D 0xffff, > }; > +#endif >=20 > /** > * RTE_FLOW_ITEM_TYPE_IPV4 > @@ -461,12 +473,14 @@ struct rte_flow_item_ipv4 { }; >=20 > /** Default mask for RTE_FLOW_ITEM_TYPE_IPV4. */ > +#ifndef __cplusplus > static const struct rte_flow_item_ipv4 rte_flow_item_ipv4_mask =3D { > .hdr =3D { > .src_addr =3D 0xffffffff, > .dst_addr =3D 0xffffffff, > }, > }; > +#endif >=20 > /** > * RTE_FLOW_ITEM_TYPE_IPV6. > @@ -480,6 +494,7 @@ struct rte_flow_item_ipv6 { }; >=20 > /** Default mask for RTE_FLOW_ITEM_TYPE_IPV6. */ > +#ifndef __cplusplus > static const struct rte_flow_item_ipv6 rte_flow_item_ipv6_mask =3D { > .hdr =3D { > .src_addr =3D > @@ -490,6 +505,7 @@ static const struct rte_flow_item_ipv6 > rte_flow_item_ipv6_mask =3D { > "\xff\xff\xff\xff\xff\xff\xff\xff", > }, > }; > +#endif >=20 > /** > * RTE_FLOW_ITEM_TYPE_ICMP. > @@ -501,12 +517,14 @@ struct rte_flow_item_icmp { }; >=20 > /** Default mask for RTE_FLOW_ITEM_TYPE_ICMP. */ > +#ifndef __cplusplus > static const struct rte_flow_item_icmp rte_flow_item_icmp_mask =3D { > .hdr =3D { > .icmp_type =3D 0xff, > .icmp_code =3D 0xff, > }, > }; > +#endif >=20 > /** > * RTE_FLOW_ITEM_TYPE_UDP. > @@ -518,12 +536,14 @@ struct rte_flow_item_udp { }; >=20 > /** Default mask for RTE_FLOW_ITEM_TYPE_UDP. */ > +#ifndef __cplusplus > static const struct rte_flow_item_udp rte_flow_item_udp_mask =3D { > .hdr =3D { > .src_port =3D 0xffff, > .dst_port =3D 0xffff, > }, > }; > +#endif >=20 > /** > * RTE_FLOW_ITEM_TYPE_TCP. > @@ -535,12 +555,14 @@ struct rte_flow_item_tcp { }; >=20 > /** Default mask for RTE_FLOW_ITEM_TYPE_TCP. */ > +#ifndef __cplusplus > static const struct rte_flow_item_tcp rte_flow_item_tcp_mask =3D { > .hdr =3D { > .src_port =3D 0xffff, > .dst_port =3D 0xffff, > }, > }; > +#endif >=20 > /** > * RTE_FLOW_ITEM_TYPE_SCTP. > @@ -552,12 +574,14 @@ struct rte_flow_item_sctp { }; >=20 > /** Default mask for RTE_FLOW_ITEM_TYPE_SCTP. */ > +#ifndef __cplusplus > static const struct rte_flow_item_sctp rte_flow_item_sctp_mask =3D { > .hdr =3D { > .src_port =3D 0xffff, > .dst_port =3D 0xffff, > }, > }; > +#endif >=20 > /** > * RTE_FLOW_ITEM_TYPE_VXLAN. > @@ -572,9 +596,11 @@ struct rte_flow_item_vxlan { }; >=20 > /** Default mask for RTE_FLOW_ITEM_TYPE_VXLAN. */ > +#ifndef __cplusplus > static const struct rte_flow_item_vxlan rte_flow_item_vxlan_mask =3D { > .vni =3D "\xff\xff\xff", > }; > +#endif >=20 > /** > * RTE_FLOW_ITEM_TYPE_E_TAG. > -- > 2.1.4