(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:basedir) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<dirname>} {($ Id.VSub_Number '$0')}) ) } spids: [27] ) ] ) (C {<source>} {(${ Id.VSub_Name basedir) <'/functions.sh'>}) (C {<root_check_run_with_sudo>} {(DQ ($ Id.VSub_At '$@'))}) (C {<source>} {(${ Id.VSub_Name basedir) <'/parameters.sh'>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$DEST_IP'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$IP6'))} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DEST_IP) op: assign_op.Equal rhs: {(DQ <198.18.0.42>)} spids: [88] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DEST_IP) op: assign_op.Equal rhs: {(DQ <'FD00::1'>)} spids: [95] ) ] ) ] ) ] spids: [60 73] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$DST_MAC'))} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DST_MAC) op: assign_op.Equal rhs: {(DQ <'90:e2:ba:ff:ff:ff'>)} spids: [114] ) ] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName '$BURST'))} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<err>} {<1>} {(DQ <'Bursting not supported for this mode'>)})] spids: [123 136] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DELAY) op: assign_op.Equal rhs: {(DQ <0>)} spids: [153] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COUNT) op: assign_op.Equal rhs: {(DQ <10000000>)} spids: [161] ) ] ) (C {<pg_ctrl>} {(DQ <reset>)}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike thread> right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike thread> right: {($ Id.VSub_DollarName '$THREADS')} ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike thread>) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dev) op: assign_op.Equal rhs: {(${ Id.VSub_Name DEV) <Id.Lit_At '@'> (${ Id.VSub_Name thread)} spids: [217] ) ] ) (C {<pg_thread>} {($ Id.VSub_DollarName '$thread')} {(DQ <rem_device_all>)}) (C {<pg_thread>} {($ Id.VSub_DollarName '$thread')} {(DQ <add_device>)} {($ Id.VSub_DollarName '$dev')} ) (C {<pg_set>} {($ Id.VSub_DollarName '$dev')} {(DQ <'flag QUEUE_MAP_CPU'>)}) (C {<pg_set>} {($ Id.VSub_DollarName '$dev')} {(DQ <'count '> ($ Id.VSub_DollarName '$COUNT'))} ) (C {<pg_set>} {($ Id.VSub_DollarName '$dev')} {(DQ <'pkt_size '> ($ Id.VSub_DollarName '$PKT_SIZE'))} ) (C {<pg_set>} {($ Id.VSub_DollarName '$dev')} {(DQ <'delay '> ($ Id.VSub_DollarName '$DELAY'))} ) (C {<pg_set>} {($ Id.VSub_DollarName '$dev')} {(DQ <'flag NO_TIMESTAMP'>)}) (C {<pg_set>} {($ Id.VSub_DollarName '$dev')} {(DQ <'dst_mac '> ($ Id.VSub_DollarName '$DST_MAC'))} ) (C {<pg_set>} {($ Id.VSub_DollarName '$dev')} {(DQ <dst> ($ Id.VSub_DollarName '$IP6') <' '> ($ Id.VSub_DollarName '$DEST_IP'))} ) (C {<pg_set>} {($ Id.VSub_DollarName '$dev')} {(DQ <'xmit_mode queue_xmit'>)}) ] ) ) (command.Simple words: [{<echo>} {(DQ <'Running... ctrl^C to stop'>)}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (C {<pg_ctrl>} {(DQ <start>)}) (command.Simple words: [{<echo>} {(DQ <Done>)}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike thread> right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike thread> right: {($ Id.VSub_DollarName '$THREADS')} ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike thread>) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dev) op: assign_op.Equal rhs: {(${ Id.VSub_Name DEV) <Id.Lit_At '@'> (${ Id.VSub_Name thread)} spids: [405] ) ] ) (C {<echo>} {(DQ <'Device: '> ($ Id.VSub_DollarName '$dev'))}) (command.Pipeline children: [ (C {<cat>} {<'/proc/net/pktgen/'> ($ Id.VSub_DollarName '$dev')}) (C {<grep>} {<-A2>} {(DQ <'Result:'>)}) ] negated: F ) ] ) ) ] )