Add support for the network flags and capabilities in the configuration.
authorDaniel Hokka Zakrisson <daniel@hozac.com>
Thu, 23 Nov 2006 21:12:26 +0000 (21:12 +0000)
committerDaniel Hokka Zakrisson <daniel@hozac.com>
Thu, 23 Nov 2006 21:12:26 +0000 (21:12 +0000)
git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2394 94cd875c-1c1d-0410-91d2-eb244daf1a30

doc/configuration.xml
scripts/chbind
scripts/vserver.functions

index 66cc7a8..07b506f 100644 (file)
@@ -364,6 +364,13 @@ url="http://svn.linux-vserver.org/svn/util-vserver/trunk/lib/ccaps-v13.c">lib/cc
 for possible values.
       </description>
     </list>
+    <list name="ncapabilities">
+      <description>
+Contains the network capabilities. See <ulink
+url="http://svn.linux-vserver.org/svn/util-vserver/trunk/lib/ncaps-net.c">lib/ncaps-net.c</ulink>
+for possible values.
+      </description>
+    </list>
 
     <boolean id="global-namespace" name="namespace">
       <description>
@@ -524,6 +531,13 @@ Apply the current ulimit to the whole context
       </elements>
       -->
     </list>
+    <list name="nflags">
+      <description>
+Contains a network flag per line. See <ulink
+url="http://svn.linux-vserver.org/svn/util-vserver/trunk/lib/nflags-net.c">lib/nflags-net.c</ulink>
+for possible values.
+      </description>
+    </list>
     <scalar name="context">
       <description>
 Contains the context which shall be used for the vserver.
index 75aa2a4..03836d8 100755 (executable)
@@ -57,8 +57,6 @@ the GNU General Public License.  This program has absolutely no warranty."
     exit $1
 }
 
-$_VSERVER_INFO - FEATURE vnet || exec $_CHBIND_COMPAT "$@"
-
 tmp=$(getopt -o + --long ncap:,nid:,ip:,bcast:,disconnect,flag:,secure,silent,help,version -n "$0" -- "$@") || exit 1
 eval set -- "$tmp"
 
@@ -81,7 +79,7 @@ while true; do
        --flag)         OPT_FLAGS=( "${OPT_FLAGS[@]}" "$2" ); shift;;
        --secure)       OPT_SECURE=1;;
        --silent)       OPT_SILENT=1;;
-       --ip)           OPT_IPS=( "${OPT_IPS[@]}" "$2" ); shift;;
+       --ip)           OPT_IPS=( "${OPT_IPS[@]}" --ip "$2" ); shift;;
        --bcast)        OPT_BCAST=$2; shift;;
        --)             shift; break;;
        *)              echo $"chbind: internal error; arg=='$1'" >&2; exit 1;;
@@ -89,6 +87,13 @@ while true; do
     shift
 done
 
+$_VSERVER_INFO - FEATURE vnet || exec $_CHBIND_COMPAT \
+       ${OPT_NID:+--nid "$OPT_NID"} \
+       ${OPT_SILENT:+--silent} \
+       ${OPT_BCAST:+--bcast "$OPT_BCAST"} \
+       "${OPT_IPS[@]}" \
+       -- "$@"
+
 create_cmd=( $_NCONTEXT --create --silentexist
             ${OPT_SILENT:+--silent}
             ${OPT_NID:+--nid "$OPT_NID"} )
@@ -107,12 +112,9 @@ chain_cmd=( "${chain_cmd[@]}"
                --
                $_NADDRESS --add
                ${OPT_SILENT:+--silent}
-               ${OPT_BCAST:+--bcast "$OPT_BCAST"} )
+               ${OPT_BCAST:+--bcast "$OPT_BCAST"}
+               "${OPT_IPS[@]}" )
 
-for ip in "${OPT_IPS[@]}"; do
-    chain_cmd=( "${chain_cmd[@]}" --ip "$ip" )
-done
-               
 migrate_cmd=( $_NCONTEXT
              ${OPT_SILENT:+--silent}
              ${OPT_DISCONNECT:+--disconnect} )
index 592d3f1..47eca33 100644 (file)
@@ -73,6 +73,22 @@ else
     SILENT_OPT='--silent'
 fi
 
+function _readFileToArray
+{
+    local _rfta_f="$1"
+    local _rfta_a="$2"
+    local _rfta_p="$3"
+    local _rfta_v
+
+    test -e "$_rfta_f" || return 0
+    while read _rfta_v; do
+       case x"$_rfta_v" in
+           (x|x\#*)    ;;
+           (*)         eval "$_rfta_a=( \"\${$_rfta_a[@]}\" $_rfta_p \"$_rfta_v\" )";;
+       esac
+    done <"$_rfta_f"
+}
+
 function _generateChbindOptions
 {
     local vdir="$1"
@@ -93,6 +109,9 @@ function _generateChbindOptions
        CHBIND_OPTS=( "${CHBIND_OPTS[@]}" --ip "$i" )
     done
 
+    _readFileToArray "$vdir"/nflags        CHBIND_OPTS --flag
+    _readFileToArray "$vdir"/ncapabilities CHBIND_OPTS --ncap
+
     _HAVE_CHBIND_OPTIONS=1
 }
 
@@ -139,31 +158,15 @@ function _generatePersonalityOptions
 function _generateCCapabilityOptions
 {
     local vdir=$1
-    local cap
-    local f="$vdir"/ccapabilities
-    
-    test -e "$f" || return 0
-    while read cap; do
-       case x"$cap" in
-           (x|x\#*)    ;;
-           (*)         OPTS_VATTRIBUTE=( "${OPTS_VATTRIBUTE[@]}" --ccap "$cap" );;
-       esac
-    done <"$f"
+
+    _readFileToArray "$vdir"/ccapabilities OPTS_VATTRIBUTE --ccap
 }
 
 function _generateBCapabilityOptions
 {
     local vdir=$1
-    local cap
-    local f="$vdir"/bcapabilities
-    
-    test -e "$f" || return 0
-    while read cap; do
-       case x"$cap" in
-           (x|x\#*)    ;;
-           (*)         OPTS_VATTRIBUTE=( "${OPTS_VATTRIBUTE[@]}" --bcap "$cap" );;
-       esac
-    done <"$f"
+
+    _readFileToArray "$vdir"/bcapabilities OPTS_VATTRIBUTE --bcap
 }
 
 function _generateCapabilityOptions