|  | #!/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. Two CPU example. We add eth1 to the first | 
|  | # and leave the second idle. | 
|  |  | 
|  | PGDEV=/proc/net/pktgen/kpktgend_0 | 
|  | echo "Removing all devices" | 
|  | pgset "rem_device_all" | 
|  | echo "Adding eth1" | 
|  | pgset "add_device eth1" | 
|  |  | 
|  | # We need to remove old config since we dont use this thread. We can only | 
|  | # one NIC on one CPU due to affinity reasons. | 
|  |  | 
|  | PGDEV=/proc/net/pktgen/kpktgend_1 | 
|  | echo "Removing all devices" | 
|  | pgset "rem_device_all" | 
|  |  | 
|  | # device config | 
|  | # delay 0 means maximum speed. | 
|  |  | 
|  | CLONE_SKB="clone_skb 1000000" | 
|  | # NIC adds 4 bytes CRC | 
|  | PKT_SIZE="pkt_size 60" | 
|  |  | 
|  | # 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 "dst 10.10.11.2" | 
|  | 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 |