[dpdk-dev] [PATCH] llib/ibrte_net: workaround to avoid macro conflict

2014-11-17 Thread Neil Horman
On Mon, Nov 03, 2014 at 08:41:53AM +0100, Thomas Monjalon wrote:
> 2014-10-09 07:29, Neil Horman:
> > On Thu, Oct 09, 2014 at 05:20:31AM +, Wu, Jingjing wrote:
> > > Hi, Neil
> > > 
> > > To have rte_ip.h include netinet/in.h directly is also a choice.
> > > 
> > > But netinet/in.h contains a lot of extra stuff, and these may be useless 
> > > some DPDK applications, such as classification.
> > > rte_ip.h provides a more simplify way for the IP protocol layer.
> > > 
> > Not sure what the relevance there is.  The definitions you want are
> > standardized, theres no need for the dpdk to re-invent that wheel.  Get them
> > from the system include file.  The fact that extra macros are available in
> > netinet.h is neither relevant or true (as you can't really say for certain 
> > what
> > an application will need).
> 
> Neil, Matthew,
> 
> I totally agree with your point of view.
> Please, could you propose a patch to fix this issue?
> 
Matthew, can you handle this please, I've got too much going on right now.
Neil

> Thanks
> -- 
> Thomas
> 


[dpdk-dev] [PATCH] llib/ibrte_net: workaround to avoid macro conflict

2014-11-03 Thread Thomas Monjalon
2014-10-09 07:29, Neil Horman:
> On Thu, Oct 09, 2014 at 05:20:31AM +, Wu, Jingjing wrote:
> > Hi, Neil
> > 
> > To have rte_ip.h include netinet/in.h directly is also a choice.
> > 
> > But netinet/in.h contains a lot of extra stuff, and these may be useless 
> > some DPDK applications, such as classification.
> > rte_ip.h provides a more simplify way for the IP protocol layer.
> > 
> Not sure what the relevance there is.  The definitions you want are
> standardized, theres no need for the dpdk to re-invent that wheel.  Get them
> from the system include file.  The fact that extra macros are available in
> netinet.h is neither relevant or true (as you can't really say for certain 
> what
> an application will need).

Neil, Matthew,

I totally agree with your point of view.
Please, could you propose a patch to fix this issue?

Thanks
-- 
Thomas


[dpdk-dev] [PATCH] llib/ibrte_net: workaround to avoid macro conflict

2014-10-09 Thread Neil Horman
On Thu, Oct 09, 2014 at 05:20:31AM +, Wu, Jingjing wrote:
> Hi, Neil
> 
> To have rte_ip.h include netinet/in.h directly is also a choice.
> 
> But netinet/in.h contains a lot of extra stuff, and these may be useless some 
> DPDK applications, such as classification.
> rte_ip.h provides a more simplify way for the IP protocol layer.
> 
Not sure what the relevance there is.  The definitions you want are
standardized, theres no need for the dpdk to re-invent that wheel.  Get them
from the system include file.  The fact that extra macros are available in
netinet.h is neither relevant or true (as you can't really say for certain what
an application will need).

Neil

