From 4391f7af669f2fba033c45132b2b8c2673de3938 Mon Sep 17 00:00:00 2001 From: Toni Uhlig Date: Fri, 2 Feb 2024 13:11:30 +0100 Subject: [PATCH] Improve `ndpi_set_config` error printing. * exit `ndpiReader` if a invalid configuration setting detected Signed-off-by: Toni Uhlig --- example/ndpiReader.c | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/example/ndpiReader.c b/example/ndpiReader.c index 6cce7b48f4e..3185c920a10 100644 --- a/example/ndpiReader.c +++ b/example/ndpiReader.c @@ -397,6 +397,28 @@ void ndpiCheckHostStringMatch(char *testChar) { /* *********************************************** */ +static char const * +ndpi_cfg_error2string(ndpi_cfg_error const err) +{ + switch (err) + { + case NDPI_CFG_INVALID_CONTEXT: + return "Invalid context"; + case NDPI_CFG_NOT_FOUND: + return "Configuration not found"; + case NDPI_CFG_INVALID_PARAM: + return "Invalid configuration parameter"; + case NDPI_CFG_CONTEXT_ALREADY_INITIALIZED: + return "Configuration context already initialized"; + case NDPI_CFG_CALLBACK_ERROR: + return "Configuration callback error"; + case NDPI_CFG_OK: + return "Success"; + } + + return "Unknown"; +} + static void ndpiCheckIPMatch(char *testChar) { struct ndpi_detection_module_struct *ndpi_str; u_int16_t ret = NDPI_PROTOCOL_UNKNOWN; @@ -422,9 +444,12 @@ static void ndpiCheckIPMatch(char *testChar) { for(i = 0; i < num_cfgs; i++) { rc = ndpi_set_config(ndpi_str, cfgs[i].proto, cfgs[i].param, cfgs[i].value); - if (rc != NDPI_CFG_OK) - fprintf(stderr, "Error setting config [%s][%s][%s]: %d\n", - cfgs[i].proto, cfgs[i].param, cfgs[i].value, rc); + if (rc != NDPI_CFG_OK) { + fprintf(stderr, "Error setting config [%s][%s][%s]: %s (%d)\n", + (cfgs[i].proto != NULL ? cfgs[i].proto : ""), + cfgs[i].param, cfgs[i].value, ndpi_cfg_error2string(rc), rc); + exit(-1); + } } ndpi_finalize_initialization(ndpi_str); @@ -2873,9 +2898,12 @@ static void setupDetection(u_int16_t thread_id, pcap_t * pcap_handle, for(i = 0; i < num_cfgs; i++) { rc = ndpi_set_config(ndpi_thread_info[thread_id].workflow->ndpi_struct, cfgs[i].proto, cfgs[i].param, cfgs[i].value); - if (rc != NDPI_CFG_OK) - fprintf(stderr, "Error setting config [%s][%s][%s]: %d\n", - cfgs[i].proto, cfgs[i].param, cfgs[i].value, rc); + if (rc != NDPI_CFG_OK) { + fprintf(stderr, "Error setting config [%s][%s][%s]: %s (%d)\n", + (cfgs[i].proto != NULL ? cfgs[i].proto : ""), + cfgs[i].param, cfgs[i].value, ndpi_cfg_error2string(rc), rc); + exit(-1); + } } if(enable_doh_dot_detection)