diff options
author | matteo <matteo@f38db490-d61c-443f-a65b-d21fe96a405b> | 2003-03-16 22:37:31 +0000 |
---|---|---|
committer | matteo <matteo@f38db490-d61c-443f-a65b-d21fe96a405b> | 2003-03-16 22:37:31 +0000 |
commit | 342cf00fb74d7832598ad2431b3338512273959e (patch) | |
tree | 42e44ab95928950f65a80b2dd298dc79f9b82a8e /channels/iax2-parser.h | |
parent | 40b9926da3752f8e6f5d1a23d4dd8ae8655df2b1 (diff) |
dom mar 16 23:37:23 CET 2003
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@647 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/iax2-parser.h')
-rwxr-xr-x | channels/iax2-parser.h | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/channels/iax2-parser.h b/channels/iax2-parser.h new file mode 100755 index 000000000..903a44383 --- /dev/null +++ b/channels/iax2-parser.h @@ -0,0 +1,110 @@ +/* + * Asterisk -- A telephony toolkit for Linux. + * + * Implementation of Inter-Asterisk eXchange + * + * Copyright (C) 2003, Digium + * + * Mark Spencer <markster@linux-support.net> + * + * This program is free software, distributed under the terms of + * the GNU General Public License + */ + +#ifndef _IAX2_PARSER_H +#define _IAX2_PARSER_H + +struct iax_ies { + char *called_number; + char *calling_number; + char *calling_ani; + char *calling_name; + char *called_context; + char *username; + char *password; + unsigned int capability; + unsigned int format; + char *language; + int version; + unsigned short adsicpe; + char *dnid; + unsigned int authmethods; + char *challenge; + char *md5_result; + char *rsa_result; + struct sockaddr_in *apparent_addr; + unsigned short refresh; + unsigned short dpstatus; + unsigned short callno; + char *cause; + unsigned char iax_unknown; + int msgcount; + int autoanswer; + int musiconhold; +}; + +#define DIRECTION_INGRESS 1 +#define DIRECTION_OUTGRESS 2 + +struct ast_iax2_frame { + /* /Our/ call number */ + unsigned short callno; + /* /Their/ call number */ + unsigned short dcallno; + /* Start of raw frame (outgoing only) */ + void *data; + /* Length of frame (outgoing only) */ + int datalen; + /* How many retries so far? */ + int retries; + /* Outgoing relative timestamp (ms) */ + unsigned int ts; + /* How long to wait before retrying */ + int retrytime; + /* Are we received out of order? */ + int outoforder; + /* Have we been sent at all yet? */ + int sentyet; + /* Outgoing Packet sequence number */ + int oseqno; + /* Next expected incoming packet sequence number */ + int iseqno; + /* Non-zero if should be sent to transfer peer */ + int transfer; + /* Non-zero if this is the final message */ + int final; + /* Ingress or outgres */ + int direction; + /* Retransmission ID */ + int retrans; + /* Easy linking */ + struct ast_iax2_frame *next; + struct ast_iax2_frame *prev; + /* Actual, isolated frame header */ + struct ast_frame af; + unsigned char unused[AST_FRIENDLY_OFFSET]; + unsigned char afdata[0]; /* Data for frame */ +}; + +struct iax_ie_data { + unsigned char buf[1024]; + int pos; +}; + +/* Choose a different function for output */ +extern void iax_set_output(void (*output)(const char *data)); +/* Choose a different function for errors */ +extern void iax_set_error(void (*output)(const char *data)); +extern void iax_showframe(struct ast_iax2_frame *f, struct ast_iax2_full_hdr *fhi, int rx, struct sockaddr_in *sin, int datalen); + +extern const char *iax_ie2str(int ie); + +extern int iax_ie_append_raw(struct iax_ie_data *ied, unsigned char ie, void *data, int datalen); +extern int iax_ie_append_addr(struct iax_ie_data *ied, unsigned char ie, struct sockaddr_in *sin); +extern int iax_ie_append_int(struct iax_ie_data *ied, unsigned char ie, unsigned int value); +extern int iax_ie_append_short(struct iax_ie_data *ied, unsigned char ie, unsigned short value); +extern int iax_ie_append_str(struct iax_ie_data *ied, unsigned char ie, unsigned char *str); +extern int iax_ie_append_byte(struct iax_ie_data *ied, unsigned char ie, unsigned char dat); +extern int iax_ie_append(struct iax_ie_data *ied, unsigned char ie); + +#endif |