From 482df5d67b6b9fe021a1252537c4c499a66de0f8 Mon Sep 17 00:00:00 2001 From: Christine Caulfield Date: Tue, 19 Mar 2019 10:47:58 +0000 Subject: [PATCH] knet: Fix initialising of knet access lists. It needs to be done at both reload and initialize time. Also disable access lists if the config key is removed. Signed-off-by: Christine Caulfield Reviewed-by: Jan Friesse --- exec/totemknet.c | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/exec/totemknet.c b/exec/totemknet.c index 7984b555..884eefe9 100644 --- a/exec/totemknet.c +++ b/exec/totemknet.c @@ -737,6 +737,24 @@ static void timer_function_netif_check_timeout ( } } +static void knet_set_access_list_config(struct totemknet_instance *instance) +{ +#ifdef HAVE_KNET_ACCESS_LIST + uint32_t value = 0; /* disable by default */ + cs_error_t err; + + if (icmap_get_uint32("totem.knet_enable_access_lists", &value) == CS_OK) { + knet_log_printf (LOGSYS_LEVEL_DEBUG, "knet_enable access list: %d", value); + } + + err = knet_handle_enable_access_lists(instance->knet_handle, value); + if (err) { + KNET_LOGSYS_PERROR(errno, LOGSYS_LEVEL_WARNING, "knet_handle_enable_access_lists failed"); + } +#endif +} + + /* NOTE: this relies on the fact that totem_reload_notify() is called first */ static void totemknet_refresh_config( int32_t event, @@ -764,15 +782,7 @@ static void totemknet_refresh_config( return; } -#ifdef HAVE_KNET_ACCESS_LIST - if (icmap_get_uint32("totem.knet_enable_access_lists", &value) == CS_OK) { - knet_log_printf (LOGSYS_LEVEL_DEBUG, "knet_enable access list: %d", value); - err = knet_handle_enable_access_lists(instance->knet_handle, value); - if (err) { - KNET_LOGSYS_PERROR(errno, LOGSYS_LEVEL_WARNING, "knet_handle_enable_access_lists failed"); - } - } -#endif + knet_set_access_list_config(instance); if (icmap_get_uint32("totem.knet_pmtud_interval", &value) == CS_OK) { @@ -944,6 +954,9 @@ int totemknet_initialize ( KNET_LOGSYS_PERROR(errno, LOGSYS_LEVEL_CRIT, "knet_handle_new failed"); goto exit_error; } + + knet_set_access_list_config(instance); + res = knet_handle_pmtud_setfreq(instance->knet_handle, instance->totem_config->knet_pmtud_interval); if (res) { KNET_LOGSYS_PERROR(errno, LOGSYS_LEVEL_WARNING, "knet_handle_pmtud_setfreq failed"); -- 2.39.5