]> git.baikalelectronics.ru Git - kernel.git/commit
fib_rules: Resolve goto rules target on delete
authorSerhey Popovych <serhe.popovych@gmail.com>
Fri, 16 Jun 2017 12:44:47 +0000 (15:44 +0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 20 Jun 2017 16:39:18 +0000 (12:39 -0400)
commite5a9bd6eba9f1c8862d0250a033f86a73554801e
tree8ec580d8bf57c520aaecf2077fe29e1cbb99bd47
parent2959b44e60ae2de495ab45726c5fccc5b86eeaba
fib_rules: Resolve goto rules target on delete

We should avoid marking goto rules unresolved when their
target is actually reachable after rule deletion.

Consolder following sample scenario:

  # ip -4 ru sh
  0:      from all lookup local
  32000:  from all goto 32100
  32100:  from all lookup main
  32100:  from all lookup default
  32766:  from all lookup main
  32767:  from all lookup default

  # ip -4 ru del pref 32100 table main
  # ip -4 ru sh
  0:      from all lookup local
  32000:  from all goto 32100 [unresolved]
  32100:  from all lookup default
  32766:  from all lookup main
  32767:  from all lookup default

After removal of first rule with preference 32100 we
mark all goto rules as unreachable, even when rule with
same preference as removed one still present.

Check if next rule with same preference is available
and make all rules with goto action pointing to it.

Signed-off-by: Serhey Popovych <serhe.popovych@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/fib_rules.c