> -Original Message-
> From: Neil Horman [mailto:nhorman at tuxdriver.com] 
> Sent: Tuesday, September 30, 2014 9:10 PM
> To: Wu, Jingjing
> Cc: dev at dpdk.org
> Subject: Re: [dpdk-dev] [PATCH] llib/ibrte_net: workaround to avoid macro 
> conflict
> 
> On Tue, Sep 30, 2014 at 10:49:08AM +0800, Jingjing Wu wrote:
> > Macros such as IPPROTO_TCP, IPPROTO_UDP are already defined in 
> > .
> > If user's application includes  and rte_ip.h at the same 
> > time, there will be conflict error.
> > 
> > This patch uses the way "#ifndef #endif" to avoid the conflict. 
> > 
> > Signed-off-by: Jingjing Wu 
> > ---
> >  lib/librte_net/rte_ip.h | 5 +
> >  1 file changed, 5 insertions(+)
> > 
> > diff --git a/lib/librte_net/rte_ip.h b/lib/librte_net/rte_ip.h index 
> > e3f65c1..2bcb479 100644
> > --- a/lib/librte_net/rte_ip.h
> > +++ b/lib/librte_net/rte_ip.h
> > @@ -116,6 +116,8 @@ struct ipv4_hdr {
> >  
> >  #defineIPV4_HDR_OFFSET_UNITS   8
> >  
> > +#ifndef _NETINET_IN_H
> > +#ifndef _NETINET_IN_H_
> >  /* IPv4 protocols */
> >  #define IPPROTO_IP 0  /**< dummy for IP */
> >  #define IPPROTO_HOPOPTS0  /**< IP6 hop-by-hop options */
> > @@ -227,6 +229,9 @@ struct ipv4_hdr {
> >  #define IPPROTO_RAW  255  /**< raw IP packet */
> >  #define IPPROTO_MAX  256  /**< maximum protocol number */
> >  
> > +#endif /*_NETINET_IN_H_*/
> > +#endif /*_NETINET_IN_H*/
> > +
> >  /*
> >   * IPv4 address types
> >   */
> > --
> > 1.8.1.4
> > 
> > 
> Why define them at all?  Why not just have rte_ip.h include netinet/in.h 
> directly?  Its a standard include file in a standard location for both bsd 
> and linux IIRC.
> Neil
> 
> 


[dpdk-dev] [PATCH] llib/ibrte_net: workaround to avoid macro conflict

2014-10-09 Thread Wu, Jingjing
Hi, Neil

To have rte_ip.h include netinet/in.h directly is also a choice.

But netinet/in.h contains a lot of extra stuff, and these may be useless some 
DPDK applications, such as classification.
rte_ip.h provides a more simplify way for the IP protocol layer.

-Original Message-
From: Neil Horman [mailto:nhor...@tuxdriver.com] 
Sent: Tuesday, September 30, 2014 9:10 PM
To: Wu, Jingjing
Cc: dev at dpdk.org
Subject: Re: [dpdk-dev] [PATCH] llib/ibrte_net: workaround to avoid macro 
conflict

On Tue, Sep 30, 2014 at 10:49:08AM +0800, Jingjing Wu wrote:
> Macros such as IPPROTO_TCP, IPPROTO_UDP are already defined in .
> If user's application includes  and rte_ip.h at the same 
> time, there will be conflict error.
> 
> This patch uses the way "#ifndef #endif" to avoid the conflict. 
> 
> Signed-off-by: Jingjing Wu 
> ---
>  lib/librte_net/rte_ip.h | 5 +
>  1 file changed, 5 insertions(+)
> 
> diff --git a/lib/librte_net/rte_ip.h b/lib/librte_net/rte_ip.h index 
> e3f65c1..2bcb479 100644
> --- a/lib/librte_net/rte_ip.h
> +++ b/lib/librte_net/rte_ip.h
> @@ -116,6 +116,8 @@ struct ipv4_hdr {
>  
>  #define  IPV4_HDR_OFFSET_UNITS   8
>  
> +#ifndef _NETINET_IN_H
> +#ifndef _NETINET_IN_H_
>  /* IPv4 protocols */
>  #define IPPROTO_IP 0  /**< dummy for IP */
>  #define IPPROTO_HOPOPTS0  /**< IP6 hop-by-hop options */
> @@ -227,6 +229,9 @@ struct ipv4_hdr {
>  #define IPPROTO_RAW  255  /**< raw IP packet */
>  #define IPPROTO_MAX  256  /**< maximum protocol number */
>  
> +#endif /*_NETINET_IN_H_*/
> +#endif /*_NETINET_IN_H*/
> +
>  /*
>   * IPv4 address types
>   */
> --
> 1.8.1.4
> 
> 
Why define them at all?  Why not just have rte_ip.h include netinet/in.h 
directly?  Its a standard include file in a standard location for both bsd and 
linux IIRC.
Neil



[dpdk-dev] [PATCH] llib/ibrte_net: workaround to avoid macro conflict

2014-10-09 Thread Wu, Jingjing
Hi, Thomas

The reason why I didn't remover all the macros in rte_ip.h is:

netinet/in.h contains a lot of extra references to the sockets definitions, 
some external functions declarations, etc. These are useless some DPDK 
applications, such as classification.
rte_ip.h provides a more simplify way for the IP protocol layer. 

> -Original Message-
> From: Thomas Monjalon [mailto:thomas.monjalon at 6wind.com]
> Sent: Tuesday, September 30, 2014 1:08 PM
> To: Wu, Jingjing
> Cc: dev at dpdk.org
> Subject: Re: [dpdk-dev] [PATCH] llib/ibrte_net: workaround to avoid macro 
> conflict
> 
> Hi Jingjing,
> 
> 2014-09-30 10:49, Jingjing Wu:
> > Macros such as IPPROTO_TCP, IPPROTO_UDP are already defined in 
> > .
> > If user's application includes  and rte_ip.h at the same time,
> > there will be conflict error.
> >
> > This patch uses the way "#ifndef #endif" to avoid the conflict.
> 
> I still think it is not the good approach.
>   see http://dpdk.org/ml/archives/dev/2014-August/005006.html
>   and http://dpdk.org/ml/archives/dev/2014-August/005026.html
> Why not simply remove these definitions?
> 
> --
> Thomas


[dpdk-dev] [PATCH] llib/ibrte_net: workaround to avoid macro conflict

2014-10-08 Thread Matthew Hall
If the DPDK wants to conflict with all those system headers it means they also 
have to provide working replacement for inet_pton, inet_ntop, and every other 
important socket function which depends upon in.h or depends upon code 
depending upon in.h. Clearly this doesn't represent a sustainable path for 
software development... I had to reimplement a number of these in my app to get 
around the header conflict and I'm sure I'm not the only one who ran into this 
issue either.

Matthew.
-- 
Sent from my mobile device.

On October 8, 2014 10:20:31 PM PDT, "Wu, Jingjing"  
wrote:
>Hi, Neil
>
>To have rte_ip.h include netinet/in.h directly is also a choice.
>
>But netinet/in.h contains a lot of extra stuff, and these may be
>useless some DPDK applications, such as classification.
>rte_ip.h provides a more simplify way for the IP protocol layer.
>
>-Original Message-
>From: Neil Horman [mailto:nhorman at tuxdriver.com] 
>Sent: Tuesday, September 30, 2014 9:10 PM
>To: Wu, Jingjing
>Cc: dev at dpdk.org
>Subject: Re: [dpdk-dev] [PATCH] llib/ibrte_net: workaround to avoid
>macro conflict
>
>On Tue, Sep 30, 2014 at 10:49:08AM +0800, Jingjing Wu wrote:
>> Macros such as IPPROTO_TCP, IPPROTO_UDP are already defined in
>.
>> If user's application includes  and rte_ip.h at the
>same 
>> time, there will be conflict error.
>> 
>> This patch uses the way "#ifndef #endif" to avoid the conflict. 
>> 
>> Signed-off-by: Jingjing Wu 
>> ---
>>  lib/librte_net/rte_ip.h | 5 +
>>  1 file changed, 5 insertions(+)
>> 
>> diff --git a/lib/librte_net/rte_ip.h b/lib/librte_net/rte_ip.h index 
>> e3f65c1..2bcb479 100644
>> --- a/lib/librte_net/rte_ip.h
>> +++ b/lib/librte_net/rte_ip.h
>> @@ -116,6 +116,8 @@ struct ipv4_hdr {
>>  
>>  #define IPV4_HDR_OFFSET_UNITS   8
>>  
>> +#ifndef _NETINET_IN_H
>> +#ifndef _NETINET_IN_H_
>>  /* IPv4 protocols */
>>  #define IPPROTO_IP 0  /**< dummy for IP */
>>  #define IPPROTO_HOPOPTS0  /**< IP6 hop-by-hop options */
>> @@ -227,6 +229,9 @@ struct ipv4_hdr {
>>  #define IPPROTO_RAW  255  /**< raw IP packet */
>>  #define IPPROTO_MAX  256  /**< maximum protocol number */
>>  
>> +#endif /*_NETINET_IN_H_*/
>> +#endif /*_NETINET_IN_H*/
>> +
>>  /*
>>   * IPv4 address types
>>   */
>> --
>> 1.8.1.4
>> 
>> 
>Why define them at all?  Why not just have rte_ip.h include
>netinet/in.h directly?  Its a standard include file in a standard
>location for both bsd and linux IIRC.
>Neil



[dpdk-dev] [PATCH] llib/ibrte_net: workaround to avoid macro conflict

2014-09-30 Thread Jingjing Wu
Macros such as IPPROTO_TCP, IPPROTO_UDP are already defined in .
If user's application includes  and rte_ip.h at the same time,
there will be conflict error.

This patch uses the way "#ifndef #endif" to avoid the conflict. 

Signed-off-by: Jingjing Wu 
---
 lib/librte_net/rte_ip.h | 5 +
 1 file changed, 5 insertions(+)

diff --git a/lib/librte_net/rte_ip.h b/lib/librte_net/rte_ip.h
index e3f65c1..2bcb479 100644
--- a/lib/librte_net/rte_ip.h
+++ b/lib/librte_net/rte_ip.h
@@ -116,6 +116,8 @@ struct ipv4_hdr {

 #defineIPV4_HDR_OFFSET_UNITS   8

+#ifndef _NETINET_IN_H
+#ifndef _NETINET_IN_H_
 /* IPv4 protocols */
 #define IPPROTO_IP 0  /**< dummy for IP */
 #define IPPROTO_HOPOPTS0  /**< IP6 hop-by-hop options */
@@ -227,6 +229,9 @@ struct ipv4_hdr {
 #define IPPROTO_RAW  255  /**< raw IP packet */
 #define IPPROTO_MAX  256  /**< maximum protocol number */

+#endif /*_NETINET_IN_H_*/
+#endif /*_NETINET_IN_H*/
+
 /*
  * IPv4 address types
  */
-- 
1.8.1.4



[dpdk-dev] [PATCH] llib/ibrte_net: workaround to avoid macro conflict

2014-09-30 Thread Neil Horman
On Tue, Sep 30, 2014 at 10:49:08AM +0800, Jingjing Wu wrote:
> Macros such as IPPROTO_TCP, IPPROTO_UDP are already defined in .
> If user's application includes  and rte_ip.h at the same time,
> there will be conflict error.
> 
> This patch uses the way "#ifndef #endif" to avoid the conflict. 
> 
> Signed-off-by: Jingjing Wu 
> ---
>  lib/librte_net/rte_ip.h | 5 +
>  1 file changed, 5 insertions(+)
> 
> diff --git a/lib/librte_net/rte_ip.h b/lib/librte_net/rte_ip.h
> index e3f65c1..2bcb479 100644
> --- a/lib/librte_net/rte_ip.h
> +++ b/lib/librte_net/rte_ip.h
> @@ -116,6 +116,8 @@ struct ipv4_hdr {
>  
>  #define  IPV4_HDR_OFFSET_UNITS   8
>  
> +#ifndef _NETINET_IN_H
> +#ifndef _NETINET_IN_H_
>  /* IPv4 protocols */
>  #define IPPROTO_IP 0  /**< dummy for IP */
>  #define IPPROTO_HOPOPTS0  /**< IP6 hop-by-hop options */
> @@ -227,6 +229,9 @@ struct ipv4_hdr {
>  #define IPPROTO_RAW  255  /**< raw IP packet */
>  #define IPPROTO_MAX  256  /**< maximum protocol number */
>  
> +#endif /*_NETINET_IN_H_*/
> +#endif /*_NETINET_IN_H*/
> +
>  /*
>   * IPv4 address types
>   */
> -- 
> 1.8.1.4
> 
> 
Why define them at all?  Why not just have rte_ip.h include netinet/in.h
directly?  Its a standard include file in a standard location for both bsd and
linux IIRC.
Neil



[dpdk-dev] [PATCH] llib/ibrte_net: workaround to avoid macro conflict

2014-09-30 Thread Thomas Monjalon
Hi Jingjing,

2014-09-30 10:49, Jingjing Wu:
> Macros such as IPPROTO_TCP, IPPROTO_UDP are already defined in .
> If user's application includes  and rte_ip.h at the same time,
> there will be conflict error.
> 
> This patch uses the way "#ifndef #endif" to avoid the conflict. 

I still think it is not the good approach.
see http://dpdk.org/ml/archives/dev/2014-August/005006.html
and http://dpdk.org/ml/archives/dev/2014-August/005026.html
Why not simply remove these definitions?

-- 
Thomas