(command.CommandList
  children: [
    (command.Case
      to_match: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<id>} {<-u>}))}
      arms: [
        (case_arm pat_list:[{<0>}] spids:[116 117 119 -1])
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.Simple
              words: [{<echo>} {(DQ <'ERROR: Must be run as superuser.'>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<2>})
          ]
          spids: [121 122 -1 138]
        )
      ]
    )
    (command.ShFunction
      name: epair_base
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<ep>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ep)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<ifconfig>} {<epair>} {<create>})
                      )
                    }
                  spids: [155]
                )
              ]
            )
            (C {<expr>} {(${ Id.VSub_Name ep)} {<Id.Lit_Colon ':'>} {(SQ <'\\(.*\\).'>)})
          ]
        )
    )
    (command.ShFunction
      name: debug_err
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<_p>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_p)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [194]
                )
              ]
            )
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name DEBUG))}
              arms: [
                (case_arm pat_list:[{(DQ )}] spids:[212 214 216 -1])
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (C {<echo>} {(DQ <' ~~ start of debug ~~'>)})
                    (C {<echo>} {(DQ <' ~~ left:'>)})
                    (C {<jexec>} {(${ Id.VSub_Name ljid)} {<'/sbin/ipfw'>} {<show>})
                    (C {<echo>} {(DQ <' ~~ middle:'>)})
                    (C {<jexec>} {(${ Id.VSub_Name mjid)} {<'/sbin/ipfw'>} {<show>})
                    (C {<echo>} {(DQ <' ~~ right:'>)})
                    (C {<jexec>} {(${ Id.VSub_Name rjid)} {<'/sbin/ipfw'>} {<show>})
                    (C {<echo>} {(DQ <' ~~ result file:'>)})
                    (C {<cat>} {(${ Id.VSub_Name _p) <.1>})
                    (C {<echo>} {(DQ <' ~~ log file:'>)})
                    (C {<cat>} {(${ Id.VSub_Name _p)})
                    (C {<echo>} {(DQ <' ~~ end of debug ~~'>)})
                  ]
                  spids: [219 220 320 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: check_cleanup_result_file
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<_p>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_p)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [340]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<test>} {<Id.KW_Bang '!'>} {<-s>} {(${ Id.VSub_Name _p) <.1>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<echo>} {(DQ <'FAIL (output file empty).'>)})
                    (C {<debug_err>} {(${ Id.VSub_Name _p)})
                  ]
                  spids: [347 361]
                )
              ]
              else_action: [
                (command.Simple
                  words: [{<read>} {<line>}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {(${ Id.VSub_Name _p) <.1>}
                    )
                  ]
                  do_fork: T
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:l)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ <'/'> 
                            (braced_var_sub
                              token: <Id.VSub_Name line>
                              suffix_op: 
                                (suffix_op.Unary
                                  tok: <Id.VOp1_Pound '#'>
                                  arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>}
                                )
                            )
                          )
                        }
                      spids: [397]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<test>} {(DQ (${ Id.VSub_Name l))} {<Id.Lit_Equals '='>} 
                                  {(DQ (${ Id.VSub_Name _p))}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [(C {<echo>} {(DQ <PASS.>)})]
                      spids: [409 428]
                    )
                  ]
                  else_action: [
                    (C {<echo>} 
                      {
                        (DQ <'FAIL (expected: \''> (${ Id.VSub_Name _p) <'\' got \''> 
                          (${ Id.VSub_Name l) <'\').'>
                        )
                      }
                    )
                    (C {<debug_err>} {(${ Id.VSub_Name _p)})
                  ]
                )
              ]
            )
            (C {<rm>} {<-f>} {(${ Id.VSub_Name _p) <.1>})
            (C {<rm>} {<-f>} {(${ Id.VSub_Name _p)})
          ]
        )
    )
    (command.ShFunction
      name: run_test_tp
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<_descr>})
            (C {<local>} {<_sip>} {<_dip>} {<_fip>} {<_fport>} {<_dport>} {<_p>})
            (C {<local>} {<_nc_af>} {<_nc_p>})
            (C {<local>} {<_lport>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:descr)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [533]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_sip)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$2'))}
                  spids: [539]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_dip)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$3'))}
                  spids: [545]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_fip)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$4'))}
                  spids: [551]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_fport)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$5'))}
                  spids: [557]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_dport)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$6'))}
                  spids: [563]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_p)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$7'))}
                  spids: [569]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_nc_af)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$8'))}
                  spids: [575]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_lport)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name _dport)}
                  spids: [582]
                )
              ]
            )
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name _fport))}
              arms: [
                (case_arm
                  pat_list: [{(DQ )}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_lport)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name _dport))}
                          spids: [603]
                        )
                      ]
                    )
                  ]
                  spids: [599 601 610 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_lport)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (braced_var_sub
                                  token: <Id.VSub_Name _fport>
                                  suffix_op: (suffix_op.Unary tok:<Id.VOp1_Pound '#'> arg_word:{<','>})
                                )
                              )
                            }
                          spids: [616]
                        )
                      ]
                    )
                  ]
                  spids: [613 614 625 -1]
                )
              ]
            )
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name _p))}
              arms: [
                (case_arm
                  pat_list: [{<udp>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_nc_p)
                          op: assign_op.Equal
                          rhs: {(DQ <-u>)}
                          spids: [646]
                        )
                      ]
                    )
                  ]
                  spids: [643 644 651 -1]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OUT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<mktemp>} {<-t>} {(DQ <ipfwfwd> ($ Id.VSub_Dollar '$$') <-XXXXXX>)})
                      )
                    }
                  spids: [658]
                )
              ]
            )
            (C {<echo>} {<-n>} {(DQ (${ Id.VSub_Name descr) <' ('> (${ Id.VSub_Name OUT) <')..'>)})
            (command.Subshell
              child: 
                (command.CommandList
                  children: [
                    (C {<jexec>} {(${ Id.VSub_Name ljid)} {<'/sbin/ipfw'>} {<-f>} {<flush>})
                    (C {<jexec>} {(${ Id.VSub_Name ljid)} {<'/sbin/ipfw'>} {<-f>} {<zero>})
                    (C {<jexec>} {(${ Id.VSub_Name mjid)} {<'/sbin/ipfw'>} {<-f>} {<flush>})
                    (C {<jexec>} {(${ Id.VSub_Name mjid)} {<'/sbin/ipfw'>} {<-f>} {<zero>})
                    (C {<jexec>} {(${ Id.VSub_Name rjid)} {<'/sbin/ipfw'>} {<-f>} {<flush>})
                    (C {<jexec>} {(${ Id.VSub_Name rjid)} {<'/sbin/ipfw'>} {<-f>} {<zero>})
                    (C {<jexec>} {(${ Id.VSub_Name mjid)} {<'/sbin/ipfw'>} {<add>} {<100>} {<fwd>} 
                      {(${ Id.VSub_Name _fip) (${ Id.VSub_Name _fport)} {(${ Id.VSub_Name _p)} {<from>} {(${ Id.VSub_Name _sip)} {<to>} {(${ Id.VSub_Name _dip)}
                    )
                    (C {<jexec>} {(${ Id.VSub_Name mjid)} {<'/bin/sh'>} {<-c>} 
                      {
                        (DQ <'nc -w 10 '> (${ Id.VSub_Name _nc_af) <' -n '> (${ Id.VSub_Name _nc_p) 
                          <' -l '> (${ Id.VSub_Name _fip) <' '> (${ Id.VSub_Name _lport) <' > '> (${ Id.VSub_Name OUT) <'.1 &'>
                        )
                      }
                    )
                    (C {<jexec>} {(${ Id.VSub_Name rjid)} {<'/bin/sh'>} {<-c>} 
                      {
                        (DQ <'echo \''> (${ Id.VSub_Name OUT) <'\' | nc -w 1 -v '> 
                          (${ Id.VSub_Name _nc_af) <' -n '> (${ Id.VSub_Name _nc_p) <' '> (${ Id.VSub_Name _dip) <' '> (${ Id.VSub_Name _dport)
                        )
                      }
                    )
                  ]
                )
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(${ Id.VSub_Name OUT)}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
            )
            (C {<check_cleanup_result_file>} {(DQ (${ Id.VSub_Name OUT))})
          ]
        )
    )
    (command.ShFunction
      name: run_test_nh
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<_descr>})
            (C {<local>} {<_sip>} {<_dip>} {<_fip>} {<_fport>} {<_dport>} {<_p>})
            (C {<local>} {<_nc_af>} {<_nc_p>})
            (C {<local>} {<_lport>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:descr)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [944]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_sip)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$2'))}
                  spids: [950]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_dip)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$3'))}
                  spids: [956]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_fip)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$4'))}
                  spids: [962]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_fport)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$5'))}
                  spids: [968]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_dport)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$6'))}
                  spids: [974]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_p)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$7'))}
                  spids: [980]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_nc_af)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$8'))}
                  spids: [986]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_lport)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name _dport)}
                  spids: [993]
                )
              ]
            )
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name _fport))}
              arms: [
                (case_arm
                  pat_list: [{(DQ )}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_lport)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name _dport))}
                          spids: [1014]
                        )
                      ]
                    )
                  ]
                  spids: [1010 1012 1021 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_lport)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (braced_var_sub
                                  token: <Id.VSub_Name _fport>
                                  suffix_op: (suffix_op.Unary tok:<Id.VOp1_Pound '#'> arg_word:{<','>})
                                )
                              )
                            }
                          spids: [1027]
                        )
                      ]
                    )
                  ]
                  spids: [1024 1025 1036 -1]
                )
              ]
            )
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name _p))}
              arms: [
                (case_arm
                  pat_list: [{<udp>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_nc_p)
                          op: assign_op.Equal
                          rhs: {(DQ <-u>)}
                          spids: [1057]
                        )
                      ]
                    )
                  ]
                  spids: [1054 1055 1062 -1]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OUT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<mktemp>} {<-t>} {(DQ <ipfwfwd> ($ Id.VSub_Dollar '$$') <-XXXXXX>)})
                      )
                    }
                  spids: [1069]
                )
              ]
            )
            (C {<echo>} {<-n>} {(DQ (${ Id.VSub_Name descr) <' ('> (${ Id.VSub_Name OUT) <')..'>)})
            (command.Subshell
              child: 
                (command.CommandList
                  children: [
                    (C {<jexec>} {(${ Id.VSub_Name ljid)} {<'/sbin/ipfw'>} {<-f>} {<flush>})
                    (C {<jexec>} {(${ Id.VSub_Name ljid)} {<'/sbin/ipfw'>} {<-f>} {<zero>})
                    (C {<jexec>} {(${ Id.VSub_Name mjid)} {<'/sbin/ipfw'>} {<-f>} {<flush>})
                    (C {<jexec>} {(${ Id.VSub_Name mjid)} {<'/sbin/ipfw'>} {<-f>} {<zero>})
                    (C {<jexec>} {(${ Id.VSub_Name rjid)} {<'/sbin/ipfw'>} {<-f>} {<flush>})
                    (C {<jexec>} {(${ Id.VSub_Name rjid)} {<'/sbin/ipfw'>} {<-f>} {<zero>})
                    (C {<jexec>} {(${ Id.VSub_Name mjid)} {<'/sbin/ipfw'>} {<add>} {<100>} {<fwd>} 
                      {(${ Id.VSub_Name _fip)} {(${ Id.VSub_Name _p)} {<from>} {(${ Id.VSub_Name _sip)} {<to>} {(${ Id.VSub_Name _dip)}
                    )
                    (C {<jexec>} {(${ Id.VSub_Name ljid)} {<'/bin/sh'>} {<-c>} 
                      {
                        (DQ <'nc -w 10 '> (${ Id.VSub_Name _nc_af) <' -n '> (${ Id.VSub_Name _nc_p) 
                          <' -l '> (${ Id.VSub_Name _dip) <' '> (${ Id.VSub_Name _lport) <' > '> (${ Id.VSub_Name OUT) <'.1 &'>
                        )
                      }
                    )
                    (C {<jexec>} {(${ Id.VSub_Name rjid)} {<'/bin/sh'>} {<-c>} 
                      {
                        (DQ <'echo \''> (${ Id.VSub_Name OUT) <'\' | nc -w 1 -v '> 
                          (${ Id.VSub_Name _nc_af) <' -n '> (${ Id.VSub_Name _nc_p) <' '> (${ Id.VSub_Name _dip) <' '> (${ Id.VSub_Name _dport)
                        )
                      }
                    )
                  ]
                )
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(${ Id.VSub_Name OUT)}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
            )
            (C {<check_cleanup_result_file>} {(DQ (${ Id.VSub_Name OUT))})
          ]
        )
    )
    (C {<echo>} {(DQ <'==> Setting up test network'>)})
    (command.Simple
      words: [{<kldload>} {<-q>} {<ipfw>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})
        (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
      ]
      do_fork: T
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ljid)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (C {<jail>} {<-i>} {<-c>} {<-n>} {<lef> ($ Id.VSub_Dollar '$$')} 
                    {<host.hostname> <Id.Lit_Equals '='> <left.example.net>} {<vnet>} {<persist>}
                  )
              )
            }
          spids: [1333]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:mjid)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (C {<jail>} {<-i>} {<-c>} {<-n>} {<mid> ($ Id.VSub_Dollar '$$')} 
                    {<host.hostname> <Id.Lit_Equals '='> <center.example.net>} {<vnet>} {<persist>}
                  )
              )
            }
          spids: [1361]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:rjid)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (C {<jail>} {<-i>} {<-c>} {<-n>} {<right> ($ Id.VSub_Dollar '$$')} 
                    {<host.hostname> <Id.Lit_Equals '='> <right.example.net>} {<vnet>} {<persist>}
                  )
              )
            }
          spids: [1389]
        )
      ]
    )
    (C {<echo>} 
      {
        (DQ <'left '> (${ Id.VSub_Name ljid) <'   middle '> (${ Id.VSub_Name mjid) <'    right '> 
          (${ Id.VSub_Name rjid)
        )
      }
    )
    (C {<jexec>} {(${ Id.VSub_Name mjid)} {<sysctl>} {<net.inet.ip.forwarding> <Id.Lit_Equals '='> <1>})
    (C {<jexec>} {(${ Id.VSub_Name mjid)} {<sysctl>} {<net.inet6.ip6.forwarding> <Id.Lit_Equals '='> <1>})
    (C {<jexec>} {(${ Id.VSub_Name mjid)} {<sysctl>} 
      {<net.inet6.ip6.accept_rtadv> <Id.Lit_Equals '='> <0>}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:lmep)
          op: assign_op.Equal
          rhs: {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<epair_base>}))}
          spids: [1485]
        )
      ]
    )
    (C {<ifconfig>} {(${ Id.VSub_Name lmep) <a>} {<vnet>} {(${ Id.VSub_Name ljid)})
    (C {<ifconfig>} {(${ Id.VSub_Name lmep) <b>} {<vnet>} {(${ Id.VSub_Name mjid)})
    (C {<jexec>} {(${ Id.VSub_Name ljid)} {<ifconfig>} {<lo0>} {<inet>} {<'127.0.0.1/8'>})
    (C {<jexec>} {(${ Id.VSub_Name ljid)} {<ifconfig>} {<lo0>} {<inet>} {<'192.0.2.5/32'>} {<alias>})
    (C {<jexec>} {(${ Id.VSub_Name ljid)} {<ifconfig>} {<lo0>} {<inet6>} 
      {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> 
        <'1/128'>
      } {<alias>}
    )
    (C {<jexec>} {(${ Id.VSub_Name ljid)} {<ifconfig>} {(${ Id.VSub_Name lmep) <a>} {<inet>} 
      {<'192.0.2.1/30'>} {<up>}
    )
    (C {<jexec>} {(${ Id.VSub_Name ljid)} {<ifconfig>} {(${ Id.VSub_Name lmep) <a>} {<inet6>} 
      {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <'1/64'>} {<alias>}
    )
    (C {<jexec>} {(${ Id.VSub_Name ljid)} {<route>} {<add>} {<default>} {<192.0.2.2>})
    (C {<jexec>} {(${ Id.VSub_Name ljid)} {<route>} {<add>} {<-inet6>} {<default>} 
      {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <2>}
    )
    (C {<jexec>} {(${ Id.VSub_Name mjid)} {<ifconfig>} {<lo0>} {<inet>} {<'127.0.0.1/8'>})
    (C {<jexec>} {(${ Id.VSub_Name mjid)} {<ifconfig>} {<lo0>} {<inet>} {<'192.0.2.255/32'>} {<alias>})
    (C {<jexec>} {(${ Id.VSub_Name mjid)} {<ifconfig>} {<lo0>} {<inet6>} 
      {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <ffff> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> 
        <'1/128'>
      } {<alias>}
    )
    (C {<jexec>} {(${ Id.VSub_Name mjid)} {<ifconfig>} {(${ Id.VSub_Name lmep) <b>} {<inet>} 
      {<'192.0.2.2/30'>} {<up>}
    )
    (C {<jexec>} {(${ Id.VSub_Name mjid)} {<ifconfig>} {(${ Id.VSub_Name lmep) <b>} {<inet6>} 
      {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <'2/64'>} {<alias>}
    )
    (C {<jexec>} {(${ Id.VSub_Name mjid)} {<route>} {<add>} {<default>} {<192.0.2.1>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:mrep)
          op: assign_op.Equal
          rhs: {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<epair_base>}))}
          spids: [1773]
        )
      ]
    )
    (C {<ifconfig>} {(${ Id.VSub_Name mrep) <a>} {<vnet>} {(${ Id.VSub_Name mjid)})
    (C {<ifconfig>} {(${ Id.VSub_Name mrep) <b>} {<vnet>} {(${ Id.VSub_Name rjid)})
    (C {<jexec>} {(${ Id.VSub_Name mjid)} {<ifconfig>} {(${ Id.VSub_Name mrep) <a>} {<inet>} 
      {<'192.0.2.5/30'>} {<up>}
    )
    (C {<jexec>} {(${ Id.VSub_Name mjid)} {<ifconfig>} {(${ Id.VSub_Name mrep) <a>} {<inet6>} 
      {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> 
        <'1/64'>
      } {<alias>}
    )
    (C {<jexec>} {(${ Id.VSub_Name rjid)} {<ifconfig>} {<lo0>} {<inet>} {<'127.0.0.1/8'>})
    (C {<jexec>} {(${ Id.VSub_Name rjid)} {<ifconfig>} {(${ Id.VSub_Name mrep) <b>} {<inet>} 
      {<'192.0.2.6/30'>} {<up>}
    )
    (C {<jexec>} {(${ Id.VSub_Name rjid)} {<ifconfig>} {(${ Id.VSub_Name mrep) <b>} {<inet6>} 
      {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> 
        <'2/64'>
      } {<alias>}
    )
    (C {<jexec>} {(${ Id.VSub_Name rjid)} {<route>} {<add>} {<default>} {<192.0.2.5>})
    (C {<jexec>} {(${ Id.VSub_Name rjid)} {<route>} {<add>} {<-inet6>} {<default>} 
      {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>}
    )
    (C {<echo>} {(DQ <'==> Running tests'>)})
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:i) op:assign_op.Equal rhs:{<1>} spids:[1977])]
    )
    (C {<run_test_tp>} 
      {
        (DQ <'TEST '> (${ Id.VSub_Name i) 
          <' IPv4 UDP redirect local to other local address, same port'>
        )
      } {<192.0.2.6>} {<192.0.2.5>} {<192.0.2.255>} {(DQ )} {<12345>} {<udp>} {(DQ <-4>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:i)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Plus
                    left: <Id.Lit_ArithVarLike i>
                    right: {<Id.Lit_Digits 1>}
                  )
              )
            }
          spids: [2010]
        )
      ]
    )
    (C {<run_test_tp>} 
      {
        (DQ <'TEST '> (${ Id.VSub_Name i) 
          <' IPv4 UDP redirect local to other local address, different port'>
        )
      } {<192.0.2.6>} {<192.0.2.5>} {<192.0.2.255>} {(DQ <',65534'>)} {<12345>} {<udp>} {(DQ <-4>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:i)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Plus
                    left: <Id.Lit_ArithVarLike i>
                    right: {<Id.Lit_Digits 1>}
                  )
              )
            }
          spids: [2054]
        )
      ]
    )
    (C {<run_test_tp>} 
      {
        (DQ <'TEST '> (${ Id.VSub_Name i) 
          <' IPv4 TCP redirect local to other local address, same port'>
        )
      } {<192.0.2.6>} {<192.0.2.5>} {<192.0.2.255>} {(DQ )} {<12345>} {<tcp>} {(DQ <-4>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:i)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Plus
                    left: <Id.Lit_ArithVarLike i>
                    right: {<Id.Lit_Digits 1>}
                  )
              )
            }
          spids: [2094]
        )
      ]
    )
    (C {<run_test_tp>} 
      {
        (DQ <'TEST '> (${ Id.VSub_Name i) 
          <' IPv4 TCP redirect local to other local address, different port'>
        )
      } {<192.0.2.6>} {<192.0.2.5>} {<192.0.2.255>} {(DQ <',65534'>)} {<12345>} {<tcp>} {(DQ <-4>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:i)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Plus
                    left: <Id.Lit_ArithVarLike i>
                    right: {<Id.Lit_Digits 1>}
                  )
              )
            }
          spids: [2138]
        )
      ]
    )
    (C {<run_test_tp>} 
      {(DQ <'TEST '> (${ Id.VSub_Name i) <' IPv4 UDP redirect foreign to local address, same port'>)} {<192.0.2.6>} {<192.0.2.1>} {<192.0.2.255>} {(DQ )} {<12345>} {<udp>} {(DQ <-4>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:i)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Plus
                    left: <Id.Lit_ArithVarLike i>
                    right: {<Id.Lit_Digits 1>}
                  )
              )
            }
          spids: [2178]
        )
      ]
    )
    (C {<run_test_tp>} 
      {
        (DQ <'TEST '> (${ Id.VSub_Name i) 
          <' IPv4 UDP redirect foreign to local address, different port'>
        )
      } {<192.0.2.6>} {<192.0.2.1>} {<192.0.2.255>} {(DQ <',65534'>)} {<12345>} {<udp>} {(DQ <-4>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:i)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Plus
                    left: <Id.Lit_ArithVarLike i>
                    right: {<Id.Lit_Digits 1>}
                  )
              )
            }
          spids: [2222]
        )
      ]
    )
    (C {<run_test_tp>} 
      {(DQ <'TEST '> (${ Id.VSub_Name i) <' IPv4 TCP redirect foreign to local address, same port'>)} {<192.0.2.6>} {<192.0.2.1>} {<192.0.2.255>} {(DQ )} {<12345>} {<tcp>} {(DQ <-4>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:i)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Plus
                    left: <Id.Lit_ArithVarLike i>
                    right: {<Id.Lit_Digits 1>}
                  )
              )
            }
          spids: [2262]
        )
      ]
    )
    (C {<run_test_tp>} 
      {
        (DQ <'TEST '> (${ Id.VSub_Name i) 
          <' IPv4 TCP redirect foreign to local address, different port'>
        )
      } {<192.0.2.6>} {<192.0.2.1>} {<192.0.2.255>} {(DQ <',65534'>)} {<12345>} {<tcp>} {(DQ <-4>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:i)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Plus
                    left: <Id.Lit_ArithVarLike i>
                    right: {<Id.Lit_Digits 1>}
                  )
              )
            }
          spids: [2306]
        )
      ]
    )
    (C {<run_test_tp>} 
      {
        (DQ <'TEST '> (${ Id.VSub_Name i) 
          <' IPv6 UDP redirect local to other local address, same port'>
        )
      } {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <2>} 
      {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <ffff> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} {(DQ )} 
      {<12345>} {<udp>} {(DQ <-6>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:i)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Plus
                    left: <Id.Lit_ArithVarLike i>
                    right: {<Id.Lit_Digits 1>}
                  )
              )
            }
          spids: [2365]
        )
      ]
    )
    (C {<run_test_tp>} 
      {
        (DQ <'TEST '> (${ Id.VSub_Name i) 
          <' IPv6 UDP redirect local to other local address, different port'>
        )
      } {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <2>} 
      {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <ffff> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} 
      {(DQ <',65534'>)} {<12345>} {<udp>} {(DQ <-6>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:i)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Plus
                    left: <Id.Lit_ArithVarLike i>
                    right: {<Id.Lit_Digits 1>}
                  )
              )
            }
          spids: [2428]
        )
      ]
    )
    (C {<run_test_tp>} 
      {
        (DQ <'TEST '> (${ Id.VSub_Name i) 
          <' IPv6 TCP redirect local to other local address, same port'>
        )
      } {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <2>} 
      {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <ffff> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} {(DQ )} 
      {<12345>} {<tcp>} {(DQ <-6>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:i)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Plus
                    left: <Id.Lit_ArithVarLike i>
                    right: {<Id.Lit_Digits 1>}
                  )
              )
            }
          spids: [2487]
        )
      ]
    )
    (C {<run_test_tp>} 
      {
        (DQ <'TEST '> (${ Id.VSub_Name i) 
          <' IPv6 TCP redirect local to other local address, different port'>
        )
      } {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <2>} 
      {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <ffff> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} 
      {(DQ <',65534'>)} {<12345>} {<tcp>} {(DQ <-6>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:i)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Plus
                    left: <Id.Lit_ArithVarLike i>
                    right: {<Id.Lit_Digits 1>}
                  )
              )
            }
          spids: [2550]
        )
      ]
    )
    (C {<run_test_tp>} 
      {(DQ <'TEST '> (${ Id.VSub_Name i) <' IPv6 UDP redirect foreign to local address, same port'>)} {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <2>} 
      {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <ffff> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} {(DQ )} 
      {<12345>} {<udp>} {(DQ <-6>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:i)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Plus
                    left: <Id.Lit_ArithVarLike i>
                    right: {<Id.Lit_Digits 1>}
                  )
              )
            }
          spids: [2609]
        )
      ]
    )
    (C {<run_test_tp>} 
      {
        (DQ <'TEST '> (${ Id.VSub_Name i) 
          <' IPv6 UDP redirect foreign to local address, different port'>
        )
      } {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <2>} 
      {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <ffff> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} 
      {(DQ <',65534'>)} {<12345>} {<udp>} {(DQ <-6>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:i)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Plus
                    left: <Id.Lit_ArithVarLike i>
                    right: {<Id.Lit_Digits 1>}
                  )
              )
            }
          spids: [2672]
        )
      ]
    )
    (C {<run_test_tp>} 
      {(DQ <'TEST '> (${ Id.VSub_Name i) <' IPv6 TCP redirect foreign to local address, same port'>)} {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <2>} 
      {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <ffff> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} {(DQ )} 
      {<12345>} {<tcp>} {(DQ <-6>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:i)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Plus
                    left: <Id.Lit_ArithVarLike i>
                    right: {<Id.Lit_Digits 1>}
                  )
              )
            }
          spids: [2731]
        )
      ]
    )
    (C {<run_test_tp>} 
      {
        (DQ <'TEST '> (${ Id.VSub_Name i) 
          <' IPv6 TCP redirect foreign to local address, different port'>
        )
      } {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <2>} 
      {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <ffff> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} 
      {(DQ <',65534'>)} {<12345>} {<tcp>} {(DQ <-6>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:i)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Plus
                    left: <Id.Lit_ArithVarLike i>
                    right: {<Id.Lit_Digits 1>}
                  )
              )
            }
          spids: [2794]
        )
      ]
    )
    (C {<run_test_nh>} {(DQ <'TEST '> (${ Id.VSub_Name i) <' IPv4 UDP redirect to foreign address'>)} 
      {<192.0.2.6>} {<192.0.2.5>} {<192.0.2.1>} {(DQ )} {<12345>} {<udp>} {(DQ <-4>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:i)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Plus
                    left: <Id.Lit_ArithVarLike i>
                    right: {<Id.Lit_Digits 1>}
                  )
              )
            }
          spids: [2834]
        )
      ]
    )
    (C {<run_test_nh>} {(DQ <'TEST '> (${ Id.VSub_Name i) <' IPv4 TCP redirect to foreign address'>)} 
      {<192.0.2.6>} {<192.0.2.5>} {<192.0.2.1>} {(DQ )} {<12345>} {<tcp>} {(DQ <-4>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:i)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Plus
                    left: <Id.Lit_ArithVarLike i>
                    right: {<Id.Lit_Digits 1>}
                  )
              )
            }
          spids: [2877]
        )
      ]
    )
    (C {<run_test_nh>} {(DQ <'TEST '> (${ Id.VSub_Name i) <' IPv6 UDP redirect to foreign address'>)} 
      {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <2>} {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} 
      {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} {(DQ )} {<12345>} {<udp>} {(DQ <-6>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:i)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Plus
                    left: <Id.Lit_ArithVarLike i>
                    right: {<Id.Lit_Digits 1>}
                  )
              )
            }
          spids: [2936]
        )
      ]
    )
    (C {<run_test_nh>} {(DQ <'TEST '> (${ Id.VSub_Name i) <' IPv6 TCP redirect to foreign address'>)} 
      {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <2>} {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} 
      {<2001> <Id.Lit_Colon ':'> <db8> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} {(DQ )} {<12345>} {<tcp>} {(DQ <-6>)}
    )
    (C {<echo>} {(DQ <'==> Cleaning up in 3 seconds'>)})
    (C {<sleep>} {<3>})
    (C {<jail>} {<-r>} {(${ Id.VSub_Name rjid)})
    (C {<jail>} {<-r>} {(${ Id.VSub_Name mjid)})
    (C {<jail>} {<-r>} {(${ Id.VSub_Name ljid)})
    (command.ForEach
      iter_name: jid
      iter_words: [{(${ Id.VSub_Name rjid)} {(${ Id.VSub_Name mjid)} {(${ Id.VSub_Name ljid)}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: (C {<Id.Lit_Colon ':'>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:x)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    words: [{<jls>} {<-as>} {<-j>} {(${ Id.VSub_Name jid)} {<jid>}]
                                    redirects: [
                                      (redir
                                        op: <Id.Redir_Great '2>'>
                                        loc: (redir_loc.Fd fd:2)
                                        arg: {<'/dev/null'>}
                                      )
                                    ]
                                    do_fork: T
                                  )
                              )
                            }
                          spids: [3077]
                        )
                      ]
                    )
                    (command.Case
                      to_match: {(DQ (${ Id.VSub_Name x))}
                      arms: [
                        (case_arm
                          pat_list: [{<Id.Lit_VarLike 'jid='> <Id.Lit_Star '*'>}]
                          action: [
                            (command.Simple
                              words: [
                                {<echo>}
                                {(DQ <'Waiting for jail '> (${ Id.VSub_Name jid) <' to stop.'>)}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                            (C {<sleep>} {<1>})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [3109 3111 3135 -1]
                        )
                      ]
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Break break>)
                  ]
                )
            )
          ]
        )
    )
    (C {<ifconfig>} {(${ Id.VSub_Name lmep) <a>} {<destroy>})
    (C {<ifconfig>} {(${ Id.VSub_Name mrep) <a>} {<destroy>})
  ]
)