From 8ca5d90a44166bf1a501680b2e01dfbbab5f5b94 Mon Sep 17 00:00:00 2001 From: Victor Seva Date: Wed, 6 Dec 2023 12:54:50 +0100 Subject: [PATCH] cfgt: rearrange mod parameters * use _cfgt_ prefix for init_flag --- src/modules/cfgt/cfgt.c | 4 ++-- src/modules/cfgt/cfgt.h | 2 +- src/modules/cfgt/cfgt_int.c | 39 ++++++++++++++++++------------------- src/modules/cfgt/cfgt_int.h | 10 ++++++++++ src/modules/cfgt/cfgt_mod.c | 27 +++++++++++++------------ src/modules/cfgt/cfgt_mod.h | 4 ++-- 6 files changed, 49 insertions(+), 37 deletions(-) diff --git a/src/modules/cfgt/cfgt.c b/src/modules/cfgt/cfgt.c index 2d6bb730b68..e11fce96525 100644 --- a/src/modules/cfgt/cfgt.c +++ b/src/modules/cfgt/cfgt.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015 Victor Seva (sipwise.com) + * Copyright (C) 2015-2023 Victor Seva (sipwise.com) * * This file is part of Kamailio, a free SIP server. * @@ -34,7 +34,7 @@ int bind_cfgt(cfgt_api_t *api) LM_ERR("invalid parameter value\n"); return -1; } - if(init_flag == 0) { + if(_cfgt_init_flag == 0) { LM_ERR("configuration error - trying to bind to cfgt module" " before being initialized\n"); return -1; diff --git a/src/modules/cfgt/cfgt.h b/src/modules/cfgt/cfgt.h index ea6101c2f59..ba290b01bac 100644 --- a/src/modules/cfgt/cfgt.h +++ b/src/modules/cfgt/cfgt.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015 Victor Seva (sipwise.com) + * Copyright (C) 2015-2023 Victor Seva (sipwise.com) * * This file is part of Kamailio, a free SIP server. * diff --git a/src/modules/cfgt/cfgt_int.c b/src/modules/cfgt/cfgt_int.c index 0d4ba27c1b9..f1357bb87aa 100644 --- a/src/modules/cfgt/cfgt_int.c +++ b/src/modules/cfgt/cfgt_int.c @@ -40,14 +40,9 @@ static str _cfgt_route_prefix[] = {str_init("start|"), str_init("exit|"), str_init("drop|"), str_init("return|"), {0, 0}}; -cfgt_node_p _cfgt_node = NULL; -cfgt_hash_p _cfgt_uuid = NULL; -str cfgt_hdr_prefix = {"NGCP%", 5}; -str cfgt_basedir = {"/tmp", 4}; -int cfgt_mask = CFGT_DP_ALL; -int cfgt_skip_unknown = 0; -int cfgt_route_log = 0; -int not_sip = 0; +static cfgt_node_p _cfgt_node = NULL; +static cfgt_hash_p _cfgt_uuid = NULL; +static int not_sip = 0; int _cfgt_get_filename(int msgid, str uuid, str *dest, int *dir); @@ -232,8 +227,10 @@ int _cfgt_get_hdr_helper(struct sip_msg *msg, str *res, int mode) if(!hf) return 1; - if(strncmp(hf->body.s, cfgt_hdr_prefix.s, cfgt_hdr_prefix.len) == 0) { - tmp.s = hf->body.s + cfgt_hdr_prefix.len; + if(strncmp(hf->body.s, _cfgt_params.hdr_prefix.s, + _cfgt_params.hdr_prefix.len) + == 0) { + tmp.s = hf->body.s + _cfgt_params.hdr_prefix.len; delimiter = tmp.s - 1; LM_DBG("Prefix detected. delimiter[%c]\n", *delimiter); if(mode == 0) { @@ -343,8 +340,8 @@ int _cfgt_get_filename(int msgid, str uuid, str *dest, int *dir) if(dest == NULL || uuid.len == 0) return -1; - dest->len = cfgt_basedir.len + uuid.len; - if(cfgt_basedir.s[cfgt_basedir.len - 1] != '/') { + dest->len = _cfgt_params.basedir.len + uuid.len; + if(_cfgt_params.basedir.s[_cfgt_params.basedir.len - 1] != '/') { dest->len = dest->len + 1; format = "%.*s/%.*s/%.*s.json"; } @@ -356,8 +353,8 @@ int _cfgt_get_filename(int msgid, str uuid, str *dest, int *dir) PKG_MEM_ERROR; return -1; } - snprintf(dest->s, dest->len + 1, format, cfgt_basedir.len, cfgt_basedir.s, - uuid.len, uuid.s, lid, sid); + snprintf(dest->s, dest->len + 1, format, _cfgt_params.basedir.len, + _cfgt_params.basedir.s, uuid.len, uuid.s, lid, sid); return 0; } @@ -389,7 +386,8 @@ void cfgt_save_node(cfgt_node_p node) str dest = STR_NULL; int dir = 0; struct stat sb; - if(cfgt_skip_unknown && strncmp(_cfgt_node->uuid.s, "unknown", 7) == 0) { + if(_cfgt_params.skip_unknown + && strncmp(_cfgt_node->uuid.s, "unknown", 7) == 0) { LM_DBG("skip unknown\n"); return; } @@ -652,7 +650,7 @@ void _cfgt_del_routename(cfgt_node_p node) } LM_DBG("del route[%.*s]\n", node->route->s.len, node->route->s.s); node->route = node->route->prev; - if(cfgt_route_log) + if(_cfgt_params.route_log) _cfgt_log_route(node->route->next); pkg_free(node->route->next); node->route->next = NULL; @@ -714,7 +712,8 @@ int cfgt_process_route(struct sip_msg *msg, struct action *a) LM_ERR("node empty\n"); return -1; } - if(cfgt_skip_unknown && strncmp(_cfgt_node->uuid.s, "unknown", 7) == 0) { + if(_cfgt_params.skip_unknown + && strncmp(_cfgt_node->uuid.s, "unknown", 7) == 0) { return 0; } if(a->rname == NULL) { @@ -889,7 +888,7 @@ int cfgt_post(struct sip_msg *msg, unsigned int flags, void *bar) str flowname = STR_NULL; print_cb_flags(flags); if(_cfgt_node) { - if(cfgt_skip_unknown + if(_cfgt_params.skip_unknown && strncmp(_cfgt_node->uuid.s, "unknown", 7) == 0) { return 1; } @@ -931,7 +930,7 @@ int cfgt_msgout(sr_event_param_t *evp) } if(_cfgt_node) { - if(cfgt_skip_unknown + if(_cfgt_params.skip_unknown && strncmp(_cfgt_node->uuid.s, "unknown", 7) == 0) { return 0; } @@ -1010,7 +1009,7 @@ static void cfgt_rpc_mask(rpc_t *rpc, void *ctx) rpc->fault(ctx, 500, "invalid parameters"); return; } - cfgt_mask = mask; + _cfgt_params.mask = mask; rpc->add(ctx, "s", "200 ok"); } diff --git a/src/modules/cfgt/cfgt_int.h b/src/modules/cfgt/cfgt_int.h index 1564daaf802..5dccb6e46f8 100644 --- a/src/modules/cfgt/cfgt_int.h +++ b/src/modules/cfgt/cfgt_int.h @@ -29,6 +29,16 @@ #define CFGT_HASH_SIZE 32 +typedef struct _cfgt_params +{ + str hdr_prefix; + str basedir; + int mask; + int skip_unknown; + int route_log; +} _cfgt_params_t; +extern _cfgt_params_t _cfgt_params; + enum _cfgt_action_type { CFGT_ROUTE = 1, diff --git a/src/modules/cfgt/cfgt_mod.c b/src/modules/cfgt/cfgt_mod.c index 48094261444..4f5e5475486 100644 --- a/src/modules/cfgt/cfgt_mod.c +++ b/src/modules/cfgt/cfgt_mod.c @@ -38,12 +38,15 @@ static int child_init(int rank); /*!< Per-child init function */ extern int bind_cfgt(cfgt_api_t *api); /*! flag to protect against wrong initialization */ -unsigned int init_flag = 0; -extern int cfgt_mask; -extern str cfgt_basedir; -extern str cfgt_hdr_prefix; -extern int cfgt_skip_unknown; -extern int cfgt_route_log; +unsigned _cfgt_init_flag = 0; +_cfgt_params_t _cfgt_params = { + .hdr_prefix = {"NGCP%", 5}, + .basedir = {"/tmp", 4}, + .mask = CFGT_DP_ALL, + .skip_unknown = 0, + .route_log = 0, +}; + /* clang-format off */ /*! \brief * Exported functions @@ -57,11 +60,11 @@ static cmd_export_t cmds[] = { * Exported parameters */ static param_export_t params[] = { - {"basedir", PARAM_STR, &cfgt_basedir}, - {"mask", INT_PARAM, &cfgt_mask}, - {"callid_prefix", PARAM_STR, &cfgt_hdr_prefix}, - {"skip_unknown", INT_PARAM, &cfgt_skip_unknown}, - {"route_log", INT_PARAM, &cfgt_route_log}, + {"basedir", PARAM_STR, &_cfgt_params.basedir}, + {"mask", INT_PARAM, &_cfgt_params.mask}, + {"callid_prefix", PARAM_STR, &_cfgt_params.hdr_prefix}, + {"skip_unknown", INT_PARAM, &_cfgt_params.skip_unknown}, + {"route_log", INT_PARAM, &_cfgt_params.route_log}, {0, 0, 0} }; @@ -97,7 +100,7 @@ static int mod_init(void) return -1; } - init_flag = 1; + _cfgt_init_flag = 1; return 0; } diff --git a/src/modules/cfgt/cfgt_mod.h b/src/modules/cfgt/cfgt_mod.h index 02b74c46f6e..2b43d3aa5ad 100644 --- a/src/modules/cfgt/cfgt_mod.h +++ b/src/modules/cfgt/cfgt_mod.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015 Victor Seva (sipwise.com) + * Copyright (C) 2015-2023 Victor Seva (sipwise.com) * * This file is part of Kamailio, a free SIP server. * @@ -24,6 +24,6 @@ #define _CFGT_MOD_H /*! flag to protect against wrong initialization */ -extern unsigned int init_flag; +extern unsigned int _cfgt_init_flag; #endif