| #!/bin/bash | 
 |  | 
 | #modprobe pktgen | 
 |  | 
 |  | 
 | function pgset() { | 
 |     local result | 
 |  | 
 |     echo $1 > $PGDEV | 
 |  | 
 |     result=`cat $PGDEV | fgrep "Result: OK:"` | 
 |     if [ "$result" = "" ]; then | 
 |          cat $PGDEV | fgrep Result: | 
 |     fi | 
 | } | 
 |  | 
 | # Config Start Here ----------------------------------------------------------- | 
 |  | 
 |  | 
 | # thread config | 
 | # Each CPU has its own thread. One CPU example. We add eth1. | 
 | # IPv6. Note increase in minimal packet length | 
 |  | 
 | PGDEV=/proc/net/pktgen/kpktgend_0 | 
 |   echo "Removing all devices" | 
 |  pgset "rem_device_all" | 
 |   echo "Adding eth1" | 
 |  pgset "add_device eth1" | 
 |  | 
 |  | 
 | # device config | 
 | # delay 0 means maximum speed. | 
 |  | 
 | # We need to do alloc for every skb since we cannot clone here. | 
 | CLONE_SKB="clone_skb 0" | 
 |  | 
 | # NIC adds 4 bytes CRC | 
 | PKT_SIZE="pkt_size 66" | 
 |  | 
 | # COUNT 0 means forever | 
 | #COUNT="count 0" | 
 | COUNT="count 10000000" | 
 | DELAY="delay 0" | 
 |  | 
 | PGDEV=/proc/net/pktgen/eth1 | 
 |   echo "Configuring $PGDEV" | 
 |  pgset "$COUNT" | 
 |  pgset "$CLONE_SKB" | 
 |  pgset "$PKT_SIZE" | 
 |  pgset "$DELAY" | 
 |  pgset "dst6_min fec0::1" | 
 |  pgset "dst6_max fec0::FFFF:FFFF" | 
 |  | 
 |  pgset "dst_mac  00:04:23:08:91:dc" | 
 |  | 
 | # Time to run | 
 | PGDEV=/proc/net/pktgen/pgctrl | 
 |  | 
 |  echo "Running... ctrl^C to stop" | 
 |  trap true INT | 
 |  pgset "start" | 
 |  echo "Done" | 
 |  cat /proc/net/pktgen/eth1 |