#endif
#define STACK_SIZE (1024 * 1024)
-#define OPT_ARGS "cC:d:e:EfFG:h:ij:J:ln:NoO:pP:r:R:sS:uU:w:t:T:y"
+#define OPT_ARGS "cC:d:De:EfFG:h:ij:J:ln:NoO:pP:r:R:sS:uU:w:t:T:y"
#define OCI_VERSION_STRING "1.0.2"
fprintf(stderr, " -s\t\tjail has /sys\n");
fprintf(stderr, " -l\t\tjail has /dev/log\n");
fprintf(stderr, " -u\t\tjail has a ubus socket\n");
+ fprintf(stderr, " -D\t\tjail has a udebug socket\n");
fprintf(stderr, " -U <name>\tuser to run jailed process\n");
fprintf(stderr, " -G <name>\tgroup to run jailed process\n");
fprintf(stderr, " -o\t\tremont jail root (/) read only\n");
uid_t uid = getuid();
const char log[] = "/dev/log";
const char ubus[] = "/var/run/ubus/ubus.sock";
+ const char udebug[] = "/var/run/udebug.sock";
int ret = EXIT_FAILURE;
int ch;
char *tmp;
opts.namespace |= CLONE_NEWNS;
add_mount_bind(ubus, 0, -1);
break;
+ case 'D':
+ opts.namespace |= CLONE_NEWNS;
+ add_mount_bind(udebug, 0, -1);
+ break;
case 'l':
opts.namespace |= CLONE_NEWNS;
add_mount_bind(log, 0, -1);
JAIL_ATTR_PROCFS,
JAIL_ATTR_SYSFS,
JAIL_ATTR_UBUS,
+ JAIL_ATTR_UDEBUG,
JAIL_ATTR_LOG,
JAIL_ATTR_RONLY,
JAIL_ATTR_MOUNT,
[JAIL_ATTR_PROCFS] = { "procfs", BLOBMSG_TYPE_BOOL },
[JAIL_ATTR_SYSFS] = { "sysfs", BLOBMSG_TYPE_BOOL },
[JAIL_ATTR_UBUS] = { "ubus", BLOBMSG_TYPE_BOOL },
+ [JAIL_ATTR_UDEBUG] = { "udebug", BLOBMSG_TYPE_BOOL },
[JAIL_ATTR_LOG] = { "log", BLOBMSG_TYPE_BOOL },
[JAIL_ATTR_RONLY] = { "ronly", BLOBMSG_TYPE_BOOL },
[JAIL_ATTR_MOUNT] = { "mount", BLOBMSG_TYPE_TABLE },
if (jail->ubus)
argv[argc++] = "-u";
+ if (jail->udebug)
+ argv[argc++] = "-D";
+
if (jail->log)
argv[argc++] = "-l";
jail->ubus = true;
jail->argc++;
}
+ if (tb[JAIL_ATTR_UDEBUG] && blobmsg_get_bool(tb[JAIL_ATTR_UDEBUG])) {
+ jail->udebug = true;
+ jail->argc++;
+ }
if (tb[JAIL_ATTR_LOG] && blobmsg_get_bool(tb[JAIL_ATTR_LOG])) {
jail->log = true;
jail->argc++;