Hello,

I'd like to have jsil(2) moved to COMPAT_FREEBSD11 for the release of 12.0, which means that userspace utilities will need to be moved off of jail(2) and onto jail_set(2).

In the case of py-freebsd, the PyFB_jail function uses the old jail(2) interface. It's simple enough to change that to use jail_setv(3) instead, and add libjail. Perhaps it would be better to add a new function for a more complete interface to jail_set(2), but that's beyond the scope of just making sure the program doesn't stop working. Considering it uses Python 2.7, I don't know if there's much interest in updating its functionality.

I'm including an updated version of patch-src-jail.c, as well as a new patch-src-.libraries.def - but I don't know how to make the later patch actually get used; so all I can say right now is this ought to work if I knew how to get the patches right.

Thanks,
 Jamie
--- src/.libraries.def.orig	2018-08-16 14:17:29.351517000 -0600
+++ src/.libraries.def
@@ -1,3 +1,6 @@
 #if __FreeBSD_version >= 500101
 geom
 #endif
+#if __FreeBSD_version >= 800101
+jail
+#endif
--- src/jail.c.orig	2005-05-08 00:55:00.000000000 -0600
+++ src/jail.c
@@ -27,6 +27,7 @@
  */
 
 #include <sys/jail.h>
+#include <jail.h>
 
 static char PyFB_jail__doc__[] =
 "jail(path, hostname, ip_number):\n"
@@ -39,23 +40,23 @@
 static PyObject *
 PyFB_jail(PyObject *self, PyObject *args)
 {
-	struct jail jp;
-	char *ipaddr;
+	char *j_path, *j_hostname, *j_ipaddr;foo
+	int error;
 
-	if (!PyArg_ParseTuple(args, "sss:jail", &(jp.path),
-			      &(jp.hostname), &ipaddr))
+	if (!PyArg_ParseTuple(args, "sss:jail", &j_path,
+			      &j_hostname, &j_ipaddr))
 		return NULL;
 
-	jp.version   = 0;
-	jp.ip_number = inet_addr(ipaddr);
+	error = jail_setv(JAIL_CREATE | JAIL_ATTACH,
+		"path", j_path,
+		"host.hostname", j_hostname,
+		"ip4.addr", j_ipaddr,
+		NULL);
 
-	if (jp.ip_number == INADDR_NONE) {
-		PyErr_SetString(PyExc_ValueError, "malformed internet address");
-		return NULL;
-	}
-
-	if (jail(&jp) == -1)
+	if (error == -1) {
+		PyErr_SetString(PyExc_ValueError, jail_errmsg);
 		return OSERROR();
+	}
 
 	Py_RETURN_NONE;
 }
_______________________________________________
freebsd-python@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-python
To unsubscribe, send any mail to "freebsd-python-unsubscr...@freebsd.org"

Reply via email to