Introduce FEATURE_PREFER_IPV4_ADDRESS. If selected, we have:
function old new delta str2sockaddr 328 344 +16
This commit is contained in:
parent
8d0a734d91
commit
9d6c46955f
@ -125,6 +125,7 @@ USE_FEATURE_IPV6(sa_family_t af,)
|
|||||||
int rc;
|
int rc;
|
||||||
len_and_sockaddr *r = NULL;
|
len_and_sockaddr *r = NULL;
|
||||||
struct addrinfo *result = NULL;
|
struct addrinfo *result = NULL;
|
||||||
|
struct addrinfo *used_res;
|
||||||
const char *org_host = host; /* only for error msg */
|
const char *org_host = host; /* only for error msg */
|
||||||
const char *cp;
|
const char *cp;
|
||||||
struct addrinfo hint;
|
struct addrinfo hint;
|
||||||
@ -169,9 +170,21 @@ USE_FEATURE_IPV6(sa_family_t af,)
|
|||||||
xfunc_die();
|
xfunc_die();
|
||||||
goto ret;
|
goto ret;
|
||||||
}
|
}
|
||||||
r = xmalloc(offsetof(len_and_sockaddr, sa) + result->ai_addrlen);
|
used_res = result;
|
||||||
r->len = result->ai_addrlen;
|
#if ENABLE_FEATURE_PREFER_IPV4_ADDRESS
|
||||||
memcpy(&r->sa, result->ai_addr, result->ai_addrlen);
|
while (1) {
|
||||||
|
if (used_res->ai_family == AF_INET)
|
||||||
|
break;
|
||||||
|
used_res = used_res->ai_next;
|
||||||
|
if (!used_res) {
|
||||||
|
used_res = result;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
r = xmalloc(offsetof(len_and_sockaddr, sa) + used_res->ai_addrlen);
|
||||||
|
r->len = used_res->ai_addrlen;
|
||||||
|
memcpy(&r->sa, used_res->ai_addr, used_res->ai_addrlen);
|
||||||
set_nport(r, htons(port));
|
set_nport(r, htons(port));
|
||||||
ret:
|
ret:
|
||||||
freeaddrinfo(result);
|
freeaddrinfo(result);
|
||||||
|
@ -12,6 +12,21 @@ config FEATURE_IPV6
|
|||||||
Enable IPv6 support in busybox.
|
Enable IPv6 support in busybox.
|
||||||
This adds IPv6 support in the networking applets.
|
This adds IPv6 support in the networking applets.
|
||||||
|
|
||||||
|
config FEATURE_PREFER_IPV4_ADDRESS
|
||||||
|
bool "Preferentially use IPv4 addresses from DNS queries"
|
||||||
|
default y
|
||||||
|
depends on FEATURE_IPV6
|
||||||
|
help
|
||||||
|
Use IPv4 address of network host if it has one.
|
||||||
|
|
||||||
|
If this option is off, the first returned address will be used.
|
||||||
|
This may cause problems when your DNS server is IPv6-capable and
|
||||||
|
is returning IPv6 host addresses too. If IPv6 address
|
||||||
|
precedes IPv4 one in DNS reply, busybox network applets
|
||||||
|
(e.g. wget) will use IPv6 address. On an IPv6-incapable host
|
||||||
|
or network applets will fail to connect to the host
|
||||||
|
using IPv6 address.
|
||||||
|
|
||||||
config VERBOSE_RESOLUTION_ERRORS
|
config VERBOSE_RESOLUTION_ERRORS
|
||||||
bool "Verbose resolution errors"
|
bool "Verbose resolution errors"
|
||||||
default n
|
default n
|
||||||
|
Loading…
Reference in New Issue
Block a user