diff --git a/arp-flood.sh b/arp-flood.sh new file mode 100755 index 00000000..1b17d576 --- /dev/null +++ b/arp-flood.sh @@ -0,0 +1,85 @@ +#!/bin/bash +echo "----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- " +echo " This script will issue local arp flushes. " +echo " Those commands cannot be issued against a remote lanforge." +echo "----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- " +sleep 2 +mgr=localhost +port=4001 +station=wlan0 +upstream=eth1 +num_mvlans=20 +cxlist=() +ports=($station) +trap do_sigint ABRT +trap do_sigint INT +trap do_sigint KILL +trap do_sigint PIPE +trap do_sigint QUIT +trap do_sigint SEGV +trap do_sigint TERM + +function do_sigint() { + echo "" + for cx in "${cxlist[@]}"; do + echo -n "stopping $cx " + fire_cmd set_cx_state default_tm $cx STOPPED >/dev/null + done + for cx in "${cxlist[@]}"; do + echo -n "removing $cx " + fire_cmd rm_cx default_tm $cx STOPPED >/dev/null + done + for cx in "${cxlist[@]}"; do + echo -n "removing $cx-A $cx-B " + fire_cmd rm_endp ${cx}-A STOPPED >/dev/null + fire_cmd rm_endp ${cx}-B STOPPED >/dev/null + done + exit 0 +} + +function fire_cmd() { + ./lf_firemod.pl --mgr $mgr --mgr_port $port --quiet yes --action do_cmd \ + --cmd "$*" \ + &>/dev/null +} +function fire_newcx() { + local cxname=$1; shift + local sta=$1; shift + local eth=$1; shift + ./lf_firemod.pl --mgr $mgr --mgr_port $port --action create_cx --quiet yes \ + --cx_name $cxname --use_ports $sta,$eth --use_speeds 2600,2600 --endp_type udp \ + &>/dev/null +} + +# create new set of vlans, this will also recreate them using random mac addresses +for i in `seq 0 $num_mvlans`; do + mvlan="${upstream}#${i}" + echo -n " $mvlan" + fire_cmd rm_vlan 1 1 $mvlan + echo -n "-" + fire_cmd add_mvlan 1 1 $upstream 'xx:xx:xx:*:*:xx' $i + echo -n "+" + fire_cmd set_port 1 1 "$mvlan" NA NA NA NA 2147483648 NA NA NA NA 67125250 + echo -n "." + fire_newcx "udp-$i" $station $mvlan + echo -n "o" + cxlist+=("udp-$i") + ports+=($mvlan) +done +sleep 4 +for i in `seq 0 $num_mvlans`; do + echo -n "!" + fire_cmd set_cx_state default_tm "udp-$i" RUNNING +done + +sleep 4 +echo "" +echo -n "Starting arp flushing " +while : ; do + for p in "${ports[@]}"; do + ip neigh flush dev $p@$upstream + + done + echo -n "." + sleep 0.2 +done