about summary refs log tree commit diff stats
path: root/linux/conf/rc.d/blan
diff options
context:
space:
mode:
Diffstat (limited to 'linux/conf/rc.d/blan')
-rwxr-xr-xlinux/conf/rc.d/blan71
1 files changed, 71 insertions, 0 deletions
diff --git a/linux/conf/rc.d/blan b/linux/conf/rc.d/blan
new file mode 100755
index 0000000..61ac2d6
--- /dev/null
+++ b/linux/conf/rc.d/blan
@@ -0,0 +1,71 @@
+#!/bin/sh
+#
+# /etc/rc.d/blan: start/stop virtual network interfaces
+#
+
+DEV="br0"
+PHY="enp8s0"
+
+ADDR=10.0.0.254
+#ADDR=10.0.1.254
+MASK=8
+#GW=10.0.0.1
+GW=192.168.1.254
+
+# one tap for each cpu core
+NTAPS=$((`/usr/bin/nproc`))
+
+case $1 in
+    start)
+        /sbin/ip link add name ${DEV} type bridge
+        /sbin/ip addr add ${ADDR}/${MASK} dev ${DEV} broadcast +
+        /sbin/ip link set dev ${DEV} up
+        /bin/sleep 0.2s
+
+        # Add network to virtual bridge
+        /sbin/ip link set dev ${PHY} down
+        /bin/sleep 0.1s
+        /sbin/ip route flush dev ${PHY}
+        /sbin/ip addr flush dev ${PHY}
+        /sbin/ip link set dev ${PHY} up
+        /bin/sleep 0.2s
+
+        /sbin/ip link set dev ${PHY} master ${DEV}
+        /sbin/ip route add default via ${GW}
+
+        for i in `/usr/bin/seq $NTAPS`
+        do
+            TAP="tap$i"
+            echo "Setting up ${TAP} tap interface."
+            /sbin/ip tuntap add ${TAP} mode tap group kvm
+            /sbin/ip link set ${TAP} up
+            /bin/sleep 0.2s
+            /sbin/ip link set ${TAP} master ${DEV}
+        done
+
+        exit 0
+        ;;
+    stop)
+
+        for i in `/usr/bin/seq $NTAPS`
+        do
+            TAP="tap$i"
+            echo "Deleting ${TAP} tap interface."
+            /sbin/ip link del ${TAP}
+        done
+
+        /sbin/ip link set dev ${DEV} down
+        /sbin/ip route flush dev ${DEV}
+        /sbin/ip link del ${DEV}
+        exit 0
+        ;;
+    restart)
+        $0 stop
+        $0 start
+        ;;
+    *)
+        echo "Usage: $0 [start|stop|restart]"
+        ;;
+esac
+
+# End of file