(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SOCK1) op: assign_op.Equal rhs: {<unix> <Id.Lit_Colon ':'> <'//commsock1'>} spids: [79] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SOCK2) op: assign_op.Equal rhs: {<unix> <Id.Lit_Colon ':'> <'//commsock2'>} spids: [87] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER1_LANIP) op: assign_op.Equal rhs: {<192.168.1.1>} spids: [95] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER1_LANNET) op: assign_op.Equal rhs: {<'192.168.1.0/24'>} spids: [98] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER1_WANIP) op: assign_op.Equal rhs: {<10.0.0.1>} spids: [101] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER1_GIFIP) op: assign_op.Equal rhs: {<172.16.1.1>} spids: [104] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER1_WANIP_DUMMY) op: assign_op.Equal rhs: {<10.0.0.11>} spids: [107] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER1_GIFIP_DUMMY) op: assign_op.Equal rhs: {<172.16.11.1>} spids: [110] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER1_GIFIP_RECURSIVE1) op: assign_op.Equal rhs: {<172.16.101.1>} spids: [113] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER1_GIFIP_RECURSIVE2) op: assign_op.Equal rhs: {<172.16.201.1>} spids: [116] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER2_LANIP) op: assign_op.Equal rhs: {<192.168.2.1>} spids: [119] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER2_LANNET) op: assign_op.Equal rhs: {<'192.168.2.0/24'>} spids: [122] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER2_WANIP) op: assign_op.Equal rhs: {<10.0.0.2>} spids: [125] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER2_GIFIP) op: assign_op.Equal rhs: {<172.16.2.1>} spids: [128] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER2_WANIP_DUMMY) op: assign_op.Equal rhs: {<10.0.0.12>} spids: [131] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER2_GIFIP_DUMMY) op: assign_op.Equal rhs: {<172.16.12.1>} spids: [134] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER2_GIFIP_RECURSIVE1) op: assign_op.Equal rhs: {<172.16.102.1>} spids: [137] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER2_GIFIP_RECURSIVE2) op: assign_op.Equal rhs: {<172.16.202.1>} spids: [140] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER1_LANIP6) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} spids: [144] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER1_LANNET6) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <1> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <'/64'>} spids: [152] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER1_WANIP6) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} spids: [160] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER1_GIFIP6) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <3> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} spids: [166] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER1_WANIP6_DUMMY) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <11>} spids: [174] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER1_GIFIP6_DUMMY) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <13> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} spids: [180] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER1_GIFIP6_RECURSIVE1) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <103> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} spids: [188] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER1_GIFIP6_RECURSIVE2) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <203> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} spids: [196] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER2_LANIP6) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <2> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} spids: [204] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER2_LANNET6) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <2> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <'/64'>} spids: [212] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER2_WANIP6) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <2>} spids: [220] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER2_GIFIP6) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <4> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} spids: [226] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER2_WANIP6_DUMMY) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <12>} spids: [234] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER2_GIFIP6_DUMMY) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <14> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} spids: [240] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER2_GIFIP6_RECURSIVE1) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <104> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} spids: [248] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROUTER2_GIFIP6_RECURSIVE2) op: assign_op.Equal rhs: {<fc00> <Id.Lit_Colon ':'> <204> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <1>} spids: [256] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DEBUG) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name DEBUG> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<true>}) ) } spids: [265] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TIMEOUT) op: assign_op.Equal rhs: {<5>} spids: [272] ) ] ) (command.ShFunction name: setup_router body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sock) op: assign_op.Equal rhs: {(${ Id.VSub_Number 1)} spids: [283] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lan) op: assign_op.Equal rhs: {(${ Id.VSub_Number 2)} spids: [289] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lan_mode) op: assign_op.Equal rhs: {(${ Id.VSub_Number 3)} spids: [295] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:wan) op: assign_op.Equal rhs: {(${ Id.VSub_Number 4)} spids: [301] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:wan_mode) op: assign_op.Equal rhs: {(${ Id.VSub_Number 5)} spids: [307] ) ] ) (C {<rump_server_add_iface>} {($ Id.VSub_DollarName '$sock')} {<shmif0>} {<bus0>}) (C {<rump_server_add_iface>} {($ Id.VSub_DollarName '$sock')} {<shmif1>} {<bus1>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name sock)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name lan_mode)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<inet6>} {(${ Id.VSub_Name lan)} ) ] spids: [341 358] ) ] else_action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<inet>} {(${ Id.VSub_Name lan)} {<netmask>} {<0xffffff00>} ) ] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<up>} ) (C {<rump.ifconfig>} {<shmif0>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name wan_mode)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif1>} {<inet6>} {(${ Id.VSub_Name wan)} ) ] spids: [430 447] ) ] else_action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif1>} {<inet>} {(${ Id.VSub_Name wan)} {<netmask>} {<0xff000000>} ) ] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif1>} {<up>} ) (C {<rump.ifconfig>} {<shmif1>}) ] ) ) (command.ShFunction name: test_router body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sock) op: assign_op.Equal rhs: {(${ Id.VSub_Number 1)} spids: [527] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lan) op: assign_op.Equal rhs: {(${ Id.VSub_Number 2)} spids: [533] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lan_mode) op: assign_op.Equal rhs: {(${ Id.VSub_Number 3)} spids: [539] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:wan) op: assign_op.Equal rhs: {(${ Id.VSub_Number 4)} spids: [545] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:wan_mode) op: assign_op.Equal rhs: {(${ Id.VSub_Number 5)} spids: [551] ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name sock)}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> <shmif0>} {<rump.ifconfig>} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name lan_mode)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping6>} {<-n>} {<-c>} {<1>} {<-X>} {($ Id.VSub_DollarName '$TIMEOUT')} {(${ Id.VSub_Name lan)} ) ] spids: [583 600] ) ] else_action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-n>} {<-c>} {<1>} {<-w>} {($ Id.VSub_DollarName '$TIMEOUT')} {(${ Id.VSub_Name lan)} ) ] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> <shmif1>} {<rump.ifconfig>} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name wan_mode)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping6>} {<-n>} {<-c>} {<1>} {<-X>} {($ Id.VSub_DollarName '$TIMEOUT')} {(${ Id.VSub_Name wan)} ) ] spids: [685 702] ) ] else_action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-n>} {<-c>} {<1>} {<-w>} {($ Id.VSub_DollarName '$TIMEOUT')} {(${ Id.VSub_Name wan)} ) ] ) ] ) ) (command.ShFunction name: setup body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:inner) op: assign_op.Equal rhs: {(${ Id.VSub_Number 1)} spids: [778] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:outer) op: assign_op.Equal rhs: {(${ Id.VSub_Number 2)} spids: [784] ) ] ) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCK1')} {<netinet6>} {<gif>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCK2')} {<netinet6>} {<gif>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router1_lan) op: assign_op.Equal rhs: {(DQ )} spids: [810] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router1_lan_mode) op: assign_op.Equal rhs: {(DQ )} spids: [815] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router2_lan) op: assign_op.Equal rhs: {(DQ )} spids: [820] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router2_lan_mode) op: assign_op.Equal rhs: {(DQ )} spids: [825] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name inner)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router1_lan) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_LANIP6')} spids: [850] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router1_lan_mode) op: assign_op.Equal rhs: {(DQ <ipv6>)} spids: [854] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router2_lan) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_LANIP6')} spids: [860] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router2_lan_mode) op: assign_op.Equal rhs: {(DQ <ipv6>)} spids: [864] ) ] ) ] spids: [830 847] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router1_lan) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_LANIP')} spids: [873] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router1_lan_mode) op: assign_op.Equal rhs: {(DQ <ipv4>)} spids: [877] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router2_lan) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_LANIP')} spids: [883] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router2_lan_mode) op: assign_op.Equal rhs: {(DQ <ipv4>)} spids: [887] ) ] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name outer)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<setup_router>} {($ Id.VSub_DollarName '$SOCK1')} {(${ Id.VSub_Name router1_lan)} {(${ Id.VSub_Name router1_lan_mode)} {($ Id.VSub_DollarName '$ROUTER1_WANIP6')} {<ipv6>} ) (C {<setup_router>} {($ Id.VSub_DollarName '$SOCK2')} {(${ Id.VSub_Name router2_lan)} {(${ Id.VSub_Name router2_lan_mode)} {($ Id.VSub_DollarName '$ROUTER2_WANIP6')} {<ipv6>} ) ] spids: [897 914] ) ] else_action: [ (C {<setup_router>} {($ Id.VSub_DollarName '$SOCK1')} {(${ Id.VSub_Name router1_lan)} {(${ Id.VSub_Name router1_lan_mode)} {($ Id.VSub_DollarName '$ROUTER1_WANIP')} {<ipv4>} ) (C {<setup_router>} {($ Id.VSub_DollarName '$SOCK2')} {(${ Id.VSub_Name router2_lan)} {(${ Id.VSub_Name router2_lan_mode)} {($ Id.VSub_DollarName '$ROUTER2_WANIP')} {<ipv4>} ) ] ) ] ) ) (command.ShFunction name: test_setup body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:inner) op: assign_op.Equal rhs: {(${ Id.VSub_Number 1)} spids: [1008] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:outer) op: assign_op.Equal rhs: {(${ Id.VSub_Number 2)} spids: [1014] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router1_lan) op: assign_op.Equal rhs: {(DQ )} spids: [1021] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router1_lan_mode) op: assign_op.Equal rhs: {(DQ )} spids: [1026] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router2_lan) op: assign_op.Equal rhs: {(DQ )} spids: [1031] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router2_lan_mode) op: assign_op.Equal rhs: {(DQ )} spids: [1036] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name inner)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router1_lan) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_LANIP6')} spids: [1061] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router1_lan_mode) op: assign_op.Equal rhs: {(DQ <ipv6>)} spids: [1065] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router2_lan) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_LANIP6')} spids: [1071] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router2_lan_mode) op: assign_op.Equal rhs: {(DQ <ipv6>)} spids: [1075] ) ] ) ] spids: [1041 1058] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router1_lan) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_LANIP')} spids: [1084] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router1_lan_mode) op: assign_op.Equal rhs: {(DQ <ipv4>)} spids: [1088] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router2_lan) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_LANIP')} spids: [1094] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:router2_lan_mode) op: assign_op.Equal rhs: {(DQ <ipv4>)} spids: [1098] ) ] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name outer)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<test_router>} {($ Id.VSub_DollarName '$SOCK1')} {(${ Id.VSub_Name router1_lan)} {(${ Id.VSub_Name router1_lan_mode)} {($ Id.VSub_DollarName '$ROUTER1_WANIP6')} {<ipv6>} ) (C {<test_router>} {($ Id.VSub_DollarName '$SOCK2')} {(${ Id.VSub_Name router2_lan)} {(${ Id.VSub_Name router2_lan_mode)} {($ Id.VSub_DollarName '$ROUTER2_WANIP6')} {<ipv6>} ) ] spids: [1107 1124] ) ] else_action: [ (C {<test_router>} {($ Id.VSub_DollarName '$SOCK1')} {(${ Id.VSub_Name router1_lan)} {(${ Id.VSub_Name router1_lan_mode)} {($ Id.VSub_DollarName '$ROUTER1_WANIP')} {<ipv4>} ) (C {<test_router>} {($ Id.VSub_DollarName '$SOCK2')} {(${ Id.VSub_Name router2_lan)} {(${ Id.VSub_Name router2_lan_mode)} {($ Id.VSub_DollarName '$ROUTER2_WANIP')} {<ipv4>} ) ] ) ] ) ) (command.ShFunction name: setup_if_gif body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sock) op: assign_op.Equal rhs: {(${ Id.VSub_Number 1)} spids: [1218] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr) op: assign_op.Equal rhs: {(${ Id.VSub_Number 2)} spids: [1224] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:remote) op: assign_op.Equal rhs: {(${ Id.VSub_Number 3)} spids: [1230] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:inner) op: assign_op.Equal rhs: {(${ Id.VSub_Number 4)} spids: [1236] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:src) op: assign_op.Equal rhs: {(${ Id.VSub_Number 5)} spids: [1242] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dst) op: assign_op.Equal rhs: {(${ Id.VSub_Number 6)} spids: [1248] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:peernet) op: assign_op.Equal rhs: {(${ Id.VSub_Number 7)} spids: [1254] ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name sock)}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<gif0>} {<create>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<gif0>} {<tunnel>} {(${ Id.VSub_Name src)} {(${ Id.VSub_Name dst)} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name inner)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<gif0>} {<inet6>} {(${ Id.VSub_Name addr) <'/128'>} {(${ Id.VSub_Name remote)} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.route>} {<add>} {<-inet6>} {(${ Id.VSub_Name peernet)} {(${ Id.VSub_Name addr)} ) ] spids: [1307 1324] ) ] else_action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<gif0>} {<inet>} {(${ Id.VSub_Name addr) <'/32'>} {(${ Id.VSub_Name remote)} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.route>} {<add>} {<-inet>} {(${ Id.VSub_Name peernet)} {(${ Id.VSub_Name addr)} ) ] ) (C {<rump.ifconfig>} {<gif0>}) (C {<rump.route>} {<-nL>} {<show>}) ] ) ) (command.ShFunction name: setup_tunnel body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:inner) op: assign_op.Equal rhs: {(${ Id.VSub_Number 1)} spids: [1457] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:outer) op: assign_op.Equal rhs: {(${ Id.VSub_Number 2)} spids: [1463] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr) op: assign_op.Equal rhs: {(DQ )} spids: [1470] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:remote) op: assign_op.Equal rhs: {(DQ )} spids: [1475] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:src) op: assign_op.Equal rhs: {(DQ )} spids: [1480] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dst) op: assign_op.Equal rhs: {(DQ )} spids: [1485] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:peernet) op: assign_op.Equal rhs: {(DQ )} spids: [1490] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name inner)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_GIFIP6')} spids: [1516] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:remote) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_GIFIP6')} spids: [1520] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:peernet) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_LANNET6')} spids: [1524] ) ] ) ] spids: [1496 1513] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_GIFIP')} spids: [1531] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:remote) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_GIFIP')} spids: [1535] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:peernet) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_LANNET')} spids: [1539] ) ] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name outer)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:src) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_WANIP6')} spids: [1566] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dst) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_WANIP6')} spids: [1570] ) ] ) ] spids: [1546 1563] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:src) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_WANIP')} spids: [1577] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dst) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_WANIP')} spids: [1581] ) ] ) ] ) (C {<setup_if_gif>} {($ Id.VSub_DollarName '$SOCK1')} {(${ Id.VSub_Name addr)} {(${ Id.VSub_Name remote)} {(${ Id.VSub_Name inner)} {(${ Id.VSub_Name src)} {(${ Id.VSub_Name dst)} {(${ Id.VSub_Name peernet)} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$inner')} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_GIFIP6')} spids: [1638] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:remote) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_GIFIP6')} spids: [1642] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:peernet) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_LANNET6')} spids: [1646] ) ] ) ] spids: [1620 1635] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_GIFIP')} spids: [1653] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:remote) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_GIFIP')} spids: [1657] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:peernet) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_LANNET')} spids: [1661] ) ] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$outer')} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:src) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_WANIP6')} spids: [1686] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dst) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_WANIP6')} spids: [1690] ) ] ) ] spids: [1668 1683] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:src) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_WANIP')} spids: [1697] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dst) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_WANIP')} spids: [1701] ) ] ) ] ) (C {<setup_if_gif>} {($ Id.VSub_DollarName '$SOCK2')} {(${ Id.VSub_Name addr)} {(${ Id.VSub_Name remote)} {(${ Id.VSub_Name inner)} {(${ Id.VSub_Name src)} {(${ Id.VSub_Name dst)} {(${ Id.VSub_Name peernet)} ) ] ) ) (command.ShFunction name: test_setup_tunnel body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:mode) op: assign_op.Equal rhs: {(${ Id.VSub_Number 1)} spids: [1748] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:peernet) op: assign_op.Equal rhs: {(DQ )} spids: [1755] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:opt) op: assign_op.Equal rhs: {(DQ )} spids: [1760] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name mode)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:peernet) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_LANNET6')} spids: [1785] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:opt) op: assign_op.Equal rhs: {(DQ <-inet6>)} spids: [1789] ) ] ) ] spids: [1765 1782] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:peernet) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_LANNET')} spids: [1798] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:opt) op: assign_op.Equal rhs: {(DQ <-inet>)} spids: [1802] ) ] ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK1')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> <gif0>} {<rump.ifconfig>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> <gif0>} {<rump.route>} {<-nL>} {<get>} {(${ Id.VSub_Name opt)} {(${ Id.VSub_Name peernet)} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name mode)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:peernet) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_LANNET6')} spids: [1884] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:opt) op: assign_op.Equal rhs: {(DQ <-inet6>)} spids: [1888] ) ] ) ] spids: [1864 1881] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:peernet) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_LANNET')} spids: [1897] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:opt) op: assign_op.Equal rhs: {(DQ <-inet>)} spids: [1901] ) ] ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> <gif0>} {<rump.ifconfig>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> <gif0>} {<rump.route>} {<-nL>} {<get>} {(${ Id.VSub_Name opt)} {(${ Id.VSub_Name peernet)} ) ] ) ) (command.ShFunction name: teardown_tunnel body: (BraceGroup children: [ (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK1')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<gif0>} {<deletetunnel>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<gif0>} {<destroy>} ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<gif0>} {<deletetunnel>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<gif0>} {<destroy>} ) ] ) ) (command.ShFunction name: setup_dummy_if_gif body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sock) op: assign_op.Equal rhs: {(${ Id.VSub_Number 1)} spids: [2053] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr) op: assign_op.Equal rhs: {(${ Id.VSub_Number 2)} spids: [2059] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:remote) op: assign_op.Equal rhs: {(${ Id.VSub_Number 3)} spids: [2065] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:inner) op: assign_op.Equal rhs: {(${ Id.VSub_Number 4)} spids: [2071] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:src) op: assign_op.Equal rhs: {(${ Id.VSub_Number 5)} spids: [2077] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dst) op: assign_op.Equal rhs: {(${ Id.VSub_Number 6)} spids: [2083] ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name sock)}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<gif1>} {<create>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<gif1>} {<tunnel>} {(${ Id.VSub_Name src)} {(${ Id.VSub_Name dst)} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name inner)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<gif1>} {<inet6>} {(${ Id.VSub_Name addr) <'/128'>} {(${ Id.VSub_Name remote)} ) ] spids: [2136 2153] ) ] else_action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<gif1>} {<inet>} {(${ Id.VSub_Name addr) <'/32'>} {(${ Id.VSub_Name remote)} ) ] ) (C {<rump.ifconfig>} {<gif1>}) ] ) ) (command.ShFunction name: setup_dummy_tunnel body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:inner) op: assign_op.Equal rhs: {(${ Id.VSub_Number 1)} spids: [2225] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:outer) op: assign_op.Equal rhs: {(${ Id.VSub_Number 2)} spids: [2231] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr) op: assign_op.Equal rhs: {(DQ )} spids: [2238] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:remote) op: assign_op.Equal rhs: {(DQ )} spids: [2243] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:src) op: assign_op.Equal rhs: {(DQ )} spids: [2248] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dst) op: assign_op.Equal rhs: {(DQ )} spids: [2253] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name inner)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_GIFIP6_DUMMY')} spids: [2279] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:remote) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_GIFIP6_DUMMY')} spids: [2283] ) ] ) ] spids: [2259 2276] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_GIFIP_DUMMY')} spids: [2290] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:remote) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_GIFIP_DUMMY')} spids: [2294] ) ] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name outer)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:src) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_WANIP6_DUMMY')} spids: [2321] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dst) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_WANIP6_DUMMY')} spids: [2325] ) ] ) ] spids: [2301 2318] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:src) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_WANIP_DUMMY')} spids: [2332] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dst) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_WANIP_DUMMY')} spids: [2336] ) ] ) ] ) (C {<setup_dummy_if_gif>} {($ Id.VSub_DollarName '$SOCK1')} {(${ Id.VSub_Name addr)} {(${ Id.VSub_Name remote)} {(${ Id.VSub_Name inner)} {(${ Id.VSub_Name src)} {(${ Id.VSub_Name dst)} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$inner')} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_GIFIP6_DUMMY')} spids: [2389] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:remote) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_GIFIP6_DUMMY')} spids: [2393] ) ] ) ] spids: [2371 2386] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_GIFIP_DUMMY')} spids: [2400] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:remote) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_GIFIP_DUMMY')} spids: [2404] ) ] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$outer')} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:src) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_WANIP6_DUMMY')} spids: [2429] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dst) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_WANIP6_DUMMY')} spids: [2433] ) ] ) ] spids: [2411 2426] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:src) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_WANIP_DUMMY')} spids: [2440] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dst) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_WANIP_DUMMY')} spids: [2444] ) ] ) ] ) (C {<setup_dummy_if_gif>} {($ Id.VSub_DollarName '$SOCK2')} {(${ Id.VSub_Name addr)} {(${ Id.VSub_Name remote)} {(${ Id.VSub_Name inner)} {(${ Id.VSub_Name src)} {(${ Id.VSub_Name dst)} ) ] ) ) (command.ShFunction name: test_setup_dummy_tunnel body: (BraceGroup children: [ (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK1')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> <gif1>} {<rump.ifconfig>} ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> <gif1>} {<rump.ifconfig>} ) ] ) ) (command.ShFunction name: teardown_dummy_tunnel body: (BraceGroup children: [ (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK1')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<gif1>} {<deletetunnel>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<gif1>} {<destroy>} ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<gif1>} {<deletetunnel>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<gif1>} {<destroy>} ) ] ) ) (command.ShFunction name: setup_recursive_if_gif body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sock) op: assign_op.Equal rhs: {(${ Id.VSub_Number 1)} spids: [2625] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:gif) op: assign_op.Equal rhs: {(${ Id.VSub_Number 2)} spids: [2631] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr) op: assign_op.Equal rhs: {(${ Id.VSub_Number 3)} spids: [2637] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:remote) op: assign_op.Equal rhs: {(${ Id.VSub_Number 4)} spids: [2643] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:inner) op: assign_op.Equal rhs: {(${ Id.VSub_Number 5)} spids: [2649] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:src) op: assign_op.Equal rhs: {(${ Id.VSub_Number 6)} spids: [2655] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dst) op: assign_op.Equal rhs: {(${ Id.VSub_Number 7)} spids: [2661] ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> (${ Id.VSub_Name sock)}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {(${ Id.VSub_Name gif)} {<create>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {(${ Id.VSub_Name gif)} {<tunnel>} {(${ Id.VSub_Name src)} {(${ Id.VSub_Name dst)} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name inner)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {(${ Id.VSub_Name gif)} {<inet6>} {(${ Id.VSub_Name addr) <'/128'>} {(${ Id.VSub_Name remote)} ) ] spids: [2718 2735] ) ] else_action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {(${ Id.VSub_Name gif)} {<inet>} {(${ Id.VSub_Name addr) <'/32'>} {(${ Id.VSub_Name remote)} ) ] ) (C {<rump.ifconfig>} {(${ Id.VSub_Name gif)}) ] ) ) (command.ShFunction name: setup_recursive_tunnels body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:mode) op: assign_op.Equal rhs: {(${ Id.VSub_Number 1)} spids: [2816] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr) op: assign_op.Equal rhs: {(DQ )} spids: [2823] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:remote) op: assign_op.Equal rhs: {(DQ )} spids: [2828] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:src) op: assign_op.Equal rhs: {(DQ )} spids: [2833] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dst) op: assign_op.Equal rhs: {(DQ )} spids: [2838] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name mode)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_GIFIP6_RECURSIVE1')} spids: [2864] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:remote) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_GIFIP6_RECURSIVE1')} spids: [2868] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:src) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_GIFIP6')} spids: [2872] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dst) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_GIFIP6')} spids: [2876] ) ] ) ] spids: [2844 2861] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_GIFIP_RECURSIVE1')} spids: [2883] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:remote) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_GIFIP_RECURSIVE1')} spids: [2887] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:src) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_GIFIP')} spids: [2891] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dst) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_GIFIP')} spids: [2895] ) ] ) ] ) (C {<setup_recursive_if_gif>} {($ Id.VSub_DollarName '$SOCK1')} {<gif1>} {(${ Id.VSub_Name addr)} {(${ Id.VSub_Name remote)} {(${ Id.VSub_Name mode)} {(${ Id.VSub_Name src)} {(${ Id.VSub_Name dst)} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name mode)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_GIFIP6_RECURSIVE2')} spids: [2952] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:remote) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_GIFIP6_RECURSIVE2')} spids: [2956] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:src) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_GIFIP6_RECURSIVE1')} spids: [2960] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dst) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_GIFIP6_RECURSIVE1')} spids: [2964] ) ] ) ] spids: [2932 2949] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_GIFIP_RECURSIVE2')} spids: [2971] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:remote) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_GIFIP_RECURSIVE2')} spids: [2975] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:src) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_GIFIP_RECURSIVE1')} spids: [2979] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dst) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_GIFIP_RECURSIVE1')} spids: [2983] ) ] ) ] ) (C {<setup_recursive_if_gif>} {($ Id.VSub_DollarName '$SOCK1')} {<gif2>} {(${ Id.VSub_Name addr)} {(${ Id.VSub_Name remote)} {(${ Id.VSub_Name mode)} {(${ Id.VSub_Name src)} {(${ Id.VSub_Name dst)} ) ] ) ) (command.ShFunction name: test_recursive_check body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:mode) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [3031] ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK1')}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name mode)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<-e>} {<ignore>} {<rump.ping6>} {<-n>} {<-X>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {($ Id.VSub_DollarName '$ROUTER2_GIFIP6_RECURSIVE2')} ) ] spids: [3042 3059] ) ] else_action: [ (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<-e>} {<ignore>} {<rump.ping>} {<-n>} {<-w>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {($ Id.VSub_DollarName '$ROUTER2_GIFIP_RECURSIVE2')} ) ] ) (C {<atf_check>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'gif0: recursively called too many times'>)} {<-x>} {(DQ ($ Id.VSub_DollarName '$HIJACKING') <' dmesg'>)} ) (C {($ Id.VSub_DollarName '$HIJACKING')} {<dmesg>}) ] ) ) (command.ShFunction name: teardown_recursive_tunnels body: (BraceGroup children: [ (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK1')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<gif1>} {<deletetunnel>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<gif1>} {<destroy>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<gif2>} {<deletetunnel>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<gif2>} {<destroy>} ) ] ) ) (command.ShFunction name: test_ping_failure body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:mode) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [3245] ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK1')}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name mode)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<-e>} {<ignore>} {<rump.ping6>} {<-n>} {<-X>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {<-S>} {($ Id.VSub_DollarName '$ROUTER1_LANIP6')} {($ Id.VSub_DollarName '$ROUTER2_LANIP6')} ) ] spids: [3256 3273] ) ] else_action: [ (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<-e>} {<ignore>} {<rump.ping>} {<-n>} {<-w>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {<-I>} {($ Id.VSub_DollarName '$ROUTER1_LANIP')} {($ Id.VSub_DollarName '$ROUTER2_LANIP')} ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name mode)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<-e>} {<ignore>} {<rump.ping6>} {<-n>} {<-X>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {<-S>} {($ Id.VSub_DollarName '$ROUTER2_LANIP6')} {($ Id.VSub_DollarName '$ROUTER1_LANIP6')} ) ] spids: [3367 3384] ) ] else_action: [ (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<-e>} {<ignore>} {<rump.ping>} {<-n>} {<-w>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {<-I>} {($ Id.VSub_DollarName '$ROUTER1_LANIP')} {($ Id.VSub_DollarName '$ROUTER2_LANIP')} ) ] ) ] ) ) (command.ShFunction name: test_ping_success body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:mode) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [3480] ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK1')}) (C {<rump.ifconfig>} {<-v>} {<gif0>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name mode)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping6>} {<-n>} {<-X>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {<-S>} {($ Id.VSub_DollarName '$ROUTER1_LANIP6')} {($ Id.VSub_DollarName '$ROUTER2_LANIP6')} ) ] spids: [3498 3515] ) ] else_action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-n>} {<-w>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {<-I>} {($ Id.VSub_DollarName '$ROUTER1_LANIP')} {($ Id.VSub_DollarName '$ROUTER2_LANIP')} ) ] ) (C {<rump.ifconfig>} {<-v>} {<gif0>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (C {<rump.ifconfig>} {<-v>} {<gif0>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name mode)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping6>} {<-n>} {<-X>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {<-S>} {($ Id.VSub_DollarName '$ROUTER2_LANIP6')} {($ Id.VSub_DollarName '$ROUTER1_LANIP6')} ) ] spids: [3631 3648] ) ] else_action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-n>} {<-w>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {<-I>} {($ Id.VSub_DollarName '$ROUTER2_LANIP')} {($ Id.VSub_DollarName '$ROUTER1_LANIP')} ) ] ) (C {<rump.ifconfig>} {<-v>} {<gif0>}) ] ) ) (command.ShFunction name: test_change_tunnel_duplicate body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:mode) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [3743] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newsrc) op: assign_op.Equal rhs: {(DQ )} spids: [3748] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newdst) op: assign_op.Equal rhs: {(DQ )} spids: [3753] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name mode)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newsrc) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_WANIP6_DUMMY')} spids: [3778] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newdst) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_WANIP6_DUMMY')} spids: [3782] ) ] ) ] spids: [3758 3775] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newsrc) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_WANIP_DUMMY')} spids: [3789] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newdst) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_WANIP_DUMMY')} spids: [3793] ) ] ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK1')}) (C {<rump.ifconfig>} {<-v>} {<gif0>}) (C {<rump.ifconfig>} {<-v>} {<gif1>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<match> <Id.Lit_Colon ':'> <SIOCSLIFPHYADDR>} {<rump.ifconfig>} {<gif0>} {<tunnel>} {(${ Id.VSub_Name newsrc)} {(${ Id.VSub_Name newdst)} ) (C {<rump.ifconfig>} {<-v>} {<gif0>}) (C {<rump.ifconfig>} {<-v>} {<gif1>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name mode)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newsrc) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_WANIP6_DUMMY')} spids: [3886] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newdst) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_WANIP6_DUMMY')} spids: [3890] ) ] ) ] spids: [3866 3883] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newsrc) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_WANIP_DUMMY')} spids: [3897] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newdst) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_WANIP_DUMMY')} spids: [3901] ) ] ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (C {<rump.ifconfig>} {<-v>} {<gif0>}) (C {<rump.ifconfig>} {<-v>} {<gif1>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<match> <Id.Lit_Colon ':'> <SIOCSLIFPHYADDR>} {<rump.ifconfig>} {<gif0>} {<tunnel>} {(${ Id.VSub_Name newsrc)} {(${ Id.VSub_Name newdst)} ) (C {<rump.ifconfig>} {<-v>} {<gif0>}) (C {<rump.ifconfig>} {<-v>} {<gif1>}) ] ) ) (command.ShFunction name: test_change_tunnel_success body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:mode) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [3982] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newsrc) op: assign_op.Equal rhs: {(DQ )} spids: [3987] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newdst) op: assign_op.Equal rhs: {(DQ )} spids: [3992] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name mode)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newsrc) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_WANIP6_DUMMY')} spids: [4017] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newdst) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_WANIP6_DUMMY')} spids: [4021] ) ] ) ] spids: [3997 4014] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newsrc) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_WANIP_DUMMY')} spids: [4028] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newdst) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_WANIP_DUMMY')} spids: [4032] ) ] ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK1')}) (C {<rump.ifconfig>} {<-v>} {<gif0>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<gif0>} {<tunnel>} {(${ Id.VSub_Name newsrc)} {(${ Id.VSub_Name newdst)} ) (C {<rump.ifconfig>} {<-v>} {<gif0>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name mode)} {<Id.Lit_Equals '='>} {(DQ <ipv6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newsrc) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_WANIP6_DUMMY')} spids: [4105] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newdst) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_WANIP6_DUMMY')} spids: [4109] ) ] ) ] spids: [4085 4102] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newsrc) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER2_WANIP_DUMMY')} spids: [4116] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newdst) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$ROUTER1_WANIP_DUMMY')} spids: [4120] ) ] ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCK2')}) (C {<rump.ifconfig>} {<-v>} {<gif0>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<gif0>} {<tunnel>} {(${ Id.VSub_Name newsrc)} {(${ Id.VSub_Name newdst)} ) (C {<rump.ifconfig>} {<-v>} {<gif0>}) ] ) ) (command.ShFunction name: basic_setup body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:inner) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [4181] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:outer) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [4185] ) ] ) (C {<setup>} {(${ Id.VSub_Name inner)} {(${ Id.VSub_Name outer)}) (C {<test_setup>} {(${ Id.VSub_Name inner)} {(${ Id.VSub_Name outer)}) (C {<setup_tunnel>} {(${ Id.VSub_Name inner)} {(${ Id.VSub_Name outer)}) (C {<sleep>} {<1>}) (C {<test_setup_tunnel>} {(${ Id.VSub_Name inner)}) ] ) ) (command.ShFunction name: basic_test body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:inner) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [4254] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:outer) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [4258] ) ] ) (C {<test_ping_success>} {(${ Id.VSub_Name inner)}) ] ) ) (command.ShFunction name: basic_teardown body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:inner) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [4282] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:outer) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [4286] ) ] ) (C {<teardown_tunnel>}) (C {<test_ping_failure>} {(${ Id.VSub_Name inner)}) ] ) ) (command.ShFunction name: ioctl_setup body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:inner) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [4313] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:outer) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [4317] ) ] ) (C {<setup>} {(${ Id.VSub_Name inner)} {(${ Id.VSub_Name outer)}) (C {<test_setup>} {(${ Id.VSub_Name inner)} {(${ Id.VSub_Name outer)}) (C {<setup_tunnel>} {(${ Id.VSub_Name inner)} {(${ Id.VSub_Name outer)}) (C {<setup_dummy_tunnel>} {(${ Id.VSub_Name inner)} {(${ Id.VSub_Name outer)}) (C {<sleep>} {<1>}) (C {<test_setup_tunnel>} {(${ Id.VSub_Name inner)}) ] ) ) (command.ShFunction name: ioctl_test body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:inner) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [4397] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:outer) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [4401] ) ] ) (C {<test_ping_success>} {(${ Id.VSub_Name inner)}) (C {<test_change_tunnel_duplicate>} {(${ Id.VSub_Name outer)}) (C {<teardown_dummy_tunnel>}) (C {<test_change_tunnel_success>} {(${ Id.VSub_Name outer)}) ] ) ) (command.ShFunction name: ioctl_teardown body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:inner) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [4441] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:outer) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [4445] ) ] ) (C {<teardown_tunnel>}) (C {<test_ping_failure>} {(${ Id.VSub_Name inner)}) ] ) ) (command.ShFunction name: recursive_setup body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:inner) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [4472] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:outer) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [4476] ) ] ) (C {<setup>} {(${ Id.VSub_Name inner)} {(${ Id.VSub_Name outer)}) (C {<test_setup>} {(${ Id.VSub_Name inner)} {(${ Id.VSub_Name outer)}) (C {<setup_tunnel>} {(${ Id.VSub_Name inner)} {(${ Id.VSub_Name outer)}) (C {<setup_recursive_tunnels>} {(${ Id.VSub_Name inner)}) (C {<sleep>} {<1>}) (C {<test_setup_tunnel>} {(${ Id.VSub_Name inner)}) ] ) ) (command.ShFunction name: recursive_test body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:inner) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [4552] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:outer) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [4556] ) ] ) (C {<test_recursive_check>} {(${ Id.VSub_Name inner)}) ] ) ) (command.ShFunction name: recursive_teardown body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:inner) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [4580] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:outer) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [4587] ) ] ) (C {<teardown_recursive_tunnels>}) (C {<teardown_tunnel>}) ] ) ) (command.ShFunction name: add_test body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:category) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [4610] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:desc) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [4614] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:inner) op: assign_op.Equal rhs: {($ Id.VSub_Number '$3')} spids: [4618] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:outer) op: assign_op.Equal rhs: {($ Id.VSub_Number '$4')} spids: [4622] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:name) op: assign_op.Equal rhs: { (DQ <gif_> (${ Id.VSub_Name category) <_> (${ Id.VSub_Name inner) <over> (${ Id.VSub_Name outer) ) } spids: [4627] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fulldesc) op: assign_op.Equal rhs: { (DQ <'Does '> (${ Id.VSub_Name inner) <' over '> (${ Id.VSub_Name outer) <' if_gif '> (${ Id.VSub_Name desc) ) } spids: [4644] ) ] ) (C {<atf_test_case>} {(${ Id.VSub_Name name)} {<cleanup>}) (C {<eval>} { (DQ (${ Id.VSub_Name name) <'_head() { '> <'\t\t\tatf_set '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <descr> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Name fulldesc) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'; '> <'\t\t\tatf_set '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <require.progs> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <rump_server> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'; '> <'\t\t}; '> <'\t '> (${ Id.VSub_Name name) <'_body() { '> <'\t\t\t'> (${ Id.VSub_Name category) <'_setup '> (${ Id.VSub_Name inner) <' '> (${ Id.VSub_Name outer) <'; '> <'\t\t\t'> (${ Id.VSub_Name category) <'_test '> (${ Id.VSub_Name inner) <' '> (${ Id.VSub_Name outer) <'; '> <'\t\t\t'> (${ Id.VSub_Name category) <'_teardown '> (${ Id.VSub_Name inner) <' '> (${ Id.VSub_Name outer) <'; '> <'\t\t\trump_server_destroy_ifaces; '> <'\t }; '> <'\t '> (${ Id.VSub_Name name) <'_cleanup() { '> <'\t\t\t'> ($ Id.VSub_DollarName '$DEBUG') <' && dump; '> <'\t\t\tcleanup; '> <'\t\t}'> ) } ) (C {<atf_add_test_case>} {(${ Id.VSub_Name name)}) ] ) ) (command.ShFunction name: add_test_allproto body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:category) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [4787] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:desc) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [4791] ) ] ) (C {<add_test>} {(${ Id.VSub_Name category)} {(DQ (${ Id.VSub_Name desc))} {<ipv4>} {<ipv4>}) (C {<add_test>} {(${ Id.VSub_Name category)} {(DQ (${ Id.VSub_Name desc))} {<ipv4>} {<ipv6>}) (C {<add_test>} {(${ Id.VSub_Name category)} {(DQ (${ Id.VSub_Name desc))} {<ipv6>} {<ipv4>}) (C {<add_test>} {(${ Id.VSub_Name category)} {(DQ (${ Id.VSub_Name desc))} {<ipv6>} {<ipv6>}) ] ) ) (command.ShFunction name: atf_init_test_cases body: (BraceGroup children: [ (C {<add_test_allproto>} {<basic>} {(DQ <'basic tests'>)}) (C {<add_test_allproto>} {<ioctl>} {(DQ <'ioctl tests'>)}) (C {<add_test_allproto>} {<recursive>} {(DQ <'recursive check tests'>)}) ] ) ) ] )