From 23e81fda7ae08d37d86d3eb80b0d58a3f79355ae Mon Sep 17 00:00:00 2001 From: Kirill Solomko Date: Wed, 6 May 2026 16:04:32 +0200 Subject: [PATCH] MT#65050 add stats.call_info site_id support * new config option site-id (default: 0). with multi site enabled it contans the current site id value. * include site-id into the "Up and running log line". * extend "insert into stats.call_info to populate the site_id column". Change-Id: Ieed766356cff8cf8ce26c3e928a71952944c26d0 --- config.c | 7 +++++++ config.h | 2 ++ mediator.c | 4 ++-- medmysql.c | 4 ++-- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/config.c b/config.c index 7ac07d1..2da160c 100644 --- a/config.c +++ b/config.c @@ -47,6 +47,7 @@ int config_maintenance = 0; int strict_leg_tokens = 0; int config_max_acc_age = 0; int config_intermediate_interval = 0; +int config_site_id = 1; med_loglevel_t config_loglevel = MEDIATOR_DEFAULT_LOGLEVEL; @@ -89,6 +90,7 @@ enum config_option { OPT_LEG_TOKENS = 's', OPT_MAX_ACC_AGE = 'M', OPT_INTERMEDIATE_INTERVAL = 'I', + OPT_SITE_ID = 'j', }; static const char options[] = "?a:c:e:D:i:dlL:h:u:p:b:o:H:U:P:B:O:S:t:T:r:R:A:N:Z:z:W:w:X:x:msM:I:y:Y:"; @@ -132,6 +134,7 @@ struct option long_options[] = { { "leg-tokens", no_argument, NULL, OPT_LEG_TOKENS }, { "max-acc-age", required_argument, NULL, OPT_MAX_ACC_AGE }, { "intermediate-interval", required_argument, NULL, OPT_INTERMEDIATE_INTERVAL }, + { "site-id", required_argument, NULL, OPT_SITE_ID }, { NULL, 0, NULL, 0 }, }; @@ -180,6 +183,7 @@ static void config_help(const char *self, int rc) " -s, --leg-tokens\tStrict acc fields (move to trash otherwise).\n" \ " -M, --max-acc-age\tMaximum age of acc records before trashing them (default = disabled).\n" \ " -I, --intermediate-interval\tHow often to write/update intermediate CDRs (default = disabled).\n" \ +" -k, --site-id\tForce a specific multi site id to run with (default = 0).\n" \ " -?, --help\t\tDisplays this message.\n", MEDIATOR_VERSION, self, MEDIATOR_DEFAULT_CONFIG_FILE, MEDIATOR_DEFAULT_PIDPATH, MEDIATOR_DEFAULT_LOGLEVEL, @@ -332,6 +336,9 @@ static void config_set_option(enum config_option option, const char *value) case OPT_INTERMEDIATE_INTERVAL: config_intermediate_interval = atoi(value); break; + case OPT_SITE_ID: + config_site_id = atoi(value); + break; } } diff --git a/config.h b/config.h index 6c33a54..ffedbad 100644 --- a/config.h +++ b/config.h @@ -49,6 +49,8 @@ extern int strict_leg_tokens; extern int config_max_acc_age; extern int config_intermediate_interval; +extern int config_site_id; + extern med_loglevel_t config_loglevel; int config_parse(int argc, char **argv); diff --git a/mediator.c b/mediator.c index b7d7ca5..90a4254 100644 --- a/mediator.c +++ b/mediator.c @@ -269,8 +269,8 @@ int main(int argc, char **argv) return -1; } - L_NOTICE("Up and running, daemonized=%d, pid-path='%s', interval=%d", - config_daemonize, config_pid_path, config_interval); + L_NOTICE("Up and running, daemonized=%d, pid-path='%s', interval=%d site-id=%d", + config_daemonize, config_pid_path, config_interval, config_site_id); sd_notify(0, "READY=1\n"); maprefresh = 0; diff --git a/medmysql.c b/medmysql.c index 7c43c22..838913d 100644 --- a/medmysql.c +++ b/medmysql.c @@ -1898,9 +1898,9 @@ static int medmysql_flush_call_stat_info() { } query.len = sprintf(query.str, - "insert into %s.call_info set period='%s', sip_code='%s', amount=%" PRIu64 " on duplicate key update period='%s', sip_code='%s', amount=(amount+%" PRIu64 ");", + "insert into %s.call_info set site_id='%d', period='%s', sip_code='%s', amount=%" PRIu64 " on duplicate key update period='%s', sip_code='%s', amount=(amount+%" PRIu64 ");", config_stats_db, - period_t->period, period_t->call_code, period_t->amount, + config_site_id, period_t->period, period_t->call_code, period_t->amount, period_t->period, period_t->call_code, period_t->amount );