(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RUMPSRV) op: assign_op.Equal rhs: {<unix> <Id.Lit_Colon ':'> <'//r1'>} spids: [79] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RUMPSRV1_2) op: assign_op.Equal rhs: {<unix> <Id.Lit_Colon ':'> <'//r12'>} spids: [84] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RUMPCLI) op: assign_op.Equal rhs: {<unix> <Id.Lit_Colon ':'> <'//r2'>} spids: [89] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RUMPSRV3) op: assign_op.Equal rhs: {<unix> <Id.Lit_Colon ':'> <'//r3'>} spids: [94] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RUMPSRV4) op: assign_op.Equal rhs: {<unix> <Id.Lit_Colon ':'> <'//r4'>} spids: [99] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP6SRV) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} spids: [104] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP6SRV1_2) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <2>} spids: [112] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP6SRV_PREFIX) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'>} spids: [120] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP6CLI) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <2> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <2>} spids: [126] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP6SRV3) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <3> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} spids: [134] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP6SRV3_PREFIX) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <3> <Id.Lit_Colon ':'>} spids: [142] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP6SRV4) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <4> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} spids: [148] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP6SRV4_PREFIX) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <4> <Id.Lit_Colon ':'>} spids: [156] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PIDFILE) op: assign_op.Equal rhs: {<'./rump.rtadvd.pid'>} spids: [162] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PIDFILE1_2) op: assign_op.Equal rhs: {<'./rump.rtadvd.pid12'>} spids: [165] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PIDFILE3) op: assign_op.Equal rhs: {<'./rump.rtadvd.pid3'>} spids: [168] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PIDFILE4) op: assign_op.Equal rhs: {<'./rump.rtadvd.pid4'>} spids: [171] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CONFIG) op: assign_op.Equal rhs: {<'./rtadvd.conf'>} spids: [174] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WAITTIME) op: assign_op.Equal rhs: {<2>} spids: [177] ) ] ) (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: [180] ) ] ) (command.ShFunction name: init_server body: (BraceGroup children: [ (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_Number '$1')}) (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 {<export>} {<Id.Lit_VarLike 'LD_PRELOAD='> <'/usr/lib/librumphijack.so'>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<mkdir>} {<-p>} {<'/rump/var/chroot/rtadvd'>} ) (C {<unset>} {<LD_PRELOAD>}) (C {<unset>} {<RUMP_SERVER>}) ] ) ) (command.ShFunction name: setup_shmif0 body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'sock='> ($ Id.VSub_Number '$1')}) (C {<local>} {<Id.Lit_VarLike 'IP6ADDR='> ($ Id.VSub_Number '$2')}) (C {<rump_server_add_iface>} {($ Id.VSub_DollarName '$sock')} {<shmif0>} {<bus1>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$sock')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<inet6>} {(${ Id.VSub_Name IP6ADDR)} ) (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>} {<-w>} {<10>} ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.ifconfig>})] ) ] ) ) (command.ShFunction name: wait_term body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'PIDFILE='> (${ Id.VSub_Number 1)}) (C {<shift>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name PIDFILE)} {<Id.Lit_RBracket ']'>}) ] ) body: (command.DoGroup children:[(C {<sleep>} {<0.2>})]) ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] ) ) (command.ShFunction name: create_rtadvdconfig body: (BraceGroup children: [ (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<_EOF>} here_end_span_id: 430 stdin_parts: [<'shmif0:'> <'\t:mtu#1300:maxinterval#4:mininterval#3:\n'>] ) ) (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name CONFIG)} ) ] do_fork: T ) ] ) ) (command.ShFunction name: start_rtadvd body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'sock='> ($ Id.VSub_Number '$1')}) (C {<local>} {<Id.Lit_VarLike 'pidfile='> ($ Id.VSub_Number '$2')}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$sock')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.rtadvd>} {<-c>} {(${ Id.VSub_Name CONFIG)} {<-p>} {($ Id.VSub_DollarName '$pidfile')} {<shmif0>} ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {($ Id.VSub_DollarName '$pidfile')} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children:[(C {<sleep>} {<0.2>})]) ) (C {<unset>} {<RUMP_SERVER>}) ] ) ) (command.ShFunction name: check_entries body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'cli='> ($ Id.VSub_Number '$1')}) (C {<local>} {<Id.Lit_VarLike 'srv='> ($ Id.VSub_Number '$2')}) (C {<local>} {<Id.Lit_VarLike 'addr_prefix='> ($ Id.VSub_Number '$3')}) (C {<local>} {<Id.Lit_VarLike 'mac_srv='>} {<Id.Lit_VarLike 'll_srv='>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ll_srv) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<get_linklocal_addr>} {($ Id.VSub_DollarName '$srv')} {<shmif0>}) ) } spids: [547] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:mac_srv) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<get_macaddr>} {($ Id.VSub_DollarName '$srv')} {<shmif0>}) ) } spids: [557] ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$cli')}) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump_entries>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'if=shmif0'>)} {<rump.ndp>} {<-r>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <advertised>)} {<rump.ndp>} {<-p>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (DQ (${ Id.VSub_Name ll_srv) <'%shmif0 '> <Id.Lit_BadBackslash '\\'> <'(reachable'> <Id.Lit_BadBackslash '\\'> <')'> ) } {<rump.ndp>} {<-p>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'linkmtu=1300'>)} {<rump.ndp>} {<-n>} {<-i>} {<shmif0>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$ll_srv') <'%shmif0 +'> ($ Id.VSub_DollarName '$mac_srv') <' +shmif0 +(23h59m|1d0h0m)..s S R'> ) } {<rump.ndp>} {<-n>} {<-a>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$addr_prefix')} {<rump.ndp>} {<-n>} {<-a>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$addr_prefix') <'.+<(TENTATIVE,)?AUTOCONF>'>) } {<rump.ifconfig>} {<shmif0>} {<inet6>} ) (C {<unset>} {<RUMP_SERVER>}) ] ) ) (command.ShFunction name: dump_entries body: (BraceGroup children: [ (C {<echo>} {<ndp>} {<-n>} {<-a>}) (C {<rump.ndp>} {<-n>} {<-a>}) (C {<echo>} {<ndp>} {<-p>}) (C {<rump.ndp>} {<-p>}) (C {<echo>} {<ndp>} {<-r>}) (C {<rump.ndp>} {<-r>}) ] ) ) (C {<atf_test_case>} {<ra_basic>} {<cleanup>}) (command.ShFunction name: ra_basic_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Tests for basic functions of router advaertisement(RA)'>)} ) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <'rump_server rump.rtadvd rump.ndp rump.ifconfig'>)} ) ] ) ) (command.ShFunction name: ra_basic_body body: (BraceGroup children: [ (C {<rump_server_fs_start>} {($ Id.VSub_DollarName '$RUMPSRV')} {<netinet6>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$RUMPCLI')} {<netinet6>}) (C {<setup_shmif0>} {(${ Id.VSub_Name RUMPSRV)} {(${ Id.VSub_Name IP6SRV)}) (C {<init_server>} {($ Id.VSub_DollarName '$RUMPSRV')}) (C {<setup_shmif0>} {(${ Id.VSub_Name RUMPCLI)} {(${ Id.VSub_Name IP6CLI)}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name RUMPCLI)}) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.ndp>} {<-n>} {<-a>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'= 0'>)} {<rump.sysctl>} {<net.inet6.ip6.accept_rtadv>} ) (C {<unset>} {<RUMP_SERVER>}) (C {<create_rtadvdconfig>}) (C {<start_rtadvd>} {($ Id.VSub_DollarName '$RUMPSRV')} {($ Id.VSub_DollarName '$PIDFILE')}) (C {<sleep>} {($ Id.VSub_DollarName '$WAITTIME')}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name RUMPCLI)}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<empty>} {<rump.ndp>} {<-r>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<not-match> <Id.Lit_Colon ':'> (SQ <advertised>)} {<rump.ndp>} {<-p>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'linkmtu=0'>)} {<rump.ndp>} {<-n>} {<-i>} {<shmif0>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<not-match> <Id.Lit_Colon ':'> (SQ <'S R'>)} {<rump.ndp>} {<-n>} {<-a>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<not-match> <Id.Lit_Colon ':'> (SQ <'fc00:1:'>)} {<rump.ndp>} {<-n>} {<-a>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<not-match> <Id.Lit_Colon ':'> (SQ <'fc00:1:'>)} {<rump.ifconfig>} {<shmif0>} {<inet6>} ) (C {<unset>} {<RUMP_SERVER>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<kill>} {<-TERM>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE)}) ) } ) (C {<wait_term>} {(${ Id.VSub_Name PIDFILE)}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name RUMPCLI)}) (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.accept_rtadv> <Id.Lit_Equals '='> <1>} ) (C {<unset>} {<RUMP_SERVER>}) (C {<start_rtadvd>} {($ Id.VSub_DollarName '$RUMPSRV')} {($ Id.VSub_DollarName '$PIDFILE')}) (C {<sleep>} {($ Id.VSub_DollarName '$WAITTIME')}) (C {<check_entries>} {($ Id.VSub_DollarName '$RUMPCLI')} {($ Id.VSub_DollarName '$RUMPSRV')} {($ Id.VSub_DollarName '$IP6SRV_PREFIX')} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<kill>} {<-TERM>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE)}) ) } ) (C {<wait_term>} {(${ Id.VSub_Name PIDFILE)}) (C {<rump_server_destroy_ifaces>}) ] ) ) (command.ShFunction name: ra_basic_cleanup body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name PIDFILE)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<kill>} {<-TERM>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE)}) ) } ) (C {<wait_term>} {(${ Id.VSub_Name PIDFILE)}) ] spids: [1246 1259] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump>})] ) (C {<cleanup>}) ] ) ) (C {<atf_test_case>} {<ra_flush_prefix_entries>} {<cleanup>}) (command.ShFunction name: ra_flush_prefix_entries_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Tests for flushing prefixes (ndp -P)'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <'rump_server rump.rtadvd rump.ndp rump.ifconfig'>)} ) ] ) ) (command.ShFunction name: ra_flush_prefix_entries_body body: (BraceGroup children: [ (C {<rump_server_fs_start>} {($ Id.VSub_DollarName '$RUMPSRV')} {<netinet6>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$RUMPCLI')} {<netinet6>}) (C {<setup_shmif0>} {(${ Id.VSub_Name RUMPSRV)} {(${ Id.VSub_Name IP6SRV)}) (C {<setup_shmif0>} {(${ Id.VSub_Name RUMPCLI)} {(${ Id.VSub_Name IP6CLI)}) (C {<init_server>} {($ Id.VSub_DollarName '$RUMPSRV')}) (C {<create_rtadvdconfig>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name RUMPCLI)}) (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.accept_rtadv> <Id.Lit_Equals '='> <1>} ) (C {<unset>} {<RUMP_SERVER>}) (C {<start_rtadvd>} {($ Id.VSub_DollarName '$RUMPSRV')} {($ Id.VSub_DollarName '$PIDFILE')}) (C {<sleep>} {($ Id.VSub_DollarName '$WAITTIME')}) (C {<check_entries>} {($ Id.VSub_DollarName '$RUMPCLI')} {($ Id.VSub_DollarName '$RUMPSRV')} {($ Id.VSub_DollarName '$IP6SRV_PREFIX')} ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name RUMPCLI)}) (C {<kill>} {<-KILL>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE)}) ) } ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ndp>} {<-P>} ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump_entries>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'if=shmif0'>)} {<rump.ndp>} {<-r>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<empty>} {<rump.ndp>} {<-p>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'linkmtu=1300'>)} {<rump.ndp>} {<-n>} {<-i>} {<shmif0>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'(23h59m|1d0h0m)..s S R'>)} {<rump.ndp>} {<-n>} {<-a>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'fc00:1:'>)} {<rump.ndp>} {<-n>} {<-a>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<not-match> <Id.Lit_Colon ':'> (SQ <'fc00:1:'>)} {<rump.ifconfig>} {<shmif0>} {<inet6>} ) (C {<unset>} {<RUMP_SERVER>}) (C {<rump_server_destroy_ifaces>}) ] ) ) (command.ShFunction name: ra_flush_prefix_entries_cleanup body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump>})] ) (C {<cleanup>}) ] ) ) (C {<atf_test_case>} {<ra_flush_defrouter_entries>} {<cleanup>}) (command.ShFunction name: ra_flush_defrouter_entries_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Tests for flushing default routers (ndp -R)'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <'rump_server rump.rtadvd rump.ndp rump.ifconfig'>)} ) ] ) ) (command.ShFunction name: ra_flush_defrouter_entries_body body: (BraceGroup children: [ (C {<rump_server_fs_start>} {($ Id.VSub_DollarName '$RUMPSRV')} {<netinet6>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$RUMPCLI')} {<netinet6>}) (C {<setup_shmif0>} {(${ Id.VSub_Name RUMPSRV)} {(${ Id.VSub_Name IP6SRV)}) (C {<setup_shmif0>} {(${ Id.VSub_Name RUMPCLI)} {(${ Id.VSub_Name IP6CLI)}) (C {<init_server>} {($ Id.VSub_DollarName '$RUMPSRV')}) (C {<create_rtadvdconfig>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name RUMPCLI)}) (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.accept_rtadv> <Id.Lit_Equals '='> <1>} ) (C {<unset>} {<RUMP_SERVER>}) (C {<start_rtadvd>} {($ Id.VSub_DollarName '$RUMPSRV')} {($ Id.VSub_DollarName '$PIDFILE')}) (C {<sleep>} {($ Id.VSub_DollarName '$WAITTIME')}) (C {<check_entries>} {($ Id.VSub_DollarName '$RUMPCLI')} {($ Id.VSub_DollarName '$RUMPSRV')} {($ Id.VSub_DollarName '$IP6SRV_PREFIX')} ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name RUMPCLI)}) (C {<kill>} {<-KILL>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE)}) ) } ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ndp>} {<-R>} ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump_entries>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<empty>} {<rump.ndp>} {<-r>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'No advertising router'>)} {<rump.ndp>} {<-p>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'linkmtu=1300'>)} {<rump.ndp>} {<-n>} {<-i>} {<shmif0>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'(23h59m|1d0h0m)..s S R'>)} {<rump.ndp>} {<-n>} {<-a>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'fc00:1:'>)} {<rump.ndp>} {<-n>} {<-a>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'fc00:1:'>)} {<rump.ifconfig>} {<shmif0>} {<inet6>} ) (C {<unset>} {<RUMP_SERVER>}) (C {<rump_server_destroy_ifaces>}) ] ) ) (command.ShFunction name: ra_flush_defrouter_entries_cleanup body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump>})] ) (C {<cleanup>}) ] ) ) (C {<atf_test_case>} {<ra_delete_address>} {<cleanup>}) (command.ShFunction name: ra_delete_address_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Tests for deleting auto-configured address'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <'rump_server rump.rtadvd rump.ndp rump.ifconfig'>)} ) ] ) ) (command.ShFunction name: ra_delete_address_body body: (BraceGroup children: [ (C {<rump_server_fs_start>} {($ Id.VSub_DollarName '$RUMPSRV')} {<netinet6>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$RUMPCLI')} {<netinet6>}) (C {<setup_shmif0>} {(${ Id.VSub_Name RUMPSRV)} {(${ Id.VSub_Name IP6SRV)}) (C {<setup_shmif0>} {(${ Id.VSub_Name RUMPCLI)} {(${ Id.VSub_Name IP6CLI)}) (C {<init_server>} {($ Id.VSub_DollarName '$RUMPSRV')}) (C {<create_rtadvdconfig>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name RUMPCLI)}) (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.accept_rtadv> <Id.Lit_Equals '='> <1>} ) (C {<unset>} {<RUMP_SERVER>}) (C {<start_rtadvd>} {($ Id.VSub_DollarName '$RUMPSRV')} {($ Id.VSub_DollarName '$PIDFILE')}) (C {<sleep>} {($ Id.VSub_DollarName '$WAITTIME')}) (C {<check_entries>} {($ Id.VSub_DollarName '$RUMPCLI')} {($ Id.VSub_DollarName '$RUMPSRV')} {($ Id.VSub_DollarName '$IP6SRV_PREFIX')} ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name RUMPCLI)}) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.ifconfig>} {<shmif0>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<inet6>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<rump.ifconfig>} {<shmif0>}) (C {<awk>} {(SQ <'/AUTOCONF/ {print $2}'>)}) ] negated: F ) ) } {<delete>} ) (C {<unset>} {<RUMP_SERVER>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<kill>} {<-TERM>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE)}) ) } ) (C {<wait_term>} {(${ Id.VSub_Name PIDFILE)}) (C {<rump_server_destroy_ifaces>}) ] ) ) (command.ShFunction name: ra_delete_address_cleanup body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name PIDFILE)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<kill>} {<-TERM>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE)}) ) } ) (C {<wait_term>} {(${ Id.VSub_Name PIDFILE)}) ] spids: [2309 2322] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump>})] ) (C {<cleanup>}) ] ) ) (C {<atf_test_case>} {<ra_multiple_routers>} {<cleanup>}) (command.ShFunction name: ra_multiple_routers_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Tests for multiple routers'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <'rump_server rump.rtadvd rump.ndp rump.ifconfig'>)} ) ] ) ) (command.ShFunction name: ra_multiple_routers_body body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'n='>}) (C {<rump_server_fs_start>} {($ Id.VSub_DollarName '$RUMPSRV')} {<netinet6>}) (C {<rump_server_fs_start>} {($ Id.VSub_DollarName '$RUMPSRV3')} {<netinet6>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$RUMPCLI')} {<netinet6>}) (C {<setup_shmif0>} {(${ Id.VSub_Name RUMPSRV)} {(${ Id.VSub_Name IP6SRV)}) (C {<setup_shmif0>} {(${ Id.VSub_Name RUMPSRV3)} {(${ Id.VSub_Name IP6SRV3)}) (C {<setup_shmif0>} {(${ Id.VSub_Name RUMPCLI)} {(${ Id.VSub_Name IP6CLI)}) (C {<init_server>} {($ Id.VSub_DollarName '$RUMPSRV')}) (C {<init_server>} {($ Id.VSub_DollarName '$RUMPSRV3')}) (C {<create_rtadvdconfig>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name RUMPCLI)}) (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.accept_rtadv> <Id.Lit_Equals '='> <1>} ) (C {<unset>} {<RUMP_SERVER>}) (C {<start_rtadvd>} {($ Id.VSub_DollarName '$RUMPSRV')} {($ Id.VSub_DollarName '$PIDFILE')}) (C {<start_rtadvd>} {($ Id.VSub_DollarName '$RUMPSRV3')} {($ Id.VSub_DollarName '$PIDFILE3')} ) (C {<sleep>} {($ Id.VSub_DollarName '$WAITTIME')}) (C {<check_entries>} {($ Id.VSub_DollarName '$RUMPCLI')} {($ Id.VSub_DollarName '$RUMPSRV')} {($ Id.VSub_DollarName '$IP6SRV_PREFIX')} ) (C {<check_entries>} {($ Id.VSub_DollarName '$RUMPCLI')} {($ Id.VSub_DollarName '$RUMPSRV3')} {($ Id.VSub_DollarName '$IP6SRV3_PREFIX')} ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$RUMPCLI')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:n) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<rump.ndp>} {<-p>}) (C {<grep>} {(SQ <'advertised by'>)}) (C {<wc>} {<-l>}) ] negated: F ) ) } spids: [2573] ) ] ) (C {<atf_check_equal>} {($ Id.VSub_DollarName '$n')} {<2>}) (C {<unset>} {<RUMP_SERVER>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<kill>} {<-TERM>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE)}) ) } ) (C {<wait_term>} {(${ Id.VSub_Name PIDFILE)}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<kill>} {<-TERM>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE3)}) ) } ) (C {<wait_term>} {(${ Id.VSub_Name PIDFILE3)}) (C {<rump_server_destroy_ifaces>}) ] ) ) (command.ShFunction name: ra_multiple_routers_cleanup body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name PIDFILE)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<kill>} {<-TERM>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE)}) ) } ) (C {<wait_term>} {(${ Id.VSub_Name PIDFILE)}) ] spids: [2680 2693] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name PIDFILE3)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<kill>} {<-TERM>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE3)}) ) } ) (C {<wait_term>} {(${ Id.VSub_Name PIDFILE3)}) ] spids: [2721 2734] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump>})] ) (C {<cleanup>}) ] ) ) (C {<atf_test_case>} {<ra_multiple_routers_single_prefix>} {<cleanup>}) (command.ShFunction name: ra_multiple_routers_single_prefix_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Tests for multiple routers with a single prefix'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <'rump_server rump.rtadvd rump.ndp rump.ifconfig'>)} ) ] ) ) (command.ShFunction name: ra_multiple_routers_single_prefix_body body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'n='>}) (C {<rump_server_fs_start>} {($ Id.VSub_DollarName '$RUMPSRV')} {<netinet6>}) (C {<rump_server_fs_start>} {($ Id.VSub_DollarName '$RUMPSRV1_2')} {<netinet6>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$RUMPCLI')} {<netinet6>}) (C {<setup_shmif0>} {(${ Id.VSub_Name RUMPSRV)} {(${ Id.VSub_Name IP6SRV)}) (C {<setup_shmif0>} {(${ Id.VSub_Name RUMPSRV1_2)} {(${ Id.VSub_Name IP6SRV1_2)}) (C {<setup_shmif0>} {(${ Id.VSub_Name RUMPCLI)} {(${ Id.VSub_Name IP6CLI)}) (C {<init_server>} {($ Id.VSub_DollarName '$RUMPSRV')}) (C {<init_server>} {($ Id.VSub_DollarName '$RUMPSRV1_2')}) (C {<create_rtadvdconfig>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name RUMPCLI)}) (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.accept_rtadv> <Id.Lit_Equals '='> <1>} ) (C {<unset>} {<RUMP_SERVER>}) (C {<start_rtadvd>} {($ Id.VSub_DollarName '$RUMPSRV')} {($ Id.VSub_DollarName '$PIDFILE')}) (C {<start_rtadvd>} {($ Id.VSub_DollarName '$RUMPSRV1_2')} {($ Id.VSub_DollarName '$PIDFILE1_2')} ) (C {<sleep>} {($ Id.VSub_DollarName '$WAITTIME')}) (C {<check_entries>} {($ Id.VSub_DollarName '$RUMPCLI')} {($ Id.VSub_DollarName '$RUMPSRV')} {($ Id.VSub_DollarName '$IP6SRV_PREFIX')} ) (C {<check_entries>} {($ Id.VSub_DollarName '$RUMPCLI')} {($ Id.VSub_DollarName '$RUMPSRV1_2')} {($ Id.VSub_DollarName '$IP6SRV_PREFIX')} ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$RUMPCLI')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:n) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<rump.ndp>} {<-p>}) (C {<grep>} {(SQ <'advertised by'>)}) (C {<wc>} {<-l>}) ] negated: F ) ) } spids: [2985] ) ] ) (C {<atf_check_equal>} {($ Id.VSub_DollarName '$n')} {<1>}) (C {<unset>} {<RUMP_SERVER>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<kill>} {<-TERM>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE)}) ) } ) (C {<wait_term>} {(${ Id.VSub_Name PIDFILE)}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<kill>} {<-TERM>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE1_2)}) ) } ) (C {<wait_term>} {(${ Id.VSub_Name PIDFILE1_2)}) (C {<rump_server_destroy_ifaces>}) ] ) ) (command.ShFunction name: ra_multiple_routers_single_prefix_cleanup body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name PIDFILE)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<kill>} {<-TERM>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE)}) ) } ) (C {<wait_term>} {(${ Id.VSub_Name PIDFILE)}) ] spids: [3092 3105] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name PIDFILE1_2)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<kill>} {<-TERM>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE1_2)}) ) } ) (C {<wait_term>} {(${ Id.VSub_Name PIDFILE1_2)}) ] spids: [3133 3146] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump>})] ) (C {<cleanup>}) ] ) ) (C {<atf_test_case>} {<ra_multiple_routers_maxifprefixes>} {<cleanup>}) (command.ShFunction name: ra_multiple_routers_maxifprefixes_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Tests for exceeding the number of maximum prefixes'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <'rump_server rump.rtadvd rump.ndp rump.ifconfig'>)} ) ] ) ) (command.ShFunction name: ra_multiple_routers_maxifprefixes_body body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'n='>}) (C {<rump_server_fs_start>} {($ Id.VSub_DollarName '$RUMPSRV')} {<netinet6>}) (C {<rump_server_fs_start>} {($ Id.VSub_DollarName '$RUMPSRV3')} {<netinet6>}) (C {<rump_server_fs_start>} {($ Id.VSub_DollarName '$RUMPSRV4')} {<netinet6>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$RUMPCLI')} {<netinet6>}) (C {<setup_shmif0>} {(${ Id.VSub_Name RUMPSRV)} {(${ Id.VSub_Name IP6SRV)}) (C {<setup_shmif0>} {(${ Id.VSub_Name RUMPSRV3)} {(${ Id.VSub_Name IP6SRV3)}) (C {<setup_shmif0>} {(${ Id.VSub_Name RUMPSRV4)} {(${ Id.VSub_Name IP6SRV4)}) (C {<setup_shmif0>} {(${ Id.VSub_Name RUMPCLI)} {(${ Id.VSub_Name IP6CLI)}) (C {<init_server>} {($ Id.VSub_DollarName '$RUMPSRV')}) (C {<init_server>} {($ Id.VSub_DollarName '$RUMPSRV3')}) (C {<init_server>} {($ Id.VSub_DollarName '$RUMPSRV4')}) (C {<create_rtadvdconfig>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name RUMPCLI)}) (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.accept_rtadv> <Id.Lit_Equals '='> <1>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'16.->.2'>)} {<rump.sysctl>} {<-w>} {<net.inet6.ip6.maxifprefixes> <Id.Lit_Equals '='> <2>} ) (C {<unset>} {<RUMP_SERVER>}) (C {<start_rtadvd>} {($ Id.VSub_DollarName '$RUMPSRV')} {($ Id.VSub_DollarName '$PIDFILE')}) (C {<start_rtadvd>} {($ Id.VSub_DollarName '$RUMPSRV3')} {($ Id.VSub_DollarName '$PIDFILE3')} ) (C {<sleep>} {($ Id.VSub_DollarName '$WAITTIME')}) (C {<check_entries>} {($ Id.VSub_DollarName '$RUMPCLI')} {($ Id.VSub_DollarName '$RUMPSRV')} {($ Id.VSub_DollarName '$IP6SRV_PREFIX')} ) (C {<check_entries>} {($ Id.VSub_DollarName '$RUMPCLI')} {($ Id.VSub_DollarName '$RUMPSRV3')} {($ Id.VSub_DollarName '$IP6SRV3_PREFIX')} ) (C {<start_rtadvd>} {($ Id.VSub_DollarName '$RUMPSRV4')} {($ Id.VSub_DollarName '$PIDFILE4')} ) (C {<sleep>} {($ Id.VSub_DollarName '$WAITTIME')}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name RUMPCLI)}) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump_entries>})] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:n) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<rump.ndp>} {<-p>}) (C {<grep>} {(SQ <'advertised by'>)}) (C {<wc>} {<-l>}) ] negated: F ) ) } spids: [3475] ) ] ) (C {<atf_check_equal>} {($ Id.VSub_DollarName '$n')} {<2>}) (C {<unset>} {<RUMP_SERVER>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<kill>} {<-TERM>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE)}) ) } ) (C {<wait_term>} {(${ Id.VSub_Name PIDFILE)}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<kill>} {<-TERM>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE3)}) ) } ) (C {<wait_term>} {(${ Id.VSub_Name PIDFILE3)}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<kill>} {<-TERM>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE4)}) ) } ) (C {<wait_term>} {(${ Id.VSub_Name PIDFILE4)}) (C {<rump_server_destroy_ifaces>}) ] ) ) (command.ShFunction name: ra_multiple_routers_maxifprefixes_cleanup body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name PIDFILE)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<kill>} {<-TERM>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE)}) ) } ) (C {<wait_term>} {(${ Id.VSub_Name PIDFILE)}) ] spids: [3616 3629] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name PIDFILE3)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<kill>} {<-TERM>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE3)}) ) } ) (C {<wait_term>} {(${ Id.VSub_Name PIDFILE3)}) ] spids: [3657 3670] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name PIDFILE4)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<kill>} {<-TERM>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE4)}) ) } ) (C {<wait_term>} {(${ Id.VSub_Name PIDFILE4)}) ] spids: [3698 3711] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump>})] ) (C {<cleanup>}) ] ) ) (C {<atf_test_case>} {<ra_temporary_address>} {<cleanup>}) (command.ShFunction name: ra_temporary_address_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Tests for IPv6 temporary address'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <'rump_server rump.rtadvd rump.ndp rump.ifconfig'>)} ) ] ) ) (command.ShFunction name: check_echo_request_pkt body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'pkt='> (DQ ($ Id.VSub_Number '$2') <' > '> ($ Id.VSub_Number '$3') <': .+ echo request'>) } ) (command.Simple words: [{<extract_new_packets>} {($ Id.VSub_Number '$1')}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./out'>})] do_fork: T ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {($ Id.VSub_DollarName '$DEBUG')}) (C {<echo>} {($ Id.VSub_DollarName '$pkt')}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<cat>} {<'./out'>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$pkt'))} {<cat>} {<'./out'>} ) ] ) ) (command.ShFunction name: ra_temporary_address_body body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'ip_auto='>} {<Id.Lit_VarLike 'ip_temp='>}) (C {<rump_server_fs_start>} {($ Id.VSub_DollarName '$RUMPSRV')} {<netinet6>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$RUMPCLI')} {<netinet6>}) (C {<setup_shmif0>} {($ Id.VSub_DollarName '$RUMPSRV')} {($ Id.VSub_DollarName '$IP6SRV')}) (C {<init_server>} {($ Id.VSub_DollarName '$RUMPSRV')}) (C {<setup_shmif0>} {($ Id.VSub_DollarName '$RUMPCLI')} {($ Id.VSub_DollarName '$IP6CLI')}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$RUMPCLI')}) (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.accept_rtadv> <Id.Lit_Equals '='> <1>} ) (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.use_tempaddr> <Id.Lit_Equals '='> <1>} ) (C {<unset>} {<RUMP_SERVER>}) (C {<create_rtadvdconfig>}) (C {<start_rtadvd>} {($ Id.VSub_DollarName '$RUMPSRV')} {($ Id.VSub_DollarName '$PIDFILE')}) (C {<sleep>} {($ Id.VSub_DollarName '$WAITTIME')}) (C {<check_entries>} {($ Id.VSub_DollarName '$RUMPCLI')} {($ Id.VSub_DollarName '$RUMPSRV')} {($ Id.VSub_DollarName '$IP6SRV_PREFIX')} ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$RUMPCLI')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$IP6SRV_PREFIX') <'.+<(TENTATIVE,)?AUTOCONF,TEMPORARY>'>) } {<rump.ifconfig>} {<shmif0>} {<inet6>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<-w>} {<10>} ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.ifconfig>} {<shmif0>})] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ip_auto) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<rump.ifconfig>} {<shmif0>}) (C {<awk>} {(SQ <'/<AUTOCONF>/ {sub(/\\/[0-9]*/, ""); print $2;}'>)}) ] negated: F ) ) } spids: [4077] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ip_temp) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<rump.ifconfig>} {<shmif0>}) (C {<awk>} {(SQ <'/<AUTOCONF,TEMPORARY>/ {sub(/\\/[0-9]*/, ""); print $2;}'>)} ) ] negated: F ) ) } spids: [4092] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {($ Id.VSub_DollarName '$DEBUG')}) (C {<echo>} {($ Id.VSub_DollarName '$ip_auto')} {($ Id.VSub_DollarName '$ip_temp')}) ] ) (command.Simple words: [{<extract_new_packets>} {<bus1>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})] do_fork: T ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping6>} {<-n>} {<-X>} {<2>} {<-c>} {<1>} {($ Id.VSub_DollarName '$IP6SRV')} ) (C {<check_echo_request_pkt>} {<bus1>} {($ Id.VSub_DollarName '$ip_auto')} {($ Id.VSub_DollarName '$IP6SRV')} ) (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.prefer_tempaddr> <Id.Lit_Equals '='> <1>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping6>} {<-n>} {<-X>} {<2>} {<-c>} {<1>} {($ Id.VSub_DollarName '$IP6SRV')} ) (C {<check_echo_request_pkt>} {<bus1>} {($ Id.VSub_DollarName '$ip_temp')} {($ Id.VSub_DollarName '$IP6SRV')} ) (C {<unset>} {<RUMP_SERVER>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<kill>} {<-TERM>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE)}) ) } ) (C {<wait_term>} {($ Id.VSub_DollarName '$PIDFILE')}) (C {<rump_server_destroy_ifaces>}) ] ) ) (command.ShFunction name: ra_temporary_address_cleanup body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(${ Id.VSub_Name PIDFILE)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<kill>} {<-TERM>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {(${ Id.VSub_Name PIDFILE)}) ) } ) (C {<wait_term>} {(${ Id.VSub_Name PIDFILE)}) ] spids: [4295 4308] ) ] ) (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>} {<ra_basic>}) (C {<atf_add_test_case>} {<ra_flush_prefix_entries>}) (C {<atf_add_test_case>} {<ra_flush_defrouter_entries>}) (C {<atf_add_test_case>} {<ra_delete_address>}) (C {<atf_add_test_case>} {<ra_multiple_routers>}) (C {<atf_add_test_case>} {<ra_multiple_routers_single_prefix>}) (C {<atf_add_test_case>} {<ra_multiple_routers_maxifprefixes>}) (C {<atf_add_test_case>} {<ra_temporary_address>}) ] ) ) ] )