all: updated FSF address in GPL text
[sip-router] / lib / xcap / rls_services_parser.h
1 /* 
2  * Copyright (C) 2005 iptelorg GmbH
3  *
4  * This file is part of ser, a free SIP server.
5  *
6  * ser is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version
10  *
11  * For a license to use the ser software under conditions
12  * other than those described here, or to purchase support for this
13  * software, please contact iptel.org by e-mail at the following addresses:
14  *    info@iptel.org
15  *
16  * ser is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software
23  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
24  */
25
26 #ifndef __RLS_SERVICES_PARSER_PARSER_H
27 #define __RLS_SERVICES_PARSER_PARSER_H
28
29 #include <xcap/xml_utils.h>
30 #include <xcap/resource_lists_parser.h>
31
32 typedef struct _package_t {
33         SEQUENCE_ABLE(struct _package_t)
34         char *name;
35 } package_t;
36
37 typedef struct _packages_t {
38         SEQUENCE(package_t) package;
39 } packages_t;
40
41 typedef enum { 
42         stc_list,
43         stc_resource_list,
44 } service_content_type_t;
45
46 typedef struct _service_t {
47         SEQUENCE_ABLE(struct _service_t)
48                 
49         packages_t *packages;
50         
51         service_content_type_t content_type;
52         union {
53                 list_t *list;
54                 char *resource_list; /* uri */
55         } content;
56         
57         char *uri;
58 } service_t;
59
60 typedef struct {
61         SEQUENCE(service_t) rls_services;
62 } rls_services_t;
63
64 int parse_rls_services_xml(const char *data, int data_len, rls_services_t **dst);
65 int parse_service(const char *data, int data_len, service_t **dst);
66 void free_rls_services(rls_services_t *rl);
67 void free_service(service_t *s);
68 int read_service(xmlNode *list_node, service_t **dst);
69
70 #endif