#!/bin/sh # env # Written in 2019 by Lucas # CC0 1.0 Universal/Public domain - No rights reserved # # To the extent possible under law, the author(s) have dedicated all # copyright and related and neighboring rights to this software to the # public domain worldwide. This software is distributed without any # warranty. You should have received a copy of the CC0 Public Domain # Dedication along with this software. If not, see # . usage() { cat - <<. >&2 Usage: ${0##*/} attach TRUNK_DEV URNDIS_DEV ${0##*/} detach TRUNK_DEV URNDIS_DEV . exit 1 } renew_dhcp_if_needed() { iface=$1 hostname_if=/etc/hostname."$iface" [ ! -r "$hostname_if" ] && return while read -r line; do [ "$line" = dhcp ] && dhclient "$iface" && break done <"$hostname_if" } if [ $# -ne 3 ] || [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ]; then usage fi cmd=$1 trunk=$2 urndis=$3 case $cmd in attach) ifconfig "$urndis" up ifconfig "$trunk" trunkport "$urndis" renew_dhcp_if_needed "$trunk" ;; detach) # $urndis could be already removed ifconfig "$trunk" -trunkport "$urndis" 2>/dev/null || true renew_dhcp_if_needed "$trunk" ;; *) usage ;; esac