Skip to content
Snippets Groups Projects
Commit e583dca9 authored by Joshua Colp's avatar Joshua Colp
Browse files

res_pjsip_endpoint_identifier_ip: Accept hostnames in the 'match' field.

Hostnames specified in the 'match' field will be resolved and all addresses
returned. Each address will be added to the endpoint identifier for the
matching process.

Reported by: Rob Thomas
........

Merged revisions 404613 from http://svn.asterisk.org/svn/asterisk/branches/12


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@404620 65c4cc65-6c06-0410-ace0-fbb531ad65f3
parent bb30b224
No related branches found
No related tags found
No related merge requests found
......@@ -156,13 +156,30 @@ static struct ast_sip_endpoint_identifier ip_identifier = {
static int ip_identify_match_handler(const struct aco_option *opt, struct ast_variable *var, void *obj)
{
struct ip_identify_match *identify = obj;
int error = 0;
int num_addrs = 0, error = 0, i;
struct ast_sockaddr *addrs;
/* We deny what we actually want to match because there is an implicit permit all rule for ACLs */
if (!(identify->matches = ast_append_ha("d", var->value, identify->matches, &error))) {
num_addrs = ast_sockaddr_resolve(&addrs, var->value, PARSE_PORT_FORBID, AST_AF_UNSPEC);
if (!num_addrs) {
ast_log(LOG_ERROR, "Address '%s' provided on ip endpoint identifier '%s' did not resolve to any address\n",
var->value, ast_sorcery_object_get_id(obj));
return -1;
}
for (i = 0; i < num_addrs; ++i) {
/* We deny what we actually want to match because there is an implicit permit all rule for ACLs */
identify->matches = ast_append_ha("d", ast_sockaddr_stringify_addr(&addrs[i]), identify->matches, &error);
if (!identify->matches || error) {
ast_log(LOG_ERROR, "Failed to add address '%s' to ip endpoint identifier '%s'\n",
ast_sockaddr_stringify_addr(&addrs[i]), ast_sorcery_object_get_id(obj));
error = -1;
break;
}
}
ast_free(addrs);
return error;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment