Sorry about that.
The use case is fast failover where a active ip address (on the same
subnet) can be brought up on an interface without having to re-solicit
the hw addresses that were gathered while the interface was standby (had
a standby ip address).
/Jesper
On 2011-12-14 14:24, Jan Kiszka wrote:
> Please follow the format
>
> [PATCH] Subject line
>
> Patch description lines, specifically explaining the "why".
>
> Signed-off
> (see also
> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/SubmittingPatches;h=689e2371095cc5dfea9927120009341f369159aa;hb=f6f94e2ab1b33f0082ac22d71f66385a60d8157f#l297)
>
> The comments below apply if you can explain the use case to me. The
> standard Linux networking stack seems to behave like current RTnet.
>
> On 2011-12-13 17:22, Jesper Christensen wrote:
>>
>> diff --git a/stack/ipv4/af_inet.c b/stack/ipv4/af_inet.c
>> index 8b394be..18754cf 100644
>> --- a/stack/ipv4/af_inet.c
>> +++ b/stack/ipv4/af_inet.c
>> @@ -239,7 +239,16 @@ static void rt_ip_ifup(struct rtnet_device *rtdev,
>> int i;
>>
>>
>> - rt_ip_route_del_all(rtdev); /* cleanup routing table */
>> + /* Only delete our own address if the new address is
>> + on the same subnet */
>> + if (rtdev->broadcast_ip == up_cmd->args.up.broadcast_ip)
>> + rt_ip_route_del_host(rtdev->local_ip, rtdev);
>> + else
>> + rt_ip_route_del_all(rtdev); /* cleanup routing table */
>> +
>> + /* Delete our loopback route for the device */
> The following block should be moved into the selective deletion path
> above (as del_all already does it for us).
>
>> + if ((tmp = rtdev_get_loopback()) != NULL)
> Please split up assignment and comparison into two lines (yes, that used
> to be done differently in past here as well).
>
>> + rt_ip_route_del_host(rtdev->local_ip, tmp);
> rtdev_dereference(tmp) is missing.
>
>>
>> if (up_cmd->args.up.ip_addr != 0xFFFFFFFF) {
>> rtdev->local_ip = up_cmd->args.up.ip_addr;
> Thanks,
> Jan
>
|