[asterisk-commits] seanbright: branch seanbright/the_ipv6ification_of_chan_iax2_by_the_coward_se...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Feb 27 16:36:16 CST 2012
Author: seanbright
Date: Mon Feb 27 16:36:12 2012
New Revision: 357092
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=357092
Log:
On second thought, this is full of fail. ast_sockaddr_set_port is a noop unless
the family is known, so give this some more thought.
Modified:
team/seanbright/the_ipv6ification_of_chan_iax2_by_the_coward_sean_bright/channels/chan_iax2.c
Modified: team/seanbright/the_ipv6ification_of_chan_iax2_by_the_coward_sean_bright/channels/chan_iax2.c
URL: http://svnview.digium.com/svn/asterisk/team/seanbright/the_ipv6ification_of_chan_iax2_by_the_coward_sean_bright/channels/chan_iax2.c?view=diff&rev=357092&r1=357091&r2=357092
==============================================================================
--- team/seanbright/the_ipv6ification_of_chan_iax2_by_the_coward_sean_bright/channels/chan_iax2.c (original)
+++ team/seanbright/the_ipv6ification_of_chan_iax2_by_the_coward_sean_bright/channels/chan_iax2.c Mon Feb 27 16:36:12 2012
@@ -517,7 +517,7 @@
uint64_t flags;
/* Dynamic Registration fields */
- struct ast_sockaddr defaddr; /*!< Default address if there is one */
+ struct sockaddr_in defaddr; /*!< Default address if there is one */
int authmethods; /*!< Authentication methods (IAX_AUTH_*) */
int encmethods; /*!< Encryption methods (IAX_ENCRYPT_*) */
@@ -3784,7 +3784,7 @@
ast_cli(a->fd, " Expire : %d\n", peer->expire);
ast_cli(a->fd, " ACL : %s\n", (peer->ha ? "Yes" : "No"));
ast_cli(a->fd, " Addr->IP : %s Port %d\n", peer_addr.sin_addr.s_addr ? ast_inet_ntoa(peer_addr.sin_addr) : "(Unspecified)", ntohs(peer_addr.sin_port));
- ast_cli(a->fd, " Defaddr->IP : %s Port %s\n", ast_sockaddr_stringify_addr(&peer->defaddr), ast_sockaddr_stringify_port(&peer->defaddr));
+ ast_cli(a->fd, " Defaddr->IP : %s Port %d\n", ast_inet_ntoa(peer->defaddr.sin_addr), ntohs(peer->defaddr.sin_port));
ast_cli(a->fd, " Username : %s\n", peer->username);
ast_cli(a->fd, " Codecs : ");
iax2_getformatname_multiple(codec_buf, sizeof(codec_buf) -1, peer->capability);
@@ -4593,7 +4593,7 @@
ast_sockaddr_to_sin(&peer->addr, &peer_addr);
/* if the peer has no address (current or default), return failure */
- if (!(peer_addr.sin_addr.s_addr || !ast_sockaddr_isnull(&peer->defaddr))) {
+ if (!(peer_addr.sin_addr.s_addr || peer->defaddr.sin_addr.s_addr)) {
goto return_unref;
}
@@ -4648,7 +4648,8 @@
sin->sin_addr = peer_addr.sin_addr;
sin->sin_port = peer_addr.sin_port;
} else {
- ast_sockaddr_to_sin(&peer->defaddr, sin);
+ sin->sin_addr = peer->defaddr.sin_addr;
+ sin->sin_port = peer->defaddr.sin_port;
}
res = 0;
@@ -12523,7 +12524,7 @@
/* Initialize stuff iff we're not found, otherwise
we keep going with what we had */
if (ast_sockaddr_port(&peer->addr)) {
- ast_sockaddr_set_port(&peer->defaddr, ast_sockaddr_port(&peer->addr));
+ peer->defaddr.sin_port = htons(ast_sockaddr_port(&peer->addr));
}
ast_sockaddr_setnull(&peer->addr);
}
@@ -12540,11 +12541,14 @@
if (!maskfound)
inet_aton("255.255.255.255", &peer->mask);
} else if (!strcasecmp(v->name, "defaultip")) {
- ast_sockaddr_setnull(&peer->defaddr);
- /* SRB: How do we want to handle this? Could be v4 or v6 */
- if (ast_get_ip(&peer->defaddr, v->value)) {
+ struct ast_sockaddr peer_defaddr_tmp;
+
+ peer_defaddr_tmp.ss.ss_family = AF_INET;
+ if (ast_get_ip(&peer_defaddr_tmp, v->value)) {
return peer_unref(peer);
}
+ ast_sockaddr_to_sin(&peer_defaddr_tmp,
+ &peer->defaddr);
} else if (!strcasecmp(v->name, "sourceaddress")) {
peer_set_srcaddr(peer, v->value);
} else if (!strcasecmp(v->name, "permit") ||
@@ -12561,7 +12565,7 @@
ast_string_field_set(peer, peercontext, v->value);
} else if (!strcasecmp(v->name, "port")) {
if (ast_test_flag64(peer, IAX_DYNAMIC)) {
- ast_sockaddr_set_port(&peer->defaddr, atoi(v->value));
+ peer->defaddr.sin_port = htons(atoi(v->value));
} else {
ast_sockaddr_set_port(&peer->addr, atoi(v->value));
}
@@ -14030,10 +14034,10 @@
return res;
res = AST_DEVICE_UNAVAILABLE;
- ast_debug(3, "iax2_devicestate: Found peer. What's device state of %s? addr=%d, defaddr=%s maxms=%d, lastms=%d\n",
- pds.peer, ast_sockaddr_ipv4(&p->addr), ast_sockaddr_stringify_addr(&p->defaddr), p->maxms, p->lastms);
-
- if ((ast_sockaddr_ipv4(&p->addr) || !ast_sockaddr_isnull(&p->defaddr)) &&
+ ast_debug(3, "iax2_devicestate: Found peer. What's device state of %s? addr=%d, defaddr=%d maxms=%d, lastms=%d\n",
+ pds.peer, ast_sockaddr_ipv4(&p->addr), p->defaddr.sin_addr.s_addr, p->maxms, p->lastms);
+
+ if ((ast_sockaddr_ipv4(&p->addr) || p->defaddr.sin_addr.s_addr) &&
(!p->maxms || ((p->lastms > -1) && (p->historicms <= p->maxms)))) {
/* Peer is registered, or have default IP address
and a valid registration */
More information about the asterisk-commits
mailing list