mirror of
				https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable.git
				synced 2025-11-04 07:44:51 +10:00 
			
		
		
		
	samples: pktgen: allow to specify destination port
Currently, kernel pktgen has the feature to specify udp destination port
for sending packet. (e.g. pgset "udp_dst_min 9")
But on samples, each of the scripts doesn't have any option to achieve this.
This commit adds the DST_PORT option to specify the target port(s) in the script.
    -p : ($DST_PORT)  destination PORT range (e.g. 433-444) is also allowed
Signed-off-by: Daniel T. Lee <danieltimlee@gmail.com>
Acked-by: Jesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
			
			
This commit is contained in:
		
							parent
							
								
									226b96c25d
								
							
						
					
					
						commit
						6e32a74a6f
					
				@ -20,6 +20,7 @@ across the sample scripts.  Usage example is printed on errors::
 | 
			
		||||
  -s : ($PKT_SIZE)  packet size
 | 
			
		||||
  -d : ($DEST_IP)   destination IP
 | 
			
		||||
  -m : ($DST_MAC)   destination MAC-addr
 | 
			
		||||
  -p : ($DST_PORT)  destination PORT range (e.g. 433-444) is also allowed
 | 
			
		||||
  -t : ($THREADS)   threads to start
 | 
			
		||||
  -f : ($F_THREAD)  index of first thread (zero indexed CPU number)
 | 
			
		||||
  -c : ($SKB_CLONE) SKB clones send before alloc new SKB
 | 
			
		||||
 | 
			
		||||
