diff options
author | Mark Spencer <markster@digium.com> | 2000-12-27 13:38:58 +0000 |
---|---|---|
committer | Mark Spencer <markster@digium.com> | 2000-12-27 13:38:58 +0000 |
commit | 4e8bcf1af1c9cc9a7c153b12f36eb882f4d71650 (patch) | |
tree | 839272f3337c3928c3509acbcd83826a23d59c93 /channels/chan_iax.c | |
parent | ce46416cb31f2571fc2de3a1962357718732b655 (diff) |
Version 0.1.6 from FTP
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@224 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_iax.c')
-rwxr-xr-x | channels/chan_iax.c | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/channels/chan_iax.c b/channels/chan_iax.c index 010dbffa0..77f855729 100755 --- a/channels/chan_iax.c +++ b/channels/chan_iax.c @@ -127,6 +127,15 @@ struct iax_peer { struct sockaddr_in addr; int formats; struct in_addr mask; + + /* Dynamic Registration fields */ + int dynamic; + struct sockaddr_in defaddr; + char regsecret[80]; + char methods[80]; + struct timeval nexpire; + int expire; + struct iax_ha *ha; struct iax_peer *next; }; @@ -2038,16 +2047,23 @@ static struct iax_peer *build_peer(char *name, struct ast_variable *v) if (!strcasecmp(v->name, "secret")) strncpy(peer->secret, v->value, sizeof(peer->secret)); else if (!strcasecmp(v->name, "host")) { - hp = gethostbyname(v->value); - if (hp) { - memcpy(&peer->addr.sin_addr, hp->h_addr, sizeof(peer->addr.sin_addr)); + if (!strcasecmp(v->value, "dynamic")) { + /* They'll register with us */ + peer->dynamic = 1; + memset(&peer->addr.sin_addr, 0, 4); } else { - ast_log(LOG_WARNING, "Unable to lookup '%s'\n", v->value); - free(peer); - return NULL; + peer->dynamic = 0; + hp = gethostbyname(v->value); + if (hp) { + memcpy(&peer->addr.sin_addr, hp->h_addr, sizeof(peer->addr.sin_addr)); + } else { + ast_log(LOG_WARNING, "Unable to lookup '%s'\n", v->value); + free(peer); + return NULL; + } + if (!maskfound) + inet_aton("255.255.255.255", &peer->mask); } - if (!maskfound) - inet_aton("255.255.255.255", &peer->mask); } else if (!strcasecmp(v->name, "mask")) { maskfound++; |