(CommandList
  children: [
    (C {(atf_test_case)} {(arpresolve_checks_interface_fib)} {(cleanup)})
    (FuncDef
      name: arpresolve_checks_interface_fib_head
      body: 
        (BraceGroup
          children: [
            (C {(atf_set)} {(DQ (descr))} 
              {(DQ ('arpresolve should check the interface fib, not the default fib, for routes'))}
            )
            (C {(atf_set)} {(DQ (require.user))} {(DQ (root))})
            (C {(atf_set)} {(DQ (require.config))} {(DQ (fibs))})
            (C {(atf_set)} {(DQ (require.progs))} {(DQ (nping))})
          ]
          spids: [144]
        )
      spids: [140 143]
    )
    (FuncDef
      name: arpresolve_checks_interface_fib_body
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ADDR0)
                  op: Equal
                  rhs: {(DQ (192.0.2.2))}
                  spids: [207]
                )
              ]
              spids: [207]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ADDR1)
                  op: Equal
                  rhs: {(DQ (192.0.2.3))}
                  spids: [213]
                )
              ]
              spids: [213]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SUBNET)
                  op: Equal
                  rhs: {(DQ (192.0.2.0))}
                  spids: [219]
                )
              ]
              spids: [219]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:MASK0) op:Equal rhs:{(DQ (24))} spids:[233])]
              spids: [233]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:MASK1) op:Equal rhs:{(DQ (25))} spids:[239])]
              spids: [239]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SPOOF_ADDR)
                  op: Equal
                  rhs: {(DQ (192.0.2.4))}
                  spids: [249]
                )
              ]
              spids: [249]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SPOOF_MAC)
                  op: Equal
                  rhs: {(DQ ('00:00:5E:00:53:00'))}
                  spids: [255]
                )
              ]
              spids: [255]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(0)} {(KW_Bang '!') (Lit_Other '=')} 
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [(C {(sysctl)} {(-n)} {(net.add_addr_allfibs)})]
                                )
                              left_token: <Left_Backtick '`'>
                              spids: [275 281]
                            )
                          } {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(atf_skip)} {(DQ ('This test requires net.add_addr_allfibs=0'))})]
                  spids: [16777215 286]
                )
              ]
              spids: [16777215 296]
            )
            (C {(get_fibs)} {(2)})
            (C {(get_epair)})
            (C {(setup_iface)} {(DQ ($ VSub_Name '$EPAIRA'))} {(DQ ($ VSub_Name '$FIB0'))} {(inet)} 
              {(${ VSub_Name ADDR0)} {(${ VSub_Name MASK0)}
            )
            (C {(setup_iface)} {(DQ ($ VSub_Name '$EPAIRB'))} {(DQ ($ VSub_Name '$FIB1'))} {(inet)} 
              {(${ VSub_Name ADDR1)} {(${ VSub_Name MASK1)}
            )
            (C {(setfib)} {(DQ ($ VSub_Name '$FIB0'))} {(nping)} {(-c)} {(1)} {(-e)} {(${ VSub_Name EPAIRA)} 
              {(-S)} {(${ VSub_Name SPOOF_ADDR)} {(--source-mac)} {(${ VSub_Name SPOOF_MAC)} {(--icmp)} {(--icmp-type)} 
              {(DQ (echo-request))} {(--icmp-code)} {(0)} {(--icmp-id)} {(0xdead)} {(--icmp-seq)} {(1)} {(--data)} {(0xbeef)} 
              {(${ VSub_Name ADDR1)}
            )
            (Pipeline
              children: [(C {(dmesg)}) (C {(grep)} {(DQ ('llinfo.*') (${ VSub_Name SPOOF_ADDR))})]
              negated: F
            )
            (C {(atf_check)} {(-o)} 
              {(match) (Lit_Other ':') (DQ (${ VSub_Name SPOOF_ADDR) ('.*expires'))} {(setfib)} {(DQ ($ VSub_Name '$FIB1'))} {(arp)} {(${ VSub_Name SPOOF_ADDR)}
            )
          ]
          spids: [196]
        )
      spids: [192 195]
    )
    (FuncDef
      name: arpresolve_checks_interface_fib_cleanup
      body: (BraceGroup children:[(C {(cleanup_ifaces)})] spids:[481])
      spids: [477 480]
    )
    (C {(atf_test_case)} {(loopback_and_network_routes_on_nondefault_fib)} {(cleanup)})
    (FuncDef
      name: loopback_and_network_routes_on_nondefault_fib_head
      body: 
        (BraceGroup
          children: [
            (C {(atf_set)} {(DQ (descr))} 
              {(DQ ("When creating and deleting loopback IPv4 routes, use the interface's fib"))}
            )
            (C {(atf_set)} {(DQ (require.user))} {(DQ (root))})
            (C {(atf_set)} {(DQ (require.config))} {(DQ (fibs))})
          ]
          spids: [503]
        )
      spids: [499 502]
    )
    (FuncDef
      name: loopback_and_network_routes_on_nondefault_fib_body
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ADDR)
                  op: Equal
                  rhs: {(DQ (192.0.2.2))}
                  spids: [556]
                )
              ]
              spids: [556]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SUBNET)
                  op: Equal
                  rhs: {(DQ (192.0.2.0))}
                  spids: [562]
                )
              ]
              spids: [562]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:MASK) op:Equal rhs:{(DQ (24))} spids:[568])]
              spids: [568]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(0)} {(KW_Bang '!') (Lit_Other '=')} 
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [(C {(sysctl)} {(-n)} {(net.add_addr_allfibs)})]
                                )
                              left_token: <Left_Backtick '`'>
                              spids: [588 594]
                            )
                          } {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(atf_skip)} {(DQ ('This test requires net.add_addr_allfibs=0'))})]
                  spids: [16777215 599]
                )
              ]
              spids: [16777215 609]
            )
            (C {(get_fibs)} {(1)})
            (C {(setup_tap)} {(${ VSub_Name FIB0)} {(inet)} {(${ VSub_Name ADDR)} {(${ VSub_Name MASK)})
            (Pipeline
              children: [
                (C {(setfib)} {(${ VSub_Name FIB0)} {(netstat)} {(-rn)} {(-f)} {(inet)})
                (C {(grep)} {(-q)} {(DQ ('^') (${ VSub_Name ADDR) ('.*UHS.*lo0'))})
              ]
              negated: F
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(0)} {(-ne)} {($ VSub_QMark '$?')} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(setfib)} {(${ VSub_Name FIB0)} {(netstat)} {(-rn)} {(-f)} {(inet)})
                    (C {(atf_fail)} {(DQ ('Host route did not appear in the correct FIB'))})
                  ]
                  spids: [16777215 686]
                )
              ]
              spids: [16777215 711]
            )
            (Pipeline
              children: [
                (C {(setfib)} {(0)} {(netstat)} {(-rn)} {(-f)} {(inet)})
                (C {(grep)} {(-q)} {(DQ ('^') (${ VSub_Name ADDR) ('.*UHS.*lo0'))})
              ]
              negated: F
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(0)} {(-eq)} {($ VSub_QMark '$?')} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(setfib)} {(0)} {(netstat)} {(-rn)} {(-f)} {(inet)})
                    (C {(atf_fail)} {(DQ ('Host route appeared in the wrong FIB'))})
                  ]
                  spids: [16777215 754]
                )
              ]
              spids: [16777215 777]
            )
            (Pipeline
              children: [
                (C {(setfib)} {(${ VSub_Name FIB0)} {(netstat)} {(-rn)} {(-f)} {(inet)})
                (C {(grep)} {(-q)} 
                  {
                    (DQ ('^') (${ VSub_Name SUBNET) (/) (${ VSub_Name MASK) ('.*') (${ VSub_Name TAPD))
                  }
                )
              ]
              negated: F
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(0)} {(-ne)} {($ VSub_QMark '$?')} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(setfib)} {(${ VSub_Name FIB0)} {(netstat)} {(-rn)} {(-f)} {(inet)})
                    (C {(atf_fail)} {(DQ ('Network route did not appear in the correct FIB'))})
                  ]
                  spids: [16777215 836]
                )
              ]
              spids: [16777215 861]
            )
            (Pipeline
              children: [
                (C {(setfib)} {(0)} {(netstat)} {(-rn)} {(-f)} {(inet)})
                (C {(grep)} {(-q)} 
                  {
                    (DQ ('^') (${ VSub_Name SUBNET) (/) (${ VSub_Name MASK) ('.*') (${ VSub_Name TAPD))
                  }
                )
              ]
              negated: F
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(0)} {(-eq)} {($ VSub_QMark '$?')} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(setfib)} {(0)} {(netstat)} {(-rn)} {(-f)} {(inet)})
                    (C {(atf_fail)} {(DQ ('Network route appeared in the wrong FIB'))})
                  ]
                  spids: [16777215 913]
                )
              ]
              spids: [16777215 936]
            )
          ]
          spids: [545]
        )
      spids: [541 544]
    )
    (FuncDef
      name: loopback_and_network_routes_on_nondefault_fib_cleanup
      body: (BraceGroup children:[(C {(cleanup_ifaces)})] spids:[945])
      spids: [941 944]
    )
    (C {(atf_test_case)} {(loopback_and_network_routes_on_nondefault_fib_inet6)} {(cleanup)})
    (FuncDef
      name: loopback_and_network_routes_on_nondefault_fib_inet6_head
      body: 
        (BraceGroup
          children: [
            (C {(atf_set)} {(DQ (descr))} 
              {(DQ ("When creating and deleting loopback IPv6 routes, use the interface's fib"))}
            )
            (C {(atf_set)} {(DQ (require.user))} {(DQ (root))})
            (C {(atf_set)} {(DQ (require.config))} {(DQ (fibs))})
          ]
          spids: [963]
        )
      spids: [959 962]
    )
    (FuncDef
      name: loopback_and_network_routes_on_nondefault_fib_inet6_body
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ADDR)
                  op: Equal
                  rhs: {(DQ ('2001:db8::2'))}
                  spids: [1016]
                )
              ]
              spids: [1016]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SUBNET)
                  op: Equal
                  rhs: {(DQ ('2001:db8::'))}
                  spids: [1022]
                )
              ]
              spids: [1022]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:MASK) op:Equal rhs:{(DQ (64))} spids:[1028])]
              spids: [1028]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(0)} {(KW_Bang '!') (Lit_Other '=')} 
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [(C {(sysctl)} {(-n)} {(net.add_addr_allfibs)})]
                                )
                              left_token: <Left_Backtick '`'>
                              spids: [1048 1054]
                            )
                          } {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(atf_skip)} {(DQ ('This test requires net.add_addr_allfibs=0'))})]
                  spids: [16777215 1059]
                )
              ]
              spids: [16777215 1069]
            )
            (C {(get_fibs)} {(1)})
            (C {(setup_tap)} {(${ VSub_Name FIB0)} {(inet6)} {(${ VSub_Name ADDR)} {(${ VSub_Name MASK)})
            (Pipeline
              children: [
                (C {(setfib)} {(${ VSub_Name FIB0)} {(netstat)} {(-rn)} {(-f)} {(inet6)})
                (C {(grep)} {(-q)} {(DQ ('^') (${ VSub_Name ADDR) ('.*UHS.*lo0'))})
              ]
              negated: F
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(0)} {(-ne)} {($ VSub_QMark '$?')} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(setfib)} {(${ VSub_Name FIB0)} {(netstat)} {(-rn)} {(-f)} {(inet6)})
                    (C {(atf_fail)} {(DQ ('Host route did not appear in the correct FIB'))})
                  ]
                  spids: [16777215 1146]
                )
              ]
              spids: [16777215 1171]
            )
            (Pipeline
              children: [
                (C {(setfib)} {(0)} {(netstat)} {(-rn)} {(-f)} {(inet6)})
                (C {(grep)} {(-q)} {(DQ ('^') (${ VSub_Name ADDR) ('.*UHS.*lo0'))})
              ]
              negated: F
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(0)} {(-eq)} {($ VSub_QMark '$?')} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(setfib)} {(0)} {(netstat)} {(-rn)} {(-f)} {(inet6)})
                    (C {(atf_fail)} {(DQ ('Host route appeared in the wrong FIB'))})
                  ]
                  spids: [16777215 1214]
                )
              ]
              spids: [16777215 1237]
            )
            (Pipeline
              children: [
                (C {(setfib)} {(${ VSub_Name FIB0)} {(netstat)} {(-rn)} {(-f)} {(inet6)})
                (C {(grep)} {(-q)} 
                  {
                    (DQ ('^') (${ VSub_Name SUBNET) (/) (${ VSub_Name MASK) ('.*') (${ VSub_Name TAPD))
                  }
                )
              ]
              negated: F
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(0)} {(-ne)} {($ VSub_QMark '$?')} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(setfib)} {(${ VSub_Name FIB0)} {(netstat)} {(-rn)} {(-f)} {(inet6)})
                    (C {(atf_fail)} {(DQ ('Network route did not appear in the correct FIB'))})
                  ]
                  spids: [16777215 1296]
                )
              ]
              spids: [16777215 1321]
            )
            (Pipeline
              children: [
                (C {(setfib)} {(0)} {(netstat)} {(-rn)} {(-f)} {(inet6)})
                (C {(grep)} {(-q)} 
                  {
                    (DQ ('^') (${ VSub_Name SUBNET) (/) (${ VSub_Name MASK) ('.*') (${ VSub_Name TAPD))
                  }
                )
              ]
              negated: F
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(0)} {(-eq)} {($ VSub_QMark '$?')} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(setfib)} {(0)} {(netstat)} {(-rn)} {(-f)} {(inet6)})
                    (C {(atf_fail)} {(DQ ('Network route appeared in the wrong FIB'))})
                  ]
                  spids: [16777215 1373]
                )
              ]
              spids: [16777215 1396]
            )
          ]
          spids: [1005]
        )
      spids: [1001 1004]
    )
    (FuncDef
      name: loopback_and_network_routes_on_nondefault_fib_inet6_cleanup
      body: (BraceGroup children:[(C {(cleanup_ifaces)})] spids:[1405])
      spids: [1401 1404]
    )
    (C {(atf_test_case)} {(default_route_with_multiple_fibs_on_same_subnet)} {(cleanup)})
    (FuncDef
      name: default_route_with_multiple_fibs_on_same_subnet_head
      body: 
        (BraceGroup
          children: [
            (C {(atf_set)} {(DQ (descr))} 
              {
                (DQ 
                  (
'Multiple interfaces on the same subnet but with different fibs can both have default IPv4 routes'
                  )
                )
              }
            )
            (C {(atf_set)} {(DQ (require.user))} {(DQ (root))})
            (C {(atf_set)} {(DQ (require.config))} {(DQ (fibs))})
          ]
          spids: [1427]
        )
      spids: [1423 1426]
    )
    (FuncDef
      name: default_route_with_multiple_fibs_on_same_subnet_body
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ADDR0)
                  op: Equal
                  rhs: {(DQ (192.0.2.2))}
                  spids: [1480]
                )
              ]
              spids: [1480]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ADDR1)
                  op: Equal
                  rhs: {(DQ (192.0.2.3))}
                  spids: [1486]
                )
              ]
              spids: [1486]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:GATEWAY)
                  op: Equal
                  rhs: {(DQ (192.0.2.1))}
                  spids: [1492]
                )
              ]
              spids: [1492]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SUBNET)
                  op: Equal
                  rhs: {(DQ (192.0.2.0))}
                  spids: [1498]
                )
              ]
              spids: [1498]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:MASK) op:Equal rhs:{(DQ (24))} spids:[1504])]
              spids: [1504]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(0)} {(KW_Bang '!') (Lit_Other '=')} 
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [(C {(sysctl)} {(-n)} {(net.add_addr_allfibs)})]
                                )
                              left_token: <Left_Backtick '`'>
                              spids: [1524 1530]
                            )
                          } {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(atf_skip)} {(DQ ('This test requires net.add_addr_allfibs=0'))})]
                  spids: [16777215 1535]
                )
              ]
              spids: [16777215 1545]
            )
            (C {(get_fibs)} {(2)})
            (C {(setup_tap)} {(DQ ($ VSub_Name '$FIB0'))} {(inet)} {(${ VSub_Name ADDR0)} 
              {(${ VSub_Name MASK)}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TAP0)
                  op: Equal
                  rhs: {($ VSub_Name '$TAP')}
                  spids: [1575]
                )
              ]
              spids: [1575]
            )
            (C {(setup_tap)} {(DQ ($ VSub_Name '$FIB1'))} {(inet)} {(${ VSub_Name ADDR1)} 
              {(${ VSub_Name MASK)}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TAP1)
                  op: Equal
                  rhs: {($ VSub_Name '$TAP')}
                  spids: [1596]
                )
              ]
              spids: [1596]
            )
            (C {(setfib)} {(${ VSub_Name FIB0)} {(route)} {(add)} {(default)} {(${ VSub_Name GATEWAY)})
            (C {(setfib)} {(${ VSub_Name FIB1)} {(route)} {(add)} {(default)} {(${ VSub_Name GATEWAY)})
            (C {(atf_check)} {(-o)} 
              {(match) (Lit_Other ':') (DQ ('^default.*') (${ VSub_Name TAP0) (Lit_Other '$'))} {(setfib)} {(${ VSub_Name FIB0)} {(netstat)} {(-rn)} {(-f)} {(inet)}
            )
            (C {(atf_check)} {(-o)} 
              {(match) (Lit_Other ':') (DQ ('^default.*') (${ VSub_Name TAP1) (Lit_Other '$'))} {(setfib)} {(${ VSub_Name FIB1)} {(netstat)} {(-rn)} {(-f)} {(inet)}
            )
          ]
          spids: [1469]
        )
      spids: [1465 1468]
    )
    (FuncDef
      name: default_route_with_multiple_fibs_on_same_subnet_cleanup
      body: (BraceGroup children:[(C {(cleanup_ifaces)})] spids:[1716])
      spids: [1712 1715]
    )
    (C {(atf_test_case)} {(default_route_with_multiple_fibs_on_same_subnet_inet6)} {(cleanup)})
    (FuncDef
      name: default_route_with_multiple_fibs_on_same_subnet_inet6_head
      body: 
        (BraceGroup
          children: [
            (C {(atf_set)} {(DQ (descr))} 
              {
                (DQ 
                  (
'Multiple interfaces on the same subnet but with different fibs can both have default IPv6 routes'
                  )
                )
              }
            )
            (C {(atf_set)} {(DQ (require.user))} {(DQ (root))})
            (C {(atf_set)} {(DQ (require.config))} {(DQ (fibs))})
          ]
          spids: [1734]
        )
      spids: [1730 1733]
    )
    (FuncDef
      name: default_route_with_multiple_fibs_on_same_subnet_inet6_body
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ADDR0)
                  op: Equal
                  rhs: {(DQ ('2001:db8::2'))}
                  spids: [1787]
                )
              ]
              spids: [1787]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ADDR1)
                  op: Equal
                  rhs: {(DQ ('2001:db8::3'))}
                  spids: [1793]
                )
              ]
              spids: [1793]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:GATEWAY)
                  op: Equal
                  rhs: {(DQ ('2001:db8::1'))}
                  spids: [1799]
                )
              ]
              spids: [1799]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SUBNET)
                  op: Equal
                  rhs: {(DQ ('2001:db8::'))}
                  spids: [1805]
                )
              ]
              spids: [1805]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:MASK) op:Equal rhs:{(DQ (64))} spids:[1811])]
              spids: [1811]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(0)} {(KW_Bang '!') (Lit_Other '=')} 
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [(C {(sysctl)} {(-n)} {(net.add_addr_allfibs)})]
                                )
                              left_token: <Left_Backtick '`'>
                              spids: [1831 1837]
                            )
                          } {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(atf_skip)} {(DQ ('This test requires net.add_addr_allfibs=0'))})]
                  spids: [16777215 1842]
                )
              ]
              spids: [16777215 1852]
            )
            (C {(get_fibs)} {(2)})
            (C {(setup_tap)} {(DQ ($ VSub_Name '$FIB0'))} {(inet6)} {(${ VSub_Name ADDR0)} 
              {(${ VSub_Name MASK)}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TAP0)
                  op: Equal
                  rhs: {($ VSub_Name '$TAP')}
                  spids: [1882]
                )
              ]
              spids: [1882]
            )
            (C {(setup_tap)} {(DQ ($ VSub_Name '$FIB1'))} {(inet6)} {(${ VSub_Name ADDR1)} 
              {(${ VSub_Name MASK)}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TAP1)
                  op: Equal
                  rhs: {($ VSub_Name '$TAP')}
                  spids: [1903]
                )
              ]
              spids: [1903]
            )
            (C {(setfib)} {(${ VSub_Name FIB0)} {(route)} {(-6)} {(add)} {(default)} 
              {(${ VSub_Name GATEWAY)}
            )
            (C {(setfib)} {(${ VSub_Name FIB1)} {(route)} {(-6)} {(add)} {(default)} 
              {(${ VSub_Name GATEWAY)}
            )
            (C {(atf_check)} {(-o)} 
              {(match) (Lit_Other ':') (DQ ('^default.*') (${ VSub_Name TAP0) (Lit_Other '$'))} {(setfib)} {(${ VSub_Name FIB0)} {(netstat)} {(-rn)} {(-f)} {(inet6)}
            )
            (C {(atf_check)} {(-o)} 
              {(match) (Lit_Other ':') (DQ ('^default.*') (${ VSub_Name TAP1) (Lit_Other '$'))} {(setfib)} {(${ VSub_Name FIB1)} {(netstat)} {(-rn)} {(-f)} {(inet6)}
            )
          ]
          spids: [1776]
        )
      spids: [1772 1775]
    )
    (FuncDef
      name: default_route_with_multiple_fibs_on_same_subnet_inet6_cleanup
      body: (BraceGroup children:[(C {(cleanup_ifaces)})] spids:[2027])
      spids: [2023 2026]
    )
    (C {(atf_test_case)} {(same_ip_multiple_ifaces_fib0)} {(cleanup)})
    (FuncDef
      name: same_ip_multiple_ifaces_fib0_head
      body: 
        (BraceGroup
          children: [
            (C {(atf_set)} {(DQ (descr))} 
              {
                (DQ 
                  (
'Can remove an IPv4 alias from an interface when the same IPv4 is also assigned to another interface.'
                  )
                )
              }
            )
            (C {(atf_set)} {(DQ (require.user))} {(DQ (root))})
            (C {(atf_set)} {(DQ (require.config))} {(DQ (fibs))})
          ]
          spids: [2058]
        )
      spids: [2054 2057]
    )
    (FuncDef
      name: same_ip_multiple_ifaces_fib0_body
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ADDR)
                  op: Equal
                  rhs: {(DQ (192.0.2.2))}
                  spids: [2102]
                )
              ]
              spids: [2102]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:MASK0) op:Equal rhs:{(DQ (24))} spids:[2108])]
              spids: [2108]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:MASK1) op:Equal rhs:{(DQ (32))} spids:[2114])]
              spids: [2114]
            )
            (C {(setup_tap)} {(0)} {(inet)} {(${ VSub_Name ADDR)} {(${ VSub_Name MASK0)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TAP0)
                  op: Equal
                  rhs: {(${ VSub_Name TAP)}
                  spids: [2149]
                )
              ]
              spids: [2149]
            )
            (C {(setup_tap)} {(0)} {(inet)} {(${ VSub_Name ADDR)} {(${ VSub_Name MASK1)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TAP1)
                  op: Equal
                  rhs: {(${ VSub_Name TAP)}
                  spids: [2170]
                )
              ]
              spids: [2170]
            )
            (C {(ifconfig)} {(${ VSub_Name TAP1)} {(-alias)} {(${ VSub_Name ADDR)})
            (C {(setup_tap)} {(0)} {(inet)} {(${ VSub_Name ADDR)} {(${ VSub_Name MASK0)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TAP0)
                  op: Equal
                  rhs: {(${ VSub_Name TAP)}
                  spids: [2209]
                )
              ]
              spids: [2209]
            )
            (C {(setup_tap)} {(0)} {(inet)} {(${ VSub_Name ADDR)} {(${ VSub_Name MASK1)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TAP1)
                  op: Equal
                  rhs: {(${ VSub_Name TAP)}
                  spids: [2230]
                )
              ]
              spids: [2230]
            )
            (C {(ifconfig)} {(${ VSub_Name TAP0)} {(-alias)} {(${ VSub_Name ADDR)})
          ]
          spids: [2099]
        )
      spids: [2095 2098]
    )
    (FuncDef
      name: same_ip_multiple_ifaces_fib0_cleanup
      body: (BraceGroup children:[(C {(cleanup_ifaces)})] spids:[2254])
      spids: [2250 2253]
    )
    (C {(atf_test_case)} {(same_ip_multiple_ifaces)} {(cleanup)})
    (FuncDef
      name: same_ip_multiple_ifaces_head
      body: 
        (BraceGroup
          children: [
            (C {(atf_set)} {(DQ (descr))} 
              {
                (DQ 
                  (
'Can remove an IPv4 alias from an interface when the same address is also assigned to another interface, on non-default FIBs.'
                  )
                )
              }
            )
            (C {(atf_set)} {(DQ (require.user))} {(DQ (root))})
            (C {(atf_set)} {(DQ (require.config))} {(DQ (fibs))})
          ]
          spids: [2296]
        )
      spids: [2292 2295]
    )
    (FuncDef
      name: same_ip_multiple_ifaces_body
      body: 
        (BraceGroup
          children: [
            (C {(atf_expect_fail)} 
              {
                (DQ 
                  (
'kern/189088 Assigning the same IP to multiple interfaces in different FIBs creates a host route for only one'
                  )
                )
              }
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ADDR)
                  op: Equal
                  rhs: {(DQ (192.0.2.2))}
                  spids: [2347]
                )
              ]
              spids: [2347]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:MASK0) op:Equal rhs:{(DQ (24))} spids:[2353])]
              spids: [2353]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:MASK1) op:Equal rhs:{(DQ (32))} spids:[2359])]
              spids: [2359]
            )
            (C {(get_fibs)} {(2)})
            (C {(setup_tap)} {(${ VSub_Name FIB0)} {(inet)} {(${ VSub_Name ADDR)} {(${ VSub_Name MASK0)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TAP0)
                  op: Equal
                  rhs: {(${ VSub_Name TAP)}
                  spids: [2401]
                )
              ]
              spids: [2401]
            )
            (C {(setup_tap)} {(${ VSub_Name FIB1)} {(inet)} {(${ VSub_Name ADDR)} {(${ VSub_Name MASK1)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TAP1)
                  op: Equal
                  rhs: {(${ VSub_Name TAP)}
                  spids: [2424]
                )
              ]
              spids: [2424]
            )
            (C {(ifconfig)} {(${ VSub_Name TAP1)} {(-alias)} {(${ VSub_Name ADDR)})
            (C {(atf_check)} {(-o)} 
              {(not-match) (Lit_Other ':') (DQ ('^') (${ VSub_Name ADDR) ('[[:space:]]'))} {(setfib)} {(${ VSub_Name FIB1)} {(netstat)} {(-rn)} {(-f)} {(inet)}
            )
            (C {(setup_tap)} {(${ VSub_Name FIB0)} {(inet)} {(${ VSub_Name ADDR)} {(${ VSub_Name MASK0)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TAP0)
                  op: Equal
                  rhs: {(${ VSub_Name TAP)}
                  spids: [2496]
                )
              ]
              spids: [2496]
            )
            (C {(setup_tap)} {(${ VSub_Name FIB1)} {(inet)} {(${ VSub_Name ADDR)} {(${ VSub_Name MASK1)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TAP1)
                  op: Equal
                  rhs: {(${ VSub_Name TAP)}
                  spids: [2519]
                )
              ]
              spids: [2519]
            )
            (C {(ifconfig)} {(${ VSub_Name TAP0)} {(-alias)} {(${ VSub_Name ADDR)})
            (C {(atf_check)} {(-o)} 
              {(not-match) (Lit_Other ':') (DQ ('^') (${ VSub_Name ADDR) ('[[:space:]]'))} {(setfib)} {(${ VSub_Name FIB0)} {(netstat)} {(-rn)} {(-f)} {(inet)}
            )
          ]
          spids: [2337]
        )
      spids: [2333 2336]
    )
    (FuncDef
      name: same_ip_multiple_ifaces_cleanup
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: TAPD
              iter_words: [
                {
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [(C {(tail)} {(-r)} {(DQ (ifaces_to_cleanup))})]
                      )
                    left_token: <Left_Backtick '`'>
                    spids: [2591 2599]
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(echo)} {(ifconfig)} {(${ VSub_Name TAPD)} {(destroy)})
                    (C {(ifconfig)} {(${ VSub_Name TAPD)} {(destroy)})
                  ]
                  spids: [2602 2625]
                )
              spids: [2590 2600]
            )
          ]
          spids: [2574]
        )
      spids: [2570 2573]
    )
    (C {(atf_test_case)} {(same_ip_multiple_ifaces_inet6)} {(cleanup)})
    (FuncDef
      name: same_ip_multiple_ifaces_inet6_head
      body: 
        (BraceGroup
          children: [
            (C {(atf_set)} {(DQ (descr))} 
              {
                (DQ 
                  (
'Can remove an IPv6 alias from an interface when the same address is also assigned to another interface, on non-default FIBs.'
                  )
                )
              }
            )
            (C {(atf_set)} {(DQ (require.user))} {(DQ (root))})
            (C {(atf_set)} {(DQ (require.config))} {(DQ (fibs))})
          ]
          spids: [2640]
        )
      spids: [2636 2639]
    )
    (FuncDef
      name: same_ip_multiple_ifaces_inet6_body
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ADDR)
                  op: Equal
                  rhs: {(DQ ('2001:db8::2'))}
                  spids: [2684]
                )
              ]
              spids: [2684]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:MASK0) op:Equal rhs:{(DQ (64))} spids:[2690])]
              spids: [2690]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:MASK1) op:Equal rhs:{(DQ (128))} spids:[2696])]
              spids: [2696]
            )
            (C {(get_fibs)} {(2)})
            (C {(setup_tap)} {(${ VSub_Name FIB0)} {(inet6)} {(${ VSub_Name ADDR)} {(${ VSub_Name MASK0)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TAP0)
                  op: Equal
                  rhs: {(${ VSub_Name TAP)}
                  spids: [2738]
                )
              ]
              spids: [2738]
            )
            (C {(setup_tap)} {(${ VSub_Name FIB1)} {(inet6)} {(${ VSub_Name ADDR)} {(${ VSub_Name MASK1)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TAP1)
                  op: Equal
                  rhs: {(${ VSub_Name TAP)}
                  spids: [2761]
                )
              ]
              spids: [2761]
            )
            (C {(atf_check)} {(-s)} {(ControlFlow_Exit exit) (Lit_Other ':') (0)} {(ifconfig)} 
              {(${ VSub_Name TAP1)} {(inet6)} {(${ VSub_Name ADDR)} {(-alias)}
            )
            (C {(atf_check)} {(-o)} 
              {(not-match) (Lit_Other ':') (DQ ('^') (${ VSub_Name ADDR) ('[[:space:]]'))} {(setfib)} {(${ VSub_Name FIB1)} {(netstat)} {(-rn)} {(-f)} {(inet6)}
            )
            (C {(ifconfig)} {(${ VSub_Name TAP1)} {(destroy)})
            (C {(ifconfig)} {(${ VSub_Name TAP0)} {(destroy)})
            (C {(setup_tap)} {(${ VSub_Name FIB0)} {(inet6)} {(${ VSub_Name ADDR)} {(${ VSub_Name MASK0)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TAP0)
                  op: Equal
                  rhs: {(${ VSub_Name TAP)}
                  spids: [2861]
                )
              ]
              spids: [2861]
            )
            (C {(setup_tap)} {(${ VSub_Name FIB1)} {(inet6)} {(${ VSub_Name ADDR)} {(${ VSub_Name MASK1)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TAP1)
                  op: Equal
                  rhs: {(${ VSub_Name TAP)}
                  spids: [2884]
                )
              ]
              spids: [2884]
            )
            (C {(atf_check)} {(-s)} {(ControlFlow_Exit exit) (Lit_Other ':') (0)} {(ifconfig)} 
              {(${ VSub_Name TAP0)} {(inet6)} {(${ VSub_Name ADDR)} {(-alias)}
            )
            (C {(atf_check)} {(-o)} 
              {(not-match) (Lit_Other ':') (DQ ('^') (${ VSub_Name ADDR) ('[[:space:]]'))} {(setfib)} {(${ VSub_Name FIB0)} {(netstat)} {(-rn)} {(-f)} {(inet6)}
            )
          ]
          spids: [2681]
        )
      spids: [2677 2680]
    )
    (FuncDef
      name: same_ip_multiple_ifaces_inet6_cleanup
      body: (BraceGroup children:[(C {(cleanup_ifaces)})] spids:[2949])
      spids: [2945 2948]
    )
    (C {(atf_test_case)} {(slaac_on_nondefault_fib6)} {(cleanup)})
    (FuncDef
      name: slaac_on_nondefault_fib6_head
      body: 
        (BraceGroup
          children: [
            (C {(atf_set)} {(DQ (descr))} {(DQ ('SLAAC correctly installs routes on non-default FIBs'))})
            (C {(atf_set)} {(DQ (require.user))} {(DQ (root))})
            (C {(atf_set)} {(DQ (require.config))} {(DQ (fibs))} {(DQ (allow_sysctl_side_effects))})
          ]
          spids: [2967]
        )
      spids: [2963 2966]
    )
    (FuncDef
      name: slaac_on_nondefault_fib6_body
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:PREFIX)
                  op: Equal
                  rhs: 
                    {
                      (DQ ('2001:db8:') 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [
                                (C {(printf)} {(DQ ('%x'))} 
                                  {
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [(C {(jot)} {(-r)} {(1)} {(0)} {(65535)})]
                                        )
                                      left_token: <Left_Backtick '`'>
                                      spids: [3033 3043]
                                    )
                                  }
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [3026 3044]
                        ) (':') 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [
                                (C {(printf)} {(DQ ('%x'))} 
                                  {
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [(C {(jot)} {(-r)} {(1)} {(0)} {(65535)})]
                                        )
                                      left_token: <Left_Backtick '`'>
                                      spids: [3053 3063]
                                    )
                                  }
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [3046 3064]
                        )
                      )
                    }
                  spids: [3023]
                )
              ]
              spids: [3023]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ADDR)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$PREFIX') ('::2'))}
                  spids: [3068]
                )
              ]
              spids: [3068]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:GATEWAY)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$PREFIX') ('::1'))}
                  spids: [3075]
                )
              ]
              spids: [3075]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SUBNET)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$PREFIX') (':'))}
                  spids: [3082]
                )
              ]
              spids: [3082]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:MASK) op:Equal rhs:{(DQ (64))} spids:[3089])]
              spids: [3089]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(0)} {(KW_Bang '!') (Lit_Other '=')} 
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [(C {(sysctl)} {(-n)} {(net.add_addr_allfibs)})]
                                )
                              left_token: <Left_Backtick '`'>
                              spids: [3109 3115]
                            )
                          } {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(atf_skip)} {(DQ ('This test requires net.add_addr_allfibs=0'))})]
                  spids: [16777215 3120]
                )
              ]
              spids: [16777215 3130]
            )
            (C {(get_fibs)} {(2)})
            (SimpleCommand
              words: [{(sysctl)} {(-n)} {(DQ (net.inet6.ip6.rfc6204w3))}]
              redirects: [
                (Redir
                  op_id: Redir_DGreat
                  fd: 16777215
                  arg_word: {(DQ (rfc6204w3.state))}
                  spids: [3147]
                )
              ]
            )
            (SimpleCommand
              words: [{(sysctl)} {(-n)} {(DQ (net.inet6.ip6.forwarding))}]
              redirects: [
                (Redir
                  op_id: Redir_DGreat
                  fd: 16777215
                  arg_word: {(DQ (forwarding.state))}
                  spids: [3162]
                )
              ]
            )
            (C {(sysctl)} {(net.inet6.ip6.forwarding) (Lit_Other '=') (1)})
            (C {(sysctl)} {(net.inet6.ip6.rfc6204w3) (Lit_Other '=') (1)})
            (C {(get_epair)})
            (C {(setup_iface)} {(DQ ($ VSub_Name '$EPAIRA'))} {(DQ ($ VSub_Name '$FIB0'))} {(inet6)} 
              {(${ VSub_Name ADDR)} {(${ VSub_Name MASK)}
            )
            (C {(echo)} {(setfib)} {($ VSub_Name '$FIB1')} {(ifconfig)} {(DQ ($ VSub_Name '$EPAIRB'))} 
              {(inet6)} {(-ifdisabled)} {(accept_rtadv)} {(fib)} {($ VSub_Name '$FIB1')} {(up)}
            )
            (C {(setfib)} {($ VSub_Name '$FIB1')} {(ifconfig)} {(DQ ($ VSub_Name '$EPAIRB'))} {(inet6)} 
              {(-ifdisabled)} {(accept_rtadv)} {(fib)} {($ VSub_Name '$FIB1')} {(up)}
            )
            (C {(rtadvd)} {(-p)} {(rtadvd.pid)} {(-C)} {(rtadvd.sock)} {(-c)} {(/dev/null)} 
              {(DQ ($ VSub_Name '$EPAIRA'))}
            )
            (C {(rtsol)} {(DQ ($ VSub_Name '$EPAIRB'))})
            (C {(atf_check)} {(-o)} 
              {(match) (Lit_Other ':') 
                (DQ ('inet6 ') (${ VSub_Name SUBNET) ('.*prefixlen ') (${ VSub_Name MASK) ('.*autoconf'))
              } {(ifconfig)} {(DQ ($ VSub_Name '$EPAIRB'))}
            )
            (C {(atf_check)} {(-o)} 
              {(match) (Lit_Other ':') 
                (DQ (${ VSub_Name SUBNET) ('.*') (Lit_Other '\\') ('<UHS') (Lit_Other '\\') ('>.*lo0'))
              } {(netstat)} {(-rnf)} {(inet6)} {(-F)} {($ VSub_Name '$FIB1')}
            )
            (C {(atf_check)} {(-o)} 
              {(match) (Lit_Other ':') 
                (DQ (${ VSub_Name SUBNET) (':/') (${ VSub_Name MASK) ('.*') (Lit_Other '\\') ('<U') 
                  (Lit_Other '\\') ('>.*') ($ VSub_Name '$EPAIRB')
                )
              } {(netstat)} {(-rnf)} {(inet6)} {(-F)} {($ VSub_Name '$FIB1')}
            )
            (C {(atf_check)} {(-o)} 
              {(match) (Lit_Other ':') 
                (DQ ('default.*') (Lit_Other '\\') ('<UG') (Lit_Other '\\') ('>.*') 
                  ($ VSub_Name '$EPAIRB')
                )
              } {(netstat)} {(-rnf)} {(inet6)} {(-F)} {($ VSub_Name '$FIB1')}
            )
            (ForEach
              iter_name: fib
              iter_words: [
                {
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [
                          (C {(seq)} {(0)} 
                            {
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Minus
                                    left: 
                                      (ArithWord
                                        w: 
                                          {
                                            (CommandSubPart
                                              command_list: 
                                                (CommandList
                                                  children: [(C {(sysctl)} {(-n)} {(net.fibs)})]
                                                )
                                              left_token: <Left_CommandSub '$('>
                                              spids: [3453 3459]
                                            )
                                          }
                                      )
                                    right: (ArithWord w:{(Lit_Digits 1)})
                                  )
                                spids: [3452 3465]
                              )
                            }
                          )
                        ]
                      )
                    left_token: <Left_CommandSub '$('>
                    spids: [3446 3466]
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$fib'))} {(Lit_Other '=')} 
                                  {(DQ ($ VSub_Name '$FIB1'))} {(-o)} {(DQ ($ VSub_Name '$fib'))} {(Lit_Other '=')} {(DQ ($ VSub_Name '$FIB0'))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(ControlFlow token:<ControlFlow_Continue continue>)]
                          spids: [16777215 3501]
                        )
                      ]
                      spids: [16777215 3507]
                    )
                    (C {(atf_check)} {(-o)} 
                      {(not-match) (Lit_Other ':') 
                        (DQ (${ VSub_Name SUBNET) ('.*') (Lit_Other '\\') ('<UHS') (Lit_Other '\\') 
                          ('>.*lo0')
                        )
                      } {(netstat)} {(-rnf)} {(inet6)} {(-F)} {($ VSub_Name '$fib')}
                    )
                    (C {(atf_check)} {(-o)} 
                      {(not-match) (Lit_Other ':') 
                        (DQ (${ VSub_Name SUBNET) (':/') (${ VSub_Name MASK) ('.*') (Lit_Other '\\') 
                          ('<U') (Lit_Other '\\') ('>.*') ($ VSub_Name '$EPAIRB')
                        )
                      } {(netstat)} {(-rnf)} {(inet6)} {(-F)} {($ VSub_Name '$fib')}
                    )
                    (C {(atf_check)} {(-o)} 
                      {(not-match) (Lit_Other ':') 
                        (DQ ('default.*') (Lit_Other '\\') ('<UG') (Lit_Other '\\') ('>.*') 
                          ($ VSub_Name '$EPAIRB')
                        )
                      } {(netstat)} {(-rnf)} {(inet6)} {(-F)} {($ VSub_Name '$fib')}
                    )
                  ]
                  spids: [3469 3603]
                )
              spids: [3445 3467]
            )
          ]
          spids: [3012]
        )
      spids: [3008 3011]
    )
    (FuncDef
      name: slaac_on_nondefault_fib6_cleanup
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-f)} {(DQ (rtadvd.pid))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(pkill)} {(-kill)} {(-F)} {(rtadvd.pid)})
                    (C {(rm)} {(-f)} {(rtadvd.pid)})
                  ]
                  spids: [16777215 3627]
                )
              ]
              spids: [16777215 3662]
            )
            (C {(cleanup_ifaces)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-f)} {(DQ (forwarding.state))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(sysctl)} 
                      {(DQ (net.inet6.ip6.forwarding)) (Lit_Other '=') 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [(C {(cat)} {(DQ (forwarding.state))})]
                            )
                          left_token: <Left_Backtick '`'>
                          spids: [3691 3697]
                        )
                      }
                    )
                    (C {(rm)} {(DQ (forwarding.state))})
                  ]
                  spids: [16777215 3682]
                )
              ]
              spids: [16777215 3707]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-f)} {(DQ (rfc6204w3.state))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(sysctl)} 
                      {(DQ (net.inet6.ip6.rfc6204w3)) (Lit_Other '=') 
                        (CommandSubPart
                          command_list: (CommandList children:[(C {(cat)} {(DQ (rfc6204w3.state))})])
                          left_token: <Left_Backtick '`'>
                          spids: [3733 3739]
                        )
                      }
                    )
                    (C {(rm)} {(DQ (rfc6204w3.state))})
                  ]
                  spids: [16777215 3724]
                )
              ]
              spids: [16777215 3749]
            )
          ]
          spids: [3611]
        )
      spids: [3607 3610]
    )
    (C {(atf_test_case)} {(subnet_route_with_multiple_fibs_on_same_subnet)} {(cleanup)})
    (FuncDef
      name: subnet_route_with_multiple_fibs_on_same_subnet_head
      body: 
        (BraceGroup
          children: [
            (C {(atf_set)} {(DQ (descr))} 
              {(DQ ('Multiple FIBs can have IPv4 subnet routes for the same subnet'))}
            )
            (C {(atf_set)} {(DQ (require.user))} {(DQ (root))})
            (C {(atf_set)} {(DQ (require.config))} {(DQ (fibs))})
          ]
          spids: [3767]
        )
      spids: [3763 3766]
    )
    (FuncDef
      name: subnet_route_with_multiple_fibs_on_same_subnet_body
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ADDR0)
                  op: Equal
                  rhs: {(DQ (192.0.2.2))}
                  spids: [3820]
                )
              ]
              spids: [3820]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ADDR1)
                  op: Equal
                  rhs: {(DQ (192.0.2.3))}
                  spids: [3826]
                )
              ]
              spids: [3826]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SUBNET)
                  op: Equal
                  rhs: {(DQ (192.0.2.0))}
                  spids: [3832]
                )
              ]
              spids: [3832]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:MASK) op:Equal rhs:{(DQ (24))} spids:[3838])]
              spids: [3838]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(0)} {(KW_Bang '!') (Lit_Other '=')} 
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [(C {(sysctl)} {(-n)} {(net.add_addr_allfibs)})]
                                )
                              left_token: <Left_Backtick '`'>
                              spids: [3858 3864]
                            )
                          } {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(atf_skip)} {(DQ ('This test requires net.add_addr_allfibs=0'))})]
                  spids: [16777215 3869]
                )
              ]
              spids: [16777215 3879]
            )
            (C {(get_fibs)} {(2)})
            (C {(setup_tap)} {(DQ ($ VSub_Name '$FIB0'))} {(inet)} {(${ VSub_Name ADDR0)} 
              {(${ VSub_Name MASK)}
            )
            (C {(setup_tap)} {(DQ ($ VSub_Name '$FIB1'))} {(inet)} {(${ VSub_Name ADDR1)} 
              {(${ VSub_Name MASK)}
            )
            (C {(atf_check)} {(-o)} {(ignore)} {(setfib)} {(DQ ($ VSub_Name '$FIB0'))} {(route)} {(get)} 
              {($ VSub_Name '$ADDR1')}
            )
            (C {(atf_check)} {(-o)} {(ignore)} {(setfib)} {(DQ ($ VSub_Name '$FIB1'))} {(route)} {(get)} 
              {($ VSub_Name '$ADDR0')}
            )
          ]
          spids: [3809]
        )
      spids: [3805 3808]
    )
    (FuncDef
      name: subnet_route_with_multiple_fibs_on_same_subnet_cleanup
      body: (BraceGroup children:[(C {(cleanup_ifaces)})] spids:[3975])
      spids: [3971 3974]
    )
    (C {(atf_test_case)} {(subnet_route_with_multiple_fibs_on_same_subnet_inet6)} {(cleanup)})
    (FuncDef
      name: subnet_route_with_multiple_fibs_on_same_subnet_inet6_head
      body: 
        (BraceGroup
          children: [
            (C {(atf_set)} {(DQ (descr))} 
              {(DQ ('Multiple FIBs can have IPv6 subnet routes for the same subnet'))}
            )
            (C {(atf_set)} {(DQ (require.user))} {(DQ (root))})
            (C {(atf_set)} {(DQ (require.config))} {(DQ (fibs))})
          ]
          spids: [3993]
        )
      spids: [3989 3992]
    )
    (FuncDef
      name: subnet_route_with_multiple_fibs_on_same_subnet_inet6_body
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ADDR0)
                  op: Equal
                  rhs: {(DQ ('2001:db8::2'))}
                  spids: [4046]
                )
              ]
              spids: [4046]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ADDR1)
                  op: Equal
                  rhs: {(DQ ('2001:db8::3'))}
                  spids: [4052]
                )
              ]
              spids: [4052]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SUBNET)
                  op: Equal
                  rhs: {(DQ ('2001:db8::'))}
                  spids: [4058]
                )
              ]
              spids: [4058]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:MASK) op:Equal rhs:{(DQ (64))} spids:[4064])]
              spids: [4064]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(0)} {(KW_Bang '!') (Lit_Other '=')} 
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [(C {(sysctl)} {(-n)} {(net.add_addr_allfibs)})]
                                )
                              left_token: <Left_Backtick '`'>
                              spids: [4084 4090]
                            )
                          } {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(atf_skip)} {(DQ ('This test requires net.add_addr_allfibs=0'))})]
                  spids: [16777215 4095]
                )
              ]
              spids: [16777215 4105]
            )
            (C {(get_fibs)} {(2)})
            (C {(setup_tap)} {(DQ ($ VSub_Name '$FIB0'))} {(inet6)} {(${ VSub_Name ADDR0)} 
              {(${ VSub_Name MASK)}
            )
            (C {(setup_tap)} {(DQ ($ VSub_Name '$FIB1'))} {(inet6)} {(${ VSub_Name ADDR1)} 
              {(${ VSub_Name MASK)}
            )
            (C {(atf_check)} {(-o)} {(ignore)} {(setfib)} {(DQ ($ VSub_Name '$FIB0'))} {(route)} {(-6)} 
              {(get)} {($ VSub_Name '$ADDR1')}
            )
            (C {(atf_check)} {(-o)} {(ignore)} {(setfib)} {(DQ ($ VSub_Name '$FIB1'))} {(route)} {(-6)} 
              {(get)} {($ VSub_Name '$ADDR0')}
            )
          ]
          spids: [4035]
        )
      spids: [4031 4034]
    )
    (FuncDef
      name: subnet_route_with_multiple_fibs_on_same_subnet_inet6_cleanup
      body: (BraceGroup children:[(C {(cleanup_ifaces)})] spids:[4205])
      spids: [4201 4204]
    )
    (C {(atf_test_case)} {(udp_dontroute)} {(cleanup)})
    (FuncDef
      name: udp_dontroute_head
      body: 
        (BraceGroup
          children: [
            (C {(atf_set)} {(DQ (descr))} 
              {
                (DQ 
                  (
'Source address selection for UDP packets with SO_DONTROUTE on non-default FIBs works'
                  )
                )
              }
            )
            (C {(atf_set)} {(DQ (require.user))} {(DQ (root))})
            (C {(atf_set)} {(DQ (require.config))} {(DQ (fibs))})
          ]
          spids: [4262]
        )
      spids: [4258 4261]
    )
    (FuncDef
      name: udp_dontroute_body
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ADDR0)
                  op: Equal
                  rhs: {(DQ (192.0.2.2))}
                  spids: [4315]
                )
              ]
              spids: [4315]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ADDR1)
                  op: Equal
                  rhs: {(DQ (192.0.2.3))}
                  spids: [4321]
                )
              ]
              spids: [4321]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SUBNET)
                  op: Equal
                  rhs: {(DQ (192.0.2.0))}
                  spids: [4327]
                )
              ]
              spids: [4327]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:MASK) op:Equal rhs:{(DQ (24))} spids:[4333])]
              spids: [4333]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TARGET)
                  op: Equal
                  rhs: {(DQ (192.0.2.100))}
                  spids: [4343]
                )
              ]
              spids: [4343]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SRCDIR)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(atf_get_srcdir)})])
                        left_token: <Left_Backtick '`'>
                        spids: [4350 4352]
                      )
                    }
                  spids: [4349]
                )
              ]
              spids: [4349]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(0)} {(KW_Bang '!') (Lit_Other '=')} 
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [(C {(sysctl)} {(-n)} {(net.add_addr_allfibs)})]
                                )
                              left_token: <Left_Backtick '`'>
                              spids: [4369 4375]
                            )
                          } {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(atf_skip)} {(DQ ('This test requires net.add_addr_allfibs=0'))})]
                  spids: [16777215 4380]
                )
              ]
              spids: [16777215 4390]
            )
            (C {(get_fibs)} {(2)})
            (C {(setup_tap)} {(${ VSub_Name FIB0)} {(inet)} {(${ VSub_Name ADDR0)} {(${ VSub_Name MASK)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TARGET_TAP)
                  op: Equal
                  rhs: {(${ VSub_Name TAP)}
                  spids: [4420]
                )
              ]
              spids: [4420]
            )
            (C {(setup_tap)} {(${ VSub_Name FIB1)} {(inet)} {(${ VSub_Name ADDR1)} {(${ VSub_Name MASK)})
            (C {(atf_check)} {(-o)} {(ignore)} {(setfib)} {(${ VSub_Name FIB0)} 
              {(${ VSub_Name SRCDIR) (/udp_dontroute)} {(${ VSub_Name TARGET)} {(/dev/) (${ VSub_Name TARGET_TAP)}
            )
            (C {(cleanup_ifaces)})
            (C {(setup_tap)} {(${ VSub_Name FIB0)} {(inet)} {(${ VSub_Name ADDR0)} {(${ VSub_Name MASK)})
            (C {(setup_tap)} {(${ VSub_Name FIB1)} {(inet)} {(${ VSub_Name ADDR1)} {(${ VSub_Name MASK)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TARGET_TAP)
                  op: Equal
                  rhs: {(${ VSub_Name TAP)}
                  spids: [4523]
                )
              ]
              spids: [4523]
            )
            (C {(atf_check)} {(-o)} {(ignore)} {(setfib)} {(${ VSub_Name FIB1)} 
              {(${ VSub_Name SRCDIR) (/udp_dontroute)} {(${ VSub_Name TARGET)} {(/dev/) (${ VSub_Name TARGET_TAP)}
            )
          ]
          spids: [4304]
        )
      spids: [4300 4303]
    )
    (FuncDef
      name: udp_dontroute_cleanup
      body: (BraceGroup children:[(C {(cleanup_ifaces)})] spids:[4565])
      spids: [4561 4564]
    )
    (C {(atf_test_case)} {(udp_dontroute6)} {(cleanup)})
    (FuncDef
      name: udp_dontroute6_head
      body: 
        (BraceGroup
          children: [
            (C {(atf_set)} {(DQ (descr))} 
              {
                (DQ 
                  (
'Source address selection for UDP IPv6 packets with SO_DONTROUTE on non-default FIBs works'
                  )
                )
              }
            )
            (C {(atf_set)} {(DQ (require.user))} {(DQ (root))})
            (C {(atf_set)} {(DQ (require.config))} {(DQ (fibs))})
          ]
          spids: [4583]
        )
      spids: [4579 4582]
    )
    (FuncDef
      name: udp_dontroute6_body
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ADDR0)
                  op: Equal
                  rhs: {(DQ ('2001:db8::2'))}
                  spids: [4636]
                )
              ]
              spids: [4636]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ADDR1)
                  op: Equal
                  rhs: {(DQ ('2001:db8::3'))}
                  spids: [4642]
                )
              ]
              spids: [4642]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SUBNET)
                  op: Equal
                  rhs: {(DQ ('2001:db8::'))}
                  spids: [4648]
                )
              ]
              spids: [4648]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:MASK) op:Equal rhs:{(DQ (64))} spids:[4654])]
              spids: [4654]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TARGET)
                  op: Equal
                  rhs: {(DQ ('2001:db8::100'))}
                  spids: [4664]
                )
              ]
              spids: [4664]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SRCDIR)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(atf_get_srcdir)})])
                        left_token: <Left_Backtick '`'>
                        spids: [4671 4673]
                      )
                    }
                  spids: [4670]
                )
              ]
              spids: [4670]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(0)} {(KW_Bang '!') (Lit_Other '=')} 
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [(C {(sysctl)} {(-n)} {(net.add_addr_allfibs)})]
                                )
                              left_token: <Left_Backtick '`'>
                              spids: [4690 4696]
                            )
                          } {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(atf_skip)} {(DQ ('This test requires net.add_addr_allfibs=0'))})]
                  spids: [16777215 4701]
                )
              ]
              spids: [16777215 4711]
            )
            (C {(get_fibs)} {(2)})
            (C {(setup_tap)} {(${ VSub_Name FIB0)} {(inet6)} {(${ VSub_Name ADDR0)} {(${ VSub_Name MASK)} 
              {(no_dad)}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TARGET_TAP)
                  op: Equal
                  rhs: {(${ VSub_Name TAP)}
                  spids: [4751]
                )
              ]
              spids: [4751]
            )
            (C {(setup_tap)} {(${ VSub_Name FIB1)} {(inet6)} {(${ VSub_Name ADDR1)} {(${ VSub_Name MASK)} 
              {(no_dad)}
            )
            (C {(atf_check)} {(-o)} {(ignore)} {(setfib)} {(${ VSub_Name FIB0)} 
              {(${ VSub_Name SRCDIR) (/udp_dontroute)} {(-6)} {(${ VSub_Name TARGET)} {(/dev/) (${ VSub_Name TARGET_TAP)}
            )
            (C {(cleanup_ifaces)})
            (C {(setup_tap)} {(${ VSub_Name FIB0)} {(inet6)} {(${ VSub_Name ADDR0)} {(${ VSub_Name MASK)} 
              {(no_dad)}
            )
            (C {(setup_tap)} {(${ VSub_Name FIB1)} {(inet6)} {(${ VSub_Name ADDR1)} {(${ VSub_Name MASK)} 
              {(no_dad)}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TARGET_TAP)
                  op: Equal
                  rhs: {(${ VSub_Name TAP)}
                  spids: [4862]
                )
              ]
              spids: [4862]
            )
            (C {(atf_check)} {(-o)} {(ignore)} {(setfib)} {(${ VSub_Name FIB1)} 
              {(${ VSub_Name SRCDIR) (/udp_dontroute)} {(-6)} {(${ VSub_Name TARGET)} {(/dev/) (${ VSub_Name TARGET_TAP)}
            )
          ]
          spids: [4625]
        )
      spids: [4621 4624]
    )
    (FuncDef
      name: udp_dontroute6_cleanup
      body: (BraceGroup children:[(C {(cleanup_ifaces)})] spids:[4906])
      spids: [4902 4905]
    )
    (FuncDef
      name: atf_init_test_cases
      body: 
        (BraceGroup
          children: [
            (C {(atf_add_test_case)} {(arpresolve_checks_interface_fib)})
            (C {(atf_add_test_case)} {(loopback_and_network_routes_on_nondefault_fib)})
            (C {(atf_add_test_case)} {(loopback_and_network_routes_on_nondefault_fib_inet6)})
            (C {(atf_add_test_case)} {(default_route_with_multiple_fibs_on_same_subnet)})
            (C {(atf_add_test_case)} {(default_route_with_multiple_fibs_on_same_subnet_inet6)})
            (C {(atf_add_test_case)} {(same_ip_multiple_ifaces_fib0)})
            (C {(atf_add_test_case)} {(same_ip_multiple_ifaces)})
            (C {(atf_add_test_case)} {(same_ip_multiple_ifaces_inet6)})
            (C {(atf_add_test_case)} {(slaac_on_nondefault_fib6)})
            (C {(atf_add_test_case)} {(subnet_route_with_multiple_fibs_on_same_subnet)})
            (C {(atf_add_test_case)} {(subnet_route_with_multiple_fibs_on_same_subnet_inet6)})
            (C {(atf_add_test_case)} {(udp_dontroute)})
            (C {(atf_add_test_case)} {(udp_dontroute6)})
          ]
          spids: [4919]
        )
      spids: [4915 4918]
    )
    (FuncDef
      name: get_fibs
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:NUMFIBS)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [5006]
                )
              ]
              spids: [5006]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:net_fibs)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(sysctl)} {(-n)} {(net.fibs)})])
                        left_token: <Left_Backtick '`'>
                        spids: [5011 5017]
                      )
                    }
                  spids: [5010]
                )
              ]
              spids: [5010]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:i) op:Equal rhs:{(0)} spids:[5020])]
              spids: [5020]
            )
            (While
              cond: [
                (Sentence
                  child: 
                    (C {(Lit_Other '[')} {($ VSub_Name '$i')} {(-lt)} {(DQ ($ VSub_Name '$NUMFIBS'))} 
                      {(Lit_Other ']')}
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:fib)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(atf_config_get)} {(DQ (fibs))})
                                          (C {(awk)} {(-v)} 
                                            {(Lit_VarLike 'i=') 
                                              (ArithSubPart
                                                anode: 
                                                  (ArithBinary
                                                    op_id: Arith_Plus
                                                    left: (ArithVarRef name:i)
                                                    right: (ArithWord w:{(Lit_Digits 1)})
                                                  )
                                                spids: [5059 5068]
                                              )
                                            } {(SQ <'{print $i}'>)}
                                          )
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [5043 5073]
                              )
                            }
                          spids: [5042]
                        )
                      ]
                      spids: [5042]
                    )
                    (C {(echo)} {(DQ ('fib is ') (${ VSub_Name fib))})
                    (C {(eval)} {(FIB) (${ VSub_Name i) (Lit_Other '=') (${ VSub_Name fib)})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$fib'))} {(-ge)} 
                                  {(DQ ($ VSub_Name '$net_fibs'))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(atf_skip)} 
                              {
                                (DQ ('The ') (${ VSub_Name i) ('th configured fib is ') 
                                  (${ VSub_Name fib) (', which is not less than net.fibs, which is ') (${ VSub_Name net_fibs)
                                )
                              }
                            )
                          ]
                          spids: [16777215 5115]
                        )
                      ]
                      spids: [16777215 5136]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:i)
                          op: Equal
                          rhs: 
                            {
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Plus
                                    left: (ArithWord w:{($ VSub_Name '$i')})
                                    right: (ArithWord w:{(Lit_Digits 1)})
                                  )
                                spids: [5140 5149]
                              )
                            }
                          spids: [5139]
                        )
                      ]
                      spids: [5139]
                    )
                  ]
                  spids: [5039 5152]
                )
            )
          ]
          spids: [5003]
        )
      spids: [4999 5002]
    )
    (FuncDef
      name: get_epair
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:EPAIRD) op:Equal spids:[5175])]
              spids: [5173]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DPipe Op_DPipe]
                          children: [
                            (Subshell
                              child: 
                                (AndOr
                                  ops: [Op_DAmp]
                                  children: [
                                    (C {(which)} {(pfctl)})
                                    (Pipeline
                                      children: [
                                        (C {(pfctl)} {(-s)} {(info)})
                                        (C {(grep)} {(-q)} {(SQ <'Status: Enabled'>)})
                                      ]
                                      negated: F
                                    )
                                  ]
                                )
                              spids: [5181 5203]
                            )
                            (C {(Lit_Other '[')} 
                              {
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [(C {(sysctl)} {(-n)} {(net.inet.ip.fw.enable)})]
                                    )
                                  left_token: <Left_Backtick '`'>
                                  spids: [5211 5217]
                                )
                              } {(Lit_Other '=')} {(DQ (1))} {(Lit_Other ']')}
                            )
                            (Subshell
                              child: 
                                (AndOr
                                  ops: [Op_DAmp]
                                  children: [(C {(which)} {(ipf)}) (C {(ipf)} {(-V)})]
                                )
                              spids: [5230 5240]
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(atf_skip)} {(DQ ('firewalls interfere with this test'))})]
                  spids: [16777215 5243]
                )
              ]
              spids: [16777215 5253]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:EPAIRD)
                              op: Equal
                              rhs: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [(C {(ifconfig)} {(epair)} {(create)})]
                                      )
                                    left_token: <Left_Backtick '`'>
                                    spids: [5260 5266]
                                  )
                                }
                              spids: [5259]
                            )
                          ]
                          spids: [5259]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(echo)} {(${ VSub_Name EPAIRD)}]
                      redirects: [
                        (Redir
                          op_id: Redir_DGreat
                          fd: 16777215
                          arg_word: {(DQ (ifaces_to_cleanup))}
                          spids: [5282]
                        )
                      ]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:EPAIRA)
                          op: Equal
                          rhs: {(${ VSub_Name EPAIRD)}
                          spids: [5289]
                        )
                      ]
                      spids: [5289]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:EPAIRB)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name EPAIRD>
                                suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(a)})
                                spids: [5296 5300]
                              ) (b)
                            }
                          spids: [5295]
                        )
                      ]
                      spids: [5295]
                    )
                  ]
                  spids: [16777215 5269]
                )
              ]
              else_action: [(C {(atf_skip)} {(DQ ('Could not create epair(4) interfaces'))})]
              spids: [5304 5314]
            )
          ]
          spids: [5170]
        )
      spids: [5166 5169]
    )
    (FuncDef
      name: get_tap
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:TAPD) op:Equal spids:[5334])]
              spids: [5332]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:TAPD)
                              op: Equal
                              rhs: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [(C {(ifconfig)} {(tap)} {(create)})]
                                      )
                                    left_token: <Left_Backtick '`'>
                                    spids: [5341 5347]
                                  )
                                }
                              spids: [5340]
                            )
                          ]
                          spids: [5340]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(echo)} {(${ VSub_Name TAPD)}]
                      redirects: [
                        (Redir
                          op_id: Redir_DGreat
                          fd: 16777215
                          arg_word: {(DQ (ifaces_to_cleanup))}
                          spids: [5363]
                        )
                      ]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:TAP)
                          op: Equal
                          rhs: {(${ VSub_Name TAPD)}
                          spids: [5370]
                        )
                      ]
                      spids: [5370]
                    )
                  ]
                  spids: [16777215 5350]
                )
              ]
              else_action: [(C {(atf_skip)} {(DQ ('Could not create a tap(4) interface'))})]
              spids: [5376 5386]
            )
          ]
          spids: [5329]
        )
      spids: [5325 5328]
    )
    (FuncDef
      name: setup_iface
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:IFACE)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [5427]
                )
              ]
              spids: [5425]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:FIB)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [5433]
                )
              ]
              spids: [5431]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:PROTO)
                  op: Equal
                  rhs: {($ VSub_Number '$3')}
                  spids: [5439]
                )
              ]
              spids: [5437]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ADDR)
                  op: Equal
                  rhs: {($ VSub_Number '$4')}
                  spids: [5445]
                )
              ]
              spids: [5443]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:MASK)
                  op: Equal
                  rhs: {($ VSub_Number '$5')}
                  spids: [5451]
                )
              ]
              spids: [5449]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:FLAGS)
                  op: Equal
                  rhs: {($ VSub_Number '$6')}
                  spids: [5457]
                )
              ]
              spids: [5455]
            )
            (C {(echo)} {(setfib)} {(${ VSub_Name FIB)} {(ifconfig)} {($ VSub_Name '$IFACE')} 
              {(${ VSub_Name PROTO)} {(${ VSub_Name ADDR) (/) (${ VSub_Name MASK)} {(fib)} {($ VSub_Name '$FIB')} {($ VSub_Name '$FLAGS')}
            )
            (C {(setfib)} {(${ VSub_Name FIB)} {(ifconfig)} {($ VSub_Name '$IFACE')} 
              {(${ VSub_Name PROTO)} {(${ VSub_Name ADDR) (/) (${ VSub_Name MASK)} {(fib)} {($ VSub_Name '$FIB')} {($ VSub_Name '$FLAGS')}
            )
          ]
          spids: [5422]
        )
      spids: [5418 5421]
    )
    (FuncDef
      name: setup_tap
      body: 
        (BraceGroup
          children: [
            (C {(get_tap)})
            (C {(setup_iface)} {(DQ ($ VSub_Name '$TAP'))} {(DQ ($ VSub_At '$@'))})
          ]
          spids: [5553]
        )
      spids: [5549 5552]
    )
    (FuncDef
      name: cleanup_ifaces
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other '[')} {(-f)} {(ifaces_to_cleanup)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (ForEach
                      iter_name: iface
                      iter_words: [
                        {
                          (CommandSubPart
                            command_list: (CommandList children:[(C {(cat)} {(ifaces_to_cleanup)})])
                            left_token: <Left_CommandSub '$('>
                            spids: [5599 5603]
                          )
                        }
                      ]
                      do_arg_iter: F
                      body: 
                        (DoGroup
                          children: [
                            (C {(echo)} {(ifconfig)} {(DQ (${ VSub_Name iface))} {(destroy)})
                            (AndOr
                              ops: [Op_DPipe]
                              children: [
                                (SimpleCommand
                                  words: [{(ifconfig)} {(DQ (${ VSub_Name iface))} {(destroy)}]
                                  redirects: [
                                    (Redir
                                      op_id: Redir_Great
                                      fd: 2
                                      arg_word: {(/dev/null)}
                                      spids: [5632]
                                    )
                                  ]
                                )
                                (C {(true)})
                              ]
                            )
                          ]
                          spids: [5606 5640]
                        )
                      spids: [5598 5604]
                    )
                    (C {(rm)} {(-f)} {(ifaces_to_cleanup)})
                  ]
                  spids: [16777215 5590]
                )
              ]
              spids: [16777215 5650]
            )
          ]
          spids: [5576]
        )
      spids: [5572 5575]
    )
  ]
)