Re: [PATCH] ipv4: fix fib metrics

Alessandro Suardi
2011-03-24T18:15:02Z

On Thu, Mar 24, 2011 at 6:01 PM, Eric Dumazet <eric.dumazet@gmail.com> wrote:
> Le jeudi 24 mars 2011 à 17:15 +0100, Eric Dumazet a écrit :
>
>> I am testing following patch :
>>
>> diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
>> index 622ac4c..654ef5b 100644
>> --- a/net/ipv4/fib_semantics.c
>> +++ b/net/ipv4/fib_semantics.c
>> @@ -251,7 +251,7 @@ static struct fib_info *fib_find_info(const struct fib_info *nfi)
>>                   nfi->fib_prefsrc == fi->fib_prefsrc &&
>>                   nfi->fib_priority == fi->fib_priority &&
>>                   memcmp(nfi->fib_metrics, fi->fib_metrics,
>> -                        sizeof(fi->fib_metrics)) == 0 &&
>> +                        sizeof(u32) * RTAX_MAX) == 0 &&
>>                   ((nfi->fib_flags ^ fi->fib_flags) & ~RTNH_F_DEAD) == 0 &&
>>                   (nfi->fib_nhs == 0 || nh_comp(fi, nfi) == 0))
>>                       return fi;
>>
>>
>
> This works. Here is the formal submission :
>
> Thanks !
>
> [PATCH] ipv4: fix fib metrics
>
> Alessandro Suardi reported that we could not change route metrics :
>
> ip ro change default .... advmss 1400
>
> This regression came with commit 9c150e82ac50 (Allocate fib metrics
> dynamically). fib_metrics is no longer an array, but a pointer to an
> array.
>
> Reported-by: Alessandro Suardi <alessandro.suardi@gmail.com>
> Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
> ---
>  net/ipv4/fib_semantics.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
> index 622ac4c..75b9fb5 100644
> --- a/net/ipv4/fib_semantics.c
> +++ b/net/ipv4/fib_semantics.c
> @@ -251,7 +251,7 @@ static struct fib_info *fib_find_info(const struct fib_info *nfi)
>                    nfi->fib_prefsrc == fi->fib_prefsrc &&
>                    nfi->fib_priority == fi->fib_priority &&
>                    memcmp(nfi->fib_metrics, fi->fib_metrics,
> -                          sizeof(fi->fib_metrics)) == 0 &&
> +                          sizeof(u32) * RTAX_MAX) == 0 &&
>                    ((nfi->fib_flags ^ fi->fib_flags) & ~RTNH_F_DEAD) == 0 &&
>                    (nfi->fib_nhs == 0 || nh_comp(fi, nfi) == 0))
>                        return fi;

Tested-by: Alessandro Suardi <alessandro.suardi@gmail.com>

I will however make one more bug report, as vpnc is broken before
and after this patch - have to dig out what vpnc-script tries to do,
which results in

Error: either "to" is duplicate, or "ipid" is a garbage.

after establishing the VPN tunnel.

Thanks,

--alessandro

"There's always a siren singing you to shipwreck"

(Radiohead, "There There")