(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:netserver) op: assign_op.Equal rhs: { (DQ <'rump_server -lrumpdev -lrumpnet -lrumpnet_net '> <'\t-lrumpnet_netinet -lrumpnet_shmif'> ) } spids: [79] ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> <unix> <Id.Lit_Colon ':'> <'//commsock'>}) (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:{<false>}) ) } spids: [95] ) ] ) (C {<atf_test_case>} {<route_change_reject2blackhole>} {<cleanup>}) (command.ShFunction name: route_change_reject2blackhole_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Change a reject route to blackhole'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}) ] ) ) (command.ShFunction name: route_change_reject2blackhole_body body: (BraceGroup children: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {(${ Id.VSub_Name netserver)} {(${ Id.VSub_Name RUMP_SERVER)} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.route>} {<add>} {<207.46.197.32>} {<127.0.0.1>} {<-reject>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> <UGHR>} {<-x>} {(DQ <'rump.route -n show -inet | grep ^207.46'>)} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.route>} {<change>} {<207.46.197.32>} {<127.0.0.1>} {<-blackhole>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <' UGHBS '>)} {<-e>} {<ignore>} {<-x>} {(DQ <'rump.netstat -rn -f inet | grep ^207.46'>)} ) ] ) ) (command.ShFunction name: route_change_reject2blackhole_cleanup body: (BraceGroup children: [ (C {<env>} {<Id.Lit_VarLike 'RUMP_SERVER='> <unix> <Id.Lit_Colon ':'> <'//commsock'>} {<rump.halt>} ) ] ) ) (C {<atf_test_case>} {<route_change_gateway>} {<cleanup>}) (command.ShFunction name: route_change_gateway_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Change the gateway of a route'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}) ] ) ) (command.ShFunction name: route_change_gateway_body body: (BraceGroup children: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {(${ Id.VSub_Name netserver)} {(${ Id.VSub_Name RUMP_SERVER)} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<create>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<linkstr>} {<bus>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<'10.0.0.10/24'>} {<up>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.route>} {<add>} {<-net>} {<'192.168.0.0/24'>} {<10.0.0.1>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <10.0.0.1>)} {<-x>} {(DQ <'rump.route -n show -inet | grep ^192.168'>)} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.route>} {<change>} {<-net>} {<'192.168.0.0/24'>} {<10.0.0.254>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <10.0.0.254>)} {<-x>} {(DQ <'rump.route -n show -inet | grep ^192.168'>)} ) ] ) ) (command.ShFunction name: route_change_gateway_cleanup body: (BraceGroup children: [ (C {<env>} {<Id.Lit_VarLike 'RUMP_SERVER='> <unix> <Id.Lit_Colon ':'> <'//commsock'>} {<rump.halt>} ) ] ) ) (C {<atf_test_case>} {<route_change_ifa>} {<cleanup>}) (command.ShFunction name: route_change_ifa_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Change the ifa (local address) of a route'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}) ] ) ) (command.ShFunction name: route_change_ifa_body body: (BraceGroup children: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {(${ Id.VSub_Name netserver)} {(${ Id.VSub_Name RUMP_SERVER)} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<create>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<linkstr>} {<bus>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<'10.0.0.10/24'>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<alias>} {<'10.0.0.11/24'>} ) (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>} {<-net>} {<'192.168.0.0/24'>} {<10.0.0.1>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <10.0.0.1>)} {<-x>} {(DQ <'rump.route -n show -inet | grep ^192.168'>)} ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.route>} {<-n>} {<show>} {<-inet>}) ] ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'./expect'>} ) (redir op: <Id.Redir_DLessDash '<<-'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 751 stdin_parts: [ <' route to: 192.168.0.1\n'> <'destination: 192.168.0.0\n'> <' mask: 255.255.255.0\n'> <' gateway: 10.0.0.1\n'> <' local addr: 10.0.0.10\n'> <' interface: shmif0\n'> <' flags: <UP,GATEWAY,DONE,STATIC>\n'> < ' recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire\n' > ] ) ) ] do_fork: T ) (command.Simple words: [{<rump.route>} {<-n>} {<get>} {<192.168.0.1>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./output'>})] do_fork: T ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<cat>} {<'./expect'>} {<'./output'>})] ) (C {<sed>} {<-i>} {(SQ <'$d'>)} {<'./output'>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<diff>} {<'./expect'>} {<'./output'>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.route>} {<change>} {<-net>} {<'192.168.0.0/24'>} {<10.0.0.1>} {<-ifa>} {<10.0.0.11>} ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.route>} {<-n>} {<show>} {<-inet>}) ] ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'./expect'>} ) (redir op: <Id.Redir_DLessDash '<<-'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 867 stdin_parts: [ <' route to: 192.168.0.1\n'> <'destination: 192.168.0.0\n'> <' mask: 255.255.255.0\n'> <' gateway: 10.0.0.1\n'> <' local addr: 10.0.0.11\n'> <' interface: shmif0\n'> <' flags: <UP,GATEWAY,DONE,STATIC>\n'> < ' recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire\n' > ] ) ) ] do_fork: T ) (command.Simple words: [{<rump.route>} {<-n>} {<get>} {<192.168.0.1>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./output'>})] do_fork: T ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<cat>} {<'./expect'>} {<'./output'>})] ) (C {<sed>} {<-i>} {(SQ <'$d'>)} {<'./output'>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<diff>} {<'./expect'>} {<'./output'>} ) ] ) ) (command.ShFunction name: route_change_ifa_cleanup body: (BraceGroup children: [ (C {<env>} {<Id.Lit_VarLike 'RUMP_SERVER='> <unix> <Id.Lit_Colon ':'> <'//commsock'>} {<rump.halt>} ) ] ) ) (C {<atf_test_case>} {<route_change_ifp>} {<cleanup>}) (command.ShFunction name: route_change_ifp_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Change a route based on an interface (ifp)'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}) ] ) ) (command.ShFunction name: route_change_ifp_body body: (BraceGroup children: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {(${ Id.VSub_Name netserver)} {(${ Id.VSub_Name RUMP_SERVER)} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<create>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<linkstr>} {<bus>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<'10.0.0.10/24'>} {<up>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif1>} {<create>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif1>} {<linkstr>} {<bus>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif1>} {<'10.0.0.11/24'>} {<up>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.route>} {<add>} {<-net>} {<'192.168.0.0/24'>} {<10.0.0.1>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <10.0.0.1>)} {<-x>} {(DQ <'rump.route -n show -inet | grep ^192.168'>)} ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.route>} {<-n>} {<show>} {<-inet>}) ] ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'./expect'>} ) (redir op: <Id.Redir_DLessDash '<<-'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 1185 stdin_parts: [ <' route to: 192.168.0.1\n'> <'destination: 192.168.0.0\n'> <' mask: 255.255.255.0\n'> <' gateway: 10.0.0.1\n'> <' local addr: 10.0.0.10\n'> <' interface: shmif0\n'> <' flags: <UP,GATEWAY,DONE,STATIC>\n'> < ' recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire\n' > ] ) ) ] do_fork: T ) (command.Simple words: [{<rump.route>} {<-n>} {<get>} {<192.168.0.1>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./output'>})] do_fork: T ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<cat>} {<'./expect'>} {<'./output'>})] ) (C {<sed>} {<-i>} {(SQ <'$d'>)} {<'./output'>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<diff>} {<'./expect'>} {<'./output'>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.route>} {<change>} {<-net>} {<'192.168.0.0/24'>} {<10.0.0.1>} {<-ifp>} {<shmif1>} ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.route>} {<-n>} {<show>} {<-inet>}) ] ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'./expect'>} ) (redir op: <Id.Redir_DLessDash '<<-'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 1301 stdin_parts: [ <' route to: 192.168.0.1\n'> <'destination: 192.168.0.0\n'> <' mask: 255.255.255.0\n'> <' gateway: 10.0.0.1\n'> <' local addr: 10.0.0.11\n'> <' interface: shmif1\n'> <' flags: <UP,GATEWAY,DONE,STATIC>\n'> < ' recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire\n' > ] ) ) ] do_fork: T ) (command.Simple words: [{<rump.route>} {<-n>} {<get>} {<192.168.0.1>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./output'>})] do_fork: T ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<cat>} {<'./expect'>} {<'./output'>})] ) (C {<sed>} {<-i>} {(SQ <'$d'>)} {<'./output'>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<diff>} {<'./expect'>} {<'./output'>} ) ] ) ) (command.ShFunction name: route_change_ifp_cleanup body: (BraceGroup children: [ (C {<env>} {<Id.Lit_VarLike 'RUMP_SERVER='> <unix> <Id.Lit_Colon ':'> <'//commsock'>} {<rump.halt>} ) ] ) ) (C {<atf_test_case>} {<route_change_ifp_ifa>} {<cleanup>}) (command.ShFunction name: route_change_ifp_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Change a route with -ifp and -ifa'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}) ] ) ) (command.ShFunction name: route_change_ifp_ifa_body body: (BraceGroup children: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {(${ Id.VSub_Name netserver)} {(${ Id.VSub_Name RUMP_SERVER)} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<create>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<linkstr>} {<bus>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<'10.0.0.10/24'>} {<up>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif1>} {<create>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif1>} {<linkstr>} {<bus>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif1>} {<'10.0.0.11/24'>} {<up>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.route>} {<add>} {<-net>} {<'192.168.0.0/24'>} {<10.0.0.1>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <10.0.0.1>)} {<-x>} {(DQ <'rump.route -n show -inet | grep ^192.168'>)} ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.route>} {<-n>} {<show>} {<-inet>}) ] ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'./expect'>} ) (redir op: <Id.Redir_DLessDash '<<-'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 1619 stdin_parts: [ <' route to: 192.168.0.1\n'> <'destination: 192.168.0.0\n'> <' mask: 255.255.255.0\n'> <' gateway: 10.0.0.1\n'> <' local addr: 10.0.0.10\n'> <' interface: shmif0\n'> <' flags: <UP,GATEWAY,DONE,STATIC>\n'> < ' recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire\n' > ] ) ) ] do_fork: T ) (command.Simple words: [{<rump.route>} {<-n>} {<get>} {<192.168.0.1>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./output'>})] do_fork: T ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<cat>} {<'./expect'>} {<'./output'>})] ) (C {<sed>} {<-i>} {(SQ <'$d'>)} {<'./output'>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<diff>} {<'./expect'>} {<'./output'>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.route>} {<change>} {<-net>} {<'192.168.0.0/24'>} {<-ifa>} {<10.0.0.1>} {<-ifp>} {<shmif1>} ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.route>} {<-n>} {<show>} {<-inet>}) ] ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'./expect'>} ) (redir op: <Id.Redir_DLessDash '<<-'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 1737 stdin_parts: [ <' route to: 192.168.0.1\n'> <'destination: 192.168.0.0\n'> <' mask: 255.255.255.0\n'> <' gateway: 10.0.0.1\n'> <' local addr: 10.0.0.11\n'> <' interface: shmif1\n'> <' flags: <UP,GATEWAY,DONE,STATIC>\n'> < ' recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire\n' > ] ) ) ] do_fork: T ) (command.Simple words: [{<rump.route>} {<-n>} {<get>} {<192.168.0.1>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./output'>})] do_fork: T ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<cat>} {<'./expect'>} {<'./output'>})] ) (C {<sed>} {<-i>} {(SQ <'$d'>)} {<'./output'>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<diff>} {<'./expect'>} {<'./output'>} ) ] ) ) (command.ShFunction name: route_change_ifp_ifa_cleanup body: (BraceGroup children: [ (C {<env>} {<Id.Lit_VarLike 'RUMP_SERVER='> <unix> <Id.Lit_Colon ':'> <'//commsock'>} {<rump.halt>} ) ] ) ) (command.ShFunction name: atf_init_test_cases body: (BraceGroup children: [ (C {<atf_add_test_case>} {<route_change_reject2blackhole>}) (C {<atf_add_test_case>} {<route_change_gateway>}) (C {<atf_add_test_case>} {<route_change_ifa>}) (C {<atf_add_test_case>} {<route_change_ifp>}) (C {<atf_add_test_case>} {<route_change_ifp_ifa>}) ] ) ) ] )