@ -10,6 +10,7 @@ function usage() {
 | 
			
		||||
    echo "  -s : (\$PKT_SIZE)  packet size"
 | 
			
		||||
    echo "  -d : (\$DEST_IP)   destination IP"
 | 
			
		||||
    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"
 | 
			
		||||
@ -23,7 +24,7 @@ function usage() {
 | 
			
		||||
 | 
			
		||||
##  --- Parse command line arguments / parameters ---
 | 
			
		||||
## echo "Commandline options:"
 | 
			
		||||
while getopts "s:i:d:m:f:t:c:n:b:vxh6" option; do
 | 
			
		||||
while getopts "s:i:d:m:p:f:t:c:n:b:vxh6" option; do
 | 
			
		||||
    case $option in
 | 
			
		||||
        i) # interface
 | 
			
		||||
          export DEV=$OPTARG
 | 
			
		||||
@ -41,6 +42,10 @@ while getopts "s:i:d:m:f:t:c:n:b:vxh6" option; do
 | 
			
		||||
          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"
 | 
			
		||||
 | 
			
		||||
@ -41,6 +41,10 @@ fi
 | 
			
		||||
[ -z "$DST_MAC" ] && DST_MAC="90:e2:ba:ff:ff:ff"
 | 
			
		||||
[ -z "$BURST" ] && BURST=1024
 | 
			
		||||
[ -z "$COUNT" ] && COUNT="10000000" # Zero means indefinitely
 | 
			
		||||
if [ -n "$DST_PORT" ]; then
 | 
			
		||||
    read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
 | 
			
		||||
    validate_ports $DST_MIN $DST_MAX
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Base Config
 | 
			
		||||
DELAY="0"        # Zero means max speed
 | 
			
		||||
@ -69,6 +73,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
 | 
			
		||||
    pg_set $dev "dst_mac $DST_MAC"
 | 
			
		||||
    pg_set $dev "dst$IP6 $DEST_IP"
 | 
			
		||||
 | 
			
		||||
    if [ -n "$DST_PORT" ]; then
 | 
			
		||||
	# Single destination port or random port range
 | 
			
		||||
	pg_set $dev "flag UDPDST_RND"
 | 
			
		||||
	pg_set $dev "udp_dst_min $DST_MIN"
 | 
			
		||||
	pg_set $dev "udp_dst_max $DST_MAX"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # Inject packet into RX path of stack
 | 
			
		||||
    pg_set $dev "xmit_mode netif_receive"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -24,6 +24,10 @@ if [[ -n "$BURST" ]]; then
 | 
			
		||||
    err 1 "Bursting not supported for this mode"
 | 
			
		||||
fi
 | 
			
		||||
[ -z "$COUNT" ] && COUNT="10000000" # Zero means indefinitely
 | 
			
		||||
if [ -n "$DST_PORT" ]; then
 | 
			
		||||
    read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
 | 
			
		||||
    validate_ports $DST_MIN $DST_MAX
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Base Config
 | 
			
		||||
DELAY="0"        # Zero means max speed
 | 
			
		||||
@ -52,6 +56,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
 | 
			
		||||
    pg_set $dev "dst_mac $DST_MAC"
 | 
			
		||||
    pg_set $dev "dst$IP6 $DEST_IP"
 | 
			
		||||
 | 
			
		||||
    if [ -n "$DST_PORT" ]; then
 | 
			
		||||
	# Single destination port or random port range
 | 
			
		||||
	pg_set $dev "flag UDPDST_RND"
 | 
			
		||||
	pg_set $dev "udp_dst_min $DST_MIN"
 | 
			
		||||
	pg_set $dev "udp_dst_max $DST_MAX"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # Inject packet into TX qdisc egress path of stack
 | 
			
		||||
    pg_set $dev "xmit_mode queue_xmit"
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
@ -22,6 +22,10 @@ fi
 | 
			
		||||
# Example enforce param "-m" for dst_mac
 | 
			
		||||
[ -z "$DST_MAC" ] && usage && err 2 "Must specify -m dst_mac"
 | 
			
		||||
[ -z "$COUNT" ]   && COUNT="100000" # Zero means indefinitely
 | 
			
		||||
if [ -n "$DST_PORT" ]; then
 | 
			
		||||
    read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
 | 
			
		||||
    validate_ports $DST_MIN $DST_MAX
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Base Config
 | 
			
		||||
DELAY="0"        # Zero means max speed
 | 
			
		||||
@ -59,6 +63,13 @@ pg_set $DEV "flag NO_TIMESTAMP"
 | 
			
		||||
pg_set $DEV "dst_mac $DST_MAC"
 | 
			
		||||
pg_set $DEV "dst$IP6 $DEST_IP"
 | 
			
		||||
 | 
			
		||||
if [ -n "$DST_PORT" ]; then
 | 
			
		||||
    # Single destination port or random port range
 | 
			
		||||
    pg_set $DEV "flag UDPDST_RND"
 | 
			
		||||
    pg_set $DEV "udp_dst_min $DST_MIN"
 | 
			
		||||
    pg_set $DEV "udp_dst_max $DST_MAX"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Setup random UDP port src range
 | 
			
		||||
pg_set $DEV "flag UDPSRC_RND"
 | 
			
		||||
pg_set $DEV "udp_src_min $UDP_MIN"
 | 
			
		||||
 | 
			
		||||
@ -29,6 +29,10 @@ if [ -z "$DEST_IP" ]; then
 | 
			
		||||
    [ -z "$IP6" ] && DEST_IP="198.18.0.42" || DEST_IP="FD00::1"
 | 
			
		||||
fi
 | 
			
		||||
[ -z "$DST_MAC" ] && DST_MAC="90:e2:ba:ff:ff:ff"
 | 
			
		||||
if [ -n "$DST_PORT" ]; then
 | 
			
		||||
    read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
 | 
			
		||||
    validate_ports $DST_MIN $DST_MAX
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# General cleanup everything since last run
 | 
			
		||||
pg_ctrl "reset"
 | 
			
		||||
@ -60,6 +64,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
 | 
			
		||||
    pg_set $dev "dst_mac $DST_MAC"
 | 
			
		||||
    pg_set $dev "dst$IP6 $DEST_IP"
 | 
			
		||||
 | 
			
		||||
    if [ -n "$DST_PORT" ]; then
 | 
			
		||||
	# Single destination port or random port range
 | 
			
		||||
	pg_set $dev "flag UDPDST_RND"
 | 
			
		||||
	pg_set $dev "udp_dst_min $DST_MIN"
 | 
			
		||||
	pg_set $dev "udp_dst_max $DST_MAX"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # Setup random UDP port src range
 | 
			
		||||
    pg_set $dev "flag UDPSRC_RND"
 | 
			
		||||
    pg_set $dev "udp_src_min $UDP_MIN"
 | 
			
		||||
 | 
			
		||||
@ -33,6 +33,10 @@ fi
 | 
			
		||||
[ -z "$BURST" ]     && BURST=32
 | 
			
		||||
[ -z "$CLONE_SKB" ] && CLONE_SKB="0" # No need for clones when bursting
 | 
			
		||||
[ -z "$COUNT" ]     && COUNT="0" # Zero means indefinitely
 | 
			
		||||
if [ -n "$DST_PORT" ]; then
 | 
			
		||||
    read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
 | 
			
		||||
    validate_ports $DST_MIN $DST_MAX
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Base Config
 | 
			
		||||
DELAY="0"  # Zero means max speed
 | 
			
		||||
@ -60,6 +64,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
 | 
			
		||||
    pg_set $dev "dst_mac $DST_MAC"
 | 
			
		||||
    pg_set $dev "dst$IP6 $DEST_IP"
 | 
			
		||||
 | 
			
		||||
    if [ -n "$DST_PORT" ]; then
 | 
			
		||||
	# Single destination port or random port range
 | 
			
		||||
	pg_set $dev "flag UDPDST_RND"
 | 
			
		||||
	pg_set $dev "udp_dst_min $DST_MIN"
 | 
			
		||||
	pg_set $dev "udp_dst_max $DST_MAX"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # Setup burst, for easy testing -b 0 disable bursting
 | 
			
		||||
    # (internally in pktgen default and minimum burst=1)
 | 
			
		||||
    if [[ ${BURST} -ne 0 ]]; then
 | 
			
		||||
 | 
			
		||||
@ -17,6 +17,10 @@ source ${basedir}/parameters.sh
 | 
			
		||||
[ -z "$DST_MAC" ]   && DST_MAC="90:e2:ba:ff:ff:ff"
 | 
			
		||||
[ -z "$CLONE_SKB" ] && CLONE_SKB="0"
 | 
			
		||||
[ -z "$COUNT" ]     && COUNT="0" # Zero means indefinitely
 | 
			
		||||
if [ -n "$DST_PORT" ]; then
 | 
			
		||||
    read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
 | 
			
		||||
    validate_ports $DST_MIN $DST_MAX
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# NOTICE:  Script specific settings
 | 
			
		||||
# =======
 | 
			
		||||
@ -56,6 +60,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
 | 
			
		||||
    pg_set $dev "dst_mac $DST_MAC"
 | 
			
		||||
    pg_set $dev "dst $DEST_IP"
 | 
			
		||||
 | 
			
		||||
    if [ -n "$DST_PORT" ]; then
 | 
			
		||||
	# Single destination port or random port range
 | 
			
		||||
	pg_set $dev "flag UDPDST_RND"
 | 
			
		||||
	pg_set $dev "udp_dst_min $DST_MIN"
 | 
			
		||||
	pg_set $dev "udp_dst_max $DST_MAX"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # Randomize source IP-addresses
 | 
			
		||||
    pg_set $dev "flag IPSRC_RND"
 | 
			
		||||
    pg_set $dev "src_min 198.18.0.0"
 | 
			
		||||
 | 
			
		||||
@ -22,7 +22,10 @@ source ${basedir}/parameters.sh
 | 
			
		||||
[ -z "$CLONE_SKB" ] && CLONE_SKB="0"
 | 
			
		||||
[ -z "$BURST" ]     && BURST=32
 | 
			
		||||
[ -z "$COUNT" ]     && COUNT="0" # Zero means indefinitely
 | 
			
		||||
 | 
			
		||||
if [ -n "$DST_PORT" ]; then
 | 
			
		||||
    read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
 | 
			
		||||
    validate_ports $DST_MIN $DST_MAX
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Base Config
 | 
			
		||||
DELAY="0"  # Zero means max speed
 | 
			
		||||
@ -50,6 +53,13 @@ for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
 | 
			
		||||
    pg_set $dev "dst_mac $DST_MAC"
 | 
			
		||||
    pg_set $dev "dst $DEST_IP"
 | 
			
		||||
 | 
			
		||||
    if [ -n "$DST_PORT" ]; then
 | 
			
		||||
	# Single destination port or random port range
 | 
			
		||||
	pg_set $dev "flag UDPDST_RND"
 | 
			
		||||
	pg_set $dev "udp_dst_min $DST_MIN"
 | 
			
		||||
	pg_set $dev "udp_dst_max $DST_MAX"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # Setup source IP-addresses based on thread number
 | 
			
		||||
    pg_set $dev "src_min 198.18.$((thread+1)).1"
 | 
			
		||||
    pg_set $dev "src_max 198.18.$((thread+1)).1"
 | 
			
		||||
 | 
			
		||||
@ -35,6 +35,10 @@ if [ -z "$DEST_IP" ]; then
 | 
			
		||||
    [ -z "$IP6" ] && DEST_IP="198.18.0.42" || DEST_IP="FD00::1"
 | 
			
		||||
fi
 | 
			
		||||
[ -z "$DST_MAC" ] && DST_MAC="90:e2:ba:ff:ff:ff"
 | 
			
		||||
if [ -n "$DST_PORT" ]; then
 | 
			
		||||
    read -r DST_MIN DST_MAX <<< $(parse_ports $DST_PORT)
 | 
			
		||||
    validate_ports $DST_MIN $DST_MAX
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# General cleanup everything since last run
 | 
			
		||||
pg_ctrl "reset"
 | 
			
		||||
@ -77,6 +81,13 @@ for ((i = 0; i < $THREADS; i++)); do
 | 
			
		||||
    pg_set $dev "dst_mac $DST_MAC"
 | 
			
		||||
    pg_set $dev "dst$IP6 $DEST_IP"
 | 
			
		||||
 | 
			
		||||
    if [ -n "$DST_PORT" ]; then
 | 
			
		||||
	# Single destination port or random port range
 | 
			
		||||
	pg_set $dev "flag UDPDST_RND"
 | 
			
		||||
	pg_set $dev "udp_dst_min $DST_MIN"
 | 
			
		||||
	pg_set $dev "udp_dst_max $DST_MAX"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # Setup random UDP port src range
 | 
			
		||||
    pg_set $dev "flag UDPSRC_RND"
 | 
			
		||||
    pg_set $dev "udp_src_min $UDP_MIN"
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user