e724c98ddab412540d72451b0d828eba7c70f112
[asterisk/asterisk.git] / channels / sip / include / reqresp_parser.h
1 /*
2  * Asterisk -- An open source telephony toolkit.
3  *
4  * Copyright (C) 2010, Digium, Inc.
5  *
6  * See http://www.asterisk.org for more information about
7  * the Asterisk project. Please do not directly contact
8  * any of the maintainers of this project for assistance;
9  * the project provides a web site, mailing lists and IRC
10  * channels for your use.
11  *
12  * This program is free software, distributed under the terms of
13  * the GNU General Public License Version 2. See the LICENSE file
14  * at the top of the source tree.
15  */
16
17 /*!
18  * \file
19  * \brief sip request response parser header file
20  */
21
22 #ifndef _SIP_REQRESP_H
23 #define _SIP_REQRESP_H
24
25 /*!
26  * \brief parses a URI in its components.
27  *
28  * \note
29  * - Multiple scheme's can be specified ',' delimited. ex: "sip:,sips:"
30  * - If a component is not requested, do not split around it. This means
31  *   that if we don't have domain, we cannot split name:pass and domain:port.
32  * - It is safe to call with ret_name, pass, domain, port pointing all to
33  *   the same place.
34  * - If no secret parameter is provided, ret_name will return with both parts, user:secret
35  * - If no port parameter is provided, domain will return with both parts, domain:port
36  * - This function overwrites the the uri string.
37  * 
38  * \retval 0 on success
39  * \retval -1 on error.
40  *
41  * \verbatim
42  * general form we are expecting is sip:user:password;user-parameters@host:port;uri-parameters?headers
43  * \endverbatim
44  */
45 int parse_uri(char *uri, const char *scheme, char **ret_name, char **pass, char **domain, char **port, char **transport);
46
47 /*!
48  * \brief  Get caller id name from SIP headers, copy into output buffer
49  *
50  * \retval input string pointer placed after display-name field if possible
51  */
52 const char *get_calleridname(const char *input, char *output, size_t outputsize);
53
54 /*!
55  * \brief register request parsing tests
56  */
57 void sip_request_parser_register_tests(void);
58
59 /*!
60  * \brief unregister request parsing tests
61  */
62 void sip_request_parser_unregister_tests(void);
63
64 #endif