From f2eedff052bd7f92655a32d5a57206018b310aec Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Sun, 19 Sep 2010 04:36:07 +0800 Subject: nat: Send a transcoder reset on start up. The transcoder RESET is using the same extensions to reset all endpoints on a remote site. This makes sure that all allocations can be made in a properly configured network. --- openbsc/src/mgcp/mgcp_protocol.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'openbsc/src/mgcp') diff --git a/openbsc/src/mgcp/mgcp_protocol.c b/openbsc/src/mgcp/mgcp_protocol.c index f18431aa9..5abdeaeab 100644 --- a/openbsc/src/mgcp/mgcp_protocol.c +++ b/openbsc/src/mgcp/mgcp_protocol.c @@ -951,3 +951,22 @@ static void delete_transcoder(struct mgcp_endpoint *endp) send_dlcx(endp, in_endp); send_dlcx(endp, out_endp); } + +int mgcp_reset_transcoder(struct mgcp_config *cfg) +{ + struct sockaddr_in addr; + + if (!cfg->transcoder_ip) + return -1; + + static const char mgcp_reset[] = { + "RSIP 1 13@mgw MGCP 1.0\r\n" + }; + + memset(&addr, 0, sizeof(addr)); + addr.sin_family = AF_INET; + addr.sin_addr = cfg->transcoder_in; + addr.sin_port = htons(2427); + return sendto(cfg->gw_fd.bfd.fd, mgcp_reset, sizeof mgcp_reset -1, 0, + (struct sockaddr *) &addr, sizeof(addr)); +} -- cgit v1.2.3