(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'SOCK_CLIENT='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'SOCK_CLIENT='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SOCK_CLIENT='> name:SOCK_CLIENT)
          op: assign_op.Equal
          rhs: {<unix> <Id.Lit_Colon ':'> <'//commsock1'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'SOCK_GW='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'SOCK_GW='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SOCK_GW='> name:SOCK_GW)
          op: assign_op.Equal
          rhs: {<unix> <Id.Lit_Colon ':'> <'//commsock2'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'BUS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'BUS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BUS='> name:BUS)
          op: assign_op.Equal
          rhs: {<bus1>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'SOCKSRC='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'SOCKSRC='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SOCKSRC='> name:SOCKSRC)
          op: assign_op.Equal
          rhs: {<unix> <Id.Lit_Colon ':'> <'//commsock1'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'SOCKFWD='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'SOCKFWD='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SOCKFWD='> name:SOCKFWD)
          op: assign_op.Equal
          rhs: {<unix> <Id.Lit_Colon ':'> <'//commsock2'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'SOCKDST='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'SOCKDST='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SOCKDST='> name:SOCKDST)
          op: assign_op.Equal
          rhs: {<unix> <Id.Lit_Colon ':'> <'//commsock3'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'IP4SRC='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'IP4SRC='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IP4SRC='> name:IP4SRC)
          op: assign_op.Equal
          rhs: {<10.0.1.2>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'IP4SRCGW='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'IP4SRCGW='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IP4SRCGW='> name:IP4SRCGW)
          op: assign_op.Equal
          rhs: {<10.0.1.1>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'IP4DSTGW='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'IP4DSTGW='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IP4DSTGW='> name:IP4DSTGW)
          op: assign_op.Equal
          rhs: {<10.0.2.1>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'IP4DST='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'IP4DST='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IP4DST='> name:IP4DST)
          op: assign_op.Equal
          rhs: {<10.0.2.2>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'IP4DST_BCAST='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'IP4DST_BCAST='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IP4DST_BCAST='> name:IP4DST_BCAST)
          op: assign_op.Equal
          rhs: {<10.0.2.255>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'IP6SRC='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'IP6SRC='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IP6SRC='> name:IP6SRC)
          op: assign_op.Equal
          rhs: 
            {<fc00> <Id.Lit_Colon ':'> <0> <Id.Lit_Colon ':'> <0> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> 
              <Id.Lit_Colon ':'> <2>
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'IP6SRCGW='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'IP6SRCGW='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IP6SRCGW='> name:IP6SRCGW)
          op: assign_op.Equal
          rhs: 
            {<fc00> <Id.Lit_Colon ':'> <0> <Id.Lit_Colon ':'> <0> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> 
              <Id.Lit_Colon ':'> <1>
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'IP6DSTGW='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'IP6DSTGW='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IP6DSTGW='> name:IP6DSTGW)
          op: assign_op.Equal
          rhs: 
            {<fc00> <Id.Lit_Colon ':'> <0> <Id.Lit_Colon ':'> <0> <Id.Lit_Colon ':'> <2> <Id.Lit_Colon ':'> 
              <Id.Lit_Colon ':'> <1>
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'IP6DST='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'IP6DST='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IP6DST='> name:IP6DST)
          op: assign_op.Equal
          rhs: 
            {<fc00> <Id.Lit_Colon ':'> <0> <Id.Lit_Colon ':'> <0> <Id.Lit_Colon ':'> <2> <Id.Lit_Colon ':'> 
              <Id.Lit_Colon ':'> <2>
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'BUS_SRCGW='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'BUS_SRCGW='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BUS_SRCGW='> name:BUS_SRCGW)
          op: assign_op.Equal
          rhs: {<bus1>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'BUS_DSTGW='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'BUS_DSTGW='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BUS_DSTGW='> name:BUS_DSTGW)
          op: assign_op.Equal
          rhs: {<bus2>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'DEBUG='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'DEBUG='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEBUG='> name:DEBUG)
          op: assign_op.Equal
          rhs: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name DEBUG>
                var_name: DEBUG
                suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<false>})
                right: <Id.Right_DollarBrace '}'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'TIMEOUT='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'TIMEOUT='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TIMEOUT='> name:TIMEOUT)
          op: assign_op.Equal
          rhs: {<1>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'PING_OPTS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'PING_OPTS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PING_OPTS='> name:PING_OPTS)
          op: assign_op.Equal
          rhs: {(DQ <'-n -c 1 -w '> ($ Id.VSub_DollarName TIMEOUT))}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <atf_test_case>
      more_env: []
      words: [{<atf_test_case>} {<route_non_subnet_gateway>} {<cleanup>}]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <route_non_subnet_gateway_head>
      name: route_non_subnet_gateway_head
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <atf_set>
              more_env: []
              words: [{<atf_set>} {(DQ <descr>)} {(DQ <'tests of a gateway not on the local subnet'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_set>
              more_env: []
              words: [{<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <route_non_subnet_gateway_body>
      name: route_non_subnet_gateway_body
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <rump_server_start>
              more_env: []
              words: [{<rump_server_start>} {($ Id.VSub_DollarName SOCK_CLIENT)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rump_server_start>
              more_env: []
              words: [{<rump_server_start>} {($ Id.VSub_DollarName SOCK_GW)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [{<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name SOCK_GW)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rump_server_add_iface>
              more_env: []
              words: [
                {<rump_server_add_iface>}
                {($ Id.VSub_DollarName SOCK_GW)}
                {<shmif0>}
                {($ Id.VSub_DollarName BUS)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<rump.ifconfig>}
                {<shmif0>}
                {<192.168.0.1>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<rump.ifconfig>}
                {<shmif0>}
                {<up>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<-o>}
                {<match> <Id.Lit_Colon ':'> (SQ <'add net 10.0.0.1: gateway shmif0'>)}
                {<rump.route>}
                {<add>}
                {<-net>}
                {<'10.0.0.1/32'>}
                {<-link>}
                {<-cloning>}
                {<-iface>}
                {<shmif0>}
              ]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$DEBUG'>
                  more_env: []
                  words: [{($ Id.VSub_DollarName DEBUG)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <rump.netstat>
                  more_env: []
                  words: [{<rump.netstat>} {<-nr>} {<-f>} {<inet>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [{<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name SOCK_CLIENT)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rump_server_add_iface>
              more_env: []
              words: [
                {<rump_server_add_iface>}
                {($ Id.VSub_DollarName SOCK_CLIENT)}
                {<shmif0>}
                {($ Id.VSub_DollarName BUS)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<rump.ifconfig>}
                {<shmif0>}
                {<'10.0.0.1/32'>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<rump.ifconfig>}
                {<shmif0>}
                {<up>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<rump.ifconfig>}
                {<-w>}
                {<10>}
              ]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$DEBUG'>
                  more_env: []
                  words: [{($ Id.VSub_DollarName DEBUG)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <rump.netstat>
                  more_env: []
                  words: [{<rump.netstat>} {<-nr>} {<-f>} {<inet>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<not-exit> <Id.Lit_Colon ':'> <0>}
                {<-o>}
                {<match> <Id.Lit_Colon ':'> (SQ <'100.0% packet loss'>)}
                {<-e>}
                {<match> <Id.Lit_Colon ':'> (SQ <'No route to host'>)}
                {<rump.ping>}
                {($ Id.VSub_DollarName PING_OPTS)}
                {<192.168.0.1>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<-o>}
                {<match> <Id.Lit_Colon ':'> (SQ <'add net 192.168.0.1: gateway shmif0'>)}
                {<rump.route>}
                {<add>}
                {<-net>}
                {<'192.168.0.1/32'>}
                {<-link>}
                {<-cloning>}
                {<-iface>}
                {<shmif0>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<-o>}
                {<match> <Id.Lit_Colon ':'> (SQ <'add net default: gateway 192.168.0.1'>)}
                {<rump.route>}
                {<add>}
                {<default>}
                {<-ifa>}
                {<10.0.0.1>}
                {<192.168.0.1>}
              ]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$DEBUG'>
                  more_env: []
                  words: [{($ Id.VSub_DollarName DEBUG)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <rump.netstat>
                  more_env: []
                  words: [{<rump.netstat>} {<-nr>} {<-f>} {<inet>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<-o>}
                {<ignore>}
                {<rump.ping>}
                {($ Id.VSub_DollarName PING_OPTS)}
                {<192.168.0.1>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rump_server_destroy_ifaces>
              more_env: []
              words: [{<rump_server_destroy_ifaces>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <route_non_subnet_gateway_cleanup>
      name: route_non_subnet_gateway_cleanup
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$DEBUG'>
                  more_env: []
                  words: [{($ Id.VSub_DollarName DEBUG)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <dump>
                  more_env: []
                  words: [{<dump>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <cleanup>
              more_env: []
              words: [{<cleanup>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <atf_test_case>
      more_env: []
      words: [{<atf_test_case>} {<route_command_get>} {<cleanup>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <atf_test_case>
      more_env: []
      words: [{<atf_test_case>} {<route_command_get6>} {<cleanup>}]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <route_command_get_head>
      name: route_command_get_head
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <atf_set>
              more_env: []
              words: [{<atf_set>} {(DQ <descr>)} {(DQ <'tests of route get command'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_set>
              more_env: []
              words: [{<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <route_command_get6_head>
      name: route_command_get6_head
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <atf_set>
              more_env: []
              words: [{<atf_set>} {(DQ <descr>)} {(DQ <'tests of route get command (IPv6)'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_set>
              more_env: []
              words: [{<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <setup_endpoint>
      name: setup_endpoint
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'sock='> (${ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'addr='> (${ Id.VSub_Number 2)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'bus='> (${ Id.VSub_Number 3)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'mode='> (${ Id.VSub_Number 4)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'gw='> (${ Id.VSub_Number 5)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [{<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name sock)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rump_server_add_iface>
              more_env: []
              words: [
                {<rump_server_add_iface>}
                {($ Id.VSub_DollarName sock)}
                {<shmif0>}
                {($ Id.VSub_DollarName bus)}
              ]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {($ Id.VSub_DollarName mode)}
                                {<Id.Lit_Equals '='>}
                                {(DQ <ipv6>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <atf_check>
                      more_env: []
                      words: [
                        {<atf_check>}
                        {<-s>}
                        {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                        {<rump.ifconfig>}
                        {<shmif0>}
                        {<inet6>}
                        {(${ Id.VSub_Name addr)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <atf_check>
                      more_env: []
                      words: [
                        {<atf_check>}
                        {<-s>}
                        {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                        {<-o>}
                        {<ignore>}
                        {<rump.route>}
                        {<add>}
                        {<-inet6>}
                        {<default>}
                        {(${ Id.VSub_Name gw)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [750 765]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <atf_check>
                  more_env: []
                  words: [
                    {<atf_check>}
                    {<-s>}
                    {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                    {<rump.ifconfig>}
                    {<shmif0>}
                    {<inet>}
                    {(${ Id.VSub_Name addr)}
                    {<netmask>}
                    {<0xffffff00>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <atf_check>
                  more_env: []
                  words: [
                    {<atf_check>}
                    {<-s>}
                    {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                    {<-o>}
                    {<ignore>}
                    {<rump.route>}
                    {<add>}
                    {<default>}
                    {(${ Id.VSub_Name gw)}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<rump.ifconfig>}
                {<shmif0>}
                {<up>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<rump.ifconfig>}
                {<-w>}
                {<10>}
              ]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.VSub_DollarName '$DEBUG'>
                              more_env: []
                              words: [{($ Id.VSub_DollarName DEBUG)}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <rump.ifconfig>
                      more_env: []
                      words: [{<rump.ifconfig>} {<shmif0>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <rump.netstat>
                      more_env: []
                      words: [{<rump.netstat>} {<-nr>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [895 900]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <setup_forwarder>
      name: setup_forwarder
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'mode='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'mode='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mode='> name:mode)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <rump_server_add_iface>
              more_env: []
              words: [
                {<rump_server_add_iface>}
                {($ Id.VSub_DollarName SOCKFWD)}
                {<shmif0>}
                {($ Id.VSub_DollarName BUS_SRCGW)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rump_server_add_iface>
              more_env: []
              words: [
                {<rump_server_add_iface>}
                {($ Id.VSub_DollarName SOCKFWD)}
                {<shmif1>}
                {($ Id.VSub_DollarName BUS_DSTGW)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [{<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName SOCKFWD)}]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {($ Id.VSub_DollarName mode)}
                                {<Id.Lit_Equals '='>}
                                {(DQ <ipv6>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <atf_check>
                      more_env: []
                      words: [
                        {<atf_check>}
                        {<-s>}
                        {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                        {<rump.ifconfig>}
                        {<shmif0>}
                        {<inet6>}
                        {(${ Id.VSub_Name IP6SRCGW)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <atf_check>
                      more_env: []
                      words: [
                        {<atf_check>}
                        {<-s>}
                        {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                        {<rump.ifconfig>}
                        {<shmif1>}
                        {<inet6>}
                        {(${ Id.VSub_Name IP6DSTGW)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [957 972]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <atf_check>
                  more_env: []
                  words: [
                    {<atf_check>}
                    {<-s>}
                    {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                    {<rump.ifconfig>}
                    {<shmif0>}
                    {<inet>}
                    {(${ Id.VSub_Name IP4SRCGW)}
                    {<netmask>}
                    {<0xffffff00>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <atf_check>
                  more_env: []
                  words: [
                    {<atf_check>}
                    {<-s>}
                    {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                    {<rump.ifconfig>}
                    {<shmif1>}
                    {<inet>}
                    {(${ Id.VSub_Name IP4DSTGW)}
                    {<netmask>}
                    {<0xffffff00>}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<rump.ifconfig>}
                {<shmif0>}
                {<up>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<rump.ifconfig>}
                {<shmif1>}
                {<up>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<rump.ifconfig>}
                {<-w>}
                {<10>}
              ]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.VSub_DollarName '$DEBUG'>
                              more_env: []
                              words: [{($ Id.VSub_DollarName DEBUG)}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <rump.netstat>
                      more_env: []
                      words: [{<rump.netstat>} {<-nr>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {($ Id.VSub_DollarName mode)}
                                        {<Id.Lit_Equals '='>}
                                        {(DQ <ipv6>)}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <rump.sysctl>
                              more_env: []
                              words: [{<rump.sysctl>} {<net.inet6.ip6.forwarding>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [1125 1140]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [
                        (command.Simple
                          blame_tok: <rump.sysctl>
                          more_env: []
                          words: [{<rump.sysctl>} {<net.inet.ip.forwarding>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [1112 1117]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <setup_forwarding>
      name: setup_forwarding
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [{<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName SOCKFWD)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<-o>}
                {<ignore>}
                {<rump.sysctl>}
                {<-w>}
                {<net.inet.ip.forwarding> <Id.Lit_Equals '='> <1>}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <setup_forwarding6>
      name: setup_forwarding6
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [{<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName SOCKFWD)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<-o>}
                {<ignore>}
                {<rump.sysctl>}
                {<-w>}
                {<net.inet6.ip6.forwarding> <Id.Lit_Equals '='> <1>}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <setup>
      name: setup
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <rump_server_start>
              more_env: []
              words: [{<rump_server_start>} {($ Id.VSub_DollarName SOCKSRC)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rump_server_start>
              more_env: []
              words: [{<rump_server_start>} {($ Id.VSub_DollarName SOCKFWD)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rump_server_start>
              more_env: []
              words: [{<rump_server_start>} {($ Id.VSub_DollarName SOCKDST)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <setup_endpoint>
              more_env: []
              words: [
                {<setup_endpoint>}
                {($ Id.VSub_DollarName SOCKSRC)}
                {($ Id.VSub_DollarName IP4SRC)}
                {($ Id.VSub_DollarName BUS_SRCGW)}
                {<ipv4>}
                {($ Id.VSub_DollarName IP4SRCGW)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <setup_endpoint>
              more_env: []
              words: [
                {<setup_endpoint>}
                {($ Id.VSub_DollarName SOCKDST)}
                {($ Id.VSub_DollarName IP4DST)}
                {($ Id.VSub_DollarName BUS_DSTGW)}
                {<ipv4>}
                {($ Id.VSub_DollarName IP4DSTGW)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <setup_forwarder>
              more_env: []
              words: [{<setup_forwarder>} {<ipv4>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <setup6>
      name: setup6
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <rump_server_start>
              more_env: []
              words: [{<rump_server_start>} {($ Id.VSub_DollarName SOCKSRC)} {<netinet6>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rump_server_start>
              more_env: []
              words: [{<rump_server_start>} {($ Id.VSub_DollarName SOCKFWD)} {<netinet6>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rump_server_start>
              more_env: []
              words: [{<rump_server_start>} {($ Id.VSub_DollarName SOCKDST)} {<netinet6>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <setup_endpoint>
              more_env: []
              words: [
                {<setup_endpoint>}
                {($ Id.VSub_DollarName SOCKSRC)}
                {($ Id.VSub_DollarName IP6SRC)}
                {($ Id.VSub_DollarName BUS_SRCGW)}
                {<ipv6>}
                {($ Id.VSub_DollarName IP6SRCGW)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <setup_endpoint>
              more_env: []
              words: [
                {<setup_endpoint>}
                {($ Id.VSub_DollarName SOCKDST)}
                {($ Id.VSub_DollarName IP6DST)}
                {($ Id.VSub_DollarName BUS_DSTGW)}
                {<ipv6>}
                {($ Id.VSub_DollarName IP6DSTGW)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <setup_forwarder>
              more_env: []
              words: [{<setup_forwarder>} {<ipv6>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_route_get>
      name: test_route_get
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [{<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName SOCKSRC)}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$DEBUG'>
                  more_env: []
                  words: [{($ Id.VSub_DollarName DEBUG)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <rump.netstat>
                  more_env: []
                  words: [{<rump.netstat>} {<-nr>} {<-f>} {<inet>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$DEBUG'>
                  more_env: []
                  words: [{($ Id.VSub_DollarName DEBUG)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <rump.arp>
                  more_env: []
                  words: [{<rump.arp>} {<-n>} {<-a>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <rump.arp>
              more_env: []
              words: [{<rump.arp>} {<-d>} {($ Id.VSub_DollarName IP4SRCGW)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              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_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'   route to: 10.0.1.2\n'>
                        <'destination: 10.0.1.2\n'>
                        <' local addr: 10.0.1.2\n'>
                        <'  interface: lo0\n'>
                        <'      flags: <UP,HOST,DONE,LLINFO,LOCAL>\n'>
                        <
' recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire\n'
                        >
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <rump.route>
              more_env: []
              words: [{<rump.route>} {<-n>} {<get>} {($ Id.VSub_DollarName IP4SRC)}]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./output'>})]
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$DEBUG'>
                  more_env: []
                  words: [{($ Id.VSub_DollarName DEBUG)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cat>
                  more_env: []
                  words: [{<cat>} {<'./expect'>} {<'./output'>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <sed>
              more_env: []
              words: [{<sed>} {<-i>} {(SQ <'$d'>)} {<'./output'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<diff>}
                {<'./expect'>}
                {<'./output'>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              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_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'   route to: 10.0.1.1\n'>
                        <'destination: 10.0.1.0\n'>
                        <'       mask: 255.255.255.0\n'>
                        <' local addr: 10.0.1.2\n'>
                        <'  interface: shmif0\n'>
                        <'      flags: <UP,DONE,CONNECTED>\n'>
                        <
' recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire\n'
                        >
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <rump.route>
              more_env: []
              words: [{<rump.route>} {<-n>} {<get>} {($ Id.VSub_DollarName IP4SRCGW)}]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./output'>})]
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$DEBUG'>
                  more_env: []
                  words: [{($ Id.VSub_DollarName DEBUG)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cat>
                  more_env: []
                  words: [{<cat>} {<'./expect'>} {<'./output'>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <sed>
              more_env: []
              words: [{<sed>} {<-i>} {(SQ <'$d'>)} {<'./output'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<diff>}
                {<'./expect'>}
                {<'./output'>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              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_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'   route to: 10.0.2.2\n'>
                        <'destination: default\n'>
                        <'       mask: default\n'>
                        <'    gateway: 10.0.1.1\n'>
                        <' local addr: 10.0.1.2\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
              blame_tok: <rump.route>
              more_env: []
              words: [{<rump.route>} {<-n>} {<get>} {($ Id.VSub_DollarName IP4DST)}]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./output'>})]
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$DEBUG'>
                  more_env: []
                  words: [{($ Id.VSub_DollarName DEBUG)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cat>
                  more_env: []
                  words: [{<cat>} {<'./expect'>} {<'./output'>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <sed>
              more_env: []
              words: [{<sed>} {<-i>} {(SQ <'$d'>)} {<'./output'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<diff>}
                {<'./expect'>}
                {<'./output'>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<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 IP4SRCGW)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              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_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'   route to: 10.0.1.1\n'>
                        <'destination: 10.0.1.0\n'>
                        <'       mask: 255.255.255.0\n'>
                        <' local addr: 10.0.1.2\n'>
                        <'  interface: shmif0\n'>
                        <'      flags: <UP,DONE,CONNECTED>\n'>
                        <
' recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire\n'
                        >
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <rump.route>
              more_env: []
              words: [{<rump.route>} {<-n>} {<get>} {($ Id.VSub_DollarName IP4SRCGW)}]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./output'>})]
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$DEBUG'>
                  more_env: []
                  words: [{($ Id.VSub_DollarName DEBUG)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cat>
                  more_env: []
                  words: [{<cat>} {<'./expect'>} {<'./output'>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <sed>
              more_env: []
              words: [{<sed>} {<-i>} {(SQ <'$d'>)} {<'./output'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<diff>}
                {<'./expect'>}
                {<'./output'>}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <test_route_get6>
      name: test_route_get6
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [{<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName SOCKSRC)}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$DEBUG'>
                  more_env: []
                  words: [{($ Id.VSub_DollarName DEBUG)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <rump.netstat>
                  more_env: []
                  words: [{<rump.netstat>} {<-nr>} {<-f>} {<inet>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$DEBUG'>
                  more_env: []
                  words: [{($ Id.VSub_DollarName DEBUG)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <rump.ndp>
                  more_env: []
                  words: [{<rump.ndp>} {<-n>} {<-a>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <rump.ndp>
              more_env: []
              words: [{<rump.ndp>} {<-d>} {($ Id.VSub_DollarName IP6SRCGW)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              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_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'   route to: fc00:0:0:1::2\n'>
                        <'destination: fc00:0:0:1::2\n'>
                        <' local addr: fc00:0:0:1::2\n'>
                        <'  interface: lo0\n'>
                        <'      flags: <UP,HOST,DONE,LLINFO,LOCAL>\n'>
                        <
' recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire\n'
                        >
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <rump.route>
              more_env: []
              words: [{<rump.route>} {<-n>} {<get>} {<-inet6>} {($ Id.VSub_DollarName IP6SRC)}]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./output'>})]
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$DEBUG'>
                  more_env: []
                  words: [{($ Id.VSub_DollarName DEBUG)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cat>
                  more_env: []
                  words: [{<cat>} {<'./expect'>} {<'./output'>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <sed>
              more_env: []
              words: [{<sed>} {<-i>} {(SQ <'$d'>)} {<'./output'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<diff>}
                {<'./expect'>}
                {<'./output'>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              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_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'   route to: fc00:0:0:1::1\n'>
                        <'destination: fc00:0:0:1::\n'>
                        <'       mask: ffff:ffff:ffff:ffff::\n'>
                        <' local addr: fc00:0:0:1::2\n'>
                        <'  interface: shmif0\n'>
                        <'      flags: <UP,DONE,CONNECTED>\n'>
                        <
' recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire\n'
                        >
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <rump.route>
              more_env: []
              words: [{<rump.route>} {<-n>} {<get>} {<-inet6>} {($ Id.VSub_DollarName IP6SRCGW)}]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./output'>})]
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$DEBUG'>
                  more_env: []
                  words: [{($ Id.VSub_DollarName DEBUG)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cat>
                  more_env: []
                  words: [{<cat>} {<'./expect'>} {<'./output'>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <sed>
              more_env: []
              words: [{<sed>} {<-i>} {(SQ <'$d'>)} {<'./output'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<diff>}
                {<'./expect'>}
                {<'./output'>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              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_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'   route to: fc00:0:0:2::2\n'>
                        <'destination: ::\n'>
                        <'       mask: default\n'>
                        <'    gateway: fc00:0:0:1::1\n'>
                        <' local addr: fc00:0:0:1::2\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
              blame_tok: <rump.route>
              more_env: []
              words: [{<rump.route>} {<-n>} {<get>} {<-inet6>} {($ Id.VSub_DollarName IP6DST)}]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./output'>})]
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$DEBUG'>
                  more_env: []
                  words: [{($ Id.VSub_DollarName DEBUG)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cat>
                  more_env: []
                  words: [{<cat>} {<'./expect'>} {<'./output'>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <sed>
              more_env: []
              words: [{<sed>} {<-i>} {(SQ <'$d'>)} {<'./output'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<diff>}
                {<'./expect'>}
                {<'./output'>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<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_DollarName IP6SRCGW)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              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_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'   route to: fc00:0:0:1::1\n'>
                        <'destination: fc00:0:0:1::\n'>
                        <'       mask: ffff:ffff:ffff:ffff::\n'>
                        <' local addr: fc00:0:0:1::2\n'>
                        <'  interface: shmif0\n'>
                        <'      flags: <UP,DONE,CONNECTED>\n'>
                        <
' recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire\n'
                        >
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <rump.route>
              more_env: []
              words: [{<rump.route>} {<-n>} {<get>} {<-inet6>} {($ Id.VSub_DollarName IP6SRCGW)}]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./output'>})]
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$DEBUG'>
                  more_env: []
                  words: [{($ Id.VSub_DollarName DEBUG)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cat>
                  more_env: []
                  words: [{<cat>} {<'./expect'>} {<'./output'>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <sed>
              more_env: []
              words: [{<sed>} {<-i>} {(SQ <'$d'>)} {<'./output'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_check>
              more_env: []
              words: [
                {<atf_check>}
                {<-s>}
                {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>}
                {<diff>}
                {<'./expect'>}
                {<'./output'>}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <route_command_get_body>
      name: route_command_get_body
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <setup>
              more_env: []
              words: [{<setup>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <setup_forwarding>
              more_env: []
              words: [{<setup_forwarding>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <test_route_get>
              more_env: []
              words: [{<test_route_get>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rump_server_destroy_ifaces>
              more_env: []
              words: [{<rump_server_destroy_ifaces>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <route_command_get6_body>
      name: route_command_get6_body
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <setup6>
              more_env: []
              words: [{<setup6>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <setup_forwarding6>
              more_env: []
              words: [{<setup_forwarding6>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <test_route_get6>
              more_env: []
              words: [{<test_route_get6>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rump_server_destroy_ifaces>
              more_env: []
              words: [{<rump_server_destroy_ifaces>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <route_command_get_cleanup>
      name: route_command_get_cleanup
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$DEBUG'>
                  more_env: []
                  words: [{($ Id.VSub_DollarName DEBUG)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <dump>
                  more_env: []
                  words: [{<dump>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <cleanup>
              more_env: []
              words: [{<cleanup>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <route_command_get6_cleanup>
      name: route_command_get6_cleanup
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$DEBUG'>
                  more_env: []
                  words: [{($ Id.VSub_DollarName DEBUG)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <dump>
                  more_env: []
                  words: [{<dump>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <cleanup>
              more_env: []
              words: [{<cleanup>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <atf_init_test_cases>
      name: atf_init_test_cases
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <atf_add_test_case>
              more_env: []
              words: [{<atf_add_test_case>} {<route_non_subnet_gateway>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_add_test_case>
              more_env: []
              words: [{<atf_add_test_case>} {<route_command_get>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <atf_add_test_case>
              more_env: []
              words: [{<atf_add_test_case>} {<route_command_get6>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
  ]
)