[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <51CDB1AD.1020202@6wind.com>
Date: Fri, 28 Jun 2013 17:54:21 +0200
From: Nicolas Dichtel <nicolas.dichtel@...nd.com>
To: Stephen Hemminger <stephen@...workplumber.org>
CC: Sven-Thorsten Dietrich <sven@...tta.com>,
LKML <linux-kernel@...r.kernel.org>,
Stephen Hemminger <shemminger@...tta.com>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
Mike Davison <Mike.Davison@...tta.com>
Subject: Re: [PATCH] Set the correct RTNL family for multicast netconf messages
Le 28/06/2013 17:26, Stephen Hemminger a écrit :
> On Thu, 27 Jun 2013 16:44:47 -0700
> Sven-Thorsten Dietrich <sven@...tta.com> wrote:
>
>> There may be other cases that require a special case, so I chose the switch approach.
>>
>> Please note, that all other messages from ipmr[6].c correctly set the family, while these do not.
>>
>> Thanks
>>
>> Sven
>>
>>
>>
>> Subject: Set correct RTNL family for multicast netconf messages
>> From: Sven-Thorsten Dietrich sven@...tta.com Thu Jun 27 16:40:17 2013 -0700
>> Date: Thu Jun 27 16:40:17 2013 -0700:
>>
>>
>> diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
>> index dfc39d4..695858b 100644
>> --- a/net/ipv4/devinet.c
>> +++ b/net/ipv4/devinet.c
>> @@ -1705,7 +1705,16 @@ static int inet_netconf_fill_devconf(struct sk_buff *skb, int ifindex,
>> return -EMSGSIZE;
>>
>> ncm = nlmsg_data(nlh);
>> - ncm->ncm_family = AF_INET;
>> +
>> + switch (type) {
>> + case NETCONFA_MC_FORWARDING:
>> + ncm->ncm_family = RTNL_FAMILY_IPMR;
>> + break;
>> +
>> + default:
>> + ncm->ncm_family = AF_INET;
>> + break;
>> + }
>>
>> if (nla_put_s32(skb, NETCONFA_IFINDEX, ifindex) < 0)
>> goto nla_put_failure;
>> diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
>> index 4ab4c38..a177da4 100644
>> --- a/net/ipv6/addrconf.c
>> +++ b/net/ipv6/addrconf.c
>> @@ -492,7 +492,16 @@ static int inet6_netconf_fill_devconf(struct sk_buff *skb, int ifindex,
>> return -EMSGSIZE;
>>
>> ncm = nlmsg_data(nlh);
>> - ncm->ncm_family = AF_INET6;
>> +
>> + switch (type) {
>> + case NETCONFA_MC_FORWARDING:
>> + ncm->ncm_family = RTNL_FAMILY_IP6MR;
>> + break;
>> +
>> + default:
>> + ncm->ncm_family = AF_INET6;
>> + break;
>> + }
>>
>> if (nla_put_s32(skb, NETCONFA_IFINDEX, ifindex) < 0)
>> goto nla_put_failure;
>>
>
> Found another issue that needs some thought.
> If type == ALL, in that case the family comes up as AF_INET.
> That means that if application is doing a request to get netconf
> it will receive a different answer than if it is montoring for netconf
> changes.
>
> One way to solve would be to split fill_devconf into two parts, one
> for unicast, and one for multicast.
If I understand well, to get all conf variables for IPv4, you will need to make
two dump?
Note that the initial idea of netconf was to be able to dump via netlink the
content of /proc/sys/net/ipv4/conf/ or /proc/sys/net/ipv6/conf/, hence
AF_INET[6] was used to specify 'ipv4' or 'ipv6'.
--
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