From: Xing Gu <gux...@cn...> - 2015-01-23 09:40:17
|
* Remove useless comments. * Modify the format of ftab[]. * Move the test body from main() to do_test(). Signed-off-by: Xing Gu <gux...@cn...> --- testcases/network/lib6/asapi_02.c | 635 ++++++++++++++++---------------------- 1 file changed, 274 insertions(+), 361 deletions(-) diff --git a/testcases/network/lib6/asapi_02.c b/testcases/network/lib6/asapi_02.c index f597610..1258618 100644 --- a/testcases/network/lib6/asapi_02.c +++ b/testcases/network/lib6/asapi_02.c @@ -1,6 +1,7 @@ /* * * Copyright (c) International Business Machines Corp., 2001 + * Author: David L Stevens * * 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 @@ -13,26 +14,13 @@ * 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 + * 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_02 - * - * 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_02 - * - * HISTORY - * 01/2005 written by David L Stevens - * - * RESTRICTIONS: - * None. - * + * Description: + * These tests are for the "Advanced Sockets API" (RFC 3542) + * Verify that in6 and sockaddr fields are present. */ #include <stdio.h> @@ -47,10 +35,6 @@ #include "usctest.h" #include "runcc.h" -char *TCID = "asapi_02"; /* Test program identifier. */ - -void setup(void), cleanup(void); - enum ttype { EXISTS, ALIAS, VALUE }; struct ftent { @@ -67,370 +51,299 @@ struct ftent { #define ft_value ftun.fu_value #define ft_dname ftun.fu_dname } ftab[] = { -/* Section 2.2, icmp6_hdr & defines */ - { - "icmp6_hdr icmp6_type", EXISTS, ICMP6_H, "icmp6_hdr", - "icmp6_type", "0", { - "1"}}, { - "icmp6_hdr icmp6_code", EXISTS, ICMP6_H, "icmp6_hdr", - "icmp6_code", "1", { - "1"}}, { - "icmp6_hdr icmp6_cksum", EXISTS, ICMP6_H, "icmp6_hdr", - "icmp6_cksum", "2", { - "2"}}, { - "icmp6_hdr icmp6_un_data32 element", EXISTS, ICMP6_H, - "icmp6_hdr", "icmp6_dataun.icmp6_un_data32[0]", "4", { - "4"}}, { - "icmp6_hdr icmp6_un_data32 array", EXISTS, ICMP6_H, "icmp6_hdr", - "icmp6_dataun.icmp6_un_data32", "4", { - "4"}}, { - "icmp6_hdr icmp6_un_data16 element", EXISTS, ICMP6_H, - "icmp6_hdr", "icmp6_dataun.icmp6_un_data16[0]", "4", { - "2"}}, { - "icmp6_hdr icmp6_un_data16 array", EXISTS, ICMP6_H, "icmp6_hdr", - "icmp6_dataun.icmp6_un_data16", "4", { - "4"}}, { - "icmp6_hdr icmp6_un_data8 element", EXISTS, ICMP6_H, - "icmp6_hdr", "icmp6_dataun.icmp6_un_data8[0]", "4", { - "1"}}, { - "icmp6_hdr icmp6_un_data8 array", EXISTS, ICMP6_H, "icmp6_hdr", - "icmp6_dataun.icmp6_un_data8", "4", { - "4"}}, -/* icmp6_hdr definitions */ - { - "icmp6_hdr icmp6_data32 define", ALIAS, ICMP6_H, "icmp6_hdr", - "icmp6_dataun.icmp6_un_data32", NULL, { - "icmp6_data32"}}, { - "icmp6_hdr icmp6_data16 define", ALIAS, ICMP6_H, "icmp6_hdr", - "icmp6_dataun.icmp6_un_data16", NULL, { - "icmp6_data16"}}, { - "icmp6_hdr icmp6_data8 define", ALIAS, ICMP6_H, "icmp6_hdr", - "icmp6_dataun.icmp6_un_data8", NULL, { - "icmp6_data8"}}, { - "icmp6_hdr icmp6_pptr define", ALIAS, ICMP6_H, "icmp6_hdr", - "icmp6_dataun.icmp6_un_data32[0]", NULL, { - "icmp6_pptr"}}, { - "icmp6_hdr icmp6_mtu define", ALIAS, ICMP6_H, "icmp6_hdr", - "icmp6_dataun.icmp6_un_data32[0]", NULL, { - "icmp6_mtu"}}, { - "icmp6_hdr icmp6_id define", ALIAS, ICMP6_H, "icmp6_hdr", - "icmp6_dataun.icmp6_un_data16[0]", NULL, { - "icmp6_id"}}, { - "icmp6_hdr icmp6_seq define", ALIAS, ICMP6_H, "icmp6_hdr", - "icmp6_dataun.icmp6_un_data16[1]", NULL, { - "icmp6_seq"}}, { - "icmp6_hdr icmp6_maxdelay define", ALIAS, ICMP6_H, "icmp6_hdr", - "icmp6_dataun.icmp6_un_data16[0]", NULL, { - "icmp6_maxdelay"}}, -/* Section 2.2.1 ICMPv6 Type and Code Values */ - { - "ICMP6_DST_UNREACH", VALUE, ICMP6_H, "ICMP6_DST_UNREACH", - NULL, NULL, { - "1"}}, { - "ICMP6_PACKET_TOO_BIG", VALUE, ICMP6_H, "ICMP6_PACKET_TOO_BIG", - NULL, NULL, { - "2"}}, { - "ICMP6_TIME_EXCEEDED", VALUE, ICMP6_H, "ICMP6_TIME_EXCEEDED", - NULL, NULL, { - "3"}}, { - "ICMP6_PARAM_PROB", VALUE, ICMP6_H, "ICMP6_PARAM_PROB", - NULL, NULL, { - "4"}}, { - "ICMP6_INFOMSG_MASK", VALUE, ICMP6_H, "ICMP6_INFOMSG_MASK", - NULL, NULL, { - "0x80"}}, { - "ICMP6_ECHO_REQUEST", VALUE, ICMP6_H, "ICMP6_ECHO_REQUEST", - NULL, NULL, { - "128"}}, { - "ICMP6_ECHO_REPLY", VALUE, ICMP6_H, "ICMP6_ECHO_REPLY", - NULL, NULL, { - "129"}}, { - "ICMP6_DST_UNREACH_NOROUTE", VALUE, ICMP6_H, - "ICMP6_DST_UNREACH_NOROUTE", NULL, NULL, { - "0"}}, { - "ICMP6_DST_UNREACH_ADMIN", VALUE, ICMP6_H, - "ICMP6_DST_UNREACH_ADMIN", NULL, NULL, { - "1"}}, { - "ICMP6_DST_UNREACH_BEYONDSCOPE", VALUE, ICMP6_H, - "ICMP6_DST_UNREACH_BEYONDSCOPE", NULL, NULL, { - "2"}}, { - "ICMP6_DST_UNREACH_ADDR", VALUE, ICMP6_H, - "ICMP6_DST_UNREACH_ADDR", NULL, NULL, { - "3"}}, { - "ICMP6_DST_UNREACH_NOPORT", VALUE, ICMP6_H, - "ICMP6_DST_UNREACH_NOPORT", NULL, NULL, { - "4"}}, { - "ICMP6_TIME_EXCEED_TRANSIT", VALUE, ICMP6_H, - "ICMP6_TIME_EXCEED_TRANSIT", NULL, NULL, { - "0"}}, { - "ICMP6_TIME_EXCEED_REASSEMBLY", VALUE, ICMP6_H, - "ICMP6_TIME_EXCEED_REASSEMBLY", NULL, NULL, { - "1"}}, { - "ICMP6_PARAMPROB_HEADER", VALUE, ICMP6_H, - "ICMP6_PARAMPROB_HEADER", NULL, NULL, { - "0"}}, { - "ICMP6_PARAMPROB_NEXTHEADER", VALUE, ICMP6_H, - "ICMP6_PARAMPROB_NEXTHEADER", NULL, NULL, { - "1"}}, { - "ICMP6_PARAMPROB_OPTION", VALUE, ICMP6_H, - "ICMP6_PARAMPROB_OPTION", NULL, NULL, { - "2"}}, -/* section 2.2.2, Neighbor Discovery */ - { - "ND_ROUTER_SOLICIT", VALUE, ICMP6_H, "ND_ROUTER_SOLICIT", - NULL, NULL, { - "133"}}, { - "ND_ROUTER_ADVERT", VALUE, ICMP6_H, "ND_ROUTER_ADVERT", - NULL, NULL, { - "134"}}, { - "ND_NEIGHBOR_SOLICIT", VALUE, ICMP6_H, "ND_NEIGHBOR_SOLICIT", - NULL, NULL, { - "135"}}, { - "ND_NEIGHBOR_ADVERT", VALUE, ICMP6_H, "ND_NEIGHBOR_ADVERT", - NULL, NULL, { - "136"}}, { - "ND_REDIRECT", VALUE, ICMP6_H, "ND_REDIRECT", NULL, NULL, { - "137"}}, { - "nd_router_solicit nd_rs_hdr", EXISTS, ICMP6_H, - "nd_router_solicit", "nd_rs_hdr", "0", { - "sizeof(struct icmp6_hdr)"}}, { - "nd_router_solicit nd_rs_type define", ALIAS, ICMP6_H, - "nd_router_solicit", "nd_rs_hdr.icmp6_type", NULL, { - "nd_rs_type"}}, { - "nd_router_solicit nd_rs_code define", ALIAS, ICMP6_H, - "nd_router_solicit", "nd_rs_hdr.icmp6_code", NULL, { - "nd_rs_code"}}, { - "nd_router_solicit nd_rs_cksum define", ALIAS, ICMP6_H, - "nd_router_solicit", "nd_rs_hdr.icmp6_cksum", NULL, { - "nd_rs_cksum"}}, { - "nd_router_solicit nd_rs_reserved define", ALIAS, ICMP6_H, - "nd_router_solicit", "nd_rs_hdr.icmp6_data32[0]", NULL, { - "nd_rs_reserved"}}, { - "nd_router_advert nd_ra_hdr", EXISTS, ICMP6_H, - "nd_router_advert", "nd_ra_hdr", "0", { - "sizeof(struct icmp6_hdr)"}}, { - "nd_router_advert nd_ra_reachable", EXISTS, ICMP6_H, - "nd_router_advert", "nd_ra_reachable", - "sizeof(struct icmp6_hdr)", { - "4"}}, { - "nd_router_advert nd_ra_retransmit", EXISTS, ICMP6_H, - "nd_router_advert", "nd_ra_retransmit", - "sizeof(struct icmp6_hdr)+4", { - "4"}}, { - "nd_router_advert nd_ra_type define", ALIAS, ICMP6_H, - "nd_router_advert", "nd_ra_hdr.icmp6_type", NULL, { - "nd_ra_type"}}, { - "nd_router_advert nd_ra_code define", ALIAS, ICMP6_H, - "nd_router_advert", "nd_ra_hdr.icmp6_code", NULL, { - "nd_ra_code"}}, { - "nd_router_advert nd_ra_cksum define", ALIAS, ICMP6_H, - "nd_router_advert", "nd_ra_hdr.icmp6_cksum", NULL, { - "nd_ra_cksum"}}, { - "nd_router_advert nd_ra_curhoplimit define", ALIAS, ICMP6_H, - "nd_router_advert", "nd_ra_hdr.icmp6_data8[0]", NULL, { - "nd_ra_curhoplimit"}}, { - "nd_router_advert nd_ra_flags_reserved define", ALIAS, ICMP6_H, - "nd_router_advert", "nd_ra_hdr.icmp6_data8[1]", NULL, { - "nd_ra_flags_reserved"}}, { - "ND_RA_FLAG_MANAGED", VALUE, ICMP6_H, "ND_RA_FLAG_MANAGED", - NULL, NULL, { - "0x80"}}, { - "ND_RA_FLAG_OTHER", VALUE, ICMP6_H, "ND_RA_FLAG_OTHER", - NULL, NULL, { - "0x40"}}, { - "nd_router_advert nd_ra_router_lifetime define", ALIAS, ICMP6_H, - "nd_router_advert", "nd_ra_hdr.icmp6_data16[1]", NULL, { - "nd_ra_router_lifetime"}}, { - "nd_neighbor_solicit nd_ns_hdr", EXISTS, ICMP6_H, - "nd_neighbor_solicit", "nd_ns_hdr", "0", { - "sizeof(struct icmp6_hdr)"}}, { - "nd_neighbor_solicit nd_ns_target", EXISTS, ICMP6_H, - "nd_neighbor_solicit", "nd_ns_target", - "sizeof(struct icmp6_hdr)", { - "sizeof(struct in6_addr)"}}, { - "nd_neighbor_solicit nd_ns_type define", ALIAS, ICMP6_H, - "nd_neighbor_solicit", "nd_ns_hdr.icmp6_type", NULL, { - "nd_ns_type"}}, { - "nd_neighbor_solicit nd_ns_code define", ALIAS, ICMP6_H, - "nd_neighbor_solicit", "nd_ns_hdr.icmp6_code", NULL, { - "nd_ns_code"}}, { - "nd_neighbor_solicit nd_ns_cksum define", ALIAS, ICMP6_H, - "nd_neighbor_solicit", "nd_ns_hdr.icmp6_cksum", NULL, { - "nd_ns_cksum"}}, { - "nd_neighbor_solicit nd_ns_reserved define", ALIAS, ICMP6_H, - "nd_neighbor_solicit", "nd_ns_hdr.icmp6_data32[0]", NULL, { - "nd_ns_reserved"}}, { - "nd_neighbor_advert nd_na_hdr", EXISTS, ICMP6_H, - "nd_neighbor_advert", "nd_na_hdr", "0", { - "sizeof(struct icmp6_hdr)"}}, { - "nd_neighbor_advert nd_na_target", EXISTS, ICMP6_H, - "nd_neighbor_advert", "nd_na_target", - "sizeof(struct icmp6_hdr)", { - "sizeof(struct in6_addr)"}}, { - "nd_neighbor_advert nd_na_type define", ALIAS, ICMP6_H, - "nd_neighbor_advert", "nd_na_hdr.icmp6_type", NULL, { - "nd_na_type"}}, { - "nd_neighbor_advert nd_na_code define", ALIAS, ICMP6_H, - "nd_neighbor_advert", "nd_na_hdr.icmp6_code", NULL, { - "nd_na_code"}}, { - "nd_neighbor_advert nd_na_cksum define", ALIAS, ICMP6_H, - "nd_neighbor_advert", "nd_na_hdr.icmp6_cksum", NULL, { - "nd_na_cksum"}}, { - "nd_neighbor_advert nd_na_flags_reserved define", ALIAS, - ICMP6_H, "nd_neighbor_advert", "nd_na_hdr.icmp6_data32[0]", - NULL, { - "nd_na_flags_reserved"}}, { - "ND_NA_FLAG_ROUTER", VALUE, ICMP6_H, "ND_NA_FLAG_ROUTER", - NULL, NULL, { - "htonl(0x80000000)"}}, { - "ND_NA_FLAG_SOLICITED", VALUE, ICMP6_H, "ND_NA_FLAG_SOLICITED", - NULL, NULL, { - "htonl(0x40000000)"}}, { - "ND_NA_FLAG_OVERRIDE", VALUE, ICMP6_H, "ND_NA_FLAG_OVERRIDE", - NULL, NULL, { - "htonl(0x20000000)"}}, { - "nd_redirect nd_rd_hdr", EXISTS, ICMP6_H, "nd_redirect", - "nd_rd_hdr", "0", { - "sizeof(struct icmp6_hdr)"}}, { - "nd_redirect nd_rd_target", EXISTS, ICMP6_H, - "nd_redirect", "nd_rd_target", "sizeof(struct icmp6_hdr)", { - "sizeof(struct in6_addr)"}}, { - "nd_redirect nd_rd_dst", EXISTS, ICMP6_H, "nd_redirect", - "nd_rd_dst", - "sizeof(struct icmp6_hdr)+sizeof(struct in6_addr)", { - "sizeof(struct in6_addr)"}}, { - "nd_redirect nd_rd_type define", ALIAS, ICMP6_H, - "nd_neighbor_advert", "nd_na_hdr.icmp6_data32[0]", NULL, { - "nd_na_flags_reserved"}}, { - "nd_opt_hdr nd_rd_hdr", EXISTS, ICMP6_H, "nd_opt_hdr", - "nd_opt_type", "0", { - "1"}}, { - "nd_opt_hdr nd_rd_hdr", EXISTS, ICMP6_H, "nd_opt_hdr", - "nd_opt_len", "1", { - "1"}}, { - "ND_OPT_SOURCE_LINKADDR", VALUE, ICMP6_H, - "ND_OPT_SOURCE_LINKADDR", NULL, NULL, { - "1"}}, { - "ND_OPT_TARGET_LINKADDR", VALUE, ICMP6_H, - "ND_OPT_TARGET_LINKADDR", NULL, NULL, { - "2"}}, { - "ND_OPT_PREFIX_INFORMATION", VALUE, ICMP6_H, - "ND_OPT_PREFIX_INFORMATION", NULL, NULL, { - "3"}}, { - "ND_OPT_REDIRECTED_HEADER", VALUE, ICMP6_H, - "ND_OPT_REDIRECTED_HEADER", NULL, NULL, { - "4"}}, { - "ND_OPT_MTU", VALUE, ICMP6_H, "ND_OPT_MTU", NULL, NULL, { - "5"}}, { - "nd_opt_prefix_info nd_opt_pi_type", EXISTS, ICMP6_H, - "nd_opt_prefix_info", "nd_opt_pi_type", "0", { - "1"}}, { - "nd_opt_prefix_info nd_opt_pi_len", EXISTS, ICMP6_H, - "nd_opt_prefix_info", "nd_opt_pi_len", "1", { - "1"}}, { - "nd_opt_prefix_info nd_opt_pi_prefix_len", EXISTS, ICMP6_H, - "nd_opt_prefix_info", "nd_opt_pi_prefix_len", "2", { - "1"}}, { - "nd_opt_prefix_info nd_opt_pi_flags_reserved", EXISTS, ICMP6_H, - "nd_opt_prefix_info", "nd_opt_pi_flags_reserved", "3", { - "1"}}, { - "nd_opt_prefix_info nd_opt_pi_valid_time", EXISTS, ICMP6_H, - "nd_opt_prefix_info", "nd_opt_pi_valid_time", "4", { - "4"}}, { - "nd_opt_prefix_info nd_opt_pi_preferred_time", EXISTS, ICMP6_H, - "nd_opt_prefix_info", "nd_opt_pi_preferred_time", "8", { - "4"}}, { - "nd_opt_prefix_info nd_opt_pi_reserved2", EXISTS, ICMP6_H, - "nd_opt_prefix_info", "nd_opt_pi_reserved2", "12", { - "4"}}, { - "nd_opt_prefix_info nd_opt_pi_prefix", EXISTS, ICMP6_H, - "nd_opt_prefix_info", "nd_opt_pi_prefix", "16", { - "sizeof(struct in6_addr)"}}, { - "ND_OPT_PI_FLAG_ONLINK", VALUE, ICMP6_H, - "ND_OPT_PI_FLAG_ONLINK", NULL, NULL, { - "0x80"}}, { - "ND_OPT_PI_FLAG_AUTO", VALUE, ICMP6_H, "ND_OPT_PI_FLAG_AUTO", - NULL, NULL, { - "0x40"}}, { - "nd_opt_rd_hdr nd_opt_rh_type", EXISTS, ICMP6_H, - "nd_opt_rd_hdr", "nd_opt_rh_type", "0", { - "1"}}, { - "nd_opt_rd_hdr nd_opt_rh_len", EXISTS, ICMP6_H, "nd_opt_rd_hdr", - "nd_opt_rh_len", "1", { - "1"}}, { - "nd_opt_rd_hdr nd_opt_rh_reserved1", EXISTS, ICMP6_H, - "nd_opt_rd_hdr", "nd_opt_rh_reserved1", "2", { - "2"}}, { - "nd_opt_rd_hdr nd_opt_rh_reserved2", EXISTS, ICMP6_H, - "nd_opt_rd_hdr", "nd_opt_rh_reserved2", "4", { - "4"}}, { - "nd_opt_mtu nd_opt_mtu_type", EXISTS, ICMP6_H, "nd_opt_mtu", - "nd_opt_mtu_type", "0", { - "1"}}, { - "nd_opt_mtu nd_opt_mtu_len", EXISTS, ICMP6_H, "nd_opt_mtu", - "nd_opt_mtu_len", "1", { - "1"}}, { - "nd_opt_mtu nd_opt_mtu_reserved", EXISTS, ICMP6_H, "nd_opt_mtu", - "nd_opt_mtu_reserved", "2", { - "2"}}, { - "nd_opt_mtu nd_opt_mtu_mtu", EXISTS, ICMP6_H, "nd_opt_mtu", - "nd_opt_mtu_mtu", "4", { -"4"}},}; + /* Section 2.2, icmp6_hdr & defines */ + { "icmp6_hdr icmp6_type", EXISTS, ICMP6_H, "icmp6_hdr", + "icmp6_type", "0", {"1"} }, + { "icmp6_hdr icmp6_code", EXISTS, ICMP6_H, "icmp6_hdr", + "icmp6_code", "1", {"1"} }, + { "icmp6_hdr icmp6_cksum", EXISTS, ICMP6_H, "icmp6_hdr", + "icmp6_cksum", "2", {"2"} }, + { "icmp6_hdr icmp6_un_data32 element", EXISTS, ICMP6_H, + "icmp6_hdr", "icmp6_dataun.icmp6_un_data32[0]", "4", {"4"} }, + { "icmp6_hdr icmp6_un_data32 array", EXISTS, ICMP6_H, + "icmp6_hdr", "icmp6_dataun.icmp6_un_data32", "4", {"4"} }, + { "icmp6_hdr icmp6_un_data16 element", EXISTS, ICMP6_H, + "icmp6_hdr", "icmp6_dataun.icmp6_un_data16[0]", "4", {"2"} }, + { "icmp6_hdr icmp6_un_data16 array", EXISTS, ICMP6_H, + "icmp6_hdr", "icmp6_dataun.icmp6_un_data16", "4", {"4"} }, + { "icmp6_hdr icmp6_un_data8 element", EXISTS, ICMP6_H, + "icmp6_hdr", "icmp6_dataun.icmp6_un_data8[0]", "4", {"1"} }, + { "icmp6_hdr icmp6_un_data8 array", EXISTS, ICMP6_H, + "icmp6_hdr", "icmp6_dataun.icmp6_un_data8", "4", {"4"} }, + /* icmp6_hdr definitions */ + { "icmp6_hdr icmp6_data32 define", ALIAS, ICMP6_H, "icmp6_hdr", + "icmp6_dataun.icmp6_un_data32", NULL, {"icmp6_data32"} }, + { "icmp6_hdr icmp6_data16 define", ALIAS, ICMP6_H, "icmp6_hdr", + "icmp6_dataun.icmp6_un_data16", NULL, {"icmp6_data16"} }, + { "icmp6_hdr icmp6_data8 define", ALIAS, ICMP6_H, "icmp6_hdr", + "icmp6_dataun.icmp6_un_data8", NULL, {"icmp6_data8"} }, + { "icmp6_hdr icmp6_pptr define", ALIAS, ICMP6_H, "icmp6_hdr", + "icmp6_dataun.icmp6_un_data32[0]", NULL, {"icmp6_pptr"} }, + { "icmp6_hdr icmp6_mtu define", ALIAS, ICMP6_H, "icmp6_hdr", + "icmp6_dataun.icmp6_un_data32[0]", NULL, {"icmp6_mtu"} }, + { "icmp6_hdr icmp6_id define", ALIAS, ICMP6_H, "icmp6_hdr", + "icmp6_dataun.icmp6_un_data16[0]", NULL, {"icmp6_id"} }, + { "icmp6_hdr icmp6_seq define", ALIAS, ICMP6_H, "icmp6_hdr", + "icmp6_dataun.icmp6_un_data16[1]", NULL, {"icmp6_seq"} }, + { "icmp6_hdr icmp6_maxdelay define", ALIAS, ICMP6_H, "icmp6_hdr", + "icmp6_dataun.icmp6_un_data16[0]", NULL, {"icmp6_maxdelay"} }, + /* Section 2.2.1 ICMPv6 Type and Code Values */ + { "ICMP6_DST_UNREACH", VALUE, ICMP6_H, "ICMP6_DST_UNREACH", + NULL, NULL, {"1"} }, + { "ICMP6_PACKET_TOO_BIG", VALUE, ICMP6_H, "ICMP6_PACKET_TOO_BIG", + NULL, NULL, {"2"} }, + { "ICMP6_TIME_EXCEEDED", VALUE, ICMP6_H, "ICMP6_TIME_EXCEEDED", + NULL, NULL, {"3"} }, + { "ICMP6_PARAM_PROB", VALUE, ICMP6_H, "ICMP6_PARAM_PROB", + NULL, NULL, {"4"} }, + { "ICMP6_INFOMSG_MASK", VALUE, ICMP6_H, "ICMP6_INFOMSG_MASK", + NULL, NULL, {"0x80"} }, + { "ICMP6_ECHO_REQUEST", VALUE, ICMP6_H, "ICMP6_ECHO_REQUEST", + NULL, NULL, {"128"} }, + { "ICMP6_ECHO_REPLY", VALUE, ICMP6_H, "ICMP6_ECHO_REPLY", + NULL, NULL, {"129"} }, + { "ICMP6_DST_UNREACH_NOROUTE", VALUE, ICMP6_H, + "ICMP6_DST_UNREACH_NOROUTE", NULL, NULL, {"0"} }, + { "ICMP6_DST_UNREACH_ADMIN", VALUE, ICMP6_H, + "ICMP6_DST_UNREACH_ADMIN", NULL, NULL, {"1"} }, + { "ICMP6_DST_UNREACH_BEYONDSCOPE", VALUE, ICMP6_H, + "ICMP6_DST_UNREACH_BEYONDSCOPE", NULL, NULL, {"2"} }, + { "ICMP6_DST_UNREACH_ADDR", VALUE, ICMP6_H, + "ICMP6_DST_UNREACH_ADDR", NULL, NULL, {"3"} }, + { "ICMP6_DST_UNREACH_NOPORT", VALUE, ICMP6_H, + "ICMP6_DST_UNREACH_NOPORT", NULL, NULL, {"4"} }, + { "ICMP6_TIME_EXCEED_TRANSIT", VALUE, ICMP6_H, + "ICMP6_TIME_EXCEED_TRANSIT", NULL, NULL, {"0"} }, + { "ICMP6_TIME_EXCEED_REASSEMBLY", VALUE, ICMP6_H, + "ICMP6_TIME_EXCEED_REASSEMBLY", NULL, NULL, {"1"} }, + { "ICMP6_PARAMPROB_HEADER", VALUE, ICMP6_H, + "ICMP6_PARAMPROB_HEADER", NULL, NULL, {"0"} }, + { "ICMP6_PARAMPROB_NEXTHEADER", VALUE, ICMP6_H, + "ICMP6_PARAMPROB_NEXTHEADER", NULL, NULL, {"1"} }, + { "ICMP6_PARAMPROB_OPTION", VALUE, ICMP6_H, + "ICMP6_PARAMPROB_OPTION", NULL, NULL, {"2"} }, + /* section 2.2.2, Neighbor Discovery */ + { "ND_ROUTER_SOLICIT", VALUE, ICMP6_H, + "ND_ROUTER_SOLICIT", NULL, NULL, {"133"} }, + { "ND_ROUTER_ADVERT", VALUE, ICMP6_H, + "ND_ROUTER_ADVERT", NULL, NULL, {"134"} }, + { "ND_NEIGHBOR_SOLICIT", VALUE, ICMP6_H, + "ND_NEIGHBOR_SOLICIT", NULL, NULL, {"135"} }, + { "ND_NEIGHBOR_ADVERT", VALUE, ICMP6_H, + "ND_NEIGHBOR_ADVERT", NULL, NULL, {"136"} }, + { "ND_REDIRECT", VALUE, ICMP6_H, + "ND_REDIRECT", NULL, NULL, {"137"} }, + { "nd_router_solicit nd_rs_hdr", EXISTS, ICMP6_H, + "nd_router_solicit", "nd_rs_hdr", "0", + {"sizeof(struct icmp6_hdr)"} }, + { "nd_router_solicit nd_rs_type define", ALIAS, ICMP6_H, + "nd_router_solicit", "nd_rs_hdr.icmp6_type", + NULL, {"nd_rs_type"} }, + { "nd_router_solicit nd_rs_code define", ALIAS, ICMP6_H, + "nd_router_solicit", "nd_rs_hdr.icmp6_code", + NULL, {"nd_rs_code"} }, + { "nd_router_solicit nd_rs_cksum define", ALIAS, ICMP6_H, + "nd_router_solicit", "nd_rs_hdr.icmp6_cksum", + NULL, {"nd_rs_cksum"} }, + { "nd_router_solicit nd_rs_reserved define", ALIAS, ICMP6_H, + "nd_router_solicit", "nd_rs_hdr.icmp6_data32[0]", + NULL, {"nd_rs_reserved"} }, + { "nd_router_advert nd_ra_hdr", EXISTS, ICMP6_H, + "nd_router_advert", "nd_ra_hdr", "0", + {"sizeof(struct icmp6_hdr)"} }, + { "nd_router_advert nd_ra_reachable", EXISTS, ICMP6_H, + "nd_router_advert", "nd_ra_reachable", + "sizeof(struct icmp6_hdr)", {"4"} }, + { "nd_router_advert nd_ra_retransmit", EXISTS, ICMP6_H, + "nd_router_advert", "nd_ra_retransmit", + "sizeof(struct icmp6_hdr)+4", {"4"} }, + { "nd_router_advert nd_ra_type define", ALIAS, ICMP6_H, + "nd_router_advert", "nd_ra_hdr.icmp6_type", + NULL, {"nd_ra_type"} }, + { "nd_router_advert nd_ra_code define", ALIAS, ICMP6_H, + "nd_router_advert", "nd_ra_hdr.icmp6_code", + NULL, {"nd_ra_code"} }, + { "nd_router_advert nd_ra_cksum define", ALIAS, ICMP6_H, + "nd_router_advert", "nd_ra_hdr.icmp6_cksum", + NULL, {"nd_ra_cksum"} }, + { "nd_router_advert nd_ra_curhoplimit define", ALIAS, ICMP6_H, + "nd_router_advert", "nd_ra_hdr.icmp6_data8[0]", + NULL, {"nd_ra_curhoplimit"} }, + { "nd_router_advert nd_ra_flags_reserved define", ALIAS, ICMP6_H, + "nd_router_advert", "nd_ra_hdr.icmp6_data8[1]", + NULL, {"nd_ra_flags_reserved"} }, + { "ND_RA_FLAG_MANAGED", VALUE, ICMP6_H, + "ND_RA_FLAG_MANAGED", NULL, NULL, {"0x80"} }, + { "ND_RA_FLAG_OTHER", VALUE, ICMP6_H, + "ND_RA_FLAG_OTHER", NULL, NULL, {"0x40"} }, + { "nd_router_advert nd_ra_router_lifetime define", ALIAS, ICMP6_H, + "nd_router_advert", "nd_ra_hdr.icmp6_data16[1]", + NULL, {"nd_ra_router_lifetime"} }, + { "nd_neighbor_solicit nd_ns_hdr", EXISTS, ICMP6_H, + "nd_neighbor_solicit", "nd_ns_hdr", + "0", {"sizeof(struct icmp6_hdr)"} }, + { "nd_neighbor_solicit nd_ns_target", EXISTS, ICMP6_H, + "nd_neighbor_solicit", "nd_ns_target", + "sizeof(struct icmp6_hdr)", {"sizeof(struct in6_addr)"} }, + { "nd_neighbor_solicit nd_ns_type define", ALIAS, ICMP6_H, + "nd_neighbor_solicit", "nd_ns_hdr.icmp6_type", + NULL, {"nd_ns_type"} }, + { "nd_neighbor_solicit nd_ns_code define", ALIAS, ICMP6_H, + "nd_neighbor_solicit", "nd_ns_hdr.icmp6_code", + NULL, {"nd_ns_code"} }, + { "nd_neighbor_solicit nd_ns_cksum define", ALIAS, ICMP6_H, + "nd_neighbor_solicit", "nd_ns_hdr.icmp6_cksum", + NULL, {"nd_ns_cksum"} }, + { "nd_neighbor_solicit nd_ns_reserved define", ALIAS, ICMP6_H, + "nd_neighbor_solicit", "nd_ns_hdr.icmp6_data32[0]", + NULL, {"nd_ns_reserved"} }, + { "nd_neighbor_advert nd_na_hdr", EXISTS, ICMP6_H, + "nd_neighbor_advert", "nd_na_hdr", + "0", {"sizeof(struct icmp6_hdr)"} }, + { "nd_neighbor_advert nd_na_target", EXISTS, ICMP6_H, + "nd_neighbor_advert", "nd_na_target", + "sizeof(struct icmp6_hdr)", {"sizeof(struct in6_addr)"} }, + { "nd_neighbor_advert nd_na_type define", ALIAS, ICMP6_H, + "nd_neighbor_advert", "nd_na_hdr.icmp6_type", + NULL, {"nd_na_type"} }, + { "nd_neighbor_advert nd_na_code define", ALIAS, ICMP6_H, + "nd_neighbor_advert", "nd_na_hdr.icmp6_code", + NULL, {"nd_na_code"} }, + { "nd_neighbor_advert nd_na_cksum define", ALIAS, ICMP6_H, + "nd_neighbor_advert", "nd_na_hdr.icmp6_cksum", + NULL, {"nd_na_cksum"} }, + { "nd_neighbor_advert nd_na_flags_reserved define", ALIAS, + ICMP6_H, "nd_neighbor_advert", "nd_na_hdr.icmp6_data32[0]", + NULL, {"nd_na_flags_reserved"} }, + { "ND_NA_FLAG_ROUTER", VALUE, ICMP6_H, "ND_NA_FLAG_ROUTER", + NULL, NULL, {"htonl(0x80000000)"} }, + { "ND_NA_FLAG_SOLICITED", VALUE, ICMP6_H, "ND_NA_FLAG_SOLICITED", + NULL, NULL, {"htonl(0x40000000)"} }, + { "ND_NA_FLAG_OVERRIDE", VALUE, ICMP6_H, "ND_NA_FLAG_OVERRIDE", + NULL, NULL, {"htonl(0x20000000)"} }, + { "nd_redirect nd_rd_hdr", EXISTS, ICMP6_H, "nd_redirect", + "nd_rd_hdr", "0", {"sizeof(struct icmp6_hdr)"} }, + { "nd_redirect nd_rd_target", EXISTS, ICMP6_H, + "nd_redirect", "nd_rd_target", + "sizeof(struct icmp6_hdr)", {"sizeof(struct in6_addr)"} }, + { "nd_redirect nd_rd_dst", EXISTS, ICMP6_H, "nd_redirect", + "nd_rd_dst", "sizeof(struct icmp6_hdr)+sizeof(struct in6_addr)", + {"sizeof(struct in6_addr)"} }, + { "nd_redirect nd_rd_type define", ALIAS, ICMP6_H, + "nd_neighbor_advert", "nd_na_hdr.icmp6_data32[0]", + NULL, {"nd_na_flags_reserved"} }, + { "nd_opt_hdr nd_rd_hdr", EXISTS, ICMP6_H, "nd_opt_hdr", + "nd_opt_type", "0", {"1"} }, + { "nd_opt_hdr nd_rd_hdr", EXISTS, ICMP6_H, "nd_opt_hdr", + "nd_opt_len", "1", {"1"} }, + { "ND_OPT_SOURCE_LINKADDR", VALUE, ICMP6_H, + "ND_OPT_SOURCE_LINKADDR", NULL, NULL, {"1"} }, + { "ND_OPT_TARGET_LINKADDR", VALUE, ICMP6_H, + "ND_OPT_TARGET_LINKADDR", NULL, NULL, {"2"} }, + { "ND_OPT_PREFIX_INFORMATION", VALUE, ICMP6_H, + "ND_OPT_PREFIX_INFORMATION", NULL, NULL, {"3"} }, + { "ND_OPT_REDIRECTED_HEADER", VALUE, ICMP6_H, + "ND_OPT_REDIRECTED_HEADER", NULL, NULL, {"4"} }, + { "ND_OPT_MTU", VALUE, ICMP6_H, "ND_OPT_MTU", + NULL, NULL, {"5"} }, + { "nd_opt_prefix_info nd_opt_pi_type", EXISTS, ICMP6_H, + "nd_opt_prefix_info", "nd_opt_pi_type", "0", {"1"} }, + { "nd_opt_prefix_info nd_opt_pi_len", EXISTS, ICMP6_H, + "nd_opt_prefix_info", "nd_opt_pi_len", "1", {"1"} }, + { "nd_opt_prefix_info nd_opt_pi_prefix_len", EXISTS, ICMP6_H, + "nd_opt_prefix_info", "nd_opt_pi_prefix_len", "2", {"1"} }, + { "nd_opt_prefix_info nd_opt_pi_flags_reserved", EXISTS, ICMP6_H, + "nd_opt_prefix_info", "nd_opt_pi_flags_reserved", "3", {"1"} }, + { "nd_opt_prefix_info nd_opt_pi_valid_time", EXISTS, ICMP6_H, + "nd_opt_prefix_info", "nd_opt_pi_valid_time", "4", {"4"} }, + { "nd_opt_prefix_info nd_opt_pi_preferred_time", EXISTS, ICMP6_H, + "nd_opt_prefix_info", "nd_opt_pi_preferred_time", "8", {"4"} }, + { "nd_opt_prefix_info nd_opt_pi_reserved2", EXISTS, ICMP6_H, + "nd_opt_prefix_info", "nd_opt_pi_reserved2", "12", {"4"} }, + { "nd_opt_prefix_info nd_opt_pi_prefix", EXISTS, ICMP6_H, + "nd_opt_prefix_info", "nd_opt_pi_prefix", + "16", {"sizeof(struct in6_addr)"} }, + { "ND_OPT_PI_FLAG_ONLINK", VALUE, ICMP6_H, + "ND_OPT_PI_FLAG_ONLINK", NULL, NULL, {"0x80"} }, + { "ND_OPT_PI_FLAG_AUTO", VALUE, ICMP6_H, + "ND_OPT_PI_FLAG_AUTO", NULL, NULL, {"0x40"} }, + { "nd_opt_rd_hdr nd_opt_rh_type", EXISTS, ICMP6_H, + "nd_opt_rd_hdr", "nd_opt_rh_type", "0", {"1"} }, + { "nd_opt_rd_hdr nd_opt_rh_len", EXISTS, ICMP6_H, + "nd_opt_rd_hdr", "nd_opt_rh_len", "1", {"1"} }, + { "nd_opt_rd_hdr nd_opt_rh_reserved1", EXISTS, ICMP6_H, + "nd_opt_rd_hdr", "nd_opt_rh_reserved1", "2", {"2"} }, + { "nd_opt_rd_hdr nd_opt_rh_reserved2", EXISTS, ICMP6_H, + "nd_opt_rd_hdr", "nd_opt_rh_reserved2", "4", {"4"} }, + { "nd_opt_mtu nd_opt_mtu_type", EXISTS, ICMP6_H, + "nd_opt_mtu", "nd_opt_mtu_type", "0", {"1"} }, + { "nd_opt_mtu nd_opt_mtu_len", EXISTS, ICMP6_H, + "nd_opt_mtu", "nd_opt_mtu_len", "1", {"1"} }, + { "nd_opt_mtu nd_opt_mtu_reserved", EXISTS, ICMP6_H, + "nd_opt_mtu", "nd_opt_mtu_reserved", "2", {"2"} }, + { "nd_opt_mtu nd_opt_mtu_mtu", EXISTS, ICMP6_H, + "nd_opt_mtu", "nd_opt_mtu_mtu", "4", {"4"} }, +}; -#define FTCOUNT (sizeof(ftab)/sizeof(ftab[0])) +static void setup(void); +static void cleanup(void); +static void do_test(const struct ftent *); -int TST_TOTAL = FTCOUNT; +char *TCID = "asapi_02"; +int TST_TOTAL = ARRAY_SIZE(ftab); int main(int argc, char *argv[]) { int i, lc; const char *msg; - /* Parse standard options given to run the test. */ msg = parse_opts(argc, argv, NULL, NULL); - if (msg != NULL) { + if (msg != NULL) tst_brkm(TBROK, NULL, "OPTION PARSING ERROR - %s", msg); - } setup(); for (lc = 0; TEST_LOOPING(lc); ++lc) { - for (i = 0; i < FTCOUNT; ++i) { - switch (ftab[i].ft_type) { - case EXISTS: - structcheck(ftab[i].ft_tname, ftab[i].ft_incl, - ftab[i].ft_struct, ftab[i].ft_field, - ftab[i].ft_offset, - ftab[i].ft_value); - break; - case ALIAS: - aliascheck(ftab[i].ft_tname, ftab[i].ft_incl, - ftab[i].ft_struct, ftab[i].ft_field, - ftab[i].ft_dname); - break; - case VALUE: - valuecheck(ftab[i].ft_tname, ftab[i].ft_incl, - ftab[i].ft_struct, ftab[i].ft_dname); - break; - default: - tst_resm(TBROK, "invalid type %d", - ftab[i].ft_type); - break; - } - } + tst_count = 0; + + for (i = 0; i < TST_TOTAL; i++) + do_test(&ftab[i]); } cleanup(); - tst_exit(); } void setup(void) { - TEST_PAUSE; /* if -P option specified */ + TEST_PAUSE; } void cleanup(void) { TEST_CLEANUP; } + +void do_test(const struct ftent *ftptr) +{ + switch (ftptr->ft_type) { + case EXISTS: + structcheck(ftptr->ft_tname, ftptr->ft_incl, + ftptr->ft_struct, ftptr->ft_field, + ftptr->ft_offset, ftptr->ft_value); + break; + case ALIAS: + aliascheck(ftptr->ft_tname, ftptr->ft_incl, + ftptr->ft_struct, ftptr->ft_field, + ftptr->ft_dname); + break; + case VALUE: + valuecheck(ftptr->ft_tname, ftptr->ft_incl, + ftptr->ft_struct, ftptr->ft_dname); + break; + default: + tst_resm(TBROK, "invalid type %d", + ftptr->ft_type); + break; + } +} -- 1.9.3 |