lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 10 Mar 2015 17:04:23 +0100
From:	Jiri Pirko <jiri@...nulli.us>
To:	Lubomir Rintel <lkundrak@...sk>
Cc:	netdev@...r.kernel.org, linux-kernel@...r.kernel.org,
	linux-api@...r.kernel.org, "David S. Miller" <davem@...emloft.net>,
	Alexey Kuznetsov <kuznet@....inr.ac.ru>
Subject: Re: [PATCH] ipv6: expose RFC4191 route preference via rtnetlink

Tue, Mar 10, 2015 at 04:56:53PM CET, lkundrak@...sk wrote:
>On Tue, 2015-03-03 at 16:17 +0100, Jiri Pirko wrote:
>> Tue, Mar 03, 2015 at 11:01:52AM CET, lkundrak@...sk wrote:
>> >This makes it possible to retain the route preference when RAs are handled in
>> >userspace.
>> >
>> >Signed-off-by: Lubomir Rintel <lkundrak@...sk>
>> >---
>> > include/uapi/linux/rtnetlink.h |  1 +
>> > net/ipv6/route.c               | 16 +++++++++++++++-
>> > 2 files changed, 16 insertions(+), 1 deletion(-)
>> >
>> >diff --git a/include/uapi/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h
>> >index 5cc5d66..0671524 100644
>> >--- a/include/uapi/linux/rtnetlink.h
>> >+++ b/include/uapi/linux/rtnetlink.h
>> >@@ -303,6 +303,7 @@ enum rtattr_type_t {
>> > 	RTA_TABLE,
>> > 	RTA_MARK,
>> > 	RTA_MFC_STATS,
>> >+	RTA_PREF,
>> > 	__RTA_MAX
>> > };
>> > 
>> >diff --git a/net/ipv6/route.c b/net/ipv6/route.c
>> >index 47b5109..08f689e 100644
>> >--- a/net/ipv6/route.c
>> >+++ b/net/ipv6/route.c
>> >@@ -2401,6 +2401,7 @@ static const struct nla_policy rtm_ipv6_policy[RTA_MAX+1] = {
>> > 	[RTA_PRIORITY]          = { .type = NLA_U32 },
>> > 	[RTA_METRICS]           = { .type = NLA_NESTED },
>> > 	[RTA_MULTIPATH]		= { .len = sizeof(struct rtnexthop) },
>> >+	[RTA_PREF]              = { .type = NLA_U8 },
>> > };
>> > 
>> > static int rtm_to_fib6_config(struct sk_buff *skb, struct nlmsghdr *nlh,
>> >@@ -2408,6 +2409,7 @@ static int rtm_to_fib6_config(struct sk_buff *skb, struct nlmsghdr *nlh,
>> > {
>> > 	struct rtmsg *rtm;
>> > 	struct nlattr *tb[RTA_MAX+1];
>> >+	unsigned int pref;
>> > 	int err;
>> > 
>> > 	err = nlmsg_parse(nlh, sizeof(*rtm), tb, RTA_MAX, rtm_ipv6_policy);
>> >@@ -2483,6 +2485,14 @@ static int rtm_to_fib6_config(struct sk_buff *skb, struct nlmsghdr *nlh,
>> > 		cfg->fc_mp_len = nla_len(tb[RTA_MULTIPATH]);
>> > 	}
>> > 
>> >+	if (tb[RTA_PREF]) {
>> >+		pref = nla_get_u8(tb[RTA_PREF]);
>> >+		if (pref == ICMPV6_ROUTER_PREF_LOW ||
>> >+		    pref == ICMPV6_ROUTER_PREF_MEDIUM ||
>> >+		    pref == ICMPV6_ROUTER_PREF_HIGH)
>> >+			cfg->fc_flags |= RTF_PREF(pref);
>> 
>> Don't we want to do "goto errout;" in case pref is invalid ?
>
>I'm not sure. If RFC 4191 suggests that the invalid value ought to be
>ignored (treated as medium). It could be done in the userspace or the
>userspace could just relay whatever it got in the NDP message to the
>kernel.

In that case I would suggest in case of invalid value to set pref to
ICMPV6_ROUTER_PREF_MEDIUM.

>
>What is your opinion on this?
>
>Thank you,
>Lubo
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