From 66b2f6120ee5d324c3e500b83a0c9274bca8ce85 Mon Sep 17 00:00:00 2001 From: Sukchan Lee Date: Wed, 8 Mar 2023 23:59:33 +0900 Subject: [PATCH] Release v2.6.1 --- debian/changelog | 28 +- debian/open5gs-common.install | 1 + ...v2.6.0.md => 2023-03-08-release-v2.6.1.md} | 8 +- docs/assets/webui/install | 2 +- lib/metrics/context.c | 236 +++++++++++++++ lib/metrics/context.h | 13 + lib/metrics/meson.build | 20 +- lib/metrics/prometheus/context.c | 283 +++--------------- lib/metrics/void/context.c | 68 +++-- meson.build | 6 +- webui/package-lock.json | 4 +- webui/package.json | 2 +- 12 files changed, 357 insertions(+), 314 deletions(-) rename docs/_posts/{2023-03-06-release-v2.6.0.md => 2023-03-08-release-v2.6.1.md} (71%) diff --git a/debian/changelog b/debian/changelog index 473d69ca4..a19a1e788 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,32 +1,8 @@ -open5gs (2.6.0) unstable; urgency=medium +open5gs (2.6.1) unstable; urgency=medium * Upgrade to Release-17 - -- Sukchan Lee Mon, 06 Mar 2023 22:29:58 +0900 - -open5gs (2.6.0~kinetic) kinetic; urgency=medium - - * Upgrade to Release-17 - - -- Sukchan Lee Mon, 06 Mar 2023 22:27:13 +0900 - -open5gs (2.6.0~jammy) jammy; urgency=medium - - * Upgrade to Release-17 - - -- Sukchan Lee Mon, 06 Mar 2023 22:25:36 +0900 - -open5gs (2.6.0~focal) focal; urgency=medium - - * Upgrade to Release-17 - - -- Sukchan Lee Mon, 06 Mar 2023 22:23:38 +0900 - -open5gs (2.6.0~bionic) bionic; urgency=medium - - * Upgrade to Release-17 - - -- Sukchan Lee Mon, 06 Mar 2023 22:20:05 +0900 + -- Sukchan Lee Wed, 08 Mar 2023 22:48:13 +0900 open5gs (2.5.6) unstable; urgency=medium diff --git a/debian/open5gs-common.install b/debian/open5gs-common.install index b2464d717..9a55b62ab 100644 --- a/debian/open5gs-common.install +++ b/debian/open5gs-common.install @@ -1,5 +1,6 @@ usr/lib/*/libogs*.so* usr/lib/*/libfd*.so* usr/lib/*/freeDiameter/*.fdx +usr/lib/*/lib*prom*.so* configs/open5gs/tls/ca.crt /etc/open5gs/tls configs/logrotate/open5gs /etc/logrotate.d diff --git a/docs/_posts/2023-03-06-release-v2.6.0.md b/docs/_posts/2023-03-08-release-v2.6.1.md similarity index 71% rename from docs/_posts/2023-03-06-release-v2.6.0.md rename to docs/_posts/2023-03-08-release-v2.6.1.md index 040ea6685..be702e1dc 100644 --- a/docs/_posts/2023-03-06-release-v2.6.0.md +++ b/docs/_posts/2023-03-08-release-v2.6.1.md @@ -1,6 +1,6 @@ --- -title: "v2.6.0 - Upgrade to Release-17" -date: 2023-03-06 22:31:00 +0900 +title: "v2.6.1 - Upgrade to Release-17" +date: 2023-03-08 22:47:00 +0900 categories: - Release tags: @@ -17,7 +17,7 @@ head_inline: " - UPF High Availability (#2048) - 5G SUCI Profile A/B Scheme (#1443) -See also [Release Note](https://github.com/open5gs/open5gs/releases/tag/v2.6.0) +See also [Release Note](https://github.com/open5gs/open5gs/releases/tag/v2.6.1) -Download -- [v2.6.0.tar.gz](https://github.com/open5gs/open5gs/archive/v2.6.0.tar.gz) +Download -- [v2.6.1.tar.gz](https://github.com/open5gs/open5gs/archive/v2.6.1.tar.gz) {: .notice--info} diff --git a/docs/assets/webui/install b/docs/assets/webui/install index 88303df7c..43b537b15 100644 --- a/docs/assets/webui/install +++ b/docs/assets/webui/install @@ -10,7 +10,7 @@ # PACKAGE="open5gs" -VERSION="2.6.0" +VERSION="2.6.1" print_status() { echo diff --git a/lib/metrics/context.c b/lib/metrics/context.c index 24fea8d5c..794e1cf7b 100644 --- a/lib/metrics/context.c +++ b/lib/metrics/context.c @@ -1,5 +1,6 @@ /* * Copyright (C) 2022 by sysmocom - s.f.m.c. GmbH + * Copyright (C) 2023 by Sukchan Lee * * This file is part of Open5GS. * @@ -19,4 +20,239 @@ #include "ogs-metrics.h" +#define DEFAULT_PROMETHEUS_HTTP_PORT 9090 + int __ogs_metrics_domain; +static ogs_metrics_context_t self; +static int context_initialized = 0; + +void ogs_metrics_context_init(void) +{ + ogs_assert(context_initialized == 0); + + ogs_log_install_domain(&__ogs_metrics_domain, "metrics", ogs_core()->log.level); + + /* Initialize METRICS context */ + memset(&self, 0, sizeof(ogs_metrics_context_t)); + + ogs_metrics_spec_init(ogs_metrics_self()); + ogs_metrics_server_init(ogs_metrics_self()); + + context_initialized = 1; +} + +void ogs_metrics_context_open(ogs_metrics_context_t *ctx) +{ + ogs_metrics_server_open(ctx); +} +void ogs_metrics_context_close(ogs_metrics_context_t *ctx) +{ + ogs_metrics_server_close(ctx); +} + +void ogs_metrics_context_final(void) +{ + ogs_assert(context_initialized == 1); + + ogs_metrics_spec_final(ogs_metrics_self()); + ogs_metrics_server_final(ogs_metrics_self()); + + context_initialized = 0; +} + +ogs_metrics_context_t *ogs_metrics_self(void) +{ + return &self; +} + +static int ogs_metrics_context_prepare(void) +{ + self.metrics_port = DEFAULT_PROMETHEUS_HTTP_PORT; + + return OGS_OK; +} + +int ogs_metrics_context_parse_config(const char *local) +{ + int rv; + yaml_document_t *document = NULL; + ogs_yaml_iter_t root_iter; + + document = ogs_app()->document; + ogs_assert(document); + + rv = ogs_metrics_context_prepare(); + if (rv != OGS_OK) return rv; + + ogs_yaml_iter_init(&root_iter, document); + while (ogs_yaml_iter_next(&root_iter)) { + const char *root_key = ogs_yaml_iter_key(&root_iter); + ogs_assert(root_key); + if (local && !strcmp(root_key, local)) { + ogs_yaml_iter_t local_iter; + ogs_yaml_iter_recurse(&root_iter, &local_iter); + while (ogs_yaml_iter_next(&local_iter)) { + const char *local_key = ogs_yaml_iter_key(&local_iter); + ogs_assert(local_key); + if (!strcmp(local_key, "metrics")) { + ogs_list_t list, list6; + ogs_socknode_t *node = NULL, *node6 = NULL; + + ogs_yaml_iter_t metrics_array, metrics_iter; + ogs_yaml_iter_recurse(&local_iter, &metrics_array); + do { + int i, family = AF_UNSPEC; + int num = 0; + const char *hostname[OGS_MAX_NUM_OF_HOSTNAME]; + + uint16_t port = self.metrics_port; + const char *dev = NULL; + ogs_sockaddr_t *addr = NULL; + + ogs_sockopt_t option; + bool is_option = false; + + if (ogs_yaml_iter_type(&metrics_array) == + YAML_MAPPING_NODE) { + memcpy(&metrics_iter, &metrics_array, + sizeof(ogs_yaml_iter_t)); + } else if (ogs_yaml_iter_type(&metrics_array) == + YAML_SEQUENCE_NODE) { + if (!ogs_yaml_iter_next(&metrics_array)) + break; + ogs_yaml_iter_recurse( + &metrics_array, &metrics_iter); + } else if (ogs_yaml_iter_type(&metrics_array) == + YAML_SCALAR_NODE) { + break; + } else + ogs_assert_if_reached(); + + while (ogs_yaml_iter_next(&metrics_iter)) { + const char *metrics_key = + ogs_yaml_iter_key(&metrics_iter); + ogs_assert(metrics_key); + if (!strcmp(metrics_key, "family")) { + const char *v = ogs_yaml_iter_value( + &metrics_iter); + if (v) family = atoi(v); + if (family != AF_UNSPEC && + family != AF_INET && family != AF_INET6) { + ogs_warn("Ignore family(%d) : " + "AF_UNSPEC(%d), " + "AF_INET(%d), AF_INET6(%d) ", + family, AF_UNSPEC, AF_INET, AF_INET6); + family = AF_UNSPEC; + } + } else if (!strcmp(metrics_key, "addr") || + !strcmp(metrics_key, "name")) { + ogs_yaml_iter_t hostname_iter; + ogs_yaml_iter_recurse(&metrics_iter, + &hostname_iter); + ogs_assert(ogs_yaml_iter_type(&hostname_iter) != + YAML_MAPPING_NODE); + + do { + if (ogs_yaml_iter_type(&hostname_iter) == + YAML_SEQUENCE_NODE) { + if (!ogs_yaml_iter_next( + &hostname_iter)) + break; + } + + ogs_assert(num < OGS_MAX_NUM_OF_HOSTNAME); + hostname[num++] = + ogs_yaml_iter_value(&hostname_iter); + } while ( + ogs_yaml_iter_type(&hostname_iter) == + YAML_SEQUENCE_NODE); + } else if (!strcmp(metrics_key, "port")) { + const char *v = ogs_yaml_iter_value( + &metrics_iter); + if (v) + port = atoi(v); + } else if (!strcmp(metrics_key, "dev")) { + dev = ogs_yaml_iter_value(&metrics_iter); + } else if (!strcmp(metrics_key, "option")) { + rv = ogs_app_config_parse_sockopt( + &metrics_iter, &option); + if (rv != OGS_OK) return rv; + is_option = true; + } else + ogs_warn("unknown key `%s`", metrics_key); + } + + addr = NULL; + for (i = 0; i < num; i++) { + rv = ogs_addaddrinfo(&addr, + family, hostname[i], port, 0); + ogs_assert(rv == OGS_OK); + } + + ogs_list_init(&list); + ogs_list_init(&list6); + + if (addr) { + if (ogs_app()->parameter.no_ipv4 == 0) + ogs_socknode_add( + &list, AF_INET, addr, NULL); + if (ogs_app()->parameter.no_ipv6 == 0) + ogs_socknode_add( + &list6, AF_INET6, addr, NULL); + ogs_freeaddrinfo(addr); + } + + if (dev) { + rv = ogs_socknode_probe( + ogs_app()->parameter.no_ipv4 ? NULL : &list, + ogs_app()->parameter.no_ipv6 ? NULL : &list6, + dev, port, NULL); + ogs_assert(rv == OGS_OK); + } + + node = ogs_list_first(&list); + if (node) { + ogs_metrics_server_t *server = + ogs_metrics_server_add( + node->addr, is_option ? &option : NULL); + ogs_assert(server); + } + node6 = ogs_list_first(&list6); + if (node6) { + ogs_metrics_server_t *server = + ogs_metrics_server_add( + node6->addr, is_option ? &option : NULL); + ogs_assert(server); + } + + ogs_socknode_remove_all(&list); + ogs_socknode_remove_all(&list6); + + } while (ogs_yaml_iter_type(&metrics_array) == + YAML_SEQUENCE_NODE); + + if (ogs_list_first(&self.server_list) == 0) { + ogs_list_init(&list); + ogs_list_init(&list6); + + rv = ogs_socknode_probe( + ogs_app()->parameter.no_ipv4 ? NULL : &list, + ogs_app()->parameter.no_ipv6 ? NULL : &list6, + NULL, self.metrics_port, NULL); + ogs_assert(rv == OGS_OK); + + node = ogs_list_first(&list); + if (node) ogs_metrics_server_add(node->addr, NULL); + node6 = ogs_list_first(&list6); + if (node6) ogs_metrics_server_add(node6->addr, NULL); + + ogs_socknode_remove_all(&list); + ogs_socknode_remove_all(&list6); + } + } + } + } + } + + return OGS_OK; +} diff --git a/lib/metrics/context.h b/lib/metrics/context.h index 3de2446bc..fdc9ec3cf 100644 --- a/lib/metrics/context.h +++ b/lib/metrics/context.h @@ -35,6 +35,13 @@ typedef enum ogs_metrics_metric_type_s { OGS_METRICS_METRIC_TYPE_GAUGE, } ogs_metrics_metric_type_t; +typedef struct ogs_metrics_context_s { + ogs_list_t server_list; + ogs_list_t spec_list; + + uint16_t metrics_port; +} ogs_metrics_context_t; + typedef struct ogs_metrics_context_s ogs_metrics_context_t; void ogs_metrics_context_init(void); void ogs_metrics_context_open(ogs_metrics_context_t *ctx); @@ -43,12 +50,18 @@ void ogs_metrics_context_final(void); ogs_metrics_context_t *ogs_metrics_self(void); int ogs_metrics_context_parse_config(const char *local); +void ogs_metrics_server_init(ogs_metrics_context_t *ctx); +void ogs_metrics_server_open(ogs_metrics_context_t *ctx); +void ogs_metrics_server_close(ogs_metrics_context_t *ctx); +void ogs_metrics_server_final(ogs_metrics_context_t *ctx); ogs_metrics_server_t *ogs_metrics_server_add( ogs_sockaddr_t *addr, ogs_sockopt_t *option); void ogs_metrics_server_remove(ogs_metrics_server_t *server); void ogs_metrics_server_remove_all(void); typedef struct ogs_metrics_spec_s ogs_metrics_spec_t; +void ogs_metrics_spec_init(ogs_metrics_context_t *ctx); +void ogs_metrics_spec_final(ogs_metrics_context_t *ctx); ogs_metrics_spec_t *ogs_metrics_spec_new( ogs_metrics_context_t *ctx, ogs_metrics_metric_type_t type, const char *name, const char *description, diff --git a/lib/metrics/meson.build b/lib/metrics/meson.build index ff11e34bd..e5dd3af1b 100644 --- a/lib/metrics/meson.build +++ b/lib/metrics/meson.build @@ -71,7 +71,25 @@ if meson.version().version_compare('>=0.51.0') libmetrics_dependencies = libmetrics_dependencies + [libprom_dep, libmicrohttpd_dep] libmetrics_file_list = libmetrics_file_list + ' prometheus/context.c' else - libmetrics_file_list = libmetrics_file_list + ' void/context.c' + libprom_sources = files(''' + void/context.c + '''.split()) + + libprom_inc = include_directories('.') + + libprom = library('void_prom', + sources : libprom_sources, + version : libogslib_version, + include_directories : [libprom_inc, libinc], + dependencies : libapp_dep, + install : true) + + libprom_dep = declare_dependency( + link_with : libprom, + include_directories : [libprom_inc, libinc], + dependencies : libapp_dep) + + libmetrics_dependencies = libmetrics_dependencies + [libprom_dep] endif libmetrics_sources = files(libmetrics_file_list.split()) diff --git a/lib/metrics/prometheus/context.c b/lib/metrics/prometheus/context.c index 0029b69a3..59dd30d8c 100644 --- a/lib/metrics/prometheus/context.c +++ b/lib/metrics/prometheus/context.c @@ -1,5 +1,6 @@ /* * Copyright (C) 2022 by sysmocom - s.f.m.c. GmbH + * Copyright (C) 2023 by Sukchan Lee * * This file is part of Open5GS. * @@ -23,16 +24,8 @@ #include "prom.h" #include "microhttpd.h" -#define DEFAULT_PROMETHEUS_HTTP_PORT 9090 #define MAX_LABELS 8 -typedef struct ogs_metrics_context_s { - ogs_list_t server_list; - ogs_list_t spec_list; - - uint16_t metrics_port; -} ogs_metrics_context_t; - typedef struct ogs_metrics_server_s { ogs_socknode_t node; struct MHD_Daemon *mhd; @@ -58,243 +51,39 @@ typedef struct ogs_metrics_inst_s { char *label_values[MAX_LABELS]; } ogs_metrics_inst_t; -static ogs_metrics_context_t self; -static int context_initialized = 0; static OGS_POOL(metrics_spec_pool, ogs_metrics_spec_t); static OGS_POOL(metrics_server_pool, ogs_metrics_server_t); -void ogs_metrics_context_init(void) +static int ogs_metrics_context_server_start(ogs_metrics_server_t *server); +static int ogs_metrics_context_server_stop(ogs_metrics_server_t *server); + +void ogs_metrics_server_init(ogs_metrics_context_t *ctx) { - ogs_assert(context_initialized == 0); - - ogs_log_install_domain(&__ogs_metrics_domain, "metrics", ogs_core()->log.level); - - ogs_pool_init(&metrics_spec_pool, ogs_app()->metrics.max_specs); - - /* Initialize METRICS context */ - memset(&self, 0, sizeof(ogs_metrics_context_t)); - ogs_list_init(&self.spec_list); - prom_collector_registry_default_init(); - - ogs_list_init(&self.server_list); + ogs_list_init(&ctx->server_list); ogs_pool_init(&metrics_server_pool, ogs_app()->pool.nf); - - context_initialized = 1; } -void ogs_metrics_context_final(void) +void ogs_metrics_server_open(ogs_metrics_context_t *ctx) { - ogs_metrics_spec_t *spec = NULL, *next = NULL; - ogs_assert(context_initialized == 1); + ogs_metrics_server_t *server = NULL; - ogs_list_for_each_entry_safe(&self.spec_list, next, spec, entry) { - ogs_metrics_spec_free(spec); - } - prom_collector_registry_destroy(PROM_COLLECTOR_REGISTRY_DEFAULT); + ogs_list_for_each(&ctx->server_list, server) + ogs_metrics_context_server_start(server); +} +void ogs_metrics_server_close(ogs_metrics_context_t *ctx) +{ + ogs_metrics_server_t *server = NULL, *next = NULL; + + ogs_list_for_each_safe(&ctx->server_list, next, server) + ogs_metrics_context_server_stop(server); +} + +void ogs_metrics_server_final(ogs_metrics_context_t *ctx) +{ ogs_metrics_server_remove_all(); - ogs_pool_final(&metrics_spec_pool); ogs_pool_final(&metrics_server_pool); - - context_initialized = 0; -} - -ogs_metrics_context_t *ogs_metrics_self(void) -{ - return &self; -} - -static int ogs_metrics_context_prepare(void) -{ - self.metrics_port = DEFAULT_PROMETHEUS_HTTP_PORT; - - return OGS_OK; -} - -int ogs_metrics_context_parse_config(const char *local) -{ - int rv; - yaml_document_t *document = NULL; - ogs_yaml_iter_t root_iter; - - document = ogs_app()->document; - ogs_assert(document); - - rv = ogs_metrics_context_prepare(); - if (rv != OGS_OK) return rv; - - ogs_yaml_iter_init(&root_iter, document); - while (ogs_yaml_iter_next(&root_iter)) { - const char *root_key = ogs_yaml_iter_key(&root_iter); - ogs_assert(root_key); - if (local && !strcmp(root_key, local)) { - ogs_yaml_iter_t local_iter; - ogs_yaml_iter_recurse(&root_iter, &local_iter); - while (ogs_yaml_iter_next(&local_iter)) { - const char *local_key = ogs_yaml_iter_key(&local_iter); - ogs_assert(local_key); - if (!strcmp(local_key, "metrics")) { - ogs_list_t list, list6; - ogs_socknode_t *node = NULL, *node6 = NULL; - - ogs_yaml_iter_t metrics_array, metrics_iter; - ogs_yaml_iter_recurse(&local_iter, &metrics_array); - do { - int i, family = AF_UNSPEC; - int num = 0; - const char *hostname[OGS_MAX_NUM_OF_HOSTNAME]; - - uint16_t port = self.metrics_port; - const char *dev = NULL; - ogs_sockaddr_t *addr = NULL; - - ogs_sockopt_t option; - bool is_option = false; - - if (ogs_yaml_iter_type(&metrics_array) == - YAML_MAPPING_NODE) { - memcpy(&metrics_iter, &metrics_array, - sizeof(ogs_yaml_iter_t)); - } else if (ogs_yaml_iter_type(&metrics_array) == - YAML_SEQUENCE_NODE) { - if (!ogs_yaml_iter_next(&metrics_array)) - break; - ogs_yaml_iter_recurse( - &metrics_array, &metrics_iter); - } else if (ogs_yaml_iter_type(&metrics_array) == - YAML_SCALAR_NODE) { - break; - } else - ogs_assert_if_reached(); - - while (ogs_yaml_iter_next(&metrics_iter)) { - const char *metrics_key = - ogs_yaml_iter_key(&metrics_iter); - ogs_assert(metrics_key); - if (!strcmp(metrics_key, "family")) { - const char *v = ogs_yaml_iter_value( - &metrics_iter); - if (v) family = atoi(v); - if (family != AF_UNSPEC && - family != AF_INET && family != AF_INET6) { - ogs_warn("Ignore family(%d) : " - "AF_UNSPEC(%d), " - "AF_INET(%d), AF_INET6(%d) ", - family, AF_UNSPEC, AF_INET, AF_INET6); - family = AF_UNSPEC; - } - } else if (!strcmp(metrics_key, "addr") || - !strcmp(metrics_key, "name")) { - ogs_yaml_iter_t hostname_iter; - ogs_yaml_iter_recurse(&metrics_iter, - &hostname_iter); - ogs_assert(ogs_yaml_iter_type(&hostname_iter) != - YAML_MAPPING_NODE); - - do { - if (ogs_yaml_iter_type(&hostname_iter) == - YAML_SEQUENCE_NODE) { - if (!ogs_yaml_iter_next( - &hostname_iter)) - break; - } - - ogs_assert(num < OGS_MAX_NUM_OF_HOSTNAME); - hostname[num++] = - ogs_yaml_iter_value(&hostname_iter); - } while ( - ogs_yaml_iter_type(&hostname_iter) == - YAML_SEQUENCE_NODE); - } else if (!strcmp(metrics_key, "port")) { - const char *v = ogs_yaml_iter_value( - &metrics_iter); - if (v) - port = atoi(v); - } else if (!strcmp(metrics_key, "dev")) { - dev = ogs_yaml_iter_value(&metrics_iter); - } else if (!strcmp(metrics_key, "option")) { - rv = ogs_app_config_parse_sockopt( - &metrics_iter, &option); - if (rv != OGS_OK) return rv; - is_option = true; - } else - ogs_warn("unknown key `%s`", metrics_key); - } - - addr = NULL; - for (i = 0; i < num; i++) { - rv = ogs_addaddrinfo(&addr, - family, hostname[i], port, 0); - ogs_assert(rv == OGS_OK); - } - - ogs_list_init(&list); - ogs_list_init(&list6); - - if (addr) { - if (ogs_app()->parameter.no_ipv4 == 0) - ogs_socknode_add( - &list, AF_INET, addr, NULL); - if (ogs_app()->parameter.no_ipv6 == 0) - ogs_socknode_add( - &list6, AF_INET6, addr, NULL); - ogs_freeaddrinfo(addr); - } - - if (dev) { - rv = ogs_socknode_probe( - ogs_app()->parameter.no_ipv4 ? NULL : &list, - ogs_app()->parameter.no_ipv6 ? NULL : &list6, - dev, port, NULL); - ogs_assert(rv == OGS_OK); - } - - node = ogs_list_first(&list); - if (node) { - ogs_metrics_server_t *server = - ogs_metrics_server_add( - node->addr, is_option ? &option : NULL); - ogs_assert(server); - } - node6 = ogs_list_first(&list6); - if (node6) { - ogs_metrics_server_t *server = - ogs_metrics_server_add( - node6->addr, is_option ? &option : NULL); - ogs_assert(server); - } - - ogs_socknode_remove_all(&list); - ogs_socknode_remove_all(&list6); - - } while (ogs_yaml_iter_type(&metrics_array) == - YAML_SEQUENCE_NODE); - - if (ogs_list_first(&self.server_list) == 0) { - ogs_list_init(&list); - ogs_list_init(&list6); - - rv = ogs_socknode_probe( - ogs_app()->parameter.no_ipv4 ? NULL : &list, - ogs_app()->parameter.no_ipv6 ? NULL : &list6, - NULL, self.metrics_port, NULL); - ogs_assert(rv == OGS_OK); - - node = ogs_list_first(&list); - if (node) ogs_metrics_server_add(node->addr, NULL); - node6 = ogs_list_first(&list6); - if (node6) ogs_metrics_server_add(node6->addr, NULL); - - ogs_socknode_remove_all(&list); - ogs_socknode_remove_all(&list6); - } - } - } - } - } - - return OGS_OK; } ogs_metrics_server_t *ogs_metrics_server_add( @@ -512,13 +301,6 @@ static int ogs_metrics_context_server_start(ogs_metrics_server_t *server) return OGS_OK; } -void ogs_metrics_context_open(ogs_metrics_context_t *ctx) -{ - ogs_metrics_server_t *server = NULL; - - ogs_list_for_each(&ctx->server_list, server) - ogs_metrics_context_server_start(server); -} static int ogs_metrics_context_server_stop(ogs_metrics_server_t *server) { @@ -533,12 +315,25 @@ static int ogs_metrics_context_server_stop(ogs_metrics_server_t *server) } return OGS_OK; } -void ogs_metrics_context_close(ogs_metrics_context_t *ctx) -{ - ogs_metrics_server_t *server = NULL, *next = NULL; - ogs_list_for_each_safe(&ctx->server_list, next, server) - ogs_metrics_context_server_stop(server); +void ogs_metrics_spec_init(ogs_metrics_context_t *ctx) +{ + ogs_list_init(&ctx->spec_list); + ogs_pool_init(&metrics_spec_pool, ogs_app()->metrics.max_specs); + + prom_collector_registry_default_init(); +} + +void ogs_metrics_spec_final(ogs_metrics_context_t *ctx) +{ + ogs_metrics_spec_t *spec = NULL, *next = NULL; + + ogs_list_for_each_entry_safe(&ctx->spec_list, next, spec, entry) { + ogs_metrics_spec_free(spec); + } + prom_collector_registry_destroy(PROM_COLLECTOR_REGISTRY_DEFAULT); + + ogs_pool_final(&metrics_spec_pool); } ogs_metrics_spec_t *ogs_metrics_spec_new( diff --git a/lib/metrics/void/context.c b/lib/metrics/void/context.c index 465d4322e..9fdcaab1f 100644 --- a/lib/metrics/void/context.c +++ b/lib/metrics/void/context.c @@ -19,9 +19,9 @@ #include "ogs-metrics.h" -typedef struct ogs_metrics_context_s { +typedef struct ogs_metrics_server_s { int unused; -} ogs_metrics_context_t; +} ogs_metrics_server_t; typedef struct ogs_metrics_spec_s { int unused; } ogs_metrics_spec_t; @@ -29,37 +29,41 @@ typedef struct ogs_metrics_inst_s { int unused; } ogs_metrics_inst_t; -static ogs_metrics_context_t self; -static int context_initialized = 0; - -void ogs_metrics_context_init(void) -{ - ogs_assert(context_initialized == 0); - ogs_log_install_domain(&__ogs_metrics_domain, "metrics", ogs_core()->log.level); - context_initialized = 1; -} - -void ogs_metrics_context_final(void) -{ - ogs_assert(context_initialized == 1); - context_initialized = 0; -} - -ogs_metrics_context_t *ogs_metrics_self(void) -{ - return &self; -} - -int ogs_metrics_context_parse_config(const char *local) -{ - return OGS_OK; -} - -void ogs_metrics_context_open(ogs_metrics_context_t *ctx) +void ogs_metrics_server_init(ogs_metrics_context_t *ctx) { } -void ogs_metrics_context_close(ogs_metrics_context_t *ctx) +void ogs_metrics_server_open(ogs_metrics_context_t *ctx) +{ +} + +void ogs_metrics_server_close(ogs_metrics_context_t *ctx) +{ +} + +void ogs_metrics_server_final(ogs_metrics_context_t *ctx) +{ +} + +ogs_metrics_server_t *ogs_metrics_server_add( + ogs_sockaddr_t *addr, ogs_sockopt_t *option) +{ + return (ogs_metrics_server_t *)1; +} + +void ogs_metrics_server_remove(ogs_metrics_server_t *server) +{ +} + +void ogs_metrics_server_remove_all(void) +{ +} + +void ogs_metrics_spec_init(ogs_metrics_context_t *ctx) +{ +} + +void ogs_metrics_spec_final(ogs_metrics_context_t *ctx) { } @@ -68,7 +72,7 @@ ogs_metrics_spec_t *ogs_metrics_spec_new( const char *name, const char *description, int initial_val, unsigned int num_labels, const char ** labels) { - return (ogs_metrics_spec_t *)&self; + return (ogs_metrics_spec_t *)1; } void ogs_metrics_spec_free(ogs_metrics_spec_t *spec) @@ -79,7 +83,7 @@ ogs_metrics_inst_t *ogs_metrics_inst_new( ogs_metrics_spec_t *spec, unsigned int num_labels, const char **label_values) { - return (ogs_metrics_inst_t *)&self; + return (ogs_metrics_inst_t *)1; } void ogs_metrics_inst_free(ogs_metrics_inst_t *inst) diff --git a/meson.build b/meson.build index e319ebebe..2d3ef6139 100644 --- a/meson.build +++ b/meson.build @@ -1,4 +1,4 @@ -# Copyright (C) 2019 by Sukchan Lee +# Copyright (C) 2019-2023 by Sukchan Lee # This file is part of Open5GS. @@ -16,7 +16,7 @@ # along with this program. If not, see . project('open5gs', 'c', 'cpp', - version : '2.6.0', + version : '2.6.1', license : 'AGPL-3.0-or-later', meson_version : '>= 0.43.0', default_options : [ @@ -25,7 +25,7 @@ project('open5gs', 'c', 'cpp', ], ) -libogslib_version = '2.6.0' +libogslib_version = '2.6.1' prefix = get_option('prefix') bindir = join_paths(prefix, get_option('bindir')) diff --git a/webui/package-lock.json b/webui/package-lock.json index 660420eaf..12f1eeda5 100644 --- a/webui/package-lock.json +++ b/webui/package-lock.json @@ -1,12 +1,12 @@ { "name": "open5gs", - "version": "2.6.0", + "version": "2.6.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "open5gs", - "version": "2.6.0", + "version": "2.6.1", "license": "AGPL-3.0", "dependencies": { "axios": "^0.27.2", diff --git a/webui/package.json b/webui/package.json index dfc838177..41231e4c7 100644 --- a/webui/package.json +++ b/webui/package.json @@ -1,6 +1,6 @@ { "name": "open5gs", - "version": "2.6.0", + "version": "2.6.1", "description": "Open5gs", "main": "index.js", "repository": "https://github.com/open5gs/open5gs/webui",