X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Ffib%2Ffib_table.c;h=c37ac1dbd49145e0c798d1c59d1f2f483dae7a27;hb=de412ce51f6f9ca879a09e49594b907e9e99a7ed;hp=d0bc33639b982bdb11e6a314ab0069d10857a47a;hpb=25b049484fcf9161edb2c19250066b893c38c264;p=vpp.git diff --git a/src/vnet/fib/fib_table.c b/src/vnet/fib/fib_table.c index d0bc33639b9..c37ac1dbd49 100644 --- a/src/vnet/fib/fib_table.c +++ b/src/vnet/fib/fib_table.c @@ -197,10 +197,18 @@ fib_table_post_insert_actions (fib_table_t *fib_table, /* * inform the covering entry that a new more specific - * has been inserted beneath it + * has been inserted beneath it. + * If the prefix that has been inserted is a host route + * then it is not possible that it will be the cover for any + * other entry, so we can elide the walk. This is particularly + * beneficial since there are often many host entries sharing the + * same cover (i.e. ADJ or RR sourced entries). */ - fib_entry_cover_change_notify(fib_entry_cover_index, - fib_entry_index); + if (!fib_entry_is_host(fib_entry_index)) + { + fib_entry_cover_change_notify(fib_entry_cover_index, + fib_entry_index); + } } }