[mgcp] Add some parsing for RSIP messages coming in
This will just call a callback and leave all the handling to the application.
This commit is contained in:
parent
e7d2ae69c9
commit
9bdcc9ca75
|
@ -77,6 +77,7 @@ struct mgcp_config;
|
||||||
|
|
||||||
typedef int (*mgcp_change)(struct mgcp_config *cfg, int endpoint, int state, int local_rtp);
|
typedef int (*mgcp_change)(struct mgcp_config *cfg, int endpoint, int state, int local_rtp);
|
||||||
typedef int (*mgcp_policy)(struct mgcp_config *cfg, int endpoint, int state, const char *transactio_id);
|
typedef int (*mgcp_policy)(struct mgcp_config *cfg, int endpoint, int state, const char *transactio_id);
|
||||||
|
typedef int (*mgcp_reset)(struct mgcp_config *cfg);
|
||||||
|
|
||||||
struct mgcp_config {
|
struct mgcp_config {
|
||||||
int source_port;
|
int source_port;
|
||||||
|
@ -97,6 +98,7 @@ struct mgcp_config {
|
||||||
|
|
||||||
mgcp_change change_cb;
|
mgcp_change change_cb;
|
||||||
mgcp_policy policy_cb;
|
mgcp_policy policy_cb;
|
||||||
|
mgcp_reset reset_cb;
|
||||||
void *data;
|
void *data;
|
||||||
|
|
||||||
struct mgcp_endpoint *endpoints;
|
struct mgcp_endpoint *endpoints;
|
||||||
|
|
|
@ -98,6 +98,7 @@ static struct msgb *handle_audit_endpoint(struct mgcp_config *cfg, struct msgb *
|
||||||
static struct msgb *handle_create_con(struct mgcp_config *cfg, struct msgb *msg);
|
static struct msgb *handle_create_con(struct mgcp_config *cfg, struct msgb *msg);
|
||||||
static struct msgb *handle_delete_con(struct mgcp_config *cfg, struct msgb *msg);
|
static struct msgb *handle_delete_con(struct mgcp_config *cfg, struct msgb *msg);
|
||||||
static struct msgb *handle_modify_con(struct mgcp_config *cfg, struct msgb *msg);
|
static struct msgb *handle_modify_con(struct mgcp_config *cfg, struct msgb *msg);
|
||||||
|
static struct msgb *handle_rsip(struct mgcp_config *cfg, struct msgb *msg);
|
||||||
|
|
||||||
static int generate_call_id(struct mgcp_config *cfg)
|
static int generate_call_id(struct mgcp_config *cfg)
|
||||||
{
|
{
|
||||||
|
@ -129,6 +130,9 @@ static const struct mgcp_request mgcp_requests [] = {
|
||||||
MGCP_REQUEST("CRCX", handle_create_con, "CreateConnection")
|
MGCP_REQUEST("CRCX", handle_create_con, "CreateConnection")
|
||||||
MGCP_REQUEST("DLCX", handle_delete_con, "DeleteConnection")
|
MGCP_REQUEST("DLCX", handle_delete_con, "DeleteConnection")
|
||||||
MGCP_REQUEST("MDCX", handle_modify_con, "ModifiyConnection")
|
MGCP_REQUEST("MDCX", handle_modify_con, "ModifiyConnection")
|
||||||
|
|
||||||
|
/* SPEC extension */
|
||||||
|
MGCP_REQUEST("RSIP", handle_rsip, "ReSetInProgress")
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct msgb *mgcp_msgb_alloc(void)
|
static struct msgb *mgcp_msgb_alloc(void)
|
||||||
|
@ -655,6 +659,13 @@ error3:
|
||||||
return create_response(error_code, "DLCX", trans_id);
|
return create_response(error_code, "DLCX", trans_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct msgb *handle_rsip(struct mgcp_config *cfg, struct msgb *msg)
|
||||||
|
{
|
||||||
|
if (cfg->reset_cb)
|
||||||
|
cfg->reset_cb(cfg);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
struct mgcp_config *mgcp_config_alloc(void)
|
struct mgcp_config *mgcp_config_alloc(void)
|
||||||
{
|
{
|
||||||
struct mgcp_config *cfg;
|
struct mgcp_config *cfg;
|
||||||
|
|
Loading…
Reference in New Issue