mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-11-04 04:38:02 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			139 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/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=200
 | 
						|
cxlist=()
 | 
						|
ports=($station)
 | 
						|
saved_gc_stale_time=`cat /proc/sys/net/ipv4/neigh/default/gc_stale_time`
 | 
						|
saved_base_reachable_time_ms=`cat /proc/sys/net/ipv4/neigh/default/base_reachable_time_ms`
 | 
						|
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 -en "\nDefaulting arp timings "
 | 
						|
    for ((i=0; i < num_mvlans; i++)); do
 | 
						|
        mvlan="${upstream}#${i}"
 | 
						|
        echo $saved_gc_stale_time > /proc/sys/net/ipv4/neigh/$mvlan/gc_stale_time
 | 
						|
        echo $saved_base_reachable_time_ms > /proc/sys/net/ipv4/neigh/$mvlan/base_reachable_time_ms
 | 
						|
        echo -n "."
 | 
						|
    done
 | 
						|
    echo ""
 | 
						|
    echo -en "\nStopping connections: "
 | 
						|
    fire_cmd stop_group udp-arp
 | 
						|
    #for cx in "${cxlist[@]}"; do
 | 
						|
    #    echo -n ":"
 | 
						|
    #    fire_cmd set_cx_state default_tm $cx STOPPED >/dev/null
 | 
						|
    #done
 | 
						|
    echo ""
 | 
						|
    fire_cmd clear_group udp-arp
 | 
						|
    echo -n "Removing connections: "
 | 
						|
    for cx in "${cxlist[@]}"; do
 | 
						|
        echo -n "x"
 | 
						|
        fire_cmd rm_cx default_tm $cx STOPPED >/dev/null
 | 
						|
    done
 | 
						|
    echo ""
 | 
						|
    echo -n "Removing endpoints:   "
 | 
						|
    for cx in "${cxlist[@]}"; do
 | 
						|
        echo -n "-"
 | 
						|
        fire_cmd rm_endp ${cx}-A STOPPED >/dev/null
 | 
						|
        fire_cmd rm_endp ${cx}-B STOPPED >/dev/null
 | 
						|
    done
 | 
						|
    echo ""
 | 
						|
    set +x
 | 
						|
    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 11500,11500 --endp_type udp \
 | 
						|
        &>/dev/null
 | 
						|
}
 | 
						|
 | 
						|
# create new set of vlans, this will also recreate them using random mac addresses
 | 
						|
 | 
						|
#num_vlans=$(( $num_mvlans - 1))
 | 
						|
set -e
 | 
						|
if (( num_mvlans < 1 )); then
 | 
						|
    echo "Too few vlans"
 | 
						|
    exit 1
 | 
						|
fi
 | 
						|
 | 
						|
echo -n "Removing old $num_mvlans macvlans: "
 | 
						|
for ((i=0; i < num_mvlans; i++)); do
 | 
						|
    mvlan="${upstream}#${i}"
 | 
						|
    fire_cmd rm_vlan 1 1 $mvlan
 | 
						|
    echo -n "-"
 | 
						|
    sleep 0.03
 | 
						|
done
 | 
						|
sleep 1
 | 
						|
echo " Checking for $num_mvlans old vlans:"
 | 
						|
while (./lf_portmod.pl --mgr localhost --list_port_names | grep -q "$upstream#"); do
 | 
						|
    sleep 1
 | 
						|
    echo -n ","
 | 
						|
done
 | 
						|
 | 
						|
echo -n "Adding $num_mvlans new macvlans:   "
 | 
						|
for ((i=0; i < num_mvlans; i++)); do
 | 
						|
    fire_cmd add_mvlan 1 1 $upstream 'xx:xx:xx:*:*:xx' $i
 | 
						|
    echo -n ":"
 | 
						|
    sleep 0.05
 | 
						|
done
 | 
						|
# "84033538"
 | 
						|
for ((i=0; i < num_mvlans; i++)); do
 | 
						|
    mvlan="${upstream}#${i}"
 | 
						|
    fire_cmd set_port 1 1 "$mvlan" NA NA NA NA 2147483648 NA NA NA NA 75513858
 | 
						|
    echo -n "="
 | 
						|
    sleep 0.05
 | 
						|
    echo 1 > /proc/sys/net/ipv4/neigh/$mvlan/gc_stale_time
 | 
						|
    echo 1 > /proc/sys/net/ipv4/neigh/$mvlan/base_reachable_time
 | 
						|
done
 | 
						|
echo ""
 | 
						|
fire_cmd add_group udp-arp
 | 
						|
sleep 2
 | 
						|
echo -n "Creating $num_mvlans connections:  "
 | 
						|
for ((i=0; i < num_mvlans; i++)); do
 | 
						|
    mvlan="${upstream}#${i}"
 | 
						|
    fire_newcx "udp-$i" $station $mvlan
 | 
						|
    echo -n "+"
 | 
						|
    cxlist+=("udp-$i")
 | 
						|
    ports+=($mvlan)
 | 
						|
    fire_cmd add_tgcx udp-arp "udp-$i"
 | 
						|
done
 | 
						|
 | 
						|
sleep 2
 | 
						|
#for ((i=0; i < num_mvlans; i++)); do
 | 
						|
    #echo -n "="
 | 
						|
    #fire_cmd set_cx_state default_tm "udp-$i" RUNNING
 | 
						|
#done
 | 
						|
fire_cmd start_group udp-arp
 | 
						|
sleep 2
 | 
						|
echo ""
 | 
						|
echo -n "Starting arp flushing: "
 | 
						|
while : ; do
 | 
						|
    for p in "${ports[@]}"; do
 | 
						|
         ip neigh flush dev $p
 | 
						|
    done
 | 
						|
    echo -n "!"
 | 
						|
    sleep 0.2
 | 
						|
done
 | 
						|
#
 |