Commit b00623c

student <student@crunchbang>
2013-10-27 20:45:54
add same
1 parent 3e42daf
Changed files (2)
nm-ifadddel
sam
nm-ifadddel/02ifadddel
@@ -1,41 +0,0 @@
-#!/bin/sh -e
-
-INTERFACE=$1
-OPERATION=$2
-
-if [ -z "$INTERFACE" ]; then
-    logger "$0: called with no interface"
-    exit 1;
-fi
-
-case "$OPERATION" in
-	up|vpn-up)
-		logger "if UP, adding interfaces"
-		ip addr add 192.168.101.50/24 dev $1
-		ip addr add 192.168.101.51/24 dev $1
-		ip addr add 192.168.101.52/24 dev $1
-		ip addr add 192.168.101.53/24 dev $1
-		ip addr add 192.168.101.54/24 dev $1
-		ip addr add 192.168.101.55/24 dev $1
-		ip addr add 192.168.101.56/24 dev $1
-		ip addr add 192.168.101.57/24 dev $1
-		;;
-	down|vpn-down)
-		logger "if DOWN removing interfaces"
-		ip addr del 192.168.101.50/24 dev $1
-		ip addr del 192.168.101.51/24 dev $1
-		ip addr del 192.168.101.52/24 dev $1
-		ip addr del 192.168.101.53/24 dev $1
-		ip addr del 192.168.101.54/24 dev $1
-		ip addr del 192.168.101.55/24 dev $1
-		ip addr del 192.168.101.56/24 dev $1
-		ip addr del 192.168.101.57/24 dev $1
-		;;
-        hostname|dhcp4-change|dhcp6-change)
-		logger "did nothing, get your act together"
-		;;
-        *)
-		logger "$0: called with unknown action \`$2'"
-        	exit 1
-		;;
-esac
sam/02sam
@@ -0,0 +1,68 @@
+#!/bin/sh -e
+#   _________ _____ ___
+#  / ___/ __ `/ __ `__ \
+# (__  ) /_/ / / / / / /
+#/____/\__,_/_/ /_/ /_/ 
+# sam - secondary address manager
+# for use with Network Manager in dispatcher.d
+
+# expected arguments
+INTERFACE=$1
+OPERATION=$2
+
+# secondary addresses
+ADDR1="192.168.101.50/24"
+
+# only assign sam-addresses to one interface, keep track of it with STATEFILE
+STATEFILE=/var/tmp/sam-state
+
+if [ -z "$INTERFACE" ]; then
+    logger "sam - $0: called with no interface"
+    exit 1;
+fi
+
+# statefile exists
+if [ -e "$STATEFILE" ]; then
+	# get contents
+	DEV=$(cat "$STATEFILE") 
+	if [ "$DEV" = "$INTERFACE" ]; then
+		case "$OPERATION" in
+			up|vpn-up)
+				logger "sam - error: if UP on sam'd dev"
+				;;
+			down|vpn-down)
+				logger "sam - if DOWN, removing addresses"
+				ip addr del $ADDR1 dev $INTERFACE || true
+				rm -f $STATEFILE
+				;;
+			hostname|dhcp4-change|dhcp6-change)
+				logger "sam - did nothing"
+				;;
+			*)
+				logger "sam - $0: called with unknown action $2"
+				exit 1
+				;;
+		esac
+	else
+		logger "sam - if UP, another dev already sam'd"
+	fi
+# statefile doesn't exist
+else 
+	case "$OPERATION" in
+		up|vpn-up)
+			logger "sam - if UP, adding addresses"
+			ip addr add $ADDR1 dev $INTERFACE
+			echo "$INTERFACE" > "$STATEFILE"
+			;;
+		down|vpn-down)
+			logger "sam - if DOWN of non-sam'd dev, nothing to do"
+			;;
+		hostname|dhcp4-change|dhcp6-change)
+			logger "sam - did nothing"
+			;;
+		*)
+			logger "sam - $0: called with unknown action $3"
+			exit 1
+			;;
+	esac
+fi