blob: f566625b9bf5c1f55b38f1fffd561870c30fff61 [file] [log] [blame]
Philipp Maierc66ab2c2020-06-02 20:55:34 +02001#pragma once
2
Philipp Maier3d5a2dd2020-06-17 12:48:29 +02003/* Global MCGP general rate counters */
4enum {
5 MGCP_GENERAL_RX_MSGS_TOTAL,
6 MGCP_GENERAL_RX_MSGS_RETRANSMITTED,
7 MGCP_GENERAL_RX_MSGS_HANDLED,
8 MGCP_GENERAL_RX_MSGS_UNHANDLED,
9 MGCP_GENERAL_RX_FAIL_MSG_PARSE,
10 MGCP_GENERAL_RX_FAIL_NO_ENDPOINT,
11};
12
Philipp Maier113141d2020-08-10 21:12:49 +020013/* Trunk-global MCGP CRCX related rate counters */
Philipp Maier3d5a2dd2020-06-17 12:48:29 +020014enum {
15 MGCP_CRCX_SUCCESS,
16 MGCP_CRCX_FAIL_BAD_ACTION,
17 MGCP_CRCX_FAIL_UNHANDLED_PARAM,
18 MGCP_CRCX_FAIL_MISSING_CALLID,
19 MGCP_CRCX_FAIL_INVALID_MODE,
20 MGCP_CRCX_FAIL_LIMIT_EXCEEDED,
21 MGCP_CRCX_FAIL_UNKNOWN_CALLID,
22 MGCP_CRCX_FAIL_ALLOC_CONN,
23 MGCP_CRCX_FAIL_NO_REMOTE_CONN_DESC,
24 MGCP_CRCX_FAIL_START_RTP,
Philipp Maier3d5a2dd2020-06-17 12:48:29 +020025 MGCP_CRCX_FAIL_NO_OSMUX,
26 MGCP_CRCX_FAIL_INVALID_CONN_OPTIONS,
27 MGCP_CRCX_FAIL_CODEC_NEGOTIATION,
28 MGCP_CRCX_FAIL_BIND_PORT,
Philipp Maier8d6a1932020-06-18 12:19:31 +020029 MGCP_CRCX_FAIL_AVAIL,
Philipp Maier889fe7f2020-07-06 17:44:12 +020030 MGCP_CRCX_FAIL_CLAIM,
Philipp Maier3d5a2dd2020-06-17 12:48:29 +020031};
32
Philipp Maier113141d2020-08-10 21:12:49 +020033/* Trunk-global MCGP MDCX related rate counters */
Philipp Maier3d5a2dd2020-06-17 12:48:29 +020034enum {
35 MGCP_MDCX_SUCCESS,
36 MGCP_MDCX_FAIL_WILDCARD,
37 MGCP_MDCX_FAIL_NO_CONN,
38 MGCP_MDCX_FAIL_INVALID_CALLID,
39 MGCP_MDCX_FAIL_INVALID_CONNID,
40 MGCP_MDCX_FAIL_UNHANDLED_PARAM,
41 MGCP_MDCX_FAIL_NO_CONNID,
42 MGCP_MDCX_FAIL_CONN_NOT_FOUND,
43 MGCP_MDCX_FAIL_INVALID_MODE,
44 MGCP_MDCX_FAIL_INVALID_CONN_OPTIONS,
45 MGCP_MDCX_FAIL_NO_REMOTE_CONN_DESC,
46 MGCP_MDCX_FAIL_START_RTP,
Philipp Maier8d6a1932020-06-18 12:19:31 +020047 MGCP_MDCX_FAIL_AVAIL,
Philipp Maier3d5a2dd2020-06-17 12:48:29 +020048};
49
Philipp Maier113141d2020-08-10 21:12:49 +020050/* Trunk-global MCGP DLCX related rate counters */
Philipp Maier3d5a2dd2020-06-17 12:48:29 +020051enum {
52 MGCP_DLCX_SUCCESS,
Philipp Maier3d5a2dd2020-06-17 12:48:29 +020053 MGCP_DLCX_FAIL_NO_CONN,
54 MGCP_DLCX_FAIL_INVALID_CALLID,
55 MGCP_DLCX_FAIL_INVALID_CONNID,
56 MGCP_DLCX_FAIL_UNHANDLED_PARAM,
Philipp Maier8d6a1932020-06-18 12:19:31 +020057 MGCP_DLCX_FAIL_AVAIL,
Philipp Maier3d5a2dd2020-06-17 12:48:29 +020058};
59
Philipp Maier889fe7f2020-07-06 17:44:12 +020060/* Trunk-global E1 related counters */
61enum {
62 E1_I460_TRAU_RX_FAIL_CTR,
63 E1_I460_TRAU_TX_FAIL_CTR,
64 E1_I460_TRAU_MUX_EMPTY_CTR,
65};
66
Philipp Maierc66ab2c2020-06-02 20:55:34 +020067/* NOTE: When adding counters, also the dump_ratectr_* routines in vty.c must be updated. */
68
69struct mgcp_ratectr_global {
70 /* Rate counter group which contains stats for generic MGCP events. */
71 struct rate_ctr_group *mgcp_general_ctr_group;
72};
73
74struct mgcp_ratectr_trunk {
75 /* Rate counter group which contains stats for processed CRCX commands. */
76 struct rate_ctr_group *mgcp_crcx_ctr_group;
77 /* Rate counter group which contains stats for processed MDCX commands. */
78 struct rate_ctr_group *mgcp_mdcx_ctr_group;
79 /* Rate counter group which contains stats for processed DLCX commands. */
80 struct rate_ctr_group *mgcp_dlcx_ctr_group;
81 /* Rate counter group which aggregates stats of individual RTP connections. */
82 struct rate_ctr_group *all_rtp_conn_stats;
Pau Espin Pedrol582c2bf2022-09-22 17:53:44 +020083 /* Rate counter group which aggregates stats of individual Osmux connections. */
84 struct rate_ctr_group *all_osmux_conn_stats;
Philipp Maier889fe7f2020-07-06 17:44:12 +020085 /* Rate counter group which contains stats for E1 events (only valid for E1 trunks) */
86 struct rate_ctr_group *e1_stats;
Philipp Maierc66ab2c2020-06-02 20:55:34 +020087};
88
Philipp Maiera065e632021-07-09 13:22:42 +020089struct mgcp_config;
90struct mgcp_trunk;
91
92int mgcp_ratectr_global_alloc(struct mgcp_config *cfg);
Philipp Maier38533ba2021-07-29 17:38:34 +020093void mgcp_ratectr_global_free(struct mgcp_config *cfg);
Philipp Maiera065e632021-07-09 13:22:42 +020094int mgcp_ratectr_trunk_alloc(struct mgcp_trunk *trunk);
Philipp Maier38533ba2021-07-29 17:38:34 +020095void mgcp_ratectr_trunk_free(struct mgcp_trunk *trunk);
Philipp Maier124a3e02021-07-26 11:17:15 +020096
97/* Trunk-global common stat items */
98enum {
99 TRUNK_STAT_ENDPOINTS_TOTAL,
100 TRUNK_STAT_ENDPOINTS_USED,
101};
102
103struct mgcp_stat_trunk {
104 /* Stat item group which contains general status values of the trunk. */
105 struct osmo_stat_item_group *common;
106};
107
108int mgcp_stat_trunk_alloc(struct mgcp_trunk *trunk);
Philipp Maier38533ba2021-07-29 17:38:34 +0200109void mgcp_stat_trunk_free(struct mgcp_trunk *trunk);