(CommandList children: [ (FuncDef name: usage body: (BraceGroup children: [ (C {(echo)} {(DQ )}) (C {(echo)} {(DQ ('Usage: ') ($ VSub_Number '$0') (' [-vx] -i ethX'))}) (C {(echo)} { (DQ (' -i : (') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('DEV) output interface/device (required)') ) } ) (C {(echo)} { (DQ (' -s : (') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('PKT_SIZE) packet size') ) } ) (C {(echo)} { (DQ (' -d : (') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('DEST_IP) destination IP') ) } ) (C {(echo)} { (DQ (' -m : (') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('DST_MAC) destination MAC-addr') ) } ) (C {(echo)} { (DQ (' -t : (') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('THREADS) threads to start') ) } ) (C {(echo)} { (DQ (' -c : (') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('SKB_CLONE) SKB clones send before alloc new SKB') ) } ) (C {(echo)} { (DQ (' -b : (') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('BURST) HW level bursting of SKBs') ) } ) (C {(echo)} { (DQ (' -v : (') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('VERBOSE) verbose') ) } ) (C {(echo)} { (DQ (' -x : (') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('DEBUG) debug') ) } ) (C {(echo)} { (DQ (' -6 : (') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('IP6) IPv6')) } ) (C {(echo)} {(DQ )}) ] spids: [16] ) spids: [10 15] ) (While cond: [ (Sentence child: (C {(getopts)} {(DQ ('s:i:d:m:t:c:b:vxh6'))} {(option)}) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (Case to_match: {($ VSub_Name '$option')} arms: [ (case_arm pat_list: [{(i)}] action: [ (C {(export)} {(Lit_VarLike 'DEV=') ($ VSub_Name '$OPTARG')}) (C {(info)} {(DQ ('Output device set to: DEV=') ($ VSub_Name '$DEV'))}) ] spids: [159 160 180 16777215] ) (case_arm pat_list: [{(s)}] action: [ (C {(export)} {(Lit_VarLike 'PKT_SIZE=') ($ VSub_Name '$OPTARG')}) (C {(info)} {(DQ ('Packet size set to: PKT_SIZE=') ($ VSub_Name '$PKT_SIZE') (' bytes'))} ) ] spids: [183 184 202 16777215] ) (case_arm pat_list: [{(d)}] action: [ (C {(export)} {(Lit_VarLike 'DEST_IP=') ($ VSub_Name '$OPTARG')}) (C {(info)} {(DQ ('Destination IP set to: DEST_IP=') ($ VSub_Name '$DEST_IP'))}) ] spids: [205 206 226 16777215] ) (case_arm pat_list: [{(m)}] action: [ (C {(export)} {(Lit_VarLike 'DST_MAC=') ($ VSub_Name '$OPTARG')}) (C {(info)} {(DQ ('Destination MAC set to: DST_MAC=') ($ VSub_Name '$DST_MAC'))}) ] spids: [229 230 250 16777215] ) (case_arm pat_list: [{(t)}] action: [ (C {(export)} {(Lit_VarLike 'THREADS=') ($ VSub_Name '$OPTARG')}) (C {(export)} {(Lit_VarLike 'CPU_THREADS=') ($ VSub_Name '$OPTARG')}) (C {(let)} {(DQ ('CPU_THREADS -= 1'))}) (C {(info)} { (DQ ('Number of threads to start: ') ($ VSub_Name '$THREADS') (' (0 to ') ($ VSub_Name '$CPU_THREADS') (')') ) } ) ] spids: [253 254 287 16777215] ) (case_arm pat_list: [{(c)}] action: [ (C {(export)} {(Lit_VarLike 'CLONE_SKB=') ($ VSub_Name '$OPTARG')}) (C {(info)} {(DQ ('CLONE_SKB=') ($ VSub_Name '$CLONE_SKB'))}) ] spids: [290 291 308 16777215] ) (case_arm pat_list: [{(b)}] action: [ (C {(export)} {(Lit_VarLike 'BURST=') ($ VSub_Name '$OPTARG')}) (C {(info)} {(DQ ('SKB bursting: BURST=') ($ VSub_Name '$BURST'))}) ] spids: [311 312 329 16777215] ) (case_arm pat_list: [{(v)}] action: [ (C {(export)} {(Lit_VarLike 'VERBOSE=') (yes)}) (C {(info)} {(DQ ('Verbose mode: VERBOSE=') ($ VSub_Name '$VERBOSE'))}) ] spids: [332 333 350 16777215] ) (case_arm pat_list: [{(x)}] action: [ (C {(export)} {(Lit_VarLike 'DEBUG=') (yes)}) (C {(info)} {(DQ ('Debug mode: DEBUG=') ($ VSub_Name '$DEBUG'))}) ] spids: [353 354 371 16777215] ) (case_arm pat_list: [{(6)}] action: [ (C {(export)} {(Lit_VarLike 'IP6=') (6)}) (C {(info)} {(DQ ('IP6: IP6=') ($ VSub_Name '$IP6'))}) ] spids: [374 375 392 16777215] ) (case_arm pat_list: [{(h)} {(Lit_Other '?')} {(Lit_Other '*')}] action: [ (Sentence child:(C {(usage)}) terminator:<Op_Semi ';'>) (C {(err)} {(2)} {(DQ ('[ERROR] Unknown parameters!!!'))}) ] spids: [395 400 16777215 416] ) ] spids: [152 156 416] ) ] spids: [149 418] ) ) (C {(shift)} { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name '$OPTIND')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [422 431] ) } ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$PKT_SIZE'))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (C {(export)} {(Lit_VarLike 'PKT_SIZE=') (60)}) (C {(info)} {(DQ ('Default packet size set to: set to: ') ($ VSub_Name '$PKT_SIZE') (' bytes'))} ) ] spids: [16777215 447] ) ] spids: [16777215 468] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$THREADS'))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (C {(export)} {(Lit_VarLike 'CPU_THREADS=') (0)}) (C {(export)} {(Lit_VarLike 'THREADS=') (1)}) ] spids: [16777215 484] ) ] spids: [16777215 502] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$DEV'))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [(C {(usage)}) (C {(err)} {(2)} {(DQ ('Please specify output device'))})] spids: [16777215 518] ) ] spids: [16777215 532] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$DST_MAC'))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [(C {(warn)} {(DQ ('Missing destination MAC address'))})] spids: [16777215 548] ) ] spids: [16777215 557] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$DEST_IP'))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [(C {(warn)} {(DQ ('Missing destination IP address'))})] spids: [16777215 573] ) ] spids: [16777215 582] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-d)} {(/proc/net/pktgen)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [(C {(info)} {(DQ ('Loading kernel module: pktgen'))}) (C {(modprobe)} {(pktgen)})] spids: [16777215 598] ) ] spids: [16777215 612] ) ] )