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.
This commit is contained in:
parent
b98ba72e0a
commit
f2eedff052
|
@ -146,6 +146,7 @@ int mgcp_parse_config(const char *config_file, struct mgcp_config *cfg);
|
||||||
int mgcp_vty_init(void);
|
int mgcp_vty_init(void);
|
||||||
int mgcp_endpoints_allocate(struct mgcp_config *cfg);
|
int mgcp_endpoints_allocate(struct mgcp_config *cfg);
|
||||||
void mgcp_free_endp(struct mgcp_endpoint *endp);
|
void mgcp_free_endp(struct mgcp_endpoint *endp);
|
||||||
|
int mgcp_reset_transcoder(struct mgcp_config *cfg);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* format helper functions
|
* format helper functions
|
||||||
|
|
|
@ -951,3 +951,22 @@ static void delete_transcoder(struct mgcp_endpoint *endp)
|
||||||
send_dlcx(endp, in_endp);
|
send_dlcx(endp, in_endp);
|
||||||
send_dlcx(endp, out_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));
|
||||||
|
}
|
||||||
|
|
|
@ -663,6 +663,15 @@ int bsc_mgcp_nat_init(struct bsc_nat *nat)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mgcp_reset_transcoder(cfg) < 0) {
|
||||||
|
LOGP(DMGCP, LOGL_ERROR, "Failed to send packet to the transcoder.\n");
|
||||||
|
talloc_free(nat->bsc_endpoints);
|
||||||
|
nat->bsc_endpoints = NULL;
|
||||||
|
close(cfg->gw_fd.bfd.fd);
|
||||||
|
cfg->gw_fd.bfd.fd = -1;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue