aboutsummaryrefslogtreecommitdiffstats
path: root/channels/h323/chan_h323.h
diff options
context:
space:
mode:
authorjeremy <jeremy@f38db490-d61c-443f-a65b-d21fe96a405b>2003-03-31 07:13:36 +0000
committerjeremy <jeremy@f38db490-d61c-443f-a65b-d21fe96a405b>2003-03-31 07:13:36 +0000
commite87ec82e085f525e025784b59b7c6c963688e876 (patch)
treeb1f49afdb738ce50543831306c4bff41e894c05f /channels/h323/chan_h323.h
parentd53be73ebe9f97b545594f1c2db16926aaddf524 (diff)
first commit of chan_h323
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@724 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/h323/chan_h323.h')
-rwxr-xr-xchannels/h323/chan_h323.h186
1 files changed, 186 insertions, 0 deletions
diff --git a/channels/h323/chan_h323.h b/channels/h323/chan_h323.h
new file mode 100755
index 000000000..ec718f9a1
--- /dev/null
+++ b/channels/h323/chan_h323.h
@@ -0,0 +1,186 @@
+/*
+ * chan_oh323.h
+ *
+ * OpenH323 Channel Driver for ASTERISK PBX.
+ * By Jeremy McNamara
+ * For The NuFone Network
+ *
+ * This code has been derived from code created by
+ * Michael Manousos and Mark Spencer
+ *
+ * This file is part of the chan_oh323 driver for Asterisk
+ *
+ * chan_oh323 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * chan_oh323 is distributed WITHOUT ANY WARRANTY; without even
+ * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+#include <arpa/inet.h>
+
+static struct sockaddr_in bindaddr;
+
+/* structure to hold the valid asterisk users */
+struct oh323_user {
+ char name[80];
+ char context[80];
+ char secret[80];
+ char callerid[80];
+ char accountcode[20];
+ int amaflags;
+ int noFastStart;
+ int noH245Tunneling;
+ int noSilenceSuppression;
+ int inUse;
+ int incominglimit;
+ int bridge;
+ int nat;
+ int dtmfmode;
+ struct ast_ha *ha;
+ struct sockaddr_in addr;
+ struct oh323_user *next;
+};
+
+/* structure to hold the valid asterisk peers
+ All peers are registered to a GK if there is one */
+struct oh323_peer {
+ char name[80];
+ char context[80];
+ int noFastStart;
+ int noH245Tunneling;
+ int noSilenceSuppression;
+ int inUse;
+ int outgoinglimit;
+ int bridge;
+ int nat;
+ int dtmfmode;
+ struct sockaddr_in addr;
+ int delme;
+ struct oh323_peer *next;
+};
+
+/* structure to hold the H.323 aliases which get registered to
+ the H.323 endpoint and gatekeeper */
+struct oh323_alias {
+ char name[80];
+ char e164[20]; /* tells a GK to route this E.164 to this alias */
+ char prefix[500]; /* tells a GK this alias supports these prefixes */
+ char secret[20]; /* the H.235 password to send to the GK for authentication */
+ char context[80];
+ struct oh323_alias *next;
+};
+
+/** call_option struct is filled from the
+ PBX application and passed through make_call
+ function*/
+typedef struct call_options {
+ int noFastStart;
+ int noH245Tunnelling;
+ int noSilenceSuppression;
+ int jitter;
+ unsigned int port;
+} call_options_t;
+
+/** call_details struct call detail records
+ to asterisk for processing and used for matching up
+ asterisk channels to acutal h.323 connections */
+typedef struct call_details {
+ unsigned int call_reference;
+ const char *call_token;
+ const char *call_source_aliases;
+ const char *call_dest_alias;
+ const char *call_source_e164;
+ const char *call_dest_e164;
+ const char *sourceIp;
+} call_details_t;
+
+/* This is a callback prototype function, called pass
+ DTMF down the RTP. */
+typedef int (*send_digit_cb)(unsigned, char);
+send_digit_cb on_send_digit;
+
+/* This is a callback prototype function, called to collect
+ the external RTP port from Asterisk. */
+typedef int (*on_connection_cb)(unsigned);
+on_connection_cb on_create_connection;
+
+/* This is a callback prototype function, called upon
+ an incoming call happens. */
+typedef int (*setup_incoming_cb)(call_details_t);
+setup_incoming_cb on_incoming_call;
+
+/* This is a callback prototype function, called upon
+ an outbound call. */
+typedef int (*setup_outbound_cb)(call_details_t);
+setup_outbound_cb on_outgoing_call;
+
+/* This is a callback prototype function, called when the openh323
+ OnStartLogicalChannel is invoked. */
+typedef void (*start_logchan_cb)(unsigned int, const char *, int);
+start_logchan_cb on_start_logical_channel;
+
+/* This is a callback protoype function, called when the openh323
+ OnConnectionEstablished is inovked */
+typedef void (*con_established_cb)(unsigned);
+con_established_cb on_connection_established;
+
+/* This is a callback prototype function, called when the openH323
+ OnConnectionCleared callback is invoked */
+typedef void (*clear_con_cb)(call_details_t);
+clear_con_cb on_connection_cleared;
+
+/* debug flag */
+int h323debug;
+
+#define H323_DTMF_RFC2833 (1 << 0)
+#define H323_DTMF_INBAND (1 << 1)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ void h323_gk_urq(void);
+ void h323_end_point_create(void);
+ void h323_end_process(void);
+ int end_point_exist(void);
+
+ void h323_debug(int, unsigned);
+
+ /* callback function handler*/
+ void h323_callback_register(setup_incoming_cb, setup_outbound_cb, on_connection_cb, start_logchan_cb, clear_con_cb, con_established_cb, send_digit_cb);
+
+ int h323_set_capability(int, int);
+ int h323_set_alias(struct oh323_alias *);
+ int h323_set_gk(int, char *, char *);
+
+ /* H323 listener related funcions */
+ int h323_start_listener(int, struct sockaddr_in, int);
+
+ void h323_native_bridge(const char *, char *, char *);
+
+ /* Send a DTMF tone to remote endpoint */
+ void h323_send_tone(const char *call_token, char tone);
+
+ /* H323 create and destroy sessions */
+ int h323_make_call(char *host, call_details_t *cd, call_options_t);
+ int h323_clear_call(const char *);
+ int h323_answering_call(const char *token, int);
+
+ int h323_show_codec(int fd, int argc, char *argv[]);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+