Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F171555270
D59572.id186408.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
22 KB
Referenced Files
None
Subscribers
None
D59572.id186408.diff
View Options
diff --git a/sys/kern/kern_jail.c b/sys/kern/kern_jail.c
--- a/sys/kern/kern_jail.c
+++ b/sys/kern/kern_jail.c
@@ -196,26 +196,26 @@
* terminating entry.
*/
static struct bool_flags pr_flag_bool[] = {
- {"persist", "nopersist", PR_PERSIST},
+ {JAIL_PARAM_PERSIST, JAIL_PARAM_NOPERSIST, PR_PERSIST},
#ifdef INET
- {"ip4.saddrsel", "ip4.nosaddrsel", PR_IP4_SADDRSEL},
+ {JAIL_PARAM_IP4_SADDRSEL, JAIL_PARAM_IP4_NOSADDRSEL, PR_IP4_SADDRSEL},
#endif
#ifdef INET6
- {"ip6.saddrsel", "ip6.nosaddrsel", PR_IP6_SADDRSEL},
+ {JAIL_PARAM_IP6_SADDRSEL, JAIL_PARAM_IP6_NOSADDRSEL, PR_IP6_SADDRSEL},
#endif
};
const size_t pr_flag_bool_size = sizeof(pr_flag_bool);
static struct jailsys_flags pr_flag_jailsys[] = {
- {"host", 0, PR_HOST},
+ {JAIL_PARAM_HOST, 0, PR_HOST},
#ifdef VIMAGE
- {"vnet", 0, PR_VNET},
+ {JAIL_PARAM_VNET, 0, PR_VNET},
#endif
#ifdef INET
- {"ip4", PR_IP4_USER, PR_IP4_USER},
+ {JAIL_PARAM_IP4, PR_IP4_USER, PR_IP4_USER},
#endif
#ifdef INET6
- {"ip6", PR_IP6_USER, PR_IP6_USER},
+ {JAIL_PARAM_IP6, PR_IP6_USER, PR_IP6_USER},
#endif
};
const size_t pr_flag_jailsys_size = sizeof(pr_flag_jailsys);
@@ -226,32 +226,43 @@
* with an atomic check of the flag values.
*/
static struct bool_flags pr_flag_allow[NBBY * NBPW] = {
- {"allow.set_hostname", "allow.noset_hostname", PR_ALLOW_SET_HOSTNAME},
- {"allow.sysvipc", "allow.nosysvipc", PR_ALLOW_SYSVIPC},
- {"allow.raw_sockets", "allow.noraw_sockets", PR_ALLOW_RAW_SOCKETS},
- {"allow.chflags", "allow.nochflags", PR_ALLOW_CHFLAGS},
- {"allow.mount", "allow.nomount", PR_ALLOW_MOUNT},
- {"allow.quotas", "allow.noquotas", PR_ALLOW_QUOTAS},
- {"allow.socket_af", "allow.nosocket_af", PR_ALLOW_SOCKET_AF},
- {"allow.mlock", "allow.nomlock", PR_ALLOW_MLOCK},
- {"allow.reserved_ports", "allow.noreserved_ports",
+ {JAIL_PARAM_ALLOW_SET_HOSTNAME, JAIL_PARAM_ALLOW_NOSET_HOSTNAME,
+ PR_ALLOW_SET_HOSTNAME},
+ {JAIL_PARAM_ALLOW_SYSVIPC, JAIL_PARAM_ALLOW_NOSYSVIPC,
+ PR_ALLOW_SYSVIPC},
+ {JAIL_PARAM_ALLOW_RAW_SOCKETS, JAIL_PARAM_ALLOW_NORAW_SOCKETS,
+ PR_ALLOW_RAW_SOCKETS},
+ {JAIL_PARAM_ALLOW_CHFLAGS, JAIL_PARAM_ALLOW_NOCHFLAGS,
+ PR_ALLOW_CHFLAGS},
+ {JAIL_PARAM_ALLOW_MOUNT, JAIL_PARAM_ALLOW_NOMOUNT, PR_ALLOW_MOUNT},
+ {JAIL_PARAM_ALLOW_QUOTAS, JAIL_PARAM_ALLOW_NOQUOTAS, PR_ALLOW_QUOTAS},
+ {JAIL_PARAM_ALLOW_SOCKET_AF, JAIL_PARAM_ALLOW_NOSOCKET_AF,
+ PR_ALLOW_SOCKET_AF},
+ {JAIL_PARAM_ALLOW_MLOCK, JAIL_PARAM_ALLOW_NOMLOCK, PR_ALLOW_MLOCK},
+ {JAIL_PARAM_ALLOW_RESERVED_PORTS, JAIL_PARAM_ALLOW_NORESERVED_PORTS,
PR_ALLOW_RESERVED_PORTS},
- {"allow.read_msgbuf", "allow.noread_msgbuf", PR_ALLOW_READ_MSGBUF},
- {"allow.unprivileged_proc_debug", "allow.nounprivileged_proc_debug",
+ {JAIL_PARAM_ALLOW_READ_MSGBUF, JAIL_PARAM_ALLOW_NOREAD_MSGBUF,
+ PR_ALLOW_READ_MSGBUF},
+ {JAIL_PARAM_ALLOW_UNPRIV_DEBUG, JAIL_PARAM_ALLOW_NOUNPRIV_DEBUG,
PR_ALLOW_UNPRIV_DEBUG},
- {"allow.suser", "allow.nosuser", PR_ALLOW_SUSER},
+ {JAIL_PARAM_ALLOW_SUSER, JAIL_PARAM_ALLOW_NOSUSER, PR_ALLOW_SUSER},
#ifdef VIMAGE
- {"allow.nfsd", "allow.nonfsd", PR_ALLOW_NFSD},
-#endif
- {"allow.extattr", "allow.noextattr", PR_ALLOW_EXTATTR},
- {"allow.adjtime", "allow.noadjtime", PR_ALLOW_ADJTIME},
- {"allow.settime", "allow.nosettime", PR_ALLOW_SETTIME},
- {"allow.routing", "allow.norouting", PR_ALLOW_ROUTING},
- {"allow.unprivileged_parent_tampering",
- "allow.nounprivileged_parent_tampering",
+ {JAIL_PARAM_ALLOW_NFSD, JAIL_PARAM_ALLOW_NONFSD, PR_ALLOW_NFSD},
+#endif
+ {JAIL_PARAM_ALLOW_EXTATTR, JAIL_PARAM_ALLOW_NOEXTATTR,
+ PR_ALLOW_EXTATTR},
+ {JAIL_PARAM_ALLOW_ADJTIME, JAIL_PARAM_ALLOW_NOADJTIME,
+ PR_ALLOW_ADJTIME},
+ {JAIL_PARAM_ALLOW_SETTIME, JAIL_PARAM_ALLOW_NOSETTIME,
+ PR_ALLOW_SETTIME},
+ {JAIL_PARAM_ALLOW_ROUTING, JAIL_PARAM_ALLOW_NOROUTING,
+ PR_ALLOW_ROUTING},
+ {JAIL_PARAM_ALLOW_UNPRIV_PARENT_TAMPER,
+ JAIL_PARAM_ALLOW_NOUNPRIV_PARENT_TAMPER,
PR_ALLOW_UNPRIV_PARENT_TAMPER},
#ifdef AUDIT
- {"allow.setaudit", "allow.nosetaudit", PR_ALLOW_SETAUDIT},
+ {JAIL_PARAM_ALLOW_SETAUDIT, JAIL_PARAM_ALLOW_NOSETAUDIT,
+ PR_ALLOW_SETAUDIT},
#endif
};
static unsigned pr_allow_all = PR_ALLOW_ALL_STATIC;
@@ -443,8 +454,8 @@
strlen(optiov[opt.uio_iovcnt].iov_base) + 1;
opt.uio_iovcnt += 2;
}
- optiov[opt.uio_iovcnt].iov_base = "enforce_statfs";
- optiov[opt.uio_iovcnt].iov_len = sizeof("enforce_statfs");
+ optiov[opt.uio_iovcnt].iov_base = JAIL_PARAM_ENFORCE_STATFS;
+ optiov[opt.uio_iovcnt].iov_len = sizeof(JAIL_PARAM_ENFORCE_STATFS);
opt.uio_iovcnt++;
enforce_statfs = jail_default_enforce_statfs;
optiov[opt.uio_iovcnt].iov_base = &enforce_statfs;
@@ -483,8 +494,8 @@
u_ip6 = (struct in6_addr *)(u_name + MAXHOSTNAMELEN);
#endif
#endif
- optiov[opt.uio_iovcnt].iov_base = "path";
- optiov[opt.uio_iovcnt].iov_len = sizeof("path");
+ optiov[opt.uio_iovcnt].iov_base = JAIL_PARAM_PATH;
+ optiov[opt.uio_iovcnt].iov_len = sizeof(JAIL_PARAM_PATH);
opt.uio_iovcnt++;
optiov[opt.uio_iovcnt].iov_base = u_path;
error = copyinstr(j->path, u_path, MAXPATHLEN,
@@ -494,8 +505,8 @@
return (error);
}
opt.uio_iovcnt++;
- optiov[opt.uio_iovcnt].iov_base = "host.hostname";
- optiov[opt.uio_iovcnt].iov_len = sizeof("host.hostname");
+ optiov[opt.uio_iovcnt].iov_base = JAIL_PARAM_HOST_HOSTNAME;
+ optiov[opt.uio_iovcnt].iov_len = sizeof(JAIL_PARAM_HOST_HOSTNAME);
opt.uio_iovcnt++;
optiov[opt.uio_iovcnt].iov_base = u_hostname;
error = copyinstr(j->hostname, u_hostname, MAXHOSTNAMELEN,
@@ -506,8 +517,8 @@
}
opt.uio_iovcnt++;
if (j->jailname != NULL) {
- optiov[opt.uio_iovcnt].iov_base = "name";
- optiov[opt.uio_iovcnt].iov_len = sizeof("name");
+ optiov[opt.uio_iovcnt].iov_base = JAIL_PARAM_NAME;
+ optiov[opt.uio_iovcnt].iov_len = sizeof(JAIL_PARAM_NAME);
opt.uio_iovcnt++;
optiov[opt.uio_iovcnt].iov_base = u_name;
error = copyinstr(j->jailname, u_name, MAXHOSTNAMELEN,
@@ -519,8 +530,8 @@
opt.uio_iovcnt++;
}
#ifdef INET
- optiov[opt.uio_iovcnt].iov_base = "ip4.addr";
- optiov[opt.uio_iovcnt].iov_len = sizeof("ip4.addr");
+ optiov[opt.uio_iovcnt].iov_base = JAIL_PARAM_IP4_ADDR;
+ optiov[opt.uio_iovcnt].iov_len = sizeof(JAIL_PARAM_IP4_ADDR);
opt.uio_iovcnt++;
optiov[opt.uio_iovcnt].iov_base = u_ip4;
optiov[opt.uio_iovcnt].iov_len = ip4s * sizeof(struct in_addr);
@@ -536,8 +547,8 @@
opt.uio_iovcnt++;
#endif
#ifdef INET6
- optiov[opt.uio_iovcnt].iov_base = "ip6.addr";
- optiov[opt.uio_iovcnt].iov_len = sizeof("ip6.addr");
+ optiov[opt.uio_iovcnt].iov_base = JAIL_PARAM_IP6_ADDR;
+ optiov[opt.uio_iovcnt].iov_len = sizeof(JAIL_PARAM_IP6_ADDR);
opt.uio_iovcnt++;
optiov[opt.uio_iovcnt].iov_base = u_ip6;
optiov[opt.uio_iovcnt].iov_len = j->ip6s * sizeof(struct in6_addr);
@@ -1104,7 +1115,7 @@
goto done_errmsg;
}
- error = vfs_copyopt(opts, "desc", &jfd_in, sizeof(jfd_in));
+ error = vfs_copyopt(opts, JAIL_PARAM_DESC, &jfd_in, sizeof(jfd_in));
if (error == ENOENT) {
if (flags & (JAIL_USE_DESC | JAIL_AT_DESC | JAIL_GET_DESC |
JAIL_OWN_DESC)) {
@@ -1163,13 +1174,13 @@
goto done_free;
}
- error = vfs_copyopt(opts, "jid", &jid, sizeof(jid));
+ error = vfs_copyopt(opts, JAIL_PARAM_JID, &jid, sizeof(jid));
if (error == ENOENT)
jid = 0;
else if (error != 0)
goto done_free;
- error = vfs_copyopt(opts, "securelevel", &slevel, sizeof(slevel));
+ error = vfs_copyopt(opts, JAIL_PARAM_SECURELEVEL, &slevel, sizeof(slevel));
if (error == ENOENT)
gotslevel = 0;
else if (error != 0)
@@ -1178,7 +1189,7 @@
gotslevel = 1;
error =
- vfs_copyopt(opts, "children.max", &childmax, sizeof(childmax));
+ vfs_copyopt(opts, JAIL_PARAM_CHILDREN_MAX, &childmax, sizeof(childmax));
if (error == ENOENT)
gotchildmax = 0;
else if (error != 0)
@@ -1186,7 +1197,8 @@
else
gotchildmax = 1;
- error = vfs_copyopt(opts, "enforce_statfs", &enforce, sizeof(enforce));
+ error = vfs_copyopt(opts, JAIL_PARAM_ENFORCE_STATFS, &enforce,
+ sizeof(enforce));
if (error == ENOENT)
gotenforce = 0;
else if (error != 0)
@@ -1197,7 +1209,7 @@
} else
gotenforce = 1;
- error = vfs_copyopt(opts, "devfs_ruleset", &rsnum, sizeof(rsnum));
+ error = vfs_copyopt(opts, JAIL_PARAM_DEVFS_RULESET, &rsnum, sizeof(rsnum));
if (error == ENOENT)
gotrsnum = 0;
else if (error != 0)
@@ -1278,7 +1290,7 @@
}
ch_allow |= pr_allow;
- error = vfs_getopt(opts, "name", (void **)&name, &len);
+ error = vfs_getopt(opts, JAIL_PARAM_NAME, (void **)&name, &len);
if (error == ENOENT)
name = NULL;
else if (error != 0)
@@ -1294,7 +1306,7 @@
}
}
- error = vfs_getopt(opts, "host.hostname", (void **)&host, &len);
+ error = vfs_getopt(opts, JAIL_PARAM_HOST_HOSTNAME, (void **)&host, &len);
if (error == ENOENT)
host = NULL;
else if (error != 0)
@@ -1312,7 +1324,7 @@
}
}
- error = vfs_getopt(opts, "host.domainname", (void **)&domain, &len);
+ error = vfs_getopt(opts, JAIL_PARAM_HOST_DOMAINNAME, (void **)&domain, &len);
if (error == ENOENT)
domain = NULL;
else if (error != 0)
@@ -1330,7 +1342,7 @@
}
}
- error = vfs_getopt(opts, "host.hostuuid", (void **)&uuid, &len);
+ error = vfs_getopt(opts, JAIL_PARAM_HOST_HOSTUUID, (void **)&uuid, &len);
if (error == ENOENT)
uuid = NULL;
else if (error != 0)
@@ -1352,11 +1364,11 @@
if (SV_PROC_FLAG(td->td_proc, SV_ILP32)) {
uint32_t hid32;
- error = vfs_copyopt(opts, "host.hostid", &hid32, sizeof(hid32));
+ error = vfs_copyopt(opts, JAIL_PARAM_HOST_HOSTID, &hid32, sizeof(hid32));
hid = hid32;
} else
#endif
- error = vfs_copyopt(opts, "host.hostid", &hid, sizeof(hid));
+ error = vfs_copyopt(opts, JAIL_PARAM_HOST_HOSTID, &hid, sizeof(hid));
if (error == ENOENT)
gothid = 0;
else if (error != 0)
@@ -1379,7 +1391,7 @@
#endif
#ifdef INET
- error = vfs_getopt(opts, "ip4.addr", &op, &ip4s);
+ error = vfs_getopt(opts, JAIL_PARAM_IP4_ADDR, &op, &ip4s);
if (error == ENOENT)
ip4s = 0;
else if (error != 0)
@@ -1407,7 +1419,7 @@
#endif
#ifdef INET6
- error = vfs_getopt(opts, "ip6.addr", &op, &ip6s);
+ error = vfs_getopt(opts, JAIL_PARAM_IP6_ADDR, &op, &ip6s);
if (error == ENOENT)
ip6s = 0;
else if (error != 0)
@@ -1443,7 +1455,7 @@
}
#endif
- error = vfs_getopt(opts, "osrelease", (void **)&osrelstr, &len);
+ error = vfs_getopt(opts, JAIL_PARAM_OSRELEASE, (void **)&osrelstr, &len);
if (error == ENOENT)
osrelstr = NULL;
else if (error != 0)
@@ -1468,7 +1480,7 @@
}
}
- error = vfs_copyopt(opts, "osreldate", &osreldt, sizeof(osreldt));
+ error = vfs_copyopt(opts, JAIL_PARAM_OSRELDATE, &osreldt, sizeof(osreldt));
if (error == ENOENT)
osreldt = 0;
else if (error != 0)
@@ -1488,7 +1500,7 @@
}
root = NULL;
- error = vfs_getopt(opts, "path", (void **)&path, &len);
+ error = vfs_getopt(opts, JAIL_PARAM_PATH, (void **)&path, &len);
if (error == ENOENT)
path = NULL;
else if (error != 0)
@@ -2359,7 +2371,7 @@
mtx_lock(&pr->pr_mtx);
drflags |= PD_LOCKED;
}
- jfd_pos = 2 * vfs_getopt_pos(opts, "desc") + 1;
+ jfd_pos = 2 * vfs_getopt_pos(opts, JAIL_PARAM_DESC) + 1;
if (optuio->uio_segflg == UIO_SYSSPACE)
*(int*)optuio->uio_iov[jfd_pos].iov_base = jfd_out;
else
@@ -2391,9 +2403,9 @@
done_errmsg:
if (error) {
/* Write the error message back to userspace. */
- if (vfs_getopt(opts, "errmsg", (void **)&errmsg,
+ if (vfs_getopt(opts, JAIL_PARAM_ERRMSG, (void **)&errmsg,
&errmsg_len) == 0 && errmsg_len > 0) {
- errmsg_pos = 2 * vfs_getopt_pos(opts, "errmsg") + 1;
+ errmsg_pos = 2 * vfs_getopt_pos(opts, JAIL_PARAM_ERRMSG) + 1;
if (optuio->uio_segflg == UIO_SYSSPACE)
bcopy(errmsg,
optuio->uio_iov[errmsg_pos].iov_base,
@@ -2591,7 +2603,7 @@
error = vfs_buildopts(optuio, &opts);
if (error)
return (error);
- errmsg_pos = vfs_getopt_pos(opts, "errmsg");
+ errmsg_pos = vfs_getopt_pos(opts, JAIL_PARAM_ERRMSG);
mypr = td->td_ucred->cr_prison;
prison_hold(mypr);
pr = NULL;
@@ -2604,7 +2616,7 @@
sx_slock(&allprison_lock);
drflags = PD_LIST_SLOCKED;
- error = vfs_copyopt(opts, "desc", &jfd_in, sizeof(jfd_in));
+ error = vfs_copyopt(opts, JAIL_PARAM_DESC, &jfd_in, sizeof(jfd_in));
if (error == ENOENT) {
if (flags & (JAIL_AT_DESC | JAIL_GET_DESC | JAIL_OWN_DESC)) {
vfs_opterror(opts, "missing desc");
@@ -2655,7 +2667,7 @@
} else
goto done;
- error = vfs_copyopt(opts, "lastjid", &jid, sizeof(jid));
+ error = vfs_copyopt(opts, JAIL_PARAM_LASTJID, &jid, sizeof(jid));
if (error == 0) {
TAILQ_FOREACH(pr, &allprison, pr_list) {
if (pr->pr_id > jid &&
@@ -2694,7 +2706,7 @@
} else if (error != ENOENT)
goto done;
- error = vfs_copyopt(opts, "jid", &jid, sizeof(jid));
+ error = vfs_copyopt(opts, JAIL_PARAM_JID, &jid, sizeof(jid));
if (error == 0) {
if (jid != 0) {
pr = prison_find_child(mypr, jid);
@@ -2709,7 +2721,7 @@
} else if (error != ENOENT)
goto done;
- error = vfs_getopt(opts, "name", (void **)&name, &len);
+ error = vfs_getopt(opts, JAIL_PARAM_NAME, (void **)&name, &len);
if (error == 0) {
if (len == 0 || name[len - 1] != '\0') {
error = EINVAL;
@@ -2757,79 +2769,81 @@
}
td->td_retval[0] = pr->pr_id;
if (jfd_out >= 0) {
- error = vfs_setopt(opts, "desc", &jfd_out, sizeof(jfd_out));
+ error = vfs_setopt(opts, JAIL_PARAM_DESC, &jfd_out, sizeof(jfd_out));
if (error != 0 && error != ENOENT)
goto done;
jaildesc_set_prison(jfp_out, pr);
}
- error = vfs_setopt(opts, "jid", &pr->pr_id, sizeof(pr->pr_id));
+ error = vfs_setopt(opts, JAIL_PARAM_JID, &pr->pr_id, sizeof(pr->pr_id));
if (error != 0 && error != ENOENT)
goto done;
i = (pr->pr_parent == mypr) ? 0 : pr->pr_parent->pr_id;
- error = vfs_setopt(opts, "parent", &i, sizeof(i));
+ error = vfs_setopt(opts, JAIL_PARAM_PARENT, &i, sizeof(i));
if (error != 0 && error != ENOENT)
goto done;
- error = vfs_setopts(opts, "name", prison_name(mypr, pr));
+ error = vfs_setopts(opts, JAIL_PARAM_NAME, prison_name(mypr, pr));
if (error != 0 && error != ENOENT)
goto done;
- error = vfs_setopt(opts, "cpuset.id", &pr->pr_cpuset->cs_id,
+ error = vfs_setopt(opts, JAIL_PARAM_CPUSET_ID, &pr->pr_cpuset->cs_id,
sizeof(pr->pr_cpuset->cs_id));
if (error != 0 && error != ENOENT)
goto done;
- error = vfs_setopts(opts, "path", prison_path(mypr, pr));
+ error = vfs_setopts(opts, JAIL_PARAM_PATH, prison_path(mypr, pr));
if (error != 0 && error != ENOENT)
goto done;
#ifdef INET
- error = vfs_setopt_part(opts, "ip4.addr", pr->pr_addrs[PR_INET]->pr_ip,
+ error = vfs_setopt_part(opts, JAIL_PARAM_IP4_ADDR,
+ pr->pr_addrs[PR_INET]->pr_ip,
pr->pr_addrs[PR_INET] ? pr->pr_addrs[PR_INET]->ips *
pr_families[PR_INET].size : 0 );
if (error != 0 && error != ENOENT)
goto done;
#endif
#ifdef INET6
- error = vfs_setopt_part(opts, "ip6.addr", pr->pr_addrs[PR_INET6]->pr_ip,
+ error = vfs_setopt_part(opts, JAIL_PARAM_IP6_ADDR,
+ pr->pr_addrs[PR_INET6]->pr_ip,
pr->pr_addrs[PR_INET6] ? pr->pr_addrs[PR_INET6]->ips *
pr_families[PR_INET6].size : 0 );
if (error != 0 && error != ENOENT)
goto done;
#endif
- error = vfs_setopt(opts, "securelevel", &pr->pr_securelevel,
+ error = vfs_setopt(opts, JAIL_PARAM_SECURELEVEL, &pr->pr_securelevel,
sizeof(pr->pr_securelevel));
if (error != 0 && error != ENOENT)
goto done;
- error = vfs_setopt(opts, "children.cur", &pr->pr_childcount,
+ error = vfs_setopt(opts, JAIL_PARAM_CHILDREN_CUR, &pr->pr_childcount,
sizeof(pr->pr_childcount));
if (error != 0 && error != ENOENT)
goto done;
- error = vfs_setopt(opts, "children.max", &pr->pr_childmax,
+ error = vfs_setopt(opts, JAIL_PARAM_CHILDREN_MAX, &pr->pr_childmax,
sizeof(pr->pr_childmax));
if (error != 0 && error != ENOENT)
goto done;
- error = vfs_setopts(opts, "host.hostname", pr->pr_hostname);
+ error = vfs_setopts(opts, JAIL_PARAM_HOST_HOSTNAME, pr->pr_hostname);
if (error != 0 && error != ENOENT)
goto done;
- error = vfs_setopts(opts, "host.domainname", pr->pr_domainname);
+ error = vfs_setopts(opts, JAIL_PARAM_HOST_DOMAINNAME, pr->pr_domainname);
if (error != 0 && error != ENOENT)
goto done;
- error = vfs_setopts(opts, "host.hostuuid", pr->pr_hostuuid);
+ error = vfs_setopts(opts, JAIL_PARAM_HOST_HOSTUUID, pr->pr_hostuuid);
if (error != 0 && error != ENOENT)
goto done;
#ifdef COMPAT_FREEBSD32
if (SV_PROC_FLAG(td->td_proc, SV_ILP32)) {
uint32_t hid32 = pr->pr_hostid;
- error = vfs_setopt(opts, "host.hostid", &hid32, sizeof(hid32));
+ error = vfs_setopt(opts, JAIL_PARAM_HOST_HOSTID, &hid32, sizeof(hid32));
} else
#endif
- error = vfs_setopt(opts, "host.hostid", &pr->pr_hostid,
+ error = vfs_setopt(opts, JAIL_PARAM_HOST_HOSTID, &pr->pr_hostid,
sizeof(pr->pr_hostid));
if (error != 0 && error != ENOENT)
goto done;
- error = vfs_setopt(opts, "enforce_statfs", &pr->pr_enforce_statfs,
+ error = vfs_setopt(opts, JAIL_PARAM_ENFORCE_STATFS, &pr->pr_enforce_statfs,
sizeof(pr->pr_enforce_statfs));
if (error != 0 && error != ENOENT)
goto done;
- error = vfs_setopt(opts, "devfs_ruleset", &pr->pr_devfs_rsnum,
+ error = vfs_setopt(opts, JAIL_PARAM_DEVFS_RULESET, &pr->pr_devfs_rsnum,
sizeof(pr->pr_devfs_rsnum));
if (error != 0 && error != ENOENT)
goto done;
@@ -2870,18 +2884,18 @@
goto done;
}
i = !prison_isalive(pr);
- error = vfs_setopt(opts, "dying", &i, sizeof(i));
+ error = vfs_setopt(opts, JAIL_PARAM_DYING, &i, sizeof(i));
if (error != 0 && error != ENOENT)
goto done;
i = !i;
- error = vfs_setopt(opts, "nodying", &i, sizeof(i));
+ error = vfs_setopt(opts, JAIL_PARAM_NODYING, &i, sizeof(i));
if (error != 0 && error != ENOENT)
goto done;
- error = vfs_setopt(opts, "osreldate", &pr->pr_osreldate,
+ error = vfs_setopt(opts, JAIL_PARAM_OSRELDATE, &pr->pr_osreldate,
sizeof(pr->pr_osreldate));
if (error != 0 && error != ENOENT)
goto done;
- error = vfs_setopts(opts, "osrelease", pr->pr_osrelease);
+ error = vfs_setopts(opts, JAIL_PARAM_OSRELEASE, pr->pr_osrelease);
if (error != 0 && error != ENOENT)
goto done;
@@ -2963,7 +2977,7 @@
(void)kern_close(td, jfd_out);
if (error && errmsg_pos >= 0) {
/* Write the error message back to userspace. */
- vfs_getopt(opts, "errmsg", (void **)&errmsg, &errmsg_len);
+ vfs_getopt(opts, JAIL_PARAM_ERRMSG, (void **)&errmsg, &errmsg_len);
errmsg_pos = 2 * errmsg_pos + 1;
if (errmsg_len > 0) {
if (optuio->uio_segflg == UIO_SYSSPACE)
diff --git a/sys/sys/jail.h b/sys/sys/jail.h
--- a/sys/sys/jail.h
+++ b/sys/sys/jail.h
@@ -110,6 +110,99 @@
#define JAIL_SYS_NEW 1
#define JAIL_SYS_INHERIT 2
+/*
+ * Names of the static jail parameters registered by the base kernel.
+ * Runtime-registered parameters (allow.mount.*, modules) are only
+ * discoverable via the security.jail.param sysctl tree.
+ */
+#define JAIL_PARAM_JID "jid"
+#define JAIL_PARAM_LASTJID "lastjid"
+#define JAIL_PARAM_NAME "name"
+#define JAIL_PARAM_PARENT "parent"
+#define JAIL_PARAM_PATH "path"
+#define JAIL_PARAM_DESC "desc"
+#define JAIL_PARAM_ERRMSG "errmsg"
+#define JAIL_PARAM_PERSIST "persist"
+#define JAIL_PARAM_NOPERSIST "nopersist"
+#define JAIL_PARAM_DYING "dying"
+#define JAIL_PARAM_NODYING "nodying"
+#define JAIL_PARAM_SECURELEVEL "securelevel"
+#define JAIL_PARAM_DEVFS_RULESET "devfs_ruleset"
+#define JAIL_PARAM_ENFORCE_STATFS "enforce_statfs"
+#define JAIL_PARAM_CHILDREN_CUR "children.cur"
+#define JAIL_PARAM_CHILDREN_MAX "children.max"
+#define JAIL_PARAM_CPUSET_ID "cpuset.id"
+#define JAIL_PARAM_OSRELDATE "osreldate"
+#define JAIL_PARAM_OSRELEASE "osrelease"
+
+#define JAIL_PARAM_HOST "host"
+#define JAIL_PARAM_HOST_HOSTNAME "host.hostname"
+#define JAIL_PARAM_HOST_DOMAINNAME "host.domainname"
+#define JAIL_PARAM_HOST_HOSTUUID "host.hostuuid"
+#define JAIL_PARAM_HOST_HOSTID "host.hostid"
+
+#if !defined(_KERNEL) || defined(INET)
+#define JAIL_PARAM_IP4 "ip4"
+#define JAIL_PARAM_IP4_ADDR "ip4.addr"
+#define JAIL_PARAM_IP4_SADDRSEL "ip4.saddrsel"
+#define JAIL_PARAM_IP4_NOSADDRSEL "ip4.nosaddrsel"
+#endif
+#if !defined(_KERNEL) || defined(INET6)
+#define JAIL_PARAM_IP6 "ip6"
+#define JAIL_PARAM_IP6_ADDR "ip6.addr"
+#define JAIL_PARAM_IP6_SADDRSEL "ip6.saddrsel"
+#define JAIL_PARAM_IP6_NOSADDRSEL "ip6.nosaddrsel"
+#endif
+#if !defined(_KERNEL) || defined(VIMAGE)
+#define JAIL_PARAM_VNET "vnet"
+#endif
+
+#define JAIL_PARAM_ALLOW_SET_HOSTNAME "allow.set_hostname"
+#define JAIL_PARAM_ALLOW_NOSET_HOSTNAME "allow.noset_hostname"
+#define JAIL_PARAM_ALLOW_SYSVIPC "allow.sysvipc"
+#define JAIL_PARAM_ALLOW_NOSYSVIPC "allow.nosysvipc"
+#define JAIL_PARAM_ALLOW_RAW_SOCKETS "allow.raw_sockets"
+#define JAIL_PARAM_ALLOW_NORAW_SOCKETS "allow.noraw_sockets"
+#define JAIL_PARAM_ALLOW_CHFLAGS "allow.chflags"
+#define JAIL_PARAM_ALLOW_NOCHFLAGS "allow.nochflags"
+#define JAIL_PARAM_ALLOW_MOUNT "allow.mount"
+#define JAIL_PARAM_ALLOW_NOMOUNT "allow.nomount"
+#define JAIL_PARAM_ALLOW_QUOTAS "allow.quotas"
+#define JAIL_PARAM_ALLOW_NOQUOTAS "allow.noquotas"
+#define JAIL_PARAM_ALLOW_SOCKET_AF "allow.socket_af"
+#define JAIL_PARAM_ALLOW_NOSOCKET_AF "allow.nosocket_af"
+#define JAIL_PARAM_ALLOW_MLOCK "allow.mlock"
+#define JAIL_PARAM_ALLOW_NOMLOCK "allow.nomlock"
+#define JAIL_PARAM_ALLOW_RESERVED_PORTS "allow.reserved_ports"
+#define JAIL_PARAM_ALLOW_NORESERVED_PORTS \
+ "allow.noreserved_ports"
+#define JAIL_PARAM_ALLOW_READ_MSGBUF "allow.read_msgbuf"
+#define JAIL_PARAM_ALLOW_NOREAD_MSGBUF "allow.noread_msgbuf"
+#define JAIL_PARAM_ALLOW_UNPRIV_DEBUG "allow.unprivileged_proc_debug"
+#define JAIL_PARAM_ALLOW_NOUNPRIV_DEBUG "allow.nounprivileged_proc_debug"
+#define JAIL_PARAM_ALLOW_SUSER "allow.suser"
+#define JAIL_PARAM_ALLOW_NOSUSER "allow.nosuser"
+#if !defined(_KERNEL) || defined(VIMAGE)
+#define JAIL_PARAM_ALLOW_NFSD "allow.nfsd"
+#define JAIL_PARAM_ALLOW_NONFSD "allow.nonfsd"
+#endif
+#define JAIL_PARAM_ALLOW_EXTATTR "allow.extattr"
+#define JAIL_PARAM_ALLOW_NOEXTATTR "allow.noextattr"
+#define JAIL_PARAM_ALLOW_ADJTIME "allow.adjtime"
+#define JAIL_PARAM_ALLOW_NOADJTIME "allow.noadjtime"
+#define JAIL_PARAM_ALLOW_SETTIME "allow.settime"
+#define JAIL_PARAM_ALLOW_NOSETTIME "allow.nosettime"
+#define JAIL_PARAM_ALLOW_ROUTING "allow.routing"
+#define JAIL_PARAM_ALLOW_NOROUTING "allow.norouting"
+#define JAIL_PARAM_ALLOW_UNPRIV_PARENT_TAMPER \
+ "allow.unprivileged_parent_tampering"
+#define JAIL_PARAM_ALLOW_NOUNPRIV_PARENT_TAMPER \
+ "allow.nounprivileged_parent_tampering"
+#if !defined(_KERNEL) || defined(AUDIT)
+#define JAIL_PARAM_ALLOW_SETAUDIT "allow.setaudit"
+#define JAIL_PARAM_ALLOW_NOSETAUDIT "allow.nosetaudit"
+#endif
+
#ifndef _KERNEL
struct iovec;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Sep 12, 5:57 PM (18 m, 3 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
38736216
Default Alt Text
D59572.id186408.diff (22 KB)
Attached To
Mode
D59572: jail: define well-known parameter names in sys/jail.h
Attached
Detach File
Event Timeline
Log In to Comment