从 C 实例化 BSD 监狱

Instantiating BSD jails from C

我一直在尝试能够从应用程序创建 BSD 监狱。基于 jail(2) 的 FreeBSD 手册页,我得出:

struct jail _jail;
_jail->version = <jail version>;
_jail->path = "/some/path/";
_jail->hostname = "some-host";
_jail->jailname = "jailname";
_jail->ip4s = <ip value>;
_jail->ip6s = <ip value>;
_jail->ip4 = <ip4 struct>;
_jail->ip6 = <ip6 struct>;
int jid = jail(&jail);

因此,我想知道 ip4 和 ip6 字段的示例值是什么样的?另外,我可以使用什么工具来检查监狱以确保我正确地实例化了它们? (我传统上是 Linux 用户,所以这对我来说是未知领域)。

为了澄清字段问题,我了解 Linux 中的 in_addr 类型,我可以假设它与 FreeBSD 相同吗?

到运行 jail 中的任意命令使用jexec:

jexec jail ls
jexec jail ps

你也可以运行 shell inside jail:

jexec jail csh

甚至

jexec jail env -i TERM=$TERM /usr/bin/login -fp root