aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libmsc
diff options
context:
space:
mode:
Diffstat (limited to 'openbsc/src/libmsc')
-rw-r--r--openbsc/src/libmsc/msc_ifaces.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/openbsc/src/libmsc/msc_ifaces.c b/openbsc/src/libmsc/msc_ifaces.c
index 9533ddecd..43959c13f 100644
--- a/openbsc/src/libmsc/msc_ifaces.c
+++ b/openbsc/src/libmsc/msc_ifaces.c
@@ -345,3 +345,21 @@ void msc_call_release(struct gsm_trans *trans)
/* Release endpoint id */
mgcpgw_client_release_endpoint(conn->iu.mgcp_rtp_endpoint, mgcp);
}
+
+void msc_call_release_all(struct mgcpgw_client *mgcp)
+{
+ struct msgb *msg;
+ unsigned int i;
+
+ uint16_t first_endpoint = mgcp->actual.first_endpoint;
+ uint16_t last_endpoint = mgcp->actual.last_endpoint;
+
+ for (i = first_endpoint; i < last_endpoint; i++) {
+ msg = mgcp_msg_dlcx(mgcp, i);
+ if (mgcpgw_client_tx(mgcp, msg, NULL, NULL))
+ LOGP(DMGCP, LOGL_ERROR,
+ "Failed to send DLCX message for endpoint %u\n", i);
+
+ mgcpgw_client_release_endpoint(i, mgcp);
+ }
+}