mirror of
https://github.com/open5gs/open5gs.git
synced 2025-10-23 07:41:57 +00:00
[ue-info] consolidate page/page size for ue-info API interface
Remove function pointers to set page/page sizes per info type (UE/PDU/gNB/eNB info). Instead, call dumpers functions with this information as function arguments.
This commit is contained in:
committed by
Sukchan Lee
parent
fd897f35a3
commit
37c74da44f
@@ -25,30 +25,31 @@
|
|||||||
|
|
||||||
#define DEFAULT_PROMETHEUS_HTTP_PORT 9090
|
#define DEFAULT_PROMETHEUS_HTTP_PORT 9090
|
||||||
|
|
||||||
size_t (*ogs_metrics_pdu_info_dumper)(char *buf, size_t buflen) = NULL;
|
size_t (*ogs_metrics_pdu_info_dumper)(char *buf, size_t buflen, size_t page, size_t page_size) = NULL;
|
||||||
size_t (*ogs_metrics_ue_info_dumper)(char *buf, size_t buflen) = NULL;
|
size_t (*ogs_metrics_ue_info_dumper)(char *buf, size_t buflen, size_t page, size_t page_size) = NULL;
|
||||||
size_t (*ogs_metrics_gnb_info_dumper)(char *buf, size_t buflen) = NULL;
|
size_t (*ogs_metrics_gnb_info_dumper)(char *buf, size_t buflen, size_t page, size_t page_size) = NULL;
|
||||||
size_t (*ogs_metrics_enb_info_dumper)(char *buf, size_t buflen) = NULL;
|
size_t (*ogs_metrics_enb_info_dumper)(char *buf, size_t buflen, size_t page, size_t page_size) = NULL;
|
||||||
|
|
||||||
void ogs_metrics_register_ue_info(size_t (*fn)(char *buf, size_t buflen))
|
void ogs_metrics_register_ue_info(size_t (*fn)(char *buf, size_t buflen, size_t page, size_t page_size))
|
||||||
{
|
{
|
||||||
ogs_metrics_ue_info_dumper = fn;
|
ogs_metrics_ue_info_dumper = fn;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ogs_metrics_register_pdu_info(size_t (*fn)(char *buf, size_t buflen))
|
void ogs_metrics_register_pdu_info(size_t (*fn)(char *buf, size_t buflen, size_t page, size_t page_size))
|
||||||
{
|
{
|
||||||
ogs_metrics_pdu_info_dumper = fn;
|
ogs_metrics_pdu_info_dumper = fn;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ogs_metrics_register_gnb_info(size_t (*fn)(char *buf, size_t buflen))
|
void ogs_metrics_register_gnb_info(size_t (*fn)(char *buf, size_t buflen, size_t page, size_t page_size))
|
||||||
{
|
{
|
||||||
ogs_metrics_gnb_info_dumper = fn;
|
ogs_metrics_gnb_info_dumper = fn;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ogs_metrics_register_enb_info(size_t (*fn)(char *buf, size_t buflen))
|
void ogs_metrics_register_enb_info(size_t (*fn)(char *buf, size_t buflen, size_t page, size_t page_size))
|
||||||
{
|
{
|
||||||
ogs_metrics_enb_info_dumper = fn;
|
ogs_metrics_enb_info_dumper = fn;
|
||||||
}
|
}
|
||||||
|
|
||||||
int __ogs_metrics_domain;
|
int __ogs_metrics_domain;
|
||||||
static ogs_metrics_context_t self;
|
static ogs_metrics_context_t self;
|
||||||
static int context_initialized = 0;
|
static int context_initialized = 0;
|
||||||
|
@@ -36,17 +36,17 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern size_t (*ogs_metrics_pdu_info_dumper)(char *buf, size_t buflen);
|
extern size_t (*ogs_metrics_pdu_info_dumper)(char *buf, size_t buflen, size_t page, size_t page_size);
|
||||||
void ogs_metrics_register_pdu_info(size_t (*fn)(char *buf, size_t buflen));
|
void ogs_metrics_register_pdu_info(size_t (*fn)(char *buf, size_t buflen, size_t page, size_t page_size));
|
||||||
|
|
||||||
extern size_t (*ogs_metrics_ue_info_dumper)(char *buf, size_t buflen);
|
extern size_t (*ogs_metrics_ue_info_dumper)(char *buf, size_t buflen, size_t page, size_t page_size);
|
||||||
void ogs_metrics_register_ue_info(size_t (*fn)(char *buf, size_t buflen));
|
void ogs_metrics_register_ue_info(size_t (*fn)(char *buf, size_t buflen, size_t page, size_t page_size));
|
||||||
|
|
||||||
extern size_t (*ogs_metrics_gnb_info_dumper)(char *buf, size_t buflen);
|
extern size_t (*ogs_metrics_gnb_info_dumper)(char *buf, size_t buflen, size_t page, size_t page_size);
|
||||||
void ogs_metrics_register_gnb_info(size_t (*fn)(char *buf, size_t buflen));
|
void ogs_metrics_register_gnb_info(size_t (*fn)(char *buf, size_t buflen, size_t page, size_t page_size));
|
||||||
|
|
||||||
extern size_t (*ogs_metrics_enb_info_dumper)(char *buf, size_t buflen);
|
extern size_t (*ogs_metrics_enb_info_dumper)(char *buf, size_t buflen, size_t page, size_t page_size);
|
||||||
void ogs_metrics_register_enb_info(size_t (*fn)(char *buf, size_t buflen));
|
void ogs_metrics_register_enb_info(size_t (*fn)(char *buf, size_t buflen, size_t page, size_t page_size));
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@@ -36,12 +36,7 @@
|
|||||||
#include "prom.h"
|
#include "prom.h"
|
||||||
#include "microhttpd.h"
|
#include "microhttpd.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "prometheus/pager.h"
|
|
||||||
|
|
||||||
ogs_metrics_pager_fn ogs_metrics_pdu_info_set_pager = NULL;
|
|
||||||
ogs_metrics_pager_fn ogs_metrics_gnb_info_set_pager = NULL;
|
|
||||||
ogs_metrics_pager_fn ogs_metrics_enb_info_set_pager = NULL;
|
|
||||||
ogs_metrics_pager_fn ogs_metrics_ue_info_set_pager = NULL;
|
|
||||||
|
|
||||||
extern int __ogs_metrics_domain;
|
extern int __ogs_metrics_domain;
|
||||||
#define MAX_LABELS 8
|
#define MAX_LABELS 8
|
||||||
@@ -199,7 +194,8 @@ typedef int _MHD_Result;
|
|||||||
|
|
||||||
/* Small helper to serve JSON from a registered dumper */
|
/* Small helper to serve JSON from a registered dumper */
|
||||||
static _MHD_Result serve_json_from_dumper(struct MHD_Connection *connection,
|
static _MHD_Result serve_json_from_dumper(struct MHD_Connection *connection,
|
||||||
size_t (*dumper)(char*, size_t),
|
size_t (*dumper)(char*, size_t, size_t, size_t),
|
||||||
|
size_t page, size_t page_size,
|
||||||
const char *missing_msg)
|
const char *missing_msg)
|
||||||
{
|
{
|
||||||
if (!dumper) {
|
if (!dumper) {
|
||||||
@@ -223,7 +219,7 @@ static _MHD_Result serve_json_from_dumper(struct MHD_Connection *connection,
|
|||||||
return (_MHD_Result)ret;
|
return (_MHD_Result)ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t n = dumper(bufjson, cap);
|
size_t n = dumper(bufjson, cap, page, page_size);
|
||||||
if (n >= cap - 1) {
|
if (n >= cap - 1) {
|
||||||
/* grow once */
|
/* grow once */
|
||||||
size_t newcap = cap * 2;
|
size_t newcap = cap * 2;
|
||||||
@@ -239,7 +235,7 @@ static _MHD_Result serve_json_from_dumper(struct MHD_Connection *connection,
|
|||||||
return (_MHD_Result)ret;
|
return (_MHD_Result)ret;
|
||||||
}
|
}
|
||||||
bufjson = tmp; cap = newcap;
|
bufjson = tmp; cap = newcap;
|
||||||
n = dumper(bufjson, cap);
|
n = dumper(bufjson, cap, page, page_size);
|
||||||
if (n >= cap - 1) {
|
if (n >= cap - 1) {
|
||||||
/* graceful fallback */
|
/* graceful fallback */
|
||||||
n = ogs_snprintf(bufjson, cap, "[]");
|
n = ogs_snprintf(bufjson, cap, "[]");
|
||||||
@@ -308,44 +304,35 @@ mhd_server_access_handler(void *cls, struct MHD_Connection *connection,
|
|||||||
MHD_destroy_response(rsp);
|
MHD_destroy_response(rsp);
|
||||||
return (_MHD_Result)ret;
|
return (_MHD_Result)ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t page = get_query_size_t(connection, "page", 0);
|
||||||
|
size_t page_size = get_query_size_t(connection, "page_size", 100);
|
||||||
|
|
||||||
/* JSON: connected PDUs (SMF) */
|
/* JSON: connected PDUs (SMF) */
|
||||||
if (strcmp(url, "/pdu-info") == 0) {
|
if (strcmp(url, "/pdu-info") == 0) {
|
||||||
size_t page = get_query_size_t(connection, "page", 0);
|
|
||||||
size_t page_size = get_query_size_t(connection, "page_size", 100);
|
|
||||||
if (ogs_metrics_pdu_info_set_pager)
|
|
||||||
ogs_metrics_pdu_info_set_pager(page, page_size);
|
|
||||||
return serve_json_from_dumper(connection, ogs_metrics_pdu_info_dumper,
|
return serve_json_from_dumper(connection, ogs_metrics_pdu_info_dumper,
|
||||||
|
page, page_size,
|
||||||
"pdu-info endpoint not available on this NF\n");
|
"pdu-info endpoint not available on this NF\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* JSON: connected gNBs (AMF) */
|
/* JSON: connected gNBs (AMF) */
|
||||||
if (strcmp(url, "/gnb-info") == 0) {
|
if (strcmp(url, "/gnb-info") == 0) {
|
||||||
size_t page = get_query_size_t(connection, "page", 0);
|
|
||||||
size_t page_size = get_query_size_t(connection, "page_size", 100);
|
|
||||||
if (ogs_metrics_gnb_info_set_pager)
|
|
||||||
ogs_metrics_gnb_info_set_pager(page, page_size);
|
|
||||||
return serve_json_from_dumper(connection, ogs_metrics_gnb_info_dumper,
|
return serve_json_from_dumper(connection, ogs_metrics_gnb_info_dumper,
|
||||||
|
page, page_size,
|
||||||
"gnb-info endpoint not available on this NF\n");
|
"gnb-info endpoint not available on this NF\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* JSON: connected eNBs (MME) */
|
/* JSON: connected eNBs (MME) */
|
||||||
if (strcmp(url, "/enb-info") == 0) {
|
if (strcmp(url, "/enb-info") == 0) {
|
||||||
size_t page = get_query_size_t(connection, "page", 0);
|
|
||||||
size_t page_size = get_query_size_t(connection, "page_size", 100);
|
|
||||||
if (ogs_metrics_enb_info_set_pager)
|
|
||||||
ogs_metrics_enb_info_set_pager(page, page_size);
|
|
||||||
return serve_json_from_dumper(connection, ogs_metrics_enb_info_dumper,
|
return serve_json_from_dumper(connection, ogs_metrics_enb_info_dumper,
|
||||||
|
page, page_size,
|
||||||
"enb-info endpoint not available on this NF\n");
|
"enb-info endpoint not available on this NF\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* JSON: connected UEs (AMF/MME) */
|
/* JSON: connected UEs (AMF/MME) */
|
||||||
if (strcmp(url, "/ue-info") == 0) {
|
if (strcmp(url, "/ue-info") == 0) {
|
||||||
size_t page = get_query_size_t(connection, "page", 0);
|
|
||||||
size_t page_size = get_query_size_t(connection, "page_size", 100);
|
|
||||||
if (ogs_metrics_ue_info_set_pager)
|
|
||||||
ogs_metrics_ue_info_set_pager(page, page_size);
|
|
||||||
return serve_json_from_dumper(connection, ogs_metrics_ue_info_dumper,
|
return serve_json_from_dumper(connection, ogs_metrics_ue_info_dumper,
|
||||||
|
page, page_size,
|
||||||
"ue-info endpoint not available on this NF\n");
|
"ue-info endpoint not available on this NF\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -1,38 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2025 by Juraj Elias <juraj.elias@gmail.com>
|
|
||||||
*
|
|
||||||
* This file is part of Open5GS.
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef OGS_METRICS_PROM_PAGER_H
|
|
||||||
#define OGS_METRICS_PROM_PAGER_H
|
|
||||||
|
|
||||||
#include <stddef.h>
|
|
||||||
|
|
||||||
/* NF-specific optional pager setter signatures.
|
|
||||||
* NFs may assign these at init time. If left NULL, paging is ignored for that NF.
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef void (*ogs_metrics_pager_fn)(size_t page, size_t page_size);
|
|
||||||
|
|
||||||
/* Connected PDUs (SMF) */
|
|
||||||
extern ogs_metrics_pager_fn ogs_metrics_pdu_info_set_pager;
|
|
||||||
extern ogs_metrics_pager_fn ogs_metrics_ue_info_set_pager;
|
|
||||||
extern ogs_metrics_pager_fn ogs_metrics_gnb_info_set_pager;
|
|
||||||
extern ogs_metrics_pager_fn ogs_metrics_enb_info_set_pager;
|
|
||||||
|
|
||||||
#endif /* OGS_METRICS_PROM_PAGER_H */
|
|
||||||
|
|
@@ -94,18 +94,9 @@
|
|||||||
#define GNB_INFO_PAGE_SIZE_DEFAULT 100U
|
#define GNB_INFO_PAGE_SIZE_DEFAULT 100U
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static size_t g_page = SIZE_MAX; /* SIZE_MAX => no paging */
|
size_t amf_dump_gnb_info(char *buf, size_t buflen, size_t page, size_t page_size)
|
||||||
static size_t g_page_size = 0; /* 0 => use default in dumper */
|
|
||||||
|
|
||||||
void amf_metrics_gnb_info_set_pager(size_t page, size_t page_size)
|
|
||||||
{
|
{
|
||||||
g_page = page;
|
return amf_dump_gnb_info_paged(buf, buflen, page, page_size);
|
||||||
g_page_size = page_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t amf_dump_gnb_info(char *buf, size_t buflen)
|
|
||||||
{
|
|
||||||
return amf_dump_gnb_info_paged(buf, buflen, g_page, g_page_size);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint32_t u24_to_u32(ogs_uint24_t v)
|
static inline uint32_t u24_to_u32(ogs_uint24_t v)
|
||||||
|
@@ -33,9 +33,8 @@ extern "C" {
|
|||||||
#define GNB_INFO_PAGE_SIZE_DEFAULT 100U
|
#define GNB_INFO_PAGE_SIZE_DEFAULT 100U
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
size_t amf_dump_gnb_info(char *buf, size_t buflen);
|
size_t amf_dump_gnb_info(char *buf, size_t buflen, size_t page, size_t page_size);
|
||||||
size_t amf_dump_gnb_info_paged(char *buf, size_t buflen, size_t page, size_t page_size);
|
size_t amf_dump_gnb_info_paged(char *buf, size_t buflen, size_t page, size_t page_size);
|
||||||
void amf_metrics_gnb_info_set_pager(size_t page, size_t page_size);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@@ -23,7 +23,6 @@
|
|||||||
|
|
||||||
#include "ogs-metrics.h"
|
#include "ogs-metrics.h"
|
||||||
#include "metrics/prometheus/json_pager.h"
|
#include "metrics/prometheus/json_pager.h"
|
||||||
#include "metrics/prometheus/pager.h"
|
|
||||||
#include "gnb-info.h"
|
#include "gnb-info.h"
|
||||||
#include "ue-info.h"
|
#include "ue-info.h"
|
||||||
|
|
||||||
@@ -65,8 +64,6 @@ int amf_initialize(void)
|
|||||||
/* dumpers /gnb-info /ue-info */
|
/* dumpers /gnb-info /ue-info */
|
||||||
ogs_metrics_register_gnb_info(amf_dump_gnb_info);
|
ogs_metrics_register_gnb_info(amf_dump_gnb_info);
|
||||||
ogs_metrics_register_ue_info(amf_dump_ue_info);
|
ogs_metrics_register_ue_info(amf_dump_ue_info);
|
||||||
ogs_metrics_gnb_info_set_pager = amf_metrics_gnb_info_set_pager;
|
|
||||||
ogs_metrics_ue_info_set_pager = amf_metrics_ue_info_set_pager;
|
|
||||||
|
|
||||||
rv = amf_sbi_open();
|
rv = amf_sbi_open();
|
||||||
if (rv != OGS_OK) return rv;
|
if (rv != OGS_OK) return rv;
|
||||||
|
@@ -115,20 +115,12 @@
|
|||||||
#include "sbi/openapi/external/cJSON.h"
|
#include "sbi/openapi/external/cJSON.h"
|
||||||
#include "metrics/prometheus/json_pager.h"
|
#include "metrics/prometheus/json_pager.h"
|
||||||
|
|
||||||
static size_t g_ue_page = 0;
|
|
||||||
static size_t g_ue_page_size = 0;
|
|
||||||
|
|
||||||
void amf_metrics_ue_info_set_pager(size_t page, size_t page_size)
|
size_t amf_dump_ue_info(char *buf, size_t buflen, size_t page, size_t page_size)
|
||||||
{
|
{
|
||||||
g_ue_page = page;
|
page_size = page_size ? page_size : 100;
|
||||||
g_ue_page_size = page_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t amf_dump_ue_info(char *buf, size_t buflen)
|
|
||||||
{
|
|
||||||
size_t page = g_ue_page;
|
|
||||||
size_t page_size = g_ue_page_size ? g_ue_page_size : 100;
|
|
||||||
if (page_size > 100) page_size = 100;
|
if (page_size > 100) page_size = 100;
|
||||||
|
|
||||||
return amf_dump_ue_info_paged(buf, buflen, page, page_size);
|
return amf_dump_ue_info_paged(buf, buflen, page, page_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -33,9 +33,10 @@ extern "C" {
|
|||||||
#define UE_INFO_PAGE_SIZE_DEFAULT 100U
|
#define UE_INFO_PAGE_SIZE_DEFAULT 100U
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
size_t amf_dump_ue_info(char *buf, size_t buflen);
|
size_t amf_dump_ue_info(char *buf, size_t buflen,
|
||||||
size_t amf_dump_ue_info_paged(char *buf, size_t buflen, size_t page, size_t page_size);
|
size_t page, size_t page_size);
|
||||||
void amf_metrics_ue_info_set_pager(size_t page, size_t page_size);
|
size_t amf_dump_ue_info_paged(char *buf, size_t buflen,
|
||||||
|
size_t page, size_t page_size);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@@ -73,20 +73,12 @@
|
|||||||
#define ENB_INFO_PAGE_SIZE_DEFAULT 100U
|
#define ENB_INFO_PAGE_SIZE_DEFAULT 100U
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static size_t g_enb_page = 0;
|
|
||||||
static size_t g_enb_page_size = 0;
|
|
||||||
|
|
||||||
void mme_metrics_enb_info_set_pager(size_t page, size_t page_size)
|
size_t mme_dump_enb_info(char *buf, size_t buflen, size_t page, size_t page_size)
|
||||||
{
|
{
|
||||||
g_enb_page = page;
|
page_size = page_size ? page_size : ENB_INFO_PAGE_SIZE_DEFAULT;
|
||||||
g_enb_page_size = page_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t mme_dump_enb_info(char *buf, size_t buflen)
|
|
||||||
{
|
|
||||||
size_t page = g_enb_page;
|
|
||||||
size_t page_size = g_enb_page_size ? g_enb_page_size : ENB_INFO_PAGE_SIZE_DEFAULT;
|
|
||||||
if (page_size > ENB_INFO_PAGE_SIZE_DEFAULT) page_size = ENB_INFO_PAGE_SIZE_DEFAULT;
|
if (page_size > ENB_INFO_PAGE_SIZE_DEFAULT) page_size = ENB_INFO_PAGE_SIZE_DEFAULT;
|
||||||
|
|
||||||
return mme_dump_enb_info_paged(buf, buflen, page, page_size);
|
return mme_dump_enb_info_paged(buf, buflen, page, page_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -33,9 +33,8 @@ extern "C" {
|
|||||||
#define ENB_INFO_PAGE_SIZE_DEFAULT 100U
|
#define ENB_INFO_PAGE_SIZE_DEFAULT 100U
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
size_t mme_dump_enb_info(char *buf, size_t buflen);
|
size_t mme_dump_enb_info(char *buf, size_t buflen, size_t page, size_t page_size);
|
||||||
size_t mme_dump_enb_info_paged(char *buf, size_t buflen, size_t page, size_t page_size);
|
size_t mme_dump_enb_info_paged(char *buf, size_t buflen, size_t page, size_t page_size);
|
||||||
void mme_metrics_enb_info_set_pager(size_t page, size_t page_size);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@@ -31,7 +31,6 @@
|
|||||||
#include "mme-gtp-path.h"
|
#include "mme-gtp-path.h"
|
||||||
#include "metrics.h"
|
#include "metrics.h"
|
||||||
#include "metrics/prometheus/json_pager.h"
|
#include "metrics/prometheus/json_pager.h"
|
||||||
#include "metrics/prometheus/pager.h"
|
|
||||||
#include "enb-info.h"
|
#include "enb-info.h"
|
||||||
#include "ue-info.h"
|
#include "ue-info.h"
|
||||||
|
|
||||||
@@ -74,8 +73,6 @@ int mme_initialize(void)
|
|||||||
/* dumpers /enb-info /ue-info */
|
/* dumpers /enb-info /ue-info */
|
||||||
ogs_metrics_register_enb_info(mme_dump_enb_info);
|
ogs_metrics_register_enb_info(mme_dump_enb_info);
|
||||||
ogs_metrics_register_ue_info(mme_dump_ue_info);
|
ogs_metrics_register_ue_info(mme_dump_ue_info);
|
||||||
ogs_metrics_enb_info_set_pager = mme_metrics_enb_info_set_pager;
|
|
||||||
ogs_metrics_ue_info_set_pager = mme_metrics_ue_info_set_pager;
|
|
||||||
|
|
||||||
rv = mme_fd_init();
|
rv = mme_fd_init();
|
||||||
if (rv != OGS_OK) return OGS_ERROR;
|
if (rv != OGS_OK) return OGS_ERROR;
|
||||||
|
@@ -88,7 +88,6 @@
|
|||||||
#include "ue-info.h"
|
#include "ue-info.h"
|
||||||
#include "mme-context.h"
|
#include "mme-context.h"
|
||||||
|
|
||||||
#include "metrics/prometheus/pager.h"
|
|
||||||
#include "metrics/prometheus/json_pager.h"
|
#include "metrics/prometheus/json_pager.h"
|
||||||
#include "metrics/ogs-metrics.h"
|
#include "metrics/ogs-metrics.h"
|
||||||
#include "sbi/openapi/external/cJSON.h"
|
#include "sbi/openapi/external/cJSON.h"
|
||||||
@@ -97,20 +96,9 @@
|
|||||||
#define MME_UE_INFO_PAGE_SIZE_DEFAULT 100U
|
#define MME_UE_INFO_PAGE_SIZE_DEFAULT 100U
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static size_t g_ue_page = SIZE_MAX;
|
|
||||||
static size_t g_ue_page_size = 0;
|
|
||||||
|
|
||||||
void mme_metrics_ue_info_set_pager(size_t page, size_t page_size)
|
size_t mme_dump_ue_info(char *buf, size_t buflen, size_t page, size_t page_size)
|
||||||
{
|
{
|
||||||
g_ue_page = page;
|
|
||||||
g_ue_page_size = page_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t mme_dump_ue_info(char *buf, size_t buflen)
|
|
||||||
{
|
|
||||||
size_t page = g_ue_page;
|
|
||||||
size_t page_size = g_ue_page_size;
|
|
||||||
|
|
||||||
if (page == SIZE_MAX) {
|
if (page == SIZE_MAX) {
|
||||||
page = 0;
|
page = 0;
|
||||||
page_size = MME_UE_INFO_PAGE_SIZE_DEFAULT;
|
page_size = MME_UE_INFO_PAGE_SIZE_DEFAULT;
|
||||||
|
@@ -33,9 +33,10 @@ extern "C" {
|
|||||||
#define UE_INFO_PAGE_SIZE_DEFAULT 100U
|
#define UE_INFO_PAGE_SIZE_DEFAULT 100U
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void mme_metrics_ue_info_set_pager(size_t page, size_t page_size);
|
size_t mme_dump_ue_info(char *buf, size_t buflen,
|
||||||
size_t mme_dump_ue_info(char *buf, size_t buflen);
|
size_t page, size_t page_size);
|
||||||
size_t mme_dump_ue_info_paged(char *buf, size_t buflen, size_t page, size_t page_size);
|
size_t mme_dump_ue_info_paged(char *buf, size_t buflen,
|
||||||
|
size_t page, size_t page_size);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@@ -25,7 +25,6 @@
|
|||||||
#include "metrics.h"
|
#include "metrics.h"
|
||||||
#include "ogs-metrics.h"
|
#include "ogs-metrics.h"
|
||||||
#include "metrics/prometheus/json_pager.h"
|
#include "metrics/prometheus/json_pager.h"
|
||||||
#include "metrics/prometheus/pager.h"
|
|
||||||
#include "pdu-info.h"
|
#include "pdu-info.h"
|
||||||
|
|
||||||
static ogs_thread_t *thread;
|
static ogs_thread_t *thread;
|
||||||
@@ -96,7 +95,6 @@ int smf_initialize(void)
|
|||||||
|
|
||||||
/* dumper /pdu-info */
|
/* dumper /pdu-info */
|
||||||
ogs_metrics_register_pdu_info(smf_dump_pdu_info);
|
ogs_metrics_register_pdu_info(smf_dump_pdu_info);
|
||||||
smf_register_metrics_pager();
|
|
||||||
|
|
||||||
initialized = 1;
|
initialized = 1;
|
||||||
|
|
||||||
|
@@ -67,23 +67,9 @@
|
|||||||
#include "ogs-core.h"
|
#include "ogs-core.h"
|
||||||
#include "context.h"
|
#include "context.h"
|
||||||
#include "pdu-info.h"
|
#include "pdu-info.h"
|
||||||
#include "metrics/prometheus/pager.h"
|
|
||||||
#include "sbi/openapi/external/cJSON.h"
|
#include "sbi/openapi/external/cJSON.h"
|
||||||
#include "metrics/prometheus/json_pager.h"
|
#include "metrics/prometheus/json_pager.h"
|
||||||
|
|
||||||
static size_t g_page = SIZE_MAX;
|
|
||||||
static size_t g_page_size = 0;
|
|
||||||
|
|
||||||
static void smf_metrics_pdu_info_set_pager(size_t page, size_t page_size)
|
|
||||||
{
|
|
||||||
g_page = page;
|
|
||||||
g_page_size = page_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
void smf_register_metrics_pager(void)
|
|
||||||
{
|
|
||||||
ogs_metrics_pdu_info_set_pager = smf_metrics_pdu_info_set_pager;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline uint32_t u24_to_u32(ogs_uint24_t v)
|
static inline uint32_t u24_to_u32(ogs_uint24_t v)
|
||||||
{
|
{
|
||||||
@@ -393,11 +379,8 @@ size_t smf_dump_pdu_info_paged(char *buf, size_t buflen, size_t page, size_t pag
|
|||||||
return json_pager_finalize(root, buf, buflen);
|
return json_pager_finalize(root, buf, buflen);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t smf_dump_pdu_info(char *buf, size_t buflen)
|
size_t smf_dump_pdu_info(char *buf, size_t buflen, size_t page, size_t page_size)
|
||||||
{
|
{
|
||||||
size_t page = g_page;
|
|
||||||
size_t page_size = g_page_size;
|
|
||||||
|
|
||||||
if (page == SIZE_MAX) {
|
if (page == SIZE_MAX) {
|
||||||
page = 0;
|
page = 0;
|
||||||
page_size = PDU_INFO_PAGE_SIZE_DEFAULT;
|
page_size = PDU_INFO_PAGE_SIZE_DEFAULT;
|
||||||
|
@@ -34,9 +34,10 @@ extern "C" {
|
|||||||
#define PDU_INFO_PAGE_SIZE_DEFAULT 100U
|
#define PDU_INFO_PAGE_SIZE_DEFAULT 100U
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void smf_register_metrics_pager(void);
|
size_t smf_dump_pdu_info(char *buf, size_t buflen,
|
||||||
size_t smf_dump_pdu_info(char *buf, size_t buflen);
|
size_t page, size_t page_size);
|
||||||
size_t smf_dump_pdu_info_paged(char *buf, size_t buflen, size_t page, size_t page_size);
|
size_t smf_dump_pdu_info_paged(char *buf, size_t buflen,
|
||||||
|
size_t page, size_t page_size);
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user