diff options
Diffstat (limited to 'openbsc/src/libmsc')
-rw-r--r-- | openbsc/src/libmsc/msc_ifaces.c | 18 |
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); + } +} |