Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 Aug 2018 14:39:03 -0600
From:      James Gritton <jamie@freebsd.org>
To:        python@FreeBSD.org
Subject:   devel/py-freebsd and deprecation of jail(2)
Message-ID:  <40cbb5b104f2c563f92a5ff158ed920c@freebsd.org>

index | next in thread | raw e-mail

[-- Attachment #1 --]
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
[-- Attachment #2 --]
--- 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

[-- Attachment #3 --]
--- 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;
 }
help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?40cbb5b104f2c563f92a5ff158ed920c>