123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- #
- # SPDX-License-Identifier: GPL-2.0
- # Common parameter parsing for pktgen scripts
- #
- function usage() {
- echo ""
- echo "Usage: $0 [-vx] -i ethX"
- echo " -i : (\$DEV) output interface/device (required)"
- echo " -s : (\$PKT_SIZE) packet size"
- echo " -d : (\$DEST_IP) destination IP. CIDR (e.g. 198.18.0.0/15) is also allowed"
- echo " -m : (\$DST_MAC) destination MAC-addr"
- echo " -p : (\$DST_PORT) destination PORT range (e.g. 433-444) is also allowed"
- echo " -t : (\$THREADS) threads to start"
- echo " -f : (\$F_THREAD) index of first thread (zero indexed CPU number)"
- echo " -c : (\$SKB_CLONE) SKB clones send before alloc new SKB"
- echo " -n : (\$COUNT) num messages to send per thread, 0 means indefinitely"
- echo " -b : (\$BURST) HW level bursting of SKBs"
- echo " -v : (\$VERBOSE) verbose"
- echo " -x : (\$DEBUG) debug"
- echo " -6 : (\$IP6) IPv6"
- echo ""
- }
- ## --- Parse command line arguments / parameters ---
- ## echo "Commandline options:"
- while getopts "s:i:d:m:p:f:t:c:n:b:vxh6" option; do
- case $option in
- i) # interface
- export DEV=$OPTARG
- info "Output device set to: DEV=$DEV"
- ;;
- s)
- export PKT_SIZE=$OPTARG
- info "Packet size set to: PKT_SIZE=$PKT_SIZE bytes"
- ;;
- d) # destination IP
- export DEST_IP=$OPTARG
- info "Destination IP set to: DEST_IP=$DEST_IP"
- ;;
- m) # MAC
- export DST_MAC=$OPTARG
- info "Destination MAC set to: DST_MAC=$DST_MAC"
- ;;
- p) # PORT
- export DST_PORT=$OPTARG
- info "Destination PORT set to: DST_PORT=$DST_PORT"
- ;;
- f)
- export F_THREAD=$OPTARG
- info "Index of first thread (zero indexed CPU number): $F_THREAD"
- ;;
- t)
- export THREADS=$OPTARG
- info "Number of threads to start: $THREADS"
- ;;
- c)
- export CLONE_SKB=$OPTARG
- info "CLONE_SKB=$CLONE_SKB"
- ;;
- n)
- export COUNT=$OPTARG
- info "COUNT=$COUNT"
- ;;
- b)
- export BURST=$OPTARG
- info "SKB bursting: BURST=$BURST"
- ;;
- v)
- export VERBOSE=yes
- info "Verbose mode: VERBOSE=$VERBOSE"
- ;;
- x)
- export DEBUG=yes
- info "Debug mode: DEBUG=$DEBUG"
- ;;
- 6)
- export IP6=6
- info "IP6: IP6=$IP6"
- ;;
- h|?|*)
- usage;
- err 2 "[ERROR] Unknown parameters!!!"
- esac
- done
- shift $(( $OPTIND - 1 ))
- if [ -z "$PKT_SIZE" ]; then
- # NIC adds 4 bytes CRC
- export PKT_SIZE=60
- info "Default packet size set to: set to: $PKT_SIZE bytes"
- fi
- if [ -z "$F_THREAD" ]; then
- # First thread (F_THREAD) reference the zero indexed CPU number
- export F_THREAD=0
- fi
- if [ -z "$THREADS" ]; then
- export THREADS=1
- fi
- export L_THREAD=$(( THREADS + F_THREAD - 1 ))
- if [ -z "$DEV" ]; then
- usage
- err 2 "Please specify output device"
- fi
- if [ -z "$DST_MAC" ]; then
- warn "Missing destination MAC address"
- fi
- if [ -z "$DEST_IP" ]; then
- warn "Missing destination IP address"
- fi
- if [ ! -d /proc/net/pktgen ]; then
- info "Loading kernel module: pktgen"
- modprobe pktgen
- fi
|