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 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.