(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SOCKSRC) op: assign_op.Equal rhs: {<unix> <Id.Lit_Colon ':'> <'//commsock1'>} spids: [79] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SOCKDST) op: assign_op.Equal rhs: {<unix> <Id.Lit_Colon ':'> <'//commsock2'>} spids: [84] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP4SRC) op: assign_op.Equal rhs: {<10.0.1.1>} spids: [89] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP4DST) op: assign_op.Equal rhs: {<10.0.1.2>} spids: [92] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP4DST_PROXYARP1) op: assign_op.Equal rhs: {<10.0.1.3>} spids: [95] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IP4DST_PROXYARP2) op: assign_op.Equal rhs: {<10.0.1.4>} spids: [98] ) ] ) (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:{<false>}) ) } spids: [102] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TIMEOUT) op: assign_op.Equal rhs: {<1>} spids: [109] ) ] ) (C {<atf_test_case>} {<arp_cache_expiration_5s>} {<cleanup>}) (C {<atf_test_case>} {<arp_cache_expiration_10s>} {<cleanup>}) (C {<atf_test_case>} {<arp_command>} {<cleanup>}) (C {<atf_test_case>} {<arp_garp>} {<cleanup>}) (C {<atf_test_case>} {<arp_cache_overwriting>} {<cleanup>}) (C {<atf_test_case>} {<arp_proxy_arp_pub>} {<cleanup>}) (C {<atf_test_case>} {<arp_proxy_arp_pubproxy>} {<cleanup>}) (C {<atf_test_case>} {<arp_link_activation>} {<cleanup>}) (C {<atf_test_case>} {<arp_static>} {<cleanup>}) (command.ShFunction name: arp_cache_expiration_5s_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Tests for ARP cache expiration (5s)'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}) ] ) ) (command.ShFunction name: arp_cache_expiration_10s_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Tests for ARP cache expiration (10s)'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}) ] ) ) (command.ShFunction name: arp_command_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Tests for arp_commands of arp(8)'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}) ] ) ) (command.ShFunction name: arp_garp_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Tests for GARP'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}) ] ) ) (command.ShFunction name: arp_cache_overwriting_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Tests for behavior of overwriting ARP caches'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}) ] ) ) (command.ShFunction name: arp_proxy_arp_pub_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Tests for Proxy ARP (pub)'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}) ] ) ) (command.ShFunction name: arp_proxy_arp_pubproxy_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Tests for Proxy ARP (pub proxy)'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}) ] ) ) (command.ShFunction name: arp_link_activation_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Tests for activating a new MAC address'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}) ] ) ) (command.ShFunction name: arp_static_head body: (BraceGroup children: [ (C {<atf_set>} {(DQ <descr>)} {(DQ <'Tests for static ARP entries'>)}) (C {<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}) ] ) ) (command.ShFunction name: setup_dst_server body: (BraceGroup children: [ (C {<rump_server_add_iface>} {($ Id.VSub_DollarName '$SOCKDST')} {<shmif0>} {<bus1>}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCKDST')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<inet>} {($ Id.VSub_DollarName '$IP4DST') <'/24'>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<up>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<-w>} {<10>} ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.ifconfig>} {<shmif0>})] ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.arp>} {<-n>} {<-a>})] ) ] ) ) (command.ShFunction name: setup_src_server body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'keep='> ($ Id.VSub_Number '$1')}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCKSRC')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.sysctl>} {<-w>} {<net.inet.arp.keep> <Id.Lit_Equals '='> ($ Id.VSub_DollarName '$keep')} ) (C {<rump_server_add_iface>} {($ Id.VSub_DollarName '$SOCKSRC')} {<shmif0>} {<bus1>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<inet>} {($ Id.VSub_DollarName '$IP4SRC') <'/24'>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<up>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<-w>} {<10>} ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.ifconfig>} {<shmif0>})] ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.arp>} {<-n>} {<-a>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.arp>} {<-n>} {($ Id.VSub_DollarName '$IP4SRC')} ) (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<ignore>} {<rump.arp>} {<-n>} {($ Id.VSub_DollarName '$IP4DST')} ) ] ) ) (command.ShFunction name: test_cache_expiration body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'arp_keep='> ($ Id.VSub_Number '$1')}) (C {<local>} {<Id.Lit_VarLike 'bonus='> <2>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCKSRC')}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCKDST')}) (C {<setup_dst_server>}) (C {<setup_src_server>} {($ Id.VSub_DollarName '$arp_keep')}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCKSRC')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-n>} {<-w>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {($ Id.VSub_DollarName '$IP4DST')} ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.arp>} {<-n>} {<-a>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.arp>} {<-n>} {($ Id.VSub_DollarName '$IP4SRC')} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.arp>} {<-n>} {($ Id.VSub_DollarName '$IP4DST')} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<sleep>} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName '$arp_keep')} right: {($ Id.VSub_DollarName '$bonus')} ) ) } ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.arp>} {<-n>} {<-a>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.arp>} {<-n>} {($ Id.VSub_DollarName '$IP4SRC')} ) (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<ignore>} {<rump.arp>} {<-n>} {($ Id.VSub_DollarName '$IP4DST')} ) ] ) ) (command.ShFunction name: arp_cache_expiration_5s_body body: (BraceGroup children: [(C {<test_cache_expiration>} {<5>}) (C {<rump_server_destroy_ifaces>})] ) ) (command.ShFunction name: arp_cache_expiration_10s_body body: (BraceGroup children: [(C {<test_cache_expiration>} {<10>}) (C {<rump_server_destroy_ifaces>})] ) ) (command.ShFunction name: arp_command_body body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'arp_keep='> <5>}) (C {<local>} {<Id.Lit_VarLike 'bonus='> <2>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCKSRC')}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCKDST')}) (C {<setup_dst_server>}) (C {<setup_src_server>} {($ Id.VSub_DollarName '$arp_keep')}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCKSRC')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.arp>} {<-d>} {($ Id.VSub_DollarName '$IP4SRC')} ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.arp>} {<-n>} {<-a>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.arp>} {<-s>} {<10.0.1.10>} {<b2> <Id.Lit_Colon ':'> <a0> <Id.Lit_Colon ':'> <20> <Id.Lit_Colon ':'> <00> <Id.Lit_Colon ':'> <00> <Id.Lit_Colon ':'> <10> } ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.arp>} {<-n>} {<-a>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'b2:a0:20:00:00:10'>)} {<rump.arp>} {<-n>} {<10.0.1.10>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <permanent>)} {<rump.arp>} {<-n>} {<10.0.1.10>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.arp>} {<-d>} {<10.0.1.10>} ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.arp>} {<-n>} {<-a>})] ) (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<ignore>} {<rump.arp>} {<-n>} {<10.0.1.10>} ) (command.Simple words: [{<cat>} {<->}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'./list'>} ) (redir op: <Id.Redir_DLessDash '<<-'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 1212 stdin_parts: [ <'10.0.1.11 b2:a0:20:00:00:11\n'> <'10.0.1.12 b2:a0:20:00:00:12\n'> <'10.0.1.13 b2:a0:20:00:00:13\n'> <'10.0.1.14 b2:a0:20:00:00:14\n'> <'10.0.1.15 b2:a0:20:00:00:15\n'> ] ) ) ] do_fork: T ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.arp>} {<-n>} {<-a>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.arp>} {<-f>} {<'./list'>} ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.arp>} {<-n>} {<-a>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'b2:a0:20:00:00:11'>)} {<rump.arp>} {<-n>} {<10.0.1.11>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <permanent>)} {<rump.arp>} {<-n>} {<10.0.1.11>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'b2:a0:20:00:00:12'>)} {<rump.arp>} {<-n>} {<10.0.1.12>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <permanent>)} {<rump.arp>} {<-n>} {<10.0.1.12>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'b2:a0:20:00:00:13'>)} {<rump.arp>} {<-n>} {<10.0.1.13>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <permanent>)} {<rump.arp>} {<-n>} {<10.0.1.13>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'b2:a0:20:00:00:14'>)} {<rump.arp>} {<-n>} {<10.0.1.14>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <permanent>)} {<rump.arp>} {<-n>} {<10.0.1.14>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'b2:a0:20:00:00:15'>)} {<rump.arp>} {<-n>} {<10.0.1.15>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <permanent>)} {<rump.arp>} {<-n>} {<10.0.1.15>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <10.0.1.11>)} {<rump.arp>} {<-n>} {<-a>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <10.0.1.12>)} {<rump.arp>} {<-n>} {<-a>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <10.0.1.13>)} {<rump.arp>} {<-n>} {<-a>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <10.0.1.14>)} {<rump.arp>} {<-n>} {<-a>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <10.0.1.15>)} {<rump.arp>} {<-n>} {<-a>} ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.arp>} {<-n>} {<-a>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.arp>} {<-d>} {<-a>} ) (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<ignore>} {<rump.arp>} {<-n>} {<10.0.1.11>} ) (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<ignore>} {<rump.arp>} {<-n>} {<10.0.1.12>} ) (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<ignore>} {<rump.arp>} {<-n>} {<10.0.1.13>} ) (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<ignore>} {<rump.arp>} {<-n>} {<10.0.1.14>} ) (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<ignore>} {<rump.arp>} {<-n>} {<10.0.1.15>} ) (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<ignore>} {<rump.arp>} {<-n>} {<10.0.1.1>} ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.arp>} {<-n>} {<-a>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.arp>} {<-s>} {<10.0.1.10>} {<b2> <Id.Lit_Colon ':'> <a0> <Id.Lit_Colon ':'> <20> <Id.Lit_Colon ':'> <00> <Id.Lit_Colon ':'> <00> <Id.Lit_Colon ':'> <10> } {<temp>} ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.arp>} {<-n>} {<-a>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'b2:a0:20:00:00:10'>)} {<rump.arp>} {<-n>} {<10.0.1.10>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<not-match> <Id.Lit_Colon ':'> (SQ <permanent>)} {<rump.arp>} {<-n>} {<10.0.1.10>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<sleep>} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName '$arp_keep')} right: {($ Id.VSub_DollarName '$bonus')} ) ) } ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.arp>} {<-n>} {<-a>})] ) (C {<rump_server_destroy_ifaces>}) ] ) ) (command.ShFunction name: make_pkt_str_arpreq body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'target='> ($ Id.VSub_Number '$1')}) (C {<local>} {<Id.Lit_VarLike 'sender='> ($ Id.VSub_Number '$2')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pkt) op: assign_op.Equal rhs: {(DQ <'> ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42:'>)} spids: [1925] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pkt) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$pkt') <' Request who-has '> ($ Id.VSub_DollarName '$target') <' tell '> ($ Id.VSub_DollarName '$sender') <', length 28'> ) } spids: [1931] ) ] ) (C {<echo>} {($ Id.VSub_DollarName '$pkt')}) ] ) ) (command.ShFunction name: arp_garp_body body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'pkt='>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCKSRC')}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCKSRC')}) (C {<rump_server_add_iface>} {($ Id.VSub_DollarName '$SOCKSRC')} {<shmif0>} {<bus1>}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<inet>} {<'10.0.0.1/24'>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<inet>} {<'10.0.0.2/24'>} {<alias>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<up>} ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.ifconfig>} {<shmif0>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<sleep>} {<1>}) (command.Pipeline children: [ (command.Simple words: [{<shmif_dumpbus>} {<-p>} {<->} {<bus1>}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple words: [{<tcpdump>} {<-n>} {<-e>} {<-r>} {<->}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./out'>})] do_fork: T ) ] negated: F ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pkt) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<make_pkt_str_arpreq>} {<10.0.0.1>} {<10.0.0.1>}) ) } spids: [2094] ) ] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-x>} {(DQ <'cat ./out |grep -q \''> ($ Id.VSub_DollarName '$pkt') <'\''>)} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pkt) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<make_pkt_str_arpreq>} {<10.0.0.2>} {<10.0.0.2>}) ) } spids: [2125] ) ] ) (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-x>} {(DQ <'cat ./out |grep -q \''> ($ Id.VSub_DollarName '$pkt') <'\''>)} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<-w>} {<10>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<inet>} {<'10.0.0.3/24'>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {<inet>} {<'10.0.0.4/24'>} {<alias>} ) (command.Pipeline children: [ (command.Simple words: [{<shmif_dumpbus>} {<-p>} {<->} {<bus1>}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple words: [{<tcpdump>} {<-n>} {<-e>} {<-r>} {<->}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./out'>})] do_fork: T ) ] negated: F ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pkt) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<make_pkt_str_arpreq>} {<10.0.0.3>} {<10.0.0.3>}) ) } spids: [2236] ) ] ) (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-x>} {(DQ <'cat ./out |grep -q \''> ($ Id.VSub_DollarName '$pkt') <'\''>)} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pkt) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<make_pkt_str_arpreq>} {<10.0.0.4>} {<10.0.0.4>}) ) } spids: [2263] ) ] ) (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-x>} {(DQ <'cat ./out |grep -q \''> ($ Id.VSub_DollarName '$pkt') <'\''>)} ) (C {<rump_server_destroy_ifaces>}) ] ) ) (command.ShFunction name: arp_cache_overwriting_body body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'arp_keep='> <5>}) (C {<local>} {<Id.Lit_VarLike 'bonus='> <2>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCKSRC')}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCKDST')}) (C {<setup_dst_server>}) (C {<setup_src_server>} {($ Id.VSub_DollarName '$arp_keep')}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCKSRC')}) (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<match> <Id.Lit_Colon ':'> (SQ <'File exists'>)} {<rump.arp>} {<-s>} {($ Id.VSub_DollarName '$IP4SRC')} {<b2> <Id.Lit_Colon ':'> <a0> <Id.Lit_Colon ':'> <20> <Id.Lit_Colon ':'> <00> <Id.Lit_Colon ':'> <00> <Id.Lit_Colon ':'> <ff> } ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.arp>} {<-n>} {<-a>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-n>} {<-w>} {($ Id.VSub_DollarName '$TIMEOUT')} {<-c>} {<1>} {($ Id.VSub_DollarName '$IP4DST')} ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.arp>} {<-n>} {<-a>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.arp>} {<-s>} {($ Id.VSub_DollarName '$IP4DST')} {<b2> <Id.Lit_Colon ':'> <a0> <Id.Lit_Colon ':'> <20> <Id.Lit_Colon ':'> <00> <Id.Lit_Colon ':'> <00> <Id.Lit_Colon ':'> <00> } ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.arp>} {<-n>} {<-a>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'b2:a0:20:00:00:00'>)} {<rump.arp>} {<-n>} {($ Id.VSub_DollarName '$IP4DST')} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <permanent>)} {<rump.arp>} {<-n>} {($ Id.VSub_DollarName '$IP4DST')} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.arp>} {<-s>} {<10.0.1.10>} {<b2> <Id.Lit_Colon ':'> <a0> <Id.Lit_Colon ':'> <20> <Id.Lit_Colon ':'> <00> <Id.Lit_Colon ':'> <00> <Id.Lit_Colon ':'> <10> } {<temp>} ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.arp>} {<-n>} {<-a>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'b2:a0:20:00:00:10'>)} {<rump.arp>} {<-n>} {<10.0.1.10>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<not-match> <Id.Lit_Colon ':'> (SQ <permanent>)} {<rump.arp>} {<-n>} {<10.0.1.10>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.arp>} {<-s>} {<10.0.1.10>} {<b2> <Id.Lit_Colon ':'> <a0> <Id.Lit_Colon ':'> <20> <Id.Lit_Colon ':'> <00> <Id.Lit_Colon ':'> <00> <Id.Lit_Colon ':'> <ff> } ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'b2:a0:20:00:00:ff'>)} {<rump.arp>} {<-n>} {<10.0.1.10>} ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.arp>} {<-n>} {<-a>})] ) (C {<rump_server_destroy_ifaces>}) ] ) ) (command.ShFunction name: make_pkt_str_arprep body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'ip='> ($ Id.VSub_Number '$1')}) (C {<local>} {<Id.Lit_VarLike 'mac='> ($ Id.VSub_Number '$2')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pkt) op: assign_op.Equal rhs: {(DQ <'ethertype ARP (0x0806), length 42: '>)} spids: [2711] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pkt) op: assign_op.Equal rhs: { (DQ <'Reply '> ($ Id.VSub_DollarName '$ip') <' is-at '> ($ Id.VSub_DollarName '$mac') <', length 28'> ) } spids: [2717] ) ] ) (C {<echo>} {($ Id.VSub_DollarName '$pkt')}) ] ) ) (command.ShFunction name: make_pkt_str_garp body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'ip='> ($ Id.VSub_Number '$1')}) (C {<local>} {<Id.Lit_VarLike 'mac='> ($ Id.VSub_Number '$2')}) (C {<local>} {<Id.Lit_VarLike 'pkt='>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pkt) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$mac') <' > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806),'> ) } spids: [2758] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pkt) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$pkt') <' length 42: Request who-has '> ($ Id.VSub_DollarName '$ip') <' tell '> ($ Id.VSub_DollarName '$ip') <', length 28'> ) } spids: [2765] ) ] ) (C {<echo>} {($ Id.VSub_DollarName '$pkt')}) ] ) ) (command.ShFunction name: test_proxy_arp body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'arp_keep='> <5>}) (C {<local>} {<Id.Lit_VarLike 'opts='>} {<Id.Lit_VarLike 'title='>} {<Id.Lit_VarLike 'flags='>} ) (C {<local>} {<Id.Lit_VarLike 'type='> ($ Id.VSub_Number '$1')}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCKSRC')}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCKDST')} {<tap>}) (C {<setup_dst_server>}) (C {<setup_src_server>} {($ Id.VSub_DollarName '$arp_keep')}) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCKDST')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.sysctl>} {<-w>} {<net.inet.ip.forwarding> <Id.Lit_Equals '='> <1>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:macaddr_dst) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<get_macaddr>} {($ Id.VSub_DollarName '$SOCKDST')} {<shmif0>}) ) } spids: [2861] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$type'))} {<Id.Lit_Equals '='>} {(DQ <pub>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:opts) op: assign_op.Equal rhs: {(DQ <pub>)} spids: [2892] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:title) op: assign_op.Equal rhs: {(DQ <'permanent published'>)} spids: [2898] ) ] ) ] spids: [2872 2889] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:opts) op: assign_op.Equal rhs: {(DQ <'pub proxy'>)} spids: [2907] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:title) op: assign_op.Equal rhs: {(SQ <'permanent published \\(proxy only\\)'>)} spids: [2913] ) ] ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCKDST')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<tap1>} {<create>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<tap1>} {($ Id.VSub_DollarName '$IP4DST_PROXYARP1') <'/24'>} {<up>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<-w>} {<10>} ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCKSRC')}) (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<-e>} {<ignore>} {<rump.ping>} {<-n>} {<-w>} {<1>} {<-c>} {<1>} {($ Id.VSub_DollarName '$IP4DST_PROXYARP1')} ) (command.Simple words: [{<extract_new_packets>} {<bus1>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./out'>})] do_fork: T ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCKDST')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.arp>} {<-s>} {($ Id.VSub_DollarName '$IP4DST_PROXYARP1')} {($ Id.VSub_DollarName '$macaddr_dst')} {($ Id.VSub_DollarName '$opts')} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$title'))} {<rump.arp>} {<-n>} {($ Id.VSub_DollarName '$IP4DST_PROXYARP1')} ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCKSRC')}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$type'))} {<Id.Lit_Equals '='>} {(DQ <pub>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<-e>} {<ignore>} {<rump.ping>} {<-n>} {<-w>} {<1>} {<-c>} {<1>} {($ Id.VSub_DollarName '$IP4DST_PROXYARP1')} ) ] spids: [3117 3134] ) ] else_action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-n>} {<-w>} {<1>} {<-c>} {<1>} {($ Id.VSub_DollarName '$IP4DST_PROXYARP1')} ) ] ) (command.Simple words: [{<extract_new_packets>} {<bus1>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./out'>})] do_fork: T ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<cat>} {<'./out'>})] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pkt1) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<make_pkt_str_arprep>} {($ Id.VSub_DollarName '$IP4DST_PROXYARP1')} {($ Id.VSub_DollarName '$macaddr_dst')} ) ) } spids: [3229] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pkt2) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<make_pkt_str_garp>} {($ Id.VSub_DollarName '$IP4DST_PROXYARP1')} {($ Id.VSub_DollarName '$macaddr_dst')} ) ) } spids: [3239] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$type'))} {<Id.Lit_Equals '='>} {(DQ <pub>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-x>} { (DQ <'cat ./out |grep -q -e \''> ($ Id.VSub_DollarName '$pkt1') <'\' -e \''> ($ Id.VSub_DollarName '$pkt2') <'\''> ) } ) ] spids: [3249 3266] ) ] else_action: [ (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-x>} { (DQ <'cat ./out |grep -q -e \''> ($ Id.VSub_DollarName '$pkt1') <'\' -e \''> ($ Id.VSub_DollarName '$pkt2') <'\''> ) } ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCKDST')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.arp>} {<-s>} {($ Id.VSub_DollarName '$IP4DST_PROXYARP2')} {($ Id.VSub_DollarName '$macaddr_dst')} {($ Id.VSub_DollarName '$opts')} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$title'))} {<rump.arp>} {<-n>} {($ Id.VSub_DollarName '$IP4DST_PROXYARP2')} ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.netstat>} {<-nr>} {<-f>} {<inet>}) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCKSRC')}) (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<-e>} {<ignore>} {<rump.ping>} {<-n>} {<-w>} {<1>} {<-c>} {<1>} {($ Id.VSub_DollarName '$IP4DST_PROXYARP2')} ) (command.Simple words: [{<extract_new_packets>} {<bus1>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./out'>})] do_fork: T ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<cat>} {<'./out'>})] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pkt) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<make_pkt_str_arprep>} {($ Id.VSub_DollarName '$IP4DST_PROXYARP2')} {($ Id.VSub_DollarName '$macaddr_dst')} ) ) } spids: [3463] ) ] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-x>} {(DQ <'cat ./out |grep -q \''> ($ Id.VSub_DollarName '$pkt') <'\''>)} ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCKDST')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<tap2>} {<create>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<tap2>} {($ Id.VSub_DollarName '$IP4DST_PROXYARP2') <'/24'>} {<up>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<-w>} {<10>} ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCKSRC')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-n>} {<-w>} {<1>} {<-c>} {<1>} {($ Id.VSub_DollarName '$IP4DST_PROXYARP2')} ) ] ) ) (command.ShFunction name: arp_proxy_arp_pub_body body: (BraceGroup children:[(C {<test_proxy_arp>} {<pub>}) (C {<rump_server_destroy_ifaces>})]) ) (command.ShFunction name: arp_proxy_arp_pubproxy_body body: (BraceGroup children: [(C {<test_proxy_arp>} {<pubproxy>}) (C {<rump_server_destroy_ifaces>})] ) ) (command.ShFunction name: arp_link_activation_body body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'arp_keep='> <5>}) (C {<local>} {<Id.Lit_VarLike 'bonus='> <2>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCKSRC')}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCKDST')}) (C {<setup_dst_server>}) (C {<setup_src_server>} {($ Id.VSub_DollarName '$arp_keep')}) (command.Simple words: [{<extract_new_packets>} {<bus1>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./out'>})] do_fork: T ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCKSRC')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ifconfig>} {<shmif0>} {<link>} {<b2> <Id.Lit_Colon ':'> <a1> <Id.Lit_Colon ':'> <00> <Id.Lit_Colon ':'> <00> <Id.Lit_Colon ':'> <00> <Id.Lit_Colon ':'> <01> } ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<sleep>} {<1>}) (command.Simple words: [{<extract_new_packets>} {<bus1>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./out'>})] do_fork: T ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<cat>} {<'./out'>})] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pkt) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<make_pkt_str_arpreq>} {($ Id.VSub_DollarName '$IP4SRC')} {($ Id.VSub_DollarName '$IP4SRC')} ) ) } spids: [3748] ) ] ) (C {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-x>} {(DQ <'cat ./out |grep -q \''> ($ Id.VSub_DollarName '$pkt') <'\''>)} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ifconfig>} {<shmif0>} {<link>} {<b2> <Id.Lit_Colon ':'> <a1> <Id.Lit_Colon ':'> <00> <Id.Lit_Colon ':'> <00> <Id.Lit_Colon ':'> <00> <Id.Lit_Colon ':'> <02> } {<active>} ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<sleep>} {<1>}) (command.Simple words: [{<extract_new_packets>} {<bus1>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'./out'>})] do_fork: T ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<cat>} {<'./out'>})] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pkt) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<make_pkt_str_arpreq>} {($ Id.VSub_DollarName '$IP4SRC')} {($ Id.VSub_DollarName '$IP4SRC')} ) ) } spids: [3844] ) ] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-x>} { (DQ <'cat ./out |grep \''> ($ Id.VSub_DollarName '$pkt') <'\' |grep -q \'b2:a1:00:00:00:02\''> ) } ) (C {<rump_server_destroy_ifaces>}) ] ) ) (command.ShFunction name: arp_static_body body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'arp_keep='> <5>}) (C {<local>} {<Id.Lit_VarLike 'macaddr_src='>}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCKSRC')}) (C {<rump_server_start>} {($ Id.VSub_DollarName '$SOCKDST')}) (C {<setup_dst_server>}) (C {<setup_src_server>} {($ Id.VSub_DollarName '$arp_keep')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:macaddr_src) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<get_macaddr>} {($ Id.VSub_DollarName '$SOCKSRC')} {<shmif0>}) ) } spids: [3918] ) ] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCKDST')}) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.arp>} {<-n>} {<-a>})] ) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.arp>} {<-s>} {($ Id.VSub_DollarName '$IP4SRC')} {($ Id.VSub_DollarName '$macaddr_src')} ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<rump.arp>} {<-n>} {<-a>})] ) (C {<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName '$SOCKSRC')}) (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-n>} {<-w>} {<1>} {<-c>} {<1>} {($ Id.VSub_DollarName '$IP4DST')} ) (C {<rump_server_destroy_ifaces>}) ] ) ) (command.ShFunction name: arp_cache_expiration_5s_cleanup body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump>})] ) (C {<cleanup>}) ] ) ) (command.ShFunction name: arp_cache_expiration_10s_cleanup body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump>})] ) (C {<cleanup>}) ] ) ) (command.ShFunction name: arp_command_cleanup body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump>})] ) (C {<cleanup>}) ] ) ) (command.ShFunction name: arp_garp_cleanup body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump>})] ) (C {<cleanup>}) ] ) ) (command.ShFunction name: arp_cache_overwriting_cleanup body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump>})] ) (C {<cleanup>}) ] ) ) (command.ShFunction name: arp_proxy_arp_pub_cleanup body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump>})] ) (C {<cleanup>}) ] ) ) (command.ShFunction name: arp_proxy_arp_pubproxy_cleanup body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump>})] ) (C {<cleanup>}) ] ) ) (command.ShFunction name: arp_link_activation_cleanup body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump>})] ) (C {<cleanup>}) ] ) ) (command.ShFunction name: arp_static_cleanup body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [(C {($ Id.VSub_DollarName '$DEBUG')}) (C {<dump>})] ) (C {<cleanup>}) ] ) ) (command.ShFunction name: atf_init_test_cases body: (BraceGroup children: [ (C {<atf_add_test_case>} {<arp_cache_expiration_5s>}) (C {<atf_add_test_case>} {<arp_cache_expiration_10s>}) (C {<atf_add_test_case>} {<arp_command>}) (C {<atf_add_test_case>} {<arp_garp>}) (C {<atf_add_test_case>} {<arp_cache_overwriting>}) (C {<atf_add_test_case>} {<arp_proxy_arp_pub>}) (C {<atf_add_test_case>} {<arp_proxy_arp_pubproxy>}) (C {<atf_add_test_case>} {<arp_link_activation>}) (C {<atf_add_test_case>} {<arp_static>}) ] ) ) ] )