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