Changeset 130
- Timestamp:
- 03/04/06 13:41:40 (3 years ago)
- Files:
-
- branches/1.0.4/scripts/lib/vps.sh (modified) (9 diffs)
- branches/1.0.4/src/tools/vcontext.c (modified) (3 diffs)
- branches/1.0.4/src/tools/vexec.c (modified) (3 diffs)
- branches/1.0.4/src/tools/vflags.c (modified) (2 diffs)
- branches/1.0.4/src/tools/vlogin.c (modified) (8 diffs)
- branches/1.0.4/src/tools/vmount.c (modified) (2 diffs)
- branches/1.0.4/src/tools/vnamespace.c (modified) (1 diff)
- branches/1.0.4/src/tools/vnflags.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/1.0.4/scripts/lib/vps.sh
r129 r130 102 102 setup) 103 103 ${_VNCONTEXT} -C -n ${VX_XID} -f PERSISTANT,STATE_SETUP 104 ${_VNFLAGS} -G -m -n ${VX_XID}105 104 ${_VCONTEXT} -C -x ${VX_XID} -f PERSISTANT,STATE_SETUP 106 ${_VFLAGS} -G -m -x ${VX_XID}107 105 ;; 108 106 … … 129 127 ${_VNCONTEXT} -A -n ${VX_XID} -a ${i} 130 128 done 131 ${_VNFLAGS} -G -m -n ${VX_XID}132 129 ;; 133 130 … … 147 144 new) 148 145 ${_VNAMESPACE} -N -x ${VX_XID} 149 ${_VFLAGS} -G -m -x ${VX_XID}150 146 ;; 151 147 … … 153 149 [ -z "$1" ] && util.error "vps.namespace: missing argument <command>" 154 150 ${_VNAMESPACE} -E -x ${VX_XID} -- "$@" 155 ${_VFLAGS} -G -m -x ${VX_XID}156 151 ;; 157 152 … … 239 234 ${_VFLAGS} -S -b $(util.array_to_list ${VX_BCAPS[@]}) -x ${VX_XID} 240 235 fi 241 ${_VFLAGS} -G -m -x ${VX_XID}242 236 if [ ! -z "${VX_CCAPS}" ]; then 243 237 ${_VFLAGS} -S -c $(util.array_to_list ${VX_CCAPS[@]}) -x ${VX_XID} 244 238 fi 245 ${_VFLAGS} -G -m -x ${VX_XID}246 239 if [ ! -z "${VX_FLAGS}" ]; then 247 240 ${_VFLAGS} -S -f $(util.array_to_list ${VX_FLAGS[@]}),STATE_SETUP -x ${VX_XID} 248 241 fi 249 ${_VFLAGS} -G -m -x ${VX_XID}250 242 ;; 251 243 … … 261 253 262 254 pushd ${VDIR} >/dev/null 263 ${_VFLAGS} -G -m -x ${VX_XID}264 ${_VNFLAGS} -G -m -n ${VX_XID}265 255 case ${VX_INIT} in 266 256 sysvinit|init|plain) … … 292 282 ;; 293 283 esac 294 ${_VFLAGS} -G -m -x ${VX_XID}295 ${_VNFLAGS} -G -m -n ${VX_XID}296 284 popd >/dev/null 297 285 } … … 401 389 popd >/dev/null 402 390 fi 403 ${_VFLAGS} -G -m -x ${VX_XID}404 391 return 0 405 392 } … … 420 407 ${_VNAMESPACE} -E -x ${VX_XID} -- \ 421 408 ${_VMOUNT} -U -f ${fstab} -m etc/mtab 422 ${_VFLAGS} -G -m -x ${VX_XID}423 409 popd >/dev/null 424 410 } branches/1.0.4/src/tools/vcontext.c
r129 r130 165 165 /* validate descending list */ 166 166 if (list_validate_flag(&link, clmod) == -1) 167 PEXIT("List validation failed ", EXIT_USAGE);167 PEXIT("List validation failed for FLAGS", EXIT_USAGE); 168 168 169 169 /* convert given descending list to flags using the pristine copy */ … … 197 197 /* validate descending list */ 198 198 if (list_validate_flag(&link, clmod) == -1) 199 PEXIT("List validation failed ", EXIT_USAGE);199 PEXIT("List validation failed for BCAPS", EXIT_USAGE); 200 200 /* convert given descending list to flags using the pristine copy */ 201 201 list_list2flags(&link, clmod, &caps.bcaps, &caps.cmask); … … 205 205 /* validate descending list */ 206 206 if (list_validate_flag(&link, clmod) == -1) 207 PEXIT("List validation failed ", EXIT_USAGE);207 PEXIT("List validation failed for CCAPS", EXIT_USAGE); 208 208 /* convert given descending list to flags using the pristine copy */ 209 209 list_list2flags(&link, clmod, &caps.ccaps, &caps.cmask); branches/1.0.4/src/tools/vexec.c
r129 r130 169 169 PEXIT("Failed to set context flags", EXIT_COMMAND); 170 170 } 171 vu_printf("Migrating with mflags=%lx\n", mflags.flags);171 DEBUGF("Migrating with mflags=%lx\n", mflags.flags); 172 172 if (vx_migrate(opts.xid, &mflags) == -1) 173 173 PEXIT("Failed to migrate to context", EXIT_COMMAND); … … 185 185 // -- check for /dev/console or /dev/tty in the guest's root 186 186 if (opts.init) { 187 vu_printf("Preparing for switching stdin to /dev/console...\n");187 VPRINTF(&opts, "Preparing for switching stdin to %s...\n", "/dev/console"); 188 188 struct stat st; 189 189 if (stat("/dev/console", &st) == -1) { 190 vu_printf("Failed to stat /dev/console: %s\n", strerror(errno));190 perror("Failed to stat /dev/console"); 191 191 } else if (S_ISCHR(st.st_mode)) { 192 192 int fd = open("/dev/console", O_RDWR); // O_NOCTTY); … … 197 197 if (fd > 2) close(fd); 198 198 } else 199 vu_ printf("Cannot use /dev/console as it's not a character device.\n");199 vu_dprintf(STDERR_FILENO, "Cannot use /dev/console as it's not a character device.\n"); 200 200 } 201 201 branches/1.0.4/src/tools/vflags.c
r129 r130 210 210 /* syscall */ 211 211 if (bmask || caps.cmask) { 212 VPRINTF(&opts, "BCaps = %x, old = %x\n", caps.bcaps, obcaps);213 VPRINTF(&opts, "CCaps = %x, mask = %x\n", caps.ccaps, caps.cmask);212 DEBUGF("BCaps = %.16lx, old = %.16lx\n", caps.bcaps, obcaps); 213 DEBUGF("CCaps = %.16lx, mask = %.16lx\n", caps.ccaps, caps.cmask); 214 214 if (vx_set_caps(opts.xid, &caps) == -1) 215 215 PEXIT("Failed to set context capabilities", EXIT_COMMAND); … … 244 244 PEXIT("Failed to get context flags", EXIT_COMMAND); 245 245 246 VPRINTF(&opts, "Flage = % x, mask = %x\n", flags.flags, flags.mask);247 VPRINTF(&opts, "BCaps = % x\n", caps.bcaps);248 VPRINTF(&opts, "CCaps = % x, mask = %x\n", caps.ccaps, caps.cmask);246 VPRINTF(&opts, "Flage = %.16lx\n", flags.flags); 247 VPRINTF(&opts, "BCaps = %.16lx\n", caps.bcaps); 248 VPRINTF(&opts, "CCaps = %.16lx\n", caps.ccaps); 249 249 250 250 if (opts.compact) { 251 251 bool b = 0; 252 vu_printf("BCAPS=%lx CCAPS=%lx FLAGS=%lx\n", caps.bcaps, caps.ccaps, flags.flags); 253 vu_printf("BCAPS = "); 252 vu_printf("BCAPS ="); 254 253 list_foreach(bp, i) 255 254 if ((caps.bcaps & *(uint64_t*)(bp->node+i)->data) == *(uint64_t*)(bp->node+i)->data) 256 255 vu_printf("%s%s", b++ ? "," : " ", (char *)(bp->node+i)->key); 257 vu_printf("\nCCAPS = ");256 vu_printf("\nCCAPS ="); 258 257 b = 0; 259 258 list_foreach(cp, i) 260 259 if (caps.ccaps & *(uint64_t*)(cp->node+i)->data) 261 260 vu_printf("%s%s", b++ ? "," : " ", (char *)(cp->node+i)->key); 262 vu_printf("\nFLAGS = ");261 vu_printf("\nFLAGS ="); 263 262 b = 0; 264 263 list_foreach(fp, i) branches/1.0.4/src/tools/vlogin.c
r129 r130 32 32 #include <sys/wait.h> 33 33 #include <sys/ioctl.h> 34 #include <limits.h> 34 35 #include <errno.h> 35 36 #include <pty.h> … … 42 43 #define DESCR "Context Login" 43 44 44 #define SHORT_OPTS "n:x: "45 #define SHORT_OPTS "n:x:N" 45 46 46 47 struct options { … … 48 49 nid_t nid; 49 50 xid_t xid; 51 bool namespace; 50 52 }; 51 53 … … 71 73 "Available options:\n" 72 74 GLOBAL_HELP 75 " -N Also change namespace\n" 73 76 " -n <xid> Network Context ID\n" 74 77 " -x <xid> Context ID\n" … … 284 287 break; 285 288 289 case 'N': 290 opts.namespace = 1; 291 break; 292 286 293 DEFAULT_GETOPT 287 294 } … … 291 298 EXIT("Invalid xid", EXIT_USAGE); 292 299 293 /* TODO: also change namespace? */ 300 /* change namespace */ 301 if (opts.namespace) { 302 char cwd[PATH_MAX]; 303 304 if (getcwd(cwd, PATH_MAX) == NULL) 305 PEXIT("Failed to get cwd", EXIT_COMMAND); 306 307 if (vx_enter_namespace(opts.xid) == -1) 308 PEXIT("Failed to enter namespace", EXIT_COMMAND); 309 310 if (chdir(cwd) == -1) 311 PEXIT("Failed to restore cwd", EXIT_COMMAND); 312 } 294 313 295 314 /* enter context */ … … 318 337 PEXIT("Failed to chroot to cwd", EXIT_COMMAND); 319 338 320 pid_t pid; 321 pid = fork(); 322 323 /* setup some signal handlers */ 324 signal(SIGINT, signal_handler); 325 signal(SIGCHLD, signal_handler); 326 signal(SIGWINCH, signal_handler); 327 339 pid_t pid = fork(); 340 328 341 if (pid == -1) 329 342 PEXIT("Failed to fork new pseudo terminal", EXIT_COMMAND); 330 343 331 344 if (pid == 0) { 345 sleep(0); 346 347 signal(SIGWINCH, signal_handler); 348 332 349 /* we don't need the master side of the terminal */ 333 350 close(t.fd); … … 348 365 /* check shell */ 349 366 if (argc > optind) { 367 VPRINTF(&opts, "Executing shell '%s'\n", argv[optind]); 350 368 if (execv(argv[optind], argv+optind) == -1) { 351 369 PEXIT("Failed to execute shell", EXIT_COMMAND); 352 370 } 353 } 354 else {371 } else { 372 VPRINTF(&opts, "Executing default shell '%s'\n", "/bin/sh"); 355 373 if (execl("/bin/sh", "/bin/sh", "-l", NULL) == -1) { 356 374 PEXIT("Failed to execute default shell", EXIT_COMMAND); 357 375 } 358 376 } 377 } else { 378 /* setup some signal handlers */ 379 signal(SIGINT, signal_handler); 380 signal(SIGCHLD, signal_handler); 381 signal(SIGWINCH, signal_handler); 359 382 } 360 383 branches/1.0.4/src/tools/vmount.c
r129 r130 190 190 struct mntspec *load_fstab(const char *file) 191 191 { 192 /*FILE *f;192 FILE *f; 193 193 194 194 if ((f = setmntent(file ? file : "./etc/fstab", "r"))) … … 218 218 endmntent(f); 219 219 return first; 220 } */220 } 221 221 return NULL; 222 222 } branches/1.0.4/src/tools/vnamespace.c
r129 r130 38 38 #include "printf.h" 39 39 #include "tools.h" 40 #include "sys.h" 40 41 41 42 #define NAME "vnamespace" branches/1.0.4/src/tools/vnflags.c
r129 r130 166 166 if (opts.compact) { 167 167 int b = 0; 168 vu_printf("NCAPS = ");168 vu_printf("NCAPS ="); 169 169 list_foreach(cp, i) 170 170 if (caps.caps & *(uint64_t*)(cp->node+i)->data) 171 171 vu_printf("%s%s", b++ ? "," : " ", (char *)(cp->node+i)->key); 172 vu_printf("\nFLAGS = ");172 vu_printf("\nFLAGS ="); 173 173 b = 0; 174 174 list_foreach(fp, i)
