diff options
-rw-r--r-- | channels/chan_gtalk.c | 4 | ||||
-rw-r--r-- | channels/chan_h323.c | 2 | ||||
-rw-r--r-- | channels/chan_jingle.c | 10 | ||||
-rw-r--r-- | channels/chan_sip.c | 2 | ||||
-rw-r--r-- | include/asterisk/acl.h | 4 | ||||
-rw-r--r-- | main/acl.c | 4 |
6 files changed, 15 insertions, 11 deletions
diff --git a/channels/chan_gtalk.c b/channels/chan_gtalk.c index 326ea7035..36ef90307 100644 --- a/channels/chan_gtalk.c +++ b/channels/chan_gtalk.c @@ -859,7 +859,7 @@ static int gtalk_create_candidates(struct gtalk *client, struct gtalk_pvt *p, ch ast_rtp_instance_get_local_address(p->rtp, &sin_tmp); ast_sockaddr_to_sin(&sin_tmp, &sin); ast_sockaddr_from_sin(&bindaddr_tmp, &bindaddr); - ast_find_ourip(&us, &bindaddr_tmp); + ast_find_ourip(&us, &bindaddr_tmp, AF_INET); if (!strcmp(ast_sockaddr_stringify_addr(&us), "127.0.0.1")) { ast_log(LOG_WARNING, "Found a loopback IP on the system, check your network configuration or set the bindaddr attribute."); } @@ -2217,7 +2217,7 @@ static int load_module(void) } ast_sockaddr_from_sin(&bindaddr_tmp, &bindaddr); - if (ast_find_ourip(&ourip_tmp, &bindaddr_tmp)) { + if (ast_find_ourip(&ourip_tmp, &bindaddr_tmp, AF_INET)) { ast_log(LOG_WARNING, "Unable to get own IP address, Gtalk disabled\n"); return 0; } diff --git a/channels/chan_h323.c b/channels/chan_h323.c index 2362d9a49..89b452dbc 100644 --- a/channels/chan_h323.c +++ b/channels/chan_h323.c @@ -965,7 +965,7 @@ static int __oh323_rtp_create(struct oh323_pvt *pvt) struct ast_sockaddr tmp; ast_sockaddr_from_sin(&tmp, &bindaddr); - if (ast_find_ourip(&our_addr, &tmp)) { + if (ast_find_ourip(&our_addr, &tmp, AF_INET)) { ast_mutex_unlock(&pvt->lock); ast_log(LOG_ERROR, "Unable to locate local IP address for RTP stream\n"); return -1; diff --git a/channels/chan_jingle.c b/channels/chan_jingle.c index 25b4d7e45..c12704835 100644 --- a/channels/chan_jingle.c +++ b/channels/chan_jingle.c @@ -623,7 +623,7 @@ static int jingle_create_candidates(struct jingle *client, struct jingle_pvt *p, ast_rtp_instance_get_local_address(p->rtp, &sin_tmp); ast_sockaddr_to_sin(&sin_tmp, &sin); ast_sockaddr_from_sin(&bindaddr_tmp, &bindaddr); - ast_find_ourip(&us_tmp, &bindaddr_tmp); + ast_find_ourip(&us_tmp, &bindaddr_tmp, AF_INET); us.s_addr = htonl(ast_sockaddr_ipv4(&us_tmp)); /* Setup our first jingle candidate */ @@ -1904,15 +1904,17 @@ static int load_module(void) } sched = sched_context_create(); - if (!sched) + if (!sched) { ast_log(LOG_WARNING, "Unable to create schedule context\n"); + } io = io_context_create(); - if (!io) + if (!io) { ast_log(LOG_WARNING, "Unable to create I/O context\n"); + } ast_sockaddr_from_sin(&bindaddr_tmp, &bindaddr); - if (ast_find_ourip(&ourip_tmp, &bindaddr_tmp)) { + if (ast_find_ourip(&ourip_tmp, &bindaddr_tmp, AF_INET)) { ast_log(LOG_WARNING, "Unable to get own IP address, Jingle disabled\n"); return 0; } diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 58e3f5c4f..302ca35a1 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -27086,7 +27086,7 @@ static int reload_config(enum channelreloadreason reason) /* Set UDP address and open socket */ ast_sockaddr_copy(&internip, &bindaddr); - if (ast_find_ourip(&internip, &bindaddr)) { + if (ast_find_ourip(&internip, &bindaddr, 0)) { ast_log(LOG_WARNING, "Unable to get own IP address, SIP disabled\n"); ast_config_destroy(cfg); return 0; diff --git a/include/asterisk/acl.h b/include/asterisk/acl.h index a8c311cb2..86053f431 100644 --- a/include/asterisk/acl.h +++ b/include/asterisk/acl.h @@ -220,10 +220,12 @@ struct ast_ha *ast_duplicate_ha_list(struct ast_ha *original); * \param[out] ourip Our IP address is written here when it is found * \param bindaddr A hint used for finding our IP. See the steps above for * more details + * \param family Only addresses of the given family will be returned. Use 0 + * or AST_SOCKADDR_UNSPEC to get addresses of all families. * \retval 0 Success * \retval -1 Failure */ -int ast_find_ourip(struct ast_sockaddr *ourip, const struct ast_sockaddr *bindaddr); +int ast_find_ourip(struct ast_sockaddr *ourip, const struct ast_sockaddr *bindaddr, int family); /*! * \brief Convert a string to the appropriate COS value diff --git a/main/acl.c b/main/acl.c index 1ca0cc0bd..dcbc3a965 100644 --- a/main/acl.c +++ b/main/acl.c @@ -720,7 +720,7 @@ int ast_ouraddrfor(const struct ast_sockaddr *them, struct ast_sockaddr *us) return 0; } -int ast_find_ourip(struct ast_sockaddr *ourip, const struct ast_sockaddr *bindaddr) +int ast_find_ourip(struct ast_sockaddr *ourip, const struct ast_sockaddr *bindaddr, int family) { char ourhost[MAXHOSTNAMELEN] = ""; struct ast_sockaddr root; @@ -735,7 +735,7 @@ int ast_find_ourip(struct ast_sockaddr *ourip, const struct ast_sockaddr *bindad if (gethostname(ourhost, sizeof(ourhost) - 1)) { ast_log(LOG_WARNING, "Unable to get hostname\n"); } else { - if (resolve_first(ourip, ourhost, PARSE_PORT_FORBID, 0) == 0) { + if (resolve_first(ourip, ourhost, PARSE_PORT_FORBID, family) == 0) { return 0; } } |