aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/mgcp/mgcp_protocol.c
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-09-19 04:36:07 +0800
committerHolger Hans Peter Freyther <zecke@selfish.org>2010-09-20 02:51:30 +0800
commitf2eedff052bd7f92655a32d5a57206018b310aec (patch)
tree7b8463698949f7db1c5060e961be4c273660ffa5 /openbsc/src/mgcp/mgcp_protocol.c
parentb98ba72e0a413a9d325fa8ed20cb77d28d472e2f (diff)
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.
Diffstat (limited to 'openbsc/src/mgcp/mgcp_protocol.c')
-rw-r--r--openbsc/src/mgcp/mgcp_protocol.c19
1 files changed, 19 insertions, 0 deletions
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));
+}