Module Name:    src
Committed By:   mlelstv
Date:           Sun Nov 25 17:58:29 UTC 2018

Modified Files:
        src/sys/compat/netbsd32: netbsd32.h netbsd32_conv.h netbsd32_ioctl.c
            netbsd32_ioctl.h

Log Message:
Restore netbsd32 compat code for new NPF ABI.


To generate a diff of this commit:
cvs rdiff -u -r1.119 -r1.120 src/sys/compat/netbsd32/netbsd32.h
cvs rdiff -u -r1.35 -r1.36 src/sys/compat/netbsd32/netbsd32_conv.h
cvs rdiff -u -r1.99 -r1.100 src/sys/compat/netbsd32/netbsd32_ioctl.c
cvs rdiff -u -r1.65 -r1.66 src/sys/compat/netbsd32/netbsd32_ioctl.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/compat/netbsd32/netbsd32.h
diff -u src/sys/compat/netbsd32/netbsd32.h:1.119 src/sys/compat/netbsd32/netbsd32.h:1.120
--- src/sys/compat/netbsd32/netbsd32.h:1.119	Sat Aug 11 03:41:06 2018
+++ src/sys/compat/netbsd32/netbsd32.h	Sun Nov 25 17:58:29 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32.h,v 1.119 2018/08/11 03:41:06 mrg Exp $	*/
+/*	$NetBSD: netbsd32.h,v 1.120 2018/11/25 17:58:29 mlelstv Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001, 2008, 2015 Matthew R. Green
@@ -912,6 +912,13 @@ struct netbsd32_plistref {
 	netbsd32_size_t pref_len;
 };
 
+/* <nv.h> */
+typedef struct {
+	netbsd32_pointer_t buf;
+	netbsd32_size_t    len;
+	int                flags;
+} netbsd32_nvlist_ref_t;
+
 /* from <ufs/lfs/lfs.h> */
 typedef netbsd32_pointer_t netbsd32_block_infop_t;  /* XXX broken */
 

Index: src/sys/compat/netbsd32/netbsd32_conv.h
diff -u src/sys/compat/netbsd32/netbsd32_conv.h:1.35 src/sys/compat/netbsd32/netbsd32_conv.h:1.36
--- src/sys/compat/netbsd32/netbsd32_conv.h:1.35	Thu May 10 02:36:07 2018
+++ src/sys/compat/netbsd32/netbsd32_conv.h	Sun Nov 25 17:58:29 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_conv.h,v 1.35 2018/05/10 02:36:07 christos Exp $	*/
+/*	$NetBSD: netbsd32_conv.h,v 1.36 2018/11/25 17:58:29 mlelstv Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001 Matthew R. Green
@@ -48,6 +48,8 @@
 
 #include <prop/plistref.h>
 
+#include <nv.h>
+
 #include <compat/netbsd32/netbsd32.h>
 
 /* converters for structures that we need */
@@ -796,6 +798,34 @@ netbsd32_copyout_plistref(netbsd32_point
 	    sizeof(struct netbsd32_plistref));
 }
 
+static __inline int
+netbsd32_copyin_nvlist_ref_t(netbsd32_pointer_t n32p, nvlist_ref_t *p)
+{
+	netbsd32_nvlist_ref_t n32nv;
+	int error;
+
+	error = copyin(NETBSD32PTR64(n32p), &n32nv,
+	    sizeof(netbsd32_nvlist_ref_t));
+	if (error)
+		return error;
+	p->buf = NETBSD32PTR64(n32nv.buf);
+	p->len = n32nv.len;
+	p->flags = n32nv.flags;
+	return 0;
+}
+
+static __inline int
+netbsd32_copyout_nvlist_ref_t(netbsd32_pointer_t n32p, nvlist_ref_t *p)
+{
+	netbsd32_nvlist_ref_t n32nv;
+
+	NETBSD32PTR32(n32nv.buf, p->buf);
+	n32nv.len = p->len;
+	n32nv.flags = p->flags;
+	return copyout(&n32nv, NETBSD32PTR64(n32p),
+	    sizeof(netbsd32_nvlist_ref_t));
+}
+
 static __inline void
 netbsd32_to_mq_attr(const struct netbsd32_mq_attr *a32,
     struct mq_attr *attr)

