From: Ondrej Zajicek (work) Date: Sat, 2 Feb 2019 12:28:16 +0000 (+0100) Subject: Nest: Reestablish preferred counters X-Git-Tag: v2.0.4~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e1c275d87b26f35c29ec8bfab0a3265810463574;p=thirdparty%2Fbird.git Nest: Reestablish preferred counters --- diff --git a/nest/proto.c b/nest/proto.c index fadce6c7c..ab92d90fe 100644 --- a/nest/proto.c +++ b/nest/proto.c @@ -1696,8 +1696,8 @@ channel_show_stats(struct channel *c) cli_msg(-1006, " Routes: %u imported, %u filtered, %u exported", s->imp_routes, s->filt_routes, s->exp_routes); else - cli_msg(-1006, " Routes: %u imported, %u exported", - s->imp_routes, s->exp_routes); + cli_msg(-1006, " Routes: %u imported, %u exported, %u preferred", + s->imp_routes, s->exp_routes, s->pref_routes); cli_msg(-1006, " Route change stats: received rejected filtered ignored accepted"); cli_msg(-1006, " Import updates: %10u %10u %10u %10u %10u", diff --git a/nest/protocol.h b/nest/protocol.h index 7f539aef6..6c04071b5 100644 --- a/nest/protocol.h +++ b/nest/protocol.h @@ -134,6 +134,7 @@ struct proto_stats { /* Import - from protocol to core */ u32 imp_routes; /* Number of routes successfully imported to the (adjacent) routing table */ u32 filt_routes; /* Number of routes rejected in import filter but kept in the routing table */ + u32 pref_routes; /* Number of routes selected as best in the (adjacent) routing table */ u32 imp_updates_received; /* Number of route updates received */ u32 imp_updates_invalid; /* Number of route updates rejected as invalid */ u32 imp_updates_filtered; /* Number of route updates rejected by filters */ diff --git a/nest/rt-table.c b/nest/rt-table.c index 9952d91ad..0224d4349 100644 --- a/nest/rt-table.c +++ b/nest/rt-table.c @@ -901,8 +901,16 @@ rte_announce(rtable *tab, unsigned type, net *net, rte *new, rte *old, if (!old && !new) return; - if ((type == RA_OPTIMAL) && tab->hostcache) - rt_notify_hostcache(tab, net); + if (type == RA_OPTIMAL) + { + if (new) + new->sender->stats.pref_routes++; + if (old) + old->sender->stats.pref_routes--; + + if (tab->hostcache) + rt_notify_hostcache(tab, net); + } struct channel *c; node *n; WALK_LIST2(c, n, tab->channels, table_node)