mirror of
https://github.com/libretro/RetroArch.git
synced 2025-02-14 22:47:44 +00:00
Network: Only use a single interface for UPnP
This commit is contained in:
parent
9f01ebf0a9
commit
6f60ee9b6e
@ -34,13 +34,13 @@ struct natt_status
|
||||
{
|
||||
/* True if we've resolved an external IPv4 address */
|
||||
bool have_inet4;
|
||||
/* External IPv4 address */
|
||||
struct sockaddr_in ext_inet4_addr;
|
||||
|
||||
#if defined(AF_INET6) && !defined(HAVE_SOCKET_LEGACY) && !defined(_3DS)
|
||||
/* True if we've resolved an external IPv6 address */
|
||||
bool have_inet6;
|
||||
|
||||
/** External IPv4 address */
|
||||
struct sockaddr_in ext_inet4_addr;
|
||||
#if defined(AF_INET6) && !defined(HAVE_SOCKET_LEGACY) && !defined(_3DS)
|
||||
/** External IPv6 address */
|
||||
/* External IPv6 address */
|
||||
struct sockaddr_in6 ext_inet6_addr;
|
||||
#endif
|
||||
};
|
||||
|
@ -173,7 +173,7 @@ static bool natt_open_port(struct natt_status *status,
|
||||
memcpy(&status->ext_inet4_addr, ext_addrinfo->ai_addr,
|
||||
sizeof(status->ext_inet4_addr));
|
||||
}
|
||||
#if defined(AF_INET6) && !defined(HAVE_SOCKET_LEGACY)
|
||||
#if defined(AF_INET6) && !defined(_3DS)
|
||||
else if (ext_addrinfo->ai_family == AF_INET6 &&
|
||||
ext_addrinfo->ai_addrlen >= sizeof(status->ext_inet6_addr))
|
||||
{
|
||||
@ -212,7 +212,6 @@ bool natt_open_port_any(struct natt_status *status,
|
||||
struct addrinfo *addr;
|
||||
char port_str[6];
|
||||
struct addrinfo hints = {0};
|
||||
bool ret = false;
|
||||
|
||||
/* get our interfaces */
|
||||
if (!net_ifinfo_new(&list))
|
||||
@ -225,8 +224,11 @@ bool natt_open_port_any(struct natt_status *status,
|
||||
struct net_ifinfo_entry *entry = &list.entries[i];
|
||||
|
||||
/* ignore localhost */
|
||||
if (string_is_equal(entry->host, "127.0.0.1") ||
|
||||
string_is_equal(entry->host, "::1"))
|
||||
if (string_is_equal(entry->host, "127.0.0.1"))
|
||||
continue;
|
||||
|
||||
/* ignore IPv6 for now */
|
||||
if (strchr(entry->host, ':'))
|
||||
continue;
|
||||
|
||||
addr = NULL;
|
||||
@ -237,17 +239,20 @@ bool natt_open_port_any(struct natt_status *status,
|
||||
/* make a request for this host */
|
||||
if (natt_open_port(status, addr->ai_addr, addr->ai_addrlen,
|
||||
proto))
|
||||
ret = true;
|
||||
{
|
||||
freeaddrinfo_retro(addr);
|
||||
net_ifinfo_free(&list);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
freeaddrinfo_retro(addr);
|
||||
}
|
||||
|
||||
net_ifinfo_free(&list);
|
||||
|
||||
return ret;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool natt_close_port(struct natt_status *status,
|
||||
@ -272,11 +277,13 @@ bool natt_close_port(struct natt_status *status,
|
||||
addr = (struct sockaddr *) &status->ext_inet4_addr;
|
||||
addrlen = sizeof(status->ext_inet4_addr);
|
||||
}
|
||||
#if defined(AF_INET6) && !defined(_3DS)
|
||||
else if (status->have_inet6)
|
||||
{
|
||||
addr = (struct sockaddr *) &status->ext_inet6_addr;
|
||||
addrlen = sizeof(status->ext_inet6_addr);
|
||||
}
|
||||
#endif
|
||||
else
|
||||
return false;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user