Subject: Re: [v2 3/3] samples: pktgen: allow to specify destination IP range (CIDR)

From: Jesper Dangaard Brouer <[email-masked]>
Date: Fri, 13 Sep 2019 14:31:44 +0200

On Thu, 12 Sep 2019 03:48:07 +0900
"Daniel T. Lee" <[email-masked]> wrote:

> diff --git a/samples/pktgen/pktgen_sample01_simple.sh b/samples/pktgen/pktgen_sample01_simple.sh
> index 063ec0998906..08995fa70025 100755
> --- a/samples/pktgen/pktgen_sample01_simple.sh
> +++ b/samples/pktgen/pktgen_sample01_simple.sh
> @@ -22,6 +22,7 @@ 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
> +[ -n "$DEST_IP" ] && read -r DST_MIN DST_MAX <<< $(parse_addr${IP6} $DEST_IP)

The way the function "parse_addr" is called, in case of errors the
'err()' function is called inside, but it will not stop the program
flow.  Instead that function will "only" echo the "ERROR", but program
flow continues (even-thought 'err()' uses exit $exitcode).

Maybe it is not solveable to get the exit/$?/status out? (I've tried
different options, but didn't find a way).

Alternatively we can just add one extra line to validate result:

 [ -z "$DST_MIN" ] && err 5 "Stop: Invalid IP${IP6} address input"

As if it fails then $DST_MIN isn't set.

>  if [ -n "$DST_PORT" ]; then
>      read -r UDP_DST_MIN UDP_DST_MAX <<< $(parse_ports $DST_PORT)
>      validate_ports $UDP_DST_MIN $UDP_DST_MAX
> @@ -61,7 +62,8 @@ pg_set $DEV "flag NO_TIMESTAMP"
>  
>  # Destination
>  pg_set $DEV "dst_mac $DST_MAC"
> -pg_set $DEV "dst$IP6 $DEST_IP"
> +pg_set $DEV "dst${IP6}_min $DST_MIN"
> +pg_set $DEV "dst${IP6}_max $DST_MAX"
>  
>  if [ -n "$DST_PORT" ]; then
>      # Single destination port or random port range

-- 
Best regards,
  Jesper Dangaard Brouer
  MSc.CS, Principal Kernel Engineer at Red Hat
  LinkedIn: http://www.linkedin.com/in/brouer