diff mbox

[net-next,v2] ipv4: add support for linkdown sysctl to netconf

Message ID 1436291817-1555-1-git-send-email-gospo@cumulusnetworks.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Andy Gospodarek July 7, 2015, 5:56 p.m. UTC
This kernel patch exports the value of the new
ignore_routes_with_linkdown via netconf.

v2: changes to notify userspace via netlink when sysctl values change
and proposed for 'net' since this could be considered a bugfix

Signed-off-by: Andy Gospodarek <gospo@cumulusnetworks.com>
Suggested-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
---
I realize two of these changes result in lines >80 chars, but this is to
keep the coding-style used by the surrounding code.

There are multiple ways to resolve this, but one would be to shorten the
defines used for this feature as "IGNORE_ROUTES_WITH_LINKDOWN" is a
mouthful.  I would propose dropping "_WITH_" from all the defines and
have only "IGNORE_ROUTES_LINKDOWN" everywhere.  Doing this now in 'net'
would be ideal before a release happens and it cannot be changed.

 include/uapi/linux/netconf.h |  1 +
 net/ipv4/devinet.c           | 13 +++++++++++++
 2 files changed, 14 insertions(+)

Comments

Nicolas Dichtel July 8, 2015, 9:43 a.m. UTC | #1
Le 07/07/2015 19:56, Andy Gospodarek a écrit :
> This kernel patch exports the value of the new
> ignore_routes_with_linkdown via netconf.
>
> v2: changes to notify userspace via netlink when sysctl values change
> and proposed for 'net' since this could be considered a bugfix
Hmm, commit title contains net-next, not net.

>
> Signed-off-by: Andy Gospodarek <gospo@cumulusnetworks.com>
> Suggested-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Acked-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>

> ---
> I realize two of these changes result in lines >80 chars, but this is to
> keep the coding-style used by the surrounding code.
>
> There are multiple ways to resolve this, but one would be to shorten the
> defines used for this feature as "IGNORE_ROUTES_WITH_LINKDOWN" is a
> mouthful.  I would propose dropping "_WITH_" from all the defines and
> have only "IGNORE_ROUTES_LINKDOWN" everywhere.  Doing this now in 'net'
Yes. Or even shorter: IGNORE_NH_LINKDOWN?

> would be ideal before a release happens and it cannot be changed.
Yes.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Andy Gospodarek July 8, 2015, 12:42 p.m. UTC | #2
On Wed, Jul 08, 2015 at 11:43:50AM +0200, Nicolas Dichtel wrote:
> Le 07/07/2015 19:56, Andy Gospodarek a écrit :
> >This kernel patch exports the value of the new
> >ignore_routes_with_linkdown via netconf.
> >
> >v2: changes to notify userspace via netlink when sysctl values change
> >and proposed for 'net' since this could be considered a bugfix
> Hmm, commit title contains net-next, not net.
I went back and forth about where it should land.

Dave, any chance we might be able to add this to 'net' rather than
saving it for 4.3?  It isn't a bug-fix per se, but does help make this
feature complete.

> 
> >
> >Signed-off-by: Andy Gospodarek <gospo@cumulusnetworks.com>
> >Suggested-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
> Acked-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
> 
> >---
> >I realize two of these changes result in lines >80 chars, but this is to
> >keep the coding-style used by the surrounding code.
> >
> >There are multiple ways to resolve this, but one would be to shorten the
> >defines used for this feature as "IGNORE_ROUTES_WITH_LINKDOWN" is a
> >mouthful.  I would propose dropping "_WITH_" from all the defines and
> >have only "IGNORE_ROUTES_LINKDOWN" everywhere.  Doing this now in 'net'
> Yes. Or even shorter: IGNORE_NH_LINKDOWN?
That might be a more appropriate name considering multipath/ecmp cases.

> 
> >would be ideal before a release happens and it cannot be changed.
> Yes.
I'll cook up an update based on this patch and see what it looks like.

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller July 9, 2015, 6:35 a.m. UTC | #3
From: Andy Gospodarek <gospo@cumulusnetworks.com>
Date: Tue,  7 Jul 2015 13:56:57 -0400

> This kernel patch exports the value of the new
> ignore_routes_with_linkdown via netconf.
> 
> v2: changes to notify userspace via netlink when sysctl values change
> and proposed for 'net' since this could be considered a bugfix
> 
> Signed-off-by: Andy Gospodarek <gospo@cumulusnetworks.com>
> Suggested-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>

Applied to net, thanks.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/include/uapi/linux/netconf.h b/include/uapi/linux/netconf.h
index 669a1f0..23cbd34 100644
--- a/include/uapi/linux/netconf.h
+++ b/include/uapi/linux/netconf.h
@@ -15,6 +15,7 @@  enum {
 	NETCONFA_RP_FILTER,
 	NETCONFA_MC_FORWARDING,
 	NETCONFA_PROXY_NEIGH,
+	NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN,
 	__NETCONFA_MAX
 };
 #define NETCONFA_MAX	(__NETCONFA_MAX - 1)
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
index 7498716..e813196 100644
--- a/net/ipv4/devinet.c
+++ b/net/ipv4/devinet.c
@@ -1740,6 +1740,8 @@  static int inet_netconf_msgsize_devconf(int type)
 		size += nla_total_size(4);
 	if (type == -1 || type == NETCONFA_PROXY_NEIGH)
 		size += nla_total_size(4);
+	if (type == -1 || type == NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN)
+		size += nla_total_size(4);
 
 	return size;
 }
@@ -1780,6 +1782,10 @@  static int inet_netconf_fill_devconf(struct sk_buff *skb, int ifindex,
 	    nla_put_s32(skb, NETCONFA_PROXY_NEIGH,
 			IPV4_DEVCONF(*devconf, PROXY_ARP)) < 0)
 		goto nla_put_failure;
+	if ((type == -1 || type == NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN) &&
+	    nla_put_s32(skb, NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN,
+			IPV4_DEVCONF(*devconf, IGNORE_ROUTES_WITH_LINKDOWN)) < 0)
+		goto nla_put_failure;
 
 	nlmsg_end(skb, nlh);
 	return 0;
@@ -1819,6 +1825,7 @@  static const struct nla_policy devconf_ipv4_policy[NETCONFA_MAX+1] = {
 	[NETCONFA_FORWARDING]	= { .len = sizeof(int) },
 	[NETCONFA_RP_FILTER]	= { .len = sizeof(int) },
 	[NETCONFA_PROXY_NEIGH]	= { .len = sizeof(int) },
+	[NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN]	= { .len = sizeof(int) },
 };
 
 static int inet_netconf_get_devconf(struct sk_buff *in_skb,
@@ -2048,6 +2055,12 @@  static int devinet_conf_proc(struct ctl_table *ctl, int write,
 			inet_netconf_notify_devconf(net, NETCONFA_PROXY_NEIGH,
 						    ifindex, cnf);
 		}
+		if (i == IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN - 1 &&
+		    new_value != old_value) {
+			ifindex = devinet_conf_ifindex(net, cnf);
+			inet_netconf_notify_devconf(net, NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN,
+						    ifindex, cnf);
+		}
 	}
 
 	return ret;