From 69e779e3c1893c3d08dee98781e6b8ce9bbb81c1 Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Sun, 1 Feb 2015 23:36:20 +0100 Subject: Use nullglob for all globbings. --- vserver.functions | 1 + vserver.netns | 2 ++ 2 files changed, 3 insertions(+) diff --git a/vserver.functions b/vserver.functions index 97e7b35..f35cf0c 100644 --- a/vserver.functions +++ b/vserver.functions @@ -102,6 +102,7 @@ function _generateInterfaceOptions() { # add commands for default route local netns=0 + shopt -s nullglob for net in "$VSERVER_DIR/netns/"*; do test -d "$net" || continue test ! -e "${net}/disabled" || continue diff --git a/vserver.netns b/vserver.netns index 6b7526a..9f78306 100755 --- a/vserver.netns +++ b/vserver.netns @@ -89,6 +89,7 @@ if [[ "$ACTION" == "start" && -n "${_USE_NETNS}" ]]; then $_IP netns list | grep -q "^${VSERVER_NAME}\$" || $_IP netns add "$VSERVER_NAME" $_IP netns exec "$VSERVER_NAME" $_IP link set dev lo up + shopt -s nullglob for net in "$VSERVER_DIR/netns/"*; do test -d "$net" || continue test ! -e "${net}/disabled" || continue @@ -136,6 +137,7 @@ fi ret=$? if [ -n "${_USE_NETNS}" ]; then + shopt -s nullglob for net in "${VSERVER_DIR}/netns/"*; do test -d "$net" || continue test ! -e "${net}/disabled" || continue -- cgit v1.2.3-1-g7c22 From 87e01d24830270c8c315f039de66d57c2b1a8c76 Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Sun, 8 Feb 2015 23:49:44 +0100 Subject: Add vshelper with netns support. --- Makefile | 9 +++++++-- util-vserver-vars | 3 +++ vshelper.netns | 10 ++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100755 vshelper.netns diff --git a/Makefile b/Makefile index 9d07b8b..60c891c 100644 --- a/Makefile +++ b/Makefile @@ -2,16 +2,21 @@ all: clean: -install: vserver.netns vnamespace.netns util-vserver-vars vserver.functions vserver-netns.sh vservers-default - install -d "$(DESTDIR)/usr/share/util-vserver/netns/" \ +install: vserver.netns vnamespace.netns vshelper.netns util-vserver-vars vserver.functions vserver-netns.sh vservers-default + install -d "$(DESTDIR)/sbin/" \ + "$(DESTDIR)/usr/share/util-vserver/netns/" \ + "$(DESTDIR)/usr/lib/x86_64-linux-gnu/util-vserver/" \ "$(DESTDIR)/usr/sbin/" \ "$(DESTDIR)/etc/profile.d/" \ "$(DESTDIR)/etc/default/" install vserver.netns "$(DESTDIR)/usr/sbin/" install vnamespace.netns "$(DESTDIR)/usr/sbin/" + install vshelper.netns "$(DESTDIR)/usr/lib/x86_64-linux-gnu/util-vserver/" install -m644 util-vserver-vars "$(DESTDIR)/usr/share/util-vserver/netns/" install -m644 vserver.functions "$(DESTDIR)/usr/share/util-vserver/netns/" install -m644 vserver-netns.sh "$(DESTDIR)/etc/profile.d/" install -m644 vservers-default "$(DESTDIR)/etc/default/" + + ln -s /usr/lib/x86_64-linux-gnu/util-vserver/vshelper.netns "$(DESTDIR)/sbin/" .PHONY: install diff --git a/util-vserver-vars b/util-vserver-vars index 4d23588..167d975 100644 --- a/util-vserver-vars +++ b/util-vserver-vars @@ -8,6 +8,7 @@ test -e "$REAL_UTIL_VSERVER_VARS" || { # save defaults _REAL_LIB_VSERVER_FUNCTIONS="${_LIB_VSERVER_FUNCTIONS}" _REAL_VSERVER="${_VSERVER}" +_REAL_VSHELPER="${_VSHELPER}" case "$0" in /usr/sbin/vserver*) @@ -23,3 +24,5 @@ case "$0" in ;; esac +# overwrite _VSHELPER for init script +_VSHELPER="$__PKGLIBEXECDIR/vshelper.netns" diff --git a/vshelper.netns b/vshelper.netns new file mode 100755 index 0000000..9e59636 --- /dev/null +++ b/vshelper.netns @@ -0,0 +1,10 @@ +#! /usr/lib/x86_64-linux-gnu/util-vserver/sigexec /bin/bash + +: ${UTIL_VSERVER_VARS:=/usr/share/util-vserver/netns/util-vserver-vars} +test -e "$UTIL_VSERVER_VARS" || { + echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2 + exit 1 +} + +export UTIL_VSERVER_VARS +exec $_REAL_VSHELPER "$@" -- cgit v1.2.3-1-g7c22 From d721f910b13e71fa1c39afdc2b43d9058d9899f8 Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Sun, 8 Feb 2015 23:59:46 +0100 Subject: Use spline-netns folder, to not collidate with default netns handling. --- vnamespace.netns | 2 +- vserver.functions | 2 +- vserver.netns | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/vnamespace.netns b/vnamespace.netns index d2935f8..57e8881 100755 --- a/vnamespace.netns +++ b/vnamespace.netns @@ -35,7 +35,7 @@ do esac done -if [[ -n "$VSERVER_NAME" && -d "${VSERVER_DIR}/netns/" ]]; then +if [[ -n "$VSERVER_NAME" && -d "${VSERVER_DIR}/spline-netns/" ]]; then exec $_IP netns exec "$VSERVER_NAME" /usr/sbin/vnamespace "${ARGS[@]}" fi diff --git a/vserver.functions b/vserver.functions index f35cf0c..458d8fb 100644 --- a/vserver.functions +++ b/vserver.functions @@ -103,7 +103,7 @@ function _generateInterfaceOptions() { # add commands for default route local netns=0 shopt -s nullglob - for net in "$VSERVER_DIR/netns/"*; do + for net in "$VSERVER_DIR/spline-netns/"*; do test -d "$net" || continue test ! -e "${net}/disabled" || continue diff --git a/vserver.netns b/vserver.netns index 9f78306..ce7bb52 100755 --- a/vserver.netns +++ b/vserver.netns @@ -78,7 +78,7 @@ NETNS=() _setVserverDir "$VSERVER_NAME" -[ -d "${VSERVER_DIR}/netns/" ] && _USE_NETNS="1" +[ -d "${VSERVER_DIR}/spline-netns/" ] && _USE_NETNS="1" if [[ "$ACTION" == "start" && -n "${_USE_NETNS}" ]]; then pushd "$VSERVER_DIR" >/dev/null @@ -90,7 +90,7 @@ if [[ "$ACTION" == "start" && -n "${_USE_NETNS}" ]]; then $_IP netns exec "$VSERVER_NAME" $_IP link set dev lo up shopt -s nullglob - for net in "$VSERVER_DIR/netns/"*; do + for net in "$VSERVER_DIR/spline-netns/"*; do test -d "$net" || continue test ! -e "${net}/disabled" || continue @@ -138,7 +138,7 @@ ret=$? if [ -n "${_USE_NETNS}" ]; then shopt -s nullglob - for net in "${VSERVER_DIR}/netns/"*; do + for net in "${VSERVER_DIR}/spline-netns/"*; do test -d "$net" || continue test ! -e "${net}/disabled" || continue -- cgit v1.2.3-1-g7c22 From 0f6c07c9e642dc7805788a6b4a77173ecfe48d37 Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Mon, 9 Feb 2015 01:13:23 +0100 Subject: Add util-vserver-netns initscript. The util-vserver-netns initscript sets the path to vshelper for netns handling. --- Makefile | 6 +++-- util-vserver-netns | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 2 deletions(-) create mode 100755 util-vserver-netns diff --git a/Makefile b/Makefile index 60c891c..449d78c 100644 --- a/Makefile +++ b/Makefile @@ -2,17 +2,19 @@ all: clean: -install: vserver.netns vnamespace.netns vshelper.netns util-vserver-vars vserver.functions vserver-netns.sh vservers-default +install: vserver.netns vnamespace.netns vshelper.netns util-vserver-vars vserver.functions vserver-netns.sh vservers-default util-vserver-netns install -d "$(DESTDIR)/sbin/" \ "$(DESTDIR)/usr/share/util-vserver/netns/" \ "$(DESTDIR)/usr/lib/x86_64-linux-gnu/util-vserver/" \ "$(DESTDIR)/usr/sbin/" \ "$(DESTDIR)/etc/profile.d/" \ - "$(DESTDIR)/etc/default/" + "$(DESTDIR)/etc/default/" \ + "$(DESTDIR)/etc/init.d/" install vserver.netns "$(DESTDIR)/usr/sbin/" install vnamespace.netns "$(DESTDIR)/usr/sbin/" install vshelper.netns "$(DESTDIR)/usr/lib/x86_64-linux-gnu/util-vserver/" + install util-vserver-netns "$(DESTDIR)/etc/init.d/" install -m644 util-vserver-vars "$(DESTDIR)/usr/share/util-vserver/netns/" install -m644 vserver.functions "$(DESTDIR)/usr/share/util-vserver/netns/" install -m644 vserver-netns.sh "$(DESTDIR)/etc/profile.d/" diff --git a/util-vserver-netns b/util-vserver-netns new file mode 100755 index 0000000..6e1a04a --- /dev/null +++ b/util-vserver-netns @@ -0,0 +1,65 @@ +#!/bin/bash +### BEGIN INIT INFO +# Provides: util-vserver-netns +# Required-Start: $remote_fs $syslog $time util-vserver +# Required-Stop: $remote_fs $syslog $time util-vserver +# X-Start-Before: vservers-default +# X-Stop-After: vservers-default +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Sets the path to vshelper for netns handling +# Description: Sets the path to vshelper for netns handling +### END INIT INFO + +: ${UTIL_VSERVER_VARS:=/usr/share/util-vserver/netns/util-vserver-vars} +test -e "$UTIL_VSERVER_VARS" || { + echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2 + exit 1 +} +. "$UTIL_VSERVER_VARS" + +LOCKFILE=util-vserver-netns +. "$_LIB_VSERVER_INIT_FUNCTIONS" +. "$_LIB_FUNCTIONS" +. "$_LIB_VSERVER_FUNCTIONS" + +function start() +{ + _beginResult $"Setting path to vshelper" + set_helper + local retval=$? + _endResult $retval + test "$retval" -ne 0 || touch "$lockfile" + return $retval +} + +function stop() +{ + $_RM -f "$lockfile" +} + +function restart() +{ + stop + start +} + +case "$1" in + start|stop|restart) $1;; + reload) ;; + condrestart) + test -f $lockfile && restart || : + ;; + status) + test -f $lockfile && { + echo $"Path to vshelper.netns has been set" + exit 0 + } + echo $"Path to vshelper.netns has not been set" + exit 1 + ;; + *) + echo "Usage: $0 {start|stop|reload|restart|condrestart|status}" + exit 2 + ;; +esac -- cgit v1.2.3-1-g7c22 From 40f8ecbf261c8b3319350e681a207ed4b42f424d Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Mon, 9 Feb 2015 02:36:28 +0100 Subject: Add insserv config to define $util-vserver system facility. --- Makefile | 6 ++++-- util-vserver | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 util-vserver diff --git a/Makefile b/Makefile index 449d78c..eacf294 100644 --- a/Makefile +++ b/Makefile @@ -2,14 +2,15 @@ all: clean: -install: vserver.netns vnamespace.netns vshelper.netns util-vserver-vars vserver.functions vserver-netns.sh vservers-default util-vserver-netns +install: vserver.netns vnamespace.netns vshelper.netns util-vserver-vars vserver.functions vserver-netns.sh vservers-default util-vserver-netns util-vserver install -d "$(DESTDIR)/sbin/" \ "$(DESTDIR)/usr/share/util-vserver/netns/" \ "$(DESTDIR)/usr/lib/x86_64-linux-gnu/util-vserver/" \ "$(DESTDIR)/usr/sbin/" \ "$(DESTDIR)/etc/profile.d/" \ "$(DESTDIR)/etc/default/" \ - "$(DESTDIR)/etc/init.d/" + "$(DESTDIR)/etc/init.d/" \ + "$(DESTDIR)/etc/insserv.conf.d/" install vserver.netns "$(DESTDIR)/usr/sbin/" install vnamespace.netns "$(DESTDIR)/usr/sbin/" @@ -19,6 +20,7 @@ install: vserver.netns vnamespace.netns vshelper.netns util-vserver-vars vserver install -m644 vserver.functions "$(DESTDIR)/usr/share/util-vserver/netns/" install -m644 vserver-netns.sh "$(DESTDIR)/etc/profile.d/" install -m644 vservers-default "$(DESTDIR)/etc/default/" + install -m644 util-vserver "$(DESTDIR)/etc/insserv.conf.d/" ln -s /usr/lib/x86_64-linux-gnu/util-vserver/vshelper.netns "$(DESTDIR)/sbin/" .PHONY: install diff --git a/util-vserver b/util-vserver new file mode 100644 index 0000000..74c0635 --- /dev/null +++ b/util-vserver @@ -0,0 +1 @@ +$util-vserver +util-vserver +util-vserver-netns -- cgit v1.2.3-1-g7c22