miniupnpd/upnputils.c: sockaddr_to_string() includes scope in IPv6 addresses

This commit is contained in:
Thomas Bernard 2014-11-07 12:54:33 +01:00
parent 8271eb91b3
commit bfab1e2094
2 changed files with 13 additions and 3 deletions

View File

@ -1,4 +1,7 @@
$Id: Changelog.txt,v 1.382 2014/10/27 16:35:42 nanard Exp $
$Id: Changelog.txt,v 1.383 2014/11/07 11:53:37 nanard Exp $
2014/11/07:
sockaddr_to_string() includes scope in IPv6 addresses
VERSION 1.9 : released on 2014/10/27

View File

@ -1,4 +1,4 @@
/* $Id: upnputils.c,v 1.8 2014/02/05 17:00:26 nanard Exp $ */
/* $Id: upnputils.c,v 1.10 2014/11/07 11:53:39 nanard Exp $ */
/* MiniUPnP project
* http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
* (c) 2006-2014 Thomas Bernard
@ -44,7 +44,14 @@ sockaddr_to_string(const struct sockaddr * addr, char * str, size_t size)
snprintf(buffer, sizeof(buffer), "inet_ntop: %s", strerror(errno));
}
port = ntohs(((struct sockaddr_in6 *)addr)->sin6_port);
n = snprintf(str, size, "[%s]:%hu", buffer, port);
if(((struct sockaddr_in6 *)addr)->sin6_scope_id > 0) {
char ifname[IF_NAMESIZE];
if(if_indextoname(((struct sockaddr_in6 *)addr)->sin6_scope_id, ifname) == NULL)
strncpy(ifname, "ERROR", sizeof(ifname));
n = snprintf(str, size, "[%s%%%s]:%hu", buffer, ifname, port);
} else {
n = snprintf(str, size, "[%s]:%hu", buffer, port);
}
break;
#endif /* AF_INET6 */
case AF_INET: