From: Jiri Pirko <jiri@resnulli.us>
To: Thomas Haller <thaller@redhat.com>
Cc: Hannes Frederic Sowa <hannes@stressinduktion.org>,
netdev@vger.kernel.org, stephen@networkplumber.org,
dcbw@redhat.com
Subject: Re: [PATCH 1/1] ipv6 addrconf: add IFA_F_NOPREFIXROUTE flag to suppress creation of IP6 routes
Date: Mon, 6 Jan 2014 18:38:37 +0100 [thread overview]
Message-ID: <20140106173837.GA2571@minipsycho.orion> (raw)
In-Reply-To: <1389029375-17698-1-git-send-email-thaller@redhat.com>
Mon, Jan 06, 2014 at 06:29:35PM CET, thaller@redhat.com wrote:
>When adding/modifying an IPv6 address, the userspace application needs
>a way to suppress adding a prefix route. This is for example relevant
>together with IFA_F_MANAGERTEMPADDR, where userspace creates autoconf
>generated addresses, but depending on on-link, no route should for the
>prefix should be added.
>
>This flag will not be set as ifa_flags of the address, it is only
>considered as parameter while adding/modifying an address.
>
>Signed-off-by: Thomas Haller <thaller@redhat.com>
>---
> Hi, how about this?
>
> The flag is only a parameter for the netlink command.
> This might be unexpected, because when adding an address,
> you won't see the flag in `ip -6 addr`.
> Still, I think, it is better to do it this way, because having
> an address with the NOPREFIXROUTE flag, does not mean, that
> there is no route for this prefix. It only means, that at the
> moment of setting the address, no route was added.
>
> The alternative would be, not to add a prefix route, when
> IFA_F_MANAGERTEMPADDR is set.
>
> Thomas
>
> include/uapi/linux/if_addr.h | 1 +
> net/ipv6/addrconf.c | 19 +++++++++++++------
> 2 files changed, 14 insertions(+), 6 deletions(-)
>
>diff --git a/include/uapi/linux/if_addr.h b/include/uapi/linux/if_addr.h
>index cfed10b..dea10a8 100644
>--- a/include/uapi/linux/if_addr.h
>+++ b/include/uapi/linux/if_addr.h
>@@ -49,6 +49,7 @@ enum {
> #define IFA_F_TENTATIVE 0x40
> #define IFA_F_PERMANENT 0x80
> #define IFA_F_MANAGETEMPADDR 0x100
>+#define IFA_F_NOPREFIXROUTE 0x200
>
> struct ifa_cacheinfo {
> __u32 ifa_prefered;
>diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
>index 6c16345..51bd757 100644
>--- a/net/ipv6/addrconf.c
>+++ b/net/ipv6/addrconf.c
>@@ -2429,12 +2429,16 @@ static int inet6_addr_add(struct net *net, int ifindex,
> prefered_lft = timeout;
> }
>
>- ifp = ipv6_add_addr(idev, pfx, peer_pfx, plen, scope, ifa_flags,
>+ ifp = ipv6_add_addr(idev, pfx, peer_pfx, plen, scope,
>+ ifa_flags & ~IFA_F_NOPREFIXROUTE,
> valid_lft, prefered_lft);
>
> if (!IS_ERR(ifp)) {
>- addrconf_prefix_route(&ifp->addr, ifp->prefix_len, dev,
>- expires, flags);
>+ if (ifa_flags & IFA_F_NOPREFIXROUTE == 0) {
if (!(ifa_flags & IFA_F_NOPREFIXROUTE)) {
>+ addrconf_prefix_route(&ifp->addr, ifp->prefix_len, dev,
>+ expires, flags);
>+ }
>+
> /*
> * Note that section 3.1 of RFC 4429 indicates
> * that the Optimistic flag should not be set for
>@@ -3662,8 +3666,10 @@ static int inet6_addr_modify(struct inet6_ifaddr *ifp, u32 ifa_flags,
> if (!(ifp->flags&IFA_F_TENTATIVE))
> ipv6_ifa_notify(0, ifp);
>
>- addrconf_prefix_route(&ifp->addr, ifp->prefix_len, ifp->idev->dev,
>- expires, flags);
>+ if (ifa_flags & IFA_F_NOPREFIXROUTE == 0) {
>+ addrconf_prefix_route(&ifp->addr, ifp->prefix_len, ifp->idev->dev,
>+ expires, flags);
>+ }
>
> if (was_managetempaddr || ifp->flags & IFA_F_MANAGETEMPADDR) {
> if (was_managetempaddr && !(ifp->flags & IFA_F_MANAGETEMPADDR))
>@@ -3717,7 +3723,8 @@ inet6_rtm_newaddr(struct sk_buff *skb, struct nlmsghdr *nlh)
> ifa_flags = tb[IFA_FLAGS] ? nla_get_u32(tb[IFA_FLAGS]) : ifm->ifa_flags;
>
> /* We ignore other flags so far. */
>- ifa_flags &= IFA_F_NODAD | IFA_F_HOMEADDRESS | IFA_F_MANAGETEMPADDR;
>+ ifa_flags &= IFA_F_NODAD | IFA_F_HOMEADDRESS | IFA_F_MANAGETEMPADDR |
>+ IFA_F_NOPREFIXROUTE;
>
> ifa = ipv6_get_ifaddr(net, pfx, dev, 1);
> if (ifa == NULL) {
>--
>1.8.4.2
>
next prev parent reply other threads:[~2014-01-06 17:38 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-02 15:34 [patch iproute2 v2 0/2] add support for IFA_F_MANAGETEMPADDR Jiri Pirko
2014-01-02 15:34 ` [patch iproute2 v2 1/2] add support for extended ifa_flags Jiri Pirko
2014-01-02 15:34 ` [patch iproute2 v2 2/2] add support for IFA_F_MANAGETEMPADDR Jiri Pirko
2014-01-02 15:50 ` [PATCH 1/1] fixup! " Thomas Haller
2014-01-04 10:44 ` Jiri Pirko
2014-01-02 17:29 ` [patch iproute2 v2 0/2] " Hannes Frederic Sowa
2014-01-04 10:43 ` Jiri Pirko
2014-01-04 10:55 ` Hannes Frederic Sowa
2014-01-04 11:05 ` Jiri Pirko
2014-01-04 11:15 ` Hannes Frederic Sowa
2014-01-04 11:21 ` Thomas Haller
2014-01-04 11:35 ` Hannes Frederic Sowa
2014-01-06 15:41 ` Thomas Haller
2014-01-06 16:01 ` Hannes Frederic Sowa
2014-01-06 17:29 ` [PATCH 1/1] ipv6 addrconf: add IFA_F_NOPREFIXROUTE flag to suppress creation of IP6 routes Thomas Haller
2014-01-06 17:38 ` Jiri Pirko [this message]
2014-01-07 9:39 ` Hannes Frederic Sowa
2014-01-07 12:01 ` Hannes Frederic Sowa
2014-01-07 12:14 ` Thomas Haller
2014-01-07 12:22 ` Hannes Frederic Sowa
2014-01-07 14:39 ` [PATCH v2 0/2] " Thomas Haller
2014-01-07 14:39 ` [PATCH v2 1/2] " Thomas Haller
2014-01-07 14:39 ` [PATCH v2 2/2] ipv6 addrconf: don't cleanup route prefix for IFA_F_NOPREFIXROUTE Thomas Haller
2014-01-07 16:28 ` Hannes Frederic Sowa
2014-01-07 18:32 ` Thomas Haller
2014-01-07 19:01 ` Hannes Frederic Sowa
2014-01-07 22:54 ` Thomas Haller
2014-01-07 23:09 ` Hannes Frederic Sowa
2014-01-07 16:03 ` [PATCH v2 0/2] ipv6 addrconf: add IFA_F_NOPREFIXROUTE flag to suppress creation of IP6 routes Hannes Frederic Sowa
2014-01-07 21:42 ` Thomas Haller
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=20140106173837.GA2571@minipsycho.orion \
--to=jiri@resnulli.us \
--cc=dcbw@redhat.com \
--cc=hannes@stressinduktion.org \
--cc=netdev@vger.kernel.org \
--cc=stephen@networkplumber.org \
--cc=thaller@redhat.com \
/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).