From ab4841031d7f0eb079d7d13893a5ac3e9943c0b7 Mon Sep 17 00:00:00 2001 From: Sonny Date: Fri, 11 May 2018 16:06:20 +0200 Subject: [PATCH] Add qemu ifup/ifdown scripts --- scripts/detect-ip-change | 0 scripts/generate-tap | 24 ++++++++++++++++++++++++ scripts/qemu-custom-ifdown | 22 ++++++++++++++++++++++ scripts/qemu-custom-ifup | 27 +++++++++++++++++++++++++++ 4 files changed, 73 insertions(+) mode change 100644 => 100755 scripts/detect-ip-change create mode 100755 scripts/generate-tap create mode 100755 scripts/qemu-custom-ifdown create mode 100755 scripts/qemu-custom-ifup diff --git a/scripts/detect-ip-change b/scripts/detect-ip-change old mode 100644 new mode 100755 diff --git a/scripts/generate-tap b/scripts/generate-tap new file mode 100755 index 0000000..88e8a99 --- /dev/null +++ b/scripts/generate-tap @@ -0,0 +1,24 @@ +#!/bin/bash +# Generate a numbered tap device name + +TAP="tap0" +COUNT=0 + +while [[ true ]]; do + FOUND=false + + for INT in $(ls /sys/class/net); do + if [[ $INT == $TAP ]]; then + ((COUNT++)) + + TAP="tap$COUNT" + FOUND=true + continue + fi + done + + if [[ !$FOUND ]]; then + break + fi +done + diff --git a/scripts/qemu-custom-ifdown b/scripts/qemu-custom-ifdown new file mode 100755 index 0000000..5860c07 --- /dev/null +++ b/scripts/qemu-custom-ifdown @@ -0,0 +1,22 @@ +#!/bin/bash +# This script removes the specified interface if it exists + +if [[ $EUID != 0 ]]; then + echo "This script needs sudo priveleges" + echo "Exiting..." + exit 1 +fi + +for INT in $(ls /sys/class/net); do + if [[ $INT == $1 ]]; then + /sbin/ip link delete dev $1 type tap + DELETED=true + break + fi +done + +if [[ !$DELETED ]]; then + echo "Interface $1 not found, nothing to delete" + exit 1 +fi + diff --git a/scripts/qemu-custom-ifup b/scripts/qemu-custom-ifup new file mode 100755 index 0000000..615f8a1 --- /dev/null +++ b/scripts/qemu-custom-ifup @@ -0,0 +1,27 @@ +#!/bin/bash +# This script adds an specified tap interface to first bridge +# found with the name containing br0 + +if [[ $EUID != 0 ]]; then + echo "This script needs sudo priveleges" + echo "Exiting..." + exit 1 +fi + +for INT in $(ls /sys/class/net); do + if [[ $INT == *"br0"* && -d /sys/class/net/$INT/bridge/. ]]; then + BRIDGE="$INT" + break + fi +done + +if [[ -z $BRIDGE ]]; then + echo 'No bridge INTerfaces seen' + exit 1 +fi + +/sbin/ip tuntap add dev $1 mode tap +/sbin/ip link set $1 up + +/sbin/ip link set dev $1 master $BRIDGE +