summaryrefslogtreecommitdiff
path: root/channels/sip/include
diff options
context:
space:
mode:
Diffstat (limited to 'channels/sip/include')
-rw-r--r--channels/sip/include/config_parser.h12
-rw-r--r--channels/sip/include/sip.h5
-rw-r--r--channels/sip/include/sip_utils.h6
3 files changed, 22 insertions, 1 deletions
diff --git a/channels/sip/include/config_parser.h b/channels/sip/include/config_parser.h
index 76fefc2c6..2737016e6 100644
--- a/channels/sip/include/config_parser.h
+++ b/channels/sip/include/config_parser.h
@@ -43,6 +43,18 @@ int sip_parse_register_line(struct sip_registry *reg, int default_expiry, const
*/
int sip_parse_host(char *line, int lineno, char **hostname, int *portnum, enum sip_transport *transport);
+/*! \brief Parse the comma-separated nat= option values
+ * \param value The comma-separated value
+ * \param mask An array of ast_flags that will be set by this function
+ * and used as a mask for copying the flags later
+ * \param flags An array of ast_flags that will be set by this function
+ *
+ * \note The nat-related values in both mask and flags are assumed to empty. This function
+ * will treat the first "yes" or "no" value in a list of values as overiding all other values
+ * and will stop parsing. Auto values will override their non-auto counterparts.
+ */
+void sip_parse_nat_option(const char *value, struct ast_flags *mask, struct ast_flags *flags);
+
/*!
* \brief register config parsing tests
*/
diff --git a/channels/sip/include/sip.h b/channels/sip/include/sip.h
index d5de40d9c..0ae8be8f8 100644
--- a/channels/sip/include/sip.h
+++ b/channels/sip/include/sip.h
@@ -363,9 +363,11 @@
#define SIP_PAGE3_SNOM_AOC (1 << 0) /*!< DPG: Allow snom aoc messages */
#define SIP_PAGE3_SRTP_TAG_32 (1 << 1) /*!< DP: Use a 32bit auth tag in INVITE not 80bit */
+#define SIP_PAGE3_NAT_AUTO_RPORT (1 << 2) /*!< DGP: Set SIP_NAT_FORCE_RPORT when NAT is detected */
+#define SIP_PAGE3_NAT_AUTO_COMEDIA (1 << 3) /*!< DGP: Set SIP_PAGE2_SYMMETRICRTP when NAT is detected */
#define SIP_PAGE3_FLAGS_TO_COPY \
- (SIP_PAGE3_SNOM_AOC | SIP_PAGE3_SRTP_TAG_32)
+ (SIP_PAGE3_SNOM_AOC | SIP_PAGE3_SRTP_TAG_32 | SIP_PAGE3_NAT_AUTO_RPORT | SIP_PAGE3_NAT_AUTO_COMEDIA)
#define CHECK_AUTH_BUF_INITLEN 256
@@ -1062,6 +1064,7 @@ struct sip_pvt {
* for incoming calls
*/
unsigned short req_secure_signaling:1;/*!< Whether we are required to have secure signaling or not */
+ unsigned short natdetected:1; /*!< Whether we detected a NAT when processing the Via */
char tag[11]; /*!< Our tag for this session */
int timer_t1; /*!< SIP timer T1, ms rtt */
int timer_b; /*!< SIP timer B, ms */
diff --git a/channels/sip/include/sip_utils.h b/channels/sip/include/sip_utils.h
index 47297ab68..01207e774 100644
--- a/channels/sip/include/sip_utils.h
+++ b/channels/sip/include/sip_utils.h
@@ -80,4 +80,10 @@ int hangup_sip2cause(int cause);
*/
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