open5gs/src/smf/metrics.h

107 lines
3.7 KiB
C

#ifndef SMF_METRICS_H
#define SMF_METRICS_H
#include "ogs-metrics.h"
#ifdef __cplusplus
extern "C" {
#endif
/* GLOBAL */
typedef enum smf_metric_type_global_s {
SMF_METR_GLOB_CTR_GTP_NEW_NODE_FAILED = 0,
SMF_METR_GLOB_CTR_GN_RX_PARSE_FAILED,
SMF_METR_GLOB_CTR_GN_RX_CREATEPDPCTXREQ,
SMF_METR_GLOB_CTR_GN_RX_DELETEPDPCTXREQ,
SMF_METR_GLOB_CTR_S5C_RX_PARSE_FAILED,
SMF_METR_GLOB_CTR_S5C_RX_CREATESESSIONREQ,
SMF_METR_GLOB_CTR_S5C_RX_DELETESESSIONREQ,
SMF_METR_GLOB_CTR_SM_N4SESSIONESTABREQ,
SMF_METR_GLOB_CTR_SM_N4SESSIONREPORT,
SMF_METR_GLOB_CTR_SM_N4SESSIONREPORTSUCC,
SMF_METR_GLOB_GAUGE_UES_ACTIVE,
SMF_METR_GLOB_GAUGE_BEARERS_ACTIVE,
SMF_METR_GLOB_GAUGE_GTP1_PDPCTXS_ACTIVE,
SMF_METR_GLOB_GAUGE_GTP2_SESSIONS_ACTIVE,
SMF_METR_GLOB_GAUGE_GTP_PEERS_ACTIVE,
_SMF_METR_GLOB_MAX,
} smf_metric_type_global_t;
extern ogs_metrics_inst_t *smf_metrics_inst_global[_SMF_METR_GLOB_MAX];
int smf_metrics_init_inst_global(void);
int smf_metrics_free_inst_global(void);
static inline void smf_metrics_inst_global_set(smf_metric_type_global_t t, int val)
{ ogs_metrics_inst_set(smf_metrics_inst_global[t], val); }
static inline void smf_metrics_inst_global_add(smf_metric_type_global_t t, int val)
{ ogs_metrics_inst_add(smf_metrics_inst_global[t], val); }
static inline void smf_metrics_inst_global_inc(smf_metric_type_global_t t)
{ ogs_metrics_inst_inc(smf_metrics_inst_global[t]); }
static inline void smf_metrics_inst_global_dec(smf_metric_type_global_t t)
{ ogs_metrics_inst_dec(smf_metrics_inst_global[t]); }
/* GTP NODE */
typedef enum smf_metric_type_gtp_node_s {
SMF_METR_GTP_NODE_CTR_GN_RX_PARSE_FAILED = 0,
SMF_METR_GTP_NODE_CTR_GN_RX_CREATEPDPCTXREQ,
SMF_METR_GTP_NODE_CTR_GN_RX_DELETEPDPCTXREQ,
SMF_METR_GTP_NODE_CTR_S5C_RX_PARSE_FAILED,
SMF_METR_GTP_NODE_CTR_S5C_RX_CREATESESSIONREQ,
SMF_METR_GTP_NODE_CTR_S5C_RX_DELETESESSIONREQ,
_SMF_METR_GTP_NODE_MAX,
} smf_metric_type_gtp_node_t;
int smf_metrics_init_inst_gtp_node(ogs_metrics_inst_t **inst, const char *addr);
int smf_metrics_free_inst_gtp_node(ogs_metrics_inst_t **inst);
static inline void smf_metrics_inst_gtp_node_set(
ogs_metrics_inst_t **inst, smf_metric_type_gtp_node_t t, int val)
{ ogs_metrics_inst_set(inst[t], val); }
static inline void smf_metrics_inst_gtp_node_add(
ogs_metrics_inst_t **inst, smf_metric_type_gtp_node_t t, int val)
{ ogs_metrics_inst_add(inst[t], val); }
static inline void smf_metrics_inst_gtp_node_inc(
ogs_metrics_inst_t **inst, smf_metric_type_gtp_node_t t)
{ ogs_metrics_inst_inc(inst[t]); }
static inline void smf_metrics_inst_gtp_node_dec(
ogs_metrics_inst_t **inst, smf_metric_type_gtp_node_t t)
{ ogs_metrics_inst_dec(inst[t]); }
/* BY SLICE */
typedef enum smf_metric_type_by_slice_s {
SMF_METR_GAUGE_SM_SESSIONNBR = 0,
SMF_METR_CTR_SM_PDUSESSIONCREATIONREQ,
SMF_METR_CTR_SM_PDUSESSIONCREATIONSUCC,
_SMF_METR_BY_SLICE_MAX,
} smf_metric_type_by_slice_t;
void smf_metrics_inst_by_slice_add(
ogs_plmn_id_t *plmn, ogs_s_nssai_t *snssai,
smf_metric_type_by_slice_t t, int val);
/* BY SLICE and 5QI */
typedef enum smf_metric_type_by_5qi_s {
SMF_METR_GAUGE_SM_QOSFLOWNBR = 0,
_SMF_METR_BY_5QI_MAX,
} smf_metric_type_by_5qi_t;
void smf_metrics_inst_by_5qi_add(
ogs_plmn_id_t *plmn, ogs_s_nssai_t *snssai,
uint8_t fiveqi, smf_metric_type_by_5qi_t t, int val);
/* BY CAUSE */
typedef enum smf_metric_type_by_cause_s {
SMF_METR_CTR_SM_N4SESSIONESTABFAIL = 0,
SMF_METR_CTR_SM_PDUSESSIONCREATIONFAIL,
_SMF_METR_BY_CAUSE_MAX,
} smf_metric_type_by_cause_t;
void smf_metrics_inst_by_cause_add(
int cause, smf_metric_type_by_cause_t t, int val);
void smf_metrics_init(void);
void smf_metrics_final(void);
#ifdef __cplusplus
}
#endif
#endif /* SMF_METRICS_H */