From 6357a8e3110a6cdecb5ee8fdbe59d806f257c1ba Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Thu, 5 Aug 2010 12:07:00 +0000 Subject: mgcp: Patch RTP packets again if that is allowed. --- openbsc/include/openbsc/mgcp_internal.h | 3 +++ openbsc/src/mgcp/mgcp_network.c | 2 +- openbsc/src/mgcp/mgcp_protocol.c | 1 + openbsc/src/mgcp/mgcp_vty.c | 1 + 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/openbsc/include/openbsc/mgcp_internal.h b/openbsc/include/openbsc/mgcp_internal.h index 92e5f9955..bdcd03030 100644 --- a/openbsc/include/openbsc/mgcp_internal.h +++ b/openbsc/include/openbsc/mgcp_internal.h @@ -86,6 +86,9 @@ struct mgcp_endpoint { /* sequence bits */ struct mgcp_rtp_state net_state; struct mgcp_rtp_state bts_state; + + /* SSRC/seq/ts patching for loop */ + int allow_patch; }; #define ENDPOINT_NUMBER(endp) abs(endp - endp->cfg->endpoints) diff --git a/openbsc/src/mgcp/mgcp_network.c b/openbsc/src/mgcp/mgcp_network.c index a52e13573..387711298 100644 --- a/openbsc/src/mgcp/mgcp_network.c +++ b/openbsc/src/mgcp/mgcp_network.c @@ -117,7 +117,7 @@ static void patch_and_count(struct mgcp_endpoint *endp, struct mgcp_rtp_state *s state->ssrc = rtp_hdr->ssrc; state->seq_offset = (state->seq_no + 1) - seq; state->timestamp_offset = state->last_timestamp - timestamp; - //state->patch = 1; + state->patch = endp->allow_patch; LOGP(DMGCP, LOGL_NOTICE, "The SSRC changed on 0x%x SSRC: %u offset: %d from %s:%d in %d\n", ENDPOINT_NUMBER(endp), state->ssrc, state->seq_offset, diff --git a/openbsc/src/mgcp/mgcp_protocol.c b/openbsc/src/mgcp/mgcp_protocol.c index ce5265d97..036ddf02a 100644 --- a/openbsc/src/mgcp/mgcp_protocol.c +++ b/openbsc/src/mgcp/mgcp_protocol.c @@ -825,4 +825,5 @@ void mgcp_free_endp(struct mgcp_endpoint *endp) memset(&endp->bts_state, 0, sizeof(endp->bts_state)); endp->conn_mode = endp->orig_mode = MGCP_CONN_NONE; + endp->allow_patch = 0; } diff --git a/openbsc/src/mgcp/mgcp_vty.c b/openbsc/src/mgcp/mgcp_vty.c index f3b5f458a..040e8ff2a 100644 --- a/openbsc/src/mgcp/mgcp_vty.c +++ b/openbsc/src/mgcp/mgcp_vty.c @@ -305,6 +305,7 @@ DEFUN(loop_endp, endp->conn_mode = MGCP_CONN_LOOPBACK; else endp->conn_mode = endp->orig_mode; + endp->allow_patch = 1; return CMD_SUCCESS; } -- cgit v1.2.3