From: "Niraj Sharma (nirajsha)" <nirajsha-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>
To: Matthew Hall <mhall-Hv3ogNYU3JfZZajBQzqCxQ@public.gmane.org>,
"dev-VfR2kkLFssw@public.gmane.org"
<dev-VfR2kkLFssw@public.gmane.org>
Subject: Re: symbol conflicts between netinet/in.h, arpa/inet.h, and rte_ip.h
Date: Thu, 24 Jul 2014 15:43:08 +0000 [thread overview]
Message-ID: <CFF6773E.98BE%nirajsha@cisco.com> (raw)
In-Reply-To: <20140724075918.GA21277-Hv3ogNYU3JfZZajBQzqCxQ@public.gmane.org>
I also noticed this problem. It is a serious one. I would like it solved.
-- Niraj Sharma
Principal Eng.
Cisco System, Inc.
On 7/24/14 12:59 AM, "Matthew Hall" <mhall-Hv3ogNYU3JfZZajBQzqCxQ@public.gmane.org> wrote:
>Hello,
>
>I ran into some weird symbol conflicts between system netinet/in.h and
>DPDK
>rte_ip.h. They have a lot of duplicated definitions for stuff like
>IPPROTO_IP
>and so on. This breaks when you want to use inet_pton from arpa/inet.h,
>because it includes netinet/in.h to define struct in_addr.
>
>Thus with all the conflicts it's impossible to use a DPDK IP struct
>instead of
>all the system's sockaddr stuff, to store a value from the system copy of
>inet_pton. This would be a common operation if, for example, you want to
>configure all the IP addresses on your box from a JSON file, which is
>what I
>was doing.
>
>The DPDK kludged around it internally by using a file called
>cmdline_parse_ipaddr.c with private copies of these functions. But it in
>my
>opinion very unwisely marked all of the functions as static except for
>cmdline_parse_ipaddr, which only works on the DPDK's proprietary argument
>handling, and not with anything the user might have which is a different
>format.
>
>So, it would be a big help for users if the macros in librte_net files
>would
>check if the symbols already existed, or if they had subheader files
>available
>to grab only non conflicting symbols, or if they would make a proper .h
>and
>factor all the inet_pton and inet_ntop inside the cmdline lib into a
>place
>where users can access them. It would also be a help if they had a less
>ugly
>equivalent to struct sockaddr, which let you work with IP addresses a bit
>more
>easily, such as something like this:
>
>struct ip4_addr {
> uint32_t addr;
>};
>
>typedef struct ip4_addr ip4_addr;
>
>struct ip6_addr {
> uint8_t addr[16];
>};
>
>typedef struct ip6_addr ip6_addr;
>
>struct ip_addr {
> uint8_t family;
> uint8_t prefix;
> union {
> struct ip4_addr ipv4;
> struct ip6_addr ipv6;
> };
>};
>
>I had to create a bunch of duplicate code to handle it in my project,
>since
>the DPDK marked its copies of all these functions as "secret" and didn't
>make
>a .h for them. If any of it is useful I am happy to donate it, although I
>don't think I've got quite enough experience with this specifc part of
>the
>DPDK to code it up all by myself.
>
>Thanks,
>Matthew.
next prev parent reply other threads:[~2014-07-24 15:43 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-24 7:59 symbol conflicts between netinet/in.h, arpa/inet.h, and rte_ip.h Matthew Hall
[not found] ` <20140724075918.GA21277-Hv3ogNYU3JfZZajBQzqCxQ@public.gmane.org>
2014-07-24 15:43 ` Niraj Sharma (nirajsha) [this message]
2014-07-24 22:55 ` Antti Kantee
[not found] ` <53D18EFF.8080804-jIVgJlTk8bs@public.gmane.org>
2014-07-24 23:03 ` Matthew Hall
2014-07-25 1:12 ` Wu, Jingjing
[not found] ` <9BB6961774997848B5B42BEC655768F8AB222F-0J0gbvR4kTg/UvCtAeCM4rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-07-25 4:56 ` Matthew Hall
[not found] ` <b45e77f2-df66-4973-ab40-bde62270c47d-2ueSQiBKiTY7tOexoI0I+QC/G2K4zDHf@public.gmane.org>
2014-07-25 10:33 ` Ananyev, Konstantin
2014-07-25 10:43 ` Thomas Monjalon
2014-07-25 14:40 ` Antti Kantee
[not found] ` <53D26C42.3060907-jIVgJlTk8bs@public.gmane.org>
2014-07-25 14:44 ` Matthew Hall
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CFF6773E.98BE%nirajsha@cisco.com \
--to=nirajsha-fyb4gu1cfyuavxtiumwx3w@public.gmane.org \
--cc=dev-VfR2kkLFssw@public.gmane.org \
--cc=mhall-Hv3ogNYU3JfZZajBQzqCxQ@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.