summaryrefslogtreecommitdiffstats
path: root/rc.inet1
diff options
context:
space:
mode:
authorRobby Workman <rworkman@slackware.com>2017-03-09 16:14:46 -0600
committerRobby Workman <rworkman@slackware.com>2017-07-12 02:26:58 -0500
commit30f1fdd36559899dcd53d0620b1a0c4e7cebdc29 (patch)
treebd758cc4e0359d3e8132ff1a2b4e81df123dda1f /rc.inet1
parent7908176c86e99f57d6fb85593606e23201e8a7b4 (diff)
downloadslacknetsetup-30f1fdd36559899dcd53d0620b1a0c4e7cebdc29.tar.xz
rc.inet1{,.conf}: Allow create/destroy of virtual tun/tap devices
Diffstat (limited to 'rc.inet1')
-rw-r--r--rc.inet127
1 files changed, 27 insertions, 0 deletions
diff --git a/rc.inet1 b/rc.inet1
index 5f9c29d..2f982ca 100644
--- a/rc.inet1
+++ b/rc.inet1
@@ -73,6 +73,31 @@ lo_down() {
# INTERFACE FUNCTIONS #
#######################
+# Function to determine if virtual interfaces are defined
+virtif_determine() {
+ if [ ! -z ${VIRTIFNAME} ]; then
+ virtifcount=$(echo ${VIRTIFNAME[@]} | wc -w)
+ else
+ return 1
+ fi
+}
+
+# Function to create virtual interfaces
+virtif_create() {
+ # argument is 'i' - the position of this interface in the IFNAME array.
+ for i in $(seq 0 ${virtifcount}); do
+ /sbin/ip tuntap add dev ${VIRTIFNAME[$i]} mode ${VIRTIFTYPE[$i]} user ${VIRTIFUSER[$i]} group ${VIRTIFGROUP[$i]}
+ done
+}
+
+# Function to destory virtual interfaces
+virtif_destroy() {
+ # argument is 'i' - the position of this interface in the IFNAME array.
+ for i in $(seq 0 ${virtifcount}); do
+ /sbin/ip tuntap del dev ${VIRTIFNAME[$i]} mode ${VIRTIFTYPE[$i]}
+ done
+}
+
# Function to assemble a bridge interface.
br_open() {
# argument is 'i' - the position of this interface in the IFNAME array.
@@ -256,6 +281,7 @@ gateway_down() {
# Function to start the network:
start() {
lo_up
+ virtif_determine && virtif_create
for i in ${IFNAME[@]} ; do
if_up $i
done
@@ -268,6 +294,7 @@ stop() {
for i in ${IFNAME[@]} ; do
if_down $i
done
+ virtif_determine && virtif_destroy
lo_down
}