(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>})
          ]
        )
    )
  ]
)