GPLization banner introduced to *.[hc] files
[sip-router] / parser / parse_via.h
1 /*
2  * $Id$
3  *
4  * Copyright (C) 2001-2003 Fhg Fokus
5  *
6  * This file is part of ser, a free SIP server.
7  *
8  * ser is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version
12  *
13  * For a license to use the ser software under conditions
14  * other than those described here, or to purchase support for this
15  * software, please contact iptel.org by e-mail at the following addresses:
16  *    info@iptel.org
17  *
18  * ser is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License 
24  * along with this program; if not, write to the Free Software 
25  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
26  */
27
28
29 #ifndef PARSE_VIA_H
30 #define PARSE_VIA_H
31
32 #include "../str.h"
33
34 /* via param types
35  * WARNING: keep in sync w/ FIN_*, GEN_PARAM and PARAM_ERROR from via_parse.c
36  */
37 enum {
38         PARAM_HIDDEN=230, PARAM_TTL, PARAM_BRANCH, 
39         PARAM_MADDR, PARAM_RECEIVED, GEN_PARAM,
40         PARAM_ERROR
41 };
42
43
44 struct via_param {
45         int type;               /* Type of the parameter */
46         str name;               /* Name of the parameter */
47         str value;              /* Value of the parameter */
48         int size;               /* total size*/
49         struct via_param* next; /* Next parameter in the list */
50 };
51
52
53 /* Format: name/version/transport host:port;params comment */
54 struct via_body { 
55         int error;
56         str hdr;   /* Contains "Via" or "v" */
57         str name;
58         str version;   
59         str transport;
60         str host;
61         int port;
62         str port_str;
63         str params;
64         str comment;
65         int bsize;                    /* body size, not including hdr */
66         struct via_param* param_lst;  /* list of parameters*/
67         struct via_param* last_param; /*last via parameter, internal use*/
68
69              /* shortcuts to "important" params*/
70         struct via_param* branch;
71         struct via_param* received;
72         
73         struct via_body* next; /* pointer to next via body string if
74                                   compact via or null */
75 };
76
77
78 /*
79  * Main Via header field parser
80  */
81 char* parse_via(char* buffer, char* end, struct via_body *vb);
82
83
84 /*
85  * Free allocated memory
86  */
87 void free_via_list(struct via_body *vb);
88
89
90 #endif /* PARSE_VIA_H */