PERFORCE change 96166 for review

Marcel Moolenaar marcel at FreeBSD.org
Wed Apr 26 21:41:46 UTC 2006


http://perforce.freebsd.org/chv.cgi?CH=96166

Change 96166 by marcel at marcel_nfs on 2006/04/26 21:41:38

	IFC @96165

Affected files ...

.. //depot/projects/uart/amd64/amd64/pmap.c#34 integrate
.. //depot/projects/uart/dev/ath/if_ath.c#28 integrate
.. //depot/projects/uart/dev/atkbdc/atkbd.c#2 integrate
.. //depot/projects/uart/dev/atkbdc/atkbdc.c#3 integrate
.. //depot/projects/uart/dev/atkbdc/atkbdc_isa.c#2 integrate
.. //depot/projects/uart/dev/bce/if_bcereg.h#3 integrate
.. //depot/projects/uart/dev/ppc/ppc_puc.c#6 integrate
.. //depot/projects/uart/dev/sk/if_sk.c#1 branch
.. //depot/projects/uart/dev/sk/if_skreg.h#1 branch
.. //depot/projects/uart/dev/sk/xmaciireg.h#1 branch
.. //depot/projects/uart/dev/sk/yukonreg.h#1 branch
.. //depot/projects/uart/dev/uart/uart_bus_pci.c#17 integrate
.. //depot/projects/uart/kern/sched_4bsd.c#10 integrate
.. //depot/projects/uart/net80211/ieee80211.c#13 integrate
.. //depot/projects/uart/sys/mac_policy.h#10 integrate

Differences ...

==== //depot/projects/uart/amd64/amd64/pmap.c#34 (text+ko) ====

@@ -77,7 +77,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.549 2006/04/21 04:50:18 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.550 2006/04/26 21:34:07 peter Exp $");
 
 /*
  *	Manages physical address maps.
@@ -1449,6 +1449,9 @@
 
 static uint64_t pc_freemask[3] = { PC_FREE0, PC_FREE1, PC_FREE2 };
 
+SYSCTL_INT(_vm_pmap, OID_AUTO, pv_entry_count, CTLFLAG_RD, &pv_entry_count, 0,
+	"Current number of pv entries");
+
 #ifdef PV_STATS
 static int pc_chunk_count, pc_chunk_allocs, pc_chunk_frees, pc_chunk_tryfail;
 
@@ -1464,8 +1467,6 @@
 static long pv_entry_frees, pv_entry_allocs;
 static int pv_entry_spare;
 
-SYSCTL_INT(_vm_pmap, OID_AUTO, pv_entry_count, CTLFLAG_RD, &pv_entry_count, 0,
-	"Current number of pv entries");
 SYSCTL_LONG(_vm_pmap, OID_AUTO, pv_entry_frees, CTLFLAG_RD, &pv_entry_frees, 0,
 	"Current number of pv entry frees");
 SYSCTL_LONG(_vm_pmap, OID_AUTO, pv_entry_allocs, CTLFLAG_RD, &pv_entry_allocs, 0,

==== //depot/projects/uart/dev/ath/if_ath.c#28 (text+ko) ====

@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.141 2006/04/25 22:52:28 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.142 2006/04/26 16:02:36 sam Exp $");
 
 /*
  * Driver for the Atheros Wireless LAN controller.
@@ -4586,6 +4586,9 @@
 	HAL_BOOL outdoor, HAL_BOOL xchanmode)
 {
 #define	COMPAT	(CHANNEL_ALL_NOTURBO|CHANNEL_PASSIVE)
+#define IS_CHAN_PUBLIC_SAFETY(_c) \
+	(((_c)->channelFlags & CHANNEL_5GHZ) && \
+	 ((_c)->channel > 4940 && (_c)->channel < 4990))
 	struct ieee80211com *ic = &sc->sc_ic;
 	struct ifnet *ifp = sc->sc_ifp;
 	struct ath_hal *ah = sc->sc_ah;
@@ -4618,7 +4621,16 @@
 		HAL_CHANNEL *c = &chans[i];
 		u_int16_t flags;
 
-		ix = ath_hal_mhz2ieee(ah, c->channel, c->channelFlags);
+		/*
+		 * XXX we're not ready to handle the ieee number mapping
+		 * for public safety channels as they overlap with any
+		 * 2GHz channels; for now use the non-public safety
+		 * numbering which is non-overlapping.
+		 */
+		if (IS_CHAN_PUBLIC_SAFETY(c))
+			ix = (c->channel - 4000) / 5;
+		else
+			ix = ath_hal_mhz2ieee(ah, c->channel, c->channelFlags);
 		if (ix > IEEE80211_CHAN_MAX) {
 			if_printf(ifp, "bad hal channel %d (%u/%x) ignored\n",
 				ix, c->channel, c->channelFlags);
@@ -4651,6 +4663,7 @@
 	}
 	free(chans, M_TEMP);
 	return 0;
+#undef IS_CHAN_PUBLIC_SAFETY
 #undef COMPAT
 }
 

==== //depot/projects/uart/dev/atkbdc/atkbd.c#2 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/atkbdc/atkbd.c,v 1.47 2005/06/10 20:56:37 marius Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/atkbdc/atkbd.c,v 1.48 2006/04/26 06:05:16 sobomax Exp $");
 
 #include "opt_kbd.h"
 #include "opt_atkbd.h"
@@ -282,11 +282,12 @@
 	int arg[2];
 	int i;
 
