0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030 basedir=`dirname $0`
0031 source ${basedir}/functions.sh
0032 root_check_run_with_sudo "$@"
0033
0034
0035 source ${basedir}/parameters.sh
0036
0037
0038 if [ -z "$DEST_IP" ]; then
0039 [ -z "$IP6" ] && DEST_IP="198.18.0.42" || DEST_IP="FD00::1"
0040 fi
0041 [ -z "$DST_MAC" ] && DST_MAC="90:e2:ba:ff:ff:ff"
0042 [ -z "$BURST" ] && BURST=1024
0043 [ -z "$COUNT" ] && COUNT="10000000"
0044 if [ -n "$DEST_IP" ]; then
0045 validate_addr${IP6} $DEST_IP
0046 read -r DST_MIN DST_MAX <<< $(parse_addr${IP6} $DEST_IP)
0047 fi
0048 if [ -n "$DST_PORT" ]; then
0049 read -r UDP_DST_MIN UDP_DST_MAX <<< $(parse_ports $DST_PORT)
0050 validate_ports $UDP_DST_MIN $UDP_DST_MAX
0051 fi
0052
0053
0054 pg_ctrl "reset"
0055
0056
0057 for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
0058
0059
0060 dev=${DEV}@${thread}
0061
0062
0063 pg_thread $thread "rem_device_all"
0064 pg_thread $thread "add_device" $dev
0065
0066
0067 pg_set $dev "flag QUEUE_MAP_CPU"
0068 pg_set $dev "count $COUNT"
0069 pg_set $dev "pkt_size $PKT_SIZE"
0070 pg_set $dev "delay $DELAY"
0071 pg_set $dev "flag NO_TIMESTAMP"
0072
0073
0074 pg_set $dev "dst_mac $DST_MAC"
0075 pg_set $dev "dst${IP6}_min $DST_MIN"
0076 pg_set $dev "dst${IP6}_max $DST_MAX"
0077
0078 if [ -n "$DST_PORT" ]; then
0079
0080 pg_set $dev "flag UDPDST_RND"
0081 pg_set $dev "udp_dst_min $UDP_DST_MIN"
0082 pg_set $dev "udp_dst_max $UDP_DST_MAX"
0083 fi
0084
0085
0086 pg_set $dev "xmit_mode netif_receive"
0087
0088
0089 pg_set $dev "burst $BURST"
0090 done
0091
0092
0093 function print_result() {
0094
0095 for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
0096 dev=${DEV}@${thread}
0097 echo "Device: $dev"
0098 cat /proc/net/pktgen/$dev | grep -A2 "Result:"
0099 done
0100 }
0101
0102 trap true SIGINT
0103
0104
0105 echo "Running... ctrl^C to stop" >&2
0106 pg_ctrl "start"
0107 echo "Done" >&2
0108
0109 print_result