PERFORCE change 100641 for review
Michael Bushkov
bushman at FreeBSD.org
Wed Jul 5 17:14:19 UTC 2006
http://perforce.freebsd.org/chv.cgi?CH=100641
Change 100641 by bushman at bushman_nss_ldap_cached on 2006/07/05 17:13:38
Minor fix in testuil.h; gethostby***() test finished. It was extended to support the getipnode**() functions testing, IPv4, IPv6 and IPv4-to-IPv6 mapped requests.
Affected files ...
.. //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/Makefile#6 edit
.. //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/mach#1 add
.. //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/test-getgr.c#4 edit
.. //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/test-getgr.t#2 edit
.. //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/test-gethostby.c#3 edit
.. //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/test-gethostby.t#3 edit
.. //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/test-getpw.c#4 edit
.. //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/test-getpw.t#2 edit
.. //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/test-getserv.c#6 edit
.. //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/test-getserv.t#5 edit
.. //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/testutil.h#7 edit
Differences ...
==== //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/Makefile#6 (text+ko) ====
==== //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/test-getgr.c#4 (text+ko) ====
==== //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/test-getgr.t#2 (text+ko) ====
==== //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/test-gethostby.c#3 (text+ko) ====
@@ -35,6 +35,7 @@
#include <assert.h>
#include <errno.h>
#include <netdb.h>
+#include <resolv.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -50,9 +51,13 @@
TEST_GETHOSTBYNAME2,
TEST_GETHOSTBYADDR,
TEST_GETHOSTBYNAME2_GETADDRINFO,
- TEST_BUILD_SNAPSHOT
+ TEST_GETHOSTBYADDR_GETNAMEINFO,
+ TEST_BUILD_SNAPSHOT,
+ TEST_BUILD_ADDR_SNAPSHOT
};
+static int use_ipnode_functions = 0;
+static int use_ipv6_mapping = 0;
static int debug = 0;
static int af_type = AF_INET;
static enum test_methods method = TEST_BUILD_SNAPSHOT;
@@ -62,6 +67,12 @@
DECLARE_1PASS_TEST(hostent)
DECLARE_2PASS_TEST(hostent)
+/* These stubs will use gethostby***() or getipnodeby***() functions,
+ * depending on the use_ipnode_functions global variable value */
+static struct hostent *__gethostbyname2(const char *, int);
+static struct hostent *__gethostbyaddr(const void *, socklen_t, int);
+static void __freehostent(struct hostent *);
+
static void clone_hostent(struct hostent *, struct hostent const *);
static int compare_hostent(struct hostent *, struct hostent *, void *);
static void dump_hostent(struct hostent *);
@@ -74,11 +85,10 @@
static int hostent_read_snapshot_addr(char *, unsigned char *, size_t);
static int hostent_read_snapshot_func(struct hostent *, char *);
-static int hostent_fill_gethostbyname2_data(char const *,
- struct hostent_test_data *);
static int hostent_test_correctness(struct hostent *, void *);
static int hostent_test_gethostbyaddr(struct hostent *, void *);
static int hostent_test_getaddrinfo_eq(struct hostent *, void *);
+static int hostent_test_getnameinfo_eq(struct hostent *, void *);
static void usage(void) __attribute__((__noreturn__));
@@ -87,6 +97,62 @@
IMPLEMENT_1PASS_TEST(hostent)
IMPLEMENT_2PASS_TEST(hostent)
+static struct hostent *
+__gethostbyname2(const char *name, int af)
+{
+ struct hostent *he;
+ int error;
+
+ if (use_ipnode_functions == 0) {
+ if (use_ipv6_mapping != 0)
+ af = AF_INET;
+
+ he = gethostbyname2(name, af);
+ } else {
+ error = 0;
+ if (use_ipv6_mapping != 0)
+ af = AF_INET6;
+ he = getipnodebyname(name, af, use_ipv6_mapping == 0 ? AI_ALL :
+ AI_ALL | AI_V4MAPPED, &error);
+ if (he == NULL);
+ errno = error;
+ }
+
+ return (he);
+}
+
+static struct hostent *
+__gethostbyaddr(const void *addr, socklen_t len, int af)
+{
+ struct hostent *he;
+ int error;
+
+ if (use_ipnode_functions == 0) {
+ if (use_ipv6_mapping != 0)
+ af = AF_INET;
+
+ he = gethostbyaddr(addr, len, af);
+ } else {
+ error = 0;
+ if (use_ipv6_mapping != 0)
+ af = AF_INET6;
+ he = getipnodebyaddr(addr, len, use_ipv6_mapping == 0 ? AI_ALL :
+ AI_ALL | AI_V4MAPPED, &error);
+ if (he == NULL)
+ errno = error;
+ }
+
+ return (he);
+}
+
+static void
+__freehostent(struct hostent *he)
+{
+ /* NOTE: checking for he != NULL - just in case */
+ if ((use_ipnode_functions != 0) && (he != NULL))
+ freehostent(he);
+}
+
static void
clone_hostent(struct hostent *dest, struct hostent const *src)
{
@@ -179,6 +245,9 @@
if ((ht1 == NULL) || (ht2 == NULL))
goto errfin;
+
+ if ((ht1->h_name == NULL) || (ht2->h_name == NULL))
+ goto errfin;
if ((ht1->h_addrtype != ht2->h_addrtype) ||
(ht1->h_length != ht2->h_length) ||
@@ -248,24 +317,10 @@
{
struct addrinfo *ai2;
-/* char buffer[100];
- memset(buffer, 0, sizeof(buffer));
-
- char *res = inet_ntop(af, addr, buffer,
- sizeof(buffer));
- if (res != NULL)
- printf("===he %s %s\n", buffer, ai->ai_canonname);
-
-*/
for (ai2 = ai; ai2 != NULL; ai2 = ai2->ai_next) {
if (af != ai2->ai_family)
continue;
-
-/* res = inet_ntop(ai2->ai_family, (void *)&((struct sockaddr_in *)ai2->ai_addr)->sin_addr, buffer,
- sizeof(buffer));
- if (res != NULL)
- printf("===ai %s\n", buffer);*/
-
+
switch (af) {
case AF_INET:
if (memcmp(addr,
@@ -290,7 +345,6 @@
static int
is_hostent_equal(struct hostent *he, struct addrinfo *ai)
{
- struct addrinfo *ai2;
char **cp;
int rv;
@@ -305,17 +359,6 @@
return (rv);
}
- /* getaddrinfo doesn't provide the aliases information */
-/* for (cp = he->h_aliases; *cp; ++cp) {
- rv = check_addrinfo_for_name(ai, *cp);
- if (rv != 0) {
- if (debug)
- printf("not equal - one of he->h_aliases couldn't be found\n");
-
- return (rv);
- }
- }*/
-
for (cp = he->h_addr_list; *cp; ++cp) {
rv = check_addrinfo_for_addr(ai, *cp, he->h_length,
he->h_addrtype);
@@ -395,6 +438,14 @@
if (buflen == 0)
return;
}
+
+ if (*(cp + 1) ) {
+ written = snprintf(buffer, buflen, " ");
+ buffer += written;
+ if (written > buflen)
+ return;
+ buflen -= written;
+ }
}
} else {
written = snprintf(buffer, buflen, " noaddrs");
@@ -420,16 +471,19 @@
if (debug)
printf("resolving %s: ", line);
- result = gethostbyname2(line, af_type);
+ result = __gethostbyname2(line, af_type);
if (result != NULL) {
if (debug)
printf("found\n");
rv = hostent_test_correctness(result, NULL);
- if (rv != 0)
+ if (rv != 0) {
+ __freehostent(result);
return (rv);
+ }
clone_hostent(he, result);
+ __freehostent(result);
} else {
if (debug)
printf("not found\n");
@@ -458,8 +512,10 @@
--len;
}
-
- return (0);
+ if (len != 0)
+ return (-1);
+ else
+ return (0);
}
static int
@@ -607,8 +663,8 @@
if (!((ht->h_addrtype >= 0) && (ht->h_addrtype < AF_MAX)))
goto errfin;
- /* NOTE: i hope this check is correct */
- if ((ht->h_length != 4) && (ht->h_length != 6))
+ if ((ht->h_length != sizeof(struct in_addr)) &&
+ (ht->h_length != sizeof(struct in6_addr)))
goto errfin;
if (ht->h_aliases == NULL)
@@ -616,7 +672,7 @@
if (ht->h_addr_list == NULL)
goto errfin;
-
+
if (debug)
printf("correct\n");
@@ -628,14 +684,6 @@
return (-1);
}
-static int
-hostent_fill_gethostbyname2_data(char const *filename,
- struct hostent_test_data *td)
-{
- return (TEST_SNAPSHOT_FILE_READ(hostent, filename, td,
- hostent_read_hostlist_func));
-}
-
static int
hostent_test_gethostbyaddr(struct hostent *he, void *mdata)
{
@@ -652,7 +700,7 @@
if (debug)
printf("doing reverse lookup for %s\n", he->h_name);
- result = gethostbyaddr(cp, he->h_length,
+ result = __gethostbyaddr(*cp, he->h_length,
he->h_addrtype);
if (result == NULL) {
if (debug)
@@ -661,11 +709,15 @@
continue;
}
rv = hostent_test_correctness(result, NULL);
- if (rv != 0)
+ if (rv != 0) {
+ __freehostent(result);
return (rv);
+ }
if (addr_test_data != NULL)
TEST_DATA_APPEND(hostent, addr_test_data, result);
+
+ __freehostent(result);
}
}
@@ -715,11 +767,109 @@
return (0);
}
+static int
+hostent_test_getnameinfo_eq(struct hostent *he, void *mdata)
+{
+ char buffer[NI_MAXHOST];
+ struct sockaddr_in sin;
+ struct sockaddr_in6 sin6;
+ struct sockaddr *saddr;
+ struct hostent *result;
+ int rv;
+
+ if (he->h_addr_list != NULL) {
+ char **cp;
+ for (cp = he->h_addr_list; *cp; ++cp) {
+ if (debug)
+ printf("doing reverse lookup for %s\n", he->h_name);
+
+ result = __gethostbyaddr(*cp, he->h_length,
+ he->h_addrtype);
+ if (result != NULL) {
+ rv = hostent_test_correctness(result, NULL);
+ if (rv != 0) {
+ __freehostent(result);
+ return (rv);
+ }
+ } else {
+ if (debug)
+ printf("reverse lookup failed\n");
+ }
+
+ switch (he->h_addrtype) {
+ case AF_INET:
+ memset(&sin, 0, sizeof(struct sockaddr_in));
+ sin.sin_len = sizeof(struct sockaddr_in);
+ sin.sin_family = AF_INET;
+ memcpy(&sin.sin_addr, *cp, he->h_length);
+
+ saddr = (struct sockaddr *)&sin;
+ break;
+ case AF_INET6:
+ memset(&sin6, 0, sizeof(struct sockaddr_in6));
+ sin6.sin6_len = sizeof(struct sockaddr_in6);
+ sin6.sin6_family = AF_INET6;
+ memcpy(&sin6.sin6_addr, *cp, he->h_length);
+
+ saddr = (struct sockaddr *)&sin6;
+ break;
+ default:
+ if (debug)
+ printf("warning: %d family is unsupported\n",
+ he->h_addrtype);
+ continue;
+ }
+
+ assert(saddr != NULL);
+ rv = getnameinfo(saddr, saddr->sa_len, buffer,
+ sizeof(buffer), NULL, 0, NI_NAMEREQD);
+
+ if ((rv != 0) && (result != NULL)) {
+ if (debug)
+ printf("not ok - getnameinfo() didn't make the reverse lookup, when it should have (%s)\n",
+ gai_strerror(rv));
+ return (rv);
+ }
+
+ if ((rv == 0) && (result == NULL)) {
+ if (debug)
+ printf("not ok - getnameinfo() made the reverse lookup, when it shouldn't have\n");
+ return (rv);
+ }
+
+ if ((rv != 0) && (result == NULL)) {
+ if (debug)
+ printf("ok - both getnameinfo() and ***byaddr() failed\n");
+
+ continue;
+ }
+
+ if (debug)
+ printf("comparing %s with %s\n", result->h_name,
+ buffer);
+
+ rv = strcmp(result->h_name, buffer);
+ __freehostent(result);
+
+ if (rv != 0) {
+ if (debug)
+ printf("not ok - getnameinfo() and ***byaddr() results are not equal\n");
+ return (rv);
+ } else {
+ if (debug)
+ printf("ok - getnameinfo() and ***byaddr() results are equal\n");
+ }
+ }
+ }
+
+ return (0);
+}
+
static void
usage(void)
{
(void)fprintf(stderr,
- "Usage: %s [-dna2] [-s <file>] -f <file>\n",
+ "Usage: %s [-na2i] [-d] [-46] [-s <file>] -f <file>\n",
getprogname());
exit(1);
}
@@ -727,8 +877,9 @@
int
main(int argc, char **argv)
{
- struct hostent_test_data td, td_snap;
+ struct hostent_test_data td, td_addr, td_snap;
char *snapshot_file, *hostlist_file;
+ res_state statp;
int rv;
int c;
@@ -737,10 +888,45 @@
snapshot_file = NULL;
hostlist_file = NULL;
- while ((c = getopt(argc, argv, "na2ds:f:")) != -1)
+ while ((c = getopt(argc, argv, "m46na2idos:f:")) != -1)
switch (c) {
+ case '4':
+ case '6':
+ case 'm':
+ statp = __res_state();
+ if ((statp == NULL) ||
+ ((statp->options & RES_INIT) == 0 &&
+ res_ninit(statp) == -1)) {
+ if (debug)
+ printf("error: can't init res_state\n");
+
+ free(snapshot_file);
+ free(hostlist_file);
+ return (-1);
+ }
+
+ switch (c) {
+ case '4':
+ af_type = AF_INET;
+ statp->options &= ~RES_USE_INET6;
+ break;
+ case '6':
+ af_type = AF_INET6;
+ statp->options &= ~RES_USE_INET6;
+ break;
+ case 'm':
+ statp->options |= RES_USE_INET6;
+ use_ipv6_mapping = 1;
+ break;
+ default:
+ break;
+ };
+ break;
+ case 'o':
+ use_ipnode_functions = 1;
+ break;
case 'd':
- debug++;
+ debug = 1;
break;
case 'n':
method = TEST_GETHOSTBYNAME2;
@@ -751,6 +937,9 @@
case '2':
method = TEST_GETHOSTBYNAME2_GETADDRINFO;
break;
+ case 'i':
+ method = TEST_GETHOSTBYADDR_GETNAMEINFO;
+ break;
case 's':
snapshot_file = strdup(optarg);
break;
@@ -762,6 +951,7 @@
}
TEST_DATA_INIT(hostent, &td, clone_hostent, free_hostent);
+ TEST_DATA_INIT(hostent, &td_addr, clone_hostent, free_hostent);
TEST_DATA_INIT(hostent, &td_snap, clone_hostent, free_hostent);
if (hostlist_file == NULL)
@@ -777,16 +967,20 @@
if (debug)
printf("building host lists from %s\n", hostlist_file);
+
rv = TEST_SNAPSHOT_FILE_READ(hostent, hostlist_file, &td,
hostent_read_hostlist_func);
if (rv != 0)
- goto fin;
-
+ goto fin;
+
if (snapshot_file != NULL) {
if (access(snapshot_file, W_OK | R_OK) != 0) {
- if (errno == ENOENT)
- method = TEST_BUILD_SNAPSHOT;
- else {
+ if (errno == ENOENT) {
+ if (method != TEST_GETHOSTBYADDR)
+ method = TEST_BUILD_SNAPSHOT;
+ else
+ method = TEST_BUILD_ADDR_SNAPSHOT;
+ } else {
if (debug)
printf("can't access the snapshot file %s\n",
snapshot_file);
@@ -795,13 +989,13 @@
goto fin;
}
} else {
- if (method == TEST_BUILD_SNAPSHOT) {
- rv = 0;
+ rv = TEST_SNAPSHOT_FILE_READ(hostent, snapshot_file,
+ &td_snap, hostent_read_snapshot_func);
+ if (rv != 0) {
+ if (debug)
+ printf("error reading snapshot file\n");
goto fin;
}
-
- TEST_SNAPSHOT_FILE_READ(hostent, snapshot_file,
- &td_snap, hostent_read_snapshot_func);
}
}
@@ -812,25 +1006,35 @@
compare_hostent, NULL);
break;
case TEST_GETHOSTBYADDR:
- if (snapshot_file == NULL)
- rv = DO_1PASS_TEST(hostent, &td,
- hostent_test_gethostbyaddr, (void *)&td);
- else
- rv = DO_1PASS_TEST(hostent, &td_snap,
- hostent_test_gethostbyaddr, (void *)&td_snap);
+ rv = DO_1PASS_TEST(hostent, &td,
+ hostent_test_gethostbyaddr, (void *)&td_addr);
+
+ if (snapshot_file != NULL)
+ rv = DO_2PASS_TEST(hostent, &td_addr, &td_snap,
+ compare_hostent, NULL);
break;
case TEST_GETHOSTBYNAME2_GETADDRINFO:
- if (snapshot_file == NULL)
- rv = DO_1PASS_TEST(hostent, &td,
- hostent_test_getaddrinfo_eq, (void *)&td);
- else
- rv = DO_1PASS_TEST(hostent, &td_snap,
- hostent_test_getaddrinfo_eq, (void *)&td);
+ rv = DO_1PASS_TEST(hostent, &td,
+ hostent_test_getaddrinfo_eq, NULL);
+ break;
+ case TEST_GETHOSTBYADDR_GETNAMEINFO:
+ rv = DO_1PASS_TEST(hostent, &td,
+ hostent_test_getnameinfo_eq, NULL);
break;
case TEST_BUILD_SNAPSHOT:
- if (snapshot_file != NULL)
+ if (snapshot_file != NULL) {
rv = TEST_SNAPSHOT_FILE_WRITE(hostent, snapshot_file, &td,
sdump_hostent);
+ }
+ break;
+ case TEST_BUILD_ADDR_SNAPSHOT:
+ if (snapshot_file != NULL) {
+ rv = DO_1PASS_TEST(hostent, &td,
+ hostent_test_gethostbyaddr, (void *)&td_addr);
+
+ rv = TEST_SNAPSHOT_FILE_WRITE(hostent, snapshot_file,
+ &td_addr, sdump_hostent);
+ }
break;
default:
rv = 0;
@@ -839,40 +1043,9 @@
fin:
TEST_DATA_DESTROY(hostent, &td_snap);
+ TEST_DATA_DESTROY(hostent, &td_addr);
TEST_DATA_DESTROY(hostent, &td);
free(hostlist_file);
free(snapshot_file);
return (rv);
}
-
-
-/*int
-main(int argc, char **argv)
-{
- struct hostent_test_data td;
- debug = 1;
-
- TEST_DATA_INIT(hostent, &td, clone_hostent, free_hostent);
- hostent_fill_gethostbyname2_data("../resolv/mach", &td);
- TEST_DATA_DESTROY(hostent, &td);
- return (0);
-}*/
-
-/*int
-main(int argc, char **argv)
-{
- char buffer[1024];
-
- struct hostent *he = gethostbyname("yandex.ru");
- sdump_hostent(he, buffer, sizeof(buffer));
- dump_hostent(he);
-
- struct hostent he2;
- int rv = hostent_read_snapshot_func(&he2, buffer);
- printf("rv %d\n", rv);
- dump_hostent(&he2);
- rv = compare_hostent(he, &he2, NULL);
- printf("compare %d\n", rv);
-
- return (0);
-}*/
==== //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/test-gethostby.t#3 (text+ko) ====
@@ -18,12 +18,61 @@
make $executable 2>&1 > /dev/null
-echo 1..8
-do_test 1 'gethostbyname2()' '-n -f ../resolv/mach'
-do_test 2 'gethostbyaddr()' '-a -f ../resolv/mach'
-do_test 3 'gethostbyname()-getaddrinfo()' '-2 -f ../resolv/mach'
-do_test 5 'building snapshot, if needed' '-s snapshot_ht -f ../resolv/mach'
-do_test 6 'gethostbyname2() snapshot' '-n -s snapshot_serv -f ../resolv/mach'
-do_test 7 'gethostbyaddr() snapshot' '-a -s snapshot_serv -f ../resolv/mach'
-do_test 8 'gethostbyname2()-getaddrinfo snapshot'\
- '-2 -s snapshot_serv -f ../resolv/mach'
+echo 1..32
+#Tests for gethostby***() functions
+#IPv4-driven testing
+do_test 1 'gethostbyname2() (IPv4)' '-4 -n -f mach'
+do_test 2 'gethostbyaddr() (IPv4)' '-4 -a -f mach'
+do_test 3 'gethostbyname2()-getaddrinfo() (IPv4)' '-4 -2 -f mach'
+do_test 4 'gethostbyaddr()-getnameinfo() (IPv4)' '-4 -i -f mach'
+do_test 5 'gethostbyname2() snapshot (IPv4)'\
+ '-4 -n -s snapshot_htname4 -f mach'
+do_test 6 'gethostbyaddr() snapshot (IPv4)'\
+ '-4 -a -s snapshot_htaddr4 -f mach'
+
+#IPv6-driven testing
+do_test 7 'gethostbyname2() (IPv6)' '-6 -n -f mach'
+do_test 8 'gethostbyaddr() (IPv6)' '-6 -a -f mach'
+do_test 9 'gethostbyname2()-getaddrinfo() (IPv6)' '-6 -2 -f mach'
+do_test 10 'gethostbyaddr()-getnameinfo() (IPv6)' '-6 -i -f mach'
+do_test 11 'gethostbyname2() snapshot (IPv6)'\
+ '-6 -n -s snapshot_htname6 -f mach'
+do_test 12 'gethostbyaddr() snapshot (IPv6)'\
+ '-6 -a -s snapshot_htaddr6 -f mach'
+
+#Mapped IPv6-driven testing (getaddrinfo() equality test is useless here)
+do_test 13 'gethostbyname2() (IPv6 mapped)' '-m -n -f mach'
+do_test 14 'gethostbyaddr() (IPv6 mapped)' '-m -a -f mach'
+do_test 15 'gethostbyname2() snapshot (IPv6 mapped)'\
+ '-m -n -s snapshot_htname6map -f mach'
+do_test 16 'gethostbyaddr() snapshot (IPv6 mapped)'\
+ '-m -a -s snapshot_htaddr6map -f mach'
+
+#Tests for getipnodeby***() functions
+#IPv4-driven testing
+do_test 17 'getipnodebyname() (IPv4)' '-o -4 -n -f mach'
+do_test 18 'getipnodebyaddr() (IPv4)' '-o -4 -a -f mach'
+do_test 19 'getipnodebyname()-getaddrinfo() (IPv4)' '-o -4 -2 -f mach'
+do_test 20 'getipnodebyaddr()-getnameinfo() (IPv4)' '-o -4 -i -f mach'
+do_test 21 'getipnodebyname() snapshot (IPv4)'\
+ '-o -4 -n -s snapshot_ipnodename4 -f mach'
+do_test 22 'getipnodebyname() snapshot (IPv4)'\
+ '-o -4 -a -s snapshot_ipnodeaddr4 -f mach'
+
+#IPv6-driven testing
+do_test 23 'getipnodebyname() (IPv6)' '-o -6 -n -f mach'
+do_test 24 'getipnodebyaddr() (IPv6)' '-o -6 -a -f mach'
+do_test 25 'getipnodebyname()-getaddrinfo() (IPv6)' '-o -6 -2 -f mach'
+do_test 26 'getipnodebyaddr()-getnameinfo() (IPv6)' '-o -6 -i -f mach'
+do_test 27 'getipnodebyname() snapshot (IPv6)'\
+ '-o -6 -n -s snapshot_ipnodename6 -f mach'
+do_test 28 'getipnodebyaddr() snapshot (IPv6)'\
+ '-o -6 -a -s snapshot_ipnodeaddr6 -f mach'
+
+#Mapped IPv6-driven testing (getaddrinfo() equality test is useless here)
+do_test 29 'getipnodebyname() (IPv6)' '-o -m -n -f mach'
+do_test 30 'getipnodebyaddr() (IPv6)' '-o -m -a -f mach'
+do_test 31 'getipnodebyname() snapshot (IPv6)'\
+ '-o -m -n -s snapshot_ipnodename6map -f mach'
+do_test 32 'getipnodebyaddr() snapshot (IPv6)'\
+ '-o -m -a -s snapshot_ipnodeaddr6map -f mach'
==== //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/test-getpw.c#4 (text+ko) ====
==== //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/test-getpw.t#2 (text+ko) ====
==== //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/test-getserv.c#6 (text+ko) ====
==== //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/test-getserv.t#5 (text+ko) ====
==== //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/testutil.h#7 (text+ko) ====
@@ -267,6 +267,7 @@
if (fi == NULL) \
return (-1); \
\
+ rv = 0; \
memset(buffer, 0, sizeof(buffer)); \
while (!feof(fi)) { \
s = fgets(buffer, sizeof(buffer), fi); \
@@ -281,13 +282,14 @@
if (rv == 0) { \
__##ent##_test_data_append(td, &data); \
td->free_func(&data); \
- } \
+ } else \
+ goto fin; \
} \
} \
\
+fin: \
fclose(fi); \
- \
- return (0); \
+ return (rv); \
}
#define DECLARE_1PASS_TEST(ent) \
More information about the p4-projects
mailing list