Created
June 26, 2017 01:12
-
-
Save T-X/8099e1439d3eaa1e8293651faaa311f8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
BATDIR="/mnt/batman-adv-t_x" | |
BATALGO="BATMAN_IV" | |
NUMNODES=3 | |
modules="batman-adv" | |
modules_extern= | |
cleanup() { | |
modprobe -r bridge 2> /dev/null | |
modprobe -r veth 2> /dev/null | |
modprobe -r batman-adv 2> /dev/null | |
for n in `ip netns list | grep "^sim42" | cut -f1 -d' '`; do | |
ip netns delete "$n" | |
done | |
} | |
setup_modules() { | |
modprobe veth | |
modprobe llc | |
modprobe stp | |
modprobe crc16 | |
modprobe libcrc32c | |
modprobe cfg80211 | |
#insmod /mnt/linux/linux/net/bridge/bridge.ko | |
modprobe bridge | |
insmod $BATDIR/build/net/batman-adv/batman-adv.ko | |
} | |
setup_netns() { | |
for i in `seq -w 0001 $NUMNODES`; do | |
ip netns add sim42-$i | |
done | |
} | |
setup_line_topology() { | |
for i in `seq -w 0001 $(($NUMNODES-1))`; do | |
j=`printf "%.4d\n" $(($i+1))` | |
ip link add sim42-$i-$j type veth peer name sim42-$j-$i | |
ip link set dev sim42-$i-$j address 12:00:${i:0:2}:${i:2:2}:${j:0:2}:${j:2:2} | |
ip link set dev sim42-$j-$i address 12:00:${j:0:2}:${j:2:2}:${i:0:2}:${i:2:2} | |
ip link set dev sim42-$i-$j netns sim42-$i | |
ip link set dev sim42-$j-$i netns sim42-$j | |
done | |
} | |
get_netns_ifaces() { | |
local netns="ip netns exec sim42-$1" | |
$netns ip -o link | grep '^[0-9]*: sim42-.*$' | \ | |
sed "s/^[0-9]*: \([^@:]*\)[@]*[^:]*: .*/\1/" | |
} | |
setup_batman_netns() { | |
local netns="ip netns exec sim42-$1" | |
for iface in `get_netns_ifaces $1`; do | |
$netns /bin/bash -c "echo '1' > /proc/sys/net/ipv6/conf/$iface/disable_ipv6" | |
$netns batctl -m bat$1 interface add $iface | |
$netns ip link set up dev $iface | |
done | |
$netns /bin/bash -c "echo '1' > /proc/sys/net/ipv6/conf/bat$1/disable_ipv6" | |
$netns ip link set dev bat$1 address 02:00:00:00:${1:0:2}:${1:2:2} | |
$netns ip link set up dev bat$1 | |
$netns brctl addbr br$1 | |
$netns /bin/bash -c "echo '1' > /proc/sys/net/ipv6/conf/br$1/disable_ipv6" | |
$netns brctl addif br$1 bat$1 | |
$netns ip link set up dev br$1 | |
} | |
setup_batman() { | |
batctl ra "$BATALGO" | |
for i in `seq -w 0001 $NUMNODES`; do | |
setup_batman_netns "$i" | |
done | |
} | |
setup() { | |
setup_modules | |
setup_netns | |
setup_line_topology | |
setup_batman | |
} | |
cleanup | |
setup |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
netns1="ip netns exec sim42-0001" | |
netns2="ip netns exec sim42-0002" | |
netns3="ip netns exec sim42-0003" | |
for p in `ps -Af | grep "ping6.*sim42" | grep -v "grep" | sed "s/^[^ ]*[ ]*\([0-9]*\) .*/\1/"`; do | |
kill "$p" | |
done | |
./setup-batman-netns.sh 3 | |
$netns2 batctl -m bat0002 mark 0x06/0xFFFFFFFF | |
$netns1 batctl -m bat0001 ll tt | |
$netns2 batctl -m bat0002 ll tt | |
$netns3 batctl -m bat0003 ll tt | |
ip link add sim42-bb2 type veth peer name sim42-bb3 | |
ip link add sim42-provider type veth peer name sim42-client | |
ip link set dev sim42-bb2 address 22:00:00:02:00:03 | |
ip link set dev sim42-bb3 address 22:00:00:03:00:02 | |
ip link set dev sim42-provider address 22:00:00:00:00:02 | |
ip link set dev sim42-client address 32:00:00:00:00:02 | |
ip link set dev sim42-bb2 netns sim42-0002 | |
ip link set dev sim42-bb3 netns sim42-0003 | |
ip link set dev sim42-provider netns sim42-0002 | |
ip link set dev sim42-client netns sim42-0002 | |
$netns2 /bin/bash -c "echo '1' > /proc/sys/net/ipv6/conf/sim42-bb2/disable_ipv6" | |
$netns3 /bin/bash -c "echo '1' > /proc/sys/net/ipv6/conf/sim42-bb3/disable_ipv6" | |
$netns2 /bin/bash -c "echo '1' > /proc/sys/net/ipv6/conf/sim42-provider/disable_ipv6" | |
$netns2 brctl addif br0002 sim42-bb2 | |
$netns3 brctl addif br0003 sim42-bb3 | |
$netns2 brctl addif br0002 sim42-provider | |
$netns2 ebtables -t nat -F POSTROUTING | |
$netns2 ebtables -t nat -I POSTROUTING -o bat0002 -j mark --set-mark 0x06 --mark-target ACCEPT | |
$netns2 ip link set up dev sim42-bb2 | |
$netns3 ip link set up dev sim42-bb3 | |
$netns2 ip link set up dev sim42-provider | |
$netns2 ip link set up dev sim42-client | |
# Waiting for IPv6 to configure sim42-client | |
echo "Transmitting with isolation flag" | |
sleep 5 | |
$netns2 ping6 -q -c 3 ff02::1%sim42-client > /dev/null | |
sleep 5 | |
echo "Deleting isolation mark" | |
$netns2 ebtables -t nat -D POSTROUTING -o bat0002 -j mark --set-mark 0x06 --mark-target ACCEPT | |
echo "Transmitting without isolation flag" | |
sleep 5 | |
$netns2 ping6 -q -c 3 ff02::1%sim42-client > /dev/null | |
sleep 5 | |
$netns2 ping6 -q -i 10 ff02::1%sim42-client > /dev/null & |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment