846698a185c752ddc93c2be69045618c7043ec26
[sip-router] / parser / hf.h
1 /* 
2  * $Id$ 
3  */
4
5 #ifndef HF_H
6 #define HF_H
7
8 #include "../str.h"
9
10
11 /* Header types and flags */
12 #define HDR_EOH                         -1   /* End of header found */
13 #define HDR_ERROR                0   /* Error while parsing */
14 #define HDR_VIA                  1   /* Via header field */
15 #define HDR_VIA1                 1   /* First Via header field */
16 #define HDR_VIA2          (1 <<  1)  /* only used as flag*/
17 #define HDR_TO            (1 <<  2)  /* To header field */
18 #define HDR_FROM          (1 <<  3)  /* From header field */
19 #define HDR_CSEQ          (1 <<  4)  /* CSeq header field */
20 #define HDR_CALLID        (1 <<  5)  /* Call-Id header field */
21 #define HDR_CONTACT       (1 <<  6)  /* Contact header field */
22 #define HDR_MAXFORWARDS   (1 <<  7)  /* MaxForwards header field */
23 #define HDR_ROUTE         (1 <<  8)  /* Route header field */
24 #define HDR_RECORDROUTE   (1 <<  9)  /* Record-Route header field */
25 #define HDR_CONTENTTYPE   (1 << 10)  /* Content-Type header field */
26 #define HDR_CONTENTLENGTH (1 << 11)  /* Content-Length header field */
27 #define HDR_AUTHORIZATION (1 << 12)  /* Authorization header field */
28 #define HDR_EXPIRES       (1 << 13)  /* Expires header field */
29 #define HDR_PROXYAUTH     (1 << 14)  /* Proxy-Authorization header field */
30 #define HDR_WWWAUTH       (1 << 15)  /* WWW-Authorization header field */
31 #define HDR_SUPPORTED     (1 << 16)  /* Supported header field */
32 #define HDR_REQUIRE       (1 << 17)  /* Require header field */
33 #define HDR_PROXYREQUIRE  (1 << 18)  /* Proxy-Require header field */
34 #define HDR_UNSUPPORTED   (1 << 19)  /* Unsupported header field */
35 #define HDR_ALLOW         (1 << 20)  /* Allow header field */
36 #define HDR_EVENT         (1 << 21)  /* Event header field */
37 #define HDR_OTHER         (1 << 22)  /* Some other header field */
38
39
40 /* 
41  * Format: name':' body 
42  */
43 struct hdr_field {   
44         int type;                /* Header field type */
45         str name;                /* Header field name */
46         str body;                /* Header field body */
47         void* parsed;            /* Parsed data structures */
48         struct hdr_field* next;  /* Next header field in the list */
49 };
50
51
52 /* frees a hdr_field structure,
53  * WARNING: it frees only parsed (and not name.s, body.s)
54  */
55 void clean_hdr_field(struct hdr_field* hf);
56
57
58 /* frees a hdr_field list,
59  * WARNING: frees only ->parsed and ->next
60  */
61 void free_hdr_field_lst(struct hdr_field* hf);
62
63 void dump_hdr_field( struct hdr_field* hf );
64
65 #endif /* HF_H */