cb8f52928240bd7a3cf9a3818898bf7b94685e37
[kamailio] / src / modules / lost / utilities.h
1 /*
2  * lost module utility functions
3  *
4  * Copyright (C) 2019 Wolfgang Kampichler
5  * DEC112, FREQUENTIS AG
6  *
7  * This file is part of Kamailio, a free SIP server.
8  *
9  * Kamailio is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version
13  *
14  * Kamailio is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
22  *
23  */
24
25 /*!
26  * \file
27  * \brief Kamailio lost :: functions
28  * \ingroup lost
29  * Module: \ref lost
30  */
31
32 #ifndef LOST_UTILITIES_H
33 #define LOST_UTILITIES_H
34
35 #define LOST_GEOLOC_HEADER "Geolocation: "
36 #define LOST_GEOLOC_HEADER_SIZE strlen(LOST_GEOLOC_HEADER)
37 #define LOST_PAI_HEADER "P-Asserted-Identity: "
38 #define LOST_PAI_HEADER_SIZE strlen(LOST_PAI_HEADER)
39
40 #define BUFSIZE 128     /* temporary buffer to hold geolocation */
41 #define RANDSTRSIZE 16 /* temporary id in a findService request */
42
43 #define LOSTFREE(x) pkg_free(x); x = NULL;
44
45 typedef struct
46 {
47         char *identity;
48         char *urn;
49         char *longitude;
50         char *latitude;
51         char *uri;
52         char *ref;
53         int radius;
54         int recursive;
55 } s_loc_t, *p_loc_t;
56
57 void lost_rand_str(char *, size_t);
58 void lost_free_loc(p_loc_t);
59 void lost_free_string(str *);
60
61 int lost_get_location_object(p_loc_t, xmlDocPtr, xmlNodePtr);
62 int lost_parse_location_info(xmlNodePtr node, p_loc_t loc);
63
64 char *lost_find_service_request(p_loc_t, int *);
65 char *lost_held_location_request(char *, int *);
66 char *lost_get_content(xmlNodePtr, const char *, int *);
67 char *lost_get_property(xmlNodePtr, const char *, int *);
68 char *lost_get_geolocation_header(struct sip_msg *, int *);
69 char *lost_get_from_header(struct sip_msg *, int *);
70 char *lost_get_pai_header(struct sip_msg *, int *);
71 char *lost_get_childname(xmlNodePtr, const char *, int *);
72 char *lost_trim_content(char *, int *);
73
74 p_loc_t lost_new_loc(str);
75
76 #endif