(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SOCK_LOCAL) op: assign_op.Equal rhs: {<unix> <Id.Lit_Colon ':'> <'//commsock1'>} spids: [79] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SOCK_PEER) op: assign_op.Equal rhs: {<unix> <Id.Lit_Colon ':'> <'//commsock2'>} spids: [84] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SOCK_GW1) op: assign_op.Equal rhs: {<unix> <Id.Lit_Colon ':'> <'//commsock3'>} spids: [89] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SOCK_GW2) op: assign_op.Equal rhs: {<unix> <Id.Lit_Colon ':'> <'//commsock4'>} spids: [94] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BUS1) op: assign_op.Equal rhs: {<bus1>} spids: [100] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BUS2) op: assign_op.Equal rhs: {<bus2>} spids: [103] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP6BUS1) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <'/64'>} spids: [106] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP6BUS2) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <2> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <'/64'>} spids: [114] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP6IF0_LOCAL) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <2>} spids: [122] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP6IF0_PEER) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <2> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <2>} spids: [130] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP6IF0_GW1) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} spids: [138] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP6IF1_GW1) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <2> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} spids: [146] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP6IF0_GW2) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <3>} spids: [154] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REDIRECT_TIMEOUT) op: assign_op.Equal rhs: {<5>} spids: [163] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DEBUG) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name DEBUG> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<true>}) ) } spids: [167] ) ] ) (C {<atf_test_case>} {<icmp6_redirect_basic>} {<cleanup>}) (command.ShFunction name: icmp6_redirect_basic_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Test for the basically function of the ICMP6 redirect'>)} ) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <'rump_server rump.route rump.ping rump.ifconfig'>)} ) ] ) ) (command.ShFunction name: icmp6_redirect_basic_body body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'gw1_lladdr0='>}) (C {<local>} {<Id.Lit_VarLike 'gw1_lladdr1='>}) (C {<local>} {<Id.Lit_VarLike 'gw2_lladdr0='>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCK_LOCAL')} {<netinet6>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCK_PEER')} {<netinet6>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCK_GW1')} {<netinet6>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCK_GW2')} {<netinet6>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name SOCK_GW1)}) (C {<rump_server_add_iface>} {($ Id.VSub_DollarName '$SOCK_GW1')} {<shmif0>} {($ Id.VSub_DollarName '$BUS1')} ) (C {<rump_server_add_iface>} {($ Id.VSub_DollarName '$SOCK_GW1')} {<shmif1>} {($ Id.VSub_DollarName '$BUS2')} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<inet6>} {(${ Id.VSub_Name IP6IF0_GW1)} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<up>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif1>} {<inet6>} {(${ Id.VSub_Name IP6IF1_GW1)} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif1>} {<up>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'0.->.1'>)} {<rump.sysctl>} {<-w>} {<net.inet6.ip6.forwarding> <Id.Lit_Equals '='> <1>} ) (C {<unset>} {<RUMP_SERVER>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:gw1_lladdr0) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_linklocal_addr>} {(${ Id.VSub_Name SOCK_GW1)} {<shmif0>}) ) } spids: [411] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:gw1_lladdr1) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_linklocal_addr>} {(${ Id.VSub_Name SOCK_GW1)} {<shmif1>}) ) } spids: [425] ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name SOCK_PEER)}) (C {<rump_server_add_iface>} {($ Id.VSub_DollarName '$SOCK_PEER')} {<shmif0>} {($ Id.VSub_DollarName '$BUS2')} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<inet6>} {(${ Id.VSub_Name IP6IF0_PEER)} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<up>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.route>} {<add>} {<-inet6>} {<default>} {(${ Id.VSub_Name gw1_lladdr1) <Id.Lit_Other '%'> <shmif0>} ) (C {<unset>} {<RUMP_SERVER>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name SOCK_GW2)}) (C {<rump_server_add_iface>} {($ Id.VSub_DollarName '$SOCK_GW2')} {<shmif0>} {($ Id.VSub_DollarName '$BUS1')} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<inet6>} {(${ Id.VSub_Name IP6IF0_GW2)} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<up>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.route>} {<add>} {<-inet6>} {(${ Id.VSub_Name IP6BUS2)} {(${ Id.VSub_Name gw1_lladdr0) <Id.Lit_Other '%'> <shmif0>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'0.->.1'>)} {<rump.sysctl>} {<-w>} {<net.inet6.ip6.forwarding> <Id.Lit_Equals '='> <1>} ) (C {<unset>} {<RUMP_SERVER>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:gw2_lladdr0) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_linklocal_addr>} {(${ Id.VSub_Name SOCK_GW2)} {<shmif0>}) ) } spids: [650] ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name SOCK_LOCAL)}) (C {<rump_server_add_iface>} {($ Id.VSub_DollarName '$SOCK_LOCAL')} {<shmif0>} {($ Id.VSub_DollarName '$BUS1')} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<inet6>} {(${ Id.VSub_Name IP6IF0_LOCAL)} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<up>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.route>} {<add>} {<-inet6>} {<default>} {(${ Id.VSub_Name gw2_lladdr0) <Id.Lit_Other '%'> <shmif0>} ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.route>} {<get>} {<-inet6>} {(${ Id.VSub_Name IP6IF0_PEER)}) ] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.sysctl>} {<-w>} {<net.inet6.icmp6.redirtimeout> <Id.Lit_Equals '='> ($ Id.VSub_DollarName '$REDIRECT_TIMEOUT')} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping6>} {<-c>} {<1>} {<-n>} {(${ Id.VSub_Name IP6IF0_PEER)} ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.route>} {<show>} {<-inet6>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (DQ <'gateway: '> (${ Id.VSub_Name gw1_lladdr0))} {<rump.route>} {<get>} {<-inet6>} {(${ Id.VSub_Name IP6IF0_PEER)} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<sleep>} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: <Id.Lit_ArithVarLike REDIRECT_TIMEOUT> right: {<Id.Lit_Digits 2>} ) ) } ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.route>} {<show>} {<-inet6>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<not-match> <Id.Lit_Colon ':'> (DQ <'gateway: '> (${ Id.VSub_Name gw1_lladdr0))} {<rump.route>} {<get>} {<-inet6>} {(${ Id.VSub_Name IP6IF0_PEER)} ) (C {<rump_server_destroy_ifaces>}) ] ) ) (command.ShFunction name: icmp6_redirect_basic_cleanup body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump>})] ) (C {<cleanup>}) ] ) ) (command.ShFunction name: atf_init_test_cases body: (BraceGroup children:[(C {<atf_add_test_case>} {<icmp6_redirect_basic>})]) ) ] )