mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 18:55:19 +00:00 
			
		
		
		
	This patch adds the auto_force_rport and auto_comedia NAT options. It also converts the nat= setting to a list of comma-separated combinable options: no, force_rport, comedia, auto_force_rport, and auto_comedia. nat=yes remains as an undocumented option equal to "force_rport,comedia". The first instance of 'yes' or 'no' in the list stops parsing and overrides any previously set options. If an auto_* option is specified with its non-auto_ counterpart, the auto setting takes precedence. This patch builds upon the patch posted to ASTERISK-17860 by JIRA user pedro-garcia. (closes issue ASTERISK-17860) Review: https://reviewboard.asterisk.org/r/1698/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@354597 65c4cc65-6c06-0410-ace0-fbb531ad65f3
		
			
				
	
	
		
			90 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Asterisk -- An open source telephony toolkit.
 | |
|  *
 | |
|  * Copyright (C) 2010, Digium, Inc.
 | |
|  *
 | |
|  * See http://www.asterisk.org for more information about
 | |
|  * the Asterisk project. Please do not directly contact
 | |
|  * any of the maintainers of this project for assistance;
 | |
|  * the project provides a web site, mailing lists and IRC
 | |
|  * channels for your use.
 | |
|  *
 | |
|  * This program is free software, distributed under the terms of
 | |
|  * the GNU General Public License Version 2. See the LICENSE file
 | |
|  * at the top of the source tree.
 | |
|  */
 | |
| 
 | |
| /*!
 | |
|  * \file
 | |
|  * \brief sip utils header file
 | |
|  */
 | |
| 
 | |
| #ifndef _SIP_UTILS_H
 | |
| #define _SIP_UTILS_H
 | |
| 
 | |
| /* wrapper macro to tell whether t points to one of the sip_tech descriptors */
 | |
| #define IS_SIP_TECH(t)  ((t) == &sip_tech || (t) == &sip_tech_info)
 | |
| 
 | |
| /*!
 | |
|  * \brief converts ascii port to int representation.
 | |
|  *
 | |
|  * \arg pt[in] string that contains a port.
 | |
|  * \arg standard[in] port to return in case the port string input is NULL
 | |
|  *      or if there is a parsing error.
 | |
|  *
 | |
|  * \return An integer port representation.
 | |
|  */
 | |
| unsigned int port_str2int(const char *pt, unsigned int standard);
 | |
| 
 | |
| /*! \brief Locate closing quote in a string, skipping escaped quotes.
 | |
|  * optionally with a limit on the search.
 | |
|  * start must be past the first quote.
 | |
|  */
 | |
| const char *find_closing_quote(const char *start, const char *lim);
 | |
| 
 | |
| 
 | |
| /*! \brief Convert SIP hangup causes to Asterisk hangup causes */
 | |
| int hangup_sip2cause(int cause);
 | |
| 
 | |
| /*! \brief Convert Asterisk hangup causes to SIP codes
 | |
| \verbatim
 | |
|  Possible values from causes.h
 | |
|         AST_CAUSE_NOTDEFINED    AST_CAUSE_NORMAL        AST_CAUSE_BUSY
 | |
|         AST_CAUSE_FAILURE       AST_CAUSE_CONGESTION    AST_CAUSE_UNALLOCATED
 | |
| 
 | |
| 	In addition to these, a lot of PRI codes is defined in causes.h
 | |
| 	...should we take care of them too ?
 | |
| 
 | |
| 	Quote RFC 3398
 | |
| 
 | |
|    ISUP Cause value                        SIP response
 | |
|    ----------------                        ------------
 | |
|    1  unallocated number                   404 Not Found
 | |
|    2  no route to network                  404 Not found
 | |
|    3  no route to destination              404 Not found
 | |
|    16 normal call clearing                 --- (*)
 | |
|    17 user busy                            486 Busy here
 | |
|    18 no user responding                   408 Request Timeout
 | |
|    19 no answer from the user              480 Temporarily unavailable
 | |
|    20 subscriber absent                    480 Temporarily unavailable
 | |
|    21 call rejected                        403 Forbidden (+)
 | |
|    22 number changed (w/o diagnostic)      410 Gone
 | |
|    22 number changed (w/ diagnostic)       301 Moved Permanently
 | |
|    23 redirection to new destination       410 Gone
 | |
|    26 non-selected user clearing           404 Not Found (=)
 | |
|    27 destination out of order             502 Bad Gateway
 | |
|    28 address incomplete                   484 Address incomplete
 | |
|    29 facility rejected                    501 Not implemented
 | |
|    31 normal unspecified                   480 Temporarily unavailable
 | |
| \endverbatim
 | |
| */
 | |
| const char *hangup_cause2sip(int cause);
 | |
| 
 | |
| /*! \brief Return a string describing the force_rport value for the given flags */
 | |
| const char *force_rport_string(struct ast_flags *flags);
 | |
| 
 | |
| /*! \brief Return a string describing the comedia value for the given flags */
 | |
| const char *comedia_string(struct ast_flags *flags);
 | |
| 
 | |
| #endif
 |