Changeset 2599
- Timestamp:
- 08/26/07 23:30:50 (1 year ago)
- Files:
-
- trunk/doc/configuration.xml (modified) (2 diffs)
- trunk/scripts/chbind (modified) (6 diffs)
- trunk/scripts/chcontext (modified) (2 diffs)
- trunk/scripts/pkgmgmt (modified) (2 diffs)
- trunk/scripts/vserver-build.fai (modified) (1 diff)
- trunk/scripts/vserver.functions (modified) (4 diffs)
- trunk/scripts/vserver.start (modified) (2 diffs)
- trunk/scripts/vserver.stop (modified) (1 diff)
- trunk/scripts/vserver.suexec (modified) (3 diffs)
- trunk/scripts/vsomething (modified) (1 diff)
- trunk/src/vtag.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/doc/configuration.xml
r2598 r2599 1222 1222 <collection name="interfaces"> 1223 1223 <scalar name="bcast"> 1224 <description>The default broadcast address.</description> 1224 <description>The guest's broadcast address.</description> 1225 </scalar> 1226 <scalar name="lback"> 1227 <description>The guest's loopback address.</description> 1225 1228 </scalar> 1226 1229 <scalar name="dev"> … … 1265 1268 <scalar name="ip"> 1266 1269 <description>The IP address which will be assigned to this interface.</description> 1267 </scalar>1268 <scalar name="bcast">1269 <description>The broadcast address.</description>1270 1270 </scalar> 1271 1271 <scalar name="dev" id="per-if-dev"> trunk/scripts/chbind
r2394 r2599 30 30 echo \ 31 31 $"Usage: $1 [--silent] [--nid <nid>] [--ip <ip_num>[/<mask>]] 32 [--bcast <broadcast>] [--] <commands> <args>* 32 [--lback <loopback>] [--bcast <broadcast>] 33 [--] <commands> <args>* 33 34 34 35 --silent … … 38 39 --ip <ip_num>[/<mask>] 39 40 IP address to bind to. 41 --lback <loopback> 42 Loopback address for the network context. 40 43 --bcast <broadcast> 41 44 Broadcast address for the network context. … … 58 61 } 59 62 60 tmp=$(getopt -o + --long ncap:,nid:,ip:,bcast:, disconnect,flag:,secure,silent,help,version -n "$0" -- "$@") || exit 163 tmp=$(getopt -o + --long ncap:,nid:,ip:,bcast:,lback:,disconnect,flag:,secure,silent,help,version -n "$0" -- "$@") || exit 1 61 64 eval set -- "$tmp" 62 65 … … 68 71 OPT_SILENT= 69 72 OPT_BCAST= 73 OPT_LBACK= 70 74 OPT_IPS=() 71 75 … … 82 86 --ip) OPT_IPS=( "${OPT_IPS[@]}" --ip "$2" ); shift;; 83 87 --bcast) OPT_BCAST=$2; shift;; 88 --lback) OPT_LBACK=$2; shift;; 84 89 --) shift; break;; 85 90 *) echo $"chbind: internal error; arg=='$1'" >&2; exit 1;; … … 114 119 ${OPT_SILENT:+--silent} 115 120 ${OPT_BCAST:+--bcast "$OPT_BCAST"} 121 ${OPT_LBACK:+--lback "$OPT_LBACK"} 116 122 "${OPT_IPS[@]}" ) 117 123 trunk/scripts/chcontext
r2590 r2599 135 135 done 136 136 137 create_cmd=( ${OPT_CTX:+$_VTAG --create --tag "$OPT_CTX" --silentexist -- }137 create_cmd=( ${OPT_CTX:+$_VTAG --create --tag "$OPT_CTX" --silentexist --silent --} 138 138 $_VCONTEXT --create --silentexist 139 139 ${OPT_SILENT:+--silent} … … 174 174 fi 175 175 176 test "$rc" -ne 254 || exec "$_VTAG" --migrate --tag "$OPT_CTX" -- \176 test "$rc" -ne 254 || exec "$_VTAG" --migrate --tag "$OPT_CTX" --silent -- \ 177 177 "${migrate_cmd[@]}" --xid "$OPT_CTX" --migrate -- "$@" 178 178 exit $rc trunk/scripts/pkgmgmt
r2518 r2599 161 161 test -n "$_HAVE_CHBIND_OPTIONS" || _generateChbindOptions "$1" 162 162 163 _mountFilesystemsInternal "$cfgdir"/fstab || return 1164 _mountFilesystemsInternal "$cfgdir"/fstab.local || return 1165 _mountFilesystemsInternal "$cfgdir"/fstab.remote $_CHBIND "${CHBIND_OPTS[@]}" || return 1163 _mountFilesystemsInternal "$cfgdir"/fstab || return 1 164 _mountFilesystemsInternal "$cfgdir"/fstab.local || return 1 165 _mountFilesystemsInternal "$cfgdir"/fstab.remote "${CHBIND_CMD[@]}" || return 1 166 166 } 167 167 … … 178 178 179 179 pushd "$vdir/" >/dev/null || return 1 180 _umountVserverInternal "$cfgdir"/fstab.remote $_CHBIND "${CHBIND_OPTS[@]}" || is_ok=181 _umountVserverInternal "$cfgdir"/fstab.local || is_ok=182 _umountVserverInternal "$cfgdir"/fstab || is_ok=180 _umountVserverInternal "$cfgdir"/fstab.remote "${CHBIND_CMD[@]}" || is_ok= 181 _umountVserverInternal "$cfgdir"/fstab.local || is_ok= 182 _umountVserverInternal "$cfgdir"/fstab || is_ok= 183 183 popd >/dev/null || return 1 184 184 trunk/scripts/vserver-build.fai
r2352 r2599 157 157 158 158 cd /mnt 159 $_CHBIND "${CHBIND_OPTS[@]}" \159 "${CHBIND_CMD[@]}" \ 160 160 $_VCONTEXT --create "${OPTS_VCONTEXT_CREATE[@]}" -- \ 161 161 $_VUNAME --xid self --set -t nodename="${SETUP_HOSTNAME:-fai-build}" \ trunk/scripts/vserver.functions
r2593 r2599 21 21 22 22 declare -a NICE_CMD=() 23 declare -a CHBIND_ OPTS=()23 declare -a CHBIND_CMD=() 24 24 declare -a CAP_OPTS=() 25 25 declare -a CHCONTEXT_INIT_OPTS=() … … 97 97 local i 98 98 local bcast= 99 local lback= 99 100 local nid= 100 101 101 102 test -n "$_HAVE_INTERFACE_OPTIONS" || _generateInterfaceOptions "$vdir" 102 103 103 local f= $vdir/interfaces/bcast104 local f="$vdir"/interfaces/bcast 104 105 getFileValue bcast "$f" 106 f="$vdir"/interfaces/lback 107 getFileValue lback "$f" 105 108 106 109 getFileValue nid "$vdir/ncontext" "$vdir/context" 107 110 108 CHBIND_OPTS=( $SILENT_OPT --secure ${nid:+--nid "$nid"} ${bcast:+--bcast "$bcast"} ) 111 CHBIND_CMD=( $_CHBIND $SILENT_OPT --secure ${nid:+--nid "$nid"} 112 ${bcast:+--bcast "$bcast"} ${lback:+--lback "$lback"} 113 ) 109 114 110 115 for i in "${INTERFACES[@]}"; do 111 CHBIND_ OPTS=( "${CHBIND_OPTS[@]}" --ip "$i" )116 CHBIND_CMD=( "${CHBIND_CMD[@]}" --ip "$i" ) 112 117 done 113 118 114 _readFileToArray "$vdir"/nflags CHBIND_ OPTS--flag115 _readFileToArray "$vdir"/ncapabilities CHBIND_ OPTS--ncap119 _readFileToArray "$vdir"/nflags CHBIND_CMD --flag 120 _readFileToArray "$vdir"/ncapabilities CHBIND_CMD --ncap 116 121 117 122 _HAVE_CHBIND_OPTIONS=1 … … 837 842 _mountVserverInternal "$cfgdir"/fstab 838 843 _mountVserverInternal "$cfgdir"/fstab.local 839 _mountVserverInternal "$cfgdir"/fstab.remote $_CHBIND "${CHBIND_OPTS[@]}"844 _mountVserverInternal "$cfgdir"/fstab.remote "${CHBIND_CMD[@]}" 840 845 841 846 isNamespaceCleanup "$cfgdir" && \ … … 880 885 881 886 pushd "$vdir/" >/dev/null || return 1 882 _umountVserverInternal "$cfgdir"/fstab.remote $_CHBIND "${CHBIND_OPTS[@]}" || is_ok=883 _umountVserverInternal "$cfgdir"/fstab.local || is_ok=884 _umountVserverInternal "$cfgdir"/fstab || is_ok=887 _umountVserverInternal "$cfgdir"/fstab.remote "${CHBIND_CMD[@]}" || is_ok= 888 _umountVserverInternal "$cfgdir"/fstab.local || is_ok= 889 _umountVserverInternal "$cfgdir"/fstab || is_ok= 885 890 popd >/dev/null || return 1 886 891 trunk/scripts/vserver.start
r2589 r2599 131 131 if $_VSERVER_INFO - FEATURE migrate; then 132 132 ${NICE_CMD[@]} \ 133 $_CHBIND "${CHBIND_OPTS[@]}" --\133 "${CHBIND_CMD[@]}" \ 134 134 $_EXEC_ULIMIT "$VSERVER_DIR"/ulimits \ 135 $_VTAG --create "${OPTS_VTAG_CREATE[@]}" -- \135 $_VTAG --create "${OPTS_VTAG_CREATE[@]}" --silent -- \ 136 136 $_VCONTEXT --create "${OPTS_VCONTEXT_CREATE[@]}" -- \ 137 137 ${OPTION_STRACE:+$_STRACE -fF -o /tmp/vserver-start.$$} \ … … 157 157 158 158 ${NICE_CMD[@]} \ 159 $_CHBIND "${CHBIND_OPTS[@]}" \159 "${CHBIND_CMD[@]}" \ 160 160 $_EXEC_ULIMIT "$VSERVER_DIR/ulimits" \ 161 161 $_CHCONTEXT_COMPAT "${CHCONTEXT_OPTS[@]}" "${CHCONTEXT_INIT_OPTS[@]}" \ trunk/scripts/vserver.stop
r2591 r2599 72 72 elif $_VSERVER_INFO - FEATURE migrate; then 73 73 "${NICE_CMD[@]}" \ 74 "$ _CHBIND" "${CHBIND_OPTS[@]}" \75 "$_VTAG" --migrate "${OPTS_VTAG_MIGRATE[@]}" -- \74 "${CHBIND_CMD[@]}" \ 75 "$_VTAG" --migrate "${OPTS_VTAG_MIGRATE[@]}" --silent -- \ 76 76 $_VCONTEXT $SILENT_OPT --migrate --chroot --xid "$S_CONTEXT" -- \ 77 77 "${INITCMD_STOP[@]}" || fail=1 trunk/scripts/vserver.suexec
r2589 r2599 35 35 if test -z "$is_stopped"; then 36 36 exec \ 37 $_CHBIND "${CHBIND_OPTS[@]}" \ 37 "${NICE_CMD[@]}" \ 38 "${CHBIND_CMD[@]}" \ 38 39 $_EXEC_ULIMIT "$VSERVER_DIR/ulimits" \ 39 40 ${USE_VNAMESPACE:+$_VNAMESPACE --enter "$S_CONTEXT" -- } \ 40 $_VTAG --migrate "${OPTS_VTAG_ENTER[@]}" -- \41 $_VTAG --migrate "${OPTS_VTAG_ENTER[@]}" --silent -- \ 41 42 $_VCONTEXT $SILENT_OPT --migrate --chroot \ 42 43 --xid "$S_CONTEXT" --uid "$user" "${OPTS_VCONTEXT_ENTER[@]}" -- \ … … 44 45 else 45 46 exec \ 46 $_CHBIND "${CHBIND_OPTS[@]}" \ 47 "${NICE_CMD[@]}" \ 48 "${CHBIND_CMD[@]}" \ 47 49 $_EXEC_ULIMIT "$VSERVER_DIR/ulimits" \ 48 $_VTAG -- migrate "${OPTS_VTAG_ENTER[@]}"-- \50 $_VTAG --create "${OPTS_VTAG_CREATE[@]}" --silent -- \ 49 51 $_VCONTEXT --create "${OPTS_VCONTEXT_CREATE[@]}" -- \ 50 52 $_VUNAME --xid self --dir "$VSERVER_DIR"/uts --missingok -- \ … … 56 58 exec \ 57 59 "${NICE_CMD[@]}" \ 58 "$ _CHBIND" "${CHBIND_OPTS[@]}" \60 "${CHBIND_CMD[@]}" \ 59 61 "$_EXEC_ULIMIT" "$VSERVER_DIR/ulimits" \ 60 62 ${USE_VNAMESPACE:+$_VNAMESPACE --enter "$S_CONTEXT" --} \ trunk/scripts/vsomething
r2515 r2599 108 108 else 109 109 _setVserverDir "$i" 110 # subshell so we don't have to clean up 110 111 ( _generateChbindOptions "$VSERVER_DIR" 111 $_VSERVER "$i" status &> /dev/null &&\112 CHBIND_CMD=( "$_CHBIND" "${CHBIND_OPTS[@]}" --)112 $_VSERVER "$i" status &> /dev/null || \ 113 CHBIND_CMD=() 113 114 callInNamespace "$i" \ 114 115 "$_VNAMESPACE" --new -- \ trunk/src/vtag.c
r2589 r2599 39 39 #define CMD_MIGRATE 0x4002 40 40 #define CMD_SILENTEXIST 0x4003 41 #define CMD_SILENT 0x4004 41 42 42 43 … … 48 49 { "create", no_argument, 0, CMD_CREATE }, 49 50 { "migrate", no_argument, 0, CMD_MIGRATE }, 51 { "silent", no_argument, 0, CMD_SILENT }, 50 52 { "silentexist", no_argument, 0, CMD_SILENTEXIST }, 51 53 { 0,0,0,0 }, … … 73 75 " --silentexist ... be silent when context exists already; useful\n" 74 76 " for '--create' only\n" 77 " --silent ... if the feature is not supported, just execute\n" 78 " <program>\n" 75 79 "\n" 76 80 "'vtag --create' exits with code 254 iff the context exists already.\n" … … 97 101 tag_t tag; 98 102 99 if (!vc_isSupported(vcFEATURE_PPTAG)) 100 goto exec; 103 if (!vc_isSupported(vcFEATURE_PPTAG)) { 104 if (args->verbosity >= 1) { 105 errno = ENOSYS; 106 perror(ENSC_WRAPPERS_PREFIX); 107 return wrapper_exit_code; 108 } 109 else 110 goto exec; 111 } 101 112 102 113 if (args->do_create) { … … 140 151 int c = getopt_long(argc, argv, "+", CMDLINE_OPTIONS, 0); 141 152 if (c==-1) break; 142 153 143 154 switch (c) { 144 155 case CMD_HELP : showHelp(1, argv[0], 0); … … 148 159 case CMD_SILENTEXIST : args.is_silentexist = true; break; 149 160 case CMD_TAG : args.tag = Evc_tagopt2tag(optarg,true); break; 161 case CMD_SILENT : args.verbosity--; break; 150 162 151 163 default :
