pval.c should not be in svn, in the utils dir
[asterisk/asterisk.git] / channels / iax2-parser.h
index dd90682..e40669d 100644 (file)
@@ -18,6 +18,8 @@
 #ifndef _IAX2_PARSER_H
 #define _IAX2_PARSER_H
 
+#include "asterisk/linkedlists.h"
+
 struct iax_ies {
        char *called_number;
        char *calling_number;
@@ -71,6 +73,9 @@ struct iax_ies {
        unsigned short rr_delay;
        unsigned int rr_dropped;
        unsigned int rr_ooo;
+       struct ast_variable *vars;
+       char *osptokenblock[IAX_MAX_OSPBLOCK_NUM];
+       unsigned int ospblocklength[IAX_MAX_OSPBLOCK_NUM];
 };
 
 #define DIRECTION_INGRESS 1
@@ -99,26 +104,29 @@ struct iax_frame {
        /* How long to wait before retrying */
        int retrytime;
        /* Are we received out of order?  */
-       int outoforder;
+       unsigned int outoforder:1;
        /* Have we been sent at all yet? */
-       int sentyet;
+       unsigned int sentyet:1;
+       /* Non-zero if should be sent to transfer peer */
+       unsigned int transfer:1;
+       /* Non-zero if this is the final message */
+       unsigned int final:1;
+       /* Ingress or outgres */
+       unsigned int direction:2;
+       /* Can this frame be cached? */
+       unsigned int cacheable:1;
        /* 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 iax_frame *next;
-       struct iax_frame *prev;
+       AST_LIST_ENTRY(iax_frame) list;
        /* Actual, isolated frame header */
        struct ast_frame af;
+       /*! Amount of space _allocated_ for data */
+       size_t afdatalen;
        unsigned char unused[AST_FRIENDLY_OFFSET];
        unsigned char afdata[0];        /* Data for frame */
 };
@@ -129,27 +137,27 @@ struct iax_ie_data {
 };
 
 /* Choose a different function for output */
-extern void iax_set_output(void (*output)(const char *data));
+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 iax_frame *f, struct ast_iax2_full_hdr *fhi, int rx, struct sockaddr_in *sin, int datalen);
+void iax_set_error(void (*output)(const char *data));
+void iax_showframe(struct iax_frame *f, struct ast_iax2_full_hdr *fhi, int rx, struct sockaddr_in *sin, int datalen);
 
-extern const char *iax_ie2str(int ie);
+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, 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);
-extern int iax_parse_ies(struct iax_ies *ies, unsigned char *data, int datalen);
+int iax_ie_append_raw(struct iax_ie_data *ied, unsigned char ie, const void *data, int datalen);
+int iax_ie_append_addr(struct iax_ie_data *ied, unsigned char ie, const struct sockaddr_in *sin);
+int iax_ie_append_int(struct iax_ie_data *ied, unsigned char ie, unsigned int value);
+int iax_ie_append_short(struct iax_ie_data *ied, unsigned char ie, unsigned short value);
+int iax_ie_append_str(struct iax_ie_data *ied, unsigned char ie, const char *str);
+int iax_ie_append_byte(struct iax_ie_data *ied, unsigned char ie, unsigned char dat);
+int iax_ie_append(struct iax_ie_data *ied, unsigned char ie);
+int iax_parse_ies(struct iax_ies *ies, unsigned char *data, int datalen);
 
-extern int iax_get_frames(void);
-extern int iax_get_iframes(void);
-extern int iax_get_oframes(void);
+int iax_get_frames(void);
+int iax_get_iframes(void);
+int iax_get_oframes(void);
 
-extern void iax_frame_wrap(struct iax_frame *fr, struct ast_frame *f);
-extern struct iax_frame *iax_frame_new(int direction, int datalen);
-extern void iax_frame_free(struct iax_frame *fr);
+void iax_frame_wrap(struct iax_frame *fr, struct ast_frame *f);
+struct iax_frame *iax_frame_new(int direction, int datalen, unsigned int cacheable);
+void iax_frame_free(struct iax_frame *fr);
 #endif