path: root/src/main.c
diff options
authorPablo Neira Ayuso <>2015-04-09 14:15:15 +0200
committerPablo Neira Ayuso <>2015-04-11 19:22:45 +0200
commit3ed296118a065caff5600e60d4f7ef18e137f9a0 (patch)
tree50e6776142bf52a6a3b1ae5ae65631c1d1faa9ca /src/main.c
parent628122466c32e7f1795c9754a46e6b6b91e71aa5 (diff)
src: restore interface to index cache
nftables used to have a cache to speed up interface name <-> index lookup, restore it using libmnl. This reduces netlink traffic since if_nametoindex() and if_indextoname() open, send a request, receive the list of interface and close a netlink socket for each call. I think this is also good for consistency since nft -f will operate with the same index number when reloading the ruleset. The cache is populated by when nft_if_nametoindex() and nft_if_indextoname() are used for first time. Then, it it released in the output path. In the interactive mode, it is invalidated after each command. Signed-off-by: Pablo Neira Ayuso <>
Diffstat (limited to 'src/main.c')
1 files changed, 3 insertions, 1 deletions
diff --git a/src/main.c b/src/main.c
index 4590c30b..bfe589a0 100644
--- a/src/main.c
+++ b/src/main.c
@@ -25,6 +25,7 @@
#include <netlink.h>
#include <erec.h>
#include <mnl.h>
+#include <iface.h>
#include <cli.h>
unsigned int max_errors = 10;
@@ -362,7 +363,8 @@ int main(int argc, char * const *argv)
erec_print_list(stderr, &msgs);
+ iface_cache_release();
return rc;