Always chdir() to current working directory.
chdir() to correct path after calling chroot()
Since chroot() doesn't chdir() by default, we are left inan unreachable directory in node.pexec() (and in xterms.)
Fall back to chroot() if setns() fails for mnt namespace
conforming to mininet style
added persistence option to HostWithPrivateDirs. also attached mount namespaces when mnexec -a is specified
mnexec: mount sysfs in each container
The sysfs filesystem is [tagged] with a set of namespaces when mounted, takenfrom the mounting process. Among other things, this controls which networkdevices will show up in /sys/class/net and /sys/class/net/bonding_masters....
Change cgroup() return type from int to void (avoids a gcc warning)
Defines _GNU_SOURCE (required by the unshare syscall)
The header file limits.h was being included twice
Fixes compiler warning: control reaches end of non-void function
Fixes compiler warning: implicit declaration of function 'isalnum'
mnexec: getopt bugfix
getopt returns an 'int', so use change datatype of 'c' to match it.Otherwise, 'c' may hold a value of 255 (0xff), and fail the comparisonwith -1 (0xffffffff): while ((c = getopt(...)) != -1)
This bug was uncovered on Ubuntu 13.04 running on ARM, using...
mnexec.c: substituting tabs with spaces.
Use __NR_setns so that setns has the right syscall # in 32-bit modefixes #127
Autogenerate man page for mnexec.
CPULimiteHost.popen(): set cgroup and (optionally) RT priority
Add support for attaching to network namespace using setns(2)
Removed unused variable.
Support for control-C. Finally.
I've changed the way things work a bit:
1. netns is replaced by mnexec, a general-purpose mininet helper.
2. For interactive commands, we now use mnexec -p, which prints out the pid, so we can kill it when someone hits control-C!...