``` /* clang-format off */ struct iovec iov[] = { { .iov_base = "path" , .iov_len = sizeof("path") }, { .iov_base = jail_path , .iov_len = sizeof(jail_path) }, { .iov_base = "name" , .iov_len = sizeof("name") }, { .iov_base = jail_name , .iov_len = sizeof(jail_name) }, { .iov_base = "host.hostname", .iov_len = sizeof("host.hostname") }, { .iov_base = config->agent , .iov_len = SIZEOF0(config->agent) }, { .iov_base = "ip4.addr" , .iov_len = sizeof("ip4.addr") }, { .iov_base = &inet4_addr , .iov_len = sizeof(inet4_addr) }, { .iov_base = "ip6.addr" , .iov_len = sizeof("ip6.addr") }, { .iov_base = &inet6_addr , .iov_len = sizeof(inet6_addr) }, { .iov_base = "allow.raw_sockets", .iov_len = sizeof("allow.raw_sockets") }, { .iov_base = &raw_sockets, .iov_len = sizeof(raw_sockets) }, { .iov_base = "persist" , .iov_len = sizeof("persist") }, { .iov_base = &persist , .iov_len = sizeof(persist) }, { .iov_base = "jid" , .iov_len = sizeof("jid") }, { .iov_base = &jid , .iov_len = sizeof(jid) }, { .iov_base = "osrelease" , .iov_len = sizeof("osrelease") }, { .iov_base = jail_release , .iov_len = sizeof(jail_release) }, { .iov_base = "osreldate" , .iov_len = sizeof("osreldate") }, { .iov_base = &jail_reldate , .iov_len = sizeof(jail_reldate) }, { .iov_base = "host.hostuuid", .iov_len = sizeof("host.hostuuid") }, { .iov_base = jail_uuid , .iov_len = sizeof(jail_uuid) }, { .iov_base = "errmsg" , .iov_len = sizeof("errmsg") }, { .iov_base = jail_errmsg , .iov_len = JAIL_ERRMSGLEN } }; /* clang-format on */ jid = jail_set(iov, sizeof(iov) / sizeof(*iov), JAIL_CREATE); if (jid < 0) { /* provide additional information via iovec errmsg */ if (jail_errmsg[0]) { err(1, "child: jail_set err: %s", strerror(errno)); } else { err(1, "child: jail_set msg: %s", jail_errmsg); } printf("FAILED\n"); exit(EXIT_FAILURE); } /* from outside the jail, we can use jail_getid(), inside it will fail */ jid = jail_getid(jail_name); if (jid > 0) { log_info("outside: jid=%d", jid); } else { log_error("inside: jid=%d", jid); exit(EXIT_FAILURE); } /* attach and check jail_getid() again */ if (jail_attach(jid) < 0) { err(1, "jail_attach"); } jid = jail_getid(jail_name); if (jid > 0) { log_error("outside: jid=%d", jid); exit(EXIT_FAILURE); } else { log_info("inside: jid=%d", jid); } ```