]> git.saurik.com Git - apple/libinfo.git/commitdiff
Libinfo-517.30.1.tar.gz macos-10132 macos-10133 macos-10134 macos-10135 macos-10136 v517.30.1
authorApple <opensource@apple.com>
Thu, 12 Oct 2017 18:02:04 +0000 (18:02 +0000)
committerApple <opensource@apple.com>
Thu, 12 Oct 2017 18:02:04 +0000 (18:02 +0000)
lookup.subproj/getaddrinfo.3
lookup.subproj/libinfo.c
lookup.subproj/netdb.h

index 333fb40e934fac84f7a6d01bef713a0138c4d4ff..be60d3e13a5111871521f3d7a4270e0734b8dd7b 100644 (file)
@@ -252,9 +252,38 @@ is defined as (
 |
 .Dv AI_ADDRCONFIG
 ).
+.It Dv AI_UNUSABLE
+To override the automatic
+.Dv AI_DEFAULT
+behavior that occurs when
+.Fa ai_flags
+is zero pass
+.Dv AI_UNUSABLE
+instead of zero.
+This suppresses the implicit setting of
+.Dv AI_V4MAPPED_CFG
+and
+.Dv AI_ADDRCONFIG ,
+thereby causing unusable addresses to be included in the results.
 .El
 .El
 .Pp
+If
+.Fa ai_flags
+is zero,
+.Fn getaddrinfo
+gives the
+.Dv AI_DEFAULT
+behavior (
+.Dv AI_V4MAPPED_CFG
+|
+.Dv AI_ADDRCONFIG
+). To override this default behavior, pass any nonzero value for
+.Fa ai_flags ,
+by setting any desired flag values, or setting
+.Dv AI_UNUSABLE
+if no other flags are desired.
+.Pp
 All other elements of the
 .Li addrinfo
 structure passed via
@@ -272,7 +301,12 @@ with
 set to
 .Dv PF_UNSPEC
 and all other elements set to zero or
-.Dv NULL .
+.Dv NULL
+(which includes treating the
+.Fa ai_flags
+field as effectively zero, giving the automatic default
+.Dv AI_DEFAULT
+behavior).
 .Pp
 After a successful call to
 .Fn getaddrinfo ,
index 93921ccedd06659cf5269fce4f3544d41f015f00..e263f037486be0fa68544b74b823dd5ac0b95274 100755 (executable)
@@ -2354,6 +2354,8 @@ _getaddrinfo_internal(const char *nodename, const char *servname, const struct a
                flags = hints->ai_flags;
        }
 
+       if (flags == 0) flags = AI_DEFAULT;
+
 #ifdef CALL_TRACE
        fprintf(stderr, "-> %s %s %s %u %u %u 0x%08x %s\n", __func__, nodename, servname, family, socktype, protocol, flags, (interface == NULL) ? "" : interface);
 #endif
@@ -2631,6 +2633,8 @@ _getaddrinfo_interface_async_call(const char *nodename, const char *servname, co
                flags = hints->ai_flags;
        }
 
+       if (flags == 0) flags = AI_DEFAULT;
+
 #ifdef CALL_TRACE
        fprintf(stderr, ">> %s %s %s %u %u %u 0x%08x\n", __func__, nodename, servname, family, socktype, protocol, flags);
 #endif
index 762d465db296ac09260224cbccadfc4cee666719..ea30449e601f056b85dbc3b4685b5c34c01cc73d 100644 (file)
@@ -228,6 +228,10 @@ struct rpcent {
 /* special recommended flags for getipnodebyname */
 #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
 #define        AI_DEFAULT      (AI_V4MAPPED_CFG | AI_ADDRCONFIG)
+/* If the hints pointer is null or ai_flags is zero, getaddrinfo() automatically defaults to the AI_DEFAULT behavior.
+ * To override this default behavior, thereby causing unusable addresses to be included in the results, pass any nonzero
+ * value for ai_flags, by setting any desired flag values, or by setting AI_UNUSABLE if no other flags are desired. */
+#define        AI_UNUSABLE     0x10000000 /* return addresses even if unusable (i.e. opposite of AI_DEFAULT) */
 #endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
 
 /*