From owner-p4-projects@FreeBSD.ORG Sat Jun 9 15:27:04 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9364F16A469; Sat, 9 Jun 2007 15:27:04 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 360FF16A41F for ; Sat, 9 Jun 2007 15:27:04 +0000 (UTC) (envelope-from bushman@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 2C0AD13C447 for ; Sat, 9 Jun 2007 15:27:04 +0000 (UTC) (envelope-from bushman@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l59FR4ui071310 for ; Sat, 9 Jun 2007 15:27:04 GMT (envelope-from bushman@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l59FR37f071304 for perforce@freebsd.org; Sat, 9 Jun 2007 15:27:03 GMT (envelope-from bushman@freebsd.org) Date: Sat, 9 Jun 2007 15:27:03 GMT Message-Id: <200706091527.l59FR37f071304@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bushman@freebsd.org using -f From: Michael Bushkov To: Perforce Change Reviews Cc: Subject: PERFORCE change 121273 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 09 Jun 2007 15:27:04 -0000 http://perforce.freebsd.org/chv.cgi?CH=121273 Change 121273 by bushman@bushman_sh on 2007/06/09 15:26:49 test-gethostby.c updated to properly test getipnodebyname() flags combinations. New test cases added to test-gethostby.t Affected files ... .. //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/test-gethostby.c#5 edit .. //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/test-gethostby.t#4 edit Differences ... ==== //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/test-gethostby.c#5 (text+ko) ==== @@ -58,6 +58,7 @@ static int use_ipnode_functions = 0; static int use_ipv6_mapping = 0; +static int ipnode_flags = 0; static int debug = 0; static int af_type = AF_INET; static enum test_methods method = TEST_BUILD_SNAPSHOT; @@ -103,17 +104,11 @@ struct hostent *he; int error; - if (use_ipnode_functions == 0) { - if (use_ipv6_mapping != 0) - af = AF_INET; - + if (use_ipnode_functions == 0) he = gethostbyname2(name, af); - } else { + 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); + he = getipnodebyname(name, af, ipnode_flags, &error); if (he == NULL); errno = error; } @@ -127,17 +122,11 @@ struct hostent *he; int error; - if (use_ipnode_functions == 0) { - if (use_ipv6_mapping != 0) - af = AF_INET; - + if (use_ipnode_functions == 0) he = gethostbyaddr(addr, len, af); - } else { + 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); + he = getipnodebyaddr(addr, len, af, &error); if (he == NULL) errno = error; } @@ -238,7 +227,8 @@ static int compare_hostent(struct hostent *ht1, struct hostent *ht2, void *mdata) { - char **c1, **c2; + char **c1, **c2, **ct, **cb; + int b; if (ht1 == ht2) return 0; @@ -262,12 +252,39 @@ goto errfin; if ((c1 != NULL) && (c2 != NULL)) { - for (;*c1 && *c2; ++c1, ++c2) - if (strcmp(*c1, *c2) != 0) + cb = c1; + for (;*c1; ++c1) { + b = 0; + for (ct = c2; *ct; ++ct) { + if (strcmp(*c1, *ct) == 0) { + b = 1; + break; + } + } + if (b == 0) { + if (debug) + printf("h1 aliases item can't be "\ + "found in h2 aliases\n"); + goto errfin; + } + } + + c1 = cb; + for (;*c2; ++c2) { + b = 0; + for (ct = c1; *ct; ++ct) { + if (strcmp(*c2, *ct) == 0) { + b = 1; + break; + } + } + if (b == 0) { + if (debug) + printf("h2 aliases item can't be "\ + " found in h1 aliases\n"); goto errfin; - - if ((*c1 != NULL) || (*c2 != NULL)) - goto errfin; + } + } } c1 = ht1->h_addr_list; @@ -278,12 +295,39 @@ goto errfin; if ((c1 != NULL) && (c2 != NULL)) { - for (;*c1 && *c2; ++c1, ++c2) - if (memcmp(*c1, *c2, ht1->h_length) != 0) + cb = c1; + for (;*c1; ++c1) { + b = 0; + for (ct = c2; *ct; ++ct) { + if (memcmp(*c1, *ct, ht1->h_length) == 0) { + b = 1; + break; + } + } + if (b == 0) { + if (debug) + printf("h1 addresses item can't be "\ + "found in h2 addresses\n"); + goto errfin; + } + } + + c1 = cb; + for (;*c2; ++c2) { + b = 0; + for (ct = c1; *ct; ++ct) { + if (memcmp(*c2, *ct, ht1->h_length) == 0) { + b = 1; + break; + } + } + if (b == 0) { + if (debug) + printf("h2 addresses item can't be "\ + "found in h1 addresses\n"); goto errfin; - - if ((*c1 != NULL) || (*c2 != NULL)) - goto errfin; + } + } } return 0; @@ -588,8 +632,8 @@ ts = (char *)malloc(ht->h_length); assert(ts != NULL); memset(ts, 0, ht->h_length); - rv = hostent_read_snapshot_addr( - s, ts, ht->h_length); + rv = hostent_read_snapshot_addr(s,\ + (unsigned char *)ts, ht->h_length); sl_add(sl2, ts); if (rv != 0) goto fin; @@ -598,8 +642,8 @@ ts = (char *)malloc(ht->h_length); assert(ts != NULL); memset(ts, 0, ht->h_length); - rv = hostent_read_snapshot_addr( - s, ts, ht->h_length); + rv = hostent_read_snapshot_addr(s,\ + (unsigned char *)ts, ht->h_length); sl_add(sl2, ts); if (rv != 0) goto fin; @@ -869,7 +913,7 @@ usage(void) { (void)fprintf(stderr, - "Usage: %s -na2i [-o] [-d] [-m46] [-s ] -f \n", + "Usage: %s -na2i [-o] [-d] [-46] [-mAcM] [-C] [-s ] -f \n", getprogname()); exit(1); } @@ -888,39 +932,29 @@ snapshot_file = NULL; hostlist_file = NULL; - while ((c = getopt(argc, argv, "m46na2idos:f:")) != -1) + while ((c = getopt(argc, argv, "nad2iod46mAcMs:f:")) != -1) switch (c) { case '4': + af_type = AF_INET; + break; case '6': + af_type = AF_INET6; + break; + case 'M': + af_type = AF_INET6; + use_ipv6_mapping = 1; + ipnode_flags |= AI_V4MAPPED_CFG; + break; 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; - }; + af_type = AF_INET6; + use_ipv6_mapping = 1; + ipnode_flags |= AI_V4MAPPED; + break; + case 'c': + ipnode_flags |= AI_ADDRCONFIG; + break; + case 'A': + ipnode_flags |= AI_ALL; break; case 'o': use_ipnode_functions = 1; @@ -949,7 +983,25 @@ default: usage(); } + + if (use_ipnode_functions == 0) { + 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); + } + if (use_ipv6_mapping == 0) + statp->options &= ~RES_USE_INET6; + else + statp->options |= RES_USE_INET6; + } + 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); @@ -1047,5 +1099,7 @@ TEST_DATA_DESTROY(hostent, &td); free(hostlist_file); free(snapshot_file); + return (rv); } + ==== //depot/projects/soc2006/nss_ldap_cached/src/tools/regression/lib/libc/nss/test-gethostby.t#4 (text+ko) ==== @@ -18,7 +18,7 @@ make $executable 2>&1 > /dev/null -echo 1..32 +echo 1..46 #Tests for gethostby***() functions #IPv4-driven testing do_test 1 'gethostbyname2() (IPv4)' '-4 -n -f mach' @@ -49,7 +49,7 @@ '-m -a -s snapshot_htaddr6map -f mach' #Tests for getipnodeby***() functions -#IPv4-driven testing +#IPv4-driven testing, flags are 0 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' @@ -59,7 +59,7 @@ do_test 22 'getipnodebyname() snapshot (IPv4)'\ '-o -4 -a -s snapshot_ipnodeaddr4 -f mach' -#IPv6-driven testing +#IPv6-driven testing, flags are 0 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' @@ -69,10 +69,45 @@ 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' +#Mapped IPv6-driven testing, flags are AI_V4MAPPED +do_test 29 'getipnodebyname() (IPv6, AI_V4MAPPED)' '-o -m -n -f mach' +do_test 30 'getipnodebyaddr() (IPv6, AI_V4MAPPED)' '-o -m -a -f mach' +do_test 31 'getipnodebyname() snapshot (IPv6, AI_V4MAPPED)'\ + '-o -m -n -s snapshot_ipnodename6_AI_V4MAPPED -f mach' +do_test 32 'getipnodebyaddr() snapshot (IPv6, AI_V4MAPPED)'\ + '-o -m -a -s snapshot_ipnodeaddr6_AI_V4MAPPED -f mach' + +#Mapped IPv6-driven testing, flags are AI_V4MAPPED_CFG +do_test 33 'getipnodebyname() (IPv6, AI_V4MAPPED_CFG)' '-o -M -n -f mach' +do_test 34 'getipnodebyaddr() (IPv6, AI_V4MAPPED_CFG)' '-o -M -a -f mach' +do_test 35 'getipnodebyname() snapshot (IPv6, AI_V4MAPPED_CFG)'\ + '-o -M -n -s snapshot_ipnodename6_AI_V4MAPPED_CFG -f mach' +do_test 36 'getipnodebyaddr() snapshot (IPv6, AI_V4MAPPED_CFG)'\ + '-o -M -a -s snapshot_ipnodeaddr6_AI_V4MAPPED_CFG -f mach' + +#Mapped IPv6-driven testing, flags are AI_V4MAPPED_CFG | AI_ALL +do_test 37 'getipnodebyname() (IPv6, AI_V4MAPPED_CFG | AI_ALL)'\ + '-o -MA -n -f mach' +do_test 38 'getipnodebyaddr() (IPv6, AI_V4MAPPED_CFG | AI_ALL)'\ + '-o -MA -a -f mach' +do_test 39 'getipnodebyname() snapshot (IPv6, AI_V4MAPPED_CFG | AI_ALL)'\ + '-o -MA -n -s snapshot_ipnodename6_AI_V4MAPPED_CFG_AI_ALL -f mach' +do_test 40 'getipnodebyaddr() snapshot (IPv6, AI_V4MAPPED_CFG | AI_ALL)'\ + '-o -MA -a -s snapshot_ipnodeaddr6_AI_V4MAPPED_CFG_AI_ALL -f mach' + +#Mapped IPv6-driven testing, flags are AI_V4MAPPED_CFG | AI_ADDRCONFIG +do_test 41 'getipnodebyname() (IPv6, AI_V4MAPPED_CFG | AI_ADDRCONFIG)'\ + '-o -Mc -n -f mach' +do_test 42 'getipnodebyname() snapshot (IPv6, AI_V4MAPPED_CFG | AI_ADDRCONFIG)'\ + '-o -Mc -n -s snapshot_ipnodename6_AI_V4MAPPED_CFG_AI_ADDRCONFIG -f mach' + +#IPv4-driven testing, flags are AI_ADDRCONFIG +do_test 43 'getipnodebyname() (IPv4, AI_ADDRCONFIG)' '-o -4c -n -f mach' +do_test 44 'getipnodebyname() snapshot (IPv4, AI_ADDRCONFIG)'\ + '-o -4c -n -s snapshot_ipnodename4_AI_ADDRCONFIG -f mach' + +#IPv6-driven testing, flags are AI_ADDRCONFIG +do_test 45 'getipnodebyname() (IPv6, AI_ADDRCONFIG)' '-o -6c -n -f mach' +do_test 46 'getipnodebyname() snapshot (IPv6, AI_ADDRCONFIG)'\ + '-o -6c -n -s snapshot_ipnodename6_AI_ADDRCONFIG -f mach' +