From: Cong Wang <amwang@redhat.com>
To: David Stevens <dlstevens@us.ibm.com>
Cc: David Miller <davem@davemloft.net>,
netdev@vger.kernel.org, netdev-owner@vger.kernel.org,
stephen@networkplumber.org
Subject: Re: [Patch net-next v1 3/4] vxlan: add ipv6 support
Date: Tue, 02 Apr 2013 09:46:43 +0800 [thread overview]
Message-ID: <1364867203.17029.7.camel@cr0> (raw)
In-Reply-To: <OF1E30BC31.571FBD44-ON85257B40.005F5AF2-85257B40.0063627F@us.ibm.com>
On Mon, 2013-04-01 at 14:05 -0400, David Stevens wrote:
> David Miller <davem@davemloft.net> wrote on 04/01/2013 01:02:23 PM:
>
> >
> > People avoid using sockaddr because it gets defined both in the kernel
> > exported userland headers and the native libc ones with no easy
> > protection between the two to avoid getting a double definition error.
> >
> > Once you start including kernel exported headers for things like these
> > network device specific interfaces, you potentially run into that issue.
> >
> > Therefore I'd rather the subsystem define their own unique type both
> > to avoid this double definition problem and to allow easy extention
> > later.
>
> I guess, but in this case, I'm not saying it's like a sockaddr
> with
> device-specific requirements. Rather, I'm saying it's exactly a sockaddr--
> it is either a sockaddr_in or a sockaddr_in6 and a family field to say
> which.
> As is, any user/kernel include file conflicts (in the "ip"
> command,
> presumably) are still present because he's using in6_addr, another
> structure
> both in user and kernel space.
> The primary multiple include issue here would be in the "ip"
> command,
> presumably, but sockaddrs in particular have to agree between user and
> kernel space already and both appear with "ip".
> This patch also has issues due to NOT copying other fields in the
> sockaddr_in6 structure (scope_id and port).
>
> Personally, I don't think it's too difficult to make correct code
> using sockaddr/sockaddr_in/sockaddr_in6 here, but even with a new type,
> the code within vxlan.c could (and I argue should) use something like:
>
> union {
> struct sockaddr_in vip_un_sin;
> struct sockaddr_in6 vip_un_sin6;
> struct sockaddr vip_un_sa;
> } vip_sun;
>
> #define vip_sa vip_sun.vip_un_sa
> #define vip_sin vip_sun.vip_un_sin
> #define vip_sin6 vip_sun.vip_un.sin6
>
> and then code like:
> switch (vip->vip_sa.sa_family) {
> case AF_INET:
> vip->vip_sin.sin_addr.s_addr = blah blah
> break;
> case AF_INET6:
> vip->vip_sin6.sin6_addr = blah blah
> break;
> ...
> }
>
> ...or whatever appropriate to the context and family.
Well, besides avoid redefining another type, what else could we gain by
using sockaddr_in6?
Look, we would have "vip->vip_sin.sin_addr.s_addr" instead of
"ipa->ip4", much longer than the current one...
So why defining a shorter and less complex struct matters?
next prev parent reply other threads:[~2013-04-02 1:49 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-31 5:43 [Patch net-next v1 1/4] vxlan: defer vxlan init as late as possible Cong Wang
2013-03-31 5:43 ` [Patch net-next v1 2/4] ipv6: export ipv6_sock_mc_join and ipv6_sock_mc_drop Cong Wang
2013-03-31 5:43 ` [Patch net-next v1 3/4] vxlan: add ipv6 support Cong Wang
2013-04-01 15:19 ` David Stevens
2013-04-01 15:36 ` Stephen Hemminger
2013-04-01 17:02 ` David Miller
2013-04-01 18:05 ` David Stevens
2013-04-01 18:15 ` David Miller
2013-04-01 20:03 ` David Stevens
2013-04-01 20:05 ` David Miller
2013-04-02 1:46 ` Cong Wang [this message]
2013-04-02 13:13 ` David Stevens
2013-04-01 20:14 ` Stephen Hemminger
2013-04-02 1:39 ` Cong Wang
2013-03-31 5:43 ` [Patch net-next v1 4/4] ipv6: Add generic UDP Tunnel segmentation Cong Wang
2013-03-31 6:17 ` [PATCH iproute2] vxlan: add ipv6 support Cong Wang
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=1364867203.17029.7.camel@cr0 \
--to=amwang@redhat.com \
--cc=davem@davemloft.net \
--cc=dlstevens@us.ibm.com \
--cc=netdev-owner@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=stephen@networkplumber.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).