Create iterative method for querying SRV results, and use that for finding AGI servers.
[asterisk/asterisk.git] / addons / chan_ooh323.h
1 /*
2  * Copyright (C) 2004-2005 by Objective Systems, Inc.
3  *
4  * This software is furnished under an open source license and may be 
5  * used and copied only in accordance with the terms of this license. 
6  * The text of the license may generally be found in the root 
7  * directory of this installation in the COPYING file.  It 
8  * can also be viewed online at the following URL:
9  *
10  *   http://www.obj-sys.com/open/license.html
11  *
12  * Any redistributions of this file including modified versions must 
13  * maintain this copyright notice.
14  *
15  *****************************************************************************/
16 #ifndef _OO_CHAN_H323_H_
17 #define _OO_CHAN_H323_H_
18
19 #include <asterisk.h>
20 #undef PACKAGE_NAME
21 #undef PACKAGE_TARNAME
22 #undef PACKAGE_VERSION
23 #undef PACKAGE_STRING
24 #undef PACKAGE_BUGREPORT
25
26 #include <stdlib.h>
27 #include <stdio.h>
28 #include <string.h>
29 #include <sys/socket.h>
30 #include <sys/param.h>
31 #include <arpa/inet.h>
32 #include <net/if.h>
33 #include <netinet/in.h>
34 #include <netinet/in_systm.h>
35 #include <netinet/ip.h>
36 #include <unistd.h>
37 #include <netdb.h>
38 #include <errno.h>
39 #include <fcntl.h>
40 #include <sys/signal.h>
41
42 #include <asterisk/lock.h>
43 #include <asterisk/channel.h>
44 #include <asterisk/config.h>
45 #include <asterisk/logger.h>
46 #include <asterisk/module.h>
47 #include <asterisk/pbx.h>
48 #include <asterisk/utils.h>
49 #include <asterisk/options.h>
50 #include <asterisk/sched.h>
51 #include <asterisk/io.h>
52 #include <asterisk/causes.h>
53 #include <asterisk/rtp_engine.h>
54 #include <asterisk/acl.h>
55 #include <asterisk/callerid.h>
56 #include <asterisk/file.h>
57 #include <asterisk/cli.h>
58 #include <asterisk/app.h>
59 #include <asterisk/musiconhold.h>
60 #include <asterisk/manager.h>
61 #include <asterisk/dsp.h>
62 #include <asterisk/stringfields.h>
63 #include <asterisk/frame_defs.h>
64 #include <asterisk/udptl.h>
65
66 #include "ootypes.h"
67 #include "ooUtils.h"
68 #include "ooCapability.h"
69 #include "oochannels.h"
70 #include "ooh323ep.h"
71 #include "ooh323cDriver.h"
72 #include "ooCalls.h"
73 #include "ooq931.h"
74 #include "ooStackCmds.h"
75 #include "ooCapability.h"
76 #include "ooGkClient.h"
77
78
79 struct ooh323_pvt;
80 struct ooh323_user;
81 struct ooh323_peer;
82 /* Helper functions */
83 struct ooh323_user *find_user(const char * name, const char *ip);
84 struct ooh323_peer *find_peer(const char * name, int port);
85 void ooh323_delete_peer(struct ooh323_peer *peer);   
86
87 int delete_users(void);
88 int delete_peers(void);
89
90 int ooh323_destroy(struct ooh323_pvt *p);
91 int reload_config(int reload);
92 int restart_monitor(void);
93
94 int configure_local_rtp(struct ooh323_pvt *p, ooCallData* call);
95 void setup_rtp_connection(ooCallData *call, const char *remoteIp, 
96                           int remotePort);
97 void close_rtp_connection(ooCallData *call);
98 struct ast_frame *ooh323_rtp_read
99          (struct ast_channel *ast, struct ooh323_pvt *p);
100
101 void ooh323_set_write_format(ooCallData *call, int fmt, int txframes);
102 void ooh323_set_read_format(ooCallData *call, int fmt);
103
104 int ooh323_update_capPrefsOrderForCall
105    (ooCallData *call, struct ast_codec_pref *prefs);
106
107 int ooh323_convertAsteriskCapToH323Cap(format_t cap);
108
109 int ooh323_convert_hangupcause_asteriskToH323(int cause);
110 int ooh323_convert_hangupcause_h323ToAsterisk(int cause);
111 int update_our_aliases(ooCallData *call, struct ooh323_pvt *p);
112
113 /* h323 msg callbacks */
114 int ooh323_onReceivedSetup(ooCallData *call, Q931Message *pmsg);
115 int ooh323_onReceivedDigit(OOH323CallData *call, const char* digit);
116
117 void setup_udptl_connection(ooCallData *call, const char *remoteIp, int remotePort);
118 void close_udptl_connection(ooCallData *call);
119
120 EXTERN char *handle_cli_ooh323_reload(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
121
122 #endif