diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2010-02-20 21:21:02 +0100 |
---|---|---|
committer | Holger Hans Peter Freyther <zecke@selfish.org> | 2010-02-22 12:09:24 +0100 |
commit | 7bdc637aaeb3159bcb68b9ece31356176c0a0880 (patch) | |
tree | c78b932f86f8688e0edc23adfb5a8d3b5c67e7c7 /openbsc/include/openbsc/mgcp.h | |
parent | 92026f1cef5d8c187302e1ad2103a4826584ec1d (diff) |
[mgcp] Move away from global variables and split out VTY code
In separation of using the MGCP parsing in another context, refactor
the code to operate on a struct mgcp_config, split out the vty code
from the mgcp_protocol.c, and move the callbacks into the mgcp code.
There should be no functional changes.
Diffstat (limited to 'openbsc/include/openbsc/mgcp.h')
-rw-r--r-- | openbsc/include/openbsc/mgcp.h | 57 |
1 files changed, 47 insertions, 10 deletions
diff --git a/openbsc/include/openbsc/mgcp.h b/openbsc/include/openbsc/mgcp.h index 5b4aa3eec..5baf0ca1d 100644 --- a/openbsc/include/openbsc/mgcp.h +++ b/openbsc/include/openbsc/mgcp.h @@ -1,8 +1,8 @@ /* A Media Gateway Control Protocol Media Gateway: RFC 3435 */ /* - * (C) 2009 by Holger Hans Peter Freyther <zecke@selfish.org> - * (C) 2009 by On-Waves + * (C) 2009-2010 by Holger Hans Peter Freyther <zecke@selfish.org> + * (C) 2009-2010 by On-Waves * All Rights Reserved * * This program is free software; you can redistribute it and/or modify @@ -26,8 +26,9 @@ #include "msgb.h" +#include <arpa/inet.h> + #define RTP_PORT_DEFAULT 4000 -extern unsigned int rtp_base_port; /** * Calculate the RTP audio port for the given multiplex @@ -53,18 +54,54 @@ static inline int rtp_calculate_port(int multiplex, int base) return base + (multiplex * 2); } -int mgcp_parse_config(const char *config_file, struct gsm_network *dummy_network); -struct msgb *mgcp_handle_message(struct msgb *msg); -struct msgb *mgcp_create_rsip(void); -int mgcp_vty_init(void); +/* + * Handling of MGCP Endpoints and the MGCP Config + */ +struct mgcp_endpoint; +struct mgcp_config; -/* endpoint managed */ #define MGCP_ENDP_CRCX 1 #define MGCP_ENDP_DLCX 2 #define MGCP_ENDP_MDCX 3 -typedef int (*mgcp_change)(int endpoint, int state, int local_rtp, void *); -void mgcp_set_change_cb(mgcp_change cb, void *data); +typedef int (*mgcp_change)(struct mgcp_config *cfg, int endpoint, int state, int local_rtp); + +struct mgcp_config { + int source_port; + char *local_ip; + char *source_addr; + unsigned int number_endpoints; + char *bts_ip; + + struct in_addr bts_in; + char *audio_name; + int audio_payload; + int audio_loop; + int early_bind; + int rtp_base_port; + + char *forward_ip; + int forward_port; + + mgcp_change change_cb; + + struct mgcp_endpoint *endpoints; + unsigned int last_call_id; +}; + +/* config management */ +struct mgcp_config *mgcp_config_alloc(void); +int mgcp_parse_config(const char *config_file, struct mgcp_config *cfg); +int mgcp_vty_init(void); +int mgcp_endpoints_allocate(struct mgcp_config *cfg); +int mgcp_bind_rtp_port(struct mgcp_endpoint *endp, int rtp_port); + +/* + * format helper functions + */ +struct msgb *mgcp_handle_message(struct mgcp_config *cfg, struct msgb *msg); +struct msgb *mgcp_create_rsip(void); + #endif |