1101099Srwatson/*- 2225344Srwatson * Copyright (c) 1999-2002, 2007-2011 Robert N. M. Watson 3141802Srwatson * Copyright (c) 2001-2005 McAfee, Inc. 4172930Srwatson * Copyright (c) 2006 SPARTA, Inc. 5182063Srwatson * Copyright (c) 2008 Apple Inc. 6101099Srwatson * All rights reserved. 7101099Srwatson * 8101099Srwatson * This software was developed by Robert Watson for the TrustedBSD Project. 9101099Srwatson * 10141802Srwatson * This software was developed for the FreeBSD Project in part by McAfee 11141802Srwatson * Research, the Security Research Division of McAfee, Inc. under 12141802Srwatson * DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the DARPA 13141802Srwatson * CHATS research program. 14101099Srwatson * 15172930Srwatson * This software was enhanced by SPARTA ISSO under SPAWAR contract 16172930Srwatson * N66001-04-C-6019 ("SEFOS"). 17172930Srwatson * 18189529Srwatson * This software was developed at the University of Cambridge Computer 19189529Srwatson * Laboratory with support from a grant from Google, Inc. 20189529Srwatson * 21101099Srwatson * Redistribution and use in source and binary forms, with or without 22101099Srwatson * modification, are permitted provided that the following conditions 23101099Srwatson * are met: 24101099Srwatson * 1. Redistributions of source code must retain the above copyright 25101099Srwatson * notice, this list of conditions and the following disclaimer. 26101099Srwatson * 2. Redistributions in binary form must reproduce the above copyright 27101099Srwatson * notice, this list of conditions and the following disclaimer in the 28101099Srwatson * documentation and/or other materials provided with the distribution. 29101099Srwatson * 30101099Srwatson * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 31101099Srwatson * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 32101099Srwatson * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 33101099Srwatson * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 34101099Srwatson * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 35101099Srwatson * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 36101099Srwatson * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 37101099Srwatson * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 38101099Srwatson * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 39101099Srwatson * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 40101099Srwatson * SUCH DAMAGE. 41101099Srwatson * 42101099Srwatson * $FreeBSD$ 43101099Srwatson */ 44101099Srwatson 45101099Srwatson/* 46101099Srwatson * Developed by the TrustedBSD Project. 47168944Srwatson * 48168944Srwatson * MAC Test policy - tests MAC Framework labeling by assigning object class 49168944Srwatson * magic numbers to each label and validates that each time an object label 50168944Srwatson * is passed into the policy, it has a consistent object type, catching 51168944Srwatson * incorrectly passed labels, labels passed after free, etc. 52101099Srwatson */ 53101099Srwatson 54101099Srwatson#include <sys/param.h> 55101099Srwatson#include <sys/acl.h> 56131934Smarcel#include <sys/kdb.h> 57101099Srwatson#include <sys/kernel.h> 58164184Strhodes#include <sys/ksem.h> 59113534Srwatson#include <sys/malloc.h> 60166905Srwatson#include <sys/module.h> 61101099Srwatson#include <sys/mount.h> 62166905Srwatson#include <sys/msg.h> 63101099Srwatson#include <sys/proc.h> 64101099Srwatson#include <sys/vnode.h> 65166905Srwatson#include <sys/sem.h> 66166905Srwatson#include <sys/shm.h> 67101099Srwatson#include <sys/socket.h> 68101099Srwatson#include <sys/socketvar.h> 69150340Sphk#include <sys/sx.h> 70101099Srwatson#include <sys/sysctl.h> 71101099Srwatson 72101099Srwatson#include <fs/devfs/devfs.h> 73101099Srwatson 74101099Srwatson#include <net/bpfdesc.h> 75101099Srwatson#include <net/if.h> 76101099Srwatson#include <net/if_types.h> 77101099Srwatson#include <net/if_var.h> 78101099Srwatson 79165469Srwatson#include <security/mac/mac_policy.h> 80101099Srwatson 81101099SrwatsonSYSCTL_DECL(_security_mac); 82101099Srwatson 83248085Smariusstatic SYSCTL_NODE(_security_mac, OID_AUTO, test, CTLFLAG_RW, 0, 84101099Srwatson "TrustedBSD mac_test policy controls"); 85101099Srwatson 86168944Srwatson#define MAGIC_BPF 0xfe1ad1b6 87168944Srwatson#define MAGIC_DEVFS 0x9ee79c32 88168944Srwatson#define MAGIC_IFNET 0xc218b120 89168944Srwatson#define MAGIC_INPCB 0x4440f7bb 90184308Srwatson#define MAGIC_IP6Q 0x0870e1b7 91168944Srwatson#define MAGIC_IPQ 0x206188ef 92168944Srwatson#define MAGIC_MBUF 0xbbefa5bb 93168944Srwatson#define MAGIC_MOUNT 0xc7c46e47 94168944Srwatson#define MAGIC_SOCKET 0x9199c6cd 95173112Srwatson#define MAGIC_SYNCACHE 0x7fb838a8 96168947Srwatson#define MAGIC_SYSV_MSG 0x8bbba61e 97168947Srwatson#define MAGIC_SYSV_MSQ 0xea672391 98168947Srwatson#define MAGIC_SYSV_SEM 0x896e8a0b 99168947Srwatson#define MAGIC_SYSV_SHM 0x76119ab0 100168944Srwatson#define MAGIC_PIPE 0xdc6c9919 101168947Srwatson#define MAGIC_POSIX_SEM 0x78ae980c 102175164Sjhb#define MAGIC_POSIX_SHM 0x4e853fc9 103168944Srwatson#define MAGIC_PROC 0x3b4be98f 104168944Srwatson#define MAGIC_CRED 0x9a5a4987 105168944Srwatson#define MAGIC_VNODE 0x1a67a45c 106168944Srwatson#define MAGIC_FREE 0x849ba1fd 107101099Srwatson 108166533Srwatson#define SLOT(x) mac_label_get((x), test_slot) 109166533Srwatson#define SLOT_SET(x, v) mac_label_set((x), test_slot, (v)) 110119228Srwatson 111101099Srwatsonstatic int test_slot; 112101099SrwatsonSYSCTL_INT(_security_mac_test, OID_AUTO, slot, CTLFLAG_RD, 113101099Srwatson &test_slot, 0, "Slot allocated by framework"); 114101099Srwatson 115248085Smariusstatic SYSCTL_NODE(_security_mac_test, OID_AUTO, counter, CTLFLAG_RW, 0, 116168944Srwatson "TrustedBSD mac_test counters controls"); 117101099Srwatson 118168944Srwatson#define COUNTER_DECL(variable) \ 119168944Srwatson static int counter_##variable; \ 120168944Srwatson SYSCTL_INT(_security_mac_test_counter, OID_AUTO, variable, \ 121168944Srwatson CTLFLAG_RD, &counter_##variable, 0, #variable) 122101099Srwatson 123168944Srwatson#define COUNTER_INC(variable) atomic_add_int(&counter_##variable, 1) 124101099Srwatson 125136775Srwatson#ifdef KDB 126174898Srwatson#define DEBUGGER(func, string) kdb_enter(KDB_WHY_MAC, (string)) 127136775Srwatson#else 128168944Srwatson#define DEBUGGER(func, string) printf("mac_test: %s: %s\n", (func), (string)) 129136775Srwatson#endif 130136775Srwatson 131168944Srwatson#define LABEL_CHECK(label, magic) do { \ 132168944Srwatson if (label != NULL) { \ 133168944Srwatson KASSERT(SLOT(label) == magic || SLOT(label) == 0, \ 134168944Srwatson ("%s: bad %s label", __func__, #magic)); \ 135168944Srwatson } \ 136168944Srwatson} while (0) 137168944Srwatson 138168947Srwatson#define LABEL_DESTROY(label, magic) do { \ 139168944Srwatson if (SLOT(label) == magic || SLOT(label) == 0) { \ 140168944Srwatson SLOT_SET(label, MAGIC_FREE); \ 141168944Srwatson } else if (SLOT(label) == MAGIC_FREE) { \ 142168944Srwatson DEBUGGER("%s: dup destroy", __func__); \ 143168944Srwatson } else { \ 144168944Srwatson DEBUGGER("%s: corrupted label", __func__); \ 145168944Srwatson } \ 146168944Srwatson} while (0) 147168944Srwatson 148168947Srwatson#define LABEL_INIT(label, magic) do { \ 149168947Srwatson SLOT_SET(label, magic); \ 150168947Srwatson} while (0) 151168947Srwatson 152168944Srwatson#define LABEL_NOTFREE(label) do { \ 153168944Srwatson KASSERT(SLOT(label) != MAGIC_FREE, \ 154168944Srwatson ("%s: destroyed label", __func__)); \ 155168944Srwatson} while (0) 156168944Srwatson 157101099Srwatson/* 158173138Srwatson * Object-specific entry point implementations are sorted alphabetically by 159173138Srwatson * object type name and then by operation. 160173138Srwatson */ 161173138SrwatsonCOUNTER_DECL(bpfdesc_check_receive); 162112675Srwatsonstatic int 163173141Srwatsontest_bpfdesc_check_receive(struct bpf_d *d, struct label *dlabel, 164173138Srwatson struct ifnet *ifp, struct label *ifplabel) 165122875Srwatson{ 166122875Srwatson 167173141Srwatson LABEL_CHECK(dlabel, MAGIC_BPF); 168173138Srwatson LABEL_CHECK(ifplabel, MAGIC_IFNET); 169173138Srwatson COUNTER_INC(bpfdesc_check_receive); 170122875Srwatson 171122875Srwatson return (0); 172122875Srwatson} 173122875Srwatson 174173138SrwatsonCOUNTER_DECL(bpfdesc_create); 175140635Srwatsonstatic void 176173141Srwatsontest_bpfdesc_create(struct ucred *cred, struct bpf_d *d, 177173141Srwatson struct label *dlabel) 178140635Srwatson{ 179173138Srwatson 180173138Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 181173141Srwatson LABEL_CHECK(dlabel, MAGIC_BPF); 182173138Srwatson COUNTER_INC(bpfdesc_create); 183140635Srwatson} 184140635Srwatson 185173138SrwatsonCOUNTER_DECL(bpfdesc_create_mbuf); 186140635Srwatsonstatic void 187173141Srwatsontest_bpfdesc_create_mbuf(struct bpf_d *d, struct label *dlabel, 188173141Srwatson struct mbuf *m, struct label *mlabel) 189140635Srwatson{ 190140635Srwatson 191173141Srwatson LABEL_CHECK(dlabel, MAGIC_BPF); 192173141Srwatson LABEL_CHECK(mlabel, MAGIC_MBUF); 193173138Srwatson COUNTER_INC(bpfdesc_create_mbuf); 194140635Srwatson} 195140635Srwatson 196173138SrwatsonCOUNTER_DECL(bpfdesc_destroy_label); 197140635Srwatsonstatic void 198173138Srwatsontest_bpfdesc_destroy_label(struct label *label) 199140635Srwatson{ 200140635Srwatson 201173138Srwatson LABEL_DESTROY(label, MAGIC_BPF); 202173138Srwatson COUNTER_INC(bpfdesc_destroy_label); 203101099Srwatson} 204101099Srwatson 205173138SrwatsonCOUNTER_DECL(bpfdesc_init_label); 206101099Srwatsonstatic void 207173138Srwatsontest_bpfdesc_init_label(struct label *label) 208101099Srwatson{ 209101099Srwatson 210173138Srwatson LABEL_INIT(label, MAGIC_BPF); 211173138Srwatson COUNTER_INC(bpfdesc_init_label); 212101099Srwatson} 213101099Srwatson 214173138SrwatsonCOUNTER_DECL(cred_check_relabel); 215104541Srwatsonstatic int 216173138Srwatsontest_cred_check_relabel(struct ucred *cred, struct label *newlabel) 217104514Srwatson{ 218104514Srwatson 219173138Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 220173138Srwatson LABEL_CHECK(newlabel, MAGIC_CRED); 221173138Srwatson COUNTER_INC(cred_check_relabel); 222113534Srwatson 223104541Srwatson return (0); 224101099Srwatson} 225101099Srwatson 226189529SrwatsonCOUNTER_DECL(cred_check_setaudit); 227189529Srwatsonstatic int 228189529Srwatsontest_cred_check_setaudit(struct ucred *cred, struct auditinfo *ai) 229189529Srwatson{ 230189529Srwatson 231189529Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 232189529Srwatson COUNTER_INC(cred_check_setaudit); 233189529Srwatson 234189529Srwatson return (0); 235189529Srwatson} 236189529Srwatson 237189529SrwatsonCOUNTER_DECL(cred_check_setaudit_addr); 238189529Srwatsonstatic int 239189529Srwatsontest_cred_check_setaudit_addr(struct ucred *cred, 240189529Srwatson struct auditinfo_addr *aia) 241189529Srwatson{ 242189529Srwatson 243189529Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 244189529Srwatson COUNTER_INC(cred_check_setaudit_addr); 245189529Srwatson 246189529Srwatson return (0); 247189529Srwatson} 248189529Srwatson 249189529SrwatsonCOUNTER_DECL(cred_check_setauid); 250189529Srwatsonstatic int 251189529Srwatsontest_cred_check_setauid(struct ucred *cred, uid_t auid) 252189529Srwatson{ 253189529Srwatson 254189529Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 255189529Srwatson COUNTER_INC(cred_check_setauid); 256189529Srwatson 257189529Srwatson return (0); 258189529Srwatson} 259189529Srwatson 260189529SrwatsonCOUNTER_DECL(cred_check_setegid); 261189529Srwatsonstatic int 262189529Srwatsontest_cred_check_setegid(struct ucred *cred, gid_t egid) 263189529Srwatson{ 264189529Srwatson 265189529Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 266189529Srwatson COUNTER_INC(cred_check_setegid); 267189529Srwatson 268189529Srwatson return (0); 269189529Srwatson} 270189529Srwatson 271189529SrwatsonCOUNTER_DECL(proc_check_euid); 272189529Srwatsonstatic int 273189529Srwatsontest_cred_check_seteuid(struct ucred *cred, uid_t euid) 274189529Srwatson{ 275189529Srwatson 276189529Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 277189529Srwatson COUNTER_INC(proc_check_euid); 278189529Srwatson 279189529Srwatson return (0); 280189529Srwatson} 281189529Srwatson 282189529SrwatsonCOUNTER_DECL(cred_check_setregid); 283189529Srwatsonstatic int 284189529Srwatsontest_cred_check_setregid(struct ucred *cred, gid_t rgid, gid_t egid) 285189529Srwatson{ 286189529Srwatson 287189529Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 288189529Srwatson COUNTER_INC(cred_check_setregid); 289189529Srwatson 290189529Srwatson return (0); 291189529Srwatson} 292189529Srwatson 293189529SrwatsonCOUNTER_DECL(cred_check_setreuid); 294189529Srwatsonstatic int 295189529Srwatsontest_cred_check_setreuid(struct ucred *cred, uid_t ruid, uid_t euid) 296189529Srwatson{ 297189529Srwatson 298189529Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 299189529Srwatson COUNTER_INC(cred_check_setreuid); 300189529Srwatson 301189529Srwatson return (0); 302189529Srwatson} 303189529Srwatson 304189529SrwatsonCOUNTER_DECL(cred_check_setgid); 305189529Srwatsonstatic int 306189529Srwatsontest_cred_check_setgid(struct ucred *cred, gid_t gid) 307189529Srwatson{ 308189529Srwatson 309189529Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 310189529Srwatson COUNTER_INC(cred_check_setgid); 311189529Srwatson 312189529Srwatson return (0); 313189529Srwatson} 314189529Srwatson 315189529SrwatsonCOUNTER_DECL(cred_check_setgroups); 316189529Srwatsonstatic int 317189529Srwatsontest_cred_check_setgroups(struct ucred *cred, int ngroups, 318189529Srwatson gid_t *gidset) 319189529Srwatson{ 320189529Srwatson 321189529Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 322189529Srwatson COUNTER_INC(cred_check_setgroups); 323189529Srwatson 324189529Srwatson return (0); 325189529Srwatson} 326189529Srwatson 327189529SrwatsonCOUNTER_DECL(cred_check_setresgid); 328189529Srwatsonstatic int 329189529Srwatsontest_cred_check_setresgid(struct ucred *cred, gid_t rgid, gid_t egid, 330189529Srwatson gid_t sgid) 331189529Srwatson{ 332189529Srwatson 333189529Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 334189529Srwatson COUNTER_INC(cred_check_setresgid); 335189529Srwatson 336189529Srwatson return (0); 337189529Srwatson} 338189529Srwatson 339189529SrwatsonCOUNTER_DECL(cred_check_setresuid); 340189529Srwatsonstatic int 341189529Srwatsontest_cred_check_setresuid(struct ucred *cred, uid_t ruid, uid_t euid, 342189529Srwatson uid_t suid) 343189529Srwatson{ 344189529Srwatson 345189529Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 346189529Srwatson COUNTER_INC(cred_check_setresuid); 347189529Srwatson 348189529Srwatson return (0); 349189529Srwatson} 350189529Srwatson 351189529SrwatsonCOUNTER_DECL(cred_check_setuid); 352189529Srwatsonstatic int 353189529Srwatsontest_cred_check_setuid(struct ucred *cred, uid_t uid) 354189529Srwatson{ 355189529Srwatson 356189529Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 357189529Srwatson COUNTER_INC(cred_check_setuid); 358189529Srwatson 359189529Srwatson return (0); 360189529Srwatson} 361189529Srwatson 362173138SrwatsonCOUNTER_DECL(cred_check_visible); 363104541Srwatsonstatic int 364173138Srwatsontest_cred_check_visible(struct ucred *u1, struct ucred *u2) 365101099Srwatson{ 366101099Srwatson 367173138Srwatson LABEL_CHECK(u1->cr_label, MAGIC_CRED); 368173138Srwatson LABEL_CHECK(u2->cr_label, MAGIC_CRED); 369173138Srwatson COUNTER_INC(cred_check_visible); 370113534Srwatson 371104541Srwatson return (0); 372104514Srwatson} 373104514Srwatson 374173138SrwatsonCOUNTER_DECL(cred_copy_label); 375104514Srwatsonstatic void 376173138Srwatsontest_cred_copy_label(struct label *src, struct label *dest) 377104514Srwatson{ 378104514Srwatson 379173138Srwatson LABEL_CHECK(src, MAGIC_CRED); 380173138Srwatson LABEL_CHECK(dest, MAGIC_CRED); 381173138Srwatson COUNTER_INC(cred_copy_label); 382101099Srwatson} 383101099Srwatson 384184407SrwatsonCOUNTER_DECL(cred_create_init); 385184407Srwatsonstatic void 386184407Srwatsontest_cred_create_init(struct ucred *cred) 387184407Srwatson{ 388184407Srwatson 389184407Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 390184407Srwatson COUNTER_INC(cred_create_init); 391184407Srwatson} 392184407Srwatson 393184407SrwatsonCOUNTER_DECL(cred_create_swapper); 394184407Srwatsonstatic void 395184407Srwatsontest_cred_create_swapper(struct ucred *cred) 396184407Srwatson{ 397184407Srwatson 398184407Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 399184407Srwatson COUNTER_INC(cred_create_swapper); 400184407Srwatson} 401184407Srwatson 402172930SrwatsonCOUNTER_DECL(cred_destroy_label); 403101099Srwatsonstatic void 404172955Srwatsontest_cred_destroy_label(struct label *label) 405101099Srwatson{ 406101099Srwatson 407168947Srwatson LABEL_DESTROY(label, MAGIC_CRED); 408172930Srwatson COUNTER_INC(cred_destroy_label); 409101099Srwatson} 410101099Srwatson 411173138SrwatsonCOUNTER_DECL(cred_externalize_label); 412173138Srwatsonstatic int 413173138Srwatsontest_cred_externalize_label(struct label *label, char *element_name, 414173138Srwatson struct sbuf *sb, int *claimed) 415101099Srwatson{ 416101099Srwatson 417173138Srwatson LABEL_CHECK(label, MAGIC_CRED); 418173138Srwatson COUNTER_INC(cred_externalize_label); 419101099Srwatson 420173138Srwatson return (0); 421101099Srwatson} 422101099Srwatson 423173138SrwatsonCOUNTER_DECL(cred_init_label); 424101099Srwatsonstatic void 425173138Srwatsontest_cred_init_label(struct label *label) 426122875Srwatson{ 427122875Srwatson 428173138Srwatson LABEL_INIT(label, MAGIC_CRED); 429173138Srwatson COUNTER_INC(cred_init_label); 430122875Srwatson} 431122875Srwatson 432173163SrwatsonCOUNTER_DECL(cred_internalize_label); 433173163Srwatsonstatic int 434173163Srwatsontest_cred_internalize_label(struct label *label, char *element_name, 435173163Srwatson char *element_data, int *claimed) 436173163Srwatson{ 437173163Srwatson 438173163Srwatson LABEL_CHECK(label, MAGIC_CRED); 439173163Srwatson COUNTER_INC(cred_internalize_label); 440173163Srwatson 441173163Srwatson return (0); 442173163Srwatson} 443173163Srwatson 444173138SrwatsonCOUNTER_DECL(cred_relabel); 445173112Srwatsonstatic void 446173138Srwatsontest_cred_relabel(struct ucred *cred, struct label *newlabel) 447173112Srwatson{ 448173112Srwatson 449173138Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 450173138Srwatson LABEL_CHECK(newlabel, MAGIC_CRED); 451173138Srwatson COUNTER_INC(cred_relabel); 452173112Srwatson} 453173112Srwatson 454173138SrwatsonCOUNTER_DECL(devfs_create_device); 455122875Srwatsonstatic void 456173138Srwatsontest_devfs_create_device(struct ucred *cred, struct mount *mp, 457173138Srwatson struct cdev *dev, struct devfs_dirent *de, struct label *delabel) 458140635Srwatson{ 459140635Srwatson 460173138Srwatson if (cred != NULL) 461173138Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 462173138Srwatson LABEL_CHECK(delabel, MAGIC_DEVFS); 463173138Srwatson COUNTER_INC(devfs_create_device); 464140635Srwatson} 465140635Srwatson 466173138SrwatsonCOUNTER_DECL(devfs_create_directory); 467140635Srwatsonstatic void 468173138Srwatsontest_devfs_create_directory(struct mount *mp, char *dirname, 469173138Srwatson int dirnamelen, struct devfs_dirent *de, struct label *delabel) 470140635Srwatson{ 471140635Srwatson 472173138Srwatson LABEL_CHECK(delabel, MAGIC_DEVFS); 473173138Srwatson COUNTER_INC(devfs_create_directory); 474140635Srwatson} 475140635Srwatson 476173138SrwatsonCOUNTER_DECL(devfs_create_symlink); 477140635Srwatsonstatic void 478173138Srwatsontest_devfs_create_symlink(struct ucred *cred, struct mount *mp, 479173138Srwatson struct devfs_dirent *dd, struct label *ddlabel, struct devfs_dirent *de, 480173138Srwatson struct label *delabel) 481140635Srwatson{ 482140635Srwatson 483173138Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 484173138Srwatson LABEL_CHECK(ddlabel, MAGIC_DEVFS); 485173138Srwatson LABEL_CHECK(delabel, MAGIC_DEVFS); 486173138Srwatson COUNTER_INC(devfs_create_symlink); 487140635Srwatson} 488140635Srwatson 489173138SrwatsonCOUNTER_DECL(devfs_destroy_label); 490140635Srwatsonstatic void 491173138Srwatsontest_devfs_destroy_label(struct label *label) 492140635Srwatson{ 493140635Srwatson 494173138Srwatson LABEL_DESTROY(label, MAGIC_DEVFS); 495173138Srwatson COUNTER_INC(devfs_destroy_label); 496140635Srwatson} 497140635Srwatson 498173138SrwatsonCOUNTER_DECL(devfs_init_label); 499140635Srwatsonstatic void 500173138Srwatsontest_devfs_init_label(struct label *label) 501101099Srwatson{ 502101099Srwatson 503173138Srwatson LABEL_INIT(label, MAGIC_DEVFS); 504173138Srwatson COUNTER_INC(devfs_init_label); 505101099Srwatson} 506101099Srwatson 507173138SrwatsonCOUNTER_DECL(devfs_update); 508101099Srwatsonstatic void 509173138Srwatsontest_devfs_update(struct mount *mp, struct devfs_dirent *devfs_dirent, 510173138Srwatson struct label *direntlabel, struct vnode *vp, struct label *vplabel) 511101099Srwatson{ 512101099Srwatson 513173138Srwatson LABEL_CHECK(direntlabel, MAGIC_DEVFS); 514173138Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 515173138Srwatson COUNTER_INC(devfs_update); 516101099Srwatson} 517101099Srwatson 518173138SrwatsonCOUNTER_DECL(devfs_vnode_associate); 519101099Srwatsonstatic void 520173138Srwatsontest_devfs_vnode_associate(struct mount *mp, struct label *mplabel, 521173138Srwatson struct devfs_dirent *de, struct label *delabel, struct vnode *vp, 522173138Srwatson struct label *vplabel) 523101099Srwatson{ 524101099Srwatson 525173138Srwatson LABEL_CHECK(mplabel, MAGIC_MOUNT); 526173138Srwatson LABEL_CHECK(delabel, MAGIC_DEVFS); 527173138Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 528173138Srwatson COUNTER_INC(devfs_vnode_associate); 529101099Srwatson} 530101099Srwatson 531173138SrwatsonCOUNTER_DECL(ifnet_check_relabel); 532173138Srwatsonstatic int 533173138Srwatsontest_ifnet_check_relabel(struct ucred *cred, struct ifnet *ifp, 534173138Srwatson struct label *ifplabel, struct label *newlabel) 535104514Srwatson{ 536104514Srwatson 537173138Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 538173138Srwatson LABEL_CHECK(ifplabel, MAGIC_IFNET); 539173138Srwatson LABEL_CHECK(newlabel, MAGIC_IFNET); 540173138Srwatson COUNTER_INC(ifnet_check_relabel); 541104514Srwatson 542173138Srwatson return (0); 543104514Srwatson} 544104514Srwatson 545173138SrwatsonCOUNTER_DECL(ifnet_check_transmit); 546173138Srwatsonstatic int 547173138Srwatsontest_ifnet_check_transmit(struct ifnet *ifp, struct label *ifplabel, 548173141Srwatson struct mbuf *m, struct label *mlabel) 549104514Srwatson{ 550104514Srwatson 551173138Srwatson LABEL_CHECK(ifplabel, MAGIC_IFNET); 552173141Srwatson LABEL_CHECK(mlabel, MAGIC_MBUF); 553173138Srwatson COUNTER_INC(ifnet_check_transmit); 554101099Srwatson 555173138Srwatson return (0); 556145855Srwatson} 557145855Srwatson 558172930SrwatsonCOUNTER_DECL(ifnet_copy_label); 559123173Srwatsonstatic void 560172955Srwatsontest_ifnet_copy_label(struct label *src, struct label *dest) 561131025Srwatson{ 562131025Srwatson 563168944Srwatson LABEL_CHECK(src, MAGIC_IFNET); 564168944Srwatson LABEL_CHECK(dest, MAGIC_IFNET); 565172930Srwatson COUNTER_INC(ifnet_copy_label); 566131025Srwatson} 567131025Srwatson 568173138SrwatsonCOUNTER_DECL(ifnet_create); 569131025Srwatsonstatic void 570173138Srwatsontest_ifnet_create(struct ifnet *ifp, struct label *ifplabel) 571122808Srwatson{ 572122808Srwatson 573173138Srwatson LABEL_CHECK(ifplabel, MAGIC_IFNET); 574173138Srwatson COUNTER_INC(ifnet_create); 575122808Srwatson} 576122808Srwatson 577173138SrwatsonCOUNTER_DECL(ifnet_create_mbuf); 578122808Srwatsonstatic void 579173138Srwatsontest_ifnet_create_mbuf(struct ifnet *ifp, struct label *ifplabel, 580173141Srwatson struct mbuf *m, struct label *mlabel) 581122808Srwatson{ 582122808Srwatson 583173138Srwatson LABEL_CHECK(ifplabel, MAGIC_IFNET); 584173141Srwatson LABEL_CHECK(mlabel, MAGIC_MBUF); 585173138Srwatson COUNTER_INC(ifnet_create_mbuf); 586122808Srwatson} 587122808Srwatson 588173138SrwatsonCOUNTER_DECL(ifnet_destroy_label); 589122808Srwatsonstatic void 590173138Srwatsontest_ifnet_destroy_label(struct label *label) 591122820Srwatson{ 592122820Srwatson 593173138Srwatson LABEL_DESTROY(label, MAGIC_IFNET); 594173138Srwatson COUNTER_INC(ifnet_destroy_label); 595122820Srwatson} 596122820Srwatson 597173093SrwatsonCOUNTER_DECL(ifnet_externalize_label); 598173093Srwatsonstatic int 599173093Srwatsontest_ifnet_externalize_label(struct label *label, char *element_name, 600173093Srwatson struct sbuf *sb, int *claimed) 601173093Srwatson{ 602173093Srwatson 603173093Srwatson LABEL_CHECK(label, MAGIC_IFNET); 604173093Srwatson COUNTER_INC(ifnet_externalize_label); 605173093Srwatson 606173093Srwatson return (0); 607173093Srwatson} 608173093Srwatson 609173138SrwatsonCOUNTER_DECL(ifnet_init_label); 610173138Srwatsonstatic void 611173138Srwatsontest_ifnet_init_label(struct label *label) 612173093Srwatson{ 613173093Srwatson 614173138Srwatson LABEL_INIT(label, MAGIC_IFNET); 615173138Srwatson COUNTER_INC(ifnet_init_label); 616173093Srwatson} 617173093Srwatson 618173163SrwatsonCOUNTER_DECL(ifnet_internalize_label); 619173163Srwatsonstatic int 620173163Srwatsontest_ifnet_internalize_label(struct label *label, char *element_name, 621173163Srwatson char *element_data, int *claimed) 622173163Srwatson{ 623173163Srwatson 624173163Srwatson LABEL_CHECK(label, MAGIC_IFNET); 625173163Srwatson COUNTER_INC(ifnet_internalize_label); 626173163Srwatson 627173163Srwatson return (0); 628173163Srwatson} 629173163Srwatson 630173138SrwatsonCOUNTER_DECL(ifnet_relabel); 631173138Srwatsonstatic void 632173138Srwatsontest_ifnet_relabel(struct ucred *cred, struct ifnet *ifp, 633173138Srwatson struct label *ifplabel, struct label *newlabel) 634173093Srwatson{ 635173093Srwatson 636173138Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 637173138Srwatson LABEL_CHECK(ifplabel, MAGIC_IFNET); 638173138Srwatson LABEL_CHECK(newlabel, MAGIC_IFNET); 639173138Srwatson COUNTER_INC(ifnet_relabel); 640173093Srwatson} 641173093Srwatson 642173138SrwatsonCOUNTER_DECL(inpcb_check_deliver); 643173093Srwatsonstatic int 644173138Srwatsontest_inpcb_check_deliver(struct inpcb *inp, struct label *inplabel, 645173138Srwatson struct mbuf *m, struct label *mlabel) 646173093Srwatson{ 647173093Srwatson 648173138Srwatson LABEL_CHECK(inplabel, MAGIC_INPCB); 649173138Srwatson LABEL_CHECK(mlabel, MAGIC_MBUF); 650173138Srwatson COUNTER_INC(inpcb_check_deliver); 651173093Srwatson 652173093Srwatson return (0); 653173093Srwatson} 654173093Srwatson 655183980SbzCOUNTER_DECL(inpcb_check_visible); 656183980Sbzstatic int 657183980Sbztest_inpcb_check_visible(struct ucred *cred, struct inpcb *inp, 658183980Sbz struct label *inplabel) 659183980Sbz{ 660183980Sbz 661183980Sbz LABEL_CHECK(cred->cr_label, MAGIC_CRED); 662183980Sbz LABEL_CHECK(inplabel, MAGIC_INPCB); 663183980Sbz COUNTER_INC(inpcb_check_visible); 664183980Sbz 665183980Sbz return (0); 666183980Sbz} 667183980Sbz 668173138SrwatsonCOUNTER_DECL(inpcb_create); 669173138Srwatsonstatic void 670173138Srwatsontest_inpcb_create(struct socket *so, struct label *solabel, 671173138Srwatson struct inpcb *inp, struct label *inplabel) 672173093Srwatson{ 673173093Srwatson 674193391Srwatson SOCK_LOCK(so); 675173138Srwatson LABEL_CHECK(solabel, MAGIC_SOCKET); 676193391Srwatson SOCK_UNLOCK(so); 677173138Srwatson LABEL_CHECK(inplabel, MAGIC_INPCB); 678173138Srwatson COUNTER_INC(inpcb_create); 679173093Srwatson} 680173093Srwatson 681173138SrwatsonCOUNTER_DECL(inpcb_create_mbuf); 682173138Srwatsonstatic void 683173138Srwatsontest_inpcb_create_mbuf(struct inpcb *inp, struct label *inplabel, 684173138Srwatson struct mbuf *m, struct label *mlabel) 685105696Srwatson{ 686105696Srwatson 687173138Srwatson LABEL_CHECK(inplabel, MAGIC_INPCB); 688173138Srwatson LABEL_CHECK(mlabel, MAGIC_MBUF); 689173138Srwatson COUNTER_INC(inpcb_create_mbuf); 690101099Srwatson} 691101099Srwatson 692173138SrwatsonCOUNTER_DECL(inpcb_destroy_label); 693101099Srwatsonstatic void 694173138Srwatsontest_inpcb_destroy_label(struct label *label) 695105988Srwatson{ 696105988Srwatson 697173138Srwatson LABEL_DESTROY(label, MAGIC_INPCB); 698173138Srwatson COUNTER_INC(inpcb_destroy_label); 699105988Srwatson} 700105988Srwatson 701173138SrwatsonCOUNTER_DECL(inpcb_init_label); 702105988Srwatsonstatic int 703173138Srwatsontest_inpcb_init_label(struct label *label, int flag) 704105988Srwatson{ 705105988Srwatson 706173138Srwatson if (flag & M_WAITOK) 707173138Srwatson WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, 708173138Srwatson "test_inpcb_init_label() at %s:%d", __FILE__, 709173138Srwatson __LINE__); 710168947Srwatson 711173138Srwatson LABEL_INIT(label, MAGIC_INPCB); 712173138Srwatson COUNTER_INC(inpcb_init_label); 713105988Srwatson return (0); 714105988Srwatson} 715105988Srwatson 716173138SrwatsonCOUNTER_DECL(inpcb_sosetlabel); 717105988Srwatsonstatic void 718173138Srwatsontest_inpcb_sosetlabel(struct socket *so, struct label *solabel, 719173138Srwatson struct inpcb *inp, struct label *inplabel) 720105988Srwatson{ 721105988Srwatson 722193391Srwatson SOCK_LOCK_ASSERT(so); 723193391Srwatson 724173138Srwatson LABEL_CHECK(solabel, MAGIC_SOCKET); 725173138Srwatson LABEL_CHECK(inplabel, MAGIC_INPCB); 726173138Srwatson COUNTER_INC(inpcb_sosetlabel); 727105988Srwatson} 728105988Srwatson 729184308SrwatsonCOUNTER_DECL(ip6q_create); 730184308Srwatsonstatic void 731184308Srwatsontest_ip6q_create(struct mbuf *fragment, struct label *fragmentlabel, 732184308Srwatson struct ip6q *q6, struct label *q6label) 733184308Srwatson{ 734184308Srwatson 735184308Srwatson LABEL_CHECK(fragmentlabel, MAGIC_MBUF); 736184308Srwatson LABEL_CHECK(q6label, MAGIC_IP6Q); 737184308Srwatson COUNTER_INC(ip6q_create); 738184308Srwatson} 739184308Srwatson 740184308SrwatsonCOUNTER_DECL(ip6q_destroy_label); 741184308Srwatsonstatic void 742184308Srwatsontest_ip6q_destroy_label(struct label *label) 743184308Srwatson{ 744184308Srwatson 745184308Srwatson LABEL_DESTROY(label, MAGIC_IP6Q); 746184308Srwatson COUNTER_INC(ip6q_destroy_label); 747184308Srwatson} 748184308Srwatson 749184308SrwatsonCOUNTER_DECL(ip6q_init_label); 750184308Srwatsonstatic int 751184308Srwatsontest_ip6q_init_label(struct label *label, int flag) 752184308Srwatson{ 753184308Srwatson 754184308Srwatson if (flag & M_WAITOK) 755184308Srwatson WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, 756184308Srwatson "test_ip6q_init_label() at %s:%d", __FILE__, 757184308Srwatson __LINE__); 758184308Srwatson 759184308Srwatson LABEL_INIT(label, MAGIC_IP6Q); 760184308Srwatson COUNTER_INC(ip6q_init_label); 761184308Srwatson return (0); 762184308Srwatson} 763184308Srwatson 764184308SrwatsonCOUNTER_DECL(ip6q_match); 765184308Srwatsonstatic int 766184308Srwatsontest_ip6q_match(struct mbuf *fragment, struct label *fragmentlabel, 767184308Srwatson struct ip6q *q6, struct label *q6label) 768184308Srwatson{ 769184308Srwatson 770184308Srwatson LABEL_CHECK(fragmentlabel, MAGIC_MBUF); 771184308Srwatson LABEL_CHECK(q6label, MAGIC_IP6Q); 772184308Srwatson COUNTER_INC(ip6q_match); 773184308Srwatson 774184308Srwatson return (1); 775184308Srwatson} 776184308Srwatson 777184308SrwatsonCOUNTER_DECL(ip6q_reassemble); 778184308Srwatsonstatic void 779184308Srwatsontest_ip6q_reassemble(struct ip6q *q6, struct label *q6label, struct mbuf *m, 780184308Srwatson struct label *mlabel) 781184308Srwatson{ 782184308Srwatson 783184308Srwatson LABEL_CHECK(q6label, MAGIC_IP6Q); 784184308Srwatson LABEL_CHECK(mlabel, MAGIC_MBUF); 785184308Srwatson COUNTER_INC(ip6q_reassemble); 786184308Srwatson} 787184308Srwatson 788184308SrwatsonCOUNTER_DECL(ip6q_update); 789184308Srwatsonstatic void 790184308Srwatsontest_ip6q_update(struct mbuf *m, struct label *mlabel, struct ip6q *q6, 791184308Srwatson struct label *q6label) 792184308Srwatson{ 793184308Srwatson 794184308Srwatson LABEL_CHECK(mlabel, MAGIC_MBUF); 795184308Srwatson LABEL_CHECK(q6label, MAGIC_IP6Q); 796184308Srwatson COUNTER_INC(ip6q_update); 797184308Srwatson} 798184308Srwatson 799173138SrwatsonCOUNTER_DECL(ipq_create); 800105988Srwatsonstatic void 801173138Srwatsontest_ipq_create(struct mbuf *fragment, struct label *fragmentlabel, 802179781Srwatson struct ipq *q, struct label *qlabel) 803101099Srwatson{ 804101099Srwatson 805173138Srwatson LABEL_CHECK(fragmentlabel, MAGIC_MBUF); 806179781Srwatson LABEL_CHECK(qlabel, MAGIC_IPQ); 807173138Srwatson COUNTER_INC(ipq_create); 808101099Srwatson} 809101099Srwatson 810173138SrwatsonCOUNTER_DECL(ipq_destroy_label); 811101099Srwatsonstatic void 812173138Srwatsontest_ipq_destroy_label(struct label *label) 813101099Srwatson{ 814101099Srwatson 815173138Srwatson LABEL_DESTROY(label, MAGIC_IPQ); 816173138Srwatson COUNTER_INC(ipq_destroy_label); 817101099Srwatson} 818101099Srwatson 819173138SrwatsonCOUNTER_DECL(ipq_init_label); 820173138Srwatsonstatic int 821173138Srwatsontest_ipq_init_label(struct label *label, int flag) 822104535Srwatson{ 823104535Srwatson 824173138Srwatson if (flag & M_WAITOK) 825173138Srwatson WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, 826173138Srwatson "test_ipq_init_label() at %s:%d", __FILE__, 827173138Srwatson __LINE__); 828173138Srwatson 829173138Srwatson LABEL_INIT(label, MAGIC_IPQ); 830173138Srwatson COUNTER_INC(ipq_init_label); 831173138Srwatson return (0); 832104535Srwatson} 833104535Srwatson 834173138SrwatsonCOUNTER_DECL(ipq_match); 835105988Srwatsonstatic int 836173138Srwatsontest_ipq_match(struct mbuf *fragment, struct label *fragmentlabel, 837179781Srwatson struct ipq *q, struct label *qlabel) 838101099Srwatson{ 839101099Srwatson 840173138Srwatson LABEL_CHECK(fragmentlabel, MAGIC_MBUF); 841179781Srwatson LABEL_CHECK(qlabel, MAGIC_IPQ); 842173138Srwatson COUNTER_INC(ipq_match); 843119228Srwatson 844173138Srwatson return (1); 845101099Srwatson} 846101099Srwatson 847173138SrwatsonCOUNTER_DECL(ipq_reassemble); 848101099Srwatsonstatic void 849179781Srwatsontest_ipq_reassemble(struct ipq *q, struct label *qlabel, struct mbuf *m, 850173141Srwatson struct label *mlabel) 851101099Srwatson{ 852101099Srwatson 853179781Srwatson LABEL_CHECK(qlabel, MAGIC_IPQ); 854173141Srwatson LABEL_CHECK(mlabel, MAGIC_MBUF); 855173138Srwatson COUNTER_INC(ipq_reassemble); 856101099Srwatson} 857101099Srwatson 858173138SrwatsonCOUNTER_DECL(ipq_update); 859101099Srwatsonstatic void 860179781Srwatsontest_ipq_update(struct mbuf *m, struct label *mlabel, struct ipq *q, 861179781Srwatson struct label *qlabel) 862101099Srwatson{ 863101099Srwatson 864173141Srwatson LABEL_CHECK(mlabel, MAGIC_MBUF); 865179781Srwatson LABEL_CHECK(qlabel, MAGIC_IPQ); 866173138Srwatson COUNTER_INC(ipq_update); 867101099Srwatson} 868101099Srwatson 869173138SrwatsonCOUNTER_DECL(kenv_check_dump); 870101099Srwatsonstatic int 871173138Srwatsontest_kenv_check_dump(struct ucred *cred) 872101099Srwatson{ 873101099Srwatson 874168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 875173138Srwatson COUNTER_INC(kenv_check_dump); 876168947Srwatson 877101099Srwatson return (0); 878101099Srwatson} 879101099Srwatson 880173138SrwatsonCOUNTER_DECL(kenv_check_get); 881173138Srwatsonstatic int 882173138Srwatsontest_kenv_check_get(struct ucred *cred, char *name) 883101099Srwatson{ 884101099Srwatson 885173138Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 886173138Srwatson COUNTER_INC(kenv_check_get); 887101099Srwatson 888173138Srwatson return (0); 889101099Srwatson} 890101099Srwatson 891173138SrwatsonCOUNTER_DECL(kenv_check_set); 892173138Srwatsonstatic int 893173138Srwatsontest_kenv_check_set(struct ucred *cred, char *name, char *value) 894101099Srwatson{ 895101099Srwatson 896168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 897173138Srwatson COUNTER_INC(kenv_check_set); 898101099Srwatson 899173138Srwatson return (0); 900101099Srwatson} 901101099Srwatson 902173138SrwatsonCOUNTER_DECL(kenv_check_unset); 903173138Srwatsonstatic int 904173138Srwatsontest_kenv_check_unset(struct ucred *cred, char *name) 905145855Srwatson{ 906145855Srwatson 907168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 908173138Srwatson COUNTER_INC(kenv_check_unset); 909145855Srwatson 910173138Srwatson return (0); 911101099Srwatson} 912101099Srwatson 913173138SrwatsonCOUNTER_DECL(kld_check_load); 914173138Srwatsonstatic int 915173138Srwatsontest_kld_check_load(struct ucred *cred, struct vnode *vp, 916173138Srwatson struct label *label) 917101099Srwatson{ 918101099Srwatson 919168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 920173138Srwatson LABEL_CHECK(label, MAGIC_VNODE); 921173138Srwatson COUNTER_INC(kld_check_load); 922101099Srwatson 923173138Srwatson return (0); 924101099Srwatson} 925101099Srwatson 926173138SrwatsonCOUNTER_DECL(kld_check_stat); 927173138Srwatsonstatic int 928173138Srwatsontest_kld_check_stat(struct ucred *cred) 929101099Srwatson{ 930101099Srwatson 931168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 932173138Srwatson COUNTER_INC(kld_check_stat); 933101099Srwatson 934173138Srwatson return (0); 935101099Srwatson} 936101099Srwatson 937173138SrwatsonCOUNTER_DECL(mbuf_copy_label); 938101099Srwatsonstatic void 939173138Srwatsontest_mbuf_copy_label(struct label *src, struct label *dest) 940101099Srwatson{ 941101099Srwatson 942173138Srwatson LABEL_CHECK(src, MAGIC_MBUF); 943173138Srwatson LABEL_CHECK(dest, MAGIC_MBUF); 944173138Srwatson COUNTER_INC(mbuf_copy_label); 945101099Srwatson} 946101099Srwatson 947173138SrwatsonCOUNTER_DECL(mbuf_destroy_label); 948101099Srwatsonstatic void 949173138Srwatsontest_mbuf_destroy_label(struct label *label) 950101099Srwatson{ 951101099Srwatson 952173138Srwatson /* 953173138Srwatson * If we're loaded dynamically, there may be mbufs in flight that 954173138Srwatson * didn't have label storage allocated for them. Handle this 955173138Srwatson * gracefully. 956173138Srwatson */ 957173138Srwatson if (label == NULL) 958173138Srwatson return; 959101099Srwatson 960173138Srwatson LABEL_DESTROY(label, MAGIC_MBUF); 961173138Srwatson COUNTER_INC(mbuf_destroy_label); 962122875Srwatson} 963122875Srwatson 964173138SrwatsonCOUNTER_DECL(mbuf_init_label); 965173138Srwatsonstatic int 966173138Srwatsontest_mbuf_init_label(struct label *label, int flag) 967173112Srwatson{ 968173112Srwatson 969173138Srwatson if (flag & M_WAITOK) 970173138Srwatson WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, 971173138Srwatson "test_mbuf_init_label() at %s:%d", __FILE__, 972173138Srwatson __LINE__); 973173112Srwatson 974173138Srwatson LABEL_INIT(label, MAGIC_MBUF); 975173138Srwatson COUNTER_INC(mbuf_init_label); 976173138Srwatson return (0); 977173112Srwatson} 978173112Srwatson 979173138SrwatsonCOUNTER_DECL(mount_check_stat); 980173138Srwatsonstatic int 981173138Srwatsontest_mount_check_stat(struct ucred *cred, struct mount *mp, 982173138Srwatson struct label *mplabel) 983140635Srwatson{ 984140635Srwatson 985173138Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 986173138Srwatson LABEL_CHECK(mplabel, MAGIC_MOUNT); 987173138Srwatson COUNTER_INC(mount_check_stat); 988140635Srwatson 989173138Srwatson return (0); 990140635Srwatson} 991140635Srwatson 992173138SrwatsonCOUNTER_DECL(mount_create); 993140635Srwatsonstatic void 994173138Srwatsontest_mount_create(struct ucred *cred, struct mount *mp, 995173138Srwatson struct label *mplabel) 996140635Srwatson{ 997140635Srwatson 998173138Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 999173138Srwatson LABEL_CHECK(mplabel, MAGIC_MOUNT); 1000173138Srwatson COUNTER_INC(mount_create); 1001140635Srwatson} 1002140635Srwatson 1003173138SrwatsonCOUNTER_DECL(mount_destroy_label); 1004140635Srwatsonstatic void 1005173138Srwatsontest_mount_destroy_label(struct label *label) 1006140635Srwatson{ 1007140635Srwatson 1008173138Srwatson LABEL_DESTROY(label, MAGIC_MOUNT); 1009173138Srwatson COUNTER_INC(mount_destroy_label); 1010140635Srwatson} 1011140635Srwatson 1012173138SrwatsonCOUNTER_DECL(mount_init_label); 1013140635Srwatsonstatic void 1014173138Srwatsontest_mount_init_label(struct label *label) 1015101099Srwatson{ 1016101099Srwatson 1017173138Srwatson LABEL_INIT(label, MAGIC_MOUNT); 1018173138Srwatson COUNTER_INC(mount_init_label); 1019101099Srwatson} 1020101099Srwatson 1021173095SrwatsonCOUNTER_DECL(netatalk_aarp_send); 1022173095Srwatsonstatic void 1023173095Srwatsontest_netatalk_aarp_send(struct ifnet *ifp, struct label *ifplabel, 1024173141Srwatson struct mbuf *m, struct label *mlabel) 1025173095Srwatson{ 1026173095Srwatson 1027173095Srwatson LABEL_CHECK(ifplabel, MAGIC_IFNET); 1028173141Srwatson LABEL_CHECK(mlabel, MAGIC_MBUF); 1029173095Srwatson COUNTER_INC(netatalk_aarp_send); 1030173095Srwatson} 1031173095Srwatson 1032173095SrwatsonCOUNTER_DECL(netinet_arp_send); 1033173095Srwatsonstatic void 1034173095Srwatsontest_netinet_arp_send(struct ifnet *ifp, struct label *ifplabel, 1035173141Srwatson struct mbuf *m, struct label *mlabel) 1036173095Srwatson{ 1037173095Srwatson 1038173095Srwatson LABEL_CHECK(ifplabel, MAGIC_IFNET); 1039173141Srwatson LABEL_CHECK(mlabel, MAGIC_MBUF); 1040173095Srwatson COUNTER_INC(netinet_arp_send); 1041173095Srwatson} 1042173095Srwatson 1043173138SrwatsonCOUNTER_DECL(netinet_fragment); 1044173138Srwatsonstatic void 1045173141Srwatsontest_netinet_fragment(struct mbuf *m, struct label *mlabel, 1046173141Srwatson struct mbuf *frag, struct label *fraglabel) 1047173138Srwatson{ 1048173138Srwatson 1049173141Srwatson LABEL_CHECK(mlabel, MAGIC_MBUF); 1050173141Srwatson LABEL_CHECK(fraglabel, MAGIC_MBUF); 1051173138Srwatson COUNTER_INC(netinet_fragment); 1052173138Srwatson} 1053173138Srwatson 1054172930SrwatsonCOUNTER_DECL(netinet_icmp_reply); 1055101099Srwatsonstatic void 1056173102Srwatsontest_netinet_icmp_reply(struct mbuf *mrecv, struct label *mrecvlabel, 1057173102Srwatson struct mbuf *msend, struct label *msendlabel) 1058119228Srwatson{ 1059119228Srwatson 1060173102Srwatson LABEL_CHECK(mrecvlabel, MAGIC_MBUF); 1061173102Srwatson LABEL_CHECK(msendlabel, MAGIC_MBUF); 1062172930Srwatson COUNTER_INC(netinet_icmp_reply); 1063119228Srwatson} 1064119228Srwatson 1065173102SrwatsonCOUNTER_DECL(netinet_icmp_replyinplace); 1066173102Srwatsonstatic void 1067173102Srwatsontest_netinet_icmp_replyinplace(struct mbuf *m, struct label *mlabel) 1068173102Srwatson{ 1069173102Srwatson 1070173102Srwatson LABEL_CHECK(mlabel, MAGIC_MBUF); 1071173102Srwatson COUNTER_INC(netinet_icmp_replyinplace); 1072173102Srwatson} 1073173102Srwatson 1074173095SrwatsonCOUNTER_DECL(netinet_igmp_send); 1075173095Srwatsonstatic void 1076173095Srwatsontest_netinet_igmp_send(struct ifnet *ifp, struct label *ifplabel, 1077173141Srwatson struct mbuf *m, struct label *mlabel) 1078173095Srwatson{ 1079173095Srwatson 1080173095Srwatson LABEL_CHECK(ifplabel, MAGIC_IFNET); 1081173141Srwatson LABEL_CHECK(mlabel, MAGIC_MBUF); 1082173095Srwatson COUNTER_INC(netinet_igmp_send); 1083173095Srwatson} 1084173095Srwatson 1085172930SrwatsonCOUNTER_DECL(netinet_tcp_reply); 1086119228Srwatsonstatic void 1087172955Srwatsontest_netinet_tcp_reply(struct mbuf *m, struct label *mlabel) 1088119228Srwatson{ 1089119228Srwatson 1090168944Srwatson LABEL_CHECK(mlabel, MAGIC_MBUF); 1091172930Srwatson COUNTER_INC(netinet_tcp_reply); 1092119228Srwatson} 1093119228Srwatson 1094173095SrwatsonCOUNTER_DECL(netinet6_nd6_send); 1095173095Srwatsonstatic void 1096173095Srwatsontest_netinet6_nd6_send(struct ifnet *ifp, struct label *ifplabel, 1097173141Srwatson struct mbuf *m, struct label *mlabel) 1098173095Srwatson{ 1099173095Srwatson 1100173095Srwatson LABEL_CHECK(ifplabel, MAGIC_IFNET); 1101173141Srwatson LABEL_CHECK(mlabel, MAGIC_MBUF); 1102173095Srwatson COUNTER_INC(netinet6_nd6_send); 1103173095Srwatson} 1104173095Srwatson 1105173138SrwatsonCOUNTER_DECL(pipe_check_ioctl); 1106173138Srwatsonstatic int 1107173138Srwatsontest_pipe_check_ioctl(struct ucred *cred, struct pipepair *pp, 1108173141Srwatson struct label *pplabel, unsigned long cmd, void /* caddr_t */ *data) 1109101099Srwatson{ 1110101099Srwatson 1111168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1112173141Srwatson LABEL_CHECK(pplabel, MAGIC_PIPE); 1113173138Srwatson COUNTER_INC(pipe_check_ioctl); 1114173138Srwatson 1115173138Srwatson return (0); 1116101099Srwatson} 1117101099Srwatson 1118173138SrwatsonCOUNTER_DECL(pipe_check_poll); 1119173138Srwatsonstatic int 1120173138Srwatsontest_pipe_check_poll(struct ucred *cred, struct pipepair *pp, 1121173141Srwatson struct label *pplabel) 1122101099Srwatson{ 1123101099Srwatson 1124173138Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1125173141Srwatson LABEL_CHECK(pplabel, MAGIC_PIPE); 1126173138Srwatson COUNTER_INC(pipe_check_poll); 1127173138Srwatson 1128173138Srwatson return (0); 1129101099Srwatson} 1130101099Srwatson 1131173138SrwatsonCOUNTER_DECL(pipe_check_read); 1132173138Srwatsonstatic int 1133173138Srwatsontest_pipe_check_read(struct ucred *cred, struct pipepair *pp, 1134173141Srwatson struct label *pplabel) 1135122875Srwatson{ 1136122875Srwatson 1137173138Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1138173141Srwatson LABEL_CHECK(pplabel, MAGIC_PIPE); 1139173138Srwatson COUNTER_INC(pipe_check_read); 1140173138Srwatson 1141173138Srwatson return (0); 1142122875Srwatson} 1143122875Srwatson 1144173138SrwatsonCOUNTER_DECL(pipe_check_relabel); 1145173138Srwatsonstatic int 1146173138Srwatsontest_pipe_check_relabel(struct ucred *cred, struct pipepair *pp, 1147173141Srwatson struct label *pplabel, struct label *newlabel) 1148101099Srwatson{ 1149101099Srwatson 1150173138Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1151173141Srwatson LABEL_CHECK(pplabel, MAGIC_PIPE); 1152173138Srwatson LABEL_CHECK(newlabel, MAGIC_PIPE); 1153173138Srwatson COUNTER_INC(pipe_check_relabel); 1154173138Srwatson 1155173138Srwatson return (0); 1156101099Srwatson} 1157101099Srwatson 1158173138SrwatsonCOUNTER_DECL(pipe_check_stat); 1159101099Srwatsonstatic int 1160173138Srwatsontest_pipe_check_stat(struct ucred *cred, struct pipepair *pp, 1161173141Srwatson struct label *pplabel) 1162101099Srwatson{ 1163101099Srwatson 1164173138Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1165173141Srwatson LABEL_CHECK(pplabel, MAGIC_PIPE); 1166173138Srwatson COUNTER_INC(pipe_check_stat); 1167119228Srwatson 1168101099Srwatson return (0); 1169101099Srwatson} 1170101099Srwatson 1171173138SrwatsonCOUNTER_DECL(pipe_check_write); 1172173138Srwatsonstatic int 1173173138Srwatsontest_pipe_check_write(struct ucred *cred, struct pipepair *pp, 1174173141Srwatson struct label *pplabel) 1175101099Srwatson{ 1176101099Srwatson 1177168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1178173141Srwatson LABEL_CHECK(pplabel, MAGIC_PIPE); 1179173138Srwatson COUNTER_INC(pipe_check_write); 1180173138Srwatson 1181173138Srwatson return (0); 1182101099Srwatson} 1183101099Srwatson 1184173138SrwatsonCOUNTER_DECL(pipe_copy_label); 1185101099Srwatsonstatic void 1186173138Srwatsontest_pipe_copy_label(struct label *src, struct label *dest) 1187101099Srwatson{ 1188101099Srwatson 1189173138Srwatson LABEL_CHECK(src, MAGIC_PIPE); 1190173138Srwatson LABEL_CHECK(dest, MAGIC_PIPE); 1191173138Srwatson COUNTER_INC(pipe_copy_label); 1192101099Srwatson} 1193101099Srwatson 1194173138SrwatsonCOUNTER_DECL(pipe_create); 1195101099Srwatsonstatic void 1196173138Srwatsontest_pipe_create(struct ucred *cred, struct pipepair *pp, 1197173141Srwatson struct label *pplabel) 1198101099Srwatson{ 1199101099Srwatson 1200168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1201173141Srwatson LABEL_CHECK(pplabel, MAGIC_PIPE); 1202173138Srwatson COUNTER_INC(pipe_create); 1203101099Srwatson} 1204101099Srwatson 1205173138SrwatsonCOUNTER_DECL(pipe_destroy_label); 1206112578Srwatsonstatic void 1207173138Srwatsontest_pipe_destroy_label(struct label *label) 1208112578Srwatson{ 1209112578Srwatson 1210173138Srwatson LABEL_DESTROY(label, MAGIC_PIPE); 1211173138Srwatson COUNTER_INC(pipe_destroy_label); 1212112578Srwatson} 1213112578Srwatson 1214173138SrwatsonCOUNTER_DECL(pipe_externalize_label); 1215173138Srwatsonstatic int 1216173138Srwatsontest_pipe_externalize_label(struct label *label, char *element_name, 1217173138Srwatson struct sbuf *sb, int *claimed) 1218140635Srwatson{ 1219140635Srwatson 1220173138Srwatson LABEL_CHECK(label, MAGIC_PIPE); 1221173138Srwatson COUNTER_INC(pipe_externalize_label); 1222140635Srwatson 1223173138Srwatson return (0); 1224140635Srwatson} 1225140635Srwatson 1226173138SrwatsonCOUNTER_DECL(pipe_init_label); 1227140635Srwatsonstatic void 1228173138Srwatsontest_pipe_init_label(struct label *label) 1229140635Srwatson{ 1230140635Srwatson 1231173138Srwatson LABEL_INIT(label, MAGIC_PIPE); 1232173138Srwatson COUNTER_INC(pipe_init_label); 1233140635Srwatson} 1234140635Srwatson 1235173163SrwatsonCOUNTER_DECL(pipe_internalize_label); 1236173163Srwatsonstatic int 1237173163Srwatsontest_pipe_internalize_label(struct label *label, char *element_name, 1238173163Srwatson char *element_data, int *claimed) 1239173163Srwatson{ 1240173163Srwatson 1241173163Srwatson LABEL_CHECK(label, MAGIC_PIPE); 1242173163Srwatson COUNTER_INC(pipe_internalize_label); 1243173163Srwatson 1244173163Srwatson return (0); 1245173163Srwatson} 1246173163Srwatson 1247173138SrwatsonCOUNTER_DECL(pipe_relabel); 1248140635Srwatsonstatic void 1249173138Srwatsontest_pipe_relabel(struct ucred *cred, struct pipepair *pp, 1250173141Srwatson struct label *pplabel, struct label *newlabel) 1251140635Srwatson{ 1252140635Srwatson 1253173138Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1254173141Srwatson LABEL_CHECK(pplabel, MAGIC_PIPE); 1255173138Srwatson LABEL_CHECK(newlabel, MAGIC_PIPE); 1256173138Srwatson COUNTER_INC(pipe_relabel); 1257140635Srwatson} 1258140635Srwatson 1259173138SrwatsonCOUNTER_DECL(posixsem_check_getvalue); 1260101099Srwatsonstatic int 1261180059Sjhbtest_posixsem_check_getvalue(struct ucred *active_cred, struct ucred *file_cred, 1262180059Sjhb struct ksem *ks, struct label *kslabel) 1263101099Srwatson{ 1264101099Srwatson 1265180059Sjhb LABEL_CHECK(active_cred->cr_label, MAGIC_CRED); 1266180059Sjhb LABEL_CHECK(file_cred->cr_label, MAGIC_CRED); 1267173138Srwatson LABEL_CHECK(kslabel, MAGIC_POSIX_SEM); 1268173138Srwatson COUNTER_INC(posixsem_check_getvalue); 1269119228Srwatson 1270101099Srwatson return (0); 1271101099Srwatson} 1272101099Srwatson 1273173138SrwatsonCOUNTER_DECL(posixsem_check_open); 1274101099Srwatsonstatic int 1275173138Srwatsontest_posixsem_check_open(struct ucred *cred, struct ksem *ks, 1276173138Srwatson struct label *kslabel) 1277101099Srwatson{ 1278101099Srwatson 1279173138Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1280173138Srwatson LABEL_CHECK(kslabel, MAGIC_POSIX_SEM); 1281173138Srwatson COUNTER_INC(posixsem_check_open); 1282119228Srwatson 1283101099Srwatson return (0); 1284101099Srwatson} 1285101099Srwatson 1286173138SrwatsonCOUNTER_DECL(posixsem_check_post); 1287101099Srwatsonstatic int 1288180059Sjhbtest_posixsem_check_post(struct ucred *active_cred, struct ucred *file_cred, 1289180059Sjhb struct ksem *ks, struct label *kslabel) 1290101099Srwatson{ 1291101099Srwatson 1292180059Sjhb LABEL_CHECK(active_cred->cr_label, MAGIC_CRED); 1293180059Sjhb LABEL_CHECK(file_cred->cr_label, MAGIC_CRED); 1294173138Srwatson LABEL_CHECK(kslabel, MAGIC_POSIX_SEM); 1295173138Srwatson COUNTER_INC(posixsem_check_post); 1296168947Srwatson 1297101099Srwatson return (0); 1298101099Srwatson} 1299101099Srwatson 1300224914SkibCOUNTER_DECL(posixsem_check_setmode); 1301224914Skibstatic int 1302224914Skibtest_posixsem_check_setmode(struct ucred *cred, struct ksem *ks, 1303224914Skib struct label *kslabel, mode_t mode) 1304224914Skib{ 1305224914Skib 1306224914Skib LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1307224914Skib LABEL_CHECK(kslabel, MAGIC_POSIX_SHM); 1308224914Skib COUNTER_INC(posixsem_check_setmode); 1309224914Skib return (0); 1310224914Skib} 1311224914Skib 1312224914SkibCOUNTER_DECL(posixsem_check_setowner); 1313224914Skibstatic int 1314224914Skibtest_posixsem_check_setowner(struct ucred *cred, struct ksem *ks, 1315224914Skib struct label *kslabel, uid_t uid, gid_t gid) 1316224914Skib{ 1317224914Skib 1318224914Skib LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1319224914Skib LABEL_CHECK(kslabel, MAGIC_POSIX_SHM); 1320224914Skib COUNTER_INC(posixsem_check_setowner); 1321224914Skib return (0); 1322224914Skib} 1323224914Skib 1324180059SjhbCOUNTER_DECL(posixsem_check_stat); 1325180059Sjhbstatic int 1326180059Sjhbtest_posixsem_check_stat(struct ucred *active_cred, 1327180059Sjhb struct ucred *file_cred, struct ksem *ks, struct label *kslabel) 1328180059Sjhb{ 1329180059Sjhb 1330180059Sjhb LABEL_CHECK(active_cred->cr_label, MAGIC_CRED); 1331180059Sjhb LABEL_CHECK(file_cred->cr_label, MAGIC_CRED); 1332180059Sjhb LABEL_CHECK(kslabel, MAGIC_POSIX_SEM); 1333180059Sjhb COUNTER_INC(posixsem_check_stat); 1334180059Sjhb return (0); 1335180059Sjhb} 1336180059Sjhb 1337173138SrwatsonCOUNTER_DECL(posixsem_check_unlink); 1338101099Srwatsonstatic int 1339173138Srwatsontest_posixsem_check_unlink(struct ucred *cred, struct ksem *ks, 1340173138Srwatson struct label *kslabel) 1341101099Srwatson{ 1342101099Srwatson 1343173138Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1344173138Srwatson LABEL_CHECK(kslabel, MAGIC_POSIX_SEM); 1345173138Srwatson COUNTER_INC(posixsem_check_unlink); 1346119228Srwatson 1347101099Srwatson return (0); 1348101099Srwatson} 1349101099Srwatson 1350173138SrwatsonCOUNTER_DECL(posixsem_check_wait); 1351101099Srwatsonstatic int 1352180059Sjhbtest_posixsem_check_wait(struct ucred *active_cred, struct ucred *file_cred, 1353180059Sjhb struct ksem *ks, struct label *kslabel) 1354122875Srwatson{ 1355122875Srwatson 1356180059Sjhb LABEL_CHECK(active_cred->cr_label, MAGIC_CRED); 1357180059Sjhb LABEL_CHECK(file_cred->cr_label, MAGIC_CRED); 1358173138Srwatson LABEL_CHECK(kslabel, MAGIC_POSIX_SEM); 1359173138Srwatson COUNTER_INC(posixsem_check_wait); 1360122875Srwatson 1361122875Srwatson return (0); 1362122875Srwatson} 1363122875Srwatson 1364173138SrwatsonCOUNTER_DECL(posixsem_create); 1365173138Srwatsonstatic void 1366173138Srwatsontest_posixsem_create(struct ucred *cred, struct ksem *ks, 1367173138Srwatson struct label *kslabel) 1368140635Srwatson{ 1369140635Srwatson 1370168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1371173138Srwatson LABEL_CHECK(kslabel, MAGIC_POSIX_SEM); 1372173138Srwatson COUNTER_INC(posixsem_create); 1373173138Srwatson} 1374140635Srwatson 1375173138SrwatsonCOUNTER_DECL(posixsem_destroy_label); 1376173138Srwatsonstatic void 1377173138Srwatsontest_posixsem_destroy_label(struct label *label) 1378173138Srwatson{ 1379173138Srwatson 1380173138Srwatson LABEL_DESTROY(label, MAGIC_POSIX_SEM); 1381173138Srwatson COUNTER_INC(posixsem_destroy_label); 1382140635Srwatson} 1383140635Srwatson 1384173138SrwatsonCOUNTER_DECL(posixsem_init_label); 1385173138Srwatsonstatic void 1386173138Srwatsontest_posixsem_init_label(struct label *label) 1387173138Srwatson{ 1388173138Srwatson 1389173138Srwatson LABEL_INIT(label, MAGIC_POSIX_SEM); 1390173138Srwatson COUNTER_INC(posixsem_init_label); 1391173138Srwatson} 1392173138Srwatson 1393225344SrwatsonCOUNTER_DECL(posixshm_check_create); 1394225344Srwatsonstatic int 1395225344Srwatsontest_posixshm_check_create(struct ucred *cred, const char *path) 1396225344Srwatson{ 1397225344Srwatson 1398225344Srwatson COUNTER_INC(posixshm_check_create); 1399225344Srwatson return (0); 1400225344Srwatson} 1401225344Srwatson 1402175164SjhbCOUNTER_DECL(posixshm_check_mmap); 1403175164Sjhbstatic int 1404175164Sjhbtest_posixshm_check_mmap(struct ucred *cred, struct shmfd *shmfd, 1405175164Sjhb struct label *shmfdlabel, int prot, int flags) 1406175164Sjhb{ 1407175164Sjhb 1408175164Sjhb LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1409175164Sjhb LABEL_CHECK(shmfdlabel, MAGIC_POSIX_SHM); 1410180031Sjhb COUNTER_INC(posixshm_check_mmap); 1411175164Sjhb return (0); 1412175164Sjhb} 1413175164Sjhb 1414175164SjhbCOUNTER_DECL(posixshm_check_open); 1415175164Sjhbstatic int 1416175164Sjhbtest_posixshm_check_open(struct ucred *cred, struct shmfd *shmfd, 1417225344Srwatson struct label *shmfdlabel, accmode_t accmode) 1418175164Sjhb{ 1419175164Sjhb 1420175164Sjhb LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1421175164Sjhb LABEL_CHECK(shmfdlabel, MAGIC_POSIX_SHM); 1422180031Sjhb COUNTER_INC(posixshm_check_open); 1423175164Sjhb return (0); 1424175164Sjhb} 1425175164Sjhb 1426224914SkibCOUNTER_DECL(posixshm_check_setmode); 1427224914Skibstatic int 1428224914Skibtest_posixshm_check_setmode(struct ucred *cred, struct shmfd *shmfd, 1429224914Skib struct label *shmfdlabel, mode_t mode) 1430224914Skib{ 1431224914Skib 1432224914Skib LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1433224914Skib LABEL_CHECK(shmfdlabel, MAGIC_POSIX_SHM); 1434224914Skib COUNTER_INC(posixshm_check_setmode); 1435224914Skib return (0); 1436224914Skib} 1437224914Skib 1438224914SkibCOUNTER_DECL(posixshm_check_setowner); 1439224914Skibstatic int 1440224914Skibtest_posixshm_check_setowner(struct ucred *cred, struct shmfd *shmfd, 1441224914Skib struct label *shmfdlabel, uid_t uid, gid_t gid) 1442224914Skib{ 1443224914Skib 1444224914Skib LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1445224914Skib LABEL_CHECK(shmfdlabel, MAGIC_POSIX_SHM); 1446224914Skib COUNTER_INC(posixshm_check_setowner); 1447224914Skib return (0); 1448224914Skib} 1449224914Skib 1450175164SjhbCOUNTER_DECL(posixshm_check_stat); 1451175164Sjhbstatic int 1452175164Sjhbtest_posixshm_check_stat(struct ucred *active_cred, 1453175164Sjhb struct ucred *file_cred, struct shmfd *shmfd, struct label *shmfdlabel) 1454175164Sjhb{ 1455175164Sjhb 1456175164Sjhb LABEL_CHECK(active_cred->cr_label, MAGIC_CRED); 1457175164Sjhb LABEL_CHECK(file_cred->cr_label, MAGIC_CRED); 1458175164Sjhb LABEL_CHECK(shmfdlabel, MAGIC_POSIX_SHM); 1459180031Sjhb COUNTER_INC(posixshm_check_stat); 1460175164Sjhb return (0); 1461175164Sjhb} 1462175164Sjhb 1463175164SjhbCOUNTER_DECL(posixshm_check_truncate); 1464175164Sjhbstatic int 1465175164Sjhbtest_posixshm_check_truncate(struct ucred *active_cred, 1466175164Sjhb struct ucred *file_cred, struct shmfd *shmfd, struct label *shmfdlabel) 1467175164Sjhb{ 1468175164Sjhb 1469175164Sjhb LABEL_CHECK(active_cred->cr_label, MAGIC_CRED); 1470175164Sjhb LABEL_CHECK(file_cred->cr_label, MAGIC_CRED); 1471175164Sjhb LABEL_CHECK(shmfdlabel, MAGIC_POSIX_SHM); 1472180031Sjhb COUNTER_INC(posixshm_check_truncate); 1473175164Sjhb return (0); 1474175164Sjhb} 1475175164Sjhb 1476175164SjhbCOUNTER_DECL(posixshm_check_unlink); 1477175164Sjhbstatic int 1478175164Sjhbtest_posixshm_check_unlink(struct ucred *cred, struct shmfd *shmfd, 1479175164Sjhb struct label *shmfdlabel) 1480175164Sjhb{ 1481175164Sjhb 1482175164Sjhb LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1483175164Sjhb LABEL_CHECK(shmfdlabel, MAGIC_POSIX_SHM); 1484180031Sjhb COUNTER_INC(posixshm_check_unlink); 1485175164Sjhb return (0); 1486175164Sjhb} 1487175164Sjhb 1488175164SjhbCOUNTER_DECL(posixshm_create); 1489175164Sjhbstatic void 1490175164Sjhbtest_posixshm_create(struct ucred *cred, struct shmfd *shmfd, 1491175164Sjhb struct label *shmfdlabel) 1492175164Sjhb{ 1493175164Sjhb 1494175164Sjhb LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1495175164Sjhb LABEL_CHECK(shmfdlabel, MAGIC_POSIX_SHM); 1496175164Sjhb COUNTER_INC(posixshm_create); 1497175164Sjhb} 1498175164Sjhb 1499175164SjhbCOUNTER_DECL(posixshm_destroy_label); 1500175164Sjhbstatic void 1501175164Sjhbtest_posixshm_destroy_label(struct label *label) 1502175164Sjhb{ 1503175164Sjhb 1504175164Sjhb LABEL_DESTROY(label, MAGIC_POSIX_SHM); 1505175164Sjhb COUNTER_INC(posixshm_destroy_label); 1506175164Sjhb} 1507175164Sjhb 1508175164SjhbCOUNTER_DECL(posixshm_init_label); 1509175164Sjhbstatic void 1510175164Sjhbtest_posixshm_init_label(struct label *label) 1511175164Sjhb{ 1512175164Sjhb 1513175164Sjhb LABEL_INIT(label, MAGIC_POSIX_SHM); 1514175164Sjhb COUNTER_INC(posixshm_init_label); 1515175164Sjhb} 1516175164Sjhb 1517173138SrwatsonCOUNTER_DECL(proc_check_debug); 1518140635Srwatsonstatic int 1519173138Srwatsontest_proc_check_debug(struct ucred *cred, struct proc *p) 1520140635Srwatson{ 1521140635Srwatson 1522168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1523173138Srwatson LABEL_CHECK(p->p_ucred->cr_label, MAGIC_CRED); 1524173138Srwatson COUNTER_INC(proc_check_debug); 1525140635Srwatson 1526168947Srwatson return (0); 1527140635Srwatson} 1528140635Srwatson 1529173138SrwatsonCOUNTER_DECL(proc_check_sched); 1530140635Srwatsonstatic int 1531173138Srwatsontest_proc_check_sched(struct ucred *cred, struct proc *p) 1532140635Srwatson{ 1533140635Srwatson 1534168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1535173138Srwatson LABEL_CHECK(p->p_ucred->cr_label, MAGIC_CRED); 1536173138Srwatson COUNTER_INC(proc_check_sched); 1537140635Srwatson 1538140635Srwatson return (0); 1539140635Srwatson} 1540140635Srwatson 1541173138SrwatsonCOUNTER_DECL(proc_check_signal); 1542140635Srwatsonstatic int 1543173138Srwatsontest_proc_check_signal(struct ucred *cred, struct proc *p, int signum) 1544140635Srwatson{ 1545140635Srwatson 1546168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1547173138Srwatson LABEL_CHECK(p->p_ucred->cr_label, MAGIC_CRED); 1548173138Srwatson COUNTER_INC(proc_check_signal); 1549140635Srwatson 1550140635Srwatson return (0); 1551140635Srwatson} 1552140635Srwatson 1553173138SrwatsonCOUNTER_DECL(proc_check_wait); 1554112578Srwatsonstatic int 1555173138Srwatsontest_proc_check_wait(struct ucred *cred, struct proc *p) 1556112578Srwatson{ 1557112578Srwatson 1558168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1559173138Srwatson LABEL_CHECK(p->p_ucred->cr_label, MAGIC_CRED); 1560173138Srwatson COUNTER_INC(proc_check_wait); 1561119228Srwatson 1562112578Srwatson return (0); 1563112578Srwatson} 1564112578Srwatson 1565173138SrwatsonCOUNTER_DECL(proc_destroy_label); 1566173138Srwatsonstatic void 1567173138Srwatsontest_proc_destroy_label(struct label *label) 1568173138Srwatson{ 1569173138Srwatson 1570173138Srwatson LABEL_DESTROY(label, MAGIC_PROC); 1571173138Srwatson COUNTER_INC(proc_destroy_label); 1572112578Srwatson} 1573112578Srwatson 1574173138SrwatsonCOUNTER_DECL(proc_init_label); 1575173138Srwatsonstatic void 1576173138Srwatsontest_proc_init_label(struct label *label) 1577173138Srwatson{ 1578173138Srwatson 1579173138Srwatson LABEL_INIT(label, MAGIC_PROC); 1580173138Srwatson COUNTER_INC(proc_init_label); 1581173138Srwatson} 1582173138Srwatson 1583173138SrwatsonCOUNTER_DECL(socket_check_accept); 1584112578Srwatsonstatic int 1585173138Srwatsontest_socket_check_accept(struct ucred *cred, struct socket *so, 1586173138Srwatson struct label *solabel) 1587112578Srwatson{ 1588112578Srwatson 1589168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1590193391Srwatson SOCK_LOCK(so); 1591173138Srwatson LABEL_CHECK(solabel, MAGIC_SOCKET); 1592193391Srwatson SOCK_UNLOCK(so); 1593173138Srwatson COUNTER_INC(socket_check_accept); 1594119228Srwatson 1595112578Srwatson return (0); 1596112578Srwatson} 1597112578Srwatson 1598173138SrwatsonCOUNTER_DECL(socket_check_bind); 1599112578Srwatsonstatic int 1600173138Srwatsontest_socket_check_bind(struct ucred *cred, struct socket *so, 1601173138Srwatson struct label *solabel, struct sockaddr *sa) 1602101099Srwatson{ 1603101099Srwatson 1604168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1605193391Srwatson SOCK_LOCK(so); 1606173138Srwatson LABEL_CHECK(solabel, MAGIC_SOCKET); 1607193391Srwatson SOCK_UNLOCK(so); 1608173138Srwatson COUNTER_INC(socket_check_bind); 1609119228Srwatson 1610101099Srwatson return (0); 1611101099Srwatson} 1612101099Srwatson 1613173138SrwatsonCOUNTER_DECL(socket_check_connect); 1614101099Srwatsonstatic int 1615173138Srwatsontest_socket_check_connect(struct ucred *cred, struct socket *so, 1616173138Srwatson struct label *solabel, struct sockaddr *sa) 1617101099Srwatson{ 1618101099Srwatson 1619168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1620193391Srwatson SOCK_LOCK(so); 1621173138Srwatson LABEL_CHECK(solabel, MAGIC_SOCKET); 1622193391Srwatson SOCK_UNLOCK(so); 1623173138Srwatson COUNTER_INC(socket_check_connect); 1624119228Srwatson 1625101099Srwatson return (0); 1626101099Srwatson} 1627101099Srwatson 1628173138SrwatsonCOUNTER_DECL(socket_check_deliver); 1629101099Srwatsonstatic int 1630173138Srwatsontest_socket_check_deliver(struct socket *so, struct label *solabel, 1631173138Srwatson struct mbuf *m, struct label *mlabel) 1632101099Srwatson{ 1633101099Srwatson 1634193391Srwatson SOCK_LOCK(so); 1635173138Srwatson LABEL_CHECK(solabel, MAGIC_SOCKET); 1636193391Srwatson SOCK_UNLOCK(so); 1637173138Srwatson LABEL_CHECK(mlabel, MAGIC_MBUF); 1638173138Srwatson COUNTER_INC(socket_check_deliver); 1639119228Srwatson 1640101099Srwatson return (0); 1641101099Srwatson} 1642101099Srwatson 1643173138SrwatsonCOUNTER_DECL(socket_check_listen); 1644101099Srwatsonstatic int 1645173138Srwatsontest_socket_check_listen(struct ucred *cred, struct socket *so, 1646173138Srwatson struct label *solabel) 1647102115Srwatson{ 1648102115Srwatson 1649168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1650193391Srwatson SOCK_LOCK(so); 1651173138Srwatson LABEL_CHECK(solabel, MAGIC_SOCKET); 1652193391Srwatson SOCK_UNLOCK(so); 1653173138Srwatson COUNTER_INC(socket_check_listen); 1654119228Srwatson 1655102115Srwatson return (0); 1656102115Srwatson} 1657102115Srwatson 1658173138SrwatsonCOUNTER_DECL(socket_check_poll); 1659102115Srwatsonstatic int 1660173138Srwatsontest_socket_check_poll(struct ucred *cred, struct socket *so, 1661173138Srwatson struct label *solabel) 1662101099Srwatson{ 1663101099Srwatson 1664168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1665193391Srwatson SOCK_LOCK(so); 1666173138Srwatson LABEL_CHECK(solabel, MAGIC_SOCKET); 1667193391Srwatson SOCK_UNLOCK(so); 1668173138Srwatson COUNTER_INC(socket_check_poll); 1669119228Srwatson 1670101099Srwatson return (0); 1671101099Srwatson} 1672101099Srwatson 1673173138SrwatsonCOUNTER_DECL(socket_check_receive); 1674101099Srwatsonstatic int 1675173138Srwatsontest_socket_check_receive(struct ucred *cred, struct socket *so, 1676173138Srwatson struct label *solabel) 1677102115Srwatson{ 1678102115Srwatson 1679168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1680193391Srwatson SOCK_LOCK(so); 1681173138Srwatson LABEL_CHECK(solabel, MAGIC_SOCKET); 1682193391Srwatson SOCK_UNLOCK(so); 1683173138Srwatson COUNTER_INC(socket_check_receive); 1684119228Srwatson 1685102115Srwatson return (0); 1686102115Srwatson} 1687102115Srwatson 1688173138SrwatsonCOUNTER_DECL(socket_check_relabel); 1689102115Srwatsonstatic int 1690173138Srwatsontest_socket_check_relabel(struct ucred *cred, struct socket *so, 1691173138Srwatson struct label *solabel, struct label *newlabel) 1692102115Srwatson{ 1693102115Srwatson 1694193391Srwatson SOCK_LOCK_ASSERT(so); 1695193391Srwatson 1696168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1697173138Srwatson LABEL_CHECK(solabel, MAGIC_SOCKET); 1698173138Srwatson LABEL_CHECK(newlabel, MAGIC_SOCKET); 1699173138Srwatson COUNTER_INC(socket_check_relabel); 1700119228Srwatson 1701102115Srwatson return (0); 1702102115Srwatson} 1703102115Srwatson 1704173138SrwatsonCOUNTER_DECL(socket_check_send); 1705102115Srwatsonstatic int 1706173138Srwatsontest_socket_check_send(struct ucred *cred, struct socket *so, 1707173138Srwatson struct label *solabel) 1708145855Srwatson{ 1709145855Srwatson 1710168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1711193391Srwatson SOCK_LOCK(so); 1712173138Srwatson LABEL_CHECK(solabel, MAGIC_SOCKET); 1713193391Srwatson SOCK_UNLOCK(so); 1714173138Srwatson COUNTER_INC(socket_check_send); 1715145855Srwatson 1716145855Srwatson return (0); 1717145855Srwatson} 1718145855Srwatson 1719173138SrwatsonCOUNTER_DECL(socket_check_stat); 1720173054Srwatsonstatic int 1721173138Srwatsontest_socket_check_stat(struct ucred *cred, struct socket *so, 1722173138Srwatson struct label *solabel) 1723173054Srwatson{ 1724173054Srwatson 1725173054Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1726193391Srwatson SOCK_LOCK(so); 1727173138Srwatson LABEL_CHECK(solabel, MAGIC_SOCKET); 1728193391Srwatson SOCK_UNLOCK(so); 1729173138Srwatson COUNTER_INC(socket_check_stat); 1730173054Srwatson 1731173054Srwatson return (0); 1732173054Srwatson} 1733173054Srwatson 1734173138SrwatsonCOUNTER_DECL(socket_check_visible); 1735173054Srwatsonstatic int 1736173138Srwatsontest_socket_check_visible(struct ucred *cred, struct socket *so, 1737173138Srwatson struct label *solabel) 1738173054Srwatson{ 1739173054Srwatson 1740173054Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1741193391Srwatson SOCK_LOCK(so); 1742173138Srwatson LABEL_CHECK(solabel, MAGIC_SOCKET); 1743193391Srwatson SOCK_UNLOCK(so); 1744173138Srwatson COUNTER_INC(socket_check_visible); 1745173054Srwatson 1746173054Srwatson return (0); 1747173054Srwatson} 1748173054Srwatson 1749173138SrwatsonCOUNTER_DECL(socket_copy_label); 1750173138Srwatsonstatic void 1751173138Srwatsontest_socket_copy_label(struct label *src, struct label *dest) 1752173054Srwatson{ 1753173054Srwatson 1754173138Srwatson LABEL_CHECK(src, MAGIC_SOCKET); 1755173138Srwatson LABEL_CHECK(dest, MAGIC_SOCKET); 1756173138Srwatson COUNTER_INC(socket_copy_label); 1757173138Srwatson} 1758173138Srwatson 1759173138SrwatsonCOUNTER_DECL(socket_create); 1760173138Srwatsonstatic void 1761173141Srwatsontest_socket_create(struct ucred *cred, struct socket *so, 1762173141Srwatson struct label *solabel) 1763173138Srwatson{ 1764173138Srwatson 1765173054Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1766173141Srwatson LABEL_CHECK(solabel, MAGIC_SOCKET); 1767173138Srwatson COUNTER_INC(socket_create); 1768173138Srwatson} 1769173054Srwatson 1770173138SrwatsonCOUNTER_DECL(socket_create_mbuf); 1771173138Srwatsonstatic void 1772193391Srwatsontest_socket_create_mbuf(struct socket *so, struct label *solabel, 1773173141Srwatson struct mbuf *m, struct label *mlabel) 1774173138Srwatson{ 1775173138Srwatson 1776193391Srwatson SOCK_LOCK(so); 1777193391Srwatson LABEL_CHECK(solabel, MAGIC_SOCKET); 1778193391Srwatson SOCK_UNLOCK(so); 1779173141Srwatson LABEL_CHECK(mlabel, MAGIC_MBUF); 1780173138Srwatson COUNTER_INC(socket_create_mbuf); 1781173054Srwatson} 1782173054Srwatson 1783173138SrwatsonCOUNTER_DECL(socket_destroy_label); 1784173138Srwatsonstatic void 1785173138Srwatsontest_socket_destroy_label(struct label *label) 1786173138Srwatson{ 1787173138Srwatson 1788173138Srwatson LABEL_DESTROY(label, MAGIC_SOCKET); 1789173138Srwatson COUNTER_INC(socket_destroy_label); 1790173138Srwatson} 1791173138Srwatson 1792173138SrwatsonCOUNTER_DECL(socket_externalize_label); 1793173054Srwatsonstatic int 1794173138Srwatsontest_socket_externalize_label(struct label *label, char *element_name, 1795173138Srwatson struct sbuf *sb, int *claimed) 1796173054Srwatson{ 1797173054Srwatson 1798173138Srwatson LABEL_CHECK(label, MAGIC_SOCKET); 1799173138Srwatson COUNTER_INC(socket_externalize_label); 1800173054Srwatson 1801173054Srwatson return (0); 1802173054Srwatson} 1803173054Srwatson 1804173138SrwatsonCOUNTER_DECL(socket_init_label); 1805173054Srwatsonstatic int 1806173138Srwatsontest_socket_init_label(struct label *label, int flag) 1807173054Srwatson{ 1808173054Srwatson 1809173138Srwatson if (flag & M_WAITOK) 1810173138Srwatson WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, 1811173138Srwatson "test_socket_init_label() at %s:%d", __FILE__, 1812173138Srwatson __LINE__); 1813173054Srwatson 1814173138Srwatson LABEL_INIT(label, MAGIC_SOCKET); 1815173138Srwatson COUNTER_INC(socket_init_label); 1816173054Srwatson return (0); 1817173054Srwatson} 1818173054Srwatson 1819173163SrwatsonCOUNTER_DECL(socket_internalize_label); 1820173163Srwatsonstatic int 1821173163Srwatsontest_socket_internalize_label(struct label *label, char *element_name, 1822173163Srwatson char *element_data, int *claimed) 1823173163Srwatson{ 1824173163Srwatson 1825173163Srwatson LABEL_CHECK(label, MAGIC_SOCKET); 1826173163Srwatson COUNTER_INC(socket_internalize_label); 1827173163Srwatson 1828173163Srwatson return (0); 1829173163Srwatson} 1830173163Srwatson 1831173138SrwatsonCOUNTER_DECL(socket_newconn); 1832173138Srwatsonstatic void 1833173141Srwatsontest_socket_newconn(struct socket *oldso, struct label *oldsolabel, 1834173141Srwatson struct socket *newso, struct label *newsolabel) 1835101099Srwatson{ 1836101099Srwatson 1837193391Srwatson SOCK_LOCK(oldso); 1838173141Srwatson LABEL_CHECK(oldsolabel, MAGIC_SOCKET); 1839193391Srwatson SOCK_UNLOCK(oldso); 1840193391Srwatson SOCK_LOCK(newso); 1841173141Srwatson LABEL_CHECK(newsolabel, MAGIC_SOCKET); 1842193391Srwatson SOCK_UNLOCK(newso); 1843173138Srwatson COUNTER_INC(socket_newconn); 1844173138Srwatson} 1845173138Srwatson 1846173138SrwatsonCOUNTER_DECL(socket_relabel); 1847173138Srwatsonstatic void 1848173141Srwatsontest_socket_relabel(struct ucred *cred, struct socket *so, 1849173141Srwatson struct label *solabel, struct label *newlabel) 1850173138Srwatson{ 1851173138Srwatson 1852193391Srwatson SOCK_LOCK_ASSERT(so); 1853193391Srwatson 1854168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1855173141Srwatson LABEL_CHECK(solabel, MAGIC_SOCKET); 1856173138Srwatson LABEL_CHECK(newlabel, MAGIC_SOCKET); 1857173138Srwatson COUNTER_INC(socket_relabel); 1858173138Srwatson} 1859119228Srwatson 1860173138SrwatsonCOUNTER_DECL(socketpeer_destroy_label); 1861173138Srwatsonstatic void 1862173138Srwatsontest_socketpeer_destroy_label(struct label *label) 1863173138Srwatson{ 1864173138Srwatson 1865173138Srwatson LABEL_DESTROY(label, MAGIC_SOCKET); 1866173138Srwatson COUNTER_INC(socketpeer_destroy_label); 1867101099Srwatson} 1868101099Srwatson 1869173138SrwatsonCOUNTER_DECL(socketpeer_externalize_label); 1870101099Srwatsonstatic int 1871173138Srwatsontest_socketpeer_externalize_label(struct label *label, char *element_name, 1872173138Srwatson struct sbuf *sb, int *claimed) 1873101099Srwatson{ 1874101099Srwatson 1875173138Srwatson LABEL_CHECK(label, MAGIC_SOCKET); 1876173138Srwatson COUNTER_INC(socketpeer_externalize_label); 1877119228Srwatson 1878101099Srwatson return (0); 1879101099Srwatson} 1880101099Srwatson 1881173138SrwatsonCOUNTER_DECL(socketpeer_init_label); 1882101099Srwatsonstatic int 1883173138Srwatsontest_socketpeer_init_label(struct label *label, int flag) 1884101099Srwatson{ 1885101099Srwatson 1886173138Srwatson if (flag & M_WAITOK) 1887173138Srwatson WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, 1888173138Srwatson "test_socketpeer_init_label() at %s:%d", __FILE__, 1889173138Srwatson __LINE__); 1890119228Srwatson 1891173138Srwatson LABEL_INIT(label, MAGIC_SOCKET); 1892173138Srwatson COUNTER_INC(socketpeer_init_label); 1893101099Srwatson return (0); 1894101099Srwatson} 1895101099Srwatson 1896173138SrwatsonCOUNTER_DECL(socketpeer_set_from_mbuf); 1897173138Srwatsonstatic void 1898173141Srwatsontest_socketpeer_set_from_mbuf(struct mbuf *m, struct label *mlabel, 1899193391Srwatson struct socket *so, struct label *sopeerlabel) 1900168933Srwatson{ 1901168933Srwatson 1902173141Srwatson LABEL_CHECK(mlabel, MAGIC_MBUF); 1903193391Srwatson SOCK_LOCK(so); 1904193391Srwatson LABEL_CHECK(sopeerlabel, MAGIC_SOCKET); 1905193391Srwatson SOCK_UNLOCK(so); 1906173138Srwatson COUNTER_INC(socketpeer_set_from_mbuf); 1907173138Srwatson} 1908168933Srwatson 1909173138SrwatsonCOUNTER_DECL(socketpeer_set_from_socket); 1910173138Srwatsonstatic void 1911173141Srwatsontest_socketpeer_set_from_socket(struct socket *oldso, 1912173141Srwatson struct label *oldsolabel, struct socket *newso, 1913173141Srwatson struct label *newsopeerlabel) 1914173138Srwatson{ 1915173138Srwatson 1916193391Srwatson SOCK_LOCK(oldso); 1917173141Srwatson LABEL_CHECK(oldsolabel, MAGIC_SOCKET); 1918193391Srwatson SOCK_UNLOCK(oldso); 1919193391Srwatson SOCK_LOCK(newso); 1920173141Srwatson LABEL_CHECK(newsopeerlabel, MAGIC_SOCKET); 1921193391Srwatson SOCK_UNLOCK(newso); 1922173138Srwatson COUNTER_INC(socketpeer_set_from_socket); 1923168933Srwatson} 1924168933Srwatson 1925173138SrwatsonCOUNTER_DECL(syncache_create); 1926173138Srwatsonstatic void 1927173138Srwatsontest_syncache_create(struct label *label, struct inpcb *inp) 1928171047Srwatson{ 1929171047Srwatson 1930173138Srwatson LABEL_CHECK(label, MAGIC_SYNCACHE); 1931173138Srwatson COUNTER_INC(syncache_create); 1932173138Srwatson} 1933171047Srwatson 1934173138SrwatsonCOUNTER_DECL(syncache_create_mbuf); 1935173138Srwatsonstatic void 1936173138Srwatsontest_syncache_create_mbuf(struct label *sc_label, struct mbuf *m, 1937173138Srwatson struct label *mlabel) 1938173138Srwatson{ 1939173138Srwatson 1940173138Srwatson LABEL_CHECK(sc_label, MAGIC_SYNCACHE); 1941173138Srwatson LABEL_CHECK(mlabel, MAGIC_MBUF); 1942173138Srwatson COUNTER_INC(syncache_create_mbuf); 1943171047Srwatson} 1944171047Srwatson 1945173138SrwatsonCOUNTER_DECL(syncache_destroy_label); 1946173138Srwatsonstatic void 1947173138Srwatsontest_syncache_destroy_label(struct label *label) 1948173138Srwatson{ 1949173138Srwatson 1950173138Srwatson LABEL_DESTROY(label, MAGIC_SYNCACHE); 1951173138Srwatson COUNTER_INC(syncache_destroy_label); 1952173138Srwatson} 1953173138Srwatson 1954173138SrwatsonCOUNTER_DECL(syncache_init_label); 1955168933Srwatsonstatic int 1956173138Srwatsontest_syncache_init_label(struct label *label, int flag) 1957168933Srwatson{ 1958168933Srwatson 1959173138Srwatson if (flag & M_WAITOK) 1960173138Srwatson WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, 1961173138Srwatson "test_syncache_init_label() at %s:%d", __FILE__, 1962173138Srwatson __LINE__); 1963173138Srwatson LABEL_INIT(label, MAGIC_SYNCACHE); 1964173138Srwatson COUNTER_INC(syncache_init_label); 1965168933Srwatson return (0); 1966168933Srwatson} 1967168933Srwatson 1968173138SrwatsonCOUNTER_DECL(system_check_acct); 1969168933Srwatsonstatic int 1970173138Srwatsontest_system_check_acct(struct ucred *cred, struct vnode *vp, 1971173138Srwatson struct label *vplabel) 1972145147Srwatson{ 1973145147Srwatson 1974168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1975173138Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 1976173138Srwatson COUNTER_INC(system_check_acct); 1977145147Srwatson 1978145147Srwatson return (0); 1979145147Srwatson} 1980145147Srwatson 1981173138SrwatsonCOUNTER_DECL(system_check_audit); 1982145147Srwatsonstatic int 1983173138Srwatsontest_system_check_audit(struct ucred *cred, void *record, int length) 1984145147Srwatson{ 1985145147Srwatson 1986168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1987173138Srwatson COUNTER_INC(system_check_audit); 1988145147Srwatson 1989145147Srwatson return (0); 1990145147Srwatson} 1991145147Srwatson 1992173138SrwatsonCOUNTER_DECL(system_check_auditctl); 1993145147Srwatsonstatic int 1994173138Srwatsontest_system_check_auditctl(struct ucred *cred, struct vnode *vp, 1995173138Srwatson struct label *vplabel) 1996145147Srwatson{ 1997145147Srwatson 1998168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1999173138Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2000173138Srwatson COUNTER_INC(system_check_auditctl); 2001145147Srwatson 2002145147Srwatson return (0); 2003145147Srwatson} 2004145147Srwatson 2005173138SrwatsonCOUNTER_DECL(system_check_auditon); 2006145147Srwatsonstatic int 2007173138Srwatsontest_system_check_auditon(struct ucred *cred, int cmd) 2008145147Srwatson{ 2009145147Srwatson 2010168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2011173138Srwatson COUNTER_INC(system_check_auditon); 2012145147Srwatson 2013145147Srwatson return (0); 2014145147Srwatson} 2015145147Srwatson 2016173138SrwatsonCOUNTER_DECL(system_check_reboot); 2017145147Srwatsonstatic int 2018173138Srwatsontest_system_check_reboot(struct ucred *cred, int how) 2019145147Srwatson{ 2020145147Srwatson 2021168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2022173138Srwatson COUNTER_INC(system_check_reboot); 2023145147Srwatson 2024145147Srwatson return (0); 2025145147Srwatson} 2026145147Srwatson 2027173138SrwatsonCOUNTER_DECL(system_check_swapoff); 2028145147Srwatsonstatic int 2029173138Srwatsontest_system_check_swapoff(struct ucred *cred, struct vnode *vp, 2030173138Srwatson struct label *vplabel) 2031145147Srwatson{ 2032145147Srwatson 2033168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2034173138Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2035173138Srwatson COUNTER_INC(system_check_swapoff); 2036145147Srwatson 2037145147Srwatson return (0); 2038145147Srwatson} 2039145147Srwatson 2040173138SrwatsonCOUNTER_DECL(system_check_swapon); 2041145147Srwatsonstatic int 2042173138Srwatsontest_system_check_swapon(struct ucred *cred, struct vnode *vp, 2043173138Srwatson struct label *vplabel) 2044145147Srwatson{ 2045145147Srwatson 2046168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2047173138Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2048173138Srwatson COUNTER_INC(system_check_swapon); 2049145147Srwatson 2050145147Srwatson return (0); 2051145147Srwatson} 2052145147Srwatson 2053173138SrwatsonCOUNTER_DECL(system_check_sysctl); 2054145147Srwatsonstatic int 2055173138Srwatsontest_system_check_sysctl(struct ucred *cred, struct sysctl_oid *oidp, 2056173138Srwatson void *arg1, int arg2, struct sysctl_req *req) 2057145147Srwatson{ 2058145147Srwatson 2059168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2060173138Srwatson COUNTER_INC(system_check_sysctl); 2061145147Srwatson 2062145147Srwatson return (0); 2063145147Srwatson} 2064145147Srwatson 2065173138SrwatsonCOUNTER_DECL(sysvmsg_cleanup); 2066173138Srwatsonstatic void 2067173138Srwatsontest_sysvmsg_cleanup(struct label *msglabel) 2068145147Srwatson{ 2069145147Srwatson 2070173138Srwatson LABEL_CHECK(msglabel, MAGIC_SYSV_MSG); 2071173138Srwatson COUNTER_INC(sysvmsg_cleanup); 2072173138Srwatson} 2073145147Srwatson 2074173138SrwatsonCOUNTER_DECL(sysvmsg_create); 2075173138Srwatsonstatic void 2076173138Srwatsontest_sysvmsg_create(struct ucred *cred, struct msqid_kernel *msqkptr, 2077173138Srwatson struct label *msqlabel, struct msg *msgptr, struct label *msglabel) 2078173138Srwatson{ 2079173138Srwatson 2080173138Srwatson LABEL_CHECK(msglabel, MAGIC_SYSV_MSG); 2081173138Srwatson LABEL_CHECK(msqlabel, MAGIC_SYSV_MSQ); 2082173138Srwatson COUNTER_INC(sysvmsg_create); 2083145147Srwatson} 2084145147Srwatson 2085173138SrwatsonCOUNTER_DECL(sysvmsg_destroy_label); 2086173138Srwatsonstatic void 2087173138Srwatsontest_sysvmsg_destroy_label(struct label *label) 2088145234Srwatson{ 2089145234Srwatson 2090173138Srwatson LABEL_DESTROY(label, MAGIC_SYSV_MSG); 2091173138Srwatson COUNTER_INC(sysvmsg_destroy_label); 2092173138Srwatson} 2093145234Srwatson 2094173138SrwatsonCOUNTER_DECL(sysvmsg_init_label); 2095173138Srwatsonstatic void 2096173138Srwatsontest_sysvmsg_init_label(struct label *label) 2097173138Srwatson{ 2098173138Srwatson LABEL_INIT(label, MAGIC_SYSV_MSG); 2099173138Srwatson COUNTER_INC(sysvmsg_init_label); 2100145234Srwatson} 2101145234Srwatson 2102173138SrwatsonCOUNTER_DECL(sysvmsq_check_msgmsq); 2103145234Srwatsonstatic int 2104173138Srwatsontest_sysvmsq_check_msgmsq(struct ucred *cred, struct msg *msgptr, 2105173138Srwatson struct label *msglabel, struct msqid_kernel *msqkptr, 2106173138Srwatson struct label *msqklabel) 2107145167Srwatson{ 2108145167Srwatson 2109173138Srwatson LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ); 2110173138Srwatson LABEL_CHECK(msglabel, MAGIC_SYSV_MSG); 2111168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2112173138Srwatson COUNTER_INC(sysvmsq_check_msgmsq); 2113145167Srwatson 2114173138Srwatson return (0); 2115145167Srwatson} 2116145167Srwatson 2117173138SrwatsonCOUNTER_DECL(sysvmsq_check_msgrcv); 2118145167Srwatsonstatic int 2119173138Srwatsontest_sysvmsq_check_msgrcv(struct ucred *cred, struct msg *msgptr, 2120173138Srwatson struct label *msglabel) 2121101099Srwatson{ 2122101099Srwatson 2123173138Srwatson LABEL_CHECK(msglabel, MAGIC_SYSV_MSG); 2124168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2125173138Srwatson COUNTER_INC(sysvmsq_check_msgrcv); 2126119228Srwatson 2127101099Srwatson return (0); 2128101099Srwatson} 2129101099Srwatson 2130173138SrwatsonCOUNTER_DECL(sysvmsq_check_msgrmid); 2131101099Srwatsonstatic int 2132173138Srwatsontest_sysvmsq_check_msgrmid(struct ucred *cred, struct msg *msgptr, 2133173138Srwatson struct label *msglabel) 2134101099Srwatson{ 2135101099Srwatson 2136173138Srwatson LABEL_CHECK(msglabel, MAGIC_SYSV_MSG); 2137168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2138173138Srwatson COUNTER_INC(sysvmsq_check_msgrmid); 2139119228Srwatson 2140101099Srwatson return (0); 2141101099Srwatson} 2142101099Srwatson 2143173138SrwatsonCOUNTER_DECL(sysvmsq_check_msqget); 2144101099Srwatsonstatic int 2145173138Srwatsontest_sysvmsq_check_msqget(struct ucred *cred, 2146173138Srwatson struct msqid_kernel *msqkptr, struct label *msqklabel) 2147101099Srwatson{ 2148101099Srwatson 2149173138Srwatson LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ); 2150173138Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2151173138Srwatson COUNTER_INC(sysvmsq_check_msqget); 2152119228Srwatson 2153101099Srwatson return (0); 2154101099Srwatson} 2155101099Srwatson 2156173138SrwatsonCOUNTER_DECL(sysvmsq_check_msqsnd); 2157101099Srwatsonstatic int 2158173138Srwatsontest_sysvmsq_check_msqsnd(struct ucred *cred, 2159173138Srwatson struct msqid_kernel *msqkptr, struct label *msqklabel) 2160101099Srwatson{ 2161101099Srwatson 2162173138Srwatson LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ); 2163168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2164173138Srwatson COUNTER_INC(sysvmsq_check_msqsnd); 2165119228Srwatson 2166101099Srwatson return (0); 2167101099Srwatson} 2168101099Srwatson 2169173138SrwatsonCOUNTER_DECL(sysvmsq_check_msqrcv); 2170101099Srwatsonstatic int 2171173138Srwatsontest_sysvmsq_check_msqrcv(struct ucred *cred, 2172173138Srwatson struct msqid_kernel *msqkptr, struct label *msqklabel) 2173101099Srwatson{ 2174101099Srwatson 2175173138Srwatson LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ); 2176168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2177173138Srwatson COUNTER_INC(sysvmsq_check_msqrcv); 2178119228Srwatson 2179101099Srwatson return (0); 2180101099Srwatson} 2181101099Srwatson 2182173138SrwatsonCOUNTER_DECL(sysvmsq_check_msqctl); 2183101099Srwatsonstatic int 2184173138Srwatsontest_sysvmsq_check_msqctl(struct ucred *cred, 2185173138Srwatson struct msqid_kernel *msqkptr, struct label *msqklabel, int cmd) 2186145167Srwatson{ 2187145167Srwatson 2188173138Srwatson LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ); 2189168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2190173138Srwatson COUNTER_INC(sysvmsq_check_msqctl); 2191145167Srwatson 2192145167Srwatson return (0); 2193145167Srwatson} 2194145167Srwatson 2195173138SrwatsonCOUNTER_DECL(sysvmsq_cleanup); 2196173138Srwatsonstatic void 2197173138Srwatsontest_sysvmsq_cleanup(struct label *msqlabel) 2198101099Srwatson{ 2199101099Srwatson 2200173138Srwatson LABEL_CHECK(msqlabel, MAGIC_SYSV_MSQ); 2201173138Srwatson COUNTER_INC(sysvmsq_cleanup); 2202173138Srwatson} 2203119228Srwatson 2204173138SrwatsonCOUNTER_DECL(sysvmsq_create); 2205173138Srwatsonstatic void 2206173138Srwatsontest_sysvmsq_create(struct ucred *cred, 2207173138Srwatson struct msqid_kernel *msqkptr, struct label *msqlabel) 2208173138Srwatson{ 2209173138Srwatson 2210173138Srwatson LABEL_CHECK(msqlabel, MAGIC_SYSV_MSQ); 2211173138Srwatson COUNTER_INC(sysvmsq_create); 2212101099Srwatson} 2213101099Srwatson 2214173138SrwatsonCOUNTER_DECL(sysvmsq_destroy_label); 2215173138Srwatsonstatic void 2216173138Srwatsontest_sysvmsq_destroy_label(struct label *label) 2217145167Srwatson{ 2218145167Srwatson 2219173138Srwatson LABEL_DESTROY(label, MAGIC_SYSV_MSQ); 2220173138Srwatson COUNTER_INC(sysvmsq_destroy_label); 2221173138Srwatson} 2222145167Srwatson 2223173138SrwatsonCOUNTER_DECL(sysvmsq_init_label); 2224173138Srwatsonstatic void 2225173138Srwatsontest_sysvmsq_init_label(struct label *label) 2226173138Srwatson{ 2227173138Srwatson LABEL_INIT(label, MAGIC_SYSV_MSQ); 2228173138Srwatson COUNTER_INC(sysvmsq_init_label); 2229145167Srwatson} 2230145167Srwatson 2231173138SrwatsonCOUNTER_DECL(sysvsem_check_semctl); 2232145167Srwatsonstatic int 2233173138Srwatsontest_sysvsem_check_semctl(struct ucred *cred, 2234173138Srwatson struct semid_kernel *semakptr, struct label *semaklabel, int cmd) 2235145167Srwatson{ 2236145167Srwatson 2237168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2238173138Srwatson LABEL_CHECK(semaklabel, MAGIC_SYSV_SEM); 2239173138Srwatson COUNTER_INC(sysvsem_check_semctl); 2240145167Srwatson 2241173138Srwatson return (0); 2242145167Srwatson} 2243145167Srwatson 2244173138SrwatsonCOUNTER_DECL(sysvsem_check_semget); 2245145167Srwatsonstatic int 2246173138Srwatsontest_sysvsem_check_semget(struct ucred *cred, 2247173138Srwatson struct semid_kernel *semakptr, struct label *semaklabel) 2248145167Srwatson{ 2249145167Srwatson 2250168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2251173138Srwatson LABEL_CHECK(semaklabel, MAGIC_SYSV_SEM); 2252173138Srwatson COUNTER_INC(sysvsem_check_semget); 2253145167Srwatson 2254145167Srwatson return (0); 2255145167Srwatson} 2256145167Srwatson 2257173138SrwatsonCOUNTER_DECL(sysvsem_check_semop); 2258112578Srwatsonstatic int 2259173138Srwatsontest_sysvsem_check_semop(struct ucred *cred, 2260173138Srwatson struct semid_kernel *semakptr, struct label *semaklabel, size_t accesstype) 2261112578Srwatson{ 2262112578Srwatson 2263168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2264173138Srwatson LABEL_CHECK(semaklabel, MAGIC_SYSV_SEM); 2265173138Srwatson COUNTER_INC(sysvsem_check_semop); 2266119228Srwatson 2267112578Srwatson return (0); 2268112578Srwatson} 2269112578Srwatson 2270173138SrwatsonCOUNTER_DECL(sysvsem_cleanup); 2271173138Srwatsonstatic void 2272173138Srwatsontest_sysvsem_cleanup(struct label *semalabel) 2273168933Srwatson{ 2274168933Srwatson 2275173138Srwatson LABEL_CHECK(semalabel, MAGIC_SYSV_SEM); 2276173138Srwatson COUNTER_INC(sysvsem_cleanup); 2277173138Srwatson} 2278168933Srwatson 2279173138SrwatsonCOUNTER_DECL(sysvsem_create); 2280173138Srwatsonstatic void 2281173138Srwatsontest_sysvsem_create(struct ucred *cred, struct semid_kernel *semakptr, 2282173138Srwatson struct label *semalabel) 2283173138Srwatson{ 2284173138Srwatson 2285173138Srwatson LABEL_CHECK(semalabel, MAGIC_SYSV_SEM); 2286173138Srwatson COUNTER_INC(sysvsem_create); 2287168933Srwatson} 2288168933Srwatson 2289173138SrwatsonCOUNTER_DECL(sysvsem_destroy_label); 2290173138Srwatsonstatic void 2291173138Srwatsontest_sysvsem_destroy_label(struct label *label) 2292168933Srwatson{ 2293168933Srwatson 2294173138Srwatson LABEL_DESTROY(label, MAGIC_SYSV_SEM); 2295173138Srwatson COUNTER_INC(sysvsem_destroy_label); 2296173138Srwatson} 2297168933Srwatson 2298173138SrwatsonCOUNTER_DECL(sysvsem_init_label); 2299173138Srwatsonstatic void 2300173138Srwatsontest_sysvsem_init_label(struct label *label) 2301173138Srwatson{ 2302173138Srwatson LABEL_INIT(label, MAGIC_SYSV_SEM); 2303173138Srwatson COUNTER_INC(sysvsem_init_label); 2304168933Srwatson} 2305168933Srwatson 2306173138SrwatsonCOUNTER_DECL(sysvshm_check_shmat); 2307168933Srwatsonstatic int 2308173138Srwatsontest_sysvshm_check_shmat(struct ucred *cred, 2309173138Srwatson struct shmid_kernel *shmsegptr, struct label *shmseglabel, int shmflg) 2310168933Srwatson{ 2311168933Srwatson 2312168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2313173138Srwatson LABEL_CHECK(shmseglabel, MAGIC_SYSV_SHM); 2314173138Srwatson COUNTER_INC(sysvshm_check_shmat); 2315168933Srwatson 2316173138Srwatson return (0); 2317168933Srwatson} 2318168933Srwatson 2319173138SrwatsonCOUNTER_DECL(sysvshm_check_shmctl); 2320168933Srwatsonstatic int 2321173138Srwatsontest_sysvshm_check_shmctl(struct ucred *cred, 2322173138Srwatson struct shmid_kernel *shmsegptr, struct label *shmseglabel, int cmd) 2323112578Srwatson{ 2324112578Srwatson 2325168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2326173138Srwatson LABEL_CHECK(shmseglabel, MAGIC_SYSV_SHM); 2327173138Srwatson COUNTER_INC(sysvshm_check_shmctl); 2328119228Srwatson 2329173138Srwatson return (0); 2330112578Srwatson} 2331112578Srwatson 2332173138SrwatsonCOUNTER_DECL(sysvshm_check_shmdt); 2333112578Srwatsonstatic int 2334173138Srwatsontest_sysvshm_check_shmdt(struct ucred *cred, 2335173138Srwatson struct shmid_kernel *shmsegptr, struct label *shmseglabel) 2336112578Srwatson{ 2337112578Srwatson 2338168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2339173138Srwatson LABEL_CHECK(shmseglabel, MAGIC_SYSV_SHM); 2340173138Srwatson COUNTER_INC(sysvshm_check_shmdt); 2341119228Srwatson 2342112578Srwatson return (0); 2343112578Srwatson} 2344112578Srwatson 2345173138SrwatsonCOUNTER_DECL(sysvshm_check_shmget); 2346112578Srwatsonstatic int 2347173138Srwatsontest_sysvshm_check_shmget(struct ucred *cred, 2348173138Srwatson struct shmid_kernel *shmsegptr, struct label *shmseglabel, int shmflg) 2349112578Srwatson{ 2350112578Srwatson 2351168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2352173138Srwatson LABEL_CHECK(shmseglabel, MAGIC_SYSV_SHM); 2353173138Srwatson COUNTER_INC(sysvshm_check_shmget); 2354119228Srwatson 2355112578Srwatson return (0); 2356112578Srwatson} 2357112578Srwatson 2358173138SrwatsonCOUNTER_DECL(sysvshm_cleanup); 2359173138Srwatsonstatic void 2360173138Srwatsontest_sysvshm_cleanup(struct label *shmlabel) 2361173138Srwatson{ 2362173138Srwatson 2363173138Srwatson LABEL_CHECK(shmlabel, MAGIC_SYSV_SHM); 2364173138Srwatson COUNTER_INC(sysvshm_cleanup); 2365173138Srwatson} 2366173138Srwatson 2367173138SrwatsonCOUNTER_DECL(sysvshm_create); 2368173138Srwatsonstatic void 2369173138Srwatsontest_sysvshm_create(struct ucred *cred, struct shmid_kernel *shmsegptr, 2370173138Srwatson struct label *shmlabel) 2371173138Srwatson{ 2372173138Srwatson 2373173138Srwatson LABEL_CHECK(shmlabel, MAGIC_SYSV_SHM); 2374173138Srwatson COUNTER_INC(sysvshm_create); 2375173138Srwatson} 2376173138Srwatson 2377173138SrwatsonCOUNTER_DECL(sysvshm_destroy_label); 2378173138Srwatsonstatic void 2379173138Srwatsontest_sysvshm_destroy_label(struct label *label) 2380173138Srwatson{ 2381173138Srwatson 2382173138Srwatson LABEL_DESTROY(label, MAGIC_SYSV_SHM); 2383173138Srwatson COUNTER_INC(sysvshm_destroy_label); 2384173138Srwatson} 2385173138Srwatson 2386173138SrwatsonCOUNTER_DECL(sysvshm_init_label); 2387173138Srwatsonstatic void 2388173138Srwatsontest_sysvshm_init_label(struct label *label) 2389173138Srwatson{ 2390173138Srwatson LABEL_INIT(label, MAGIC_SYSV_SHM); 2391173138Srwatson COUNTER_INC(sysvshm_init_label); 2392173138Srwatson} 2393173138Srwatson 2394173138SrwatsonCOUNTER_DECL(thread_userret); 2395173138Srwatsonstatic void 2396173138Srwatsontest_thread_userret(struct thread *td) 2397173138Srwatson{ 2398173138Srwatson 2399173138Srwatson COUNTER_INC(thread_userret); 2400173138Srwatson} 2401173138Srwatson 2402173138SrwatsonCOUNTER_DECL(vnode_associate_extattr); 2403112578Srwatsonstatic int 2404173138Srwatsontest_vnode_associate_extattr(struct mount *mp, struct label *mplabel, 2405173138Srwatson struct vnode *vp, struct label *vplabel) 2406112578Srwatson{ 2407112578Srwatson 2408173138Srwatson LABEL_CHECK(mplabel, MAGIC_MOUNT); 2409173138Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2410173138Srwatson COUNTER_INC(vnode_associate_extattr); 2411119228Srwatson 2412112578Srwatson return (0); 2413112578Srwatson} 2414112578Srwatson 2415173138SrwatsonCOUNTER_DECL(vnode_associate_singlelabel); 2416173138Srwatsonstatic void 2417173138Srwatsontest_vnode_associate_singlelabel(struct mount *mp, struct label *mplabel, 2418173138Srwatson struct vnode *vp, struct label *vplabel) 2419173138Srwatson{ 2420173138Srwatson 2421173138Srwatson LABEL_CHECK(mplabel, MAGIC_MOUNT); 2422173138Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2423173138Srwatson COUNTER_INC(vnode_associate_singlelabel); 2424173138Srwatson} 2425173138Srwatson 2426172930SrwatsonCOUNTER_DECL(vnode_check_access); 2427112578Srwatsonstatic int 2428172955Srwatsontest_vnode_check_access(struct ucred *cred, struct vnode *vp, 2429184413Strasz struct label *vplabel, accmode_t accmode) 2430101099Srwatson{ 2431101099Srwatson 2432168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2433168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2434172930Srwatson COUNTER_INC(vnode_check_access); 2435119228Srwatson 2436101099Srwatson return (0); 2437101099Srwatson} 2438101099Srwatson 2439172930SrwatsonCOUNTER_DECL(vnode_check_chdir); 2440101099Srwatsonstatic int 2441172955Srwatsontest_vnode_check_chdir(struct ucred *cred, struct vnode *dvp, 2442168976Srwatson struct label *dvplabel) 2443101099Srwatson{ 2444101099Srwatson 2445168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2446168976Srwatson LABEL_CHECK(dvplabel, MAGIC_VNODE); 2447172930Srwatson COUNTER_INC(vnode_check_chdir); 2448119228Srwatson 2449101099Srwatson return (0); 2450101099Srwatson} 2451101099Srwatson 2452172930SrwatsonCOUNTER_DECL(vnode_check_chroot); 2453101099Srwatsonstatic int 2454172955Srwatsontest_vnode_check_chroot(struct ucred *cred, struct vnode *dvp, 2455168976Srwatson struct label *dvplabel) 2456101099Srwatson{ 2457101099Srwatson 2458168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2459168976Srwatson LABEL_CHECK(dvplabel, MAGIC_VNODE); 2460172930Srwatson COUNTER_INC(vnode_check_chroot); 2461119228Srwatson 2462101099Srwatson return (0); 2463101099Srwatson} 2464101099Srwatson 2465172930SrwatsonCOUNTER_DECL(vnode_check_create); 2466101099Srwatsonstatic int 2467172955Srwatsontest_vnode_check_create(struct ucred *cred, struct vnode *dvp, 2468168976Srwatson struct label *dvplabel, struct componentname *cnp, struct vattr *vap) 2469101099Srwatson{ 2470101099Srwatson 2471168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2472168976Srwatson LABEL_CHECK(dvplabel, MAGIC_VNODE); 2473172930Srwatson COUNTER_INC(vnode_check_create); 2474119228Srwatson 2475101099Srwatson return (0); 2476101099Srwatson} 2477101099Srwatson 2478172930SrwatsonCOUNTER_DECL(vnode_check_deleteacl); 2479101099Srwatsonstatic int 2480172955Srwatsontest_vnode_check_deleteacl(struct ucred *cred, struct vnode *vp, 2481168976Srwatson struct label *vplabel, acl_type_t type) 2482101099Srwatson{ 2483101099Srwatson 2484168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2485168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2486172930Srwatson COUNTER_INC(vnode_check_deleteacl); 2487119228Srwatson 2488101099Srwatson return (0); 2489101099Srwatson} 2490101099Srwatson 2491172930SrwatsonCOUNTER_DECL(vnode_check_deleteextattr); 2492101099Srwatsonstatic int 2493172955Srwatsontest_vnode_check_deleteextattr(struct ucred *cred, struct vnode *vp, 2494168976Srwatson struct label *vplabel, int attrnamespace, const char *name) 2495119228Srwatson{ 2496119228Srwatson 2497168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2498168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2499172930Srwatson COUNTER_INC(vnode_check_deleteextattr); 2500119228Srwatson 2501119228Srwatson return (0); 2502119228Srwatson} 2503119228Srwatson 2504172930SrwatsonCOUNTER_DECL(vnode_check_exec); 2505119228Srwatsonstatic int 2506172955Srwatsontest_vnode_check_exec(struct ucred *cred, struct vnode *vp, 2507168976Srwatson struct label *vplabel, struct image_params *imgp, 2508106648Srwatson struct label *execlabel) 2509101099Srwatson{ 2510101099Srwatson 2511168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2512168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2513168944Srwatson LABEL_CHECK(execlabel, MAGIC_CRED); 2514172930Srwatson COUNTER_INC(vnode_check_exec); 2515119228Srwatson 2516101099Srwatson return (0); 2517101099Srwatson} 2518101099Srwatson 2519172930SrwatsonCOUNTER_DECL(vnode_check_getacl); 2520101099Srwatsonstatic int 2521172955Srwatsontest_vnode_check_getacl(struct ucred *cred, struct vnode *vp, 2522168976Srwatson struct label *vplabel, acl_type_t type) 2523101099Srwatson{ 2524101099Srwatson 2525168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2526168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2527172930Srwatson COUNTER_INC(vnode_check_getacl); 2528119228Srwatson 2529101099Srwatson return (0); 2530101099Srwatson} 2531101099Srwatson 2532172930SrwatsonCOUNTER_DECL(vnode_check_getextattr); 2533101099Srwatsonstatic int 2534172955Srwatsontest_vnode_check_getextattr(struct ucred *cred, struct vnode *vp, 2535189533Srwatson struct label *vplabel, int attrnamespace, const char *name) 2536101099Srwatson{ 2537101099Srwatson 2538168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2539168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2540172930Srwatson COUNTER_INC(vnode_check_getextattr); 2541119228Srwatson 2542101099Srwatson return (0); 2543101099Srwatson} 2544101099Srwatson 2545172930SrwatsonCOUNTER_DECL(vnode_check_link); 2546101099Srwatsonstatic int 2547172955Srwatsontest_vnode_check_link(struct ucred *cred, struct vnode *dvp, 2548168976Srwatson struct label *dvplabel, struct vnode *vp, struct label *vplabel, 2549104530Srwatson struct componentname *cnp) 2550104530Srwatson{ 2551104530Srwatson 2552168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2553168976Srwatson LABEL_CHECK(dvplabel, MAGIC_VNODE); 2554168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2555172930Srwatson COUNTER_INC(vnode_check_link); 2556119228Srwatson 2557104530Srwatson return (0); 2558104530Srwatson} 2559104530Srwatson 2560172930SrwatsonCOUNTER_DECL(vnode_check_listextattr); 2561104530Srwatsonstatic int 2562172955Srwatsontest_vnode_check_listextattr(struct ucred *cred, struct vnode *vp, 2563168976Srwatson struct label *vplabel, int attrnamespace) 2564119228Srwatson{ 2565119228Srwatson 2566168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2567168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2568172930Srwatson COUNTER_INC(vnode_check_listextattr); 2569119228Srwatson 2570119228Srwatson return (0); 2571119228Srwatson} 2572119228Srwatson 2573172930SrwatsonCOUNTER_DECL(vnode_check_lookup); 2574119228Srwatsonstatic int 2575172955Srwatsontest_vnode_check_lookup(struct ucred *cred, struct vnode *dvp, 2576168976Srwatson struct label *dvplabel, struct componentname *cnp) 2577101099Srwatson{ 2578104546Srwatson 2579168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2580168976Srwatson LABEL_CHECK(dvplabel, MAGIC_VNODE); 2581172930Srwatson COUNTER_INC(vnode_check_lookup); 2582119228Srwatson 2583101099Srwatson return (0); 2584104546Srwatson} 2585101099Srwatson 2586172930SrwatsonCOUNTER_DECL(vnode_check_mmap); 2587101099Srwatsonstatic int 2588172955Srwatsontest_vnode_check_mmap(struct ucred *cred, struct vnode *vp, 2589168976Srwatson struct label *vplabel, int prot, int flags) 2590104546Srwatson{ 2591104546Srwatson 2592168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2593168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2594172930Srwatson COUNTER_INC(vnode_check_mmap); 2595119228Srwatson 2596104546Srwatson return (0); 2597104546Srwatson} 2598104546Srwatson 2599172930SrwatsonCOUNTER_DECL(vnode_check_open); 2600104546Srwatsonstatic int 2601172955Srwatsontest_vnode_check_open(struct ucred *cred, struct vnode *vp, 2602184413Strasz struct label *vplabel, accmode_t accmode) 2603101099Srwatson{ 2604101099Srwatson 2605168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2606168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2607172930Srwatson COUNTER_INC(vnode_check_open); 2608119228Srwatson 2609101099Srwatson return (0); 2610101099Srwatson} 2611101099Srwatson 2612172930SrwatsonCOUNTER_DECL(vnode_check_poll); 2613101099Srwatsonstatic int 2614172955Srwatsontest_vnode_check_poll(struct ucred *active_cred, struct ucred *file_cred, 2615168976Srwatson struct vnode *vp, struct label *vplabel) 2616102112Srwatson{ 2617102112Srwatson 2618168944Srwatson LABEL_CHECK(active_cred->cr_label, MAGIC_CRED); 2619168944Srwatson if (file_cred != NULL) 2620168944Srwatson LABEL_CHECK(file_cred->cr_label, MAGIC_CRED); 2621168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2622172930Srwatson COUNTER_INC(vnode_check_poll); 2623119228Srwatson 2624102112Srwatson return (0); 2625102112Srwatson} 2626102112Srwatson 2627172930SrwatsonCOUNTER_DECL(vnode_check_read); 2628102112Srwatsonstatic int 2629172955Srwatsontest_vnode_check_read(struct ucred *active_cred, struct ucred *file_cred, 2630168976Srwatson struct vnode *vp, struct label *vplabel) 2631102112Srwatson{ 2632102112Srwatson 2633168944Srwatson LABEL_CHECK(active_cred->cr_label, MAGIC_CRED); 2634168944Srwatson if (file_cred != NULL) 2635168944Srwatson LABEL_CHECK(file_cred->cr_label, MAGIC_CRED); 2636168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2637172930Srwatson COUNTER_INC(vnode_check_read); 2638119228Srwatson 2639102112Srwatson return (0); 2640102112Srwatson} 2641102112Srwatson 2642172930SrwatsonCOUNTER_DECL(vnode_check_readdir); 2643102112Srwatsonstatic int 2644172955Srwatsontest_vnode_check_readdir(struct ucred *cred, struct vnode *dvp, 2645168976Srwatson struct label *dvplabel) 2646101099Srwatson{ 2647101099Srwatson 2648168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2649168976Srwatson LABEL_CHECK(dvplabel, MAGIC_VNODE); 2650172930Srwatson COUNTER_INC(vnode_check_readdir); 2651119228Srwatson 2652101099Srwatson return (0); 2653101099Srwatson} 2654101099Srwatson 2655172930SrwatsonCOUNTER_DECL(vnode_check_readlink); 2656101099Srwatsonstatic int 2657172955Srwatsontest_vnode_check_readlink(struct ucred *cred, struct vnode *vp, 2658168976Srwatson struct label *vplabel) 2659101099Srwatson{ 2660101099Srwatson 2661168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2662168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2663172930Srwatson COUNTER_INC(vnode_check_readlink); 2664119228Srwatson 2665101099Srwatson return (0); 2666101099Srwatson} 2667101099Srwatson 2668172930SrwatsonCOUNTER_DECL(vnode_check_relabel); 2669101099Srwatsonstatic int 2670172955Srwatsontest_vnode_check_relabel(struct ucred *cred, struct vnode *vp, 2671168976Srwatson struct label *vplabel, struct label *newlabel) 2672101099Srwatson{ 2673101099Srwatson 2674168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2675168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2676168944Srwatson LABEL_CHECK(newlabel, MAGIC_VNODE); 2677172930Srwatson COUNTER_INC(vnode_check_relabel); 2678119228Srwatson 2679101099Srwatson return (0); 2680101099Srwatson} 2681101099Srwatson 2682172930SrwatsonCOUNTER_DECL(vnode_check_rename_from); 2683101099Srwatsonstatic int 2684172955Srwatsontest_vnode_check_rename_from(struct ucred *cred, struct vnode *dvp, 2685168976Srwatson struct label *dvplabel, struct vnode *vp, struct label *vplabel, 2686101099Srwatson struct componentname *cnp) 2687101099Srwatson{ 2688101099Srwatson 2689168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2690168976Srwatson LABEL_CHECK(dvplabel, MAGIC_VNODE); 2691168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2692172930Srwatson COUNTER_INC(vnode_check_rename_from); 2693119228Srwatson 2694101099Srwatson return (0); 2695101099Srwatson} 2696101099Srwatson 2697172930SrwatsonCOUNTER_DECL(vnode_check_rename_to); 2698101099Srwatsonstatic int 2699172955Srwatsontest_vnode_check_rename_to(struct ucred *cred, struct vnode *dvp, 2700168976Srwatson struct label *dvplabel, struct vnode *vp, struct label *vplabel, 2701168976Srwatson int samedir, struct componentname *cnp) 2702101099Srwatson{ 2703101099Srwatson 2704168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2705168976Srwatson LABEL_CHECK(dvplabel, MAGIC_VNODE); 2706168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2707172930Srwatson COUNTER_INC(vnode_check_rename_to); 2708119228Srwatson 2709101099Srwatson return (0); 2710101099Srwatson} 2711101099Srwatson 2712172930SrwatsonCOUNTER_DECL(vnode_check_revoke); 2713101099Srwatsonstatic int 2714172955Srwatsontest_vnode_check_revoke(struct ucred *cred, struct vnode *vp, 2715168976Srwatson struct label *vplabel) 2716101099Srwatson{ 2717101099Srwatson 2718168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2719168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2720172930Srwatson COUNTER_INC(vnode_check_revoke); 2721119228Srwatson 2722101099Srwatson return (0); 2723101099Srwatson} 2724101099Srwatson 2725172930SrwatsonCOUNTER_DECL(vnode_check_setacl); 2726101099Srwatsonstatic int 2727172955Srwatsontest_vnode_check_setacl(struct ucred *cred, struct vnode *vp, 2728168976Srwatson struct label *vplabel, acl_type_t type, struct acl *acl) 2729101099Srwatson{ 2730101099Srwatson 2731168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2732168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2733172930Srwatson COUNTER_INC(vnode_check_setacl); 2734119228Srwatson 2735101099Srwatson return (0); 2736101099Srwatson} 2737101099Srwatson 2738172930SrwatsonCOUNTER_DECL(vnode_check_setextattr); 2739101099Srwatsonstatic int 2740172955Srwatsontest_vnode_check_setextattr(struct ucred *cred, struct vnode *vp, 2741189533Srwatson struct label *vplabel, int attrnamespace, const char *name) 2742101099Srwatson{ 2743101099Srwatson 2744168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2745168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2746172930Srwatson COUNTER_INC(vnode_check_setextattr); 2747119228Srwatson 2748101099Srwatson return (0); 2749101099Srwatson} 2750101099Srwatson 2751172930SrwatsonCOUNTER_DECL(vnode_check_setflags); 2752101099Srwatsonstatic int 2753172955Srwatsontest_vnode_check_setflags(struct ucred *cred, struct vnode *vp, 2754168976Srwatson struct label *vplabel, u_long flags) 2755101099Srwatson{ 2756101099Srwatson 2757168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2758168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2759172930Srwatson COUNTER_INC(vnode_check_setflags); 2760119228Srwatson 2761101099Srwatson return (0); 2762101099Srwatson} 2763101099Srwatson 2764172930SrwatsonCOUNTER_DECL(vnode_check_setmode); 2765101099Srwatsonstatic int 2766172955Srwatsontest_vnode_check_setmode(struct ucred *cred, struct vnode *vp, 2767168976Srwatson struct label *vplabel, mode_t mode) 2768101099Srwatson{ 2769101099Srwatson 2770168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2771168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2772172930Srwatson COUNTER_INC(vnode_check_setmode); 2773119228Srwatson 2774101099Srwatson return (0); 2775101099Srwatson} 2776101099Srwatson 2777172930SrwatsonCOUNTER_DECL(vnode_check_setowner); 2778101099Srwatsonstatic int 2779172955Srwatsontest_vnode_check_setowner(struct ucred *cred, struct vnode *vp, 2780168976Srwatson struct label *vplabel, uid_t uid, gid_t gid) 2781101099Srwatson{ 2782101099Srwatson 2783168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2784168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2785172930Srwatson COUNTER_INC(vnode_check_setowner); 2786119228Srwatson 2787101099Srwatson return (0); 2788101099Srwatson} 2789101099Srwatson 2790172930SrwatsonCOUNTER_DECL(vnode_check_setutimes); 2791101099Srwatsonstatic int 2792172955Srwatsontest_vnode_check_setutimes(struct ucred *cred, struct vnode *vp, 2793168976Srwatson struct label *vplabel, struct timespec atime, struct timespec mtime) 2794101099Srwatson{ 2795101099Srwatson 2796168944Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2797168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2798172930Srwatson COUNTER_INC(vnode_check_setutimes); 2799119228Srwatson 2800101099Srwatson return (0); 2801101099Srwatson} 2802101099Srwatson 2803172930SrwatsonCOUNTER_DECL(vnode_check_stat); 2804101099Srwatsonstatic int 2805172955Srwatsontest_vnode_check_stat(struct ucred *active_cred, struct ucred *file_cred, 2806168976Srwatson struct vnode *vp, struct label *vplabel) 2807101099Srwatson{ 2808101099Srwatson 2809168944Srwatson LABEL_CHECK(active_cred->cr_label, MAGIC_CRED); 2810168944Srwatson if (file_cred != NULL) 2811168944Srwatson LABEL_CHECK(file_cred->cr_label, MAGIC_CRED); 2812168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2813172930Srwatson COUNTER_INC(vnode_check_stat); 2814119228Srwatson 2815101099Srwatson return (0); 2816101099Srwatson} 2817101099Srwatson 2818172930SrwatsonCOUNTER_DECL(vnode_check_unlink); 2819172107Srwatsonstatic int 2820172955Srwatsontest_vnode_check_unlink(struct ucred *cred, struct vnode *dvp, 2821172107Srwatson struct label *dvplabel, struct vnode *vp, struct label *vplabel, 2822172107Srwatson struct componentname *cnp) 2823172107Srwatson{ 2824172107Srwatson 2825172107Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2826172107Srwatson LABEL_CHECK(dvplabel, MAGIC_VNODE); 2827172107Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2828172930Srwatson COUNTER_INC(vnode_check_unlink); 2829172107Srwatson 2830172107Srwatson return (0); 2831172107Srwatson} 2832172107Srwatson 2833172930SrwatsonCOUNTER_DECL(vnode_check_write); 2834102112Srwatsonstatic int 2835172955Srwatsontest_vnode_check_write(struct ucred *active_cred, 2836168976Srwatson struct ucred *file_cred, struct vnode *vp, struct label *vplabel) 2837102112Srwatson{ 2838102112Srwatson 2839168944Srwatson LABEL_CHECK(active_cred->cr_label, MAGIC_CRED); 2840168944Srwatson if (file_cred != NULL) 2841168944Srwatson LABEL_CHECK(file_cred->cr_label, MAGIC_CRED); 2842168976Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2843172930Srwatson COUNTER_INC(vnode_check_write); 2844119228Srwatson 2845102112Srwatson return (0); 2846102112Srwatson} 2847102112Srwatson 2848173138SrwatsonCOUNTER_DECL(vnode_copy_label); 2849173138Srwatsonstatic void 2850173138Srwatsontest_vnode_copy_label(struct label *src, struct label *dest) 2851173138Srwatson{ 2852173138Srwatson 2853173138Srwatson LABEL_CHECK(src, MAGIC_VNODE); 2854173138Srwatson LABEL_CHECK(dest, MAGIC_VNODE); 2855173138Srwatson COUNTER_INC(vnode_copy_label); 2856173138Srwatson} 2857173138Srwatson 2858173138SrwatsonCOUNTER_DECL(vnode_create_extattr); 2859173138Srwatsonstatic int 2860173138Srwatsontest_vnode_create_extattr(struct ucred *cred, struct mount *mp, 2861173138Srwatson struct label *mplabel, struct vnode *dvp, struct label *dvplabel, 2862173138Srwatson struct vnode *vp, struct label *vplabel, struct componentname *cnp) 2863173138Srwatson{ 2864173138Srwatson 2865173138Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2866173138Srwatson LABEL_CHECK(mplabel, MAGIC_MOUNT); 2867173138Srwatson LABEL_CHECK(dvplabel, MAGIC_VNODE); 2868173138Srwatson COUNTER_INC(vnode_create_extattr); 2869173138Srwatson 2870173138Srwatson return (0); 2871173138Srwatson} 2872173138Srwatson 2873173138SrwatsonCOUNTER_DECL(vnode_destroy_label); 2874173138Srwatsonstatic void 2875173138Srwatsontest_vnode_destroy_label(struct label *label) 2876173138Srwatson{ 2877173138Srwatson 2878173138Srwatson LABEL_DESTROY(label, MAGIC_VNODE); 2879173138Srwatson COUNTER_INC(vnode_destroy_label); 2880173138Srwatson} 2881173138Srwatson 2882173138SrwatsonCOUNTER_DECL(vnode_execve_transition); 2883173138Srwatsonstatic void 2884173138Srwatsontest_vnode_execve_transition(struct ucred *old, struct ucred *new, 2885173138Srwatson struct vnode *vp, struct label *filelabel, 2886173138Srwatson struct label *interpvplabel, struct image_params *imgp, 2887173138Srwatson struct label *execlabel) 2888173138Srwatson{ 2889173138Srwatson 2890173138Srwatson LABEL_CHECK(old->cr_label, MAGIC_CRED); 2891173138Srwatson LABEL_CHECK(new->cr_label, MAGIC_CRED); 2892173138Srwatson LABEL_CHECK(filelabel, MAGIC_VNODE); 2893173138Srwatson LABEL_CHECK(interpvplabel, MAGIC_VNODE); 2894173138Srwatson LABEL_CHECK(execlabel, MAGIC_CRED); 2895173138Srwatson COUNTER_INC(vnode_execve_transition); 2896173138Srwatson} 2897173138Srwatson 2898173138SrwatsonCOUNTER_DECL(vnode_execve_will_transition); 2899173138Srwatsonstatic int 2900173138Srwatsontest_vnode_execve_will_transition(struct ucred *old, struct vnode *vp, 2901173138Srwatson struct label *filelabel, struct label *interpvplabel, 2902173138Srwatson struct image_params *imgp, struct label *execlabel) 2903173138Srwatson{ 2904173138Srwatson 2905173138Srwatson LABEL_CHECK(old->cr_label, MAGIC_CRED); 2906173138Srwatson LABEL_CHECK(filelabel, MAGIC_VNODE); 2907173138Srwatson LABEL_CHECK(interpvplabel, MAGIC_VNODE); 2908173138Srwatson LABEL_CHECK(execlabel, MAGIC_CRED); 2909173138Srwatson COUNTER_INC(vnode_execve_will_transition); 2910173138Srwatson 2911173138Srwatson return (0); 2912173138Srwatson} 2913173138Srwatson 2914173138SrwatsonCOUNTER_DECL(vnode_externalize_label); 2915173138Srwatsonstatic int 2916173138Srwatsontest_vnode_externalize_label(struct label *label, char *element_name, 2917173138Srwatson struct sbuf *sb, int *claimed) 2918173138Srwatson{ 2919173138Srwatson 2920173138Srwatson LABEL_CHECK(label, MAGIC_VNODE); 2921173138Srwatson COUNTER_INC(vnode_externalize_label); 2922173138Srwatson 2923173138Srwatson return (0); 2924173138Srwatson} 2925173138Srwatson 2926173138SrwatsonCOUNTER_DECL(vnode_init_label); 2927173138Srwatsonstatic void 2928173138Srwatsontest_vnode_init_label(struct label *label) 2929173138Srwatson{ 2930173138Srwatson 2931173138Srwatson LABEL_INIT(label, MAGIC_VNODE); 2932173138Srwatson COUNTER_INC(vnode_init_label); 2933173138Srwatson} 2934173138Srwatson 2935173163SrwatsonCOUNTER_DECL(vnode_internalize_label); 2936173163Srwatsonstatic int 2937173163Srwatsontest_vnode_internalize_label(struct label *label, char *element_name, 2938173163Srwatson char *element_data, int *claimed) 2939173163Srwatson{ 2940173163Srwatson 2941173163Srwatson LABEL_CHECK(label, MAGIC_VNODE); 2942173163Srwatson COUNTER_INC(vnode_internalize_label); 2943173163Srwatson 2944173163Srwatson return (0); 2945173163Srwatson} 2946173163Srwatson 2947173138SrwatsonCOUNTER_DECL(vnode_relabel); 2948173138Srwatsonstatic void 2949173138Srwatsontest_vnode_relabel(struct ucred *cred, struct vnode *vp, 2950173138Srwatson struct label *vplabel, struct label *label) 2951173138Srwatson{ 2952173138Srwatson 2953173138Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2954173138Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2955173138Srwatson LABEL_CHECK(label, MAGIC_VNODE); 2956173138Srwatson COUNTER_INC(vnode_relabel); 2957173138Srwatson} 2958173138Srwatson 2959173138SrwatsonCOUNTER_DECL(vnode_setlabel_extattr); 2960173138Srwatsonstatic int 2961173138Srwatsontest_vnode_setlabel_extattr(struct ucred *cred, struct vnode *vp, 2962173138Srwatson struct label *vplabel, struct label *intlabel) 2963173138Srwatson{ 2964173138Srwatson 2965173138Srwatson LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2966173138Srwatson LABEL_CHECK(vplabel, MAGIC_VNODE); 2967173138Srwatson LABEL_CHECK(intlabel, MAGIC_VNODE); 2968173138Srwatson COUNTER_INC(vnode_setlabel_extattr); 2969173138Srwatson 2970173138Srwatson return (0); 2971173138Srwatson} 2972173138Srwatson 2973172955Srwatsonstatic struct mac_policy_ops test_ops = 2974101099Srwatson{ 2975173138Srwatson .mpo_bpfdesc_check_receive = test_bpfdesc_check_receive, 2976173138Srwatson .mpo_bpfdesc_create = test_bpfdesc_create, 2977173138Srwatson .mpo_bpfdesc_create_mbuf = test_bpfdesc_create_mbuf, 2978173138Srwatson .mpo_bpfdesc_destroy_label = test_bpfdesc_destroy_label, 2979172955Srwatson .mpo_bpfdesc_init_label = test_bpfdesc_init_label, 2980173138Srwatson 2981173138Srwatson .mpo_cred_check_relabel = test_cred_check_relabel, 2982189529Srwatson .mpo_cred_check_setaudit = test_cred_check_setaudit, 2983189529Srwatson .mpo_cred_check_setaudit_addr = test_cred_check_setaudit_addr, 2984189529Srwatson .mpo_cred_check_setauid = test_cred_check_setauid, 2985189529Srwatson .mpo_cred_check_seteuid = test_cred_check_seteuid, 2986189529Srwatson .mpo_cred_check_setegid = test_cred_check_setegid, 2987189529Srwatson .mpo_cred_check_setgid = test_cred_check_setgid, 2988189529Srwatson .mpo_cred_check_setgroups = test_cred_check_setgroups, 2989189529Srwatson .mpo_cred_check_setregid = test_cred_check_setregid, 2990189529Srwatson .mpo_cred_check_setresgid = test_cred_check_setresgid, 2991189529Srwatson .mpo_cred_check_setresuid = test_cred_check_setresuid, 2992189529Srwatson .mpo_cred_check_setreuid = test_cred_check_setreuid, 2993189529Srwatson .mpo_cred_check_setuid = test_cred_check_setuid, 2994173138Srwatson .mpo_cred_check_visible = test_cred_check_visible, 2995173138Srwatson .mpo_cred_copy_label = test_cred_copy_label, 2996184407Srwatson .mpo_cred_create_init = test_cred_create_init, 2997184407Srwatson .mpo_cred_create_swapper = test_cred_create_swapper, 2998173138Srwatson .mpo_cred_destroy_label = test_cred_destroy_label, 2999173138Srwatson .mpo_cred_externalize_label = test_cred_externalize_label, 3000172955Srwatson .mpo_cred_init_label = test_cred_init_label, 3001173163Srwatson .mpo_cred_internalize_label = test_cred_internalize_label, 3002173138Srwatson .mpo_cred_relabel = test_cred_relabel, 3003173138Srwatson 3004173138Srwatson .mpo_devfs_create_device = test_devfs_create_device, 3005173138Srwatson .mpo_devfs_create_directory = test_devfs_create_directory, 3006173138Srwatson .mpo_devfs_create_symlink = test_devfs_create_symlink, 3007173138Srwatson .mpo_devfs_destroy_label = test_devfs_destroy_label, 3008172955Srwatson .mpo_devfs_init_label = test_devfs_init_label, 3009173138Srwatson .mpo_devfs_update = test_devfs_update, 3010173138Srwatson .mpo_devfs_vnode_associate = test_devfs_vnode_associate, 3011173138Srwatson 3012173138Srwatson .mpo_ifnet_check_relabel = test_ifnet_check_relabel, 3013173138Srwatson .mpo_ifnet_check_transmit = test_ifnet_check_transmit, 3014173138Srwatson .mpo_ifnet_copy_label = test_ifnet_copy_label, 3015173138Srwatson .mpo_ifnet_create = test_ifnet_create, 3016173138Srwatson .mpo_ifnet_create_mbuf = test_ifnet_create_mbuf, 3017173138Srwatson .mpo_ifnet_destroy_label = test_ifnet_destroy_label, 3018173138Srwatson .mpo_ifnet_externalize_label = test_ifnet_externalize_label, 3019172955Srwatson .mpo_ifnet_init_label = test_ifnet_init_label, 3020173163Srwatson .mpo_ifnet_internalize_label = test_ifnet_internalize_label, 3021173138Srwatson .mpo_ifnet_relabel = test_ifnet_relabel, 3022173138Srwatson 3023173138Srwatson .mpo_syncache_destroy_label = test_syncache_destroy_label, 3024173112Srwatson .mpo_syncache_init_label = test_syncache_init_label, 3025173138Srwatson 3026173138Srwatson .mpo_sysvmsg_destroy_label = test_sysvmsg_destroy_label, 3027172955Srwatson .mpo_sysvmsg_init_label = test_sysvmsg_init_label, 3028173138Srwatson 3029173138Srwatson .mpo_sysvmsq_destroy_label = test_sysvmsq_destroy_label, 3030172955Srwatson .mpo_sysvmsq_init_label = test_sysvmsq_init_label, 3031173138Srwatson 3032173138Srwatson .mpo_sysvsem_destroy_label = test_sysvsem_destroy_label, 3033172955Srwatson .mpo_sysvsem_init_label = test_sysvsem_init_label, 3034173138Srwatson 3035173138Srwatson .mpo_sysvshm_destroy_label = test_sysvshm_destroy_label, 3036172955Srwatson .mpo_sysvshm_init_label = test_sysvshm_init_label, 3037173138Srwatson 3038173138Srwatson .mpo_inpcb_check_deliver = test_inpcb_check_deliver, 3039183980Sbz .mpo_inpcb_check_visible = test_inpcb_check_visible, 3040173138Srwatson .mpo_inpcb_create = test_inpcb_create, 3041173138Srwatson .mpo_inpcb_create_mbuf = test_inpcb_create_mbuf, 3042173138Srwatson .mpo_inpcb_destroy_label = test_inpcb_destroy_label, 3043172955Srwatson .mpo_inpcb_init_label = test_inpcb_init_label, 3044173138Srwatson .mpo_inpcb_sosetlabel = test_inpcb_sosetlabel, 3045173138Srwatson 3046184308Srwatson .mpo_ip6q_create = test_ip6q_create, 3047184308Srwatson .mpo_ip6q_destroy_label = test_ip6q_destroy_label, 3048184308Srwatson .mpo_ip6q_init_label = test_ip6q_init_label, 3049184308Srwatson .mpo_ip6q_match = test_ip6q_match, 3050184308Srwatson .mpo_ip6q_reassemble = test_ip6q_reassemble, 3051184308Srwatson .mpo_ip6q_update = test_ip6q_update, 3052184308Srwatson 3053173138Srwatson .mpo_ipq_create = test_ipq_create, 3054173138Srwatson .mpo_ipq_destroy_label = test_ipq_destroy_label, 3055172955Srwatson .mpo_ipq_init_label = test_ipq_init_label, 3056173138Srwatson .mpo_ipq_match = test_ipq_match, 3057173138Srwatson .mpo_ipq_reassemble = test_ipq_reassemble, 3058173138Srwatson .mpo_ipq_update = test_ipq_update, 3059173138Srwatson 3060173138Srwatson .mpo_kenv_check_dump = test_kenv_check_dump, 3061173138Srwatson .mpo_kenv_check_get = test_kenv_check_get, 3062173138Srwatson .mpo_kenv_check_set = test_kenv_check_set, 3063173138Srwatson .mpo_kenv_check_unset = test_kenv_check_unset, 3064173138Srwatson 3065173138Srwatson .mpo_kld_check_load = test_kld_check_load, 3066173138Srwatson .mpo_kld_check_stat = test_kld_check_stat, 3067173138Srwatson 3068173138Srwatson .mpo_mbuf_copy_label = test_mbuf_copy_label, 3069173138Srwatson .mpo_mbuf_destroy_label = test_mbuf_destroy_label, 3070172955Srwatson .mpo_mbuf_init_label = test_mbuf_init_label, 3071173138Srwatson 3072173138Srwatson .mpo_mount_check_stat = test_mount_check_stat, 3073173138Srwatson .mpo_mount_create = test_mount_create, 3074173138Srwatson .mpo_mount_destroy_label = test_mount_destroy_label, 3075172955Srwatson .mpo_mount_init_label = test_mount_init_label, 3076173138Srwatson 3077173095Srwatson .mpo_netatalk_aarp_send = test_netatalk_aarp_send, 3078173138Srwatson 3079173095Srwatson .mpo_netinet_arp_send = test_netinet_arp_send, 3080173138Srwatson .mpo_netinet_fragment = test_netinet_fragment, 3081172955Srwatson .mpo_netinet_icmp_reply = test_netinet_icmp_reply, 3082173102Srwatson .mpo_netinet_icmp_replyinplace = test_netinet_icmp_replyinplace, 3083173095Srwatson .mpo_netinet_igmp_send = test_netinet_igmp_send, 3084172955Srwatson .mpo_netinet_tcp_reply = test_netinet_tcp_reply, 3085173138Srwatson 3086173095Srwatson .mpo_netinet6_nd6_send = test_netinet6_nd6_send, 3087173138Srwatson 3088172955Srwatson .mpo_pipe_check_ioctl = test_pipe_check_ioctl, 3089172955Srwatson .mpo_pipe_check_poll = test_pipe_check_poll, 3090172955Srwatson .mpo_pipe_check_read = test_pipe_check_read, 3091172955Srwatson .mpo_pipe_check_relabel = test_pipe_check_relabel, 3092172955Srwatson .mpo_pipe_check_stat = test_pipe_check_stat, 3093172955Srwatson .mpo_pipe_check_write = test_pipe_check_write, 3094173138Srwatson .mpo_pipe_copy_label = test_pipe_copy_label, 3095173138Srwatson .mpo_pipe_create = test_pipe_create, 3096173138Srwatson .mpo_pipe_destroy_label = test_pipe_destroy_label, 3097173138Srwatson .mpo_pipe_externalize_label = test_pipe_externalize_label, 3098173138Srwatson .mpo_pipe_init_label = test_pipe_init_label, 3099173163Srwatson .mpo_pipe_internalize_label = test_pipe_internalize_label, 3100173138Srwatson .mpo_pipe_relabel = test_pipe_relabel, 3101173138Srwatson 3102173054Srwatson .mpo_posixsem_check_getvalue = test_posixsem_check_getvalue, 3103173054Srwatson .mpo_posixsem_check_open = test_posixsem_check_open, 3104173054Srwatson .mpo_posixsem_check_post = test_posixsem_check_post, 3105224914Skib .mpo_posixsem_check_setmode = test_posixsem_check_setmode, 3106224914Skib .mpo_posixsem_check_setowner = test_posixsem_check_setowner, 3107180059Sjhb .mpo_posixsem_check_stat = test_posixsem_check_stat, 3108173054Srwatson .mpo_posixsem_check_unlink = test_posixsem_check_unlink, 3109173054Srwatson .mpo_posixsem_check_wait = test_posixsem_check_wait, 3110173138Srwatson .mpo_posixsem_create = test_posixsem_create, 3111173138Srwatson .mpo_posixsem_destroy_label = test_posixsem_destroy_label, 3112173138Srwatson .mpo_posixsem_init_label = test_posixsem_init_label, 3113173138Srwatson 3114225344Srwatson .mpo_posixshm_check_create = test_posixshm_check_create, 3115175164Sjhb .mpo_posixshm_check_mmap = test_posixshm_check_mmap, 3116175164Sjhb .mpo_posixshm_check_open = test_posixshm_check_open, 3117224914Skib .mpo_posixshm_check_setmode = test_posixshm_check_setmode, 3118224914Skib .mpo_posixshm_check_setowner = test_posixshm_check_setowner, 3119175164Sjhb .mpo_posixshm_check_stat = test_posixshm_check_stat, 3120175164Sjhb .mpo_posixshm_check_truncate = test_posixshm_check_truncate, 3121175164Sjhb .mpo_posixshm_check_unlink = test_posixshm_check_unlink, 3122175164Sjhb .mpo_posixshm_create = test_posixshm_create, 3123175164Sjhb .mpo_posixshm_destroy_label = test_posixshm_destroy_label, 3124175164Sjhb .mpo_posixshm_init_label = test_posixshm_init_label, 3125175164Sjhb 3126172955Srwatson .mpo_proc_check_debug = test_proc_check_debug, 3127172955Srwatson .mpo_proc_check_sched = test_proc_check_sched, 3128172955Srwatson .mpo_proc_check_signal = test_proc_check_signal, 3129172955Srwatson .mpo_proc_check_wait = test_proc_check_wait, 3130173138Srwatson .mpo_proc_destroy_label = test_proc_destroy_label, 3131173138Srwatson .mpo_proc_init_label = test_proc_init_label, 3132173138Srwatson 3133172955Srwatson .mpo_socket_check_accept = test_socket_check_accept, 3134172955Srwatson .mpo_socket_check_bind = test_socket_check_bind, 3135172955Srwatson .mpo_socket_check_connect = test_socket_check_connect, 3136172955Srwatson .mpo_socket_check_deliver = test_socket_check_deliver, 3137172955Srwatson .mpo_socket_check_listen = test_socket_check_listen, 3138172955Srwatson .mpo_socket_check_poll = test_socket_check_poll, 3139172955Srwatson .mpo_socket_check_receive = test_socket_check_receive, 3140172955Srwatson .mpo_socket_check_relabel = test_socket_check_relabel, 3141172955Srwatson .mpo_socket_check_send = test_socket_check_send, 3142172955Srwatson .mpo_socket_check_stat = test_socket_check_stat, 3143172955Srwatson .mpo_socket_check_visible = test_socket_check_visible, 3144173138Srwatson .mpo_socket_copy_label = test_socket_copy_label, 3145173138Srwatson .mpo_socket_create = test_socket_create, 3146173138Srwatson .mpo_socket_create_mbuf = test_socket_create_mbuf, 3147173138Srwatson .mpo_socket_destroy_label = test_socket_destroy_label, 3148173138Srwatson .mpo_socket_externalize_label = test_socket_externalize_label, 3149173138Srwatson .mpo_socket_init_label = test_socket_init_label, 3150173163Srwatson .mpo_socket_internalize_label = test_socket_internalize_label, 3151173138Srwatson .mpo_socket_newconn = test_socket_newconn, 3152173138Srwatson .mpo_socket_relabel = test_socket_relabel, 3153173138Srwatson 3154173138Srwatson .mpo_socketpeer_destroy_label = test_socketpeer_destroy_label, 3155173138Srwatson .mpo_socketpeer_externalize_label = test_socketpeer_externalize_label, 3156173138Srwatson .mpo_socketpeer_init_label = test_socketpeer_init_label, 3157173138Srwatson .mpo_socketpeer_set_from_mbuf = test_socketpeer_set_from_mbuf, 3158173138Srwatson .mpo_socketpeer_set_from_socket = test_socketpeer_set_from_socket, 3159173138Srwatson 3160173138Srwatson .mpo_syncache_create = test_syncache_create, 3161173138Srwatson .mpo_syncache_create_mbuf = test_syncache_create_mbuf, 3162173138Srwatson 3163172955Srwatson .mpo_system_check_acct = test_system_check_acct, 3164172955Srwatson .mpo_system_check_audit = test_system_check_audit, 3165172955Srwatson .mpo_system_check_auditctl = test_system_check_auditctl, 3166172955Srwatson .mpo_system_check_auditon = test_system_check_auditon, 3167172955Srwatson .mpo_system_check_reboot = test_system_check_reboot, 3168172955Srwatson .mpo_system_check_swapoff = test_system_check_swapoff, 3169172955Srwatson .mpo_system_check_swapon = test_system_check_swapon, 3170172955Srwatson .mpo_system_check_sysctl = test_system_check_sysctl, 3171173138Srwatson 3172172955Srwatson .mpo_vnode_check_access = test_vnode_check_access, 3173173138Srwatson .mpo_sysvmsg_cleanup = test_sysvmsg_cleanup, 3174173138Srwatson .mpo_sysvmsg_create = test_sysvmsg_create, 3175173138Srwatson 3176173138Srwatson .mpo_sysvmsq_check_msgmsq = test_sysvmsq_check_msgmsq, 3177173138Srwatson .mpo_sysvmsq_check_msgrcv = test_sysvmsq_check_msgrcv, 3178173138Srwatson .mpo_sysvmsq_check_msgrmid = test_sysvmsq_check_msgrmid, 3179173138Srwatson .mpo_sysvmsq_check_msqget = test_sysvmsq_check_msqget, 3180173138Srwatson .mpo_sysvmsq_check_msqsnd = test_sysvmsq_check_msqsnd, 3181173138Srwatson .mpo_sysvmsq_check_msqrcv = test_sysvmsq_check_msqrcv, 3182173138Srwatson .mpo_sysvmsq_check_msqctl = test_sysvmsq_check_msqctl, 3183173138Srwatson .mpo_sysvmsq_cleanup = test_sysvmsq_cleanup, 3184173138Srwatson .mpo_sysvmsq_create = test_sysvmsq_create, 3185173138Srwatson 3186173138Srwatson .mpo_sysvsem_check_semctl = test_sysvsem_check_semctl, 3187173138Srwatson .mpo_sysvsem_check_semget = test_sysvsem_check_semget, 3188173138Srwatson .mpo_sysvsem_check_semop = test_sysvsem_check_semop, 3189173138Srwatson .mpo_sysvsem_cleanup = test_sysvsem_cleanup, 3190173138Srwatson .mpo_sysvsem_create = test_sysvsem_create, 3191173138Srwatson 3192173138Srwatson .mpo_sysvshm_check_shmat = test_sysvshm_check_shmat, 3193173138Srwatson .mpo_sysvshm_check_shmctl = test_sysvshm_check_shmctl, 3194173138Srwatson .mpo_sysvshm_check_shmdt = test_sysvshm_check_shmdt, 3195173138Srwatson .mpo_sysvshm_check_shmget = test_sysvshm_check_shmget, 3196173138Srwatson .mpo_sysvshm_cleanup = test_sysvshm_cleanup, 3197173138Srwatson .mpo_sysvshm_create = test_sysvshm_create, 3198173138Srwatson 3199173138Srwatson .mpo_thread_userret = test_thread_userret, 3200173138Srwatson 3201173138Srwatson .mpo_vnode_associate_extattr = test_vnode_associate_extattr, 3202173138Srwatson .mpo_vnode_associate_singlelabel = test_vnode_associate_singlelabel, 3203172955Srwatson .mpo_vnode_check_chdir = test_vnode_check_chdir, 3204172955Srwatson .mpo_vnode_check_chroot = test_vnode_check_chroot, 3205172955Srwatson .mpo_vnode_check_create = test_vnode_check_create, 3206172955Srwatson .mpo_vnode_check_deleteacl = test_vnode_check_deleteacl, 3207172955Srwatson .mpo_vnode_check_deleteextattr = test_vnode_check_deleteextattr, 3208172955Srwatson .mpo_vnode_check_exec = test_vnode_check_exec, 3209172955Srwatson .mpo_vnode_check_getacl = test_vnode_check_getacl, 3210172955Srwatson .mpo_vnode_check_getextattr = test_vnode_check_getextattr, 3211172955Srwatson .mpo_vnode_check_link = test_vnode_check_link, 3212172955Srwatson .mpo_vnode_check_listextattr = test_vnode_check_listextattr, 3213172955Srwatson .mpo_vnode_check_lookup = test_vnode_check_lookup, 3214172955Srwatson .mpo_vnode_check_mmap = test_vnode_check_mmap, 3215172955Srwatson .mpo_vnode_check_open = test_vnode_check_open, 3216172955Srwatson .mpo_vnode_check_poll = test_vnode_check_poll, 3217172955Srwatson .mpo_vnode_check_read = test_vnode_check_read, 3218172955Srwatson .mpo_vnode_check_readdir = test_vnode_check_readdir, 3219172955Srwatson .mpo_vnode_check_readlink = test_vnode_check_readlink, 3220172955Srwatson .mpo_vnode_check_relabel = test_vnode_check_relabel, 3221172955Srwatson .mpo_vnode_check_rename_from = test_vnode_check_rename_from, 3222172955Srwatson .mpo_vnode_check_rename_to = test_vnode_check_rename_to, 3223172955Srwatson .mpo_vnode_check_revoke = test_vnode_check_revoke, 3224172955Srwatson .mpo_vnode_check_setacl = test_vnode_check_setacl, 3225172955Srwatson .mpo_vnode_check_setextattr = test_vnode_check_setextattr, 3226172955Srwatson .mpo_vnode_check_setflags = test_vnode_check_setflags, 3227172955Srwatson .mpo_vnode_check_setmode = test_vnode_check_setmode, 3228172955Srwatson .mpo_vnode_check_setowner = test_vnode_check_setowner, 3229172955Srwatson .mpo_vnode_check_setutimes = test_vnode_check_setutimes, 3230172955Srwatson .mpo_vnode_check_stat = test_vnode_check_stat, 3231172955Srwatson .mpo_vnode_check_unlink = test_vnode_check_unlink, 3232172955Srwatson .mpo_vnode_check_write = test_vnode_check_write, 3233173138Srwatson .mpo_vnode_copy_label = test_vnode_copy_label, 3234173138Srwatson .mpo_vnode_create_extattr = test_vnode_create_extattr, 3235173138Srwatson .mpo_vnode_destroy_label = test_vnode_destroy_label, 3236173138Srwatson .mpo_vnode_execve_transition = test_vnode_execve_transition, 3237173138Srwatson .mpo_vnode_execve_will_transition = test_vnode_execve_will_transition, 3238173138Srwatson .mpo_vnode_externalize_label = test_vnode_externalize_label, 3239173138Srwatson .mpo_vnode_init_label = test_vnode_init_label, 3240173163Srwatson .mpo_vnode_internalize_label = test_vnode_internalize_label, 3241173138Srwatson .mpo_vnode_relabel = test_vnode_relabel, 3242173138Srwatson .mpo_vnode_setlabel_extattr = test_vnode_setlabel_extattr, 3243101099Srwatson}; 3244101099Srwatson 3245172955SrwatsonMAC_POLICY_SET(&test_ops, mac_test, "TrustedBSD MAC/Test", 3246187016Srwatson MPC_LOADTIME_FLAG_UNLOADOK, &test_slot); 3247