brintos

brintos / linux-shallow public Read only

0
0
Text · 3.7 KiB · 81906f1 Raw
140 lines · bash
1#2# SPDX-License-Identifier: GPL-2.03# Common parameter parsing for pktgen scripts4#5 6function usage() {7    echo ""8    echo "Usage: $0 [-vx] -i ethX"9    echo "  -i : (\$DEV)       output interface/device (required)"10    echo "  -s : (\$PKT_SIZE)  packet size"11    echo "  -d : (\$DEST_IP)   destination IP. CIDR (e.g. 198.18.0.0/15) is also allowed"12    echo "  -m : (\$DST_MAC)   destination MAC-addr"13    echo "  -p : (\$DST_PORT)  destination PORT range (e.g. 433-444) is also allowed"14    echo "  -k : (\$UDP_CSUM)  enable UDP tx checksum"15    echo "  -t : (\$THREADS)   threads to start"16    echo "  -f : (\$F_THREAD)  index of first thread (zero indexed CPU number)"17    echo "  -c : (\$SKB_CLONE) SKB clones send before alloc new SKB"18    echo "  -n : (\$COUNT)     num messages to send per thread, 0 means indefinitely"19    echo "  -b : (\$BURST)     HW level bursting of SKBs"20    echo "  -v : (\$VERBOSE)   verbose"21    echo "  -x : (\$DEBUG)     debug"22    echo "  -6 : (\$IP6)       IPv6"23    echo "  -w : (\$DELAY)     Tx Delay value (ns)"24    echo "  -a : (\$APPEND)    Script will not reset generator's state, but will append its config"25    echo ""26}27 28##  --- Parse command line arguments / parameters ---29## echo "Commandline options:"30while getopts "s:i:d:m:p:f:t:c:n:b:w:vxh6ak" option; do31    case $option in32        i) # interface33          export DEV=$OPTARG34	  info "Output device set to: DEV=$DEV"35          ;;36        s)37          export PKT_SIZE=$OPTARG38	  info "Packet size set to: PKT_SIZE=$PKT_SIZE bytes"39          ;;40        d) # destination IP41          export DEST_IP=$OPTARG42	  info "Destination IP set to: DEST_IP=$DEST_IP"43          ;;44        m) # MAC45          export DST_MAC=$OPTARG46	  info "Destination MAC set to: DST_MAC=$DST_MAC"47          ;;48        p) # PORT49          export DST_PORT=$OPTARG50	  info "Destination PORT set to: DST_PORT=$DST_PORT"51          ;;52        f)53	  export F_THREAD=$OPTARG54	  info "Index of first thread (zero indexed CPU number): $F_THREAD"55          ;;56        t)57	  export THREADS=$OPTARG58	  info "Number of threads to start: $THREADS"59          ;;60        c)61	  export CLONE_SKB=$OPTARG62	  info "CLONE_SKB=$CLONE_SKB"63          ;;64        n)65	  export COUNT=$OPTARG66	  info "COUNT=$COUNT"67          ;;68        b)69	  export BURST=$OPTARG70	  info "SKB bursting: BURST=$BURST"71          ;;72        w)73	  export DELAY=$OPTARG74	  info "DELAY=$DELAY"75          ;;76        v)77          export VERBOSE=yes78          info "Verbose mode: VERBOSE=$VERBOSE"79          ;;80        x)81          export DEBUG=yes82          info "Debug mode: DEBUG=$DEBUG"83          ;;84	6)85	  export IP6=686	  info "IP6: IP6=$IP6"87	  ;;88        a)89          export APPEND=yes90          info "Append mode: APPEND=$APPEND"91          ;;92        k)93          export UDP_CSUM=yes94          info "UDP tx checksum: UDP_CSUM=$UDP_CSUM"95          ;;96        h|?|*)97          usage;98          err 2 "[ERROR] Unknown parameters!!!"99    esac100done101shift $(( $OPTIND - 1 ))102 103if [ -z "$PKT_SIZE" ]; then104    # NIC adds 4 bytes CRC105    export PKT_SIZE=60106    info "Default packet size set to: set to: $PKT_SIZE bytes"107fi108 109if [ -z "$F_THREAD" ]; then110    # First thread (F_THREAD) reference the zero indexed CPU number111    export F_THREAD=0112fi113 114if [ -z "$THREADS" ]; then115    export THREADS=1116fi117 118# default DELAY119[ -z "$DELAY" ] && export DELAY=0 # Zero means max speed120 121export L_THREAD=$(( THREADS + F_THREAD - 1 ))122 123if [ -z "$DEV" ]; then124    usage125    err 2 "Please specify output device"126fi127 128if [ -z "$DST_MAC" ]; then129    warn "Missing destination MAC address"130fi131 132if [ -z "$DEST_IP" ]; then133    warn "Missing destination IP address"134fi135 136if [ ! -d /proc/net/pktgen ]; then137    info "Loading kernel module: pktgen"138    modprobe pktgen139fi140