Subject: Re: [Bugme-new] [Bug 8755] New: "ip -6 route change " behaves like "ip -6 route add"

From: Simon Arlott <[email-masked]>
Date: Thu, 19 Jul 2007 19:29:51 +0100

On 16/07/07 14:01, Patrick McHardy wrote:
> Simon Arlott wrote:
>>>>>Changing an existing route:
>>>>># ip -6 r show 2002::/16
>>>>>2002::/16 dev sit0  metric 1024  expires 4482618sec mtu 1480 advmss 7140
>>>>>hoplimit 4294967295
>>>>># ip -6 r change 2002::/16 dev sit0 mtu 1280
>>>>>RTNETLINK answers: File exists

> The code looks like it would support it properly. Please add a
> few printks to inet6_rtm_newaddr to find out what goes wrong.

Erm. It's routing configuration that's broken not address configuration
(ip doesn't even . Looking at route.c through to ip6_fib.c, it doesn't
support replacing routes at all.

$ grep NLM_F_ ipv4/fib_*.c ipv4/route.c ipv6/fib6_* ipv6/ip6_fib.c
ipv6/route.c

ipv4/fib_frontend.c:            cfg->fc_nlflags = NLM_F_CREATE;
ipv4/fib_frontend.c:            .fc_nlflags = NLM_F_CREATE | NLM_F_APPEND,
ipv4/fib_hash.c:                if (cfg->fc_nlflags & NLM_F_EXCL)
ipv4/fib_hash.c:                if (cfg->fc_nlflags & NLM_F_REPLACE) {
ipv4/fib_hash.c:                                  &cfg->fc_nlinfo,
NLM_F_REPLACE);
ipv4/fib_hash.c:                if (!(cfg->fc_nlflags & NLM_F_APPEND))
ipv4/fib_hash.c:        if (!(cfg->fc_nlflags & NLM_F_CREATE))
ipv4/fib_hash.c:                                          NLM_F_MULTI) <
0) {
ipv4/fib_trie.c:                if (cfg->fc_nlflags & NLM_F_EXCL)
ipv4/fib_trie.c:                if (cfg->fc_nlflags & NLM_F_REPLACE) {
ipv4/fib_trie.c:                                tb->tb_id,
&cfg->fc_nlinfo, NLM_F_REPLACE);
ipv4/fib_trie.c:                if (!(cfg->fc_nlflags & NLM_F_APPEND))
ipv4/fib_trie.c:        if (!(cfg->fc_nlflags & NLM_F_CREATE))
ipv4/route.c:                                    1, NLM_F_MULTI) <= 0) {

ipv6/route.c:                prefix, NLM_F_MULTI);

-- 
Simon Arlott