-	/* probe the keyboard controller */
-	atkbdc_configure();
-
-	/* if the driver is disabled, unregister the keyboard if any */
-	if (resource_disabled("atkbd", ATKBD_DEFAULT)) {
+	/*
+	 * Probe the keyboard controller, if not present or if the driver
+	 * is disabled, unregister the keyboard if any.
+	 */
+	if (atkbdc_configure() != 0 ||
+	    resource_disabled("atkbd", ATKBD_DEFAULT)) {
 		i = kbd_find_keyboard(ATKBD_DRIVER_NAME, ATKBD_DEFAULT);
 		if (i >= 0) {
 			kbd = kbd_get_keyboard(i);

==== //depot/projects/uart/dev/atkbdc/atkbdc.c#3 (text+ko) ====

@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/atkbdc/atkbdc.c,v 1.22 2005/12/04 02:12:40 ru Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/atkbdc/atkbdc.c,v 1.23 2006/04/26 06:05:16 sobomax Exp $");
 
 #include "opt_kbd.h"
 
@@ -153,6 +153,10 @@
 	bus_space_tag_t tag;
 	bus_space_handle_t h0;
 	bus_space_handle_t h1;
+#if defined(__i386__)
+	volatile int i;
+	register_t flags;
+#endif
 #ifdef __sparc64__
 	char name[32];
 	phandle_t chosen, node;
@@ -219,6 +223,26 @@
 	h1 = (bus_space_handle_t)port1;
 #endif
 #endif
+
+#if defined(__i386__)
+	/*
+	 * Check if we really have AT keyboard controller. Poll status
+	 * register until we get "all clear" indication. If no such
+	 * indication comes, it probably means that there is no AT
+	 * keyboard controller present. Give up in such case. Check relies
+	 * on the fact that reading from non-existing in/out port returns
+	 * 0xff on i386. May or may not be true on other platforms.
+	 */
+	flags = intr_disable();
+	for (i = 0; i != 65535; i++) {
+		if ((bus_space_read_1(tag, h1, 0) & 0x2) == 0)
+			break;
+	}
+	intr_restore(flags);
+	if (i == 65535)
+                return ENXIO;
+#endif
+
 	return atkbdc_setup(atkbdc_softc[0], tag, h0, h1);
 }
 

==== //depot/projects/uart/dev/atkbdc/atkbdc_isa.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/atkbdc/atkbdc_isa.c,v 1.33 2005/06/10 20:56:37 marius Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/atkbdc/atkbdc_isa.c,v 1.34 2006/04/26 06:05:16 sobomax Exp $");
 
 #include "opt_kbd.h"
 
@@ -93,6 +93,12 @@
 	u_long		count;
 	int		error;
 	int		rid;
+#if defined(__i386__)
+	bus_space_tag_t	tag;
+	bus_space_handle_t ioh1;
+	volatile int	i;
+	register_t	flags;
+#endif
 
 	/* check PnP IDs */
 	if (ISA_PNP_PROBE(device_get_parent(dev), dev, atkbdc_ids) == ENXIO)
@@ -127,6 +133,31 @@
 		bus_release_resource(dev, SYS_RES_IOPORT, 0, port0);
 		return ENXIO;
 	}
+
+#if defined(__i386__)
+	/*
+	 * Check if we really have AT keyboard controller. Poll status
+	 * register until we get "all clear" indication. If no such
+	 * indication comes, it probably means that there is no AT
+	 * keyboard controller present. Give up in such case. Check relies
+	 * on the fact that reading from non-existing in/out port returns
+	 * 0xff on i386. May or may not be true on other platforms.
+	 */
+	tag = rman_get_bustag(port0);
+	ioh1 = rman_get_bushandle(port1);
+	flags = intr_disable();
+	for (i = 0; i != 65535; i++) {
+		if ((bus_space_read_1(tag, ioh1, 0) & 0x2) == 0)
+			break;
+	}
+	intr_restore(flags);
+	if (i == 65535) {
+		bus_release_resource(dev, SYS_RES_IOPORT, 0, port0);
+		bus_release_resource(dev, SYS_RES_IOPORT, 1, port1);
+		return ENXIO;
+	}
+#endif
+
 	device_verbose(dev);
 
 	error = atkbdc_probe_unit(device_get_unit(dev), port0, port1);

==== //depot/projects/uart/dev/bce/if_bcereg.h#3 (text) ====

@@ -26,7 +26,7 @@
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
  * THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/bce/if_bcereg.h,v 1.2 2006/04/25 19:18:48 jhb Exp $
+ * $FreeBSD: src/sys/dev/bce/if_bcereg.h,v 1.3 2006/04/26 16:33:58 ps Exp $
  */
 
 #ifndef	_BCE_H_DEFINED
@@ -709,13 +709,11 @@
 #define PCI_SETBIT(dev, reg, x, s)	pci_write_config(dev, reg, (pci_read_config(dev, reg, s) | (x)), s)
 #define PCI_CLRBIT(dev, reg, x, s)	pci_write_config(dev, reg, (pci_read_config(dev, reg, s) & ~(x)), s)
 
+#define BCE_STATS(x)			(u_long) stats->stat_ ## x ## _lo
 #if (BUS_SPACE_MAXADDR > 0xFFFFFFFF)
-#define BCE_STATS(x)			((u_long) stats->stat_ ## x ## _hi << 32) + \
-					    (u_long) stats->stat_ ## x ## _lo
 #define BCE_ADDR_LO(y)			((u64) (y) & 0xFFFFFFFF)
 #define BCE_ADDR_HI(y)			((u64) (y) >> 32)
 #else
-#define BCE_STATS(x)			(u_long) stats->stat_ ## x ## _lo
 #define BCE_ADDR_LO(y)			((u32)y)
 #define BCE_ADDR_HI(y)			(0)
 #endif

==== //depot/projects/uart/dev/ppc/ppc_puc.c#6 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ppc/ppc_puc.c,v 1.3 2006/04/24 23:31:51 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ppc/ppc_puc.c,v 1.4 2006/04/26 21:25:13 marcel Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>

==== //depot/projects/uart/dev/uart/uart_bus_pci.c#17 (text+ko) ====

@@ -23,7 +23,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/uart/uart_bus_pci.c,v 1.6 2005/10/26 01:49:11 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/uart/uart_bus_pci.c,v 1.7 2006/04/26 21:31:31 marcel Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -69,27 +69,27 @@
 };
 
 static struct pci_id pci_ns8250_ids[] = {
-{ 0x1028, 0x0008, 0xffff, 0, "Dell - Remote Access Card III", 0x14, 128 * DEFAULT_RCLK },
-{ 0x1028, 0x0012, 0xffff, 0, "Dell - Remote Access Card 4 Daughter Card Virtual UART", 0x14, 128 * DEFAULT_RCLK },
-{ 0x1033, 0x0074, 0x1033, 0x8014, "NEC - RCV56ACF 56k Voice Modem", 0x10 },
-{ 0x1033, 0x007d, 0x1033, 0x8012, "NEC - RS232C", 0x10 },
-{ 0x11c1, 0x0480, 0xffff, 0, "Agere Systems - Venus Modem (V90, 56KFlex)", 0x14 },
-{ 0x115d, 0x0103, 0xffff, 0, "Xircom - Cardbus Ethernet + 56k Modem", 0x10 },
-{ 0x12b9, 0x1008, 0xffff, 0, "3Com - 56K FaxModem Model 5610", 0x10 },
-{ 0x131f, 0x1000, 0xffff, 0, "Siig - CyberSerial (1-port) 16550", 0x18 },
-{ 0x131f, 0x1001, 0xffff, 0, "Siig - CyberSerial (1-port) 16650", 0x18 },
-{ 0x131f, 0x1002, 0xffff, 0, "Siig - CyberSerial (1-port) 16850", 0x18 },
-{ 0x131f, 0x2000, 0xffff, 0, "Siig - CyberSerial (1-port) 16550", 0x10 },
-{ 0x131f, 0x2001, 0xffff, 0, "Siig - CyberSerial (1-port) 16650", 0x10 },
-{ 0x131f, 0x2002, 0xffff, 0, "Siig - CyberSerial (1-port) 16850", 0x10 },
-{ 0x135c, 0x0190, 0xffff, 0, "Quatech - SSCLP-100", 0x18 },
-{ 0x135c, 0x01c0, 0xffff, 0, "Quatech - SSCLP-200/300", 0x18 },
-{ 0x135e, 0x7101, 0xffff, 0, "Sealevel Systems - Single Port RS-232/422/485/530", 0x18 },
-{ 0x1407, 0x0110, 0xffff, 0, "Lava Computer mfg - DSerial-PCI Port A", 0x10 },
-{ 0x1407, 0x0111, 0xffff, 0, "Lava Computer mfg - DSerial-PCI Port B", 0x10 },
-{ 0x1415, 0x950b, 0xffff, 0, "Oxford Semiconductor - OXCB950 Cardbus 16950 UART", 0x10, 16384000 },
-{ 0x151f, 0x0000, 0xffff, 0, "TOPIC SEMICONDUCTOR - TP560 Data/Fax/Voice 56k modem", 0x10 },
-{ 0xdeaf, 0x9051, 0xffff, 0, "Middle Digital - PC Weasel Serial Port", 0x10 },
+{ 0x1028, 0x0008, 0xffff, 0, "Dell Remote Access Card III", 0x14, 128 * DEFAULT_RCLK },
+{ 0x1028, 0x0012, 0xffff, 0, "Dell Remote Access Card 4 Daughter Card Virtual UART", 0x14, 128 * DEFAULT_RCLK },
+{ 0x1033, 0x0074, 0x1033, 0x8014, "NEC RCV56ACF 56k Voice Modem", 0x10 },
+{ 0x1033, 0x007d, 0x1033, 0x8012, "NEC RS232C", 0x10 },
+{ 0x11c1, 0x0480, 0xffff, 0, "Agere Systems Venus Modem (V90, 56KFlex)", 0x14 },
+{ 0x115d, 0x0103, 0xffff, 0, "Xircom Cardbus Ethernet + 56k Modem", 0x10 },
+{ 0x12b9, 0x1008, 0xffff, 0, "3Com 56K FaxModem Model 5610", 0x10 },
+{ 0x131f, 0x1000, 0xffff, 0, "Siig CyberSerial (1-port) 16550", 0x18 },
+{ 0x131f, 0x1001, 0xffff, 0, "Siig CyberSerial (1-port) 16650", 0x18 },
+{ 0x131f, 0x1002, 0xffff, 0, "Siig CyberSerial (1-port) 16850", 0x18 },
+{ 0x131f, 0x2000, 0xffff, 0, "Siig CyberSerial (1-port) 16550", 0x10 },
+{ 0x131f, 0x2001, 0xffff, 0, "Siig CyberSerial (1-port) 16650", 0x10 },
+{ 0x131f, 0x2002, 0xffff, 0, "Siig CyberSerial (1-port) 16850", 0x10 },
+{ 0x135c, 0x0190, 0xffff, 0, "Quatech SSCLP-100", 0x18 },
+{ 0x135c, 0x01c0, 0xffff, 0, "Quatech SSCLP-200/300", 0x18 },
+{ 0x135e, 0x7101, 0xffff, 0, "Sealevel Systems Single Port RS-232/422/485/530", 0x18 },
+{ 0x1407, 0x0110, 0xffff, 0, "Lava Computer mfg DSerial-PCI Port A", 0x10 },
+{ 0x1407, 0x0111, 0xffff, 0, "Lava Computer mfg DSerial-PCI Port B", 0x10 },
+{ 0x1415, 0x950b, 0xffff, 0, "Oxford Semiconductor OXCB950 Cardbus 16950 UART", 0x10, 16384000 },
+{ 0x151f, 0x0000, 0xffff, 0, "TOPIC Semiconductor TP560 Data/Fax/Voice 56k modem", 0x10 },
+{ 0xdeaf, 0x9051, 0xffff, 0, "Middle Digital PC Weasel Serial Port", 0x10 },
 { 0xffff, 0, 0xffff, 0, NULL, 0, 0}
 };
 

