(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SOCK1) op: assign_op.Equal rhs: {<unix> <Id.Lit_Colon ':'> <'//commsock1'>} spids: [79] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SOCK2) op: assign_op.Equal rhs: {<unix> <Id.Lit_Colon ':'> <'//commsock2'>} spids: [84] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SOCK3) op: assign_op.Equal rhs: {<unix> <Id.Lit_Colon ':'> <'//commsock3'>} spids: [89] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP1) op: assign_op.Equal rhs: {<10.0.0.1>} spids: [94] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP2) op: assign_op.Equal rhs: {<10.0.0.2>} spids: [97] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP61) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} spids: [100] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP62) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <2>} spids: [106] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IPBR1) op: assign_op.Equal rhs: {<10.0.0.11>} spids: [112] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IPBR2) op: assign_op.Equal rhs: {<10.0.0.12>} spids: [115] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP6BR1) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <11>} spids: [118] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP6BR2) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <12>} spids: [124] ) ] ) (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: [131] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TIMEOUT) op: assign_op.Equal rhs: {<5>} spids: [138] ) ] ) (C {<atf_test_case>} {<bridge_ipv4>} {<cleanup>}) (C {<atf_test_case>} {<bridge_ipv6>} {<cleanup>}) (C {<atf_test_case>} {<bridge_rtable>} {<cleanup>}) (C {<atf_test_case>} {<bridge_member_ipv4>} {<cleanup>}) (C {<atf_test_case>} {<bridge_member_ipv6>} {<cleanup>}) (command.ShFunction name: bridge_ipv4_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Does simple if_bridge tests'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}) ] ) ) (command.ShFunction name: bridge_ipv6_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Does simple if_bridge tests (IPv6)'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}) ] ) ) (command.ShFunction name: bridge_rtable_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Tests route table operations of if_bridge'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}) ] ) ) (command.ShFunction name: bridge_member_ipv4_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Tests if_bridge with members with an IP address'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}) ] ) ) (command.ShFunction name: bridge_member_ipv6_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Tests if_bridge with members with an IP address (IPv6)'>)} ) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}) ] ) ) (command.ShFunction name: setup_endpoint body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sock) op: assign_op.Equal rhs: {(${ Id.VSub_Number 1)} spids: [335] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr) op: assign_op.Equal rhs: {(${ Id.VSub_Number 2)} spids: [341] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:bus) op: assign_op.Equal rhs: {(${ Id.VSub_Number 3)} spids: [347] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:mode) op: assign_op.Equal rhs: {(${ Id.VSub_Number 4)} spids: [353] ) ] ) (C {<rump_server_add_iface>} {($ Id.VSub_DollarName '$sock')} {<shmif0>} {($ Id.VSub_DollarName '$bus')} ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name sock)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$mode')} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<inet6>} {(${ Id.VSub_Name addr)} ) ] spids: [377 392] ) ] else_action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<inet>} {(${ Id.VSub_Name addr)} {<netmask>} {<0xffffff00>} ) ] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<up>} ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.ifconfig>} {<shmif0>})] ) ] ) ) (command.ShFunction name: test_endpoint body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sock) op: assign_op.Equal rhs: {(${ Id.VSub_Number 1)} spids: [477] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr) op: assign_op.Equal rhs: {(${ Id.VSub_Number 2)} spids: [483] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:bus) op: assign_op.Equal rhs: {(${ Id.VSub_Number 3)} spids: [489] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:mode) op: assign_op.Equal rhs: {(${ Id.VSub_Number 4)} spids: [495] ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name sock)}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> <shmif0>} {<rump.ifconfig>} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$mode')} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping6>} {<-n>} {<-c>} {<1>} {<-X>} {($ Id.VSub_DollarName '$TIMEOUT')} {(${ Id.VSub_Name addr)} ) ] spids: [527 542] ) ] else_action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-n>} {<-w>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {(${ Id.VSub_Name addr)} ) ] ) ] ) ) (command.ShFunction name: test_setup body: (BraceGroup children: [ (C {<test_endpoint>} {($ Id.VSub_DollarName '$SOCK1')} {($ Id.VSub_DollarName '$IP1')} {<bus1>} {<ipv4>} ) (C {<test_endpoint>} {($ Id.VSub_DollarName '$SOCK3')} {($ Id.VSub_DollarName '$IP2')} {<bus2>} {<ipv4>} ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> <shmif0>} {<rump.ifconfig>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> <shmif1>} {<rump.ifconfig>} ) ] ) ) (command.ShFunction name: test_setup6 body: (BraceGroup children: [ (C {<test_endpoint>} {($ Id.VSub_DollarName '$SOCK1')} {($ Id.VSub_DollarName '$IP61')} {<bus1>} {<ipv6>} ) (C {<test_endpoint>} {($ Id.VSub_DollarName '$SOCK3')} {($ Id.VSub_DollarName '$IP62')} {<bus2>} {<ipv6>} ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> <shmif0>} {<rump.ifconfig>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> <shmif1>} {<rump.ifconfig>} ) ] ) ) (command.ShFunction name: setup_bridge_server body: (BraceGroup children: [ (C {<rump_server_add_iface>} {($ Id.VSub_DollarName '$SOCK2')} {<shmif0>} {<bus1>}) (C {<rump_server_add_iface>} {($ Id.VSub_DollarName '$SOCK2')} {<shmif1>} {<bus2>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (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>} {<up>} ) ] ) ) (command.ShFunction name: setup body: (BraceGroup children: [ (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCK1')} {<bridge>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCK2')} {<bridge>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCK3')} {<bridge>}) (C {<setup_endpoint>} {($ Id.VSub_DollarName '$SOCK1')} {($ Id.VSub_DollarName '$IP1')} {<bus1>} {<ipv4>} ) (C {<setup_endpoint>} {($ Id.VSub_DollarName '$SOCK3')} {($ Id.VSub_DollarName '$IP2')} {<bus2>} {<ipv4>} ) (C {<setup_bridge_server>}) ] ) ) (command.ShFunction name: setup6 body: (BraceGroup children: [ (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCK1')} {<netinet6>} {<bridge>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCK2')} {<netinet6>} {<bridge>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCK3')} {<netinet6>} {<bridge>}) (C {<setup_endpoint>} {($ Id.VSub_DollarName '$SOCK1')} {($ Id.VSub_DollarName '$IP61')} {<bus1>} {<ipv6>} ) (C {<setup_endpoint>} {($ Id.VSub_DollarName '$SOCK3')} {($ Id.VSub_DollarName '$IP62')} {<bus2>} {<ipv6>} ) (C {<setup_bridge_server>}) ] ) ) (command.ShFunction name: setup_bridge body: (BraceGroup children: [ (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<bridge0>} {<create>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<bridge0>} {<up>} ) (C {<export>} {<Id.Lit_VarLike 'LD_PRELOAD='> <'/usr/lib/librumphijack.so'>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<'/sbin/brconfig'>} {<bridge0>} {<add>} {<shmif0>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<'/sbin/brconfig'>} {<bridge0>} {<add>} {<shmif1>} ) (C {<'/sbin/brconfig'>} {<bridge0>}) (C {<unset>} {<LD_PRELOAD>}) (C {<rump.ifconfig>} {<shmif0>}) (C {<rump.ifconfig>} {<shmif1>}) ] ) ) (command.ShFunction name: setup_member_ip body: (BraceGroup children: [ (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (C {<export>} {<Id.Lit_VarLike 'LD_PRELOAD='> <'/usr/lib/librumphijack.so'>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {($ Id.VSub_DollarName '$IPBR1') <'/24'>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif1>} {($ Id.VSub_DollarName '$IPBR2') <'/24'>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<-w>} {<10>} ) (C {<'/sbin/brconfig'>} {<bridge0>}) (C {<unset>} {<LD_PRELOAD>}) (C {<rump.ifconfig>} {<shmif0>}) (C {<rump.ifconfig>} {<shmif1>}) ] ) ) (command.ShFunction name: setup_member_ip6 body: (BraceGroup children: [ (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (C {<export>} {<Id.Lit_VarLike 'LD_PRELOAD='> <'/usr/lib/librumphijack.so'>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<inet6>} {($ Id.VSub_DollarName '$IP6BR1')} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif1>} {<inet6>} {($ Id.VSub_DollarName '$IP6BR2')} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<-w>} {<10>} ) (C {<'/sbin/brconfig'>} {<bridge0>}) (C {<unset>} {<LD_PRELOAD>}) (C {<rump.ifconfig>} {<shmif0>}) (C {<rump.ifconfig>} {<shmif1>}) ] ) ) (command.ShFunction name: teardown_bridge body: (BraceGroup children: [ (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (C {<export>} {<Id.Lit_VarLike 'LD_PRELOAD='> <'/usr/lib/librumphijack.so'>}) (C {<'/sbin/brconfig'>} {<bridge0>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<'/sbin/brconfig'>} {<bridge0>} {<delete>} {<shmif0>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<'/sbin/brconfig'>} {<bridge0>} {<delete>} {<shmif1>} ) (C {<'/sbin/brconfig'>} {<bridge0>}) (C {<unset>} {<LD_PRELOAD>}) (C {<rump.ifconfig>} {<shmif0>}) (C {<rump.ifconfig>} {<shmif1>}) ] ) ) (command.ShFunction name: test_setup_bridge body: (BraceGroup children: [ (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (C {<export>} {<Id.Lit_VarLike 'LD_PRELOAD='> <'/usr/lib/librumphijack.so'>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> <shmif0>} {<'/sbin/brconfig'>} {<bridge0>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> <shmif1>} {<'/sbin/brconfig'>} {<bridge0>} ) (C {<'/sbin/brconfig'>} {<bridge0>}) (C {<unset>} {<LD_PRELOAD>}) ] ) ) (command.ShFunction name: down_up_interfaces body: (BraceGroup children: [ (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK1')}) (C {<rump.ifconfig>} {<shmif0>} {<down>}) (C {<rump.ifconfig>} {<shmif0>} {<up>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK3')}) (C {<rump.ifconfig>} {<shmif0>} {<down>}) (C {<rump.ifconfig>} {<shmif0>} {<up>}) ] ) ) (command.ShFunction name: test_ping_failure body: (BraceGroup children: [ (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK1')}) (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-q>} {<-n>} {<-w>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {($ Id.VSub_DollarName '$IP2')} ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK3')}) (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-q>} {<-n>} {<-w>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {($ Id.VSub_DollarName '$IP1')} ) ] ) ) (command.ShFunction name: test_ping_success body: (BraceGroup children: [ (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK1')}) (C {<rump.ifconfig>} {<-v>} {<shmif0>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-q>} {<-n>} {<-w>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {($ Id.VSub_DollarName '$IP2')} ) (C {<rump.ifconfig>} {<-v>} {<shmif0>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK3')}) (C {<rump.ifconfig>} {<-v>} {<shmif0>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-q>} {<-n>} {<-w>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {($ Id.VSub_DollarName '$IP1')} ) (C {<rump.ifconfig>} {<-v>} {<shmif0>}) ] ) ) (command.ShFunction name: test_ping6_failure body: (BraceGroup children: [ (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK1')}) (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping6>} {<-q>} {<-n>} {<-c>} {<1>} {<-X>} {($ Id.VSub_DollarName '$TIMEOUT')} {($ Id.VSub_DollarName '$IP62')} ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK3')}) (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping6>} {<-q>} {<-n>} {<-c>} {<1>} {<-X>} {($ Id.VSub_DollarName '$TIMEOUT')} {($ Id.VSub_DollarName '$IP61')} ) ] ) ) (command.ShFunction name: test_ping6_success body: (BraceGroup children: [ (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK1')}) (C {<rump.ifconfig>} {<-v>} {<shmif0>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping6>} {<-q>} {<-n>} {<-c>} {<1>} {<-X>} {($ Id.VSub_DollarName '$TIMEOUT')} {($ Id.VSub_DollarName '$IP62')} ) (C {<rump.ifconfig>} {<-v>} {<shmif0>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK3')}) (C {<rump.ifconfig>} {<-v>} {<shmif0>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping6>} {<-q>} {<-n>} {<-c>} {<1>} {<-X>} {($ Id.VSub_DollarName '$TIMEOUT')} {($ Id.VSub_DollarName '$IP61')} ) (C {<rump.ifconfig>} {<-v>} {<shmif0>}) ] ) ) (command.ShFunction name: test_ping_member body: (BraceGroup children: [ (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK1')}) (C {<rump.ifconfig>} {<-v>} {<shmif0>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-q>} {<-n>} {<-w>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {($ Id.VSub_DollarName '$IPBR1')} ) (C {<rump.ifconfig>} {<-v>} {<shmif0>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-q>} {<-n>} {<-w>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {($ Id.VSub_DollarName '$IPBR2')} ) (C {<rump.ifconfig>} {<-v>} {<shmif0>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK3')}) (C {<rump.ifconfig>} {<-v>} {<shmif0>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-q>} {<-n>} {<-w>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {($ Id.VSub_DollarName '$IPBR1')} ) (C {<rump.ifconfig>} {<-v>} {<shmif0>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-q>} {<-n>} {<-w>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {($ Id.VSub_DollarName '$IPBR2')} ) (C {<rump.ifconfig>} {<-v>} {<shmif0>}) ] ) ) (command.ShFunction name: test_ping6_member body: (BraceGroup children: [ (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK1')}) (C {<rump.ifconfig>} {<-v>} {<shmif0>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping6>} {<-q>} {<-n>} {<-X>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {($ Id.VSub_DollarName '$IP6BR1')} ) (C {<rump.ifconfig>} {<-v>} {<shmif0>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping6>} {<-q>} {<-n>} {<-X>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {($ Id.VSub_DollarName '$IP6BR2')} ) (C {<rump.ifconfig>} {<-v>} {<shmif0>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK3')}) (C {<rump.ifconfig>} {<-v>} {<shmif0>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping6>} {<-q>} {<-n>} {<-X>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {($ Id.VSub_DollarName '$IP6BR1')} ) (C {<rump.ifconfig>} {<-v>} {<shmif0>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping6>} {<-q>} {<-n>} {<-X>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {($ Id.VSub_DollarName '$IP6BR2')} ) (C {<rump.ifconfig>} {<-v>} {<shmif0>}) ] ) ) (command.ShFunction name: get_number_of_caches body: (BraceGroup children: [ (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (C {<export>} {<Id.Lit_VarLike 'LD_PRELOAD='> <'/usr/lib/librumphijack.so'>}) (C {<echo>} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<'/sbin/brconfig'>} {<bridge0>}) (C {<grep>} {<-A>} {<100>} {(DQ <'Address cache'>)}) (C {<wc>} {<-l>}) ] negated: F ) ) } right: {<Id.Lit_Digits 1>} ) ) } ) (C {<unset>} {<LD_PRELOAD>}) ] ) ) (command.ShFunction name: test_brconfig_maxaddr body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr1) op: assign_op.Equal rhs: (word.Empty) spids: [2236] ) (assign_pair lhs: (sh_lhs_expr.Name name:addr3) op: assign_op.Equal rhs: (word.Empty) spids: [2238] ) (assign_pair lhs: (sh_lhs_expr.Name name:n) op: assign_op.Equal rhs: (word.Empty) spids: [2240] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr1) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<get_macaddr>} {($ Id.VSub_DollarName '$SOCK1')} {<shmif0>}) ) } spids: [2248] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr3) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<get_macaddr>} {($ Id.VSub_DollarName '$SOCK3')} {<shmif0>}) ) } spids: [2258] ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK1')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-n>} {<-w>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {($ Id.VSub_DollarName '$IP2')} ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (C {<export>} {<Id.Lit_VarLike 'LD_PRELOAD='> <'/usr/lib/librumphijack.so'>}) (C {<'/sbin/brconfig'>} {<bridge0>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$addr1') <' shmif0'>)} {<'/sbin/brconfig'>} {<bridge0>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$addr3') <' shmif1'>)} {<'/sbin/brconfig'>} {<bridge0>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (DQ <'max cache: 100'>)} {<'/sbin/brconfig'>} {<bridge0>} ) (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: (C {<get_number_of_caches>}) ) } spids: [2398] ) ] ) (C {<atf_check_equal>} {($ Id.VSub_DollarName '$n')} {<2>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<'/sbin/brconfig'>} {<bridge0>} {<maxaddr>} {<1>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (DQ <'max cache: 1'>)} {<'/sbin/brconfig'>} {<bridge0>} ) (C {<'/sbin/brconfig'>} {<bridge0>}) (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: (C {<get_number_of_caches>}) ) } spids: [2468] ) ] ) (C {<atf_check_equal>} {($ Id.VSub_DollarName '$n')} {<1>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<'/sbin/brconfig'>} {<bridge0>} {<maxaddr>} {<2>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (DQ <'max cache: 2'>)} {<'/sbin/brconfig'>} {<bridge0>} ) (C {<unset>} {<LD_PRELOAD>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK1')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-n>} {<-w>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {($ Id.VSub_DollarName '$IP2')} ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (C {<export>} {<Id.Lit_VarLike 'LD_PRELOAD='> <'/usr/lib/librumphijack.so'>}) (C {<'/sbin/brconfig'>} {<bridge0>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$addr1') <' shmif0'>)} {<'/sbin/brconfig'>} {<bridge0>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$addr3') <' shmif1'>)} {<'/sbin/brconfig'>} {<bridge0>} ) (C {<unset>} {<LD_PRELOAD>}) ] ) ) (command.ShFunction name: bridge_ipv4_body body: (BraceGroup children: [ (C {<setup>}) (C {<test_setup>}) (C {<setup_bridge>}) (C {<sleep>} {<1>}) (C {<test_setup_bridge>}) (C {<test_ping_success>}) (C {<teardown_bridge>}) (C {<test_ping_failure>}) (C {<rump_server_destroy_ifaces>}) ] ) ) (command.ShFunction name: bridge_ipv6_body body: (BraceGroup children: [ (C {<setup6>}) (C {<test_setup6>}) (C {<test_ping6_failure>}) (C {<setup_bridge>}) (C {<sleep>} {<1>}) (C {<test_setup_bridge>}) (C {<test_ping6_success>}) (C {<teardown_bridge>}) (C {<test_ping6_failure>}) (C {<rump_server_destroy_ifaces>}) ] ) ) (command.ShFunction name: bridge_rtable_body body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr1) op: assign_op.Equal rhs: (word.Empty) spids: [2741] ) (assign_pair lhs: (sh_lhs_expr.Name name:addr3) op: assign_op.Equal rhs: (word.Empty) spids: [2743] ) ] ) (C {<setup>}) (C {<setup_bridge>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr1) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<get_macaddr>} {($ Id.VSub_DollarName '$SOCK1')} {<shmif0>}) ) } spids: [2758] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr3) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<get_macaddr>} {($ Id.VSub_DollarName '$SOCK3')} {<shmif0>}) ) } spids: [2768] ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (C {<export>} {<Id.Lit_VarLike 'LD_PRELOAD='> <'/usr/lib/librumphijack.so'>}) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<'/sbin/brconfig'>} {<bridge0>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<not-match> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$addr1'))} {<'/sbin/brconfig'>} {<bridge0>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<not-match> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$addr3'))} {<'/sbin/brconfig'>} {<bridge0>} ) (C {<unset>} {<LD_PRELOAD>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK1')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-n>} {<-w>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {($ Id.VSub_DollarName '$IP2')} ) (C {<unset>} {<RUMP_SERVER>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (C {<export>} {<Id.Lit_VarLike 'LD_PRELOAD='> <'/usr/lib/librumphijack.so'>}) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<'/sbin/brconfig'>} {<bridge0>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$addr1') <' shmif0'>)} {<'/sbin/brconfig'>} {<bridge0>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$addr3') <' shmif1'>)} {<'/sbin/brconfig'>} {<bridge0>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<'/sbin/brconfig'>} {<bridge0>} {<deladdr>} {(DQ ($ Id.VSub_DollarName '$addr1'))} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<not-match> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$addr1') <' shmif0'>)} {<'/sbin/brconfig'>} {<bridge0>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<'/sbin/brconfig'>} {<bridge0>} {<deladdr>} {(DQ ($ Id.VSub_DollarName '$addr3'))} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<not-match> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$addr3') <' shmif1'>)} {<'/sbin/brconfig'>} {<bridge0>} ) (C {<unset>} {<LD_PRELOAD>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK1')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-n>} {<-w>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {($ Id.VSub_DollarName '$IP2')} ) (C {<unset>} {<RUMP_SERVER>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (C {<export>} {<Id.Lit_VarLike 'LD_PRELOAD='> <'/usr/lib/librumphijack.so'>}) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<'/sbin/brconfig'>} {<bridge0>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$addr1') <' shmif0'>)} {<'/sbin/brconfig'>} {<bridge0>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$addr3') <' shmif1'>)} {<'/sbin/brconfig'>} {<bridge0>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<'/sbin/brconfig'>} {<bridge0>} {<flush>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<not-match> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$addr1') <' shmif0'>)} {<'/sbin/brconfig'>} {<bridge0>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<not-match> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$addr3') <' shmif1'>)} {<'/sbin/brconfig'>} {<bridge0>} ) (C {<unset>} {<LD_PRELOAD>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (C {<export>} {<Id.Lit_VarLike 'LD_PRELOAD='> <'/usr/lib/librumphijack.so'>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (DQ <'timeout: 1200'>)} {<'/sbin/brconfig'>} {<bridge0>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<'/sbin/brconfig'>} {<bridge0>} {<timeout>} {<10>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (DQ <'timeout: 10'>)} {<'/sbin/brconfig'>} {<bridge0>} ) (C {<unset>} {<LD_PRELOAD>}) (C {<test_brconfig_maxaddr>}) (C {<rump_server_destroy_ifaces>}) ] ) ) (command.ShFunction name: bridge_member_ipv4_body body: (BraceGroup children: [ (C {<setup>}) (C {<test_setup>}) (C {<setup_bridge>}) (C {<sleep>} {<1>}) (C {<test_setup_bridge>}) (C {<test_ping_success>}) (C {<setup_member_ip>}) (C {<test_ping_member>}) (C {<teardown_bridge>}) (C {<test_ping_failure>}) (C {<rump_server_destroy_ifaces>}) ] ) ) (command.ShFunction name: bridge_member_ipv6_body body: (BraceGroup children: [ (C {<setup6>}) (C {<test_setup6>}) (C {<test_ping6_failure>}) (C {<setup_bridge>}) (C {<sleep>} {<1>}) (C {<test_setup_bridge>}) (C {<test_ping6_success>}) (C {<setup_member_ip6>}) (C {<test_ping6_member>}) (C {<teardown_bridge>}) (C {<test_ping6_failure>}) (C {<rump_server_destroy_ifaces>}) ] ) ) (command.ShFunction name: bridge_ipv4_cleanup body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump>})] ) (C {<cleanup>}) ] ) ) (command.ShFunction name: bridge_ipv6_cleanup body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump>})] ) (C {<cleanup>}) ] ) ) (command.ShFunction name: bridge_rtable_cleanup body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump>})] ) (C {<cleanup>}) ] ) ) (command.ShFunction name: bridge_member_ipv4_cleanup body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump>})] ) (C {<cleanup>}) ] ) ) (command.ShFunction name: bridge_member_ipv6_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>} {<bridge_ipv4>}) (C {<atf_add_test_case>} {<bridge_ipv6>}) (C {<atf_add_test_case>} {<bridge_rtable>}) (C {<atf_add_test_case>} {<bridge_member_ipv4>}) (C {<atf_add_test_case>} {<bridge_member_ipv6>}) ] ) ) ] )