tapsetup: add capability to list bridges
This commit is contained in:
parent
de36c400d4
commit
a9722dda71
71
dist/tools/tapsetup/tapsetup
vendored
71
dist/tools/tapsetup/tapsetup
vendored
@ -17,6 +17,9 @@ usage() {
|
|||||||
echo "Options:" >&2
|
echo "Options:" >&2
|
||||||
echo " -c [<num>], --create [<num>]: Create <num> tap interfaces (default: 2)" >&2
|
echo " -c [<num>], --create [<num>]: Create <num> tap interfaces (default: 2)" >&2
|
||||||
echo " -d, --delete: Delete all interface" >&2
|
echo " -d, --delete: Delete all interface" >&2
|
||||||
|
echo " -l <iface>, --list <iface>: If <iface> belongs to a bridge, list the bridge and" >&2
|
||||||
|
echo " all interfaces that belong to it. If <iface> does " >&2
|
||||||
|
echo" not belong to a bridge, just print <iface>." >&2
|
||||||
echo " -b <name>, --bridge <name>: Give name for the bridge (default: tapbr)" >&2
|
echo " -b <name>, --bridge <name>: Give name for the bridge (default: tapbr)" >&2
|
||||||
echo " -t <name>, --tap <name>: Name base for the tap interfaces; the" >&2
|
echo " -t <name>, --tap <name>: Name base for the tap interfaces; the" >&2
|
||||||
echo " generated names will be <name>x" >&2
|
echo " generated names will be <name>x" >&2
|
||||||
@ -148,6 +151,50 @@ create_tap() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get_master() {
|
||||||
|
IFACE=$1
|
||||||
|
case "${PLATFORM}" in
|
||||||
|
Linux)
|
||||||
|
MASTER=$(ip link show ${IFACE} | grep -o "master \S\+" | cut -d' ' -f2)
|
||||||
|
;;
|
||||||
|
FreeBSD|OSX)
|
||||||
|
for IF in $(ifconfig | grep -oiE "^[a-z0-9_-]+"); do
|
||||||
|
if ifconfig $IF | grep -q "member: $IFACE"; then
|
||||||
|
MASTER=${IF}
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
if [ -z "$MASTER" ]; then
|
||||||
|
# IFACE is its own master
|
||||||
|
echo "$IFACE"
|
||||||
|
else
|
||||||
|
echo "$MASTER"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
list_bridge() {
|
||||||
|
BRIDGE=$1
|
||||||
|
echo "$BRIDGE:"
|
||||||
|
case "${PLATFORM}" in
|
||||||
|
Linux)
|
||||||
|
for IF in $(ls /sys/class/net/${BRIDGE}/brif); do
|
||||||
|
echo "- $IF"
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
FreeBSD|OSX)
|
||||||
|
for IF in $(ifconfig ${BRIDGE} | grep -oiE "member: .+ " | cut -d' ' -f2); do
|
||||||
|
echo "- $IF"
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
while true ; do
|
while true ; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-6)
|
-6)
|
||||||
@ -185,6 +232,20 @@ while true ; do
|
|||||||
fi
|
fi
|
||||||
COMMAND="delete"
|
COMMAND="delete"
|
||||||
shift ;;
|
shift ;;
|
||||||
|
-l|--list)
|
||||||
|
if [ -n "${COMMAND}" ]; then
|
||||||
|
usage
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
COMMAND="list"
|
||||||
|
case "$2" in
|
||||||
|
"")
|
||||||
|
usage
|
||||||
|
exit 2 ;;
|
||||||
|
*)
|
||||||
|
BRNAME="$2"
|
||||||
|
shift 2 ;;
|
||||||
|
esac ;;
|
||||||
-h|--help)
|
-h|--help)
|
||||||
usage
|
usage
|
||||||
exit ;;
|
exit ;;
|
||||||
@ -213,13 +274,13 @@ while true ; do
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ -z "${SUDO_USER}" ]; then
|
|
||||||
echo 'Environment variable $SUDO_USER required; Please run with `sudo`'
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${COMMAND}" ]; then
|
if [ -z "${COMMAND}" ]; then
|
||||||
COMMAND="create"
|
COMMAND="create"
|
||||||
fi
|
fi
|
||||||
|
if [ -z "${SUDO_USER}" ] && [ "${COMMAND}" != "list" ]; then
|
||||||
|
echo 'Environment variable $SUDO_USER required; Please run with `sudo`'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
case "$(uname -s)" in
|
case "$(uname -s)" in
|
||||||
Darwin)
|
Darwin)
|
||||||
PLATFORM="OSX"
|
PLATFORM="OSX"
|
||||||
@ -251,6 +312,8 @@ if [ "${COMMAND}" = 'create' ]; then
|
|||||||
|
|
||||||
elif [ "${COMMAND}" = 'delete' ]; then
|
elif [ "${COMMAND}" = 'delete' ]; then
|
||||||
delete_bridge
|
delete_bridge
|
||||||
|
elif [ "${COMMAND}" = 'list' ]; then
|
||||||
|
list_bridge $(get_master "$BRNAME")
|
||||||
else
|
else
|
||||||
echo 'unknown command'
|
echo 'unknown command'
|
||||||
exit 1
|
exit 1
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user