From e1e995db55be2fe1cb371fb6acd86ea9144da914 Mon Sep 17 00:00:00 2001 From: Andrew Yourtchenko Date: Mon, 26 Mar 2018 12:30:47 +0200 Subject: acl-plugin: defer the ACL plugin user module registration with ACL lookup until it is needed Registering ACL plugin user module within the "ACL as a service" infra during the plugin init causes an unnecesary ACL heap allocation and prevents the changing of the ACL heap size from the startup config. Defer this registration until just before it is needed - i.e. when applying an ACL to an interface. Change-Id: Ied79967596b3b76d6630f136c998e59f8cdad962 Signed-off-by: Andrew Yourtchenko --- src/plugins/acl/acl.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/plugins/acl/acl.c b/src/plugins/acl/acl.c index 57940fcccd7..7499bc4e106 100644 --- a/src/plugins/acl/acl.c +++ b/src/plugins/acl/acl.c @@ -1259,6 +1259,10 @@ acl_interface_set_inout_acl_list (acl_main_t * am, u32 sw_if_index, u32 lc_index = (*pinout_lc_index_by_sw_if_index)[sw_if_index]; if (~0 == lc_index) { + if (~0 == am->interface_acl_user_id) + am->interface_acl_user_id = + acl_plugin_register_user_module ("interface ACL", "sw_if_index", + "is_input"); lc_index = acl_plugin_get_lookup_context_index (am->interface_acl_user_id, sw_if_index, is_input); @@ -4089,9 +4093,7 @@ acl_init (vlib_main_t * vm) /* use the new fancy hash-based matching */ am->use_hash_acl_matching = 1; - am->interface_acl_user_id = - acl_plugin_register_user_module ("interface ACL", "sw_if_index", - "is_input"); + am->interface_acl_user_id = ~0; /* defer till the first use */ return error; } -- cgit 1.2.3-korg