diff options
author | Pablo Neira Ayuso <pablo@soleta.eu> | 2014-09-17 12:33:09 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@soleta.eu> | 2014-09-17 19:34:25 +0200 |
commit | ee11bc0f5c69d8ffa78b5de1de0ec365e4de4a12 (patch) | |
tree | a54e835329c8fd3219463377be584723bbbeda3b /openbsc/src/libmgcp/mgcp_protocol.c | |
parent | 8d2fe43c7f6034aaa1883cb7bba919a54c317517 (diff) |
osmux: send osmux stats in MGCP DLCX responses
This allows us to know what number of messages and bytes has been
received per active osmux endpoint.
Note that an Osmux message is composed of several chunks. Each chunk
contains an osmux header plus several voice data frames.
P: PS=385, OS=11188, PR=195, OR=5655, PL=0, JI=49
X-Osmo-CP: EC TIS=0, TOS=0, TIR=0, TOR=0
X-Osmux-ST: CR=51, BR=3129
The new 'X-Osmux-ST:' notifies the received chunks and bytes.
Diffstat (limited to 'openbsc/src/libmgcp/mgcp_protocol.c')
-rw-r--r-- | openbsc/src/libmgcp/mgcp_protocol.c | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/openbsc/src/libmgcp/mgcp_protocol.c b/openbsc/src/libmgcp/mgcp_protocol.c index a728b67c4..79422fea4 100644 --- a/openbsc/src/libmgcp/mgcp_protocol.c +++ b/openbsc/src/libmgcp/mgcp_protocol.c @@ -1745,12 +1745,24 @@ void mgcp_format_stats(struct mgcp_endpoint *endp, char *msg, size_t size) size -= nchars; /* Error Counter */ - snprintf(msg, size, - "\r\nX-Osmo-CP: EC TIS=%u, TOS=%u, TIR=%u, TOR=%u", - endp->net_state.in_stream.err_ts_counter, - endp->net_state.out_stream.err_ts_counter, - endp->bts_state.in_stream.err_ts_counter, - endp->bts_state.out_stream.err_ts_counter); + nchars = snprintf(msg, size, + "\r\nX-Osmo-CP: EC TIS=%u, TOS=%u, TIR=%u, TOR=%u", + endp->net_state.in_stream.err_ts_counter, + endp->net_state.out_stream.err_ts_counter, + endp->bts_state.in_stream.err_ts_counter, + endp->bts_state.out_stream.err_ts_counter); + if (nchars < 0 || nchars >= size) + goto truncate; + + msg += nchars; + size -= nchars; + + if (endp->osmux.state == OSMUX_STATE_ENABLED) { + snprintf(msg, size, + "\r\nX-Osmux-ST: CR=%u, BR=%u", + endp->osmux.stats.chunks, + endp->osmux.stats.octets); + } truncate: msg[size - 1] = '\0'; } |