* Add 'static' before some functions and global variables. * Remove cleanup() function. * Remove useless comments. * In every test function, using TINFO instead of TPASS marks the success of each inner test. * Some cleanup.
Signed-off-by: Zeng Linggang <zenglg...@cn.fujitsu.com> Signed-off-by: Alexey Kodanev <alexey.koda...@oracle.com> Signed-off-by: Cyril Hrubis <chru...@suse.cz> --- testcases/network/lib6/getaddrinfo_01.c | 503 ++++++++++++++++++-------------- 1 file changed, 281 insertions(+), 222 deletions(-) diff --git a/testcases/network/lib6/getaddrinfo_01.c b/testcases/network/lib6/getaddrinfo_01.c index ec29b5d..a812e77 100644 --- a/testcases/network/lib6/getaddrinfo_01.c +++ b/testcases/network/lib6/getaddrinfo_01.c @@ -1,43 +1,21 @@ /* + * Copyright (c) 2015 Fujitsu Ltd. + * Copyright (c) International Business Machines Corp., 2001 * - * Copyright (c) International Business Machines Corp., 2001 + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See - * the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/* - * Test Name: getaddrinfo_01 - * - * Test Description: - * Tests for getaddrinfo library function - * - * Usage: <for command-line> - * getaddrinfo_01 [-c n] [-e] [-i n] [-I x] [-P x] [-t] - * where, -c n : Run n copies concurrently. - * -e : Turn on errno logging. - * -i n : Execute test n times. - * -I x : Execute test for x seconds. - * -P x : Pause for x seconds between iterations. - * -t : Turn on syscall timing. - * - * HISTORY - * 07/2004 written by David L Stevens - * - * RESTRICTIONS: - * None. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. * + * Author: David L Stevens */ #include <unistd.h> @@ -53,40 +31,38 @@ #define AI_V4MAPPED 0x0008 /* IPv4 mapped addresses are acceptable. */ #endif -char *TCID = "getaddrinfo_01"; /* Test program identifier. */ -int testno; +static void setup(void); +static void gaiv4(void); +static void gaiv6(void); -void setup(void), cleanup(void); - -int TST_TOTAL = 1; - -/* a host that isn't where LTP is running */ -#define REMOTEHOSTNAME "www.ibm.com" - -void gaiv4(void), gaiv6(void); -void dumpres(struct addrinfo *); +char *TCID = "getaddrinfo_01"; +int TST_TOTAL = 2; int main(int argc, char *argv[]) { int lc; - /* Parse standard options given to run the test. */ tst_parse_opts(argc, argv, NULL, NULL); setup(); for (lc = 0; TEST_LOOPING(lc); ++lc) { + tst_count = 0; + gaiv4(); gaiv6(); } - cleanup(); - return (0); + tst_exit(); } -/* getaddrinfo tests (v4) */ +static void setup(void) +{ + TEST_PAUSE; +} -void gaiv4(void) +/* getaddrinfo tests (v4) */ +static void gaiv4(void) { struct addrinfo *aires, hints, *pai; char hostname[MAXHOSTNAMELEN + 1]; @@ -132,13 +108,18 @@ void gaiv4(void) psin ? psin->sin_family : 0, psin ? psin->sin_port : 0, psin ? htons(psin->sin_port) : 0); - } else - tst_resm(TPASS, "getaddrinfo IPv4 basic lookup"); - freeaddrinfo(aires); - } else - tst_resm(TEST_RETURN ? TFAIL : TPASS, "getaddrinfo IPv4 basic " + freeaddrinfo(aires); + return; + } else { + tst_resm(TINFO, "getaddrinfo IPv4 basic lookup"); + freeaddrinfo(aires); + } + } else { + tst_resm(TFAIL, "getaddrinfo IPv4 basic " "lookup (\"%s\") returns %ld (\"%s\")", hostname, TEST_RETURN, gai_strerror(TEST_RETURN)); + return; + } /* test 2, IPv4 canonical name */ memset(&hints, 0, sizeof(hints)); @@ -152,20 +133,26 @@ void gaiv4(void) if (!pai) { tst_resm(TFAIL, "getaddrinfo IPv4 canonical name: no " "entries with canonical name set"); + freeaddrinfo(aires); + return; } else if (strcasecmp(hostname, pai->ai_canonname)) { tst_resm(TFAIL, "getaddrinfo IPv4 canonical name " "(\"%s\") doesn't match hostname (\"%s\")", pai->ai_canonname, hostname); - } else - tst_resm(TPASS, "getaddrinfo IPv4 canonical name"); - freeaddrinfo(aires); - } else - tst_resm(TEST_RETURN ? TFAIL : TPASS, "getaddrinfo IPv4 " + freeaddrinfo(aires); + return; + } else { + tst_resm(TINFO, "getaddrinfo IPv4 canonical name"); + freeaddrinfo(aires); + } + } else { + tst_resm(TFAIL, "getaddrinfo IPv4 " "canonical name (\"%s\") returns %ld (\"%s\")", shortname, TEST_RETURN, gai_strerror(TEST_RETURN)); + return; + } /* test 3, IPv4 host+service name */ - memset(&hints, 0, sizeof(hints)); /* * These are hard-coded for echo/7 to avoid using getservbyname(), @@ -200,13 +187,18 @@ void gaiv4(void) psin ? psin->sin_family : 0, psin ? psin->sin_port : 0, psin ? htons(psin->sin_port) : 0); - } else - tst_resm(TPASS, "getaddrinfo IPv4 host+service"); - freeaddrinfo(aires); - } else - tst_resm(TEST_RETURN ? TFAIL : TPASS, "getaddrinfo IPv4 host+" + freeaddrinfo(aires); + return; + } else { + tst_resm(TINFO, "getaddrinfo IPv4 host+service"); + freeaddrinfo(aires); + } + } else { + tst_resm(TFAIL, "getaddrinfo IPv4 host+" "service returns %ld (\"%s\")", TEST_RETURN, gai_strerror(TEST_RETURN)); + return; + } /* test 4, IPv4 hostname+service, AI_PASSIVE */ memset(&hints, 0, sizeof(hints)); @@ -244,18 +236,22 @@ void gaiv4(void) psin ? psin->sin_family : 0, psin ? psin->sin_port : 0, psin ? htons(psin->sin_port) : 0); - } else - tst_resm(TPASS, + freeaddrinfo(aires); + return; + } else { + tst_resm(TINFO, "getaddrinfo IPv4 host+service PASSIVE"); - freeaddrinfo(aires); - } else - tst_resm(TEST_RETURN ? TFAIL : TPASS, "getaddrinfo IPv4 host+" + freeaddrinfo(aires); + } + } else { + tst_resm(TFAIL, "getaddrinfo IPv4 host+" "service, PASSIVE (\"%s\", \"%s\") returns %ld (\"%s\")", hostname, service, TEST_RETURN, gai_strerror(TEST_RETURN)); + return; + } /* test 5, IPv4 host+service w/ AI_NUMERICHOST */ - memset(&hints, 0, sizeof(hints)); strcpy(service, "echo"); servnum = 7; @@ -266,8 +262,11 @@ void gaiv4(void) tst_resm(TFAIL, "getaddrinfo IPv4 AI_NUMERICHOST w/ hostname: " "returns %ld expected %d (EAI_NONAME)", TEST_RETURN, EAI_NONAME); + if (!TEST_RETURN) + freeaddrinfo(aires); + return; } else - tst_resm(TPASS, "getaddrinfo IPv4 AI_NUMERICHOST w/ hostname"); + tst_resm(TINFO, "getaddrinfo IPv4 AI_NUMERICHOST w/ hostname"); if (!TEST_RETURN) freeaddrinfo(aires); @@ -306,17 +305,28 @@ void gaiv4(void) psin ? psin->sin_family : 0, psin ? psin->sin_port : 0, psin ? htons(psin->sin_port) : 0); - } else - tst_resm(TPASS, "getaddrinfo IPv4 0+service, PASSIVE"); - freeaddrinfo(aires); - } else - tst_resm(TEST_RETURN == EAI_BADFLAGS ? TPASS : TFAIL, - "getaddrinfo IPv4 0+service, PASSIVE (\"\", \"%s\") " - "returns %ld (\"%s\")", service, TEST_RETURN, - gai_strerror(TEST_RETURN)); + freeaddrinfo(aires); + return; + } else { + tst_resm(TINFO, "getaddrinfo IPv4 0+service, PASSIVE"); + freeaddrinfo(aires); + } + } else { + if (TEST_RETURN == EAI_BADFLAGS) { + tst_resm(TINFO, "getaddrinfo IPv4 0+service," + " PASSIVE (\"\", \"%s\") returns %ld (\"%s\")", + service, TEST_RETURN, + gai_strerror(TEST_RETURN)); + } else { + tst_resm(TFAIL, "getaddrinfo IPv4 0+service,i" + " PASSIVE (\"\", \"%s\") returns %ld (\"%s\")", + service, TEST_RETURN, + gai_strerror(TEST_RETURN)); + return; + } + } /* test 7, IPv4 0+service */ - memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_INET; hints.ai_socktype = SOCK_STREAM; @@ -350,19 +360,30 @@ void gaiv4(void) psin ? psin->sin_family : 0, psin ? psin->sin_port : 0, psin ? htons(psin->sin_port) : 0); - } else - tst_resm(TPASS, "getaddrinfo IPv4 0+service"); - freeaddrinfo(aires); - } else - tst_resm(TEST_RETURN == EAI_BADFLAGS ? TPASS : TFAIL, - "getaddrinfo IPv4 0+service (\"\", \"%s\") returns %ld " - "(\"%s\")", service, TEST_RETURN, - gai_strerror(TEST_RETURN)); + freeaddrinfo(aires); + return; + } else { + tst_resm(TINFO, "getaddrinfo IPv4 0+service"); + freeaddrinfo(aires); + } + } else { + if (TEST_RETURN == EAI_BADFLAGS) { + tst_resm(TINFO, "getaddrinfo IPv4 " + "0+service (\"\", \"%s\") returns %ld (\"%s\")", + service, TEST_RETURN, + gai_strerror(TEST_RETURN)); + } else { + tst_resm(TFAIL, "getaddrinfo IPv4 " + "0+service (\"\", \"%s\") returns %ld (\"%s\")", + service, TEST_RETURN, + gai_strerror(TEST_RETURN)); + return; + } + } /* test 8, IPv4 host+service, AI_NUMERICSERV */ - #ifndef AI_NUMERICSERV - tst_resm(TFAIL, "getaddrinfo IPv4 host+service, AI_NUMERICSERV: flag " + tst_resm(TCONF, "getaddrinfo IPv4 host+service, AI_NUMERICSERV: flag " "not implemented"); #else memset(&hints, 0, sizeof(hints)); @@ -376,15 +397,18 @@ void gaiv4(void) "getaddrinfo IPv4 host+service, AI_NUMERICSERV: " "returns %ld (\"%s\") expected %d (EAI_NONAME)", TEST_RETURN, gai_strerror(TEST_RETURN), EAI_NONAME); - } else - tst_resm(TPASS, + if (!TEST_RETURN) + freeaddrinfo(aires); + return; + } else { + tst_resm(TINFO, "getaddrinfo IPv4 host+service, AI_NUMERICSERV"); + } if (!TEST_RETURN) freeaddrinfo(aires); #endif /* AI_NUMERICSERV */ /* test 9, IPv4 SOCK_STREAM/IPPROTO_UDP hints */ - memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_INET; hints.ai_socktype = SOCK_STREAM; @@ -396,12 +420,13 @@ void gaiv4(void) tst_resm(TFAIL, "getaddrinfo IPv4 SOCK_STREAM/IPPROTO_UDP " "hints"); freeaddrinfo(aires); - } else - tst_resm(TPASS, "getaddrinfo IPv4 SOCK_STREAM/IPPROTO_UDP " + return; + } else { + tst_resm(TINFO, "getaddrinfo IPv4 SOCK_STREAM/IPPROTO_UDP " "hints"); + } /* test 10, IPv4 socktype 0, 513 */ - memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_INET; hints.ai_socktype = 0; @@ -439,20 +464,31 @@ void gaiv4(void) psin ? psin->sin_family : 0, psin ? psin->sin_port : 0, psin ? htons(psin->sin_port) : 0); - } else if (got_tcp && got_udp) - tst_resm(TPASS, "getaddrinfo IPv4 socktype 0,513"); - else + freeaddrinfo(aires); + return; + } else if (got_tcp && got_udp) { + tst_resm(TINFO, "getaddrinfo IPv4 socktype 0,513"); + freeaddrinfo(aires); + } else { tst_resm(TFAIL, "getaddrinfo IPv4 socktype 0,513 TCP %d" " UDP %d", got_tcp, got_udp); - freeaddrinfo(aires); - } else - tst_resm(TEST_RETURN == EAI_BADFLAGS ? TPASS : TFAIL, - "getaddrinfo IPv4 socktype 0,513 (\"\", \"%s\") returns" - " %ld (\"%s\")", service, TEST_RETURN, - gai_strerror(TEST_RETURN)); + freeaddrinfo(aires); + return; + } + } else { + if (TEST_RETURN == EAI_BADFLAGS) { + tst_resm(TINFO, "getaddrinfo IPv4 socktype 0,513" + " (\"\", \"%s\") returns %ld (\"%s\")", service, + TEST_RETURN, gai_strerror(TEST_RETURN)); + } else { + tst_resm(TFAIL, "getaddrinfo IPv4 socktype 0,513" + " (\"\", \"%s\") returns %ld (\"%s\")", service, + TEST_RETURN, gai_strerror(TEST_RETURN)); + return; + } + } /* test 11, IPv4 AI_V4MAPPED */ - /* AI_V4MAPPED should be ignored because family != AF_INET6 */ memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_INET; @@ -482,18 +518,25 @@ void gaiv4(void) psin ? psin->sin_family : 0, psin ? psin->sin_port : 0, psin ? htons(psin->sin_port) : 0); - } else - tst_resm(TPASS, "getaddrinfo IPv4 AI_V4MAPPED"); - freeaddrinfo(aires); - } else - tst_resm(TEST_RETURN ? TFAIL : TPASS, "getaddrinfo IPv4 " + freeaddrinfo(aires); + return; + } else { + tst_resm(TINFO, "getaddrinfo IPv4 AI_V4MAPPED"); + freeaddrinfo(aires); + } + } else { + tst_resm(TFAIL, "getaddrinfo IPv4 " "AI_V4MAPPED (\"%s\") returns %ld (\"%s\")", hostname, TEST_RETURN, gai_strerror(TEST_RETURN)); + return; + } + + + tst_resm(TPASS, "getaddrinfo tests (v4) succeed"); } /* getaddrinfo tests (v6) */ - -void gaiv6(void) +static void gaiv6(void) { struct addrinfo *aires, hints, *pai; char hostname[MAXHOSTNAMELEN + 1]; @@ -539,13 +582,18 @@ void gaiv6(void) psin6 ? psin6->sin6_family : 0, psin6 ? psin6->sin6_port : 0, psin6 ? htons(psin6->sin6_port) : 0); - } else - tst_resm(TPASS, "getaddrinfo IPv6 basic lookup"); - freeaddrinfo(aires); - } else - tst_resm(TEST_RETURN ? TFAIL : TPASS, "getaddrinfo IPv6 basic " + freeaddrinfo(aires); + return; + } else { + tst_resm(TINFO, "getaddrinfo IPv6 basic lookup"); + freeaddrinfo(aires); + } + } else { + tst_resm(TFAIL, "getaddrinfo IPv6 basic " "lookup (\"%s\") returns %ld (\"%s\")", hostname, TEST_RETURN, gai_strerror(TEST_RETURN)); + return; + } /* test 13, IPv6 canonical name */ memset(&hints, 0, sizeof(hints)); @@ -559,20 +607,26 @@ void gaiv6(void) if (!pai) { tst_resm(TFAIL, "getaddrinfo IPv6 canonical name: no " "entries with canonical name set"); + freeaddrinfo(aires); + return; } else if (strcasecmp(hostname, pai->ai_canonname)) { tst_resm(TFAIL, "getaddrinfo IPv6 canonical name " "(\"%s\") doesn't match hostname (\"%s\")", pai->ai_canonname, hostname); - } else - tst_resm(TPASS, "getaddrinfo IPv6 canonical name"); - freeaddrinfo(aires); - } else - tst_resm(TEST_RETURN ? TFAIL : TPASS, "getaddrinfo IPv6 " + freeaddrinfo(aires); + return; + } else { + tst_resm(TINFO, "getaddrinfo IPv6 canonical name"); + freeaddrinfo(aires); + } + } else { + tst_resm(TFAIL, "getaddrinfo IPv6 " "canonical name (\"%s\") returns %ld (\"%s\")", shortname, TEST_RETURN, gai_strerror(TEST_RETURN)); + return; + } /* test 14, IPv6 host+service name */ - memset(&hints, 0, sizeof(hints)); /* * These are hard-coded for echo/7 to avoid using getservbyname(), @@ -607,13 +661,18 @@ void gaiv6(void) psin6 ? psin6->sin6_family : 0, psin6 ? psin6->sin6_port : 0, psin6 ? htons(psin6->sin6_port) : 0); - } else - tst_resm(TPASS, "getaddrinfo IPv6 host+service"); - freeaddrinfo(aires); - } else - tst_resm(TEST_RETURN ? TFAIL : TPASS, "getaddrinfo IPv6 host+" + freeaddrinfo(aires); + return; + } else { + tst_resm(TINFO, "getaddrinfo IPv6 host+service"); + freeaddrinfo(aires); + } + } else { + tst_resm(TFAIL, "getaddrinfo IPv6 host+" "service returns %ld (\"%s\")", TEST_RETURN, gai_strerror(TEST_RETURN)); + return; + } /* test 15, IPv6 hostname+service, AI_PASSIVE */ memset(&hints, 0, sizeof(hints)); @@ -652,18 +711,22 @@ void gaiv6(void) psin6 ? psin6->sin6_family : 0, psin6 ? psin6->sin6_port : 0, psin6 ? htons(psin6->sin6_port) : 0); - } else - tst_resm(TPASS, + freeaddrinfo(aires); + return; + } else { + tst_resm(TINFO, "getaddrinfo IPv6 host+service PASSIVE"); - freeaddrinfo(aires); - } else - tst_resm(TEST_RETURN ? TFAIL : TPASS, "getaddrinfo IPv6 host+" + freeaddrinfo(aires); + } + } else { + tst_resm(TFAIL, "getaddrinfo IPv6 host+" "service, PASSIVE (\"%s\", \"%s\") returns %ld (\"%s\")", hostname, service, TEST_RETURN, gai_strerror(TEST_RETURN)); + return; + } /* test 16, IPv6 host+service w/ AI_NUMERICHOST */ - memset(&hints, 0, sizeof(hints)); strcpy(service, "echo"); servnum = 7; @@ -674,8 +737,11 @@ void gaiv6(void) tst_resm(TFAIL, "getaddrinfo IPv6 AI_NUMERICHOST w/ hostname: " "returns %ld expected %d (EAI_NONAME)", TEST_RETURN, EAI_NONAME); + if (!TEST_RETURN) + freeaddrinfo(aires); + return; } else - tst_resm(TPASS, "getaddrinfo IPv6 AI_NUMERICHOST w/ hostname"); + tst_resm(TINFO, "getaddrinfo IPv6 AI_NUMERICHOST w/ hostname"); if (!TEST_RETURN) freeaddrinfo(aires); @@ -715,17 +781,26 @@ void gaiv6(void) psin6 ? psin6->sin6_family : 0, psin6 ? psin6->sin6_port : 0, psin6 ? htons(psin6->sin6_port) : 0); - } else - tst_resm(TPASS, "getaddrinfo IPv6 0+service, PASSIVE"); - freeaddrinfo(aires); - } else - tst_resm(TEST_RETURN == EAI_BADFLAGS ? TPASS : TFAIL, - "getaddrinfo IPv6 0+service, PASSIVE (\"\", \"%s\") " - "returns %ld (\"%s\")", service, TEST_RETURN, - gai_strerror(TEST_RETURN)); + freeaddrinfo(aires); + return; + } else { + tst_resm(TINFO, "getaddrinfo IPv6 0+service, PASSIVE"); + freeaddrinfo(aires); + } + } else { + if (TEST_RETURN == EAI_BADFLAGS) { + tst_resm(TINFO, "getaddrinfo IPv6 0+service, PASSIVE" + " (\"\", \"%s\") returns %ld (\"%s\")", service, + TEST_RETURN, gai_strerror(TEST_RETURN)); + } else { + tst_resm(TFAIL, "getaddrinfo IPv6 0+service, PASSIVE" + " (\"\", \"%s\") returns %ld (\"%s\")", service, + TEST_RETURN, gai_strerror(TEST_RETURN)); + return; + } + } /* test 18, IPv6 0+service */ - memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_INET6; hints.ai_socktype = SOCK_STREAM; @@ -760,19 +835,28 @@ void gaiv6(void) psin6 ? psin6->sin6_family : 0, psin6 ? psin6->sin6_port : 0, psin6 ? htons(psin6->sin6_port) : 0); - } else - tst_resm(TPASS, "getaddrinfo IPv6 0+service"); - freeaddrinfo(aires); - } else - tst_resm(TEST_RETURN == EAI_BADFLAGS ? TPASS : TFAIL, - "getaddrinfo IPv6 0+service (\"\", \"%s\") returns %ld " - "(\"%s\")", service, TEST_RETURN, - gai_strerror(TEST_RETURN)); + freeaddrinfo(aires); + return; + } else { + tst_resm(TINFO, "getaddrinfo IPv6 0+service"); + freeaddrinfo(aires); + } + } else { + if (TEST_RETURN == EAI_BADFLAGS) { + tst_resm(TINFO, "getaddrinfo IPv6 0+service" + " (\"\", \"%s\") returns %ld (\"%s\")", service, + TEST_RETURN, gai_strerror(TEST_RETURN)); + } else { + tst_resm(TFAIL, "getaddrinfo IPv6 0+service" + " (\"\", \"%s\") returns %ld (\"%s\")", service, + TEST_RETURN, gai_strerror(TEST_RETURN)); + return; + } + } /* test 19, IPv6 host+service, AI_NUMERICSERV */ - #ifndef AI_NUMERICSERV - tst_resm(TFAIL, "getaddrinfo IPv6 host+service, AI_NUMERICSERV: flag " + tst_resm(TCONF, "getaddrinfo IPv6 host+service, AI_NUMERICSERV: flag " "not implemented"); #else memset(&hints, 0, sizeof(hints)); @@ -786,15 +870,17 @@ void gaiv6(void) "getaddrinfo IPv6 host+service, AI_NUMERICSERV: " "returns %ld (\"%s\") expected %d (EAI_NONAME)", TEST_RETURN, gai_strerror(TEST_RETURN), EAI_NONAME); + if (!TEST_RETURN) + freeaddrinfo(aires); + return; } else - tst_resm(TPASS, + tst_resm(TINFO, "getaddrinfo IPv6 host+service, AI_NUMERICSERV"); if (!TEST_RETURN) freeaddrinfo(aires); #endif /* AI_NUMERICSERV */ /* test 20, IPv6 SOCK_STREAM/IPPROTO_UDP hints */ - memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_INET6; hints.ai_socktype = SOCK_STREAM; @@ -806,12 +892,13 @@ void gaiv6(void) tst_resm(TFAIL, "getaddrinfo IPv6 SOCK_STREAM/IPPROTO_UDP " "hints"); freeaddrinfo(aires); - } else - tst_resm(TPASS, "getaddrinfo IPv6 SOCK_STREAM/IPPROTO_UDP " + return; + } else { + tst_resm(TINFO, "getaddrinfo IPv6 SOCK_STREAM/IPPROTO_UDP " "hints"); + } /* test 21, IPv6 socktype 0, 513 */ - memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_INET6; hints.ai_socktype = 0; @@ -850,20 +937,31 @@ void gaiv6(void) psin6 ? psin6->sin6_family : 0, psin6 ? psin6->sin6_port : 0, psin6 ? htons(psin6->sin6_port) : 0); - } else if (got_tcp && got_udp) - tst_resm(TPASS, "getaddrinfo IPv6 socktype 0,513"); - else + freeaddrinfo(aires); + return; + } else if (got_tcp && got_udp) { + tst_resm(TINFO, "getaddrinfo IPv6 socktype 0,513"); + freeaddrinfo(aires); + } else { tst_resm(TFAIL, "getaddrinfo IPv6 socktype 0,513 TCP %d" " UDP %d", got_tcp, got_udp); - freeaddrinfo(aires); - } else - tst_resm(TEST_RETURN == EAI_BADFLAGS ? TPASS : TFAIL, - "getaddrinfo IPv6 socktype 0,513 (\"\", \"%s\") returns" - " %ld (\"%s\")", service, TEST_RETURN, - gai_strerror(TEST_RETURN)); + freeaddrinfo(aires); + return; + } + } else { + if (TEST_RETURN == EAI_BADFLAGS) { + tst_resm(TINFO, "getaddrinfo IPv6 socktype 0,513" + " (\"\", \"%s\") returns %ld (\"%s\")", service, + TEST_RETURN, gai_strerror(TEST_RETURN)); + } else { + tst_resm(TFAIL, "getaddrinfo IPv6 socktype 0,513" + " (\"\", \"%s\") returns %ld (\"%s\")", service, + TEST_RETURN, gai_strerror(TEST_RETURN)); + return; + } + } /* test 22, IPv6 AI_V4MAPPED */ - memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_INET6; hints.ai_flags = AI_V4MAPPED; @@ -892,57 +990,18 @@ void gaiv6(void) psin6 ? psin6->sin6_family : 0, psin6 ? psin6->sin6_port : 0, psin6 ? htons(psin6->sin6_port) : 0); - } else - tst_resm(TPASS, "getaddrinfo IPv6 AI_V4MAPPED"); - freeaddrinfo(aires); - } else - tst_resm(TEST_RETURN ? TFAIL : TPASS, "getaddrinfo IPv6 " + freeaddrinfo(aires); + return; + } else { + tst_resm(TINFO, "getaddrinfo IPv6 AI_V4MAPPED"); + freeaddrinfo(aires); + } + } else { + tst_resm(TFAIL, "getaddrinfo IPv6 " "AI_V4MAPPED (\"%s\") returns %ld (\"%s\")", hostname, TEST_RETURN, gai_strerror(TEST_RETURN)); -} - -/* this prints an addrinfo list; useful for debugging */ -void dumpres(struct addrinfo *pai) -{ - int count = 1; - for (; pai; pai = pai->ai_next, count++) { - printf("result %d [0x%p]\n", count, pai); - printf("\tai_flags %x\n", pai->ai_flags); - printf("\tai_family %d\n", pai->ai_family); - printf("\tai_socktype %d\n", pai->ai_socktype); - printf("\tai_protocol %d\n", pai->ai_protocol); - printf("\tai_addrlen %d\n", pai->ai_addrlen); - printf("\tai_canonname \"%s\"\n", pai->ai_canonname); - printf("\tai_addr.sa_family %x\n", pai->ai_addr->sa_family); - if (pai->ai_addr->sa_family == AF_INET) { - char buf[1024]; - struct sockaddr_in *psin = - (struct sockaddr_in *)pai->ai_addr; - - if (!inet_ntop(AF_INET, &psin->sin_addr, buf, - sizeof(buf))) - buf[0] = '\0'; - printf("\tai_addr.sin_addr \"%s\"\n", buf); - } else if (pai->ai_addr->sa_family == AF_INET6) { - char buf[1024]; - - struct sockaddr_in6 *psin6 = - (struct sockaddr_in6 *)pai->ai_addr; - if (!inet_ntop(AF_INET6, &psin6->sin6_addr, buf, - sizeof(buf))) - buf[0] = '\0'; - printf("\tai_addr.sin6_addr \"%s\"\n", buf); - - } - printf("\tai_next %p\n", pai->ai_next); + return; } -} -void setup(void) -{ - TEST_PAUSE; /* if -P option specified */ -} - -void cleanup(void) -{ + tst_resm(TPASS, "getaddrinfo tests (v6) succeed"); } -- 1.9.3 ------------------------------------------------------------------------------ _______________________________________________ Ltp-list mailing list Ltp-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ltp-list