routing UAPI mismatch invalid state behavior?

2 messages, 2 authors, 2017-10-16 · open the first message on its own page

routing UAPI mismatch invalid state behavior?

From: Alexander Aring <hidden>
Date: 2017-10-15 17:02:22

Hi,

I figure out some problem, easy to reproduce:

# setup dummy
$ modprobe dummy
$ ip link set dummy0 up

# issue
$ ip route replace default via 169.254.65.37 dev dummy0
RTNETLINK answers: Network is unreachable

so it will forbid me to do that, but:

$ ip route replace 169.254.65.37 dev dummy0
$ ip route replace default via 169.254.65.37 dev dummy0
$ ip route del 169.254.65.37 dev dummy0

allows me to do that. Is there now a invalid state in my routing table
or is it an expected behavior?

- Alex

Re: routing UAPI mismatch invalid state behavior?

From: David Ahern <hidden>
Date: 2017-10-16 01:56:36

On 10/15/17 11:02 AM, Alexander Aring wrote:
Hi,

I figure out some problem, easy to reproduce:

# setup dummy
$ modprobe dummy
$ ip link set dummy0 up

# issue
$ ip route replace default via 169.254.65.37 dev dummy0
RTNETLINK answers: Network is unreachable
This fails in fib_check_nh. Basically the lookup of the address fails
making it an invalid gateway.
so it will forbid me to do that, but:

$ ip route replace 169.254.65.37 dev dummy0
This succeeds because iproute2 adds NLM_F_CREATE to flags along with
REPLACE:

        if (matches(*argv, "replace") == 0)
                return iproute_modify(RTM_NEWROUTE,
NLM_F_CREATE|NLM_F_REPLACE,
                                      argc-1, argv+1);

but your overall intent here of resolving 169.254.65.37 is the key.
$ ip route replace default via 169.254.65.37 dev dummy0
The existence of the previous route allows the gateway check in
fib_check_nh to succeed.
$ ip route del 169.254.65.37 dev dummy0

allows me to do that. Is there now a invalid state in my routing table
or is it an expected behavior?
There are no recursive checks to gateway lookups once the routes are
installed. With the way routes and nexthops are currently created doing
so would be very expensive in some setups.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help