use_pty:FALSE /usr/share/restraint/plugins/run_task_plugins bash ./runtest.sh /etc/pki/ca-trust/source/anchors /mnt/tests/gitlab.cee.redhat.com/kernel-qe/kernel/-/archive/master/kernel-master.zip/networking/common /mnt/tests/gitlab.cee.redhat.com/kernel-qe/kernel/-/archive/master/kernel-master.zip/networking/ipv6/Fujitsu-socketapi-test --2023-01-26 16:31:41-- https://password.corp.redhat.com/legacy.crt Resolving password.corp.redhat.com (password.corp.redhat.com)... 10.2.111.154 Connecting to password.corp.redhat.com (password.corp.redhat.com)|10.2.111.154|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 1338 (1.3K) Saving to: ‘legacy.crt.1’ 0K . 100% 93.4M=0s 2023-01-26 16:31:41 (93.4 MB/s) - ‘legacy.crt.1’ saved [1338/1338] --2023-01-26 16:31:41-- https://password.corp.redhat.com/RH-IT-Root-CA.crt Resolving password.corp.redhat.com (password.corp.redhat.com)... 10.2.111.154 Connecting to password.corp.redhat.com (password.corp.redhat.com)|10.2.111.154|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 1517 (1.5K) Saving to: ‘RH-IT-Root-CA.crt.1’ 0K . 100% 28.8M=0s 2023-01-26 16:31:41 (28.8 MB/s) - ‘RH-IT-Root-CA.crt.1’ saved [1517/1517] /mnt/tests/gitlab.cee.redhat.com/kernel-qe/kernel/-/archive/master/kernel-master.zip/networking/common /mnt/tests/gitlab.cee.redhat.com/kernel-qe/kernel/-/archive/master/kernel-master.zip/networking/ipv6/Fujitsu-socketapi-test :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Setup :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: [ 16:31:43 ] :: [ BEGIN ] :: Running 'ip link set dummy_ipv6 up' :: [ 16:31:43 ] :: [ PASS ] :: Command 'ip link set dummy_ipv6 up' (Expected 0, got 0) :: [ 16:31:43 ] :: [ BEGIN ] :: Running 'echo Link0 dummy_ipv6 fe80::1ce9:d6ff:fe58:abc > config.def' :: [ 16:31:43 ] :: [ PASS ] :: Command 'echo Link0 dummy_ipv6 fe80::1ce9:d6ff:fe58:abc > config.def' (Expected 0, got 0) ===> lib :: [ 16:31:43 ] :: [ BEGIN ] :: Compile lib :: actually running 'make' gcc -c -o tstsock.o tstsock.c -Wall -g gcc -c -o tstframe.o tstframe.c -Wall -g gcc -c -o tstmulticast.o tstmulticast.c -Wall -g gcc -o tstmulticast tstmulticast.o tstframe.o ar -rc libtstsk.a tstframe.o tstsock.o :: [ 16:31:43 ] :: [ PASS ] :: Compile lib (Expected 0, got 0) ===> bin :: [ 16:31:43 ] :: [ BEGIN ] :: Compile bin :: actually running 'make' chmod u+x autorun.pl chmod u+x autogen.pl ln -sf autorun.pl autorun ln -sf autogen.pl autogen :: [ 16:31:43 ] :: [ PASS ] :: Compile bin (Expected 0, got 0) testing multicast.......... ===> sockin :: [ 16:31:43 ] :: [ BEGIN ] :: Compile sockin :: actually running 'make' cc -g -Wall -I../lib/ -o tst_addr_and_pro_family tst_addr_and_pro_family.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_addr_structure tst_addr_structure.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_socket_funcions tst_socket_funcions.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_socket_structure tst_socket_structure.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_lo_addr tst_lo_addr.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_wild_addr tst_wild_addr.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_with_v4_nod tst_with_v4_nod.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_pro_additions tst_pro_additions.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_with_v4_app tst_with_v4_app.c ../lib/libtstsk.a :: [ 16:31:44 ] :: [ PASS ] :: Compile sockin (Expected 0, got 0) ===> ident :: [ 16:31:44 ] :: [ BEGIN ] :: Compile ident :: actually running 'make' cc -g -Wall -I../lib/ -o tst_if_name_to_index tst_if_name_to_index.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_if_name_to_index_bad tst_if_name_to_index_bad.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_if_index_to_name tst_if_index_to_name.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_if_index_to_name_bad tst_if_index_to_name_bad.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_if_name_index tst_if_name_index.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_if_free_name_index tst_if_free_name_index.c ../lib/libtstsk.a :: [ 16:31:44 ] :: [ PASS ] :: Compile ident (Expected 0, got 0) ===> options :: [ 16:31:44 ] :: [ BEGIN ] :: Compile options :: actually running 'make' cc -g -Wall -I../lib/ -o tst_hop_limit_set_to_lt_n1 tst_hop_limit_set_to_lt_n1.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_hop_limit_set_to_dafault tst_hop_limit_set_to_dafault.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_hop_limit_set_to_gt_255 tst_hop_limit_set_to_gt_255.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_hop_limit_get tst_hop_limit_get.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_hop_limit_set_to_valid tst_hop_limit_set_to_valid.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_mcast_if_set tst_mcast_if_set.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_mcast_if_get tst_mcast_if_get.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_mcast_hops_set_to_valid tst_mcast_hops_set_to_valid.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_mcast_hops_set_to_lt_n1 tst_mcast_hops_set_to_lt_n1.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_mcast_hops_set_to_gt_255 tst_mcast_hops_set_to_gt_255.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_mcast_hops_set_to_dafault tst_mcast_hops_set_to_dafault.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_mcast_hops_get tst_mcast_hops_get.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_mcast_loop_back tst_mcast_loop_back.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_mcast_loop_no_back tst_mcast_loop_no_back.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_mcast_loop_back_get tst_mcast_loop_back_get.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_join_group tst_join_group.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_leave_group tst_leave_group.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_v6only_set_client tst_v6only_set_client.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_v6only_set_msg tst_v6only_set_msg.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_v6only_set_server tst_v6only_set_server.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_v6only_get tst_v6only_get.c ../lib/libtstsk.a :: [ 16:31:45 ] :: [ PASS ] :: Compile options (Expected 0, got 0) ===> function :: [ 16:31:45 ] :: [ BEGIN ] :: Compile function :: actually running 'make' cc -g -Wall -I../lib/ -o tst_getaddrinfo_1 tst_getaddrinfo_1.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_getaddrinfo_2 tst_getaddrinfo_2.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_freeaddrinfo tst_freeaddrinfo.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_gai_strerror tst_gai_strerror.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_getnameinfo tst_getnameinfo.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet_pton_inet tst_inet_pton_inet.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet_pton_inet6 tst_inet_pton_inet6.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet_ntop_inet tst_inet_ntop_inet.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet_ntop_inet6 tst_inet_ntop_inet6.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_is_addr_unspecified tst_is_addr_unspecified.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_is_addr_loopback tst_is_addr_loopback.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_is_addr_multicast tst_is_addr_multicast.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_is_addr_linklocal tst_is_addr_linklocal.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_is_addr_sitelocal tst_is_addr_sitelocal.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_is_addr_v4mapped tst_is_addr_v4mapped.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_is_addr_v4compat tst_is_addr_v4compat.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_is_addr_mc_nodelocal tst_is_addr_mc_nodelocal.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_is_addr_mc_linklocal tst_is_addr_mc_linklocal.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_is_addr_mc_sitelocal tst_is_addr_mc_sitelocal.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_is_addr_mc_orglocal tst_is_addr_mc_orglocal.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_is_addr_mc_global tst_is_addr_mc_global.c ../lib/libtstsk.a :: [ 16:31:46 ] :: [ PASS ] :: Compile function (Expected 0, got 0) ===> raw :: [ 16:31:46 ] :: [ BEGIN ] :: Compile raw :: actually running 'make' cc -g -Wall -I../lib/ -o tst_checksum_enable tst_checksum_enable.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_checksum_disable tst_checksum_disable.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_checksum_no_raw tst_checksum_no_raw.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_checksum_get tst_checksum_get.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_filter_setpassall tst_filter_setpassall.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_filter_setblockall tst_filter_setblockall.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_filter_setpass tst_filter_setpass.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_filter_setblock tst_filter_setblock.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_filter_willpass tst_filter_willpass.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_filter_willblock tst_filter_willblock.c ../lib/libtstsk.a :: [ 16:31:47 ] :: [ PASS ] :: Compile raw (Expected 0, got 0) ===> struct :: [ 16:31:47 ] :: [ BEGIN ] :: Compile struct :: actually running 'make' cc -g -Wall -I../lib/ -o tst_are_addr_equal tst_are_addr_equal.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_getprotobyname tst_getprotobyname.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_getprotobynumber tst_getprotobynumber.c ../lib/libtstsk.a :: [ 16:31:47 ] :: [ PASS ] :: Compile struct (Expected 0, got 0) ===> pktinfo :: [ 16:31:47 ] :: [ BEGIN ] :: Compile pktinfo :: actually running 'make' cc -g -Wall -I../lib/ -o tst_recv_ifindex_tcp tst_recv_ifindex_tcp.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_recv_ifindex_udp tst_recv_ifindex_udp.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_send_ifindex_udp tst_send_ifindex_udp.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_recv_dst_addr_tcp tst_recv_dst_addr_tcp.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_recv_dst_addr_udp tst_recv_dst_addr_udp.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_send_src_addr_udp tst_send_src_addr_udp.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_recv_hop_limit_tcp tst_recv_hop_limit_tcp.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_recv_hop_limit_udp tst_recv_hop_limit_udp.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_send_hop_limit_udp tst_send_hop_limit_udp.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_recv_tclass_udp tst_recv_tclass_udp.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_send_tclass_udp tst_send_tclass_udp.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_recv_packet_infos_overlap tst_recv_packet_infos_overlap.c ../lib/libtstsk.a :: [ 16:31:48 ] :: [ PASS ] :: Compile pktinfo (Expected 0, got 0) ===> rthdr :: [ 16:31:48 ] :: [ BEGIN ] :: Compile rthdr :: actually running 'make' cc -g -Wall -I../lib/ -o tst_recv_rhhdr tst_recv_rhhdr.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_recv_no_rhhdr tst_recv_no_rhhdr.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_send_rhhdr_data tst_send_rhhdr_data.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_send_rhhdr_setopt tst_send_rhhdr_setopt.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_set_rthdr tst_set_rthdr.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_remove_rthdr tst_remove_rthdr.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_get_rthdr tst_get_rthdr.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet6_rth_space tst_inet6_rth_space.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet6_rth_space_err tst_inet6_rth_space_err.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet6_rth_init tst_inet6_rth_init.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet6_rth_init_err tst_inet6_rth_init_err.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet6_rth_add tst_inet6_rth_add.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet6_rth_add_err tst_inet6_rth_add_err.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet6_rth_reverse tst_inet6_rth_reverse.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet6_rth_reverse_err tst_inet6_rth_reverse_err.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet6_rth_getaddr tst_inet6_rth_getaddr.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet6_rth_getaddr_err tst_inet6_rth_getaddr_err.c ../lib/libtstsk.a :: [ 16:31:49 ] :: [ PASS ] :: Compile rthdr (Expected 0, got 0) ===> hhopt :: [ 16:31:49 ] :: [ BEGIN ] :: Compile hhopt :: actually running 'make' cc -g -Wall -I../lib/ -o tst_recv_hhopt tst_recv_hhopt.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_recv_no_hhopt tst_recv_no_hhopt.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_send_hhopt_data tst_send_hhopt_data.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_send_hhopt_setopt tst_send_hhopt_setopt.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_hop_by_hop_get tst_hop_by_hop_get.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_hop_by_hop_set tst_hop_by_hop_set.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_remove_hhopt tst_remove_hhopt.c ../lib/libtstsk.a :: [ 16:31:49 ] :: [ PASS ] :: Compile hhopt (Expected 0, got 0) ===> dstopt :: [ 16:31:49 ] :: [ BEGIN ] :: Compile dstopt :: actually running 'make' cc -g -Wall -I../lib/ -o tst_recv_dstopt tst_recv_dstopt.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_recv_no_dstopt tst_recv_no_dstopt.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_send_dstopt_data tst_send_dstopt_data.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_send_dstopt_setopt tst_send_dstopt_setopt.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_dsthop_get tst_dsthop_get.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_dsthop_set tst_dsthop_set.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_remove_dstopt tst_remove_dstopt.c ../lib/libtstsk.a :: [ 16:31:50 ] :: [ PASS ] :: Compile dstopt (Expected 0, got 0) ===> optsprocess :: [ 16:31:50 ] :: [ BEGIN ] :: Compile optsprocess :: actually running 'make' cc -g -Wall -I../lib/ -o tst_inet6_opt_init_calc tst_inet6_opt_init_calc.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet6_opt_init_init tst_inet6_opt_init_init.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet6_opt_append_init tst_inet6_opt_append_init.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet6_opt_append_calc tst_inet6_opt_append_calc.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet6_opt_finish_do tst_inet6_opt_finish_do.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet6_opt_finish_calc tst_inet6_opt_finish_calc.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet6_opt_set_val tst_inet6_opt_set_val.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet6_opt_next tst_inet6_opt_next.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet6_opt_find tst_inet6_opt_find.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_inet6_opt_get_val tst_inet6_opt_get_val.c ../lib/libtstsk.a :: [ 16:31:50 ] :: [ PASS ] :: Compile optsprocess (Expected 0, got 0) ===> extiface :: [ 16:31:50 ] :: [ BEGIN ] :: Compile extiface :: actually running 'make' cc -g -Wall -I../lib/ -o tst_rresvport_af tst_rresvport_af.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_rcmd_af tst_rcmd_af.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_rexec_af tst_rexec_af.c ../lib/libtstsk.a :: [ 16:31:50 ] :: [ PASS ] :: Compile extiface (Expected 0, got 0) ===> advanced :: [ 16:31:50 ] :: [ BEGIN ] :: Compile advanced :: actually running 'make' cc -g -Wall -I../lib/ -o tst_rthdrdstopts tst_rthdrdstopts.c ../lib/libtstsk.a :: [ 16:31:50 ] :: [ PASS ] :: Compile advanced (Expected 0, got 0) ===> compatopt :: [ 16:31:51 ] :: [ BEGIN ] :: Compile compatopt :: actually running 'make' cc -g -Wall -I../lib/ -o tst_ipv6_addrform tst_ipv6_addrform.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_ipv6_2292DSTOPTS tst_ipv6_2292DSTOPTS.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_ipv6_2292HOPOPTS tst_ipv6_2292HOPOPTS.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_ipv6_2292RTHDR tst_ipv6_2292RTHDR.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_ipv6_flowinfo tst_ipv6_flowinfo.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_ipv6_mtu tst_ipv6_mtu.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_ipv6_mtudiscover tst_ipv6_mtudiscover.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_ipv6_recverr tst_ipv6_recverr.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_ipv6_router_alert tst_ipv6_router_alert.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_ipv6_add_membership tst_ipv6_add_membership.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_ipv6_drop_membership tst_ipv6_drop_membership.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_ipv6_join_anycast tst_ipv6_join_anycast.c ../lib/libtstsk.a cc -g -Wall -I../lib/ -o tst_ipv6_leave_anycast tst_ipv6_leave_anycast.c ../lib/libtstsk.a :: [ 16:31:51 ] :: [ PASS ] :: Compile compatopt (Expected 0, got 0) :: [ 16:31:51 ] :: [ BEGIN ] :: Add ::2 to lo :: actually running 'ip addr add dev lo ::2' :: [ 16:31:51 ] :: [ PASS ] :: Add ::2 to lo (Expected 0, got 0) :: [ 16:31:51 ] :: [ BEGIN ] :: Load sctp module :: actually running 'modprobe sctp' :: [ 16:31:51 ] :: [ PASS ] :: Load sctp module (Expected 0, got 0) :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Duration: 8s :: Assertions: 20 good, 0 bad :: RESULT: PASS (Setup) ** Setup PASS Score:0 Uploading resultoutputfile.log .done :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Test :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ===> sockin :: [ 16:31:52 ] :: [ LOG ] :: Execute sockin Test Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. ========== TEST 1 ========== ./tst_addr_and_pro_family --log=1.html --title="IPv6 Address Family and Protocol Family" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == test if AF_INET6 is defined == We have defined AF_INET6 == test if PF_INET6 is defined == We have defined PF_INET6 == test if AF_INET6 equal to PF_INET6 == AF_INET6 = 10, PF_INET6 = 10 AF_INET6 equal to PF_INET6 OK -> PASS ========== TEST 2 ========== ./tst_addr_structure --log=2.html --title="IPv6 Address Structure" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == Check IPv6 address' size == sizeof in6_addr is 16 IPv6 address size check pass == Check IPv6 address' structure == struct in6addr.s6_addr's data structure is 20 01 00 00 00 00 00 09 08 07 06 05 04 03 02 01 struct in6addr.s6_addr16's data structure is 0000 0000 0000 00090807 0605 0403 0201 struct in6addr.s6_addr32's data structure is 20010000 00000009 08070605 04030201 OK -> PASS ========== TEST 3 ========== ./tst_socket_structure --log=3.html --title="Socket Address Structure" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == Init a sockaddr_in6 structure == tst_get_unused_port() get port 37854 Sockaddr_in6 Address info: sin6_family = 10 (AF_INET = 2, AF_INET6 = 10) sin6_port = 37854 sin6_flowinfo = 0 sin6_addr = -264796392 sin6_scope_id = 0 OK -> PASS ========== TEST 4 ========== ./tst_socket_funcions --log=4.html --title="The Socket Functions" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create a socket with invalid type == socket(domain:AF_INET6, type:UNKNOW(-1), protocol:0) return error EINVAL Create SOCK_RAW socket failed, should failed. == create a socket with invalid protocol == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:UNKNOW(-1)) return error EINVAL Create SOCK_RAW socket failed , should failed == create a IPv6 TCP socket == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 Create SOCK_STREAM socket pass == create a IPv6 UDP socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=5 Create SOCK_DGRAM socket pass == create a IPv6 TCP/SCTP socket == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:UNKNOW(132)) return sockfd=6 Create SOCK_STREAM/IPPROTO_SCTP socket pass == create a IPv6 SCTP socket == socket(domain:AF_INET6, type:SOCK_SEQPACKET, protocol:UNKNOW(132)) return sockfd=7 Create SOCK_SEQPACKET/IPPROTO_SCTP socket pass == create a IPv6 RAW socket == socket(domain:AF_INET6, type:SOCK_RAW, protocol:UNKNOW(2)) return sockfd=8 Create SOCK_RAW socket pass == Use bind to pass addresses in to the system == tst_get_unused_port() get port 42610 bind(sockfd:8, my_addr:0x3fff0178990, addrlen:28) return 0 Bind IPv6 socket pass == Use getsockname to return addresses to applications == getsockname(sockfd:8, addr: "0x3fff0178974", socklen: 28) return 0, addr family is 10 (AF_INET = 2, AF_INET6 = 10), addr port is 2, addr is 0000:0000:0000:0000:0000:0000:0000:0001 OK -> PASS ========== TEST 5 ========== ./tst_with_v4_app --log=5.html --title="Compatibility with IPv4 Applications" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == Application can create IPV4/TCP and IPV4/UDP sockets == socket(domain:AF_INET, type:SOCK_STREAM, protocol:0) return sockfd=4 socket(domain:AF_INET, type:SOCK_DGRAM, protocol:0) return sockfd=5 == Application can hold a combination with differenet sockets == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=6 socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=7 close(4) close(5) close(6) close(7) OK -> PASS ========== TEST 6 ========== ./tst_with_v4_nod --log=6.html --title="Compatibility with IPv4 Nodes" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == Test IPv4-mapped addresses == getaddrinfo(nodename:127.0.0.1, servname:http, hints:0x3ffd6578760, res:0x3ffd6578758) return 0 struct addrinfo { ai_flags: 8 ai_family: AF_INET6 ai_socktype: SOCK_STREAM ai_protocol: 6 ai_addrlen: 28 ai_canonname: (null) ai_addr: 0000:0000:0000:0000:0000:ffff:7f00:0001 } struct addrinfo { ai_flags: 8 ai_family: AF_INET6 ai_socktype: SOCK_DGRAM ai_protocol: 17 ai_addrlen: 28 ai_canonname: (null) ai_addr: 0000:0000:0000:0000:0000:ffff:7f00:0001 } struct addrinfo { ai_flags: 8 ai_family: AF_INET6 ai_socktype: SOCK_STREAM ai_protocol: 132 ai_addrlen: 28 ai_canonname: (null) ai_addr: 0000:0000:0000:0000:0000:ffff:7f00:0001 } struct addrinfo { ai_flags: 8 ai_family: AF_INET6 ai_socktype: SOCK_SEQPACKET ai_protocol: 132 ai_addrlen: 28 ai_canonname: (null) ai_addr: 0000:0000:0000:0000:0000:ffff:7f00:0001 } ai_family is 10, inet_ntop(af:AF_INET6, src:0000:0000:0000:0000:0000:ffff:7f00:0001, dst:0x3ffd6578357, size:1025) return ::ffff:127.0.0.1 ai_addr is ::ffff:127.0.0.1 OK -> PASS ========== TEST 7 ========== ./tst_wild_addr --log=7.html --title="IPv6 Wildcard Address" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == Test in6addr_any == tst_get_unused_port() get port 52879 socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 bind(sockfd:4, my_addr:0x3ffc5278b28, addrlen:28) return 0 bind in6addr_any pass == Test IN6ADDR_ANY_INIT == inet_ntop(af:AF_INET6, src:0000:0000:0000:0000:0000:0000:0000:0001, dst:0x3ffc5278a27, size:257) return ::1 inet_ntop pass, our IN6ADDR_ANY_INIT is ::1 OK -> PASS ========== TEST 8 ========== ./tst_lo_addr --log=8.html --title="IPv6 Loopback Address" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == Test in6addr_loopback == tst_get_unused_port() get port 41851 socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 bind(sockfd:4, my_addr:0x3ffd2df8cb8, addrlen:28) return 0 bind in6addr_loopback pass == Test IN6ADDR_LOOPBACK_INIT == inet_ntop(af:AF_INET6, src:0000:0000:0000:0000:0000:0000:0000:0001, dst:0x3ffd2df8bb7, size:257) return ::1 inet_ntop pass, our IN6ADDR_LOOPBACK_INIT is ::1 OK -> PASS ========== TEST 9 ========== ./tst_pro_additions --log=9.html --title="Portability Additions" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == Test struct sockaddr_storage large enough == struct sockaddr : 16 struct sockaddr_in : 16 struct sockaddr_in6 : 28 struct sockaddr_storage : 128 OK -> PASS :: [ 16:31:59 ] :: [ LOG ] :: ======Output sockin Test Results====== :: [ 16:31:59 ] :: [ PASS ] :: Case#1 [name:tst_addr_and_pro_family] [log:sockin/1.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:31:59 ] :: [ PASS ] :: Case#2 [name:tst_addr_structure] [log:sockin/2.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:31:59 ] :: [ PASS ] :: Case#3 [name:tst_socket_structure] [log:sockin/3.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:31:59 ] :: [ PASS ] :: Case#4 [name:tst_socket_funcions] [log:sockin/4.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:31:59 ] :: [ PASS ] :: Case#5 [name:tst_with_v4_app] [log:sockin/5.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:31:59 ] :: [ PASS ] :: Case#6 [name:tst_with_v4_nod] [log:sockin/6.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:31:59 ] :: [ PASS ] :: Case#7 [name:tst_wild_addr] [log:sockin/7.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:31:59 ] :: [ PASS ] :: Case#8 [name:tst_lo_addr] [log:sockin/8.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:31:59 ] :: [ PASS ] :: Case#9 [name:tst_pro_additions] [log:sockin/9.html] (Assert: 'PASS' should equal 'PASS') ===> ident :: [ 16:31:59 ] :: [ LOG ] :: Execute ident Test Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. ========== TEST 1 ========== ./tst_if_name_to_index --log=1.html --title="Maps an interface name into its corresponding index" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == ifname is the name of loopback interface == if_nametoindex(ifname:"lo") return 1 == ifname is the name of interface Link0 == if_nametoindex(ifname:"dummy_ipv6") return 125 OK -> PASS ========== TEST 2 ========== ./tst_if_name_to_index_bad --log=2.html --title="Return zero if the ifname is not a name of an interface" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == ifname "abc0" is not a name of an interface == if_nametoindex(ifname:"abc0") return 0 == ifname "ifname" is not a name of an interface == if_nametoindex(ifname:"ifname") return 0 == ifname "" is not a name of an interface == if_nametoindex(ifname:"") return 0 OK -> PASS ========== TEST 3 ========== ./tst_if_index_to_name --log=3.html --title="Maps an interface index into its corresponding name" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == ifindex is the interface index of lo == if_indextoname(ifindex:1, ifname:0x3ffc1df8853) return lo == ifindex is the interface index of Link0 == if_indextoname(ifindex:125, ifname:0x3ffc1df8853) return dummy_ipv6 OK -> PASS ========== TEST 4 ========== ./tst_if_index_to_name_bad --log=4.html --title="Return a NULL pointer if ifindex is not an interface index" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == ifindex 0 is not an interface index == if_indextoname(ifindex:0, ifname:0x3ffc4c784b7) return NULL, error=ENXIO == ifindex 10000 is not an interface index == if_indextoname(ifindex:10000, ifname:0x3ffc4c784b7) return NULL, error=ENXIO OK -> PASS ========== TEST 5 ========== ./tst_if_name_index --log=5.html --title="Return all interface names and indexes" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == Get all interface names and indexes == if_nameindex() return an array of if_nameindex (1, lo) (2, enc1) (125, dummy_ipv6) if_nametoindex(ifname:"lo") return 1 if_nametoindex(ifname:"enc1") return 2 if_nametoindex(ifname:"dummy_ipv6") return 125 if_freenameindex(ptr:0x102b2c0) == Check whether other interface name and index exists == if_indextoname(ifindex:126, ifname:0x3ffcdf7938f) return NULL, error=ENXIO OK -> PASS ========== TEST 6 ========== ./tst_if_free_name_index --log=6.html --title="Frees the dynamic memory that was allocated by if_nameindex()" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == get all interface names and indexes == if_nameindex() return an array of if_nameindex (1, lo) (2, enc1) (125, dummy_ipv6) == frees the dynamic memory that was allocated by if_nameindex() == if_freenameindex(ptr:0x2fb62c0) OK -> PASS :: [ 16:32:01 ] :: [ LOG ] :: ======Output ident Test Results====== :: [ 16:32:01 ] :: [ PASS ] :: Case#1 [name:tst_if_name_to_index] [log:ident/1.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:01 ] :: [ PASS ] :: Case#2 [name:tst_if_name_to_index_bad] [log:ident/2.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:02 ] :: [ PASS ] :: Case#3 [name:tst_if_index_to_name] [log:ident/3.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:02 ] :: [ PASS ] :: Case#4 [name:tst_if_index_to_name_bad] [log:ident/4.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:02 ] :: [ PASS ] :: Case#5 [name:tst_if_name_index] [log:ident/5.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:02 ] :: [ PASS ] :: Case#6 [name:tst_if_free_name_index] [log:ident/6.html] (Assert: 'PASS' should equal 'PASS') ===> options :: [ 16:32:02 ] :: [ LOG ] :: Execute options Test Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. ========== TEST 1 ========== ./tst_hop_limit_set_to_lt_n1 --log=1.html --title="Return an error of EINVAL when the IPV6_UNICAST_HOPS option is set to less than -1" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 == get default hoplimit == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffeea792cc, optlen:0x3ffeea792c8) return hoplimit=64 == set hoplimit to -2 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffeea792d0, optlen:4) return error EINVAL == check whether hoplimit has been changed == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffeea792d0, optlen:0x3ffeea792c8) return hoplimit=64 OK -> PASS ========== TEST 2 ========== ./tst_hop_limit_set_to_dafault --log=2.html --title="Use kernel default value when the IPV6_UNICAST_HOPS option is set to -1" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 == get default hoplimit == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffcd77890c, optlen:0x3ffcd778908) return hoplimit=64 == set hoplimit to 10 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffcd778910, optlen:4) return 0 == check whether hoplimit is set correctly == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffcd778910, optlen:0x3ffcd778908) return hoplimit=10 == set hoplimit to -1 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffcd778910, optlen:4) return 0 == check whether hoplimit is set to kernel default value == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffcd778910, optlen:0x3ffcd778908) return hoplimit=64 OK -> PASS ========== TEST 3 ========== ./tst_hop_limit_set_to_valid --log=3.html --title="Use the given value when the IPV6_UNICAST_HOPS option is set to a valid value" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 == set the value of hoplimit to 0 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffcc7f9310, optlen:4) return 0 == check whether hoplimit is set correctly == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffcc7f9310, optlen:0x3ffcc7f930c) return hoplimit=0 == set the value of hoplimit to 64 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffcc7f9310, optlen:4) return 0 == check whether hoplimit is set correctly == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffcc7f9310, optlen:0x3ffcc7f930c) return hoplimit=64 == set the value of hoplimit to 255 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffcc7f9310, optlen:4) return 0 == check whether hoplimit is set correctly == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffcc7f9310, optlen:0x3ffcc7f930c) return hoplimit=255 OK -> PASS ========== TEST 4 ========== ./tst_hop_limit_set_to_gt_255 --log=4.html --title="Return an error of EINVAL when the IPV6_UNICAST_HOPS option is set to larger than 255" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 == get default hoplimit == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffcf1793bc, optlen:0x3ffcf1793b8) return hoplimit=64 == set hoplimit to 256 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffcf1793c0, optlen:4) return error EINVAL == set hoplimit to 32767 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffcf1793c0, optlen:4) return error EINVAL == check whether hoplimit has been changed == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffcf1793c0, optlen:0x3ffcf1793b8) return hoplimit=64 OK -> PASS ========== TEST 5 ========== ./tst_hop_limit_get --log=5.html --title="Get the value of IPV6_UNICAST_HOPS option from kernel" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 == get the default value of hoplimit option == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffe81f8c70, optlen:0x3ffe81f8c6c) return hoplimit=64 == set the value of hoplimit option to 64 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffe81f8c70, optlen:4) return 0 == get the value of hoplimit option == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffe81f8c70, optlen:0x3ffe81f8c6c) return hoplimit=64 OK -> PASS ========== TEST 6 ========== ./tst_mcast_if_set --log=6.html --title="Set the interface to use for outgoing multicast packets" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == set IPV6_MULTICAST_IF to lo == if_nametoindex(ifname:"lo") return 1 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_IF, optval:0x3ffd8bf856c, optlen:4) return 0 == set IPV6_MULTICAST_IF to Link0 == if_nametoindex(ifname:"dummy_ipv6") return 125 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_IF, optval:0x3ffd8bf856c, optlen:4) return 0 == set IPV6_MULTICAST_IF to not exists interface == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_IF, optval:0x3ffd8bf856c, optlen:4) return error ENODEV == set IPV6_MULTICAST_IF to 0 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_IF, optval:0x3ffd8bf856c, optlen:4) return 0 OK -> PASS ========== TEST 7 ========== ./tst_mcast_if_get --log=7.html --title="Get the interface to use for outgoing multicast packets from kernel" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == set IPV6_MULTICAST_IF to lo == if_nametoindex(ifname:"lo") return 1 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_IF, optval:0x3fff1178b10, optlen:4) return 0 == get the value of IPV6_MULTICAST_IF option == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_IF, optval:0x3fff1178b0c, optlen:0x3fff1178b08) return mcast_if=1 == set IPV6_MULTICAST_IF to Link0 == if_nametoindex(ifname:"dummy_ipv6") return 125 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_IF, optval:0x3fff1178b10, optlen:4) return 0 == get the value of IPV6_MULTICAST_IF option == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_IF, optval:0x3fff1178b0c, optlen:0x3fff1178b08) return mcast_if=125 == set IPV6_MULTICAST_IF to not exists interface == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_IF, optval:0x3fff1178b0c, optlen:4) return error ENODEV == get the value of IPV6_MULTICAST_IF option == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_IF, optval:0x3fff1178b0c, optlen:0x3fff1178b08) return mcast_if=125 == set IPV6_MULTICAST_IF to 0 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_IF, optval:0x3fff1178b10, optlen:4) return 0 == get the value of IPV6_MULTICAST_IF option == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_IF, optval:0x3fff1178b0c, optlen:0x3fff1178b08) return mcast_if=0 OK -> PASS ========== TEST 8 ========== ./tst_mcast_hops_set_to_lt_n1 --log=8.html --title="Return an error of EINVAL when the IPV6_MULTICAST_HOPS option is set to less than -1" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == get default hoplimit == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_HOPS, optval:0x3ffc1478bdc, optlen:0x3ffc1478bd8) return length 4 == set hoplimit to -2 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_HOPS, optval:0x3ffc1478be0, optlen:4) return error EINVAL == check whether hoplimit has been changed == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_HOPS, optval:0x3ffc1478be0, optlen:0x3ffc1478bd8) return length 4 OK -> PASS ========== TEST 9 ========== ./tst_mcast_hops_set_to_dafault --log=9.html --title="Use kernel default value when the IPV6_MULTICAST_HOPS option is set to -1" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == set hoplimit to 10 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_HOPS, optval:0x3fff1df85a0, optlen:4) return 0 == check whether hoplimit is set correctly == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_HOPS, optval:0x3fff1df85a0, optlen:0x3fff1df859c) return length 4 == set hoplimit to -1 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_HOPS, optval:0x3fff1df85a0, optlen:4) return 0 == check whether hoplimit is set to kernel default value == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_HOPS, optval:0x3fff1df85a0, optlen:0x3fff1df859c) return length 4 OK -> PASS ========== TEST 10 ========== ./tst_mcast_hops_set_to_valid --log=10.html --title="Use the given value when the IPV6_MULTICAST_HOPS option is set to a valid value" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == set the value of multicast hoplimit to 0 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_HOPS, optval:0x3ffde8f8f20, optlen:4) return 0 == check whether multicast hoplimit is set correctly == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_HOPS, optval:0x3ffde8f8f20, optlen:0x3ffde8f8f1c) return length 4 == set the value of multicast hoplimit to 64 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_HOPS, optval:0x3ffde8f8f20, optlen:4) return 0 == check whether multicast hoplimit is set correctly == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_HOPS, optval:0x3ffde8f8f20, optlen:0x3ffde8f8f1c) return length 4 == set the value of hoplimit to 255 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_HOPS, optval:0x3ffde8f8f20, optlen:4) return 0 == check whether multicast hoplimit is set correctly == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_HOPS, optval:0x3ffde8f8f20, optlen:0x3ffde8f8f1c) return length 4 OK -> PASS ========== TEST 11 ========== ./tst_mcast_hops_set_to_gt_255 --log=11.html --title="Return an error of EINVAL when the IPV6_MULTICAST_HOPS option is set to larger than 256" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == get default hoplimit == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_HOPS, optval:0x3fff4bf903c, optlen:0x3fff4bf9038) return length 4 == set hoplimit to 256 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_HOPS, optval:0x3fff4bf9040, optlen:4) return error EINVAL == set hoplimit to 32767 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_HOPS, optval:0x3fff4bf9040, optlen:4) return error EINVAL == check whether hoplimit has been changed == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_HOPS, optval:0x3fff4bf9040, optlen:0x3fff4bf9038) return length 4 OK -> PASS ========== TEST 12 ========== ./tst_mcast_hops_get --log=12.html --title="Get the value of IPV6_MULTICAST_HOPS option from kernel" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == get the default value of hoplimit option == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_HOPS, optval:0x3ffff378b50, optlen:0x3ffff378b4c) return length 4 == set the value of hoplimit option to 64 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_HOPS, optval:0x3ffff378b50, optlen:4) return 0 == get the value of hoplimit option == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_HOPS, optval:0x3ffff378b50, optlen:0x3ffff378b4c) return length 4 OK -> PASS ========== TEST 13 ========== ./tst_mcast_loop_back --log=13.html --title="A copy is looped back if the IPV6_MULTICAST_LOOP option is set to 1" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 tst_get_unused_port() get port 38855 == bind socket to address == bind(sockfd:4, my_addr:0x3ffee9f8524, addrlen:28) return 0 == join to a multicast group on Link0 == if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"ff03::1:ff00:100", dst:0x3ffee9f8540) return 1, dst=ff03:0000:0000:0000:0000:0001:ff00:0100 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_JOIN_GROUP, optval:0x3ffee9f8540, optlen:20) return 0 == set IPV6_MULTICAST_IF option to Link0 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_IF, optval:0x3ffee9f8408, optlen:4) return 0 == enabled IPV6_MULTICAST_LOOP option == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_LOOP, optval:0x3ffee9f840c, optlen:4) return 0 inet_pton(af:AF_INET6, src:"ff03::1:ff00:100", dst:0x3ffee9f8540) return 1, dst=ff03:0000:0000:0000:0000:0001:ff00:0100 == send multicast datagram to the group == sendto(sockfd:4, buf:0x1007cc0, len:17, flags:0, to:0x3ffee9f8524, tolen:28) return 17 == recv message from the group == recvmsg(sockfd:4, msg:0x3ffee9f84d8, flags:64) return 17 close(4) OK -> PASS ========== TEST 14 ========== ./tst_mcast_loop_no_back --log=14.html --title="A copy is not looped back if the IPV6_MULTICAST_LOOP option is set to 0" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 tst_get_unused_port() get port 40208 == bind socket to address == bind(sockfd:4, my_addr:0x3ffe7e78a8c, addrlen:28) return 0 == join to a multicast group on Link0 == if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"ff03::1:ff00:100", dst:0x3ffe7e78aa8) return 1, dst=ff03:0000:0000:0000:0000:0001:ff00:0100 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_JOIN_GROUP, optval:0x3ffe7e78aa8, optlen:20) return 0 == set IPV6_MULTICAST_IF option to Link0 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_IF, optval:0x3ffe7e7890c, optlen:4) return 0 == disabled IPV6_MULTICAST_LOOP option == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_LOOP, optval:0x3ffe7e78910, optlen:4) return 0 inet_pton(af:AF_INET6, src:"ff03::1:ff00:100", dst:0x3ffe7e78aa8) return 1, dst=ff03:0000:0000:0000:0000:0001:ff00:0100 == send multicast datagram to the group: fe80::1ce9:d6ff:fe58:abc == sendto(sockfd:4, buf:0x3ffe7e78914, len:24, flags:0, to:0x3ffe7e78a8c, tolen:28) return 24 == recv message from the group == recvmsg(sockfd:4, msg:0x3ffe7e78a40, flags:64) return -1 close(4) OK -> PASS ========== TEST 15 ========== ./tst_mcast_loop_back_get --log=15.html --title="Get the value of IPV6_MULTICAST_LOOP option from kernel" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == get the default value of IPV6_MULTICAST_LOOP option == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_LOOP, optval:0x3ffc51f8520, optlen:0x3ffc51f851c) return length 4 == disabled IPV6_MULTICAST_LOOP option == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_LOOP, optval:0x3ffc51f8520, optlen:4) return 0 == check the value of IPV6_MULTICAST_LOOP option == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_LOOP, optval:0x3ffc51f8520, optlen:0x3ffc51f851c) return length 4 == enabled IPV6_MULTICAST_LOOP option == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_LOOP, optval:0x3ffc51f8520, optlen:4) return 0 == check the value of IPV6_MULTICAST_LOOP option == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MULTICAST_LOOP, optval:0x3ffc51f8520, optlen:0x3ffc51f851c) return length 4 OK -> PASS ========== TEST 16 ========== ./tst_join_group --log=16.html --title="Join a multicast group on a specified local interface" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == join to a multicast group on Link0 == if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"ff03::00", dst:0x3ffc28f92bc) return 1, dst=ff03:0000:0000:0000:0000:0000:0000:0000 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_JOIN_GROUP, optval:0x3ffc28f92cc, optlen:20) return 0 == join to the same multicast group on Link0 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_JOIN_GROUP, optval:0x3ffc28f92cc, optlen:20) return error EADDRINUSE == join to the same multicast group on lo == if_nametoindex(ifname:"lo") return 1 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_JOIN_GROUP, optval:0x3ffc28f92cc, optlen:20) return 0 == join to a multicast group with address is not multicast address == inet_pton(af:AF_INET6, src:"fe80::00", dst:0x3ffc28f92cc) return 1, dst=fe80:0000:0000:0000:0000:0000:0000:0000 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_JOIN_GROUP, optval:0x3ffc28f92cc, optlen:20) return error EINVAL == join to a multicast group with bad paramter == inet_pton(af:AF_INET6, src:"ff03::01", dst:0x3ffc28f92cc) return 1, dst=ff03:0000:0000:0000:0000:0000:0000:0001 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_JOIN_GROUP, optval:0x3ffc28f92bc, optlen:16) return error EINVAL == join to the same multicast group with the interface index is specified as 0 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_JOIN_GROUP, optval:0x3ffc28f92cc, optlen:20) return 0 close(4) OK -> PASS ========== TEST 17 ========== ./tst_leave_group --log=17.html --title="Leave a multicast group on a specified interface" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == leave to a multicast group which is not available on Link0 == inet_pton(af:AF_INET6, src:"ff03::00", dst:0x3ffe8ef89ac) return 1, dst=ff03:0000:0000:0000:0000:0000:0000:0000 if_nametoindex(ifname:"dummy_ipv6") return 125 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_LEAVE_GROUP, optval:0x3ffe8ef89bc, optlen:20) return error EADDRNOTAVAIL == join to a multicast group on Link0 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_JOIN_GROUP, optval:0x3ffe8ef89bc, optlen:20) return 0 == leave to the multicast group on Link0 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_LEAVE_GROUP, optval:0x3ffe8ef89bc, optlen:20) return 0 == join to a multicast group on Link0 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_JOIN_GROUP, optval:0x3ffe8ef89bc, optlen:20) return 0 == leave to the multicast group on lo == if_nametoindex(ifname:"lo") return 1 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_LEAVE_GROUP, optval:0x3ffe8ef89bc, optlen:20) return error EADDRNOTAVAIL == leave to the multicast group with the interface index is specified as 0 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_LEAVE_GROUP, optval:0x3ffe8ef89bc, optlen:20) return 0 == join to a multicast group on Link0 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_JOIN_GROUP, optval:0x3ffe8ef89bc, optlen:20) return 0 == leave to the multicast group with bad paramter type and paramter length == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_LEAVE_GROUP, optval:0x3ffe8ef89ac, optlen:16) return error EINVAL OK -> PASS ========== TEST 18 ========== ./tst_v6only_set_client --log=18.html --title="Restricts AF_INET6 sockets to IPv6 communications only" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc tst_get_unused_port() get port 37429 == create an IPv4 socket == socket(domain:AF_INET, type:SOCK_STREAM, protocol:0) return sockfd=4 == bind IPv4 socket to port 37429 == bind(sockfd:4, my_addr:0x3ffe797925c, addrlen:16) return 0 == listen on IPv4 socket == listen(sockfd:4, backlog:100) return 0 == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=5 inet_pton(af:AF_INET6, src:"::FFFF:127.0.0.1", dst:0x3ffe7979274) return 1, dst=0000:0000:0000:0000:0000:ffff:7f00:0001 == enable the IPV6_V6ONLY option == setsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_V6ONLY, optval:0x3ffe7979258, optlen:4) return 0 == connect IPv6 socket to IPv4 socket == connect(sockfd:5, serv_addr:0x3ffe797926c, addrlen:28) return error ENETUNREACH == disable the IPV6_V6ONLY option == setsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_V6ONLY, optval:0x3ffe7979258, optlen:4) return 0 == connect IPv6 socket to IPv4 socket == connect(sockfd:5, serv_addr:0x3ffe797926c, addrlen:28) return 0 == accept the connect on IPv4 socket == accept(sockfd:4, addr:0x3ffe797925c, addrlen:0x3ffe7979254) return 6 == send message on IPv4 socket == send(sockfd:6, buf:0x3ffe79791f0, len:100, flags:0) return 100 recv(sockfd:5, buf:0x3ffe79791f0, len:100, flags:0) return 100 close(6) close(5) close(4) OK -> PASS ========== TEST 19 ========== ./tst_v6only_set_msg --log=19.html --title="Restricts the socket can be used to send and receive IPv6 packets only" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv4 socket == socket(domain:AF_INET, type:SOCK_DGRAM, protocol:0) return sockfd=4 tst_get_unused_port() get port 52755 == bind IPv4 socket to port 52755 == bind(sockfd:4, my_addr:0x3fffbe7895c, addrlen:16) return 0 == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=5 == disabled the IPV6_V6ONLY option == setsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_V6ONLY, optval:0x3fffbe78958, optlen:4) return 0 tst_get_unused_port() get port 35936 == bind IPv6 socket to port 35936 == bind(sockfd:5, my_addr:0x3fffbe7896c, addrlen:28) return 0 == send message to v4mapped address == inet_pton(af:AF_INET6, src:"::FFFF:127.0.0.1", dst:0x3fffbe78974) return 1, dst=0000:0000:0000:0000:0000:ffff:7f00:0001 sendto(sockfd:5, buf:0x3fffbe788f4, len:100, flags:0, to:0x3fffbe7896c, tolen:28) return 100 == recv message on IPv4 socket == recv(sockfd:4, buf:0x3fffbe788f4, len:100, flags:64) return 100 == send message from v4mapped address to IPv6 socket == inet_pton(af:AF_INET, src:"127.0.0.1", dst:0x3fffbe78960) return 1, dst=127.0.0.1 sendto(sockfd:4, buf:0x3fffbe788f4, len:100, flags:0, to:0x3fffbe7895c, tolen:16) return 100 == recv message which is send from v4mapped address on IPv6 socket== recv(sockfd:5, buf:0x3fffbe788f4, len:100, flags:64) return 100 close(5) == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=5 == enabled the IPV6_V6ONLY option == setsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_V6ONLY, optval:0x3fffbe78958, optlen:4) return 0 == bind IPv6 socket to port 35936 == bind(sockfd:5, my_addr:0x3fffbe7896c, addrlen:28) return 0 == send message to v4mapped address == inet_pton(af:AF_INET6, src:"::FFFF:127.0.0.1", dst:0x3fffbe78974) return 1, dst=0000:0000:0000:0000:0000:ffff:7f00:0001 sendto(sockfd:5, buf:0x3fffbe788f4, len:100, flags:0, to:0x3fffbe7896c, tolen:28) return -1 == send message from v4mapped address to IPv6 socket == inet_pton(af:AF_INET, src:"127.0.0.1", dst:0x3fffbe78960) return 1, dst=127.0.0.1 sendto(sockfd:4, buf:0x3fffbe788f4, len:100, flags:0, to:0x3fffbe7895c, tolen:16) return 100 == recv message which is send from v4mapped address on IPv6 socket == recv(sockfd:5, buf:0x3fffbe788f4, len:100, flags:64) return -1 close(5) close(4) OK -> PASS ========== TEST 20 ========== ./tst_v6only_set_server --log=20.html --title="Allow two versions of the same server process to run on the same port" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc tst_get_unused_port() get port 47697 == create an IPv4 socket == socket(domain:AF_INET, type:SOCK_STREAM, protocol:0) return sockfd=4 == bind IPv4 socket to port 47697 == bind(sockfd:4, my_addr:0x3ffd80f8b60, addrlen:16) return 0 == listen on IPv4 socket == listen(sockfd:4, backlog:100) return 0 == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=5 == disabled the IPV6_V6ONLY option == setsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_V6ONLY, optval:0x3ffd80f8b5c, optlen:4) return 0 == bind IPv6 socket to port 47697 == bind(sockfd:5, my_addr:0x3ffd80f8b70, addrlen:28) return error EADDRINUSE == enabled the IPV6_V6ONLY option == setsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_V6ONLY, optval:0x3ffd80f8b5c, optlen:4) return 0 == bind IPv6 socket to port 47697 == bind(sockfd:5, my_addr:0x3ffd80f8b70, addrlen:28) return 0 == listen on IPv6 socket == listen(sockfd:5, backlog:100) return 0 close(5) close(4) OK -> PASS ========== TEST 21 ========== ./tst_v6only_get --log=21.html --title="Get the value of IPV6_V6ONLY option from kernel" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 == get the default value of IPV6_V6ONLY option == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_V6ONLY, optval:0x3fffa478d60, optlen:0x3fffa478d5c) return v6only=0 == set the IPV6_V6ONLY option to 1 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_V6ONLY, optval:0x3fffa478d60, optlen:4) return 0 == get the value of IPV6_V6ONLY option == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_V6ONLY, optval:0x3fffa478d60, optlen:0x3fffa478d5c) return v6only=1 OK -> PASS :: [ 16:32:24 ] :: [ LOG ] :: ======Output options Test Results====== :: [ 16:32:24 ] :: [ PASS ] :: Case#1 [name:tst_hop_limit_set_to_lt_n1] [log:options/1.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#2 [name:tst_hop_limit_set_to_dafault] [log:options/2.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#3 [name:tst_hop_limit_set_to_valid] [log:options/3.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#4 [name:tst_hop_limit_set_to_gt_255] [log:options/4.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#5 [name:tst_hop_limit_get] [log:options/5.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#6 [name:tst_mcast_if_set] [log:options/6.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#7 [name:tst_mcast_if_get] [log:options/7.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#8 [name:tst_mcast_hops_set_to_lt_n1] [log:options/8.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#9 [name:tst_mcast_hops_set_to_dafault] [log:options/9.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#10 [name:tst_mcast_hops_set_to_valid] [log:options/10.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#11 [name:tst_mcast_hops_set_to_gt_255] [log:options/11.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#12 [name:tst_mcast_hops_get] [log:options/12.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#13 [name:tst_mcast_loop_back] [log:options/13.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#14 [name:tst_mcast_loop_no_back] [log:options/14.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#15 [name:tst_mcast_loop_back_get] [log:options/15.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#16 [name:tst_join_group] [log:options/16.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#17 [name:tst_leave_group] [log:options/17.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#18 [name:tst_v6only_set_client] [log:options/18.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#19 [name:tst_v6only_set_msg] [log:options/19.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#20 [name:tst_v6only_set_server] [log:options/20.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#21 [name:tst_v6only_get] [log:options/21.html] (Assert: 'PASS' should equal 'PASS') ===> function :: [ 16:32:24 ] :: [ LOG ] :: Execute function Test Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. ========== TEST 1 ========== ./tst_getaddrinfo_1 --log=1.html --title="Translates the name of a service location or a service name to a set of socket addresses" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == The nodename and servname arguments are either null pointers or pointers to null-terminated strings == getaddrinfo(nodename:::1, servname:sunrpc, hints:(nil), res:0x3ffddc788a8) return 0 struct addrinfo { ai_flags: 40 ai_family: AF_INET6 ai_socktype: SOCK_STREAM ai_protocol: 6 ai_addrlen: 28 ai_canonname: (null) ai_addr: 0000:0000:0000:0000:0000:0000:0000:0001 } struct addrinfo { ai_flags: 40 ai_family: AF_INET6 ai_socktype: SOCK_DGRAM ai_protocol: 17 ai_addrlen: 28 ai_canonname: (null) ai_addr: 0000:0000:0000:0000:0000:0000:0000:0001 } freeaddrinfo(ai:0x2c8e850) == The nodename arguments is valid == getaddrinfo(nodename:::1, servname:(null), hints:(nil), res:0x3ffddc788a8) return 0 struct addrinfo { ai_flags: 40 ai_family: AF_INET6 ai_socktype: SOCK_STREAM ai_protocol: 6 ai_addrlen: 28 ai_canonname: (null) ai_addr: 0000:0000:0000:0000:0000:0000:0000:0001 } struct addrinfo { ai_flags: 40 ai_family: AF_INET6 ai_socktype: SOCK_DGRAM ai_protocol: 17 ai_addrlen: 28 ai_canonname: (null) ai_addr: 0000:0000:0000:0000:0000:0000:0000:0001 } struct addrinfo { ai_flags: 40 ai_family: AF_INET6 ai_socktype: SOCK_RAW ai_protocol: 0 ai_addrlen: 28 ai_canonname: (null) ai_addr: 0000:0000:0000:0000:0000:0000:0000:0001 } freeaddrinfo(ai:0x2c8e8b0) == The servname arguments is valid == getaddrinfo(nodename:(null), servname:sunrpc, hints:(nil), res:0x3ffddc788a8) return 0 struct addrinfo { ai_flags: 40 ai_family: AF_INET6 ai_socktype: SOCK_STREAM ai_protocol: 6 ai_addrlen: 28 ai_canonname: (null) ai_addr: 0000:0000:0000:0000:0000:0000:0000:0001 } struct addrinfo { ai_flags: 40 ai_family: AF_INET6 ai_socktype: SOCK_DGRAM ai_protocol: 17 ai_addrlen: 28 ai_canonname: (null) ai_addr: 0000:0000:0000:0000:0000:0000:0000:0001 } struct addrinfo { ai_flags: 40 ai_family: AF_INET ai_socktype: SOCK_STREAM ai_protocol: 6 ai_addrlen: 16 ai_canonname: (null) ai_addr: 127.0.0.1 } struct addrinfo { ai_flags: 40 ai_family: AF_INET ai_socktype: SOCK_DGRAM ai_protocol: 17 ai_addrlen: 16 ai_canonname: (null) ai_addr: 127.0.0.1 } freeaddrinfo(ai:0x2c8ef30) == The request address family is set to AF_INET6 == getaddrinfo(nodename:(null), servname:sunrpc, hints:0x3ffddc78878, res:0x3ffddc788a8) return 0 struct addrinfo { ai_flags: 0 ai_family: AF_INET6 ai_socktype: SOCK_STREAM ai_protocol: 6 ai_addrlen: 28 ai_canonname: (null) ai_addr: 0000:0000:0000:0000:0000:0000:0000:0001 } struct addrinfo { ai_flags: 0 ai_family: AF_INET6 ai_socktype: SOCK_DGRAM ai_protocol: 17 ai_addrlen: 28 ai_canonname: (null) ai_addr: 0000:0000:0000:0000:0000:0000:0000:0001 } freeaddrinfo(ai:0x2c8e850) OK -> PASS ========== TEST 2 ========== ./tst_getaddrinfo_2 --log=2.html --title="A non-zero value is returned upon error" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == both of the nodename and servname arguments are null pointer == getaddrinfo(nodename:(null), servname:(null), hints:(nil), res:0x3ffe18f8f10) return -2 == both of the nodename and servname arguments are null-terminated strings == getaddrinfo(nodename:, servname:, hints:(nil), res:0x3ffe18f8f10) return -2 == the servname argument is invalid == getaddrinfo(nodename:::2, servname:aabbc, hints:(nil), res:0x3ffe18f8f10) return -8 OK -> PASS ========== TEST 3 ========== ./tst_freeaddrinfo --log=3.html --title="Frees one or more addrinfo structures returned by getaddrinfo()" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc getaddrinfo(nodename:::1, servname:sunrpc, hints:(nil), res:0x3ffeb178bd0) return 0 struct addrinfo { ai_flags: 40 ai_family: AF_INET6 ai_socktype: SOCK_STREAM ai_protocol: 6 ai_addrlen: 28 ai_canonname: (null) ai_addr: 0000:0000:0000:0000:0000:0000:0000:0001 } struct addrinfo { ai_flags: 40 ai_family: AF_INET6 ai_socktype: SOCK_DGRAM ai_protocol: 17 ai_addrlen: 28 ai_canonname: (null) ai_addr: 0000:0000:0000:0000:0000:0000:0000:0001 } freeaddrinfo(ai:0x166f850) OK -> PASS ========== TEST 4 ========== ./tst_gai_strerror --log=4.html --title="Provides a descriptive text string corresponding to an EAI_xxx error value" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc gai_strerror(ecode:EAI_AGAIN) return "Temporary failure in name resolution" gai_strerror(ecode:EAI_BADFLAGS) return "Bad value for ai_flags" gai_strerror(ecode:EAI_FAIL) return "Non-recoverable failure in name resolution" gai_strerror(ecode:EAI_FAMILY) return "ai_family not supported" gai_strerror(ecode:EAI_MEMORY) return "Memory allocation failure" gai_strerror(ecode:EAI_NONAME) return "Name or service not known" gai_strerror(ecode:EAI_SERVICE) return "Servname not supported for ai_socktype" gai_strerror(ecode:EAI_SOCKTYPE) return "ai_socktype not supported" gai_strerror(ecode:EAI_SYSTEM) return "System error" gai_strerror(ecode:UNKNOW(0)) return "Unknown error" OK -> PASS ========== TEST 5 ========== ./tst_getnameinfo --log=5.html --title="Translate a socket address to a node name and service location" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == if the flag bit NI_NUMERICHOST is set == getnameinfo(sa:0x3ffee979018, salen:28, node:0x3ffee978fdc, nodelen:60, service:0x3ffee978fa0, servicelen:60, flags:1) return 0, node:"::1", service:"0" == if the flag bit NI_NUMERICSERV is set == getnameinfo(sa:0x3ffee979018, salen:28, node:0x3ffee978fdc, nodelen:60, service:0x3ffee978fa0, servicelen:60, flags:2) return 0, node:"localhost", service:"111" == the port number is set == getnameinfo(sa:0x3ffee979018, salen:28, node:0x3ffee978fdc, nodelen:60, service:0x3ffee978fa0, servicelen:60, flags:0) return 0, node:"localhost", service:"sunrpc" == if the flag bit NI_DGRAM is set == getnameinfo(sa:0x3ffee979018, salen:28, node:0x3ffee978fdc, nodelen:60, service:0x3ffee978fa0, servicelen:60, flags:16) return 0, node:"localhost", service:"sunrpc" == the address is the IPv6 unspecified address ("::") if the NI_NAMEREQD flag is set == getnameinfo(sa:0x3ffee979018, salen:28, node:0x3ffee978fdc, nodelen:60, service:0x3ffee978fa0, servicelen:60, flags:8) return error EAI_NONAME == both nodename and servname are null if the NI_NAMEREQD flag is set == getnameinfo(sa:0x3ffee979018, salen:28, node:(nil), nodelen:0, service:(nil), servicelen:0, flags:8) return error EAI_NONAME == the address family was not recognized == getnameinfo(sa:0x3ffee979018, salen:28, node:(nil), nodelen:0, service:(nil), servicelen:0, flags:0) return error EAI_FAMILY == the address length was invalid for the specified family == getnameinfo(sa:0x3ffee979018, salen:14, node:0x3ffee978fdc, nodelen:60, service:0x3ffee978fa0, servicelen:60, flags:0) return error EAI_FAMILY == the flags had an invalid value == getnameinfo(sa:0x3ffee979018, salen:28, node:0x3ffee978fdc, nodelen:60, service:0x3ffee978fa0, servicelen:60, flags:65535) return error EAI_BADFLAGS == an argument buffer overflowed == getnameinfo(sa:0x3ffee979018, salen:28, node:0x3ffee978fdc, nodelen:1, service:0x3ffee978fa0, servicelen:60, flags:0) return error EAI_OVERFLOW OK -> PASS ========== TEST 6 ========== ./tst_inet_pton_inet --log=6.html --title="Convert an text string address into its AF_INET numeric binary form" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == source address string is 192.168.0.1 == inet_pton(af:AF_INET, src:"192.168.0.1", dst:0x3ffde4f89b4) return 1, dst=192.168.0.1 == source address string is 192.168.0.01 == inet_pton(af:AF_INET, src:"192.168.0.01", dst:0x3ffde4f89b4) return 0 == source address string is 192.168.0.FF == inet_pton(af:AF_INET, src:"192.168.0.FF", dst:0x3ffde4f89b4) return 0 == source address string is 192.168.0.1000 == inet_pton(af:AF_INET, src:"192.168.0.1000", dst:0x3ffde4f89b4) return 0 == source address string is 192.168.0.256 == inet_pton(af:AF_INET, src:"192.168.0.256", dst:0x3ffde4f89b4) return 0 == source address string is 192.168.0 == inet_pton(af:AF_INET, src:"192.168.0", dst:0x3ffde4f89b4) return 0 == source address string is unix, not an AF_INET address == inet_pton(af:AF_UNIX, src:"unix", dst:0x3ffde4f89b4) return -1, error=EAFNOSUPPORT OK -> PASS ========== TEST 7 ========== ./tst_inet_pton_inet6 --log=7.html --title="Convert an text string address into its AF_INET6 numeric binary form" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == source address string is ::1 == inet_pton(af:AF_INET6, src:"::1", dst:0x3ffc97f8608) return 1, dst=0000:0000:0000:0000:0000:0000:0000:0001 == source address string is ::FFFF:192.168.0.1 == inet_pton(af:AF_INET6, src:"::FFFF:192.168.0.1", dst:0x3ffc97f8608) return 1, dst=0000:0000:0000:0000:0000:ffff:c0a8:0001 == source address string is ::192.168.0.1 == inet_pton(af:AF_INET6, src:"::192.168.0.1", dst:0x3ffc97f8608) return 1, dst=0000:0000:0000:0000:0000:0000:c0a8:0001 == source address string is ::FFFF:0:192.168.0.1 == inet_pton(af:AF_INET6, src:"::FFFF:0:192.168.0.1", dst:0x3ffc97f8608) return 1, dst=0000:0000:0000:0000:ffff:0000:c0a8:0001 == source address string is 192.168.0.1 == inet_pton(af:AF_INET6, src:"192.168.0.1", dst:0x3ffc97f8608) return 0 == source address string is ::FFFFF:1 == inet_pton(af:AF_INET6, src:"::FFFFF:1", dst:0x3ffc97f8608) return 0 == source address string is ::HH:1 == inet_pton(af:AF_INET6, src:"::HH:1", dst:0x3ffc97f8608) return 0 == source address string is ::FFFF:192.168.0.1:1 == inet_pton(af:AF_INET6, src:"::FFFF:192.168.0.1:1", dst:0x3ffc97f8608) return 0 OK -> PASS ========== TEST 8 ========== ./tst_inet_ntop_inet --log=8.html --title="Convert a numeric address into a AF_INET text string suitable for presentation" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == convert loopback address into a AF_INET text string == == dstaddr: == ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff inet_ntop(af:AF_INET, src:127.0.0.1, dst:0x3ffd88792cc, size:20) return 127.0.0.1 == dstaddr: == 31 32 37 2e 30 2e 30 2e 31 00 ff ff ff ff ff ff ff ff ff ff == convert unspecified address into a AF_INET text string == == dstaddr: == ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff inet_ntop(af:AF_INET, src:0.0.0.0, dst:0x3ffd88792cc, size:8) return 0.0.0.0 == dstaddr: == 30 2e 30 2e 30 2e 30 00 ff ff ff ff ff ff ff ff ff ff ff ff == convert unspecified address with not enough memory == == dstaddr: == ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff inet_ntop(af:AF_INET, src:0.0.0.0, dst:0x3ffd88792cc, size:7) return (null) == dstaddr: == ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff OK -> PASS ========== TEST 9 ========== ./tst_inet_ntop_inet6 --log=9.html --title="Convert a numeric address into a AF_INET6 text string suitable for presentation" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == convert loopback address into a AF_INET6 text string == == dstaddr: == ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff inet_ntop(af:AF_INET6, src:0000:0000:0000:0000:0000:0000:0000:0001, dst:0x3ffc407861a, size:50) return ::1 == dstaddr: == 3a 3a 31 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff == convert unspecified address into a AF_INET6 text string == == dstaddr: == ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff inet_ntop(af:AF_INET6, src:0000:0000:0000:0000:0000:0000:0000:0000, dst:0x3ffc407861a, size:50) return :: == dstaddr: == 3a 3a 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff == convert address fe80::100:0:0:1 into a AF_INET6 text string == inet_pton(af:AF_INET6, src:"fe80::100:0:0:1", dst:0x3ffc407864c) return 1, dst=fe80:0000:0000:0000:0100:0000:0000:0001 == dstaddr: == ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff inet_ntop(af:AF_INET6, src:fe80:0000:0000:0000:0100:0000:0000:0001, dst:0x3ffc407861a, size:16) return fe80::100:0:0:1 == dstaddr: == 66 65 38 30 3a 3a 31 30 30 3a 30 3a 30 3a 31 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff == convert address fe80::100:0:0:1 with not enough memory == == dstaddr: == ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff inet_ntop(af:AF_INET6, src:fe80:0000:0000:0000:0100:0000:0000:0001, dst:0x3ffc407861a, size:15) return (null) OK -> PASS ========== TEST 10 ========== ./tst_is_addr_unspecified --log=10.html --title="Use IN6_IS_ADDR_UNSPECIFIED to test for special IPv6 addresses" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == IPv6 unspecified address == IN6_IS_ADDR_UNSPECIFIED(0000:0000:0000:0000:0000:0000:0000:0000) return 1 == IPv6 loopback address (::1) == IN6_IS_ADDR_UNSPECIFIED(0000:0000:0000:0000:0000:0000:0000:0001) return 0 OK -> PASS ========== TEST 11 ========== ./tst_is_addr_loopback --log=11.html --title="Use IN6_IS_ADDR_LOOPBACK to test for special IPv6 addresses" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == IPv6 loopback address (::1) == IN6_IS_ADDR_LOOPBACK(0000:0000:0000:0000:0000:0000:0000:0001) return 1 == IPv6 unspecified address == IN6_IS_ADDR_LOOPBACK(0000:0000:0000:0000:0000:0000:0000:0000) return 0 OK -> PASS ========== TEST 12 ========== ./tst_is_addr_multicast --log=12.html --title="Use IN6_IS_ADDR_MULTICAST to test for special IPv6 addresses" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == IPv6 multicast link local address (FF02::101) == inet_pton(af:AF_INET6, src:"FF02::101", dst:0x3fffdd78fd4) return 1, dst=ff02:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MULTICAST(ff02:0000:0000:0000:0000:0000:0000:0101) return 1 == IPv6 multicast node local address (FF01::101) == inet_pton(af:AF_INET6, src:"FF01::101", dst:0x3fffdd78fd4) return 1, dst=ff01:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MULTICAST(ff01:0000:0000:0000:0000:0000:0000:0101) return 1 == IPv6 multicast site local address (FF05::101) == inet_pton(af:AF_INET6, src:"FF05::101", dst:0x3fffdd78fd4) return 1, dst=ff05:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MULTICAST(ff05:0000:0000:0000:0000:0000:0000:0101) return 1 == IPv6 multicast organization local address (FF08::101) == inet_pton(af:AF_INET6, src:"FF08::101", dst:0x3fffdd78fd4) return 1, dst=ff08:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MULTICAST(ff08:0000:0000:0000:0000:0000:0000:0101) return 1 == IPv6 multicast global address (FF0E::101) == inet_pton(af:AF_INET6, src:"FF0E::101", dst:0x3fffdd78fd4) return 1, dst=ff0e:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MULTICAST(ff0e:0000:0000:0000:0000:0000:0000:0101) return 1 == IPv6 addresses of link-local scope == inet_pton(af:AF_INET6, src:"fe80::20c:29ff:fec8:e3b7", dst:0x3fffdd78fd4) return 1, dst=fe80:0000:0000:0000:020c:29ff:fec8:e3b7 IN6_IS_ADDR_MULTICAST(fe80:0000:0000:0000:020c:29ff:fec8:e3b7) return 0 == IPv6 loopback address (::1) == IN6_IS_ADDR_MULTICAST(0000:0000:0000:0000:0000:0000:0000:0001) return 0 OK -> PASS ========== TEST 13 ========== ./tst_is_addr_linklocal --log=13.html --title="Use IN6_IS_ADDR_LINKLOCAL to test for special IPv6 addresses" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == IPv6 addresses of link-local scope == inet_pton(af:AF_INET6, src:"fe80::20c:29ff:fec8:e3b7", dst:0x3ffc91f8640) return 1, dst=fe80:0000:0000:0000:020c:29ff:fec8:e3b7 IN6_IS_ADDR_LINKLOCAL(fe80:0000:0000:0000:020c:29ff:fec8:e3b7) return 1 == IPv6 addresses of site-local scope == inet_pton(af:AF_INET6, src:"fec0::20c:29ff:fec8:e3b7", dst:0x3ffc91f8640) return 1, dst=fec0:0000:0000:0000:020c:29ff:fec8:e3b7 IN6_IS_ADDR_LINKLOCAL(fec0:0000:0000:0000:020c:29ff:fec8:e3b7) return 0 == IPv6 multicast link local address (FF02::101) == inet_pton(af:AF_INET6, src:"FF02::101", dst:0x3ffc91f8640) return 1, dst=ff02:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_LINKLOCAL(ff02:0000:0000:0000:0000:0000:0000:0101) return 0 == IPv6 loopback address (::1) == IN6_IS_ADDR_LINKLOCAL(0000:0000:0000:0000:0000:0000:0000:0001) return 0 OK -> PASS ========== TEST 14 ========== ./tst_is_addr_sitelocal --log=14.html --title="Use IN6_IS_ADDR_SITELOCAL to test for special IPv6 addresses" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == IPv6 addresses of site-local scope == inet_pton(af:AF_INET6, src:"fec0::20c:29ff:fec8:e3b7", dst:0x3fff92792a0) return 1, dst=fec0:0000:0000:0000:020c:29ff:fec8:e3b7 IN6_IS_ADDR_SITELOCAL(fec0:0000:0000:0000:020c:29ff:fec8:e3b7) return 1 == IPv6 addresses of link-local scope == inet_pton(af:AF_INET6, src:"fe80::20c:29ff:fec8:e3b7", dst:0x3fff92792a0) return 1, dst=fe80:0000:0000:0000:020c:29ff:fec8:e3b7 IN6_IS_ADDR_SITELOCAL(fe80:0000:0000:0000:020c:29ff:fec8:e3b7) return 0 == IPv6 multicast site local address (FF05::101) == inet_pton(af:AF_INET6, src:"FF05::101", dst:0x3fff92792a0) return 1, dst=ff05:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_SITELOCAL(ff05:0000:0000:0000:0000:0000:0000:0101) return 0 == IPv6 loopback address (::1) == IN6_IS_ADDR_SITELOCAL(0000:0000:0000:0000:0000:0000:0000:0001) return 0 OK -> PASS ========== TEST 15 ========== ./tst_is_addr_v4mapped --log=15.html --title="Use IN6_IS_ADDR_V4MAPPED to test for special IPv6 addresses" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == IPv4-mapped IPv6 address == inet_pton(af:AF_INET6, src:"::FFFF:192.168.0.1", dst:0x3fff4478668) return 1, dst=0000:0000:0000:0000:0000:ffff:c0a8:0001 IN6_IS_ADDR_V4MAPPED(0000:0000:0000:0000:0000:ffff:c0a8:0001) return 1 == IPv4-compatible IPv6 address == inet_pton(af:AF_INET6, src:"::192.168.0.1", dst:0x3fff4478668) return 1, dst=0000:0000:0000:0000:0000:0000:c0a8:0001 IN6_IS_ADDR_V4MAPPED(0000:0000:0000:0000:0000:0000:c0a8:0001) return 0 == IPv6 loopback address (::1) == IN6_IS_ADDR_V4MAPPED(0000:0000:0000:0000:0000:0000:0000:0001) return 0 OK -> PASS ========== TEST 16 ========== ./tst_is_addr_v4compat --log=16.html --title="Use IN6_IS_ADDR_V4COMPAT to test for special IPv6 addresses" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == IPv4-compatible IPv6 address == inet_pton(af:AF_INET6, src:"::192.168.0.1", dst:0x3ffddb78bf8) return 1, dst=0000:0000:0000:0000:0000:0000:c0a8:0001 IN6_IS_ADDR_V4COMPAT(0000:0000:0000:0000:0000:0000:c0a8:0001) return 1 == IPv4-mapped IPv6 address == inet_pton(af:AF_INET6, src:"::FFFF:192.168.0.1", dst:0x3ffddb78bf8) return 1, dst=0000:0000:0000:0000:0000:ffff:c0a8:0001 IN6_IS_ADDR_V4COMPAT(0000:0000:0000:0000:0000:ffff:c0a8:0001) return 0 == IPv6 loopback address (::1) == IN6_IS_ADDR_V4COMPAT(0000:0000:0000:0000:0000:0000:0000:0001) return 0 OK -> PASS ========== TEST 17 ========== ./tst_is_addr_mc_nodelocal --log=17.html --title="Use IN6_IS_ADDR_MC_NODELOCAL to test for special IPv6 addresses" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == IPv6 multicast node local address (FF01::101) == inet_pton(af:AF_INET6, src:"FF01::101", dst:0x3ffda478e84) return 1, dst=ff01:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_NODELOCAL(ff01:0000:0000:0000:0000:0000:0000:0101) return 1 == IPv6 multicast link local address (FF01::101) == inet_pton(af:AF_INET6, src:"FF02::101", dst:0x3ffda478e84) return 1, dst=ff02:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_NODELOCAL(ff02:0000:0000:0000:0000:0000:0000:0101) return 0 == IPv6 multicast site local address (FF01::101) == inet_pton(af:AF_INET6, src:"FF05::101", dst:0x3ffda478e84) return 1, dst=ff05:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_NODELOCAL(ff05:0000:0000:0000:0000:0000:0000:0101) return 0 == IPv6 multicast organization local address (FF08::101) == inet_pton(af:AF_INET6, src:"FF08::101", dst:0x3ffda478e84) return 1, dst=ff08:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_NODELOCAL(ff08:0000:0000:0000:0000:0000:0000:0101) return 0 == IPv6 multicast global address (FF0E::101) == inet_pton(af:AF_INET6, src:"FF0E::101", dst:0x3ffda478e84) return 1, dst=ff0e:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_NODELOCAL(ff0e:0000:0000:0000:0000:0000:0000:0101) return 0 OK -> PASS ========== TEST 18 ========== ./tst_is_addr_mc_linklocal --log=18.html --title="Use IN6_IS_ADDR_MC_LINKLOCAL to test for special IPv6 addresses" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == IPv6 multicast link local address (FF01::101) == inet_pton(af:AF_INET6, src:"FF02::101", dst:0x3fff75f8b14) return 1, dst=ff02:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_LINKLOCAL(ff02:0000:0000:0000:0000:0000:0000:0101) return 1 == IPv6 multicast node local address (FF01::101) == inet_pton(af:AF_INET6, src:"FF01::101", dst:0x3fff75f8b14) return 1, dst=ff01:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_LINKLOCAL(ff01:0000:0000:0000:0000:0000:0000:0101) return 0 == IPv6 multicast site local address (FF01::101) == inet_pton(af:AF_INET6, src:"FF05::101", dst:0x3fff75f8b14) return 1, dst=ff05:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_LINKLOCAL(ff05:0000:0000:0000:0000:0000:0000:0101) return 0 == IPv6 multicast organization local address (FF08::101) == inet_pton(af:AF_INET6, src:"FF08::101", dst:0x3fff75f8b14) return 1, dst=ff08:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_LINKLOCAL(ff08:0000:0000:0000:0000:0000:0000:0101) return 0 == IPv6 multicast global address (FF0E::101) == inet_pton(af:AF_INET6, src:"FF0E::101", dst:0x3fff75f8b14) return 1, dst=ff0e:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_LINKLOCAL(ff0e:0000:0000:0000:0000:0000:0000:0101) return 0 OK -> PASS ========== TEST 19 ========== ./tst_is_addr_mc_sitelocal --log=19.html --title="Use IN6_IS_ADDR_MC_SITELOCAL to test for special IPv6 addresses" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == IPv6 multicast site local address (FF01::101) == inet_pton(af:AF_INET6, src:"FF05::101", dst:0x3ffdf9f92e4) return 1, dst=ff05:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_SITELOCAL(ff05:0000:0000:0000:0000:0000:0000:0101) return 1 == IPv6 multicast link local address (FF01::101) == inet_pton(af:AF_INET6, src:"FF02::101", dst:0x3ffdf9f92e4) return 1, dst=ff02:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_SITELOCAL(ff02:0000:0000:0000:0000:0000:0000:0101) return 0 == IPv6 multicast node local address (FF01::101) == inet_pton(af:AF_INET6, src:"FF01::101", dst:0x3ffdf9f92e4) return 1, dst=ff01:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_SITELOCAL(ff01:0000:0000:0000:0000:0000:0000:0101) return 0 == IPv6 multicast organization local address (FF08::101) == inet_pton(af:AF_INET6, src:"FF08::101", dst:0x3ffdf9f92e4) return 1, dst=ff08:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_SITELOCAL(ff08:0000:0000:0000:0000:0000:0000:0101) return 0 == IPv6 multicast global address (FF0E::101) == inet_pton(af:AF_INET6, src:"FF0E::101", dst:0x3ffdf9f92e4) return 1, dst=ff0e:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_SITELOCAL(ff0e:0000:0000:0000:0000:0000:0000:0101) return 0 OK -> PASS ========== TEST 20 ========== ./tst_is_addr_mc_orglocal --log=20.html --title="Use IN6_IS_ADDR_MC_ORGLOCAL to test for special IPv6 addresses" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == IPv6 multicast organization local address (FF08::101) == inet_pton(af:AF_INET6, src:"FF08::101", dst:0x3ffe1378874) return 1, dst=ff08:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_ORGLOCAL(ff08:0000:0000:0000:0000:0000:0000:0101) return 1 == IPv6 multicast link local address (FF01::101) == inet_pton(af:AF_INET6, src:"FF02::101", dst:0x3ffe1378874) return 1, dst=ff02:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_ORGLOCAL(ff02:0000:0000:0000:0000:0000:0000:0101) return 0 == IPv6 multicast node local address (FF01::101) == inet_pton(af:AF_INET6, src:"FF01::101", dst:0x3ffe1378874) return 1, dst=ff01:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_ORGLOCAL(ff01:0000:0000:0000:0000:0000:0000:0101) return 0 == IPv6 multicast site local address (FF01::101) == inet_pton(af:AF_INET6, src:"FF05::101", dst:0x3ffe1378874) return 1, dst=ff05:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_ORGLOCAL(ff05:0000:0000:0000:0000:0000:0000:0101) return 0 == IPv6 multicast global address (FF0E::101) == inet_pton(af:AF_INET6, src:"FF0E::101", dst:0x3ffe1378874) return 1, dst=ff0e:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_ORGLOCAL(ff0e:0000:0000:0000:0000:0000:0000:0101) return 0 OK -> PASS ========== TEST 21 ========== ./tst_is_addr_mc_global --log=21.html --title="Use IN6_IS_ADDR_MC_GLOBAL to test for special IPv6 addresses" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == IPv6 multicast global address (FF0E::101) == inet_pton(af:AF_INET6, src:"FF0E::101", dst:0x3ffe86f8b84) return 1, dst=ff0e:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_GLOBAL(ff0e:0000:0000:0000:0000:0000:0000:0101) return 1 == IPv6 multicast node local address (FF01::101) == inet_pton(af:AF_INET6, src:"FF01::101", dst:0x3ffe86f8b84) return 1, dst=ff01:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_GLOBAL(ff01:0000:0000:0000:0000:0000:0000:0101) return 0 == IPv6 multicast link local address (FF02::101) == inet_pton(af:AF_INET6, src:"FF02::101", dst:0x3ffe86f8b84) return 1, dst=ff02:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_GLOBAL(ff02:0000:0000:0000:0000:0000:0000:0101) return 0 == IPv6 multicast organization local address (FF08::101) == inet_pton(af:AF_INET6, src:"FF08::101", dst:0x3ffe86f8b84) return 1, dst=ff08:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_GLOBAL(ff08:0000:0000:0000:0000:0000:0000:0101) return 0 == IPv6 multicast site local address (FF05::101) == inet_pton(af:AF_INET6, src:"FF05::101", dst:0x3ffe86f8b84) return 1, dst=ff05:0000:0000:0000:0000:0000:0000:0101 IN6_IS_ADDR_MC_GLOBAL(ff05:0000:0000:0000:0000:0000:0000:0101) return 0 OK -> PASS :: [ 16:32:35 ] :: [ LOG ] :: ======Output function Test Results====== :: [ 16:32:35 ] :: [ PASS ] :: Case#1 [name:tst_getaddrinfo_1] [log:function/1.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:36 ] :: [ PASS ] :: Case#2 [name:tst_getaddrinfo_2] [log:function/2.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:36 ] :: [ PASS ] :: Case#3 [name:tst_freeaddrinfo] [log:function/3.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:36 ] :: [ PASS ] :: Case#4 [name:tst_gai_strerror] [log:function/4.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:36 ] :: [ PASS ] :: Case#5 [name:tst_getnameinfo] [log:function/5.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:36 ] :: [ PASS ] :: Case#6 [name:tst_inet_pton_inet] [log:function/6.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:36 ] :: [ PASS ] :: Case#7 [name:tst_inet_pton_inet6] [log:function/7.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:36 ] :: [ PASS ] :: Case#8 [name:tst_inet_ntop_inet] [log:function/8.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:36 ] :: [ PASS ] :: Case#9 [name:tst_inet_ntop_inet6] [log:function/9.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:36 ] :: [ PASS ] :: Case#10 [name:tst_is_addr_unspecified] [log:function/10.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:36 ] :: [ PASS ] :: Case#11 [name:tst_is_addr_loopback] [log:function/11.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:36 ] :: [ PASS ] :: Case#12 [name:tst_is_addr_multicast] [log:function/12.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:36 ] :: [ PASS ] :: Case#13 [name:tst_is_addr_linklocal] [log:function/13.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:36 ] :: [ PASS ] :: Case#14 [name:tst_is_addr_sitelocal] [log:function/14.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:36 ] :: [ PASS ] :: Case#15 [name:tst_is_addr_v4mapped] [log:function/15.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:36 ] :: [ PASS ] :: Case#16 [name:tst_is_addr_v4compat] [log:function/16.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:36 ] :: [ PASS ] :: Case#17 [name:tst_is_addr_mc_nodelocal] [log:function/17.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:36 ] :: [ PASS ] :: Case#18 [name:tst_is_addr_mc_linklocal] [log:function/18.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:36 ] :: [ PASS ] :: Case#19 [name:tst_is_addr_mc_sitelocal] [log:function/19.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:36 ] :: [ PASS ] :: Case#20 [name:tst_is_addr_mc_orglocal] [log:function/20.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:36 ] :: [ PASS ] :: Case#21 [name:tst_is_addr_mc_global] [log:function/21.html] (Assert: 'PASS' should equal 'PASS') ===> raw :: [ 16:32:36 ] :: [ LOG ] :: Execute raw Test Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. ========== TEST 1 ========== ./tst_checksum_enable --log=1.html --title="Set the IPV6_CHECKSUM socket option to have the kernel compute and store a checksum" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == Case1: Can not set odd value == == create an IPv6 raw socket == socket(domain:AF_INET6, type:SOCK_RAW, protocol:IPPROTO_NONE) return sockfd=4 == set the value of IPV6_CHECKSUM option to 3 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_CHECKSUM, optval:0x3ffeacf8bd8, optlen:4) return error EINVAL == Case2: Default checksum option == == bind socket to address == bind(sockfd:4, my_addr:0x3ffeacf8ca4, addrlen:28) return 0 == sendto message to interface lo == sendto(sockfd:4, buf:0x3ffeacf8c40, len:100, flags:0, to:0x3ffeacf8ca4, tolen:28) return 100 == recv message on IPv6 socket == recv(sockfd:4, buf:0x3ffeacf8bdc, len:100, flags:64) return 100 == Case3: checksum option is 2 and send to itself == == set the value of IPV6_CHECKSUM option to 2 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_CHECKSUM, optval:0x3ffeacf8bd8, optlen:4) return 0 == sendto message to interface lo == sendto(sockfd:4, buf:0x3ffeacf8c40, len:100, flags:0, to:0x3ffeacf8ca4, tolen:28) return 100 == recv message on IPv6 socket == recv(sockfd:4, buf:0x3ffeacf8bdc, len:100, flags:64) return 100 == Case4: checksum option is 2 and send to another sock == == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_RAW, protocol:IPPROTO_NONE) return sockfd=5 == bind socket to address == bind(sockfd:5, my_addr:0x3ffeacf8ca4, addrlen:28) return 0 == sendto message to interface lo == sendto(sockfd:4, buf:0x3ffeacf8c40, len:100, flags:0, to:0x3ffeacf8ca4, tolen:28) return 100 == recv message on IPv6 socket == recv(sockfd:5, buf:0x3ffeacf8bdc, len:100, flags:64) return 100 close(5) close(4) OK -> PASS ========== TEST 2 ========== ./tst_checksum_disable --log=2.html --title="Disabled the IPV6_CHECKSUM socket option to have the kernel not compute and store a checksum" tcpdump: data link type LINUX_SLL2 dropped privs to tcpdump tcpdump: listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes Got 0 Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_RAW, protocol:IPPROTO_ICMPV6) return sockfd=4 tst_get_unused_port() get port 42532 == bind socket to address == bind(sockfd:4, my_addr:0x3ffe3e78c04, addrlen:28) return 0 == setsockopt IPV6_CHECKSUM disable to IPv6 socket with IPPROTO_ICMPV6 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_CHECKSUM, optval:0x3ffe3e78b68, optlen:4) return error EINVAL close(4) == create an IPv6 socket with IPPROTO_UDP == socket(domain:AF_INET6, type:SOCK_RAW, protocol:IPPROTO_UDP) return sockfd=4 setsockopt(sockfd:4, level:IPPROTO_ICMP, optname:IPV6_RECVERR, optval:0x3ffe3e78bd0, optlen:40) return 0 tst_get_unused_port() get port 34316 == bind socket to address == bind(sockfd:4, my_addr:0x3ffe3e78c04, addrlen:28) return 0 tst_get_unused_port() get port 39121 == udp message sent == 86 0c 98 d1 00 08 00 11 == send message to itself == sendto(sockfd:4, buf:0x3ffe3e78bfc, len:8, flags:0, to:0x3ffe3e78c04, tolen:28) return 8 == recv message on socket == recv(sockfd:4, buf:0x3ffe3e78b6c, len:100, flags:64) return 8 == udp message received: == 86 0c 98 d1 00 08 00 11 close(4) OK -> PASS ========== TEST 3 ========== ./tst_checksum_no_raw --log=3.html --title="An attempt to set or get IPV6_CHECKSUM for a non-raw IPv6 socket will fail" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 == set the value of IPV6_CHECKSUM option == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_CHECKSUM, optval:0x3fff6b785e0, optlen:4) return error ENOPROTOOPT close(4) == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == set the value of IPV6_CHECKSUM option == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_CHECKSUM, optval:0x3fff6b785e0, optlen:4) return error ENOPROTOOPT close(4) == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_RAW, protocol:IPPROTO_ICMPV6) return sockfd=4 == set the value of IPV6_CHECKSUM option == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_CHECKSUM, optval:0x3fff6b785e0, optlen:4) return error EINVAL close(4) OK -> PASS ========== TEST 4 ========== ./tst_checksum_get --log=4.html --title="Return the IPV6_CHECKSUM socket option from kernel" Got 1 Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_RAW, protocol:IPPROTO_UDP) return sockfd=4 == get the value of IPV6_CHECKSUM option == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_CHECKSUM, optval:0x3ffef5f9120, optlen:0x3ffef5f911c) return length 4 == set the value of IPV6_CHECKSUM option == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_CHECKSUM, optval:0x3ffef5f9120, optlen:4) return 0 == get the value of IPV6_CHECKSUM option == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_CHECKSUM, optval:0x3ffef5f9120, optlen:0x3ffef5f911c) return length 4 close(4) == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 == get the value of IPV6_CHECKSUM option == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_CHECKSUM, optval:0x3ffef5f9120, optlen:0x3ffef5f911c) return error ENOPROTOOPT close(4) == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == get the value of IPV6_CHECKSUM option == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_CHECKSUM, optval:0x3ffef5f9120, optlen:0x3ffef5f911c) return error ENOPROTOOPT close(4) OK -> PASS ========== TEST 5 ========== ./tst_filter_setpassall --log=5.html --title="Used ICMP6_FILTER_SETPASSALL to specify all ICMPv6 messages are passed to the application" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == block all messages types == == check whether SETPASSALL is worked correctly == OK -> PASS ========== TEST 6 ========== ./tst_filter_setblockall --log=6.html --title="Used ICMP6_FILTER_SETBLOCKALL to specify all ICMPv6 messages are blocked" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == block all messages types == == check whether SETBLOCKALL is worked correctly == OK -> PASS ========== TEST 7 ========== ./tst_filter_setpass --log=7.html --title="Used ICMP6_FILTER_SETPASS to specify the messages of a given ICMPv6 type be passed to the application" 1 packet captured 4 packets received by filter 0 packets dropped by kernel Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == block all messages types == == let specify type 0 messages be passed to the application == == check whether SETPASS is worked correctly == == block all messages types == == let specify type 255 messages be passed to the application == == check whether SETPASS is worked correctly == == block all messages types == == let specify type 8 messages be passed to the application == == check whether SETPASS is worked correctly == OK -> PASS ========== TEST 8 ========== ./tst_filter_setblock --log=8.html --title="Used ICMP6_FILTER_SETBLOCK to specify the messages of a given ICMPv6 type be blocked" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == pass all messages types == == let specify type 0 messages be blocked to the application == == check whether SETBLOCK is worked correctly == == pass all messages types == == let specify type 255 messages be blocked to the application == == check whether SETBLOCK is worked correctly == == pass all messages types == == let specify type 8 messages be blocked to the application == == check whether SETBLOCK is worked correctly == OK -> PASS ========== TEST 9 ========== ./tst_filter_willpass --log=9.html --title="Used ICMP6_FILTER_WILLPASS to depending whether the specified message type is passed to the application" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == block all messages types == == let specify type 8 messages be blocked to the application == == check whether WILLPASS is worked correctly == OK -> PASS ========== TEST 10 ========== ./tst_filter_willblock --log=10.html --title="Used ICMP6_FILTER_WILLBLOCK to depending whether the specified message type is blocked" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == block all messages types == == let specify type 8 messages be passed to the application == == check whether WILLBLOCK is worked correctly == OK -> PASS :: [ 16:32:47 ] :: [ LOG ] :: ======Output raw Test Results====== :: [ 16:32:47 ] :: [ PASS ] :: Case#1 [name:tst_checksum_enable] [log:raw/1.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:47 ] :: [ PASS ] :: Case#2 [name:tst_checksum_disable] [log:raw/2.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:47 ] :: [ PASS ] :: Case#3 [name:tst_checksum_no_raw] [log:raw/3.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:47 ] :: [ PASS ] :: Case#4 [name:tst_checksum_get] [log:raw/4.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:47 ] :: [ PASS ] :: Case#5 [name:tst_filter_setpassall] [log:raw/5.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:47 ] :: [ PASS ] :: Case#6 [name:tst_filter_setblockall] [log:raw/6.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:47 ] :: [ PASS ] :: Case#7 [name:tst_filter_setpass] [log:raw/7.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:47 ] :: [ PASS ] :: Case#8 [name:tst_filter_setblock] [log:raw/8.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:47 ] :: [ PASS ] :: Case#9 [name:tst_filter_willpass] [log:raw/9.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:47 ] :: [ PASS ] :: Case#10 [name:tst_filter_willblock] [log:raw/10.html] (Assert: 'PASS' should equal 'PASS') ===> struct :: [ 16:32:47 ] :: [ LOG ] :: Execute struct Test Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. ========== TEST 1 ========== ./tst_are_addr_equal --log=1.html --title="Use IN6_ARE_ADDR_EQUAL to testing an IPv6 address for certain properties" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc returns non-zero if the addresses are equal == two address are in6addr_any == IN6_ARE_ADDR_EQUAL(0000:0000:0000:0000:0000:0000:0000:0000, 0000:0000:0000:0000:0000:0000:0000:0000) return 1 == two address are in6addr_loopback == IN6_ARE_ADDR_EQUAL(0000:0000:0000:0000:0000:0000:0000:0001, 0000:0000:0000:0000:0000:0000:0000:0001) return 1 == two address are the same link local address == IN6_ARE_ADDR_EQUAL(fe80:0000:0000:0000:020c:29ff:fec8:e3b7, fe80:0000:0000:0000:020c:29ff:fec8:e3b7) return 1 == two address are the same ipv4 mapped address == IN6_ARE_ADDR_EQUAL(0000:0000:0000:0000:0000:ffff:c0a8:0001, 0000:0000:0000:0000:0000:ffff:c0a8:0001) return 1 returns zero if the addresses are not equal == two address are in6addr_any and in6addr_loopback == IN6_ARE_ADDR_EQUAL(0000:0000:0000:0000:0000:0000:0000:0000, 0000:0000:0000:0000:0000:0000:0000:0001) return 0 == two address are link local address and global address == IN6_ARE_ADDR_EQUAL(fe80:0000:0000:0000:020c:29ff:fec8:e3c1, 3ffe:0501:ffff:0100:020c:29ff:fec8:e3c1) return 0 == two address are "::FFFF:192.168.0.1" and "::192.168.0.1" == IN6_ARE_ADDR_EQUAL(0000:0000:0000:0000:0000:ffff:c0a8:0001, 0000:0000:0000:0000:0000:0000:c0a8:0001) return 0 OK -> PASS ========== TEST 2 ========== ./tst_getprotobyname --log=2.html --title="Get the new IPv6 protocols as a protoent structure from the protocol name" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == check the define of hop-by-hop options for ipv6 == getprotobyname(name:"hopopt") return proto { p_name = hopopt; p_aliases = HOPOPT; p_proto = 0; } == check the define of ipv6 protocol == getprotobyname(name:"ipv6") return proto { p_name = ipv6; p_aliases = IPv6; p_proto = 41; } == check the define of routing header for ipv6 == getprotobyname(name:"ipv6-route") return proto { p_name = ipv6-route; p_aliases = IPv6-Route; p_proto = 43; } == check the define of fragment header for ipv6 == getprotobyname(name:"ipv6-frag") return proto { p_name = ipv6-frag; p_aliases = IPv6-Frag; p_proto = 44; } == check the define of encapsulating security payload for ipv6 == getprotobyname(name:"esp") return proto { p_name = esp; p_aliases = ESP; p_proto = 50; } == check the define of authentication header for ipv6 == getprotobyname(name:"ah") return proto { p_name = ah; p_aliases = AH; p_proto = 51; } == check the define of icmp for ipv6 == getprotobyname(name:"ipv6-icmp") return proto { p_name = ipv6-icmp; p_aliases = IPv6-ICMP; p_proto = 58; } == check the define of no next header for ipv6 == getprotobyname(name:"ipv6-nonxt") return proto { p_name = ipv6-nonxt; p_aliases = IPv6-NoNxt; p_proto = 59; } == check the define of destination options for ipv6 == getprotobyname(name:"ipv6-opts") return proto { p_name = ipv6-opts; p_aliases = IPv6-Opts; p_proto = 60; } OK -> PASS ========== TEST 3 ========== ./tst_getprotobynumber --log=3.html --title="Get the new IPv6 protocols as a protoent structure from the protocol number" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == check the define of ipv6 protocol == getprotobynumber(proto:41) return proto { p_name = ipv6; p_aliases = IPv6; p_proto = 41; } == check the define of routing header for ipv6 == getprotobynumber(proto:43) return proto { p_name = ipv6-route; p_aliases = IPv6-Route; p_proto = 43; } == check the define of fragment header for ipv6 == getprotobynumber(proto:44) return proto { p_name = ipv6-frag; p_aliases = IPv6-Frag; p_proto = 44; } == check the define of encapsulating security payload for ipv6 == getprotobynumber(proto:50) return proto { p_name = esp; p_aliases = ESP; p_proto = 50; } == check the define of authentication header for ipv6 == getprotobynumber(proto:51) return proto { p_name = ah; p_aliases = AH; p_proto = 51; } == check the define of icmp for ipv6 == getprotobynumber(proto:58) return proto { p_name = ipv6-icmp; p_aliases = IPv6-ICMP; p_proto = 58; } == check the define of no next header for ipv6 == getprotobynumber(proto:59) return proto { p_name = ipv6-nonxt; p_aliases = IPv6-NoNxt; p_proto = 59; } == check the define of destination options for ipv6 == getprotobynumber(proto:60) return proto { p_name = ipv6-opts; p_aliases = IPv6-Opts; p_proto = 60; } OK -> PASS :: [ 16:32:50 ] :: [ LOG ] :: ======Output struct Test Results====== :: [ 16:32:50 ] :: [ PASS ] :: Case#1 [name:tst_are_addr_equal] [log:struct/1.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:50 ] :: [ PASS ] :: Case#2 [name:tst_getprotobyname] [log:struct/2.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:50 ] :: [ PASS ] :: Case#3 [name:tst_getprotobynumber] [log:struct/3.html] (Assert: 'PASS' should equal 'PASS') ===> pktinfo :: [ 16:32:50 ] :: [ LOG ] :: Execute pktinfo Test Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. ========== TEST 1 ========== ./tst_recv_ifindex_tcp --log=1.html --title="Receiving interface index (TCP socket)" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create tcp socket for tcp server == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 == create tcp socket for tcp client == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=5 == enable tcp client to receive interface index == setsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_RECVPKTINFO, optval:0x3ffcc4f8930, optlen:4) return 0 == bind tcp server socket to address == tst_get_unused_port() get port 33611 bind(sockfd:4, my_addr:0x3ffcc4f89d4, addrlen:28) return 0 == listen on tcp server socket == listen(sockfd:4, backlog:100) return 0 == connect to tcp server == connect(sockfd:5, serv_addr:0x3ffcc4f89d4, addrlen:28) return 0 == accept a connection on tcp socket == accept(sockfd:4, addr:0x3ffcc4f89d4, addrlen:0x3ffcc4f892c) return 6 == send message from tcp server to tcp client == send(sockfd:6, buf:0x3ffcc4f8937, len:17, flags:0) return 17 == recv message from tcp server on tcp client == recv(sockfd:5, buf:0x3ffcc4f8948, len:100, flags:0) return 17 == get IPV6_2292PKTOPTIONS of tcp client == getsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_2292PKTOPTIONS, optval:0x3ffcc4f89ac, optlen:0x3ffcc4f8928) return length 40 the received interface index = 1, length = 36 close(5) close(6) == create tcp socket for tcp client == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=5 == bind tcp client to interface == setsockopt(sockfd:5, level:IPPROTO_ICMP, optname:IPV6_RECVERR, optval:0x1008150, optlen:8) return 0 == enable tcp client to receive interface index == setsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_RECVPKTINFO, optval:0x3ffcc4f8930, optlen:4) return 0 == get IPV6_2292PKTOPTIONS of tcp client == getsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_2292PKTOPTIONS, optval:0x3ffcc4f89ac, optlen:0x3ffcc4f8928) return length 40 the received interface index = 0, length = 36 close(5) close(4) OK -> PASS ========== TEST 2 ========== ./tst_recv_ifindex_udp --log=2.html --title="Receiving interface index when the IPV6_RECVPKTINFO socket option is enabled" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6/UDP socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 tst_get_unused_port() get port 56352 == set IPV6_RECVPKTINFO to 1 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_RECVPKTINFO, optval:0x3ffe73783f4, optlen:4) return 0 == bind socket to address == bind(sockfd:4, my_addr:0x3ffe73784d4, addrlen:28) return 0 == send message to itself == sendto(sockfd:4, buf:0x1007e00, len:17, flags:0, to:0x3ffe73784d4, tolen:28) return 17 == recv message == recvmsg(sockfd:4, msg:0x3ffe7378488, flags:0) return 17 if_nametoindex(ifname:"lo") return 1 the received interface index = 1, length = 36 close(4) OK -> PASS ========== TEST 3 ========== ./tst_send_ifindex_udp --log=3.html --title="Specifying the outgoing interface as ancillary data" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6/UDP socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 tst_get_unused_port() get port 58581 == bind socket to address == bind(sockfd:4, my_addr:0x3ffec0f9384, addrlen:28) return 0 == send message on non-exist interface == sendmsg(sockfd:4, msg:0x3ffec0f9338, flags:0) return -1 if_nametoindex(ifname:"lo") return 1 == send message on interface lo == sendmsg(sockfd:4, msg:0x3ffec0f9338, flags:0) return 100 == recv message == recv(sockfd:4, buf:0x3ffec0f92ac, len:100, flags:64) return 100 == send message with outgoing interface set to 0 == sendmsg(sockfd:4, msg:0x3ffec0f9338, flags:0) return 100 == recv msg from server == recv(sockfd:4, buf:0x3ffec0f92ac, len:100, flags:64) return 100 close(4) OK -> PASS ========== TEST 4 ========== ./tst_recv_dst_addr_tcp --log=4.html --title="Receiving Destination Address (TCP socket)" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create tcp socket for tcp server == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 == create tcp socket for tcp client == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=5 == enable tcp client to receive destination address == setsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_RECVPKTINFO, optval:0x3ffc59f8568, optlen:4) return 0 == bind tcp server socket to address == tst_get_unused_port() get port 47785 bind(sockfd:4, my_addr:0x3ffc59f860c, addrlen:28) return 0 == listen on tcp server socket == listen(sockfd:4, backlog:100) return 0 == connect to tcp server == connect(sockfd:5, serv_addr:0x3ffc59f860c, addrlen:28) return 0 == accept a connection on tcp socket == accept(sockfd:4, addr:0x3ffc59f860c, addrlen:0x3ffc59f8564) return 6 == send message from tcp server to tcp client == send(sockfd:6, buf:0x3ffc59f856f, len:17, flags:0) return 17 == recv message from tcp server on tcp client == recv(sockfd:5, buf:0x3ffc59f8580, len:100, flags:0) return 17 == get IPV6_2292PKTOPTIONS of tcp client == getsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_2292PKTOPTIONS, optval:0x3ffc59f85e4, optlen:0x3ffc59f8560) return length 40 the received destination address = 0000:0000:0000:0000:0000:0000:0000:0001, length = 36 close(5) close(6) == create tcp socket for tcp client == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=5 == enable tcp client to receive destination address == setsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_RECVPKTINFO, optval:0x3ffc59f8568, optlen:4) return 0 == get IPV6_2292PKTOPTIONS of tcp client == getsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_2292PKTOPTIONS, optval:0x3ffc59f85e4, optlen:0x3ffc59f8560) return length 40 the received destination address = 0000:0000:0000:0000:0000:0000:0000:0000, length = 36 close(5) close(4) OK -> PASS ========== TEST 5 ========== ./tst_recv_dst_addr_udp --log=5.html --title="Receiving Destination Address when the IPV6_RECVPKTINFO socket option is enabled" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6/UDP socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 tst_get_unused_port() get port 55020 == set IPV6_RECVPKTINFO to 1 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_RECVPKTINFO, optval:0x3ffecaf92e8, optlen:4) return 0 == bind socket to address == bind(sockfd:4, my_addr:0x3ffecaf93c4, addrlen:28) return 0 == sendto message to itself == sendto(sockfd:4, buf:0x1008070, len:17, flags:0, to:0x3ffecaf93c4, tolen:28) return 17 == recv msg from server == recvmsg(sockfd:4, msg:0x3ffecaf9378, flags:0) return 17 the received destination address = 0000:0000:0000:0000:0000:0000:0000:0001, length = 36 close(4) OK -> PASS ========== TEST 6 ========== ./tst_send_src_addr_udp --log=6.html --title="Specifying the source IPv6 address as ancillary data" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6/UDP socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 tst_get_unused_port() get port 46248 == bind socket to address == bind(sockfd:4, my_addr:0x3ffd5d78b84, addrlen:28) return 0 inet_pton(af:AF_INET6, src:"fe80::1", dst:0x3ffd5d78b20) return 1, dst=fe80:0000:0000:0000:0000:0000:0000:0001 == send message from specified source address == sendmsg(sockfd:4, msg:0x3ffd5d78b38, flags:0) return -1 == send message from loopbak address == sendmsg(sockfd:4, msg:0x3ffd5d78b38, flags:0) return 100 == recv message == recv(sockfd:4, buf:0x3ffd5d78aac, len:100, flags:64) return 100 == send message from unspecified address == sendmsg(sockfd:4, msg:0x3ffd5d78b38, flags:0) return 100 == recv message == recv(sockfd:4, buf:0x3ffd5d78aac, len:100, flags:64) return 100 inet_pton(af:AF_INET6, src:"fe80::1ce9:d6ff:fe58:abc", dst:0x3ffd5d78b20) return 1, dst=fe80:0000:0000:0000:1ce9:d6ff:fe58:0abc == send message from link-local address == sendmsg(sockfd:4, msg:0x3ffd5d78b38, flags:0) return -1 if_nametoindex(ifname:"dummy_ipv6") return 125 == send message from link-local addresses bound to interface == sendmsg(sockfd:4, msg:0x3ffd5d78b38, flags:0) return -1 == bind socket to interface == setsockopt(sockfd:4, level:IPPROTO_ICMP, optname:IPV6_RECVERR, optval:0x1013490, optlen:11) return 0 == send message from link-local addresses bound to interface == sendmsg(sockfd:4, msg:0x3ffd5d78b38, flags:0) return -1 close(4) OK -> PASS ========== TEST 7 ========== ./tst_recv_hop_limit_tcp --log=7.html --title="Receiving the Hop Limit (TCP socket)" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create tcp socket for tcp server == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 == create tcp socket for tcp client == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=5 == set hoplimit of tcp server to 255 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffd5978bcc, optlen:4) return 0 == enable tcp client to receive hop limit == setsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_RECVHOPLIMIT, optval:0x3ffd5978bd0, optlen:4) return 0 == bind tcp server socket to address == tst_get_unused_port() get port 51643 bind(sockfd:4, my_addr:0x3ffd5978c64, addrlen:28) return 0 == listen on tcp server socket == listen(sockfd:4, backlog:100) return 0 == connect to tcp server == connect(sockfd:5, serv_addr:0x3ffd5978c64, addrlen:28) return 0 == accept a connection on tcp socket == accept(sockfd:4, addr:0x3ffd5978c64, addrlen:0x3ffd5978bc8) return 6 == send message from tcp server to tcp client == send(sockfd:6, buf:0x3ffd5978bd7, len:17, flags:0) return 17 == recv message from tcp server on tcp client == recv(sockfd:5, buf:0x3ffd5978be8, len:100, flags:0) return 17 == get IPV6_2292PKTOPTIONS of tcp client == getsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_2292PKTOPTIONS, optval:0x3ffd5978c4c, optlen:0x3ffd5978bc4) return length 24 the received hop limit = 255, length = 20 close(5) close(6) close(4) OK -> PASS ========== TEST 8 ========== ./tst_recv_hop_limit_udp --log=8.html --title="Receiving the Hop Limit when the IPV6_RECVHOPLIMIT socket option is enabled" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6/UDP socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 tst_get_unused_port() get port 36060 == set hoplimit of socket to 64 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffd4af8954, optlen:4) return 0 == set IPV6_RECVHOPLIMIT to 1 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_RECVHOPLIMIT, optval:0x3ffd4af8958, optlen:4) return 0 == bind socket to address == bind(sockfd:4, my_addr:0x3ffd4af8a20, addrlen:28) return 0 == send message to itself == sendto(sockfd:4, buf:0x1007e30, len:17, flags:0, to:0x3ffd4af8a20, tolen:28) return 17 == recv one message == recvmsg(sockfd:4, msg:0x3ffd4af89d8, flags:0) return 17 the received hop limit = 64, length = 20 close(4) OK -> PASS ========== TEST 9 ========== ./tst_send_hop_limit_udp --log=9.html --title="Specifying the outgoing Hop Limit as ancillary data" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6/UDP socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 tst_get_unused_port() get port 51959 == bind socket to address == bind(sockfd:4, my_addr:0x3ffe2178dc4, addrlen:28) return 0 == send message with hot limit set to -1 == sendmsg(sockfd:4, msg:0x3ffe2178d88, flags:0) return 100 == recv message == recv(sockfd:4, buf:0x3ffe2178cfc, len:100, flags:64) return 100 == send message with hot limit set to 0 == sendmsg(sockfd:4, msg:0x3ffe2178d88, flags:0) return 100 == recv message == recv(sockfd:4, buf:0x3ffe2178cfc, len:100, flags:64) return 100 == send message with hot limit set to 64 == sendmsg(sockfd:4, msg:0x3ffe2178d88, flags:0) return 100 == recv message == recv(sockfd:4, buf:0x3ffe2178cfc, len:100, flags:64) return 100 == send message with hot limit set to 255 == sendmsg(sockfd:4, msg:0x3ffe2178d88, flags:0) return 100 == recv message == recv(sockfd:4, buf:0x3ffe2178cfc, len:100, flags:64) return 100 == send message with hot limit set to 256 == sendmsg(sockfd:4, msg:0x3ffe2178d88, flags:0) return -1 == send message with hot limit set to -2 == sendmsg(sockfd:4, msg:0x3ffe2178d88, flags:0) return -1 OK -> PASS ========== TEST 10 ========== ./tst_recv_tclass_udp --log=10.html --title="Receiving the Traffic Class when the IPV6_RECVTCLASS socket option is enabled" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6/UDP socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 tst_get_unused_port() get port 42744 == set IPV6_TCLASS to 255 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_TCLASS, optval:0x3ffe4378748, optlen:4) return 0 == set IPV6_RECVTCLASS to 1 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_RECVTCLASS, optval:0x3ffe4378748, optlen:4) return 0 == bind socket to address == bind(sockfd:4, my_addr:0x3ffe4378814, addrlen:28) return 0 == send message to itself == sendto(sockfd:4, buf:0x1007e40, len:17, flags:0, to:0x3ffe4378814, tolen:28) return 17 == recv message == recvmsg(sockfd:4, msg:0x3ffe43787c8, flags:0) return 17 the received traffic class = 255, length = 20 close(4) OK -> PASS ========== TEST 11 ========== ./tst_send_tclass_udp --log=11.html --title="Specifying the traffic class as ancillary data" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6/UDP socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 tst_get_unused_port() get port 47168 == bind socket to address == bind(sockfd:4, my_addr:0x3ffd9978d64, addrlen:28) return 0 == send message with traffic class set to -1 == sendmsg(sockfd:4, msg:0x3ffd9978d28, flags:0) return 100 == recv message == recv(sockfd:4, buf:0x3ffd9978c9c, len:100, flags:64) return 100 == send message with traffic class set to 0 == sendmsg(sockfd:4, msg:0x3ffd9978d28, flags:0) return 100 == recv message == recv(sockfd:4, buf:0x3ffd9978c9c, len:100, flags:64) return 100 == send message with traffic class set to 64 == sendmsg(sockfd:4, msg:0x3ffd9978d28, flags:0) return 100 == recv message == recv(sockfd:4, buf:0x3ffd9978c9c, len:100, flags:64) return 100 == send message with traffic class set to 255 == sendmsg(sockfd:4, msg:0x3ffd9978d28, flags:0) return 100 == recv message == recv(sockfd:4, buf:0x3ffd9978c9c, len:100, flags:64) return 100 == send message with traffic class set to 256 == sendmsg(sockfd:4, msg:0x3ffd9978d28, flags:0) return -1 == send message with traffic class set to -2 == sendmsg(sockfd:4, msg:0x3ffd9978d28, flags:0) return -1 OK -> PASS ========== TEST 12 ========== ./tst_recv_packet_infos_overlap --log=12.html --title="Receiving Packet Informations when memory is not enough" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create tcp socket for tcp server == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 == create tcp socket for tcp client == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=5 == set hoplimit of tcp server to 255 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_UNICAST_HOPS, optval:0x3ffc7478610, optlen:4) return 0 == enable tcp client to receive hop limit == setsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_RECVHOPLIMIT, optval:0x3ffc7478614, optlen:4) return 0 == enable tcp client to receive packet information == setsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_RECVPKTINFO, optval:0x3ffc7478614, optlen:4) return 0 == enable tcp client to receive hop limit information == setsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_2292HOPLIMIT, optval:0x3ffc7478614, optlen:4) return 0 == enable tcp client to receive packet information == setsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_2292PKTINFO, optval:0x3ffc7478614, optlen:4) return 0 == bind tcp server socket to address == tst_get_unused_port() get port 35589 bind(sockfd:4, my_addr:0x3ffc74786a8, addrlen:28) return 0 == listen on tcp server socket == listen(sockfd:4, backlog:100) return 0 == connect to tcp server == connect(sockfd:5, serv_addr:0x3ffc74786a8, addrlen:28) return 0 == accept a connection on tcp socket == accept(sockfd:4, addr:0x3ffc74786a8, addrlen:0x3ffc747860c) return 6 == send message from tcp server to tcp client == send(sockfd:6, buf:0x3ffc747861b, len:17, flags:0) return 17 == recv message from tcp server on tcp client == recv(sockfd:5, buf:0x3ffc747862c, len:100, flags:0) return 17 == get IPV6_2292PKTOPTIONS of tcp client == getsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_2292PKTOPTIONS, optval:0x3ffc7478690, optlen:0x3ffc7478608) return length 24 GET cmsg_level=IPPROTO_IPV6, cmsg_type=IPV6_PKTINFO == close all socket == close(5) close(6) close(4) OK -> PASS :: [ 16:33:16 ] :: [ LOG ] :: ======Output pktinfo Test Results====== :: [ 16:33:16 ] :: [ PASS ] :: Case#1 [name:tst_recv_ifindex_tcp] [log:pktinfo/1.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:16 ] :: [ PASS ] :: Case#2 [name:tst_recv_ifindex_udp] [log:pktinfo/2.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:16 ] :: [ PASS ] :: Case#3 [name:tst_send_ifindex_udp] [log:pktinfo/3.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:16 ] :: [ PASS ] :: Case#4 [name:tst_recv_dst_addr_tcp] [log:pktinfo/4.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:16 ] :: [ PASS ] :: Case#5 [name:tst_recv_dst_addr_udp] [log:pktinfo/5.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:16 ] :: [ PASS ] :: Case#6 [name:tst_send_src_addr_udp] [log:pktinfo/6.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:16 ] :: [ PASS ] :: Case#7 [name:tst_recv_hop_limit_tcp] [log:pktinfo/7.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:16 ] :: [ PASS ] :: Case#8 [name:tst_recv_hop_limit_udp] [log:pktinfo/8.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:16 ] :: [ PASS ] :: Case#9 [name:tst_send_hop_limit_udp] [log:pktinfo/9.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:16 ] :: [ PASS ] :: Case#10 [name:tst_recv_tclass_udp] [log:pktinfo/10.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:16 ] :: [ PASS ] :: Case#11 [name:tst_send_tclass_udp] [log:pktinfo/11.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:16 ] :: [ PASS ] :: Case#12 [name:tst_recv_packet_infos_overlap] [log:pktinfo/12.html] (Assert: 'PASS' should equal 'PASS') ===> rthdr :: [ 16:33:16 ] :: [ LOG ] :: Execute rthdr Test Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. ========== TEST 1 ========== ./tst_inet6_rth_space --log=1.html --title="Returns the number of bytes required to hold a Routing header of the specified type" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc inet6_rth_space(type:0, segments:0) return 8 inet6_rth_space(type:0, segments:1) return 24 inet6_rth_space(type:0, segments:2) return 40 inet6_rth_space(type:0, segments:127) return 2040 OK -> PASS ========== TEST 2 ========== ./tst_inet6_rth_space_err --log=2.html --title="Routing header is not supported or the number of segments is invalid" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == the number of segments is invalid == inet6_rth_space(type:0, segments:128) return 0 == the type of the Routing header is not supported == inet6_rth_space(type:1, segments:0) return 0 OK -> PASS ========== TEST 3 ========== ./tst_inet6_rth_init --log=3.html --title="Initializes the buffer pointed to by bp to contain a Routing header of the specified type" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc inet6_rth_init(bp:0x3ffe7ff8508, bp_len:24, type:0, segments:0) return 0x3ffe7ff8508 == routing header is: == 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 inet6_rth_init(bp:0x3ffe7ff8508, bp_len:24, type:0, segments:1) return 0x3ffe7ff8508 == routing header is: == 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 OK -> PASS ========== TEST 4 ========== ./tst_inet6_rth_init_err --log=4.html --title="Upon an error the return value is NULL" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == the buffer is not large enough == inet6_rth_init(bp:0x3ffcfbf8570, bp_len:24, type:0, segments:2) return (nil) == the type of the Routing header is not supported == inet6_rth_init(bp:0x3ffcfbf8570, bp_len:24, type:1, segments:0) return (nil) OK -> PASS ========== TEST 5 ========== ./tst_inet6_rth_add --log=5.html --title="Add the IPv6 address pointed to by addr to the end of the Routing header being constructed" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc inet6_rth_init(bp:0x3fffdf78c50, bp_len:24, type:0, segments:1) return 0x3fffdf78c50 == routing header is: == 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 inet6_rth_add(bp:0x3fffdf78c50, addr:0x3fffdf78c40) return 0 == routing header is: == 00 02 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 OK -> PASS ========== TEST 6 ========== ./tst_inet6_rth_add_err --log=6.html --title="Upon an error the return value of the function is -1" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc inet6_rth_init(bp:0x3ffd6ef87ac, bp_len:24, type:0, segments:0) return 0x3ffd6ef87ac == routing header is: == 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 inet6_rth_add(bp:0x3ffd6ef87ac, addr:0x3ffd6ef879c) return -1 == routing header is: == 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 OK -> PASS ========== TEST 7 ========== ./tst_inet6_rth_reverse --log=7.html --title="Take a Routing header extension header and writes a new Routing header" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc inet6_rth_init(bp:0x3ffd98f8c90, bp_len:40, type:0, segments:2) return 0x3ffd98f8c90 == routing header is: == 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 inet6_rth_add(bp:0x3ffd98f8c90, addr:0x3ffd98f8c80) return 0 == routing header is: == 00 04 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 inet6_rth_add(bp:0x3ffd98f8c90, addr:0x3ffd98f8c80) return 0 == routing header is: == 00 04 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 inet6_rth_reverse(in:0x3ffd98f8c90, out:0x3ffd98f8c90) return 0 == routing header is: == 00 04 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 OK -> PASS ========== TEST 8 ========== ./tst_inet6_rth_reverse_err --log=8.html --title="Upon an error the return value of the function is -1" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc inet6_rth_reverse(in:0x3fffb8789b0, out:0x3fffb8789b0) return -1 OK -> PASS ========== TEST 9 ========== ./tst_inet6_rth_getaddr --log=9.html --title="Return a pointer to the IPv6 address specified by index in the Routing header" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc inet6_rth_init(bp:0x3ffd8a78750, bp_len:24, type:0, segments:1) return 0x3ffd8a78750 == routing header is: == 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 inet6_rth_add(bp:0x3ffd8a78750, addr:0x3ffd8a78740) return 0 == routing header is: == 00 02 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 inet6_rth_getaddr(bp:0x3ffd8a78750, index:0) return 0x3ffd8a78758 OK -> PASS ========== TEST 10 ========== ./tst_inet6_rth_getaddr_err --log=10.html --title="Upon an error the return value of the function is NULL" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == initializes the buffer with segments set to zero == inet6_rth_init(bp:0x3fff1678fe8, bp_len:24, type:0, segments:0) return 0x3fff1678fe8 == routing header is: == 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 == get an IPv6 address from the Routing header == inet6_rth_getaddr(bp:0x3fff1678fe8, index:0) return (nil) OK -> PASS :: [ 16:33:18 ] :: [ LOG ] :: ======Output rthdr Test Results====== :: [ 16:33:18 ] :: [ PASS ] :: Case#1 [name:tst_inet6_rth_space] [log:rthdr/1.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:18 ] :: [ PASS ] :: Case#2 [name:tst_inet6_rth_space_err] [log:rthdr/2.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:18 ] :: [ PASS ] :: Case#3 [name:tst_inet6_rth_init] [log:rthdr/3.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:18 ] :: [ PASS ] :: Case#4 [name:tst_inet6_rth_init_err] [log:rthdr/4.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:18 ] :: [ PASS ] :: Case#5 [name:tst_inet6_rth_add] [log:rthdr/5.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:18 ] :: [ PASS ] :: Case#6 [name:tst_inet6_rth_add_err] [log:rthdr/6.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:18 ] :: [ PASS ] :: Case#7 [name:tst_inet6_rth_reverse] [log:rthdr/7.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:18 ] :: [ PASS ] :: Case#8 [name:tst_inet6_rth_reverse_err] [log:rthdr/8.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:18 ] :: [ PASS ] :: Case#9 [name:tst_inet6_rth_getaddr] [log:rthdr/9.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:18 ] :: [ PASS ] :: Case#10 [name:tst_inet6_rth_getaddr_err] [log:rthdr/10.html] (Assert: 'PASS' should equal 'PASS') ===> hhopt :: [ 16:33:18 ] :: [ LOG ] :: Execute hhopt Test Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. ========== TEST 1 ========== ./tst_recv_hhopt --log=1.html --title="Receive Hop-by-Hop Options when the IPV6_RECVHOPOPTS socket option is enabled" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6/UDP socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == enable socket to receive hop-by-hop options == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_RECVHOPOPTS, optval:0x3ffc75f90a8, optlen:4) return 0 == set Destination options header of socket == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_HOPOPTS, optval:0x3ffc75f9128, optlen:8) return 0 tst_get_unused_port() get port 40828 == bind socket to address == bind(sockfd:4, my_addr:0x3ffc75f917c, addrlen:28) return 0 == send message to itself == sendto(sockfd:4, buf:0x1007de0, len:17, flags:0, to:0x3ffc75f917c, tolen:28) return 17 == receive message == recvmsg(sockfd:4, msg:0x3ffc75f9130, flags:64) return 17 == check the received hop-by-hop option == the received hop-by-hop option length: 24 close(4) OK -> PASS ========== TEST 2 ========== ./tst_recv_no_hhopt --log=2.html --title="Can not receive Hop-by-Hop Options when the IPV6_RECVHOPOPTS socket option is disabled" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6/UDP socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == disable socket to receive hop-by-hop options == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_RECVHOPOPTS, optval:0x3ffd9778b58, optlen:4) return 0 == set Destination options header of socket == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_HOPOPTS, optval:0x3ffd9778bd8, optlen:8) return 0 tst_get_unused_port() get port 54506 == bind socket to address == bind(sockfd:4, my_addr:0x3ffd9778c2c, addrlen:28) return 0 == send message to itself == sendto(sockfd:4, buf:0x1007dc0, len:17, flags:0, to:0x3ffd9778c2c, tolen:28) return 17 == receive message == recvmsg(sockfd:4, msg:0x3ffd9778be0, flags:64) return 17 == check the received hop-by-hop option == close(4) OK -> PASS ========== TEST 3 ========== ./tst_send_hhopt_data --log=3.html --title="Send Hop-by-Hop options header by specifies it as ancillary data in a call to sendmsg()" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6/UDP socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == enable socket to receive hop by hop options == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_RECVHOPOPTS, optval:0x3fffd378410, optlen:4) return 0 tst_get_unused_port() get port 37999 == bind socket to address == bind(sockfd:4, my_addr:0x3fffd3784e4, addrlen:28) return 0 == send message == sendmsg(sockfd:4, msg:0x3fffd378498, flags:0) return 100 == receive message == recvmsg(sockfd:4, msg:0x3fffd378498, flags:64) return 100 == check the received hop by hop option == the received hop by hop option length: 24 close(4) OK -> PASS ========== TEST 4 ========== ./tst_send_hhopt_setopt --log=4.html --title="Send Hop-by-Hop options header by specifies it using setsockopt()" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6/UDP socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == enable socket to receive hop-by-hop options == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_RECVHOPOPTS, optval:0x3fff1578c00, optlen:4) return 0 == set hop-by-hop options header of socket == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_HOPOPTS, optval:0x3fff1578c80, optlen:8) return 0 tst_get_unused_port() get port 36809 == bind socket to address == bind(sockfd:4, my_addr:0x3fff1578cd4, addrlen:28) return 0 == send message to itself == sendto(sockfd:4, buf:0x1007ee0, len:17, flags:0, to:0x3fff1578cd4, tolen:28) return 17 == receive message == recvmsg(sockfd:4, msg:0x3fff1578c88, flags:64) return 17 == check the received hop-by-hop option == the received hop-by-hop option length: 24 close(4) OK -> PASS ========== TEST 5 ========== ./tst_hop_by_hop_get --log=5.html --title="Get Hop-by-Hop Options header which the application specifies" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 == get Hop-by-Hop options header == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_HOPOPTS, optval:0x3fffdb792f8, optlen:0x3fffdb792ec) return length 0 == check length of Hop-by-Hop options header == == set Hop-by-Hop options header == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_HOPOPTS, optval:0x3fffdb792f8, optlen:8) return 0 == get Hop-by-Hop options header == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_HOPOPTS, optval:0x3fffdb792f0, optlen:0x3fffdb792ec) return length 8 == check length of Hop-by-Hop options header == == get Hop-by-Hop options header with NULL data pointer == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_HOPOPTS, optval:(nil), optlen:0x3fffdb792ec) return error EFAULT == get Hop-by-Hop options header with NULL length pointer == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_HOPOPTS, optval:0x3fffdb792f0, optlen:(nil)) return error EFAULT == get Hop-by-Hop options header with short length == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_HOPOPTS, optval:0x3fffdb792f0, optlen:0x3fffdb792ec) return length 4 == check length of Hop-by-Hop options header == OK -> PASS ========== TEST 6 ========== ./tst_hop_by_hop_set --log=6.html --title="Set the Hop-by-Hop Options using setsockopt()" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 == set Hop-by-Hop options header with NULL data pointer == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_HOPOPTS, optval:(nil), optlen:8) return error EINVAL == set Hop-by-Hop options header with larger length == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_HOPOPTS, optval:0x3ffe8df8e68, optlen:65535) return error EINVAL == set Hop-by-Hop options header with bad option == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_HOPOPTS, optval:0x3ffe8df8e68, optlen:8) return error EINVAL == set Hop-by-Hop options header with valid option == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_HOPOPTS, optval:0x3ffe8df8e68, optlen:8) return 0 close(4) OK -> PASS ========== TEST 7 ========== ./tst_remove_hhopt --log=7.html --title="Remove any sticky Hop-by-Hop options header" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 == remove any sticky Hop-by-Hop options header == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_HOPOPTS, optval:0x3ffd74f8f68, optlen:0) return 0 == set Hop-by-Hop options header == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_HOPOPTS, optval:0x3ffd74f8f68, optlen:8) return 0 == get Hop-by-Hop options header == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_HOPOPTS, optval:0x3ffd74f8f68, optlen:0x3ffd74f8f64) return length 8 == check length of Hop-by-Hop options header == == remove any sticky Hop-by-Hop options header == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_HOPOPTS, optval:0x3ffd74f8f68, optlen:0) return 0 == get Hop-by-Hop options header == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_HOPOPTS, optval:0x3ffd74f8f68, optlen:0x3ffd74f8f64) return length 0 == check the Hop-by-Hop options header has been removed == OK -> PASS :: [ 16:33:28 ] :: [ LOG ] :: ======Output hhopt Test Results====== :: [ 16:33:28 ] :: [ PASS ] :: Case#1 [name:tst_recv_hhopt] [log:hhopt/1.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:28 ] :: [ PASS ] :: Case#2 [name:tst_recv_no_hhopt] [log:hhopt/2.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:28 ] :: [ PASS ] :: Case#3 [name:tst_send_hhopt_data] [log:hhopt/3.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:28 ] :: [ PASS ] :: Case#4 [name:tst_send_hhopt_setopt] [log:hhopt/4.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:28 ] :: [ PASS ] :: Case#5 [name:tst_hop_by_hop_get] [log:hhopt/5.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:28 ] :: [ PASS ] :: Case#6 [name:tst_hop_by_hop_set] [log:hhopt/6.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:28 ] :: [ PASS ] :: Case#7 [name:tst_remove_hhopt] [log:hhopt/7.html] (Assert: 'PASS' should equal 'PASS') ===> dstopt :: [ 16:33:28 ] :: [ LOG ] :: Execute dstopt Test Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. ========== TEST 1 ========== ./tst_recv_dstopt --log=1.html --title="Receive Destination Options when the IPV6_RECVDSTOPTS socket option is enabled" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6/UDP socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == enable socket to receive destination options == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_RECVDSTOPTS, optval:0x3fffb478db8, optlen:4) return 0 == set Destination options header of socket == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_DSTOPTS, optval:0x3fffb478e38, optlen:8) return 0 tst_get_unused_port() get port 34842 == bind socket to address == bind(sockfd:4, my_addr:0x3fffb478e8c, addrlen:28) return 0 == send message to itself == sendto(sockfd:4, buf:0x1007de0, len:17, flags:0, to:0x3fffb478e8c, tolen:28) return 17 == receive message == recvmsg(sockfd:4, msg:0x3fffb478e40, flags:64) return 17 == check the received destination option == the received destination option length: 24 close(4) OK -> PASS ========== TEST 2 ========== ./tst_recv_no_dstopt --log=2.html --title="Can not receive Destination Options when the IPV6_RECVDSTOPTS socket option is disabled" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6/UDP socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == disable socket to receive destination options == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_RECVDSTOPTS, optval:0x3ffe74f8458, optlen:4) return 0 == set Destination options header of socket == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_DSTOPTS, optval:0x3ffe74f84d8, optlen:8) return 0 tst_get_unused_port() get port 43005 == bind socket to address == bind(sockfd:4, my_addr:0x3ffe74f852c, addrlen:28) return 0 == send message to itself == sendto(sockfd:4, buf:0x1007dc0, len:17, flags:0, to:0x3ffe74f852c, tolen:28) return 17 == receive message == recvmsg(sockfd:4, msg:0x3ffe74f84e0, flags:64) return 17 == check the received destination option == close(4) OK -> PASS ========== TEST 3 ========== ./tst_send_dstopt_data --log=3.html --title="Send Destination options header by specifies it as ancillary data in a call to sendmsg()" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6/UDP socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == enable socket to receive destination options == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_RECVDSTOPTS, optval:0x3fffecf85f0, optlen:4) return 0 tst_get_unused_port() get port 43156 == bind socket to address == bind(sockfd:4, my_addr:0x3fffecf86c4, addrlen:28) return 0 == send message == sendmsg(sockfd:4, msg:0x3fffecf8678, flags:0) return 100 == receive message == recvmsg(sockfd:4, msg:0x3fffecf8678, flags:64) return 100 == check the received destination option == the received destination option length: 24 close(4) OK -> PASS ========== TEST 4 ========== ./tst_send_dstopt_setopt --log=4.html --title="Send Destination options header by specifies it using setsockopt()" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6/UDP socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == enable socket to receive destination options == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_RECVDSTOPTS, optval:0x3ffda378900, optlen:4) return 0 == set Destination options header of socket == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_DSTOPTS, optval:0x3ffda378980, optlen:8) return 0 tst_get_unused_port() get port 34078 == bind socket to address == bind(sockfd:4, my_addr:0x3ffda3789d4, addrlen:28) return 0 == send message to itself == sendto(sockfd:4, buf:0x1007ee0, len:17, flags:0, to:0x3ffda3789d4, tolen:28) return 17 == receive message == recvmsg(sockfd:4, msg:0x3ffda378988, flags:64) return 17 == check the received destination option == the received destination option length: 24 close(4) OK -> PASS ========== TEST 5 ========== ./tst_dsthop_get --log=5.html --title="Get Destination Options header which the application specifies" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 == get Destination options header == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_DSTOPTS, optval:0x3ffe54792b0, optlen:0x3ffe54792ac) return length 0 == check length of Destination options header == == set Destination options header == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_DSTOPTS, optval:0x3ffe54792b8, optlen:8) return 0 == get Destination options header == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_DSTOPTS, optval:0x3ffe54792b0, optlen:0x3ffe54792ac) return length 8 == check length of Destination options header == == get Destination options header with NULL data pointer == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_DSTOPTS, optval:(nil), optlen:0x3ffe54792ac) return error EFAULT == get Destination options header with NULL length pointer == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_DSTOPTS, optval:0x3ffe54792b0, optlen:(nil)) return error EFAULT == get Destination options header with short length == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_DSTOPTS, optval:0x3ffe54792b0, optlen:0x3ffe54792ac) return length 4 == check length of Destination options header == OK -> PASS ========== TEST 6 ========== ./tst_dsthop_set --log=6.html --title="Set Destination Options using setsockopt()" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 == set Destination options header with NULL data pointer == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_DSTOPTS, optval:(nil), optlen:8) return error EINVAL == set Destination options header with larger length == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_DSTOPTS, optval:0x3fffd3f9188, optlen:65535) return error EINVAL == set Destination options header with bad option == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_DSTOPTS, optval:0x3fffd3f9188, optlen:8) return error EINVAL == set Destination options header with valid option == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_DSTOPTS, optval:0x3fffd3f9188, optlen:8) return 0 close(4) OK -> PASS ========== TEST 7 ========== ./tst_remove_dstopt --log=7.html --title="Remove any sticky Destination Options header" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 == remove any sticky Destination Options header == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_DSTOPTS, optval:0x3ffc95f8ba8, optlen:0) return 0 == set Destination Options header == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_DSTOPTS, optval:0x3ffc95f8ba8, optlen:8) return 0 == get Destination Options header == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_DSTOPTS, optval:0x3ffc95f8ba8, optlen:0x3ffc95f8ba4) return length 8 == check length of Destination Options header == == remove any sticky Destination Options header == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_DSTOPTS, optval:0x3ffc95f8ba8, optlen:0) return 0 == get Destination Options header == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_DSTOPTS, optval:0x3ffc95f8ba8, optlen:0x3ffc95f8ba4) return length 0 == check the Destination Options header has been removed == OK -> PASS :: [ 16:33:38 ] :: [ LOG ] :: ======Output dstopt Test Results====== :: [ 16:33:38 ] :: [ PASS ] :: Case#1 [name:tst_recv_dstopt] [log:dstopt/1.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:38 ] :: [ PASS ] :: Case#2 [name:tst_recv_no_dstopt] [log:dstopt/2.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:38 ] :: [ PASS ] :: Case#3 [name:tst_send_dstopt_data] [log:dstopt/3.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:38 ] :: [ PASS ] :: Case#4 [name:tst_send_dstopt_setopt] [log:dstopt/4.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:38 ] :: [ PASS ] :: Case#5 [name:tst_dsthop_get] [log:dstopt/5.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:38 ] :: [ PASS ] :: Case#6 [name:tst_dsthop_set] [log:dstopt/6.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:38 ] :: [ PASS ] :: Case#7 [name:tst_remove_dstopt] [log:dstopt/7.html] (Assert: 'PASS' should equal 'PASS') ===> optsprocess :: [ 16:33:38 ] :: [ LOG ] :: Execute optsprocess Test Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. ========== TEST 1 ========== ./tst_inet6_opt_init_init --log=1.html --title="Initializes the extension header to have the correct length field" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == calculate the needed buffer size if extlen is 0 == inet6_opt_init(extbuf:0x3ffe44793ac, extlen:0) return -1 == extension header is: == 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 == calculate the needed buffer size if extlen is not multiple of 8 == inet6_opt_init(extbuf:0x3ffe44793ac, extlen:7) return -1 == extension header is: == 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 == calculate the needed buffer size if extlen is multiple of 8 == inet6_opt_init(extbuf:0x3ffe44793ac, extlen:16) return 2 == extension header is: == 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 OK -> PASS ========== TEST 2 ========== ./tst_inet6_opt_init_calc --log=2.html --title="Calculate the needed buffer size for the empty extension header" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == calculate the needed buffer size if extlen is 0 == inet6_opt_init(extbuf:(nil), extlen:0) return 2 == calculate the needed buffer size if extlen is 8 == inet6_opt_init(extbuf:(nil), extlen:8) return 2 == calculate the needed buffer size if extlen is 100 == inet6_opt_init(extbuf:(nil), extlen:100) return 2 OK -> PASS ========== TEST 3 ========== ./tst_inet6_opt_append_init --log=3.html --title="Initialize the option and returns a pointer to the location for the option content" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == calculate the needed buffer size == inet6_opt_init(extbuf:0x3fff2179048, extlen:16) return 2 == extension header is: == 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 == append option with option type set to 0 == inet6_opt_append(extbuf:0x3fff2179048, extlen:16, offset:2, type:0, len:4, align:4, databufp:0x3fff2179040) return -1 == append option with option type set to 1 == inet6_opt_append(extbuf:0x3fff2179048, extlen:16, offset:2, type:1, len:4, align:4, databufp:0x3fff2179040) return -1 == append option with align set to 3 == inet6_opt_append(extbuf:0x3fff2179048, extlen:16, offset:2, type:3, len:4, align:3, databufp:0x3fff2179040) return -1 == append option with align set to 6 == inet6_opt_append(extbuf:0x3fff2179048, extlen:16, offset:2, type:3, len:4, align:6, databufp:0x3fff2179040) return -1 == append option with align set to 16 == inet6_opt_append(extbuf:0x3fff2179048, extlen:16, offset:2, type:3, len:4, align:16, databufp:0x3fff2179040) return -1 == append option to extension header == inet6_opt_append(extbuf:0x3fff2179048, extlen:16, offset:2, type:3, len:8, align:4, databufp:0x3fff2179040) return 12 == extension header is: == 00 01 03 08 00 00 00 00 00 00 00 00 00 00 00 00 OK -> PASS ========== TEST 4 ========== ./tst_inet6_opt_append_calc --log=4.html --title="Calculate the needed buffer size for the extension header" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == calculate the needed buffer size == inet6_opt_init(extbuf:(nil), extlen:16) return 2 == append option with option type set to 0 == inet6_opt_append(extbuf:(nil), extlen:16, offset:2, type:0, len:4, align:4, databufp:(nil)) return -1 == append option with option type set to 1 == inet6_opt_append(extbuf:(nil), extlen:16, offset:2, type:1, len:4, align:4, databufp:(nil)) return -1 == append option with align set to 3 == inet6_opt_append(extbuf:(nil), extlen:16, offset:2, type:3, len:4, align:3, databufp:(nil)) return -1 == append option with align set to 6 == inet6_opt_append(extbuf:(nil), extlen:16, offset:2, type:3, len:4, align:6, databufp:(nil)) return -1 == append option with align set to 16 == inet6_opt_append(extbuf:(nil), extlen:16, offset:2, type:3, len:4, align:16, databufp:(nil)) return -1 == append option to extension header == inet6_opt_append(extbuf:(nil), extlen:16, offset:2, type:3, len:8, align:4, databufp:(nil)) return 12 OK -> PASS ========== TEST 5 ========== ./tst_inet6_opt_finish_do --log=5.html --title="Updated total length taking into account the final padding of the extension header" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == calculate the needed buffer size == inet6_opt_init(extbuf:0x3ffd11792b0, extlen:16) return 2 == extension header is: == ff 01 ff ff ff ff ff ff ff ff ff ff ff ff ff ff == updated total length taking into account the final padding == inet6_opt_finish(extbuf:0x3ffd11792b0, extlen:16, offset:2) return 8 == extension header is: == ff 01 01 04 00 00 00 00 ff ff ff ff ff ff ff ff == check whether initializes the option by inserting a Pad1 or PadN option == Padding with PadN option == updated total length taking into account the final padding == inet6_opt_finish(extbuf:0x3ffd11792b0, extlen:16, offset:7) return 8 == extension header is: == ff ff ff ff ff ff ff 00 ff ff ff ff ff ff ff ff == check whether initializes the option by inserting a Pad1 option == Padding with Pad1 option == updated total length which not need padding == inet6_opt_finish(extbuf:0x3ffd11792b0, extlen:16, offset:8) return 8 == extension header is: == ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff == check whether initializes the option by not inserted any option == == updated total length with bad paramter == inet6_opt_finish(extbuf:0x3ffd11792b0, extlen:16, offset:17) return -1 == extension header is: == ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff OK -> PASS ========== TEST 6 ========== ./tst_inet6_opt_finish_calc --log=6.html --title="Calculate the needed buffer size for the extension header" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == calculate the needed buffer size == inet6_opt_init(extbuf:(nil), extlen:16) return 2 == calculate the needed buffer size while the offset is not multiple of 8 bytes == inet6_opt_finish(extbuf:(nil), extlen:16, offset:2) return 8 == calculate the needed buffer size while the offset is multiple of 8 bytes == inet6_opt_finish(extbuf:(nil), extlen:16, offset:8) return 8 == calculate the needed buffer size while the offset is lager than extlen == inet6_opt_finish(extbuf:(nil), extlen:16, offset:17) return 24 == calculate the needed buffer size while the offset is equal to extlen == inet6_opt_finish(extbuf:(nil), extlen:16, offset:16) return 16 OK -> PASS ========== TEST 7 ========== ./tst_inet6_opt_set_val --log=7.html --title="Inserts data items of various sizes in the data portion of the option" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == calculate the needed buffer size == inet6_opt_init(extbuf:0x3ffee2789f0, extlen:16) return 2 == extension header is: == 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 == append option to extension header == inet6_opt_append(extbuf:0x3ffee2789f0, extlen:16, offset:2, type:3, len:8, align:4, databufp:0x3ffee2789d0) return 12 == extension header is: == 00 01 03 08 00 00 00 00 00 00 00 00 00 00 00 00 inet6_opt_set_val(databuf:0x3ffee2789f4, offset:0, val:0x3ffee2789d8, vallen:8) return 8 == extension header is: == 00 01 03 08 ff ff ff ff ff ff ff ff 00 00 00 00 OK -> PASS ========== TEST 8 ========== ./tst_inet6_opt_next --log=8.html --title="Parse received option extension headers returning the next option" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == calculate the needed buffer size == inet6_opt_init(extbuf:0x3fff70f8da0, extlen:16) return 2 == extension header is: == 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 inet6_opt_next(extbuf:0x3fff70f8da0, extlen:16, offset:0, typep:0x3fff70f8d8f, lenp:0x3fff70f8d88, databufp:0x3fff70f8d90) return -1 == append option to extension header == inet6_opt_append(extbuf:0x3fff70f8da0, extlen:16, offset:2, type:3, len:8, align:4, databufp:0x3fff70f8d90) return 12 == extension header is: == 00 01 03 08 00 00 00 00 00 00 00 00 00 00 00 00 inet6_opt_set_val(databuf:0x3fff70f8da4, offset:0, val:0x3fff70f8d98, vallen:8) return 8 == extension header is: == 00 01 03 08 ff ff ff ff ff ff ff ff 00 00 00 00 inet6_opt_next(extbuf:0x3fff70f8da0, extlen:16, offset:0, typep:0x3fff70f8d8f, lenp:0x3fff70f8d88, databufp:0x3fff70f8d90) return 12 OK -> PASS ========== TEST 9 ========== ./tst_inet6_opt_find --log=9.html --title="Parse received option extension headers returning the next option which is the given option type" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == calculate the needed buffer size == inet6_opt_init(extbuf:0x3ffd2d78490, extlen:16) return 2 == extension header is: == 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 inet6_opt_find(extbuf:0x3ffd2d78490, extlen:16, offset:0, typep:3, lenp:0x3ffd2d7847c, databufp:0x3ffd2d78480) return -1 == append option to extension header == inet6_opt_append(extbuf:0x3ffd2d78490, extlen:16, offset:2, type:3, len:8, align:4, databufp:0x3ffd2d78480) return 12 == extension header is: == 00 01 03 08 00 00 00 00 00 00 00 00 00 00 00 00 inet6_opt_set_val(databuf:0x3ffd2d78494, offset:0, val:0x3ffd2d78488, vallen:8) return 8 == extension header is: == 00 01 03 08 ff ff ff ff ff ff ff ff 00 00 00 00 inet6_opt_find(extbuf:0x3ffd2d78490, extlen:16, offset:0, typep:4, lenp:0x3ffd2d7847c, databufp:0x3ffd2d78480) return -1 inet6_opt_find(extbuf:0x3ffd2d78490, extlen:16, offset:0, typep:3, lenp:0x3ffd2d7847c, databufp:0x3ffd2d78480) return 12 OK -> PASS ========== TEST 10 ========== ./tst_inet6_opt_get_val --log=10.html --title="Extracts data items of various sizes in the data portion of the option" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == calculate the needed buffer size == inet6_opt_init(extbuf:0x3ffe8d78e60, extlen:16) return 2 == extension header is: == 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 == append option to extension header == inet6_opt_append(extbuf:0x3ffe8d78e60, extlen:16, offset:2, type:3, len:8, align:4, databufp:0x3ffe8d78e38) return 12 == extension header is: == 00 01 03 08 00 00 00 00 00 00 00 00 00 00 00 00 inet6_opt_set_val(databuf:0x3ffe8d78e64, offset:0, val:0x3ffe8d78e48, vallen:8) return 8 == extension header is: == 00 01 03 08 ff ff ff ff ff ff ff ff 00 00 00 00 inet6_opt_get_val(databuf:0x3ffe8d78e64, offset:0, val:0x3ffe8d78e40, vallen:8) return 8 OK -> PASS :: [ 16:33:44 ] :: [ LOG ] :: ======Output optsprocess Test Results====== :: [ 16:33:44 ] :: [ PASS ] :: Case#1 [name:tst_inet6_opt_init_init] [log:optsprocess/1.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:44 ] :: [ PASS ] :: Case#2 [name:tst_inet6_opt_init_calc] [log:optsprocess/2.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:44 ] :: [ PASS ] :: Case#3 [name:tst_inet6_opt_append_init] [log:optsprocess/3.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:44 ] :: [ PASS ] :: Case#4 [name:tst_inet6_opt_append_calc] [log:optsprocess/4.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:44 ] :: [ PASS ] :: Case#5 [name:tst_inet6_opt_finish_do] [log:optsprocess/5.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:44 ] :: [ PASS ] :: Case#6 [name:tst_inet6_opt_finish_calc] [log:optsprocess/6.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:44 ] :: [ PASS ] :: Case#7 [name:tst_inet6_opt_set_val] [log:optsprocess/7.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:44 ] :: [ PASS ] :: Case#8 [name:tst_inet6_opt_next] [log:optsprocess/8.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:44 ] :: [ PASS ] :: Case#9 [name:tst_inet6_opt_find] [log:optsprocess/9.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:33:44 ] :: [ PASS ] :: Case#10 [name:tst_inet6_opt_get_val] [log:optsprocess/10.html] (Assert: 'PASS' should equal 'PASS') ===> extiface :: [ 16:33:44 ] :: [ LOG ] :: Execute extiface Test Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. ========== TEST 1 ========== ./tst_rresvport_af --log=1.html --title="Creates an IPv6/TCP socket and binds a "reserved port" to the socket" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc rresvport_af(port:0, family:AF_INET6) return sk=4, port=512 close(4) rresvport_af(port:0, family:AF_INET) return sk=4, port=512 close(4) rresvport_af(port:0, family:AF_UNIX) return sk=-1, port=0 OK -> PASS :: [ 16:33:44 ] :: [ LOG ] :: ======Output extiface Test Results====== :: [ 16:33:44 ] :: [ PASS ] :: Case#1 [name:tst_rresvport_af] [log:extiface/1.html] (Assert: 'PASS' should equal 'PASS') ===> advanced :: [ 16:33:44 ] :: [ LOG ] :: Execute advanced Test Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. ========== TEST 1 ========== ./tst_rthdrdstopts --log=1.html --title="IPV6_RTHDRDSTOPTS" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 tst_get_unused_port() get port 44747 bind(sockfd:4, my_addr:0x3fff1df8ce0, addrlen:28) return 0 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_RECVHOPOPTS, optval:0x3fff1df8484, optlen:4) return 0 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_RECVDSTOPTS, optval:0x3fff1df8484, optlen:4) return 0 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_RECVRTHDR, optval:0x3fff1df8484, optlen:4) return 0 socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=5 == set dst opt without rthdr == inet6_opt_init(extbuf:0x3fff1df8cd0, extlen:16) return 2 inet6_opt_append(extbuf:0x3fff1df8cd0, extlen:16, offset:2, type:3, len:4, align:4, databufp:0x3fff1df8478) return 8 inet6_opt_set_val(databuf:0x3fff1df8cd4, offset:0, val:0x3fff1df8474, vallen:4) return 4 inet6_opt_finish(extbuf:0x3fff1df8cd0, extlen:16, offset:8) return 8 setsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_RTHDRDSTOPTS, optval:0x3fff1df8cd0, optlen:16) return 0 sendto(sockfd:5, buf:0x1007fa4, len:3, flags:0, to:0x3fff1df8ce0, tolen:28) return 3 recvmsg(sockfd:4, msg:0x3fff1df8c98, flags:64) return 3 OK -> PASS :: [ 16:33:46 ] :: [ LOG ] :: ======Output advanced Test Results====== :: [ 16:33:46 ] :: [ PASS ] :: Case#1 [name:tst_rthdrdstopts] [log:advanced/1.html] (Assert: 'PASS' should equal 'PASS') ===> compatopt :: [ 16:33:46 ] :: [ LOG ] :: Execute compatopt Test Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. Use of uninitialized value $Getopt::Long::ignorecase in numeric gt (>) at /usr/share/perl5/vendor_perl/Getopt/Long.pm line 897. ========== TEST 1 ========== ./tst_ipv6_addrform --log=1.html --title="change socket type between v4 and v6" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=5 == IPv4-mapped IPv6 address == tst_get_unused_port() get port 59325 inet_pton(af:AF_INET6, src:"::FFFF:127.0.0.1", dst:0x3ffc7878c14) return 1, dst=0000:0000:0000:0000:0000:ffff:7f00:0001 IN6_IS_ADDR_V4COMPAT(0000:0000:0000:0000:0000:ffff:7f00:0001) return 0 == bind socket to address == bind(sockfd:4, my_addr:0x3ffc7878c0c, addrlen:28) return 0 tst_get_unused_port() get port 60187 bind(sockfd:5, my_addr:0x3ffc7878c0c, addrlen:28) return 0 == connect == connect(sockfd:5, serv_addr:0x3ffc7878c0c, addrlen:28) return 0 getsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_ADDRFORM, optval:0x3ffc7878c08, optlen:0x3ffc7878c04) return socket_type=PF_INET6 == set socket option IPV6_ADDRFORM == setsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_ADDRFORM, optval:0x3ffc7878c08, optlen:4) return 0 == get socket type use IPV6_ADDRFORM == getsockopt(sockfd:5, level:IPPROTO_IPV6, optname:IPV6_ADDRFORM, optval:0x3ffc7878c08, optlen:0x3ffc7878c04) return error UNKNOW(95) INFO: get socket type fail!!!ipv4 doesn't support IPV6_ADDRFORM now. close(4) close(5) -> PASS ========== TEST 2 ========== ./tst_ipv6_2292DSTOPTS --log=2.html --title="Check DSTOPTS as RFC2292 spec" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == get getsockopt in IPV6_2292DSTOPTS== getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_2292DSTOPTS, optval:0x3fff4bf8f8c, optlen:0x3fff4bf8eb8) return length 0 default IPV6_2292DSTOPTS is 0 == set socket use 2292DSTOPTS == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_2292DSTOPTS, optval:0x3fff4bf8f8c, optlen:4) return 0 == get getsockopt in IPV6_2292DSTOPTS== getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_2292DSTOPTS, optval:0x3fff4bf8f8c, optlen:0x3fff4bf8eb8) return length 4 tst_get_unused_port() get port 40540 == bind socket to address == bind(sockfd:4, my_addr:0x3fff4bf8f90, addrlen:28) return 0 == send message == sendmsg(sockfd:4, msg:0x3fff4bf8f40, flags:0) return 100 == receive message == recvmsg(sockfd:4, msg:0x3fff4bf8f40, flags:64) return 100 == check the received 2292DSTOPTS option == == if not found, report error== == check whether the length of received 2292DSTOPTS is correct== == check whether the value of received DSTOPT_SAPCE is correct== == set socket use 2292DSTOPTS == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_2292DSTOPTS, optval:0x3fff4bf8f8c, optlen:4) return 0 == send message == sendmsg(sockfd:4, msg:0x3fff4bf8f40, flags:0) return 100 == receive message == recvmsg(sockfd:4, msg:0x3fff4bf8f40, flags:64) return 100 == after off 2292HOPOPT , receive message can not read 2292DSTOPTS == OK -> PASS ========== TEST 3 ========== ./tst_ipv6_2292HOPOPTS --log=3.html --title="Check HOPOPTS as RFC2292 spec" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == get getsockopt in IPV6_2292HOPOPTS== getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_2292HOPOPTS, optval:0x3fff68f857c, optlen:0x3fff68f84a8) return length 0 default IPV6_2292HOPOPTS is 0 == set socket use 2292HOPOPT == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_2292HOPOPTS, optval:0x3fff68f857c, optlen:4) return 0 == get getsockopt in IPV6_2292HOPOPTS== getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_2292HOPOPTS, optval:0x3fff68f857c, optlen:0x3fff68f84a8) return length 4 tst_get_unused_port() get port 34270 == bind socket to address == bind(sockfd:4, my_addr:0x3fff68f8580, addrlen:28) return 0 == send message == sendmsg(sockfd:4, msg:0x3fff68f8530, flags:0) return 100 == receive message == recvmsg(sockfd:4, msg:0x3fff68f8530, flags:64) return 100 == check the received 2292HOPOPTS option == == if not found, report error== == check whether the length of received hop by hop option is correct== == check whether the value of received hop by hop option is correct== == set socket use 2292HOPOPT == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_2292HOPOPTS, optval:0x3fff68f857c, optlen:4) return 0 == send message == sendmsg(sockfd:4, msg:0x3fff68f8530, flags:0) return 100 == receive message == recvmsg(sockfd:4, msg:0x3fff68f8530, flags:64) return 100 == after off 2292HOPOPT , receive message can not read hop by hop option == close(4) OK -> PASS ========== TEST 4 ========== ./tst_ipv6_2292RTHDR --log=4.html --title="Check RTHDR as RFC2292 spec" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == get getsockopt in IPV6_2292RTHDR== getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_2292RTHDR, optval:0x3ffe5d789e0, optlen:0x3ffe5d789dc) return length 0 default 2292RTHDR is 0 == set socket use IPV6_2292RTHDR == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_2292RTHDR, optval:0x3ffe5d789e0, optlen:4) return 0 == get getsockopt in IPV6_2292RTHDR== getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_2292RTHDR, optval:0x3ffe5d789e0, optlen:0x3ffe5d789dc) return length 4 close(4) OK -> PASS ========== TEST 5 ========== ./tst_ipv6_flowinfo --log=5.html --title="set flowlabel field in IPV6 header use IPV6_FLOWINFO" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == set sock flow label == inet_pton(af:AF_INET6, src:"::1", dst:0x3ffe1cf8758) return 1, dst=0000:0000:0000:0000:0000:0000:0000:0001 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:UNKNOW(33), optval:0x3ffe1cf872c, optlen:4) return 0 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:UNKNOW(32), optval:0x3ffe1cf8730, optlen:32) return 0 == set socket IPV6_FLOWINFO == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:UNKNOW(11), optval:0x3ffe1cf8890, optlen:4) return 0 == get getsockopt in IPV6_FLOWINFO== getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:UNKNOW(11), optval:0x3ffe1cf8890, optlen:0x3ffe1cf8828) return length 4 tst_get_unused_port() get port 43467 inet_pton(af:AF_INET6, src:"::1", dst:0x3ffe1cf889c) return 1, dst=0000:0000:0000:0000:0000:0000:0000:0001 == bind socket to address == bind(sockfd:4, my_addr:0x3ffe1cf8894, addrlen:28) return 0 == send message == sendmsg(sockfd:4, msg:0x3ffe1cf8848, flags:0) return 8 == receive message == recvmsg(sockfd:4, msg:0x3ffe1cf8848, flags:64) return 8 == check the received IPV6_FLOWINFO option == == if not found, report error== close(4) == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 == set socket IPV6_FLOWINFO == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:UNKNOW(11), optval:0x3ffe1cf8890, optlen:4) return 0 == get getsockopt in IPV6_FLOWINFO== getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:UNKNOW(11), optval:0x3ffe1cf8890, optlen:0x3ffe1cf8828) return length 4 close(4) == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == set sock flow label == inet_pton(af:AF_INET6, src:"::1", dst:0x3ffe1cf8758) return 1, dst=0000:0000:0000:0000:0000:0000:0000:0001 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:UNKNOW(33), optval:0x3ffe1cf872c, optlen:4) return 0 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:UNKNOW(32), optval:0x3ffe1cf8730, optlen:32) return 0 == set socket IPV6_FLOWINFO == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:UNKNOW(11), optval:0x3ffe1cf8890, optlen:4) return 0 == get getsockopt in IPV6_FLOWINFO== getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:UNKNOW(11), optval:0x3ffe1cf8890, optlen:0x3ffe1cf8828) return length 4 inet_pton(af:AF_INET6, src:"::1", dst:0x3ffe1cf889c) return 1, dst=0000:0000:0000:0000:0000:0000:0000:0001 == bind socket to address == bind(sockfd:4, my_addr:0x3ffe1cf8894, addrlen:28) return 0 == send message == sendmsg(sockfd:4, msg:0x3ffe1cf8848, flags:0) return -1 close(4) == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == set sock flow label == inet_pton(af:AF_INET6, src:"::1", dst:0x3ffe1cf8758) return 1, dst=0000:0000:0000:0000:0000:0000:0000:0001 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:UNKNOW(33), optval:0x3ffe1cf872c, optlen:4) return 0 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:UNKNOW(32), optval:0x3ffe1cf8730, optlen:32) return 0 == set socket IPV6_FLOWINFO == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:UNKNOW(11), optval:0x3ffe1cf8890, optlen:4) return 0 == get getsockopt in IPV6_FLOWINFO== getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:UNKNOW(11), optval:0x3ffe1cf8890, optlen:0x3ffe1cf8828) return length 4 inet_pton(af:AF_INET6, src:"::1", dst:0x3ffe1cf889c) return 1, dst=0000:0000:0000:0000:0000:0000:0000:0001 == bind socket to address == bind(sockfd:4, my_addr:0x3ffe1cf8894, addrlen:28) return 0 == send message == sendmsg(sockfd:4, msg:0x3ffe1cf8848, flags:0) return 8 == receive message == recvmsg(sockfd:4, msg:0x3ffe1cf8848, flags:64) return 8 == check the received IPV6_FLOWINFO option == close(4) == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=5 inet_pton(af:AF_INET6, src:"::1", dst:0x3ffe1cf8758) return 1, dst=0000:0000:0000:0000:0000:0000:0000:0001 setsockopt(sockfd:5, level:IPPROTO_IPV6, optname:UNKNOW(33), optval:0x3ffe1cf872c, optlen:4) return 0 setsockopt(sockfd:5, level:IPPROTO_IPV6, optname:UNKNOW(32), optval:0x3ffe1cf8730, optlen:32) return 0 == set socket IPV6_FLOWINFO == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:UNKNOW(11), optval:0x3ffe1cf8890, optlen:4) return 0 == get getsockopt in IPV6_FLOWINFO== getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:UNKNOW(11), optval:0x3ffe1cf8890, optlen:0x3ffe1cf8828) return length 4 tst_get_unused_port() get port 42112 inet_pton(af:AF_INET6, src:"::1", dst:0x3ffe1cf889c) return 1, dst=0000:0000:0000:0000:0000:0000:0000:0001 == bind socket to address == bind(sockfd:4, my_addr:0x3ffe1cf8894, addrlen:28) return 0 bind(sockfd:5, my_addr:0x3ffe1cf8894, addrlen:28) return 0 == set socket IPV6_FLOWINFO == setsockopt(sockfd:5, level:IPPROTO_IPV6, optname:UNKNOW(11), optval:0x3ffe1cf8890, optlen:4) return 0 == get getsockopt in IPV6_FLOWINFO== getsockopt(sockfd:5, level:IPPROTO_IPV6, optname:UNKNOW(11), optval:0x3ffe1cf8890, optlen:0x3ffe1cf8828) return length 4 connect(sockfd:5, serv_addr:0x3ffe1cf8894, addrlen:28) return 0 == send message == sendmsg(sockfd:5, msg:0x3ffe1cf8848, flags:0) return 8 == receive message == recvmsg(sockfd:4, msg:0x3ffe1cf8848, flags:64) return 8 == check the received IPV6_FLOWINFO option == == if found, report error== close(5) close(4) -> PASS ========== TEST 6 ========== ./tst_ipv6_mtu --log=6.html --title="set path mtu use IPV6_MTU" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == Save the NIC MTU == == set NIC mtu to 1500 == == set socket mtu to 1279 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MTU, optval:0x3ffebe7914c, optlen:4) return error EINVAL == bind sk0 on dummy_ipv6 == setsockopt(sockfd:4, level:IPPROTO_ICMP, optname:IPV6_RECVERR, optval:0x3ffebe79150, optlen:40) return 0 tst_get_unused_port() get port 33955 inet_pton(af:AF_INET6, src:"fe80::1ce9:d6ff:fe58:abc", dst:0x3ffebe79118) return 1, dst=fe80:0000:0000:0000:1ce9:d6ff:fe58:0abc bind(sockfd:4, my_addr:0x3ffebe79110, addrlen:28) return 0 == connect to "ff02::1"== tst_get_unused_port() get port 47301 inet_pton(af:AF_INET6, src:"ff02::1", dst:0x3ffebe79134) return 1, dst=ff02:0000:0000:0000:0000:0000:0000:0001 connect(sockfd:4, serv_addr:0x3ffebe7912c, addrlen:28) return 0 == set socket mtu to 1400 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MTU, optval:0x3ffebe7914c, optlen:4) return 0 == get socket mtu on sk0 == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MTU, optval:0x3ffebe7914c, optlen:0x3ffebe79148) return length 4 == set NIC mtu to 1450 == == get socket mtu on sk0 == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MTU, optval:0x3ffebe7914c, optlen:0x3ffebe79148) return length 4 == set NIC mtu to 1500 == == set socket mtu to 1600 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MTU, optval:0x3ffebe7914c, optlen:4) return 0 == get socket mtu on sk0 == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MTU, optval:0x3ffebe7914c, optlen:0x3ffebe79148) return length 4 == set NIC mtu to 1450 == == get socket mtu on sk0 == getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MTU, optval:0x3ffebe7914c, optlen:0x3ffebe79148) return length 4 == Restore the NIC MTU == close(4) OK -> PASS ========== TEST 7 ========== ./tst_ipv6_mtudiscover --log=7.html --title="check path mtu discover method use IPV6_MTU_DISCOVER" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_STREAM, protocol:0) return sockfd=4 == set sk0 IPV6_MTU_DISCOVER to 64 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MTU_DISCOVER, optval:0x3ffd54f8fe0, optlen:4) return error EINVAL == set sk0 IPV6_MTU_DISCOVER to -1 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MTU_DISCOVER, optval:0x3ffd54f8fe0, optlen:4) return error EINVAL == set sk0 IPV6_MTU_DISCOVER to IPV6_PMTUDISC_DONT == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MTU_DISCOVER, optval:0x3ffd54f8fe0, optlen:4) return 0 getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MTU_DISCOVER, optval:0x3ffd54f8fe0, optlen:0x3ffd54f8fdc) return length 4 == set sk0 IPV6_MTU_DISCOVER to IPV6_PMTUDISC_WANT == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MTU_DISCOVER, optval:0x3ffd54f8fe0, optlen:4) return 0 getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MTU_DISCOVER, optval:0x3ffd54f8fe0, optlen:0x3ffd54f8fdc) return length 4 == set sk0 IPV6_MTU_DISCOVER to IPV6_PMTUDISC_DO == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MTU_DISCOVER, optval:0x3ffd54f8fe0, optlen:4) return 0 getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MTU_DISCOVER, optval:0x3ffd54f8fe0, optlen:0x3ffd54f8fdc) return length 4 == set sk0 IPV6_MTU_DISCOVER to IPV6_PMTUDISC_PROBE == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MTU_DISCOVER, optval:0x3ffd54f8fe0, optlen:4) return 0 getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_MTU_DISCOVER, optval:0x3ffd54f8fe0, optlen:0x3ffd54f8fdc) return length 4 OK close(4) -> PASS ========== TEST 8 ========== ./tst_ipv6_recverr --log=8.html --title="recv IPV6 ICMPv6 error messgae use IPV6_RECVERR" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == get getsockopt in IPV6_RECVERR== getsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_RECVERR, optval:0x3ffc7178ff4, optlen:0x3ffc71781c8) return length 4 == setsockopt in IPV6_RECVERR== setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_RECVERR, optval:0x3ffc7178ff4, optlen:4) return 0 tst_get_unused_port() get port 52321 inet_pton(af:AF_INET6, src:"::1", dst:0x3ffc717901c) return 1, dst=0000:0000:0000:0000:0000:0000:0000:0001 == bind socket to address == bind(sockfd:4, my_addr:0x3ffc7179014, addrlen:28) return 0 == send port unreachable packet == tst_get_unused_port() get port 56772 inet_pton(af:AF_INET6, src:"::1", dst:0x3ffc7179000) return 1, dst=0000:0000:0000:0000:0000:0000:0000:0001 sendto(sockfd:4, buf:0x3ffc71781cc, len:1500, flags:0, to:0x3ffc7178ff8, tolen:28) return 1500 dummy_ipv6 == recv port unreachable err messgae == recvmsg(sockfd:4, msg:0x3ffc7178fa8, flags:8192) return 1024 == ee_type is 1 and ee_code is 4 ,errmsg type is SO_EE_ORIGIN_ICMP6== close(4) OK -> PASS ========== TEST 9 ========== ./tst_ipv6_router_alert --log=9.html --title="set router alert option use IPV6_ROUTER_ALERT" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 raw socket == socket(domain:AF_INET6, type:SOCK_RAW, protocol:IPPROTO_RAW) return sockfd=4 == set the value IPV6_ROUTER_ALERT option to 0 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_ROUTER_ALERT, optval:0x3fff61f9190, optlen:4) return 0 == set the value IPV6_ROUTER_ALERT option to 1 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_ROUTER_ALERT, optval:0x3fff61f9190, optlen:4) return error EADDRINUSE == set the value IPV6_ROUTER_ALERT option to -1 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_ROUTER_ALERT, optval:0x3fff61f9190, optlen:4) return 0 == set the value IPV6_ROUTER_ALERT option to 1 == setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_ROUTER_ALERT, optval:0x3fff61f9190, optlen:4) return 0 close(4) OK -> PASS ========== TEST 10 ========== ./tst_ipv6_drop_membership --log=10.html --title="Check the IPV6_DROP_MEMBERSHIP option can be set correctly by setsockopt()." Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == join a multicast group on Link0 == if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"ff03::02", dst:0x3ffccff8494) return 1, dst=ff03:0000:0000:0000:0000:0000:0000:0002 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_JOIN_GROUP, optval:0x3ffccff8494, optlen:20) return 0 == leave this multicast group == if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"ff03::02", dst:0x3ffccff8494) return 1, dst=ff03:0000:0000:0000:0000:0000:0000:0002 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_LEAVE_GROUP, optval:0x3ffccff8494, optlen:20) return 0 == leave dummy_ipv6 to ff03::02 again == if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"ff03::02", dst:0x3ffccff8494) return 1, dst=ff03:0000:0000:0000:0000:0000:0000:0002 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_LEAVE_GROUP, optval:0x3ffccff8494, optlen:20) return error EADDRNOTAVAIL == bind socket to lo== tst_get_unused_port() get port 35940 bind(sockfd:4, my_addr:0x3ffccff844c, addrlen:28) return 0 == creat recv socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=5 == bind socket to ifaddr0== tst_get_unused_port() get port 36805 inet_pton(af:AF_INET6, src:"fe80::1ce9:d6ff:fe58:abc", dst:0x3ffccff8438) return 1, dst=fe80:0000:0000:0000:1ce9:d6ff:fe58:0abc setsockopt(sockfd:5, level:IPPROTO_ICMP, optname:IPV6_RECVERR, optval:0x3ffccff8468, optlen:40) return 0 bind(sockfd:5, my_addr:0x3ffccff8430, addrlen:28) return 0 if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"ff03::02", dst:0x3ffccff8494) return 1, dst=ff03:0000:0000:0000:0000:0000:0000:0002 inet_pton(af:AF_INET6, src:"ff03::02", dst:0x3ffccff841c) return 1, dst=ff03:0000:0000:0000:0000:0000:0000:0002 sendto(sockfd:5, buf:0x3ffccff840c, len:4, flags:0, to:0x3ffccff8414, tolen:28) return 4 recvfrom(sockfd:4, buf:0x3ffccff8408, len:4, flags:64, from:0x3ffccff8430, fromlen:28) return -1 == join a multicast group on Link0 == if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"ff03::02", dst:0x3ffccff8494) return 1, dst=ff03:0000:0000:0000:0000:0000:0000:0002 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_JOIN_GROUP, optval:0x3ffccff8494, optlen:20) return 0 == leave this multicast group with index 0== inet_pton(af:AF_INET6, src:"ff03::02", dst:0x3ffccff8494) return 1, dst=ff03:0000:0000:0000:0000:0000:0000:0002 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_LEAVE_GROUP, optval:0x3ffccff8494, optlen:20) return 0 == leave this multicast group on Link0 again== if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"ff03::02", dst:0x3ffccff8494) return 1, dst=ff03:0000:0000:0000:0000:0000:0000:0002 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_LEAVE_GROUP, optval:0x3ffccff8494, optlen:20) return error EADDRNOTAVAIL == join a multicast group on Link0 == if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"ff03::02", dst:0x3ffccff8494) return 1, dst=ff03:0000:0000:0000:0000:0000:0000:0002 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_JOIN_GROUP, optval:0x3ffccff8494, optlen:20) return 0 == leave EINVAL multicast group on Link0 == if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"fe80::1", dst:0x3ffccff8494) return 1, dst=fe80:0000:0000:0000:0000:0000:0000:0001 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_LEAVE_GROUP, optval:0x3ffccff8494, optlen:20) return error EINVAL OK -> PASS ========== TEST 11 ========== ./tst_ipv6_join_anycast --log=11.html --title="Join a anycast group on a specified local interface" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == join an anycast group on Link0 == if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"fe80::1", dst:0x3fff9ff9104) return 1, dst=fe80:0000:0000:0000:0000:0000:0000:0001 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_JOIN_ANYCAST, optval:0x3fff9ff9104, optlen:20) return 0 == bind recv socket on in6addr_any == tst_get_unused_port() get port 36973 bind(sockfd:4, my_addr:0x3fff9ff90e8, addrlen:28) return 0 == create send socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=5 == bind send socket on ::1 == tst_get_unused_port() get port 57153 inet_pton(af:AF_INET6, src:"::1", dst:0x3fff9ff90d4) return 1, dst=0000:0000:0000:0000:0000:0000:0000:0001 bind(sockfd:5, my_addr:0x3fff9ff90cc, addrlen:28) return 0 inet_pton(af:AF_INET6, src:"fe80::1", dst:0x3fff9ff90b8) return 1, dst=fe80:0000:0000:0000:0000:0000:0000:0001 sendto(sockfd:5, buf:0x3fff9ff90ac, len:4, flags:0, to:0x3fff9ff90b0, tolen:28) return 4 recvfrom(sockfd:4, buf:0x3fff9ff90a8, len:4, flags:64, from:(nil), fromlen:0) return 4 recvfrom(sockfd:4, buf:0x3fff9ff8fec, len:4, flags:64, from:(nil), fromlen:0) return -1 == add dummy_ipv6 to EINVAL anyaddr== if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"ff03::01", dst:0x3fff9ff9104) return 1, dst=ff03:0000:0000:0000:0000:0000:0000:0001 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_JOIN_ANYCAST, optval:0x3fff9ff9104, optlen:20) return error EINVAL == set index 0 to kernel== inet_pton(af:AF_INET6, src:"fe80::2", dst:0x3fff9ff9104) return 1, dst=fe80:0000:0000:0000:0000:0000:0000:0002 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_JOIN_ANYCAST, optval:0x3fff9ff9104, optlen:20) return 0 == add dummy_ipv6 to fe80::1 again == if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"fe80::1", dst:0x3fff9ff9104) return 1, dst=fe80:0000:0000:0000:0000:0000:0000:0001 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_JOIN_ANYCAST, optval:0x3fff9ff9104, optlen:20) return 0 close(4) close(5) OK -> PASS ========== TEST 12 ========== ./tst_ipv6_leave_anycast --log=12.html --title="Check use IPV6_LEAVE_ANYCAST option leave anycast" Got ifname0 dummy_ipv6, ifaddr0 fe80::1ce9:d6ff:fe58:abc tst_get_unused_port() get port 49529 == create an IPv6 socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=4 == leave this any group == if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"fe80::1", dst:0x3ffc0378de8) return 1, dst=fe80:0000:0000:0000:0000:0000:0000:0001 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_LEAVE_ANYCAST, optval:0x3ffc0378de8, optlen:20) return error ENOENT == join a anycast group on Link0 == if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"fe80::1", dst:0x3ffc0378de8) return 1, dst=fe80:0000:0000:0000:0000:0000:0000:0001 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_JOIN_ANYCAST, optval:0x3ffc0378de8, optlen:20) return 0 == leave this any group == if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"fe80::1", dst:0x3ffc0378de8) return 1, dst=fe80:0000:0000:0000:0000:0000:0000:0001 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_LEAVE_ANYCAST, optval:0x3ffc0378de8, optlen:20) return 0 == creat send socket == socket(domain:AF_INET6, type:SOCK_DGRAM, protocol:0) return sockfd=5 inet_pton(af:AF_INET6, src:"::1", dst:0x3ffc0378db8) return 1, dst=0000:0000:0000:0000:0000:0000:0000:0001 bind(sockfd:5, my_addr:0x3ffc0378db0, addrlen:28) return 0 setsockopt(sockfd:5, level:IPPROTO_ICMP, optname:IPV6_2292PKTINFO, optval:0x3ffc0378d88, optlen:4) return 0 bind(sockfd:4, my_addr:0x3ffc0378dcc, addrlen:28) return 0 inet_pton(af:AF_INET6, src:"fe80::1", dst:0x3ffc0378d9c) return 1, dst=fe80:0000:0000:0000:0000:0000:0000:0001 sendto(sockfd:5, buf:0x3ffc0378d90, len:4, flags:0, to:0x3ffc0378d94, tolen:28) return 4 recvfrom(sockfd:4, buf:0x3ffc0378d8c, len:4, flags:64, from:(nil), fromlen:0) return -1 == join a anycast group on Link0 == if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"fe80::1", dst:0x3ffc0378de8) return 1, dst=fe80:0000:0000:0000:0000:0000:0000:0001 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_JOIN_ANYCAST, optval:0x3ffc0378de8, optlen:20) return 0 == leave this any group == if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"fe80::1", dst:0x3ffc0378de8) return 1, dst=fe80:0000:0000:0000:0000:0000:0000:0001 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_LEAVE_ANYCAST, optval:0x3ffc0378de8, optlen:20) return 0 == leave this any group again == if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"fe80::1", dst:0x3ffc0378de8) return 1, dst=fe80:0000:0000:0000:0000:0000:0000:0001 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_LEAVE_ANYCAST, optval:0x3ffc0378de8, optlen:20) return error ENOENT == join a anycast group on Link0 == if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"fe80::1", dst:0x3ffc0378de8) return 1, dst=fe80:0000:0000:0000:0000:0000:0000:0001 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_JOIN_ANYCAST, optval:0x3ffc0378de8, optlen:20) return 0 == leave this anycast group with index 0== inet_pton(af:AF_INET6, src:"fe80::1", dst:0x3ffc0378de8) return 1, dst=fe80:0000:0000:0000:0000:0000:0000:0001 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_LEAVE_ANYCAST, optval:0x3ffc0378de8, optlen:20) return 0 == leave this any group == if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"fe80::1", dst:0x3ffc0378de8) return 1, dst=fe80:0000:0000:0000:0000:0000:0000:0001 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_LEAVE_ANYCAST, optval:0x3ffc0378de8, optlen:20) return error ENOENT sendto(sockfd:5, buf:0x3ffc0378d90, len:4, flags:0, to:0x3ffc0378d94, tolen:28) return 4 recvfrom(sockfd:4, buf:0x3ffc0378d8c, len:4, flags:64, from:(nil), fromlen:0) return -1 == join a anycast group on Link0 == if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"fe80::1", dst:0x3ffc0378de8) return 1, dst=fe80:0000:0000:0000:0000:0000:0000:0001 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_JOIN_ANYCAST, optval:0x3ffc0378de8, optlen:20) return 0 == leave EINVAL anycast group if_nametoindex(ifname:"dummy_ipv6") return 125 inet_pton(af:AF_INET6, src:"ff03::01", dst:0x3ffc0378de8) return 1, dst=ff03:0000:0000:0000:0000:0000:0000:0001 setsockopt(sockfd:4, level:IPPROTO_IPV6, optname:IPV6_LEAVE_ANYCAST, optval:0x3ffc0378de8, optlen:20) return error ENOENT OK -> PASS :: [ 16:34:17 ] :: [ LOG ] :: ======Output compatopt Test Results====== :: [ 16:34:17 ] :: [ PASS ] :: Case#1 [name:] [log:compatopt/1.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:34:17 ] :: [ PASS ] :: Case#2 [name:] [log:compatopt/2.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:34:17 ] :: [ PASS ] :: Case#3 [name:] [log:compatopt/3.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:34:17 ] :: [ PASS ] :: Case#4 [name:] [log:compatopt/4.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:34:17 ] :: [ PASS ] :: Case#5 [name:] [log:compatopt/5.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:34:17 ] :: [ PASS ] :: Case#6 [name:] [log:compatopt/6.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:34:17 ] :: [ PASS ] :: Case#7 [name:] [log:compatopt/7.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:34:17 ] :: [ PASS ] :: Case#8 [name:] [log:compatopt/8.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:34:17 ] :: [ PASS ] :: Case#9 [name:] [log:compatopt/9.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:34:17 ] :: [ PASS ] :: Case#10 [name:] [log:compatopt/10.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:34:17 ] :: [ PASS ] :: Case#11 [name:] [log:compatopt/11.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:34:17 ] :: [ PASS ] :: Case#12 [name:] [log:compatopt/12.html] (Assert: 'PASS' should equal 'PASS') :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Duration: 145s :: Assertions: 130 good, 0 bad :: RESULT: PASS (Test) ** Test PASS Score:0 Uploading resultoutputfile.log .done :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Cleanup :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: [ 16:34:18 ] :: [ LOG ] :: ======Output total summary of V6API test suites====== :: [ 16:34:18 ] :: [ LOG ] :: +----------------------------------------------------------------+ :: [ 16:34:18 ] :: [ LOG ] :: | - | Total | PASS | FAIL | WARN | NotSupport | SIGNAL | :: [ 16:34:18 ] :: [ LOG ] :: |-------------+-------+------+------+------+------------+--------| :: [ 16:34:18 ] :: [ LOG ] :: | sockin | 9 | 9 | 0 | 0 | 0 | 0 | :: [ 16:34:18 ] :: [ LOG ] :: |-------------+-------+------+------+------+------------+--------| :: [ 16:34:18 ] :: [ LOG ] :: | ident | 6 | 6 | 0 | 0 | 0 | 0 | :: [ 16:34:18 ] :: [ LOG ] :: |-------------+-------+------+------+------+------------+--------| :: [ 16:34:18 ] :: [ LOG ] :: | options | 21 | 21 | 0 | 0 | 0 | 0 | :: [ 16:34:18 ] :: [ LOG ] :: |-------------+-------+------+------+------+------------+--------| :: [ 16:34:18 ] :: [ LOG ] :: | function | 21 | 21 | 0 | 0 | 0 | 0 | :: [ 16:34:18 ] :: [ LOG ] :: |-------------+-------+------+------+------+------------+--------| :: [ 16:34:18 ] :: [ LOG ] :: | raw | 10 | 10 | 0 | 0 | 0 | 0 | :: [ 16:34:18 ] :: [ LOG ] :: |-------------+-------+------+------+------+------------+--------| :: [ 16:34:18 ] :: [ LOG ] :: | struct | 3 | 3 | 0 | 0 | 0 | 0 | :: [ 16:34:18 ] :: [ LOG ] :: |-------------+-------+------+------+------+------------+--------| :: [ 16:34:18 ] :: [ LOG ] :: | pktinfo | 12 | 12 | 0 | 0 | 0 | 0 | :: [ 16:34:18 ] :: [ LOG ] :: |-------------+-------+------+------+------+------------+--------| :: [ 16:34:18 ] :: [ LOG ] :: | rthdr | 10 | 10 | 0 | 0 | 0 | 0 | :: [ 16:34:18 ] :: [ LOG ] :: |-------------+-------+------+------+------+------------+--------| :: [ 16:34:18 ] :: [ LOG ] :: | hhopt | 7 | 7 | 0 | 0 | 0 | 0 | :: [ 16:34:18 ] :: [ LOG ] :: |-------------+-------+------+------+------+------------+--------| :: [ 16:34:18 ] :: [ LOG ] :: | dstopt | 7 | 7 | 0 | 0 | 0 | 0 | :: [ 16:34:18 ] :: [ LOG ] :: |-------------+-------+------+------+------+------------+--------| :: [ 16:34:18 ] :: [ LOG ] :: | optsprocess | 10 | 10 | 0 | 0 | 0 | 0 | :: [ 16:34:18 ] :: [ LOG ] :: |-------------+-------+------+------+------+------------+--------| :: [ 16:34:18 ] :: [ LOG ] :: | extiface | 1 | 1 | 0 | 0 | 0 | 0 | :: [ 16:34:18 ] :: [ LOG ] :: |-------------+-------+------+------+------+------------+--------| :: [ 16:34:18 ] :: [ LOG ] :: | advanced | 1 | 1 | 0 | 0 | 0 | 0 | :: [ 16:34:18 ] :: [ LOG ] :: |-------------+-------+------+------+------+------------+--------| :: [ 16:34:18 ] :: [ LOG ] :: | compatopt | 12 | 12 | 0 | 0 | 0 | 0 | :: [ 16:34:18 ] :: [ LOG ] :: |-------------+-------+------+------+------+------------+--------| :: [ 16:34:18 ] :: [ LOG ] :: | total | 130 | 130 | 0 | 0 | 0 | 0 | :: [ 16:34:18 ] :: [ LOG ] :: +----------------------------------------------------------------+ :: [ 16:34:18 ] :: [ LOG ] :: ### Please refer to following HTML Format LOG files by elinks command ### :: [ 16:34:18 ] :: [ INFO ] :: Sending report-html.tar.gz as report-html.tar.gz Uploading report-html.tar.gz ..done :: [ 16:34:18 ] :: [ BEGIN ] :: Del ::2 from lo :: actually running 'ip addr del dev lo ::2' :: [ 16:34:18 ] :: [ PASS ] :: Del ::2 from lo (Expected 0, got 0) :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Duration: 0s :: Assertions: 1 good, 0 bad :: RESULT: PASS (Cleanup) ** Cleanup PASS Score:0 Uploading resultoutputfile.log .done :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: unknown :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: [ 16:34:18 ] :: [ LOG ] :: Phases fingerprint: GpTeNtEf :: [ 16:34:19 ] :: [ LOG ] :: Asserts fingerprint: z3CskWbK Uploading journal.xml .done :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Duration: 156s :: Phases: 3 good, 0 bad :: OVERALL RESULT: PASS (unknown) :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: TEST PROTOCOL :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Test run ID : 18 Package : unknown beakerlib RPM : beakerlib-1.29.2-2.el9.noarch bl-redhat RPM : beakerlib-redhat-1-33.el9.noarch Test name : unknown Test started : 2023-01-26 16:31:42 EST Test finished : 2023-01-26 16:34:18 EST Test duration : 157 seconds Distro : CentOS Stream release 9 Hostname : s390x-kvm-041.lab.eng.rdu2.redhat.com Architecture : s390x CPUs : 0 x RAM size : 7517 MB HDD size : 111.96 GB :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Test description :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: IPv6 Sockets API Test Report RFC3493 : Basic Socket Interface Extensions for IPv6 o Interface Identification o Socket Options o Library Functions RFC3542 : Advanced Sockets Application Program Interface (API) for IPv6 o Common Structures and Definitions o IPv6 Raw Sockets o Packet Information o Routing Header Option o Hop-By-Hop Options o Destination Options o Hop-by-Hop and Destination Options Processing o Extended interfaces for rresvport, rcmd and rexec :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Setup :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: [ 16:31:43 ] :: [ PASS ] :: Command 'ip link set dummy_ipv6 up' (Expected 0, got 0) :: [ 16:31:43 ] :: [ PASS ] :: Command 'echo Link0 dummy_ipv6 fe80::1ce9:d6ff:fe58:abc > config.def' (Expected 0, got 0) :: [ 16:31:43 ] :: [ PASS ] :: Compile lib (Expected 0, got 0) :: [ 16:31:43 ] :: [ PASS ] :: Compile bin (Expected 0, got 0) :: [ 16:31:44 ] :: [ PASS ] :: Compile sockin (Expected 0, got 0) :: [ 16:31:44 ] :: [ PASS ] :: Compile ident (Expected 0, got 0) :: [ 16:31:45 ] :: [ PASS ] :: Compile options (Expected 0, got 0) :: [ 16:31:46 ] :: [ PASS ] :: Compile function (Expected 0, got 0) :: [ 16:31:47 ] :: [ PASS ] :: Compile raw (Expected 0, got 0) :: [ 16:31:47 ] :: [ PASS ] :: Compile struct (Expected 0, got 0) :: [ 16:31:48 ] :: [ PASS ] :: Compile pktinfo (Expected 0, got 0) :: [ 16:31:49 ] :: [ PASS ] :: Compile rthdr (Expected 0, got 0) :: [ 16:31:49 ] :: [ PASS ] :: Compile hhopt (Expected 0, got 0) :: [ 16:31:50 ] :: [ PASS ] :: Compile dstopt (Expected 0, got 0) :: [ 16:31:50 ] :: [ PASS ] :: Compile optsprocess (Expected 0, got 0) :: [ 16:31:50 ] :: [ PASS ] :: Compile extiface (Expected 0, got 0) :: [ 16:31:50 ] :: [ PASS ] :: Compile advanced (Expected 0, got 0) :: [ 16:31:51 ] :: [ PASS ] :: Compile compatopt (Expected 0, got 0) :: [ 16:31:51 ] :: [ PASS ] :: Add ::2 to lo (Expected 0, got 0) :: [ 16:31:51 ] :: [ PASS ] :: Load sctp module (Expected 0, got 0) :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Duration: 8s :: Assertions: 20 good, 0 bad :: RESULT: PASS (Setup) :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Test :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: [ 16:31:52 ] :: [ LOG ] :: Execute sockin Test :: [ 16:31:59 ] :: [ LOG ] :: ======Output sockin Test Results====== :: [ 16:31:59 ] :: [ PASS ] :: Case#1 [name:tst_addr_and_pro_family] [log:sockin/1.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:31:59 ] :: [ PASS ] :: Case#2 [name:tst_addr_structure] [log:sockin/2.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:31:59 ] :: [ PASS ] :: Case#3 [name:tst_socket_structure] [log:sockin/3.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:31:59 ] :: [ PASS ] :: Case#4 [name:tst_socket_funcions] [log:sockin/4.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:31:59 ] :: [ PASS ] :: Case#5 [name:tst_with_v4_app] [log:sockin/5.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:31:59 ] :: [ PASS ] :: Case#6 [name:tst_with_v4_nod] [log:sockin/6.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:31:59 ] :: [ PASS ] :: Case#7 [name:tst_wild_addr] [log:sockin/7.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:31:59 ] :: [ PASS ] :: Case#8 [name:tst_lo_addr] [log:sockin/8.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:31:59 ] :: [ PASS ] :: Case#9 [name:tst_pro_additions] [log:sockin/9.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:31:59 ] :: [ LOG ] :: Execute ident Test :: [ 16:32:01 ] :: [ LOG ] :: ======Output ident Test Results====== :: [ 16:32:01 ] :: [ PASS ] :: Case#1 [name:tst_if_name_to_index] [log:ident/1.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:01 ] :: [ PASS ] :: Case#2 [name:tst_if_name_to_index_bad] [log:ident/2.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:02 ] :: [ PASS ] :: Case#3 [name:tst_if_index_to_name] [log:ident/3.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:02 ] :: [ PASS ] :: Case#4 [name:tst_if_index_to_name_bad] [log:ident/4.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:02 ] :: [ PASS ] :: Case#5 [name:tst_if_name_index] [log:ident/5.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:02 ] :: [ PASS ] :: Case#6 [name:tst_if_free_name_index] [log:ident/6.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:02 ] :: [ LOG ] :: Execute options Test :: [ 16:32:24 ] :: [ LOG ] :: ======Output options Test Results====== :: [ 16:32:24 ] :: [ PASS ] :: Case#1 [name:tst_hop_limit_set_to_lt_n1] [log:options/1.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#2 [name:tst_hop_limit_set_to_dafault] [log:options/2.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#3 [name:tst_hop_limit_set_to_valid] [log:options/3.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#4 [name:tst_hop_limit_set_to_gt_255] [log:options/4.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#5 [name:tst_hop_limit_get] [log:options/5.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#6 [name:tst_mcast_if_set] [log:options/6.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#7 [name:tst_mcast_if_get] [log:options/7.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#8 [name:tst_mcast_hops_set_to_lt_n1] [log:options/8.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#9 [name:tst_mcast_hops_set_to_dafault] [log:options/9.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#10 [name:tst_mcast_hops_set_to_valid] [log:options/10.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#11 [name:tst_mcast_hops_set_to_gt_255] [log:options/11.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#12 [name:tst_mcast_hops_get] [log:options/12.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#13 [name:tst_mcast_loop_back] [log:options/13.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#14 [name:tst_mcast_loop_no_back] [log:options/14.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#15 [name:tst_mcast_loop_back_get] [log:options/15.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#16 [name:tst_join_group] [log:options/16.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#17 [name:tst_leave_group] [log:options/17.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#18 [name:tst_v6only_set_client] [log:options/18.html] (Assert: 'PASS' should equal 'PASS') :: [ 16:32:24 ] :: [ PASS ] :: Case#19 [name:tst_v6only_set_msg] [log:options/19.ht