7a243a0136fbd6cad61b35d1a0709c62b75ffe78
[sip-router] / msg_parser.h
1 /*
2  * $Id$
3  */
4
5 #ifndef msg_parser_h
6 #define msg_parser_h
7
8
9 #define SIP_REQUEST 1
10 #define SIP_REPLY   2
11 #define SIP_INVALID 0
12
13
14 #define HDR_ERROR 0
15 /* end of header */
16 #define HDR_EOH   -1
17 #define HDR_OTHER 1
18 #define HDR_VIA   2
19 #define HDR_TO    3
20
21 #define VIA_PARSE_OK    1
22 #define VIA_PARSE_ERROR -1
23
24 #define SIP_VERSION     "SIP/2.0"
25
26
27 struct msg_start{
28         int type;
29         union {
30                 struct {
31                         char* method;
32                         char* uri;
33                         char* version;
34                 }request;
35                 struct {
36                         char* version;
37                         char* status;
38                         char* reason;
39                 }reply;
40         }u;
41 };
42
43 struct hdr_field{   /* format: name':' body */
44         int type;
45         char* name;
46         char* body;
47 };
48
49 struct via_body{  /* format: name/version/transport host:port;params comment */
50         int error;
51         char* name;
52         char* version;
53         char* transport;
54         char* host;
55         int port;
56         char* params;
57         char* comment;
58         char* next; /* pointer to next via body string if compact via or null */
59 };
60
61
62
63 char* parse_first_line(char* buffer, unsigned int len, struct msg_start * fl);
64 char* get_hdr_field(char *buffer, unsigned int len, struct hdr_field*  hdr_f);
65 int field_name(char *s);
66 char* parse_hostport(char* buf, char** host, short int* port);
67 char* parse_via_body(char* buffer,unsigned int len, struct via_body * vb);
68
69
70
71
72
73 #endif
74  
75