* Add 'static' before some functions and global variables. * Remove cleanup() function. * Remove useless comments. * Use SAFE_XXX(). * Modify the format of etab[] and ftab[]. * Some cleanup.
Signed-off-by: Zeng Linggang <zenglg...@cn.fujitsu.com> --- testcases/network/lib6/asapi_05.c | 273 +++++++++++++++----------------------- 1 file changed, 108 insertions(+), 165 deletions(-) diff --git a/testcases/network/lib6/asapi_05.c b/testcases/network/lib6/asapi_05.c index 9acc6a2..d51b912 100644 --- a/testcases/network/lib6/asapi_05.c +++ b/testcases/network/lib6/asapi_05.c @@ -1,38 +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: asapi_05 - * - * Test Description: - * These tests are for the "Advanced Sockets API" (RFC 3542) - * Verify that in6 and sockaddr fields are present. - * - * Usage: <for command-line> - * asapi_05 - * - * HISTORY - * 04/2005 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 <stdio.h> @@ -47,21 +30,20 @@ #include <netinet/icmp6.h> #include "test.h" +#include "safe_macros.h" #include "runcc.h" -char *TCID = "asapi_05"; /* Test program identifier. */ +char *TCID = "asapi_05"; -void setup(void); -void cleanup(void); +static void setup(void); -void icmp6_et(void); -void icmp6_ft(void); +static void icmp6_et(void); +static void icmp6_ft(void); int main(int argc, char *argv[]) { int lc; - /* Parse standard options given to run the test. */ tst_parse_opts(argc, argv, NULL, NULL); setup(); @@ -71,14 +53,12 @@ int main(int argc, char *argv[]) icmp6_ft(); } - cleanup(); - tst_exit(); } enum ttype { EXISTS, ALIAS, VALUE, DEFINED }; -struct etent { +static struct etent { char *et_tname; /* test name */ int et_type; /* test type */ char *et_incl; /* include file list */ @@ -92,76 +72,58 @@ struct etent { #define et_value ftun.fu_value #define et_dname ftun.fu_dname } etab[] = { -/* existence checks, RFC 3542 section 3 */ - { - "icmp6_filter icmp6_filt", EXISTS, ICMP6_H, "icmp6_filter", - "icmp6_filt", "0", { - "32"}}, { - "icmp6_filter icmp6_filt[0]", EXISTS, ICMP6_H, "icmp6_filter", - "icmp6_filt[0]", "0", { - "4"}}, { - "ICMP6_FILTER_WILLPASS", DEFINED, ICMP6_H, - "ICMP6_FILTER_WILLPASS", NULL, NULL, { - 0}}, { - "ICMP6_FILTER_WILLBLOCK", DEFINED, ICMP6_H, - "ICMP6_FILTER_WILLBLOCK", NULL, NULL, { - 0}}, { - "ICMP6_FILTER_SETPASS", DEFINED, ICMP6_H, - "ICMP6_FILTER_SETPASS", NULL, NULL, { - 0}}, { - "ICMP6_FILTER_SETBLOCK", DEFINED, ICMP6_H, - "ICMP6_FILTER_SETBLOCK", NULL, NULL, { - 0}}, { - "ICMP6_FILTER_SETPASSALL", DEFINED, ICMP6_H, - "ICMP6_FILTER_SETPASSALL", NULL, NULL, { - 0}}, { - "ICMP6_FILTER_SETBLOCKALL", DEFINED, ICMP6_H, - "ICMP6_FILTER_SETBLOCKALL", NULL, NULL, { - 0}}, { - "ICMP6_FILTER", DEFINED, ICMP6_H, "ICMP6_FILTER", NULL, NULL, { - 0}}, -/* existence checks, RFC 3542 section 4 */ -/* socket options */ - { - "IPV6_RECVPKTINFO", VALUE, IN_H, "IPV6_RECVPKTINFO", NULL, NULL, { - "IPV6_RECVPKTINFO"}}, { - "IPV6_RECVHOPLIMIT", VALUE, IN_H, "IPV6_RECVHOPLIMIT", NULL, - NULL, { - "IPV6_RECVHOPLIMIT"}}, { - "IPV6_RECVRTHDR", VALUE, IN_H, "IPV6_RECVRTHDR", NULL, NULL, { - "IPV6_RECVRTHDR"}}, { - "IPV6_RECVHOPOPTS", VALUE, IN_H, "IPV6_RECVHOPOPTS", NULL, NULL, { - "IPV6_RECVHOPOPTS"}}, { - "IPV6_RECVDSTOPTS", VALUE, IN_H, "IPV6_RECVDSTOPTS", NULL, NULL, { - "IPV6_RECVDSTOPTS"}}, { - "IPV6_RECVTCLASS", VALUE, IN_H, "IPV6_RECVTCLASS", NULL, NULL, { - "IPV6_RECVTCLASS"}}, -/* cmsg types */ - { - "IPV6_PKTINFO", DEFINED, IN_H, "IPV6_PKTINFO", NULL, NULL, { - 0}}, { - "IPV6_HOPLIMIT", DEFINED, IN_H, "IPV6_HOPLIMIT", NULL, NULL, { - 0}}, { - "IPV6_NEXTHOP", DEFINED, IN_H, "IPV6_NEXTHOP", NULL, NULL, { - 0}}, { - "IPV6_RTHDR", DEFINED, IN_H, "IPV6_RTHDR", NULL, NULL, { - 0}}, { - "IPV6_HOPOPTS", DEFINED, IN_H, "IPV6_HOPOPTS", NULL, NULL, { - 0}}, { - "IPV6_DSTOPTS", DEFINED, IN_H, "IPV6_DSTOPTS", NULL, NULL, { - 0}}, { - "IPV6_RTHDRDSTOPTS", DEFINED, IN_H, "IPV6_RTHDRDSTOPTS", NULL, - NULL, { - 0}}, { - "IPV6_TCLASS", DEFINED, IN_H, "IPV6_TCLASS", NULL, NULL, { -0}},}; - -#define ETCOUNT (sizeof(etab)/sizeof(etab[0])) + /* existence checks, RFC 3542 section 3 */ + {"icmp6_filter icmp6_filt", EXISTS, ICMP6_H, "icmp6_filter", + "icmp6_filt", "0", {"32"} }, + {"icmp6_filter icmp6_filt[0]", EXISTS, ICMP6_H, "icmp6_filter", + "icmp6_filt[0]", "0", {"4"} }, + {"ICMP6_FILTER_WILLPASS", DEFINED, ICMP6_H, "ICMP6_FILTER_WILLPASS", + NULL, NULL, {0} }, + {"ICMP6_FILTER_WILLBLOCK", DEFINED, ICMP6_H, "ICMP6_FILTER_WILLBLOCK", + NULL, NULL, {0} }, + {"ICMP6_FILTER_SETPASS", DEFINED, ICMP6_H, "ICMP6_FILTER_SETPASS", NULL, + NULL, {0} }, + {"ICMP6_FILTER_SETBLOCK", DEFINED, ICMP6_H, "ICMP6_FILTER_SETBLOCK", + NULL, NULL, {0} }, + {"ICMP6_FILTER_SETPASSALL", DEFINED, ICMP6_H, "ICMP6_FILTER_SETPASSALL", + NULL, NULL, {0} }, + {"ICMP6_FILTER_SETBLOCKALL", DEFINED, ICMP6_H, + "ICMP6_FILTER_SETBLOCKALL", NULL, NULL, {0} }, + {"ICMP6_FILTER", DEFINED, ICMP6_H, "ICMP6_FILTER", NULL, NULL, {0} }, + /* existence checks, RFC 3542 section 4 */ + /* socket options */ + {"IPV6_RECVPKTINFO", VALUE, IN_H, "IPV6_RECVPKTINFO", NULL, NULL, + {"IPV6_RECVPKTINFO"} }, + {"IPV6_RECVHOPLIMIT", VALUE, IN_H, "IPV6_RECVHOPLIMIT", NULL, NULL, + {"IPV6_RECVHOPLIMIT"} }, + {"IPV6_RECVRTHDR", VALUE, IN_H, "IPV6_RECVRTHDR", NULL, NULL, + {"IPV6_RECVRTHDR"} }, + {"IPV6_RECVHOPOPTS", VALUE, IN_H, "IPV6_RECVHOPOPTS", NULL, NULL, + {"IPV6_RECVHOPOPTS"} }, + {"IPV6_RECVDSTOPTS", VALUE, IN_H, "IPV6_RECVDSTOPTS", NULL, NULL, + {"IPV6_RECVDSTOPTS"} }, + {"IPV6_RECVTCLASS", VALUE, IN_H, "IPV6_RECVTCLASS", NULL, NULL, + {"IPV6_RECVTCLASS"} }, + /* cmsg types */ + {"IPV6_PKTINFO", DEFINED, IN_H, "IPV6_PKTINFO", NULL, NULL, {0} }, + {"IPV6_HOPLIMIT", DEFINED, IN_H, "IPV6_HOPLIMIT", NULL, NULL, {0} }, + {"IPV6_NEXTHOP", DEFINED, IN_H, "IPV6_NEXTHOP", NULL, NULL, {0} }, + {"IPV6_RTHDR", DEFINED, IN_H, "IPV6_RTHDR", NULL, NULL, {0} }, + {"IPV6_HOPOPTS", DEFINED, IN_H, "IPV6_HOPOPTS", NULL, NULL, {0} }, + {"IPV6_DSTOPTS", DEFINED, IN_H, "IPV6_DSTOPTS", NULL, NULL, {0} }, + {"IPV6_RTHDRDSTOPTS", DEFINED, IN_H, "IPV6_RTHDRDSTOPTS", NULL, NULL, + {0} }, + {"IPV6_TCLASS", DEFINED, IN_H, "IPV6_TCLASS", NULL, NULL, {0} }, +}; + +#define ETCOUNT ARRAY_SIZE(etab) + +int TST_TOTAL = ETCOUNT; /* existence tests */ -void icmp6_et(void) +static void icmp6_et(void) { - int i; + unsigned int i; for (i = 0; i < ETCOUNT; ++i) { switch (etab[i].et_type) { @@ -190,60 +152,52 @@ void icmp6_et(void) } } -void setup(void) +static void setup(void) { - TEST_PAUSE; /* if -P option specified */ + TEST_PAUSE; tst_require_root(NULL); } -void cleanup(void) -{ -} - -/* - * This is for old, broken glibc-header icmp6_filter structure definitions. - * If icmp6.h has struct icmp6_filter with field named "data" instead - * of the standard "icmp_filt", uncomment this line. - */ -/*#define icmp_filt data */ - -enum tt { T_WILLPASS, T_WILLBLOCK, T_SETPASS, T_SETBLOCK, T_SETPASSALL, +enum tt { + T_WILLPASS, + T_WILLBLOCK, + T_SETPASS, + T_SETBLOCK, + T_SETPASSALL, T_SETBLOCKALL }; -struct ftent { - char *ft_tname; /* test name, for logging */ + +static struct ftent { + char *ft_tname; /* test name, for logging */ unsigned char ft_sndtype; /* send type field */ unsigned char ft_flttype; /* filter type field */ - enum tt ft_test; /* what macro to test */ - int ft_expected; /* packet should pass? */ + enum tt ft_test; /* what macro to test */ + int ft_expected; /* packet should pass? */ } ftab[] = { - { - "ICMP6_FILTER_SETPASS s 20 f 20", 20, 20, T_SETPASS, 1}, { - "ICMP6_FILTER_SETPASS s 20 f 21", 20, 21, T_SETPASS, 0}, { - "ICMP6_FILTER_SETBLOCK s 20 f 20", 20, 20, T_SETBLOCK, 0}, { - "ICMP6_FILTER_SETBLOCK s 20 f 21", 20, 21, T_SETBLOCK, 1}, { - "ICMP6_FILTER_PASSALL s 20", 20, 0, T_SETPASSALL, 1}, { - "ICMP6_FILTER_PASSALL s 20", 21, 0, T_SETPASSALL, 1}, { - "ICMP6_FILTER_BLOCKALL s 20", 20, 0, T_SETBLOCKALL, 0}, { - "ICMP6_FILTER_BLOCKALL s 20", 21, 0, T_SETBLOCKALL, 0}, { - "ICMP6_FILTER_WILLBLOCK s 20 f 21", 20, 21, T_WILLBLOCK, 0}, { - "ICMP6_FILTER_WILLBLOCK s 20 f 20", 20, 20, T_WILLBLOCK, 1}, { - "ICMP6_FILTER_WILLPASS s 20 f 21", 20, 21, T_WILLPASS, 0}, { -"ICMP6_FILTER_WILLPASS s 22 f 22", 22, 22, T_WILLPASS, 1},}; - -#define FTCOUNT (sizeof(ftab)/sizeof(ftab[0])) - -int ic6_send1(char *tname, unsigned char type) + {"ICMP6_FILTER_SETPASS s 20 f 20", 20, 20, T_SETPASS, 1}, + {"ICMP6_FILTER_SETPASS s 20 f 21", 20, 21, T_SETPASS, 0}, + {"ICMP6_FILTER_SETBLOCK s 20 f 20", 20, 20, T_SETBLOCK, 0}, + {"ICMP6_FILTER_SETBLOCK s 20 f 21", 20, 21, T_SETBLOCK, 1}, + {"ICMP6_FILTER_PASSALL s 20", 20, 0, T_SETPASSALL, 1}, + {"ICMP6_FILTER_PASSALL s 20", 21, 0, T_SETPASSALL, 1}, + {"ICMP6_FILTER_BLOCKALL s 20", 20, 0, T_SETBLOCKALL, 0}, + {"ICMP6_FILTER_BLOCKALL s 20", 21, 0, T_SETBLOCKALL, 0}, + {"ICMP6_FILTER_WILLBLOCK s 20 f 21", 20, 21, T_WILLBLOCK, 0}, + {"ICMP6_FILTER_WILLBLOCK s 20 f 20", 20, 20, T_WILLBLOCK, 1}, + {"ICMP6_FILTER_WILLPASS s 20 f 21", 20, 21, T_WILLPASS, 0}, + {"ICMP6_FILTER_WILLPASS s 22 f 22", 22, 22, T_WILLPASS, 1}, +}; + +#define FTCOUNT ARRAY_SIZE(ftab) + +static int ic6_send1(char *tname, unsigned char type) { struct sockaddr_in6 sin6; struct icmp6_hdr ic6; int s; - s = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6); - if (s == -1) { - tst_resm(TBROK, "%s: socket failed", tname); - return 1; - } + s = SAFE_SOCKET(NULL, AF_INET6, SOCK_RAW, IPPROTO_ICMPV6); + memset(&ic6, 0, sizeof(ic6)); ic6.icmp6_type = type; ic6.icmp6_data32[0] = htonl(getpid()); @@ -259,7 +213,7 @@ int ic6_send1(char *tname, unsigned char type) return 0; } -int ic6_recv1(char *tname, int sall, int sf) +static int ic6_recv1(char *tname, int sall, int sf) { fd_set readfds, readfds_saved; struct timeval tv; @@ -302,7 +256,7 @@ int ic6_recv1(char *tname, int sall, int sf) return -1; } /* if packet check succeeds... */ - if (htonl(pic6->icmp6_data32[0]) == getpid()) + if (htonl(pic6->icmp6_data32[0]) == (uint32_t)getpid()) gotall = 1; } if (FD_ISSET(sf, &readfds)) { @@ -313,7 +267,7 @@ int ic6_recv1(char *tname, int sall, int sf) return -1; } /* if packet check succeeds... */ - if (htonl(pic6->icmp6_data32[0]) == getpid()) + if (htonl(pic6->icmp6_data32[0]) == (uint32_t)getpid()) gotone = 1; } memcpy(&readfds, &readfds_saved, sizeof(readfds)); @@ -328,18 +282,14 @@ int ic6_recv1(char *tname, int sall, int sf) } /* functional tests */ -void icmp6_ft(void) +static void icmp6_ft(void) { struct icmp6_filter i6f; int sall, sf; - int i; + unsigned int i; + + sall = SAFE_SOCKET(NULL, PF_INET6, SOCK_RAW, IPPROTO_ICMPV6); - sall = socket(PF_INET6, SOCK_RAW, IPPROTO_ICMPV6); - if (sall < 0) { - tst_resm(TBROK | TERRNO, - "icmp6_ft socket: can't create sall socket"); - return; - } ICMP6_FILTER_SETPASSALL(&i6f); if (setsockopt(sall, IPPROTO_ICMPV6, ICMP6_FILTER, &i6f, sizeof(i6f)) < 0) { @@ -347,12 +297,7 @@ void icmp6_ft(void) "setsockopt pass all ICMP6_FILTER failed"); } - sf = socket(PF_INET6, SOCK_RAW, IPPROTO_ICMPV6); - if (sf < 0) { - tst_resm(TBROK | TERRNO, - "icmp6_ft socket: can't create test socket"); - return; - } + sf = SAFE_SOCKET(NULL, PF_INET6, SOCK_RAW, IPPROTO_ICMPV6); int rv; @@ -413,5 +358,3 @@ void icmp6_ft(void) tst_resm(TPASS, "%s", ftab[i].ft_tname); } } - -int TST_TOTAL = ETCOUNT; -- 1.9.3 ------------------------------------------------------------------------------ _______________________________________________ Ltp-list mailing list Ltp-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ltp-list