Index: src/sys/compat/netbsd32/netbsd32_ioctl.c
diff -u src/sys/compat/netbsd32/netbsd32_ioctl.c:1.99 src/sys/compat/netbsd32/netbsd32_ioctl.c:1.100
--- src/sys/compat/netbsd32/netbsd32_ioctl.c:1.99	Fri Oct 12 05:06:05 2018
+++ src/sys/compat/netbsd32/netbsd32_ioctl.c	Sun Nov 25 17:58:29 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_ioctl.c,v 1.99 2018/10/12 05:06:05 rin Exp $	*/
+/*	$NetBSD: netbsd32_ioctl.c,v 1.100 2018/11/25 17:58:29 mlelstv Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001 Matthew R. Green
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_ioctl.c,v 1.99 2018/10/12 05:06:05 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_ioctl.c,v 1.100 2018/11/25 17:58:29 mlelstv Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_ntp.h"
@@ -287,20 +287,27 @@ netbsd32_to_plistref(struct netbsd32_pli
 }
 
 static inline void
+netbsd32_to_nvlist_ref_t(netbsd32_nvlist_ref_t *s32p, nvlist_ref_t *p, u_long cmd)
+{
+
+	p->buf = NETBSD32PTR64(s32p->buf);
+	p->len = s32p->len;
+	p->flags = s32p->flags;
+}
+
+static inline void
 netbsd32_to_u_long(netbsd32_u_long *s32p, u_long *p, u_long cmd)
 {
 
 	*p = (u_long)*s32p;
 }
 
-#ifdef notdef
 static inline void
 netbsd32_to_voidp(netbsd32_voidp *s32p, voidp *p, u_long cmd)
 {
 
 	*p = (void *)NETBSD32PTR64(*s32p);
 }
-#endif
 
 static inline void
 netbsd32_to_wdog_conf(struct netbsd32_wdog_conf *s32p, struct wdog_conf *p, u_long cmd)
@@ -311,6 +318,28 @@ netbsd32_to_wdog_conf(struct netbsd32_wd
 }
 
 static inline void
+netbsd32_to_npf_ioctl_table(
+    const struct netbsd32_npf_ioctl_table *s32p,
+    struct npf_ioctl_table *p,
+    u_long cmd)
+{
+
+       p->nct_cmd = s32p->nct_cmd;
+       p->nct_name = NETBSD32PTR64(s32p->nct_name);
+       switch (s32p->nct_cmd) {
+       case NPF_CMD_TABLE_LOOKUP:
+       case NPF_CMD_TABLE_ADD:
+       case NPF_CMD_TABLE_REMOVE:
+               p->nct_data.ent = s32p->nct_data.ent;
+               break;
+       case NPF_CMD_TABLE_LIST:
+               p->nct_data.buf.buf = NETBSD32PTR64(s32p->nct_data.buf.buf);
+               p->nct_data.buf.len = s32p->nct_data.buf.len;
+               break;
+       }
+}
+
+static inline void
 netbsd32_to_bpf_program(struct netbsd32_bpf_program *s32p, struct bpf_program *p, u_long cmd)
 {
 
@@ -740,6 +769,15 @@ netbsd32_from_plistref(struct plistref *
 }
 
 static inline void
+netbsd32_from_nvlist_ref_t(nvlist_ref_t *p, netbsd32_nvlist_ref_t *s32p, u_long cmd)
+{
+
+	NETBSD32PTR32(s32p->buf, p->buf);
+	s32p->len = p->len;
+	s32p->flags = p->flags;
+}
+
+static inline void
 netbsd32_from_wdog_conf(struct wdog_conf *p, struct netbsd32_wdog_conf *s32p, u_long cmd)
 {
 
@@ -857,14 +895,12 @@ netbsd32_from_u_long(u_long *p, netbsd32
 	*s32p = (netbsd32_u_long)*p;
 }
 
-#ifdef notdef
 static inline void
 netbsd32_from_voidp(voidp *p, netbsd32_voidp *s32p, u_long cmd)
 {
 
 	NETBSD32PTR32(*s32p, *p);
 }
-#endif
 
 static inline void
 netbsd32_from_clockctl_settimeofday(
@@ -935,6 +971,28 @@ netbsd32_from_ksyms_gvalue(
 }
 
 static inline void
+netbsd32_from_npf_ioctl_table(
+    const struct npf_ioctl_table *p,
+    struct netbsd32_npf_ioctl_table *s32p,
+    u_long cmd)
+{
+
+       s32p->nct_cmd = p->nct_cmd;
+       NETBSD32PTR32(s32p->nct_name, p->nct_name);
+       switch (p->nct_cmd) {
+       case NPF_CMD_TABLE_LOOKUP:
+       case NPF_CMD_TABLE_ADD:
+       case NPF_CMD_TABLE_REMOVE:
+               s32p->nct_data.ent = p->nct_data.ent;
+               break;
+       case NPF_CMD_TABLE_LIST:
+               NETBSD32PTR32(s32p->nct_data.buf.buf, p->nct_data.buf.buf);
+               s32p->nct_data.buf.len = p->nct_data.buf.len;
+               break;
+       }
+}
+
+static inline void
 netbsd32_from_devlistargs(
     const struct devlistargs *p,
     struct netbsd32_devlistargs *s32p,
@@ -1422,6 +1480,19 @@ netbsd32_ioctl(struct lwp *l, const stru
 	case KIOCGVALUE32:
 		IOCTL_STRUCT_CONV_TO(KIOCGVALUE, ksyms_gvalue);
 
+        case IOC_NPF_LOAD32:
+                IOCTL_CONV_TO(IOC_NPF_LOAD, nvlist_ref_t);
+        case IOC_NPF_TABLE32:
+                IOCTL_STRUCT_CONV_TO(IOC_NPF_TABLE, npf_ioctl_table);
+        case IOC_NPF_STATS32:
+                IOCTL_CONV_TO(IOC_NPF_STATS, voidp);
+        case IOC_NPF_SAVE32:
+                IOCTL_CONV_TO(IOC_NPF_SAVE, nvlist_ref_t);
+        case IOC_NPF_RULE32:
+                IOCTL_CONV_TO(IOC_NPF_RULE, nvlist_ref_t);
+        case IOC_NPF_CONN_LOOKUP32:
+                IOCTL_CONV_TO(IOC_NPF_CONN_LOOKUP, nvlist_ref_t);
+
 	case DRVRESCANBUS32:
 		IOCTL_STRUCT_CONV_TO(DRVRESCANBUS, devrescanargs);
 	case DRVLISTDEV32:

Index: src/sys/compat/netbsd32/netbsd32_ioctl.h
diff -u src/sys/compat/netbsd32/netbsd32_ioctl.h:1.65 src/sys/compat/netbsd32/netbsd32_ioctl.h:1.66
--- src/sys/compat/netbsd32/netbsd32_ioctl.h:1.65	Thu Oct 11 15:23:22 2018
+++ src/sys/compat/netbsd32/netbsd32_ioctl.h	Sun Nov 25 17:58:29 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_ioctl.h,v 1.65 2018/10/11 15:23:22 christos Exp $	*/
+/*	$NetBSD: netbsd32_ioctl.h,v 1.66 2018/11/25 17:58:29 mlelstv Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001 Matthew R. Green
@@ -561,6 +561,29 @@ struct netbsd32_ksyms_gvalue {
 #define	KIOCGSYMBOL32	_IOWR('l', 5, struct netbsd32_ksyms_gsymbol)
 #endif /* KIOCGSYMBOL */
 
+#include <net/npf/npf.h>
+
+typedef struct netbsd32_npf_ioctl_buf {
+	netbsd32_voidp		buf;
+	netbsd32_size_t		len;
+} netbsd32_npf_ioctl_buf_t;
+
+typedef struct netbsd32_npf_ioctl_table {
+        int			nct_cmd;  
+        netbsd32_charp		nct_name;
+        union {
+		npf_ioctl_ent_t ent;
+		netbsd32_npf_ioctl_buf_t buf;
+        } nct_data;
+} netbsd32_npf_ioctl_table_t;
+
+#define IOC_NPF_LOAD32		_IOWR('N', 102, netbsd32_nvlist_ref_t)
+#define IOC_NPF_TABLE32		_IOW('N', 103, struct netbsd32_npf_ioctl_table)
+#define IOC_NPF_STATS32		_IOW('N', 104, netbsd32_voidp)
+#define IOC_NPF_SAVE32		_IOR('N', 105, netbsd32_nvlist_ref_t)
+#define IOC_NPF_RULE32		_IOWR('N', 107, netbsd32_nvlist_ref_t)
+#define IOC_NPF_CONN_LOOKUP32	_IOWR('N', 108, netbsd32_nvlist_ref_t)
+
 /* From sys/drvctlio.h */
 struct netbsd32_devlistargs {
 	char			l_devname[16];

Reply via email to