summaryrefslogtreecommitdiff
path: root/lib/vrf.h
diff options
context:
space:
mode:
authorRenato Westphal <renato@opensourcerouting.org>2017-10-02 22:06:04 -0300
committerRenato Westphal <renato@opensourcerouting.org>2017-10-10 09:05:02 -0300
commitff880b78ef2d480b381d29487812279d57c0bbac (patch)
tree6c3996876d32ec10973145aba99aecf514a017ba /lib/vrf.h
parent8928a08f657948c5d04807de399b89051ae54d88 (diff)
*: introduce new rb-tree to optimize interface lookup by ifindex
Performance tests showed that, when running on a system with a large number of interfaces, some daemons would spend a considerable amount of time in the if_lookup_by_index() function. Introduce a new rb-tree to solve this problem. With this change, we need to use the if_set_index() function whenever we want to change the ifindex of an interface. This is necessary to ensure that the 'ifaces_by_index' rb-tree is updated accordingly. The return value of all insert/remove operations in the interface rb-trees is checked to ensure that an error is logged if a corruption is detected. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
Diffstat (limited to 'lib/vrf.h')
-rw-r--r--lib/vrf.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/vrf.h b/lib/vrf.h
index 5309100bd5..8bfdc87689 100644
--- a/lib/vrf.h
+++ b/lib/vrf.h
@@ -79,6 +79,7 @@ struct vrf {
/* Interfaces belonging to this VRF */
struct if_name_head ifaces_by_name;
+ struct if_index_head ifaces_by_index;
/* User data */
void *info;