==== //depot/projects/uart/kern/sched_4bsd.c#10 (text+ko) ====

@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/sched_4bsd.c,v 1.78 2006/04/17 18:20:37 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/sched_4bsd.c,v 1.79 2006/04/26 19:42:38 jmg Exp $");
 
 #include "opt_hwpmc_hooks.h"
 
@@ -406,7 +406,7 @@
 
 /* decay 95% of `ke_pctcpu' in 60 seconds; see CCPU_SHIFT before changing */
 static fixpt_t	ccpu = 0.95122942450071400909 * FSCALE;	/* exp(-1/20) */
-SYSCTL_INT(_kern, OID_AUTO, ccpu, CTLFLAG_RD, &ccpu, 0, "");
+SYSCTL_INT(_kern_sched, OID_AUTO, ccpu, CTLFLAG_RD, &ccpu, 0, "");
 
 /*
  * If `ccpu' is not equal to `exp(-1/20)' and you still want to use the

==== //depot/projects/uart/net80211/ieee80211.c#13 (text+ko) ====

@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/net80211/ieee80211.c,v 1.28 2006/02/14 17:48:56 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/net80211/ieee80211.c,v 1.29 2006/04/26 16:00:37 sam Exp $");
 
 /*
  * IEEE 802.11 generic handler
@@ -236,7 +236,6 @@
 int
 ieee80211_mhz2ieee(u_int freq, u_int flags)
 {
-#define IS_CHAN_IN_PUBLIC_SAFETY_BAND(_c) ((_c) > 4940 && (_c) < 4990)
 	if (flags & IEEE80211_CHAN_2GHZ) {	/* 2GHz band */
 		if (freq == 2484)
 			return 14;
@@ -245,9 +244,6 @@
 		else
 			return 15 + ((freq - 2512) / 20);
 	} else if (flags & IEEE80211_CHAN_5GHZ) {	/* 5Ghz band */
-		if (IS_CHAN_IN_PUBLIC_SAFETY_BAND(freq))
-			return ((freq * 10) +
-				(((freq % 5) == 2) ? 5 : 0) - 49400) / 5;
 		if (freq <= 5000)
 			return (freq - 4000) / 5;
 		else
@@ -258,17 +254,13 @@
 		if (freq < 2484)
 			return ((int) freq - 2407) / 5;
 		if (freq < 5000) {
-			if (IS_CHAN_IN_PUBLIC_SAFETY_BAND(freq))
-				return ((freq * 10) +
-					(((freq % 5) == 2) ? 5 : 0) - 49400)/5;
-			else if (freq > 4900)
+			if (freq > 4900)
 				return (freq - 4000) / 5;
 			else
 				return 15 + ((freq - 2512) / 20);
 		}
 		return (freq - 5000) / 5;
 	}
-#undef IS_CHAN_IN_PUBLIC_SAFETY_BAND
 }
 
 /*

==== //depot/projects/uart/sys/mac_policy.h#10 (text+ko) ====

@@ -1,7 +1,7 @@
 /*-
  * Copyright (c) 1999-2002 Robert N. M. Watson
  * Copyright (c) 2001-2005 Networks Associates Technology, Inc.
- * Copyright (c) 2005 SPARTA, Inc.
+ * Copyright (c) 2005-2006 SPARTA, Inc.
  * All rights reserved.
  *
  * This software was developed by Robert Watson for the TrustedBSD Project.
@@ -35,7 +35,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/sys/mac_policy.h,v 1.71 2006/04/06 23:33:11 csjp Exp $
+ * $FreeBSD: src/sys/sys/mac_policy.h,v 1.72 2006/04/26 14:18:55 rwatson Exp $
  */
 /*
  * Kernel interface for MAC policy modules.
@@ -83,523 +83,802 @@
 struct uio;
 struct vattr;
 struct vnode;
-struct mac_policy_ops {
-	/*
-	 * Policy module operations.
-	 */
-	void	(*mpo_destroy)(struct mac_policy_conf *mpc);
-	void	(*mpo_init)(struct mac_policy_conf *mpc);
+
+/*
+ * Policy module operations.
+ */
+typedef void	(*mpo_destroy_t)(struct mac_policy_conf *mpc);
+typedef void	(*mpo_init_t)(struct mac_policy_conf *mpc);
+
+/*
+ * General policy-directed security system call so that policies may
+ * implement new services without reserving explicit system call
+ * numbers.
+ */
+typedef int	(*mpo_syscall_t)(struct thread *td, int call, void *arg);
 
-	/*
-	 * General policy-directed security system call so that policies may
-	 * implement new services without reserving explicit system call
-	 * numbers.
-	 */
-	int	(*mpo_syscall)(struct thread *td, int call, void *arg);
+/*
+ * Place-holder function pointers for ABI-compatibility purposes.
+ */
+typedef void	(*mpo_placeholder_t)(void);
 
-	/*
-	 * Label operations.  Initialize label storage, destroy label
-	 * storage, recycle for re-use without init/destroy, copy a label to
-	 * initialized storage, and externalize/internalize from/to
-	 * initialized storage.
-	 */
-	void	(*mpo_init_bpfdesc_label)(struct label *label);
-	void	(*mpo_init_cred_label)(struct label *label);
-	void	(*mpo_init_devfsdirent_label)(struct label *label);
-	void	(*_mpo_placeholder0)(void);
-	void	(*mpo_init_ifnet_label)(struct label *label);
-	int	(*mpo_init_inpcb_label)(struct label *label, int flag);
-	void	(*mpo_init_sysv_msgmsg_label)(struct label *label);
-	void	(*mpo_init_sysv_msgqueue_label)(struct label *label);
-	void	(*mpo_init_sysv_sem_label)(struct label *label);
-	void	(*mpo_init_sysv_shm_label)(struct label *label);
-	int	(*mpo_init_ipq_label)(struct label *label, int flag);
-	int	(*mpo_init_mbuf_label)(struct label *label, int flag);
-	void	(*mpo_init_mount_label)(struct label *label);
-	void	(*mpo_init_mount_fs_label)(struct label *label);
-	int	(*mpo_init_socket_label)(struct label *label, int flag);
-	int	(*mpo_init_socket_peer_label)(struct label *label, int flag);
-	void	(*mpo_init_pipe_label)(struct label *label);
-	void    (*mpo_init_posix_sem_label)(struct label *label);
-	void	(*mpo_init_proc_label)(struct label *label);
-	void	(*mpo_init_vnode_label)(struct label *label);
-	void	(*mpo_destroy_bpfdesc_label)(struct label *label);
-	void	(*mpo_destroy_cred_label)(struct label *label);
-	void	(*mpo_destroy_devfsdirent_label)(struct label *label);
-	void	(*_mpo_placeholder1)(void);
-	void	(*mpo_destroy_ifnet_label)(struct label *label);
-	void	(*mpo_destroy_inpcb_label)(struct label *label);
-	void	(*mpo_destroy_sysv_msgmsg_label)(struct label *label);
-	void	(*mpo_destroy_sysv_msgqueue_label)(struct label *label);
-	void	(*mpo_destroy_sysv_sem_label)(struct label *label);
-	void	(*mpo_destroy_sysv_shm_label)(struct label *label);
-	void	(*mpo_destroy_ipq_label)(struct label *label);
-	void	(*mpo_destroy_mbuf_label)(struct label *label);
-	void	(*mpo_destroy_mount_label)(struct label *label);
-	void	(*mpo_destroy_mount_fs_label)(struct label *label);
-	void	(*mpo_destroy_socket_label)(struct label *label);
-	void	(*mpo_destroy_socket_peer_label)(struct label *label);
-	void	(*mpo_destroy_pipe_label)(struct label *label);
-	void    (*mpo_destroy_posix_sem_label)(struct label *label);
-	void	(*mpo_destroy_proc_label)(struct label *label);
-	void	(*mpo_destroy_vnode_label)(struct label *label);
-	void	(*mpo_cleanup_sysv_msgmsg)(struct label *msglabel);
-	void	(*mpo_cleanup_sysv_msgqueue)(struct label *msqlabel);
-	void	(*mpo_cleanup_sysv_sem)(struct label *semalabel);
-	void	(*mpo_cleanup_sysv_shm)(struct label *shmlabel);
-	void	(*mpo_copy_cred_label)(struct label *src,
+/*
+ * Label operations.  Initialize label storage, destroy label
+ * storage, recycle for re-use without init/destroy, copy a label to
+ * initialized storage, and externalize/internalize from/to
+ * initialized storage.
+ */
+typedef void	(*mpo_init_bpfdesc_label_t)(struct label *label);
+typedef void	(*mpo_init_cred_label_t)(struct label *label);
+typedef void	(*mpo_init_devfsdirent_label_t)(struct label *label);
+typedef void	(*mpo_init_ifnet_label_t)(struct label *label);
+typedef int	(*mpo_init_inpcb_label_t)(struct label *label, int flag);
+typedef void	(*mpo_init_sysv_msgmsg_label_t)(struct label *label);
+typedef void	(*mpo_init_sysv_msgqueue_label_t)(struct label *label);
+typedef void	(*mpo_init_sysv_sem_label_t)(struct label *label);
+typedef void	(*mpo_init_sysv_shm_label_t)(struct label *label);
+typedef int	(*mpo_init_ipq_label_t)(struct label *label, int flag);
+typedef int	(*mpo_init_mbuf_label_t)(struct label *label, int flag);
+typedef void	(*mpo_init_mount_label_t)(struct label *label);
+typedef void	(*mpo_init_mount_fs_label_t)(struct label *label);
+typedef int	(*mpo_init_socket_label_t)(struct label *label, int flag);
+typedef int	(*mpo_init_socket_peer_label_t)(struct label *label,
+		    int flag);
+typedef void	(*mpo_init_pipe_label_t)(struct label *label);
+typedef void    (*mpo_init_posix_sem_label_t)(struct label *label);
+typedef void	(*mpo_init_proc_label_t)(struct label *label);
+typedef void	(*mpo_init_vnode_label_t)(struct label *label);
+typedef void	(*mpo_destroy_bpfdesc_label_t)(struct label *label);
+typedef void	(*mpo_destroy_cred_label_t)(struct label *label);
+typedef void	(*mpo_destroy_devfsdirent_label_t)(struct label *label);
+typedef void	(*mpo_destroy_ifnet_label_t)(struct label *label);
+typedef void	(*mpo_destroy_inpcb_label_t)(struct label *label);
+typedef void	(*mpo_destroy_sysv_msgmsg_label_t)(struct label *label);
+typedef void	(*mpo_destroy_sysv_msgqueue_label_t)(struct label *label);
+typedef void	(*mpo_destroy_sysv_sem_label_t)(struct label *label);
+typedef void	(*mpo_destroy_sysv_shm_label_t)(struct label *label);
+typedef void	(*mpo_destroy_ipq_label_t)(struct label *label);
+typedef void	(*mpo_destroy_mbuf_label_t)(struct label *label);
+typedef void	(*mpo_destroy_mount_label_t)(struct label *label);
+typedef void	(*mpo_destroy_mount_fs_label_t)(struct label *label);
+typedef void	(*mpo_destroy_socket_label_t)(struct label *label);
+typedef void	(*mpo_destroy_socket_peer_label_t)(struct label *label);
+typedef void	(*mpo_destroy_pipe_label_t)(struct label *label);
+typedef void    (*mpo_destroy_posix_sem_label_t)(struct label *label);
+typedef void	(*mpo_destroy_proc_label_t)(struct label *label);
+typedef void	(*mpo_destroy_vnode_label_t)(struct label *label);
+typedef void	(*mpo_cleanup_sysv_msgmsg_t)(struct label *msglabel);
+typedef void	(*mpo_cleanup_sysv_msgqueue_t)(struct label *msqlabel);
+typedef void	(*mpo_cleanup_sysv_sem_t)(struct label *semalabel);
+typedef void	(*mpo_cleanup_sysv_shm_t)(struct label *shmlabel);
+typedef void	(*mpo_copy_cred_label_t)(struct label *src,
 		    struct label *dest);
-	void	(*mpo_copy_ifnet_label)(struct label *src,
+typedef void	(*mpo_copy_ifnet_label_t)(struct label *src,
 		    struct label *dest);
-	void	(*mpo_copy_mbuf_label)(struct label *src,
+typedef void	(*mpo_copy_mbuf_label_t)(struct label *src,
 		    struct label *dest);
-	void	(*_mpo_placeholder2)(void);
-	void	(*mpo_copy_pipe_label)(struct label *src,
+typedef void	(*mpo_copy_pipe_label_t)(struct label *src,
 		    struct label *dest);
-	void	(*mpo_copy_socket_label)(struct label *src,
+typedef void	(*mpo_copy_socket_label_t)(struct label *src,
 		    struct label *dest);
-	void	(*mpo_copy_vnode_label)(struct label *src,
+typedef void	(*mpo_copy_vnode_label_t)(struct label *src,
 		    struct label *dest);
-	int	(*mpo_externalize_cred_label)(struct label *label,
+typedef int	(*mpo_externalize_cred_label_t)(struct label *label,
 		    char *element_name, struct sbuf *sb, int *claimed);
-	int	(*mpo_externalize_ifnet_label)(struct label *label,
+typedef int	(*mpo_externalize_ifnet_label_t)(struct label *label,
 		    char *element_name, struct sbuf *sb, int *claimed);
-	void	(*_mpo_placeholder3)(void);
-	int	(*mpo_externalize_pipe_label)(struct label *label,
+typedef int	(*mpo_externalize_pipe_label_t)(struct label *label,
 		    char *element_name, struct sbuf *sb, int *claimed);
-	int	(*mpo_externalize_socket_label)(struct label *label,
+typedef int	(*mpo_externalize_socket_label_t)(struct label *label,
 		    char *element_name, struct sbuf *sb, int *claimed);
-	int	(*mpo_externalize_socket_peer_label)(struct label *label,
+typedef int	(*mpo_externalize_socket_peer_label_t)(struct label *label,
 		    char *element_name, struct sbuf *sb, int *claimed);
-	int	(*mpo_externalize_vnode_label)(struct label *label,
+typedef int	(*mpo_externalize_vnode_label_t)(struct label *label,
 		    char *element_name, struct sbuf *sb, int *claimed);
-	int	(*mpo_internalize_cred_label)(struct label *label,
+typedef int	(*mpo_internalize_cred_label_t)(struct label *label,
 		    char *element_name, char *element_data, int *claimed);
-	int	(*mpo_internalize_ifnet_label)(struct label *label,
+typedef int	(*mpo_internalize_ifnet_label_t)(struct label *label,
 		    char *element_name, char *element_data, int *claimed);
-	void	(*_mpo_placeholder4)(void);
-	int	(*mpo_internalize_pipe_label)(struct label *label,
+typedef int	(*mpo_internalize_pipe_label_t)(struct label *label,
 		    char *element_name, char *element_data, int *claimed);
-	int	(*mpo_internalize_socket_label)(struct label *label,
+typedef int	(*mpo_internalize_socket_label_t)(struct label *label,
 		    char *element_name, char *element_data, int *claimed);
-	int	(*mpo_internalize_vnode_label)(struct label *label,
+typedef int	(*mpo_internalize_vnode_label_t)(struct label *label,
 		    char *element_name, char *element_data, int *claimed);
 
-	/*
-	 * Labeling event operations: file system objects, and things that
-	 * look a lot like file system objects.
-	 */
-	void	(*mpo_associate_vnode_devfs)(struct mount *mp,
+/*
+ * Labeling event operations: file system objects, and things that
+ * look a lot like file system objects.
+ */
+typedef void	(*mpo_associate_vnode_devfs_t)(struct mount *mp,
 		    struct label *fslabel, struct devfs_dirent *de,
 		    struct label *delabel, struct vnode *vp,
 		    struct label *vlabel);
-	int	(*mpo_associate_vnode_extattr)(struct mount *mp,
+typedef int	(*mpo_associate_vnode_extattr_t)(struct mount *mp,
 		    struct label *fslabel, struct vnode *vp,
 		    struct label *vlabel);
-	void	(*mpo_associate_vnode_singlelabel)(struct mount *mp,
+typedef void	(*mpo_associate_vnode_singlelabel_t)(struct mount *mp,
 		    struct label *fslabel, struct vnode *vp,
 		    struct label *vlabel);
-	void	(*mpo_create_devfs_device)(struct ucred *cred,
+typedef void	(*mpo_create_devfs_device_t)(struct ucred *cred,
 		    struct mount *mp, struct cdev *dev,
 		    struct devfs_dirent *de, struct label *label);
-	void	(*mpo_create_devfs_directory)(struct mount *mp, char *dirname,
-		    int dirnamelen, struct devfs_dirent *de,
+typedef void	(*mpo_create_devfs_directory_t)(struct mount *mp,
+		    char *dirname, int dirnamelen, struct devfs_dirent *de,
 		    struct label *label);
-	void	(*mpo_create_devfs_symlink)(struct ucred *cred,
+typedef void	(*mpo_create_devfs_symlink_t)(struct ucred *cred,
 		    struct mount *mp, struct devfs_dirent *dd,
 		    struct label *ddlabel, struct devfs_dirent *de,
 		    struct label *delabel);
-	void	(*_mpo_placeholder5)(void);
-	int	(*mpo_create_vnode_extattr)(struct ucred *cred,
+typedef int	(*mpo_create_vnode_extattr_t)(struct ucred *cred,
 		    struct mount *mp, struct label *fslabel,
 		    struct vnode *dvp, struct label *dlabel,
 		    struct vnode *vp, struct label *vlabel,
 		    struct componentname *cnp);
-	void	(*mpo_create_mount)(struct ucred *cred, struct mount *mp,
+typedef void	(*mpo_create_mount_t)(struct ucred *cred, struct mount *mp,
 		    struct label *mntlabel, struct label *fslabel);
-	void	(*mpo_relabel_vnode)(struct ucred *cred, struct vnode *vp,
+typedef void	(*mpo_relabel_vnode_t)(struct ucred *cred, struct vnode *vp,
 		    struct label *vnodelabel, struct label *label);
-	int	(*mpo_setlabel_vnode_extattr)(struct ucred *cred,
+typedef int	(*mpo_setlabel_vnode_extattr_t)(struct ucred *cred,
 		    struct vnode *vp, struct label *vlabel,
 		    struct label *intlabel);
-	void	(*mpo_update_devfsdirent)(struct mount *mp,
+typedef void	(*mpo_update_devfsdirent_t)(struct mount *mp,
 		    struct devfs_dirent *devfs_dirent,
 		    struct label *direntlabel, struct vnode *vp,
 		    struct label *vnodelabel);
 
-	/*
-	 * Labeling event operations: IPC objects.
-	 */
-	void	(*mpo_create_mbuf_from_socket)(struct socket *so,
+/*
+ * Labeling event operations: IPC objects.
+ */
+typedef void	(*mpo_create_mbuf_from_socket_t)(struct socket *so,
 		    struct label *socketlabel, struct mbuf *m,
 		    struct label *mbuflabel);
-	void	(*mpo_create_socket)(struct ucred *cred, struct socket *so,
+typedef void	(*mpo_create_socket_t)(struct ucred *cred, struct socket *so,
 		    struct label *socketlabel);
-	void	(*mpo_create_socket_from_socket)(struct socket *oldsocket,
+typedef void	(*mpo_create_socket_from_socket_t)(struct socket *oldsocket,
 		    struct label *oldsocketlabel, struct socket *newsocket,
 		    struct label *newsocketlabel);
-	void	(*mpo_relabel_socket)(struct ucred *cred, struct socket *so,
+typedef void	(*mpo_relabel_socket_t)(struct ucred *cred, struct socket *so,
 		    struct label *oldlabel, struct label *newlabel);
-	void	(*mpo_relabel_pipe)(struct ucred *cred, struct pipepair *pp,
+typedef void	(*mpo_relabel_pipe_t)(struct ucred *cred, struct pipepair *pp,
 		    struct label *oldlabel, struct label *newlabel);
-	void	(*mpo_set_socket_peer_from_mbuf)(struct mbuf *mbuf,
+typedef void	(*mpo_set_socket_peer_from_mbuf_t)(struct mbuf *mbuf,
 		    struct label *mbuflabel, struct socket *so,
 		    struct label *socketpeerlabel);
-	void	(*mpo_set_socket_peer_from_socket)(struct socket *oldsocket,
+typedef void	(*mpo_set_socket_peer_from_socket_t)(struct socket *oldsocket,
 		    struct label *oldsocketlabel, struct socket *newsocket,
 		    struct label *newsocketpeerlabel);
-	void	(*mpo_create_pipe)(struct ucred *cred, struct pipepair *pp,
+typedef void	(*mpo_create_pipe_t)(struct ucred *cred, struct pipepair *pp,
 		    struct label *pipelabel);
 
-	/*
-	 * Labeling event operations: System V IPC primitives.
-	 */
-	void	(*mpo_create_sysv_msgmsg)(struct ucred *cred,
+/*
+ * Labeling event operations: System V IPC primitives.
+ */
+typedef void	(*mpo_create_sysv_msgmsg_t)(struct ucred *cred,
 		    struct msqid_kernel *msqkptr, struct label *msqlabel,
 		    struct msg *msgptr, struct label *msglabel);
-	void	(*mpo_create_sysv_msgqueue)(struct ucred *cred,
+typedef void	(*mpo_create_sysv_msgqueue_t)(struct ucred *cred,
 		    struct msqid_kernel *msqkptr, struct label *msqlabel);
-	void	(*mpo_create_sysv_sem)(struct ucred *cred,
+typedef void	(*mpo_create_sysv_sem_t)(struct ucred *cred,
 		    struct semid_kernel *semakptr, struct label *semalabel);
-	void	(*mpo_create_sysv_shm)(struct ucred *cred,
+typedef void	(*mpo_create_sysv_shm_t)(struct ucred *cred,
 		    struct shmid_kernel *shmsegptr, struct label *shmlabel);
 
-	/*
-	 * Labeling event operations: POSIX (global/inter-process) semaphores.
-	 */
-	void	(*mpo_create_posix_sem)(struct ucred *cred,
+/*
+ * Labeling event operations: POSIX (global/inter-process) semaphores.
+ */
+typedef void	(*mpo_create_posix_sem_t)(struct ucred *cred,
 		    struct ksem *ksemptr, struct label *ks_label);
 
-	/*
-	 * Labeling event operations: network objects.
-	 */
-	void	(*mpo_create_bpfdesc)(struct ucred *cred, struct bpf_d *bpf_d,
-		    struct label *bpflabel);
-	void	(*mpo_create_ifnet)(struct ifnet *ifnet,
+/*
+ * Labeling event operations: network objects.
+ */
+typedef void	(*mpo_create_bpfdesc_t)(struct ucred *cred,
+		    struct bpf_d *bpf_d, struct label *bpflabel);
+typedef void	(*mpo_create_ifnet_t)(struct ifnet *ifnet,
 		    struct label *ifnetlabel);
-	void	(*mpo_create_inpcb_from_socket)(struct socket *so,
+typedef void	(*mpo_create_inpcb_from_socket_t)(struct socket *so,
 		    struct label *solabel, struct inpcb *inp,
 		    struct label *inplabel);
-	void	(*mpo_create_ipq)(struct mbuf *fragment,
+typedef void	(*mpo_create_ipq_t)(struct mbuf *fragment,
 		    struct label *fragmentlabel, struct ipq *ipq,
 		    struct label *ipqlabel);
-	void	(*mpo_create_datagram_from_ipq)
+typedef void	(*mpo_create_datagram_from_ipq)
 		    (struct ipq *ipq, struct label *ipqlabel,
 		    struct mbuf *datagram, struct label *datagramlabel);
-	void	(*mpo_create_fragment)(struct mbuf *datagram,
+typedef void	(*mpo_create_fragment_t)(struct mbuf *datagram,
 		    struct label *datagramlabel, struct mbuf *fragment,
 		    struct label *fragmentlabel);
-	void	(*mpo_create_mbuf_from_inpcb)(struct inpcb *inp,
+typedef void	(*mpo_create_mbuf_from_inpcb_t)(struct inpcb *inp,
 		    struct label *inplabel, struct mbuf *m,
 		    struct label *mlabel);
-	void	(*mpo_create_mbuf_linklayer)(struct ifnet *ifnet,
+typedef void	(*mpo_create_mbuf_linklayer_t)(struct ifnet *ifnet,
 		    struct label *ifnetlabel, struct mbuf *mbuf,
 		    struct label *mbuflabel);
-	void	(*mpo_create_mbuf_from_bpfdesc)(struct bpf_d *bpf_d,
+typedef void	(*mpo_create_mbuf_from_bpfdesc_t)(struct bpf_d *bpf_d,
 		    struct label *bpflabel, struct mbuf *mbuf,
 		    struct label *mbuflabel);
-	void	(*mpo_create_mbuf_from_ifnet)(struct ifnet *ifnet,
+typedef void	(*mpo_create_mbuf_from_ifnet_t)(struct ifnet *ifnet,
 		    struct label *ifnetlabel, struct mbuf *mbuf,
 		    struct label *mbuflabel);
-	void	(*mpo_create_mbuf_multicast_encap)(struct mbuf *oldmbuf,
+typedef void	(*mpo_create_mbuf_multicast_encap_t)(struct mbuf *oldmbuf,
 		    struct label *oldmbuflabel, struct ifnet *ifnet,
 		    struct label *ifnetlabel, struct mbuf *newmbuf,
 		    struct label *newmbuflabel);
-	void	(*mpo_create_mbuf_netlayer)(struct mbuf *oldmbuf,
+typedef void	(*mpo_create_mbuf_netlayer_t)(struct mbuf *oldmbuf,
 		    struct label *oldmbuflabel, struct mbuf *newmbuf,
 		    struct label *newmbuflabel);
-	int	(*mpo_fragment_match)(struct mbuf *fragment,
+typedef int	(*mpo_fragment_match_t)(struct mbuf *fragment,
 		    struct label *fragmentlabel, struct ipq *ipq,
 		    struct label *ipqlabel);
-	void	(*mpo_reflect_mbuf_icmp)(struct mbuf *m,
+typedef void	(*mpo_reflect_mbuf_icmp_t)(struct mbuf *m,
+		    struct label *mlabel);
+typedef void	(*mpo_reflect_mbuf_tcp_t)(struct mbuf *m,
 		    struct label *mlabel);
-	void	(*mpo_reflect_mbuf_tcp)(struct mbuf *m, struct label *mlabel);
-	void	(*mpo_relabel_ifnet)(struct ucred *cred, struct ifnet *ifnet,
-		    struct label *ifnetlabel, struct label *newlabel);
-	void	(*mpo_update_ipq)(struct mbuf *fragment,
+typedef void	(*mpo_relabel_ifnet_t)(struct ucred *cred,
+		    struct ifnet *ifnet, struct label *ifnetlabel,
+		    struct label *newlabel);
+typedef void	(*mpo_update_ipq_t)(struct mbuf *fragment,
 		    struct label *fragmentlabel, struct ipq *ipq,
 		    struct label *ipqlabel);
-	void	(*mpo_inpcb_sosetlabel)(struct socket *so,
+typedef void	(*mpo_inpcb_sosetlabel_t)(struct socket *so,
 		    struct label *label, struct inpcb *inp,
 		    struct label *inplabel);
 
-	/*
-	 * Labeling event operations: processes.
-	 */
-	void	(*mpo_execve_transition)(struct ucred *old, struct ucred *new,
-		    struct vnode *vp, struct label *vnodelabel,
-		    struct label *interpvnodelabel,
+/*
+ * Labeling event operations: processes.
+ */
+typedef void	(*mpo_execve_transition_t)(struct ucred *old,
+		    struct ucred *new, struct vnode *vp,
+		    struct label *vnodelabel, struct label *interpvnodelabel,
 		    struct image_params *imgp, struct label *execlabel);
-	int	(*mpo_execve_will_transition)(struct ucred *old,
+typedef int	(*mpo_execve_will_transition_t)(struct ucred *old,
 		    struct vnode *vp, struct label *vnodelabel,
 		    struct label *interpvnodelabel,
 		    struct image_params *imgp, struct label *execlabel);
-	void	(*mpo_create_proc0)(struct ucred *cred);
-	void	(*mpo_create_proc1)(struct ucred *cred);
-	void	(*mpo_relabel_cred)(struct ucred *cred,
+typedef void	(*mpo_create_proc0_t)(struct ucred *cred);
+typedef void	(*mpo_create_proc1_t)(struct ucred *cred);
+typedef void	(*mpo_relabel_cred_t)(struct ucred *cred,
 		    struct label *newlabel);
-	void	(*_mpo_placeholder6)(void);
-	void	(*mpo_thread_userret)(struct thread *thread);
+typedef void	(*mpo_thread_userret_t)(struct thread *thread);
 
-	/*
-	 * Access control checks.
-	 */
-	int	(*mpo_check_bpfdesc_receive)(struct bpf_d *bpf_d,
+/*
+ * Access control checks.
+ */
+typedef	int	(*mpo_check_bpfdesc_receive_t)(struct bpf_d *bpf_d,
 		    struct label *bpflabel, struct ifnet *ifnet,
 		    struct label *ifnetlabel);
-	void	(*_mpo_placeholder7)(void);
-	int	(*mpo_check_cred_relabel)(struct ucred *cred,
+typedef int	(*mpo_check_cred_relabel_t)(struct ucred *cred,
 		    struct label *newlabel);
-	int	(*mpo_check_cred_visible)(struct ucred *u1, struct ucred *u2);
-	void	(*_mpo_placeholder8)(void);
-	void	(*_mpo_placeholder9)(void);
-	void	(*_mpo_placeholder10)(void);
-	void	(*_mpo_placeholder11)(void);
-	void	(*_mpo_placeholder12)(void);
-	void	(*_mpo_placeholder13)(void);
-	void	(*_mpo_placeholder14)(void);
-	void	(*_mpo_placeholder15)(void);
-	void	(*_mpo_placeholder16)(void);
-	void	(*_mpo_placeholder17)(void);
-	void	(*_mpo_placeholder18)(void);
-	int	(*mpo_check_ifnet_relabel)(struct ucred *cred,
+typedef int	(*mpo_check_cred_visible_t)(struct ucred *u1,
+		    struct ucred *u2);
+typedef int	(*mpo_check_ifnet_relabel_t)(struct ucred *cred,
 		    struct ifnet *ifnet, struct label *ifnetlabel,
 		    struct label *newlabel);
-	int	(*mpo_check_ifnet_transmit)(struct ifnet *ifnet,
+typedef int	(*mpo_check_ifnet_transmit_t)(struct ifnet *ifnet,
 		    struct label *ifnetlabel, struct mbuf *m,
 		    struct label *mbuflabel);
-	int	(*mpo_check_inpcb_deliver)(struct inpcb *inp,
+typedef int	(*mpo_check_inpcb_deliver_t)(struct inpcb *inp,
 		    struct label *inplabel, struct mbuf *m,
 		    struct label *mlabel);
-	int	(*mpo_check_sysv_msgmsq)(struct ucred *cred,
+typedef int	(*mpo_check_sysv_msgmsq_t)(struct ucred *cred,
 		    struct msg *msgptr, struct label *msglabel,
 		    struct msqid_kernel *msqkptr, struct label *msqklabel);
-	int	(*mpo_check_sysv_msgrcv)(struct ucred *cred,
+typedef int	(*mpo_check_sysv_msgrcv_t)(struct ucred *cred,
 		    struct msg *msgptr, struct label *msglabel);
-	int	(*mpo_check_sysv_msgrmid)(struct ucred *cred,
+typedef int	(*mpo_check_sysv_msgrmid_t)(struct ucred *cred,
 		    struct msg *msgptr, struct label *msglabel);
-	int	(*mpo_check_sysv_msqget)(struct ucred *cred,
+typedef int	(*mpo_check_sysv_msqget_t)(struct ucred *cred,
 		    struct msqid_kernel *msqkptr, struct label *msqklabel);
-	int	(*mpo_check_sysv_msqsnd)(struct ucred *cred,
+typedef int	(*mpo_check_sysv_msqsnd_t)(struct ucred *cred,
 		    struct msqid_kernel *msqkptr, struct label *msqklabel);
-	int	(*mpo_check_sysv_msqrcv)(struct ucred *cred,
+typedef int	(*mpo_check_sysv_msqrcv_t)(struct ucred *cred,
 		    struct msqid_kernel *msqkptr, struct label *msqklabel);
-	int	(*mpo_check_sysv_msqctl)(struct ucred *cred,
+typedef int	(*mpo_check_sysv_msqctl_t)(struct ucred *cred,
 		    struct msqid_kernel *msqkptr, struct label *msqklabel,
 		    int cmd);
-	int	(*mpo_check_sysv_semctl)(struct ucred *cred,
+typedef int	(*mpo_check_sysv_semctl_t)(struct ucred *cred,
 		    struct semid_kernel *semakptr, struct label *semaklabel,
 		    int cmd);
-	int	(*mpo_check_sysv_semget)(struct ucred *cred,
+typedef int	(*mpo_check_sysv_semget_t)(struct ucred *cred,
 		    struct semid_kernel *semakptr, struct label *semaklabel);
-	int	(*mpo_check_sysv_semop)(struct ucred *cred,
+typedef int	(*mpo_check_sysv_semop_t)(struct ucred *cred,
 		    struct semid_kernel *semakptr, struct label *semaklabel,
 		    size_t accesstype);
-	int	(*mpo_check_sysv_shmat)(struct ucred *cred,
+typedef int	(*mpo_check_sysv_shmat_t)(struct ucred *cred,
 		    struct shmid_kernel *shmsegptr,
 		    struct label *shmseglabel, int shmflg);
-	int	(*mpo_check_sysv_shmctl)(struct ucred *cred,
+typedef int	(*mpo_check_sysv_shmctl_t)(struct ucred *cred,
 		    struct shmid_kernel *shmsegptr,
 		    struct label *shmseglabel, int cmd);
-	int	(*mpo_check_sysv_shmdt)(struct ucred *cred,
+typedef int	(*mpo_check_sysv_shmdt_t)(struct ucred *cred,
 		    struct shmid_kernel *shmsegptr,
 		    struct label *shmseglabel);
-	int	(*mpo_check_sysv_shmget)(struct ucred *cred,
+typedef int	(*mpo_check_sysv_shmget_t)(struct ucred *cred,
 		    struct shmid_kernel *shmsegptr,
 		    struct label *shmseglabel, int shmflg);
-	int	(*mpo_check_kenv_dump)(struct ucred *cred);
-	int	(*mpo_check_kenv_get)(struct ucred *cred, char *name);
-	int	(*mpo_check_kenv_set)(struct ucred *cred, char *name,
+typedef int	(*mpo_check_kenv_dump_t)(struct ucred *cred);
+typedef int	(*mpo_check_kenv_get_t)(struct ucred *cred, char *name);
+typedef int	(*mpo_check_kenv_set_t)(struct ucred *cred, char *name,
 		    char *value);
-	int	(*mpo_check_kenv_unset)(struct ucred *cred, char *name);
-	int	(*mpo_check_kld_load)(struct ucred *cred, struct vnode *vp,
+typedef int	(*mpo_check_kenv_unset_t)(struct ucred *cred, char *name);
+typedef int	(*mpo_check_kld_load_t)(struct ucred *cred, struct vnode *vp,
 		    struct label *vlabel);
-	int	(*mpo_check_kld_stat)(struct ucred *cred);
-	int	(*mpo_check_kld_unload)(struct ucred *cred);
-	void	(*_mpo_placeholder19)(void);
-	void	(*_mpo_placeholder20)(void);
-	int	(*mpo_check_mount_stat)(struct ucred *cred, struct mount *mp,
-		    struct label *mntlabel);
-	void	(*_mpo_placeholder21)(void);
-	int	(*mpo_check_pipe_ioctl)(struct ucred *cred,
+typedef int	(*mpo_check_kld_stat_t)(struct ucred *cred);
+typedef int	(*mpo_check_kld_unload_t)(struct ucred *cred);
+typedef int	(*mpo_mpo_placeholder19_t)(void);
+typedef int	(*mpo_mpo_placeholder20_t)(void);
+typedef int	(*mpo_check_mount_stat_t)(struct ucred *cred,
+		    struct mount *mp, struct label *mntlabel);
+typedef int	(*mpo_mpo_placeholder21_t)(void);
+typedef int	(*mpo_check_pipe_ioctl_t)(struct ucred *cred,
 		    struct pipepair *pp, struct label *pipelabel,
 		    unsigned long cmd, void *data);
-	int	(*mpo_check_pipe_poll)(struct ucred *cred,
+typedef int	(*mpo_check_pipe_poll_t)(struct ucred *cred,
 		    struct pipepair *pp, struct label *pipelabel);
-	int	(*mpo_check_pipe_read)(struct ucred *cred,
+typedef int	(*mpo_check_pipe_read_t)(struct ucred *cred,
 		    struct pipepair *pp, struct label *pipelabel);
-	int	(*mpo_check_pipe_relabel)(struct ucred *cred,
+typedef int	(*mpo_check_pipe_relabel_t)(struct ucred *cred,
 		    struct pipepair *pp, struct label *pipelabel,
 		    struct label *newlabel);
-	int	(*mpo_check_pipe_stat)(struct ucred *cred,
+typedef int	(*mpo_check_pipe_stat_t)(struct ucred *cred,
 		    struct pipepair *pp, struct label *pipelabel);
-	int	(*mpo_check_pipe_write)(struct ucred *cred,
+typedef int	(*mpo_check_pipe_write_t)(struct ucred *cred,
 		    struct pipepair *pp, struct label *pipelabel);
-	int	(*mpo_check_posix_sem_destroy)(struct ucred *cred,
+typedef int	(*mpo_check_posix_sem_destroy_t)(struct ucred *cred,
 		    struct ksem *ksemptr, struct label *ks_label);
-	int	(*mpo_check_posix_sem_getvalue)(struct ucred *cred,
+typedef int	(*mpo_check_posix_sem_getvalue_t)(struct ucred *cred,
 		    struct ksem *ksemptr, struct label *ks_label);
-	int	(*mpo_check_posix_sem_open)(struct ucred *cred,
+typedef int	(*mpo_check_posix_sem_open_t)(struct ucred *cred,
 		    struct ksem *ksemptr, struct label *ks_label);
-	int	(*mpo_check_posix_sem_post)(struct ucred *cred,
+typedef int	(*mpo_check_posix_sem_post_t)(struct ucred *cred,
 		    struct ksem *ksemptr, struct label *ks_label);
-	int	(*mpo_check_posix_sem_unlink)(struct ucred *cred,
+typedef int	(*mpo_check_posix_sem_unlink_t)(struct ucred *cred,
 		    struct ksem *ksemptr, struct label *ks_label);

>>> TRUNCATED FOR MAIL (1000 lines) <<<


More information about the p4-projects mailing list