(command.CommandList children: [ (command.FuncDef name: pktgen body: (command.BraceGroup children: [ (C {(../pktgen/pktgen_bench_xmit_mode_netif_receive.sh)} {(-i)} {($ VSub_DollarName '$IFC')} {(-s)} {(64)} {(-m)} {(90) (Lit_Other ':') (e2) (Lit_Other ':') (ba) (Lit_Other ':') (ff) (Lit_Other ':') (ff) (Lit_Other ':') (ff) } {(-d)} {(192.168.0.1)} {(-t)} {(4)} ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:dropped) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(tc)} {(-s)} {(qdisc)} {(show)} {(dev)} {($ VSub_DollarName '$IFC')}) (C {(tail)} {(-3)}) (C {(awk)} {(SQ <'/drop/{print $7}'>)}) ] negated: F ) ] ) left_token: <Left_Backtick '`'> ) } ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$dropped'))} {(Lit_Other '=') (Lit_Other '=')} {(DQ ('0,'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {(DQ (FAIL))})] ) ] else_action: [ (C {(echo)} {(DQ ('Successfully filtered '))} {($ VSub_DollarName '$dropped')} {(DQ (' packets'))} ) ] ) ] ) ) (command.FuncDef name: test body: (command.BraceGroup children: [ (C {(echo)} {(-n)} {(DQ ("Loading bpf program '") ($ VSub_Number '$2') ("'... "))}) (C {(tc)} {(qdisc)} {(add)} {(dev)} {($ VSub_DollarName '$IFC')} {(clsact)}) (C {(tc)} {(filter)} {(add)} {(dev)} {($ VSub_DollarName '$IFC')} {(ingress)} {(bpf)} {(da)} {(obj)} {($ VSub_Number '$1')} {(sec)} {($ VSub_Number '$2')} ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:status) op: Equal rhs: {($ VSub_QMark '$?')} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_Other '[')} {($ VSub_DollarName '$status')} {(-ne)} {(0)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {(DQ (FAIL))})] ) ] else_action: [(C {(echo)} {(DQ (ok))}) (C {(pktgen)})] ) (C {(tc)} {(qdisc)} {(del)} {(dev)} {($ VSub_DollarName '$IFC')} {(clsact)}) ] ) ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:IFC) op:Equal rhs:{(test_veth)})] ) (C {(ip)} {(link)} {(add)} {(name)} {($ VSub_DollarName '$IFC')} {(type)} {(veth)} {(peer)} {(name)} {(pair_) ($ VSub_DollarName '$IFC')} ) (C {(ip)} {(link)} {(set)} {($ VSub_DollarName '$IFC')} {(up)}) (C {(ip)} {(link)} {(set)} {(pair_) ($ VSub_DollarName '$IFC')} {(up)}) (C {(test)} {(./parse_simple.o)} {(simple)}) (C {(test)} {(./parse_varlen.o)} {(varlen)}) (C {(test)} {(./parse_ldabs.o)} {(ldabs)}) (C {(ip)} {(link)} {(del)} {(dev)} {($ VSub_DollarName '$IFC')}) ] )