From b5f218c4a6c141ce8208584b912fc6b052f1df8d Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Sat, 28 Sep 2013 22:30:52 +0200 Subject: vserver.functions: add missing s --- Makefile | 4 +- util-vserver-vars | 2 +- vserver.function | 129 ------------------------------------------------------ vserver.functions | 129 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 132 insertions(+), 132 deletions(-) delete mode 100644 vserver.function create mode 100644 vserver.functions diff --git a/Makefile b/Makefile index f2b257c..c869fb3 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ all: clean: -install: vserver.netns vnamespace.netns util-vserver-vars vserver.function vserver-netns.sh vservers-default +install: vserver.netns vnamespace.netns util-vserver-vars vserver.functions vserver-netns.sh vservers-default install -d "$(DESTDIR)/usr/lib/util-vserver/netns/" \ "$(DESTDIR)/usr/sbin/" \ "$(DESTDIR)/etc/profile.d/" \ @@ -11,7 +11,7 @@ install: vserver.netns vnamespace.netns util-vserver-vars vserver.function vserv install vserver.netns "$(DESTDIR)/usr/sbin/" install vnamespace.netns "$(DESTDIR)/usr/sbin/" install -m644 util-vserver-vars "$(DESTDIR)/usr/lib/util-vserver/netns/" - install -m644 vserver.function "$(DESTDIR)/usr/lib/util-vserver/netns/" + install -m644 vserver.functions "$(DESTDIR)/usr/lib/util-vserver/netns/" install -m644 vserver-netns.sh "$(DESTDIR)/etc/profile.d/" install -m644 vservers-default "$(DESTDIR)/etc/default/" .PHONY: install diff --git a/util-vserver-vars b/util-vserver-vars index 086e508..79cab05 100644 --- a/util-vserver-vars +++ b/util-vserver-vars @@ -10,7 +10,7 @@ __REAL_PKGLIBDIR="${__PKGLIBDIR}" _REAL_VSERVER="${_VSERVER}" case "$0" in - vserver) + /usr/sbin/vserver*) # we want to wrap a function from vserver.functions # so we want to wrap vserver.functions that will be include with: # . $__PKGLIBDIR/vserver.functions diff --git a/vserver.function b/vserver.function deleted file mode 100644 index b8a890f..0000000 --- a/vserver.function +++ /dev/null @@ -1,129 +0,0 @@ -# source the real file -. ${__REAL_PKGLIBDIR}/vserver.function -__PKGLIBDIR="${__REAL_PKGLIBDIR}" - -# -# own functions -# - -function netnsCreateMac() { - local mac - - getFileValue mac "${1}/mac" - if [ -n "$mac" ]; then - echo "$mac" - return 0 - fi - - getFileValue ctx "$VSERVER_DIR"/context - ( - printf "0200" - printf "%06d" $ctx - printf "%02x" "$(basename "$1")" - )| - sed 's/\(..\)\(..\)\(..\)\(..\)\(..\)\(..\)/\1:\2:\3:\4:\5:\6/' -} - -function netnsCreateIfaceName() { - local name - - getFileValue name "${1}/name" - if [ -n "$name" ]; then - echo "$name" - return 0 - fi - - printf "%s%d" "$VSERVER_NAME" "$(basename "$1")" -} - -function _netnsProcessSingleGateway() { - local iface - local gw - - getFileValue gw "${2}/gw" "${2}/../gw" - [ -n "$gw" ] || return 0 - - iface="$(netnsCreateIfaceName "$2")" - _addInterfaceCmd IP_ROUTE default via "$gw" dev "$iface" -} - -function _netnsFilterNetnsUmount() { - local args=( "$@" ) - - while : - do - case $1 in - --) shift; break;; - -*) shift;; - net:*|/run/netns/*) return 0;; - *) break;; - esac - done - - ${_REAL_UMOUNT} "${opts[@]}" -} - -function _netnsWaitForDad() { - local waiting - - while ip -6 -o addr show tentative | grep -q ' scope global '; do - sleep 1 - waiting=$((waiting+1)) - if [ $waiting -ge $1 ]; then - echo "Warning: IPv6 addresses still tentative after ${waiting} seconds; continuing..." - return 0 - fi - done -} - - -# -# monkey patching -# - -function save_function() { - local ORIG_FUNC=$(declare -f $1) - local NEWNAME_FUNC="$2${ORIG_FUNC#$1}" - eval "$NEWNAME_FUNC" -} - -save_function _generateInterfaceOptions __netns_realGenerateInterfaceOptions -function _generateInterfaceOptions() { - __netns_realGenerateInterfaceOptions "$@" - ret="$?" - - # add commands for default route - for net in "$VSERVER_DIR/netns/"*; do - test -d "$net" || continue - test ! -e "${net}/disabled" || continue - - _netnsProcessSingleGateway "$net" - done - - return "$ret" -} - -save_function _namespaceCleanup __netns_realNamespaceCleanup -function _namespaceCleanup() { - _REAL_UMOUNT="${_UMOUNT}" - _UMOUNT="_netnsFilterNetnsUmount" - - __netns_realNamespaceCleanup "$@" - ret="$?" - - _UMOUNT="${_REAL_UMOUNT}" - return "$ret" -} - -save_function enableInterfaces __netns_realEnableInterfaces -function enableInterfaces() { - __netns_realEnableInterfaces "$@" - ret="$?" - - # It is unpossible to bind on very recently added IPv6 addresses. - # They have to pass the duplicate address detection (dad) before - # they could be used, so we wait here before continuing. - netnsWaitForDad() - - return "$ret" -} diff --git a/vserver.functions b/vserver.functions new file mode 100644 index 0000000..8a56d8b --- /dev/null +++ b/vserver.functions @@ -0,0 +1,129 @@ +# source the real file +. ${__REAL_PKGLIBDIR}/vserver.functions +__PKGLIBDIR="${__REAL_PKGLIBDIR}" + +# +# own functions +# + +function netnsCreateMac() { + local mac + + getFileValue mac "${1}/mac" + if [ -n "$mac" ]; then + echo "$mac" + return 0 + fi + + getFileValue ctx "$VSERVER_DIR"/context + ( + printf "0200" + printf "%06d" $ctx + printf "%02x" "$(basename "$1")" + )| + sed 's/\(..\)\(..\)\(..\)\(..\)\(..\)\(..\)/\1:\2:\3:\4:\5:\6/' +} + +function netnsCreateIfaceName() { + local name + + getFileValue name "${1}/name" + if [ -n "$name" ]; then + echo "$name" + return 0 + fi + + printf "%s%d" "$VSERVER_NAME" "$(basename "$1")" +} + +function _netnsProcessSingleGateway() { + local iface + local gw + + getFileValue gw "${2}/gw" "${2}/../gw" + [ -n "$gw" ] || return 0 + + iface="$(netnsCreateIfaceName "$2")" + _addInterfaceCmd IP_ROUTE default via "$gw" dev "$iface" +} + +function _netnsFilterNetnsUmount() { + local args=( "$@" ) + + while : + do + case $1 in + --) shift; break;; + -*) shift;; + net:*|/run/netns/*) return 0;; + *) break;; + esac + done + + ${_REAL_UMOUNT} "${opts[@]}" +} + +function _netnsWaitForDad() { + local waiting + + while ip -6 -o addr show tentative | grep -q ' scope global '; do + sleep 1 + waiting=$((waiting+1)) + if [ $waiting -ge $1 ]; then + echo "Warning: IPv6 addresses still tentative after ${waiting} seconds; continuing..." + return 0 + fi + done +} + + +# +# monkey patching +# + +function save_function() { + local ORIG_FUNC=$(declare -f $1) + local NEWNAME_FUNC="$2${ORIG_FUNC#$1}" + eval "$NEWNAME_FUNC" +} + +save_function _generateInterfaceOptions __netns_realGenerateInterfaceOptions +function _generateInterfaceOptions() { + __netns_realGenerateInterfaceOptions "$@" + ret="$?" + + # add commands for default route + for net in "$VSERVER_DIR/netns/"*; do + test -d "$net" || continue + test ! -e "${net}/disabled" || continue + + _netnsProcessSingleGateway "$net" + done + + return "$ret" +} + +save_function _namespaceCleanup __netns_realNamespaceCleanup +function _namespaceCleanup() { + _REAL_UMOUNT="${_UMOUNT}" + _UMOUNT="_netnsFilterNetnsUmount" + + __netns_realNamespaceCleanup "$@" + ret="$?" + + _UMOUNT="${_REAL_UMOUNT}" + return "$ret" +} + +save_function enableInterfaces __netns_realEnableInterfaces +function enableInterfaces() { + __netns_realEnableInterfaces "$@" + ret="$?" + + # It is unpossible to bind on very recently added IPv6 addresses. + # They have to pass the duplicate address detection (dad) before + # they could be used, so we wait here before continuing. + netnsWaitForDad() + + return "$ret" +} -- cgit v1.2.3-1-g7c22