690 COUNTER_INC(create_mount); 691} 692 693COUNTER_DECL(relabel_vnode); 694static void 695mac_test_relabel_vnode(struct ucred *cred, struct vnode *vp, 696 struct label *vnodelabel, struct label *label) 697{ 698 699 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 700 LABEL_CHECK(vnodelabel, MAGIC_VNODE); 701 LABEL_CHECK(label, MAGIC_VNODE); 702 COUNTER_INC(relabel_vnode); 703} 704 705COUNTER_DECL(setlabel_vnode_extattr); 706static int 707mac_test_setlabel_vnode_extattr(struct ucred *cred, struct vnode *vp, 708 struct label *vlabel, struct label *intlabel) 709{ 710 711 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 712 LABEL_CHECK(vlabel, MAGIC_VNODE); 713 LABEL_CHECK(intlabel, MAGIC_VNODE); 714 COUNTER_INC(setlabel_vnode_extattr); 715 716 return (0); 717} 718 719COUNTER_DECL(update_devfsdirent); 720static void 721mac_test_update_devfsdirent(struct mount *mp, 722 struct devfs_dirent *devfs_dirent, struct label *direntlabel, 723 struct vnode *vp, struct label *vnodelabel) 724{ 725 726 LABEL_CHECK(direntlabel, MAGIC_DEVFS); 727 LABEL_CHECK(vnodelabel, MAGIC_VNODE); 728 COUNTER_INC(update_devfsdirent); 729} 730 731/* 732 * Labeling event operations: IPC object. 733 */ 734COUNTER_DECL(create_mbuf_from_socket); 735static void 736mac_test_create_mbuf_from_socket(struct socket *so, struct label *socketlabel, 737 struct mbuf *m, struct label *mbuflabel) 738{ 739 740 LABEL_CHECK(socketlabel, MAGIC_SOCKET); 741 LABEL_CHECK(mbuflabel, MAGIC_MBUF); 742 COUNTER_INC(create_mbuf_from_socket); 743} 744 745COUNTER_DECL(create_socket); 746static void 747mac_test_create_socket(struct ucred *cred, struct socket *socket, 748 struct label *socketlabel) 749{ 750 751 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 752 LABEL_CHECK(socketlabel, MAGIC_SOCKET); 753 COUNTER_INC(create_socket); 754} 755 756COUNTER_DECL(create_pipe); 757static void 758mac_test_create_pipe(struct ucred *cred, struct pipepair *pp, 759 struct label *pipelabel) 760{ 761 762 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 763 LABEL_CHECK(pipelabel, MAGIC_PIPE); 764 COUNTER_INC(create_pipe); 765} 766 767COUNTER_DECL(create_posix_sem); 768static void 769mac_test_create_posix_sem(struct ucred *cred, struct ksem *ksem, 770 struct label *posixlabel) 771{ 772 773 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 774 LABEL_CHECK(posixlabel, MAGIC_POSIX_SEM); 775 COUNTER_INC(create_posix_sem); 776} 777 778COUNTER_DECL(create_socket_from_socket); 779static void 780mac_test_create_socket_from_socket(struct socket *oldsocket, 781 struct label *oldsocketlabel, struct socket *newsocket, 782 struct label *newsocketlabel) 783{ 784 785 LABEL_CHECK(oldsocketlabel, MAGIC_SOCKET); 786 LABEL_CHECK(newsocketlabel, MAGIC_SOCKET); 787 COUNTER_INC(create_socket_from_socket); 788} 789 790COUNTER_DECL(relabel_socket); 791static void 792mac_test_relabel_socket(struct ucred *cred, struct socket *socket, 793 struct label *socketlabel, struct label *newlabel) 794{ 795 796 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 797 LABEL_CHECK(newlabel, MAGIC_SOCKET); 798 COUNTER_INC(relabel_socket); 799} 800 801COUNTER_DECL(relabel_pipe); 802static void 803mac_test_relabel_pipe(struct ucred *cred, struct pipepair *pp, 804 struct label *pipelabel, struct label *newlabel) 805{ 806 807 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 808 LABEL_CHECK(pipelabel, MAGIC_PIPE); 809 LABEL_CHECK(newlabel, MAGIC_PIPE); 810 COUNTER_INC(relabel_pipe); 811} 812 813COUNTER_DECL(set_socket_peer_from_mbuf); 814static void 815mac_test_set_socket_peer_from_mbuf(struct mbuf *mbuf, struct label *mbuflabel, 816 struct socket *socket, struct label *socketpeerlabel) 817{ 818 819 LABEL_CHECK(mbuflabel, MAGIC_MBUF); 820 LABEL_CHECK(socketpeerlabel, MAGIC_SOCKET); 821 COUNTER_INC(set_socket_peer_from_mbuf); 822} 823 824/* 825 * Labeling event operations: network objects. 826 */ 827COUNTER_DECL(set_socket_peer_from_socket); 828static void 829mac_test_set_socket_peer_from_socket(struct socket *oldsocket, 830 struct label *oldsocketlabel, struct socket *newsocket, 831 struct label *newsocketpeerlabel) 832{ 833 834 LABEL_CHECK(oldsocketlabel, MAGIC_SOCKET); 835 LABEL_CHECK(newsocketpeerlabel, MAGIC_SOCKET); 836 COUNTER_INC(set_socket_peer_from_socket); 837} 838 839COUNTER_DECL(create_bpfdesc); 840static void 841mac_test_create_bpfdesc(struct ucred *cred, struct bpf_d *bpf_d, 842 struct label *bpflabel) 843{ 844 845 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 846 LABEL_CHECK(bpflabel, MAGIC_BPF); 847 COUNTER_INC(create_bpfdesc); 848} 849 850COUNTER_DECL(create_datagram_from_ipq); 851static void 852mac_test_create_datagram_from_ipq(struct ipq *ipq, struct label *ipqlabel, 853 struct mbuf *datagram, struct label *datagramlabel) 854{ 855 856 LABEL_CHECK(ipqlabel, MAGIC_IPQ); 857 LABEL_CHECK(datagramlabel, MAGIC_MBUF); 858 COUNTER_INC(create_datagram_from_ipq); 859} 860 861COUNTER_DECL(create_fragment); 862static void 863mac_test_create_fragment(struct mbuf *datagram, struct label *datagramlabel, 864 struct mbuf *fragment, struct label *fragmentlabel) 865{ 866 867 LABEL_CHECK(datagramlabel, MAGIC_MBUF); 868 LABEL_CHECK(fragmentlabel, MAGIC_MBUF); 869 COUNTER_INC(create_fragment); 870} 871 872COUNTER_DECL(create_ifnet); 873static void 874mac_test_create_ifnet(struct ifnet *ifnet, struct label *ifnetlabel) 875{ 876 877 LABEL_CHECK(ifnetlabel, MAGIC_IFNET); 878 COUNTER_INC(create_ifnet); 879} 880 881COUNTER_DECL(create_inpcb_from_socket); 882static void 883mac_test_create_inpcb_from_socket(struct socket *so, struct label *solabel, 884 struct inpcb *inp, struct label *inplabel) 885{ 886 887 LABEL_CHECK(solabel, MAGIC_SOCKET); 888 LABEL_CHECK(inplabel, MAGIC_INPCB); 889 COUNTER_INC(create_inpcb_from_socket); 890} 891 892COUNTER_DECL(create_sysv_msgmsg); 893static void 894mac_test_create_sysv_msgmsg(struct ucred *cred, struct msqid_kernel *msqkptr, 895 struct label *msqlabel, struct msg *msgptr, struct label *msglabel) 896{ 897 898 LABEL_CHECK(msglabel, MAGIC_SYSV_MSG); 899 LABEL_CHECK(msqlabel, MAGIC_SYSV_MSQ); 900 COUNTER_INC(create_sysv_msgmsg); 901} 902 903COUNTER_DECL(create_sysv_msgqueue); 904static void 905mac_test_create_sysv_msgqueue(struct ucred *cred, 906 struct msqid_kernel *msqkptr, struct label *msqlabel) 907{ 908 909 LABEL_CHECK(msqlabel, MAGIC_SYSV_MSQ); 910 COUNTER_INC(create_sysv_msgqueue); 911} 912 913COUNTER_DECL(create_sysv_sem); 914static void 915mac_test_create_sysv_sem(struct ucred *cred, struct semid_kernel *semakptr, 916 struct label *semalabel) 917{ 918 919 LABEL_CHECK(semalabel, MAGIC_SYSV_SEM); 920 COUNTER_INC(create_sysv_sem); 921} 922 923COUNTER_DECL(create_sysv_shm); 924static void 925mac_test_create_sysv_shm(struct ucred *cred, struct shmid_kernel *shmsegptr, 926 struct label *shmlabel) 927{ 928 929 LABEL_CHECK(shmlabel, MAGIC_SYSV_SHM); 930 COUNTER_INC(create_sysv_shm); 931} 932 933COUNTER_DECL(create_ipq); 934static void 935mac_test_create_ipq(struct mbuf *fragment, struct label *fragmentlabel, 936 struct ipq *ipq, struct label *ipqlabel) 937{ 938 939 LABEL_CHECK(fragmentlabel, MAGIC_MBUF); 940 LABEL_CHECK(ipqlabel, MAGIC_IPQ); 941 COUNTER_INC(create_ipq); 942} 943 944COUNTER_DECL(create_mbuf_from_inpcb); 945static void 946mac_test_create_mbuf_from_inpcb(struct inpcb *inp, struct label *inplabel, 947 struct mbuf *m, struct label *mlabel) 948{ 949 950 LABEL_CHECK(inplabel, MAGIC_INPCB); 951 LABEL_CHECK(mlabel, MAGIC_MBUF); 952 COUNTER_INC(create_mbuf_from_inpcb); 953} 954 955COUNTER_DECL(create_mbuf_linklayer); 956static void 957mac_test_create_mbuf_linklayer(struct ifnet *ifnet, struct label *ifnetlabel, 958 struct mbuf *mbuf, struct label *mbuflabel) 959{ 960 961 LABEL_CHECK(ifnetlabel, MAGIC_IFNET); 962 LABEL_CHECK(mbuflabel, MAGIC_MBUF); 963 COUNTER_INC(create_mbuf_linklayer); 964} 965 966COUNTER_DECL(create_mbuf_from_bpfdesc); 967static void 968mac_test_create_mbuf_from_bpfdesc(struct bpf_d *bpf_d, struct label *bpflabel, 969 struct mbuf *mbuf, struct label *mbuflabel) 970{ 971 972 LABEL_CHECK(bpflabel, MAGIC_BPF); 973 LABEL_CHECK(mbuflabel, MAGIC_MBUF); 974 COUNTER_INC(create_mbuf_from_bpfdesc); 975} 976 977COUNTER_DECL(create_mbuf_from_ifnet); 978static void 979mac_test_create_mbuf_from_ifnet(struct ifnet *ifnet, struct label *ifnetlabel, 980 struct mbuf *m, struct label *mbuflabel) 981{ 982 983 LABEL_CHECK(ifnetlabel, MAGIC_IFNET); 984 LABEL_CHECK(mbuflabel, MAGIC_MBUF); 985 COUNTER_INC(create_mbuf_from_ifnet); 986} 987 988COUNTER_DECL(create_mbuf_multicast_encap); 989static void 990mac_test_create_mbuf_multicast_encap(struct mbuf *oldmbuf, 991 struct label *oldmbuflabel, struct ifnet *ifnet, struct label *ifnetlabel, 992 struct mbuf *newmbuf, struct label *newmbuflabel) 993{ 994 995 LABEL_CHECK(oldmbuflabel, MAGIC_MBUF); 996 LABEL_CHECK(ifnetlabel, MAGIC_IFNET); 997 LABEL_CHECK(newmbuflabel, MAGIC_MBUF); 998 COUNTER_INC(create_mbuf_multicast_encap); 999} 1000 1001COUNTER_DECL(create_mbuf_netlayer); 1002static void 1003mac_test_create_mbuf_netlayer(struct mbuf *oldmbuf, 1004 struct label *oldmbuflabel, struct mbuf *newmbuf, 1005 struct label *newmbuflabel) 1006{ 1007 1008 LABEL_CHECK(oldmbuflabel, MAGIC_MBUF); 1009 LABEL_CHECK(newmbuflabel, MAGIC_MBUF); 1010 COUNTER_INC(create_mbuf_netlayer); 1011} 1012 1013COUNTER_DECL(fragment_match); 1014static int 1015mac_test_fragment_match(struct mbuf *fragment, struct label *fragmentlabel, 1016 struct ipq *ipq, struct label *ipqlabel) 1017{ 1018 1019 LABEL_CHECK(fragmentlabel, MAGIC_MBUF); 1020 LABEL_CHECK(ipqlabel, MAGIC_IPQ); 1021 COUNTER_INC(fragment_match); 1022 1023 return (1); 1024} 1025 1026COUNTER_DECL(reflect_mbuf_icmp); 1027static void 1028mac_test_reflect_mbuf_icmp(struct mbuf *m, struct label *mlabel) 1029{ 1030 1031 LABEL_CHECK(mlabel, MAGIC_MBUF); 1032 COUNTER_INC(reflect_mbuf_icmp); 1033} 1034 1035COUNTER_DECL(reflect_mbuf_tcp); 1036static void 1037mac_test_reflect_mbuf_tcp(struct mbuf *m, struct label *mlabel) 1038{ 1039 1040 LABEL_CHECK(mlabel, MAGIC_MBUF); 1041 COUNTER_INC(reflect_mbuf_tcp); 1042} 1043 1044COUNTER_DECL(relabel_ifnet); 1045static void 1046mac_test_relabel_ifnet(struct ucred *cred, struct ifnet *ifnet, 1047 struct label *ifnetlabel, struct label *newlabel) 1048{ 1049 1050 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1051 LABEL_CHECK(ifnetlabel, MAGIC_IFNET); 1052 LABEL_CHECK(newlabel, MAGIC_IFNET); 1053 COUNTER_INC(relabel_ifnet); 1054} 1055 1056COUNTER_DECL(update_ipq); 1057static void 1058mac_test_update_ipq(struct mbuf *fragment, struct label *fragmentlabel, 1059 struct ipq *ipq, struct label *ipqlabel) 1060{ 1061 1062 LABEL_CHECK(fragmentlabel, MAGIC_MBUF); 1063 LABEL_CHECK(ipqlabel, MAGIC_IPQ); 1064 COUNTER_INC(update_ipq); 1065} 1066 1067COUNTER_DECL(inpcb_sosetlabel); 1068static void 1069mac_test_inpcb_sosetlabel(struct socket *so, struct label *solabel, 1070 struct inpcb *inp, struct label *inplabel) 1071{ 1072 1073 LABEL_CHECK(solabel, MAGIC_SOCKET); 1074 LABEL_CHECK(inplabel, MAGIC_INPCB); 1075 COUNTER_INC(inpcb_sosetlabel); 1076} 1077 1078/* 1079 * Labeling event operations: processes. 1080 */ 1081COUNTER_DECL(execve_transition); 1082static void 1083mac_test_execve_transition(struct ucred *old, struct ucred *new, 1084 struct vnode *vp, struct label *filelabel, 1085 struct label *interpvnodelabel, struct image_params *imgp, 1086 struct label *execlabel) 1087{ 1088 1089 LABEL_CHECK(old->cr_label, MAGIC_CRED); 1090 LABEL_CHECK(new->cr_label, MAGIC_CRED); 1091 LABEL_CHECK(filelabel, MAGIC_VNODE); 1092 LABEL_CHECK(interpvnodelabel, MAGIC_VNODE); 1093 LABEL_CHECK(execlabel, MAGIC_CRED); 1094 COUNTER_INC(execve_transition); 1095} 1096 1097COUNTER_DECL(execve_will_transition); 1098static int 1099mac_test_execve_will_transition(struct ucred *old, struct vnode *vp, 1100 struct label *filelabel, struct label *interpvnodelabel, 1101 struct image_params *imgp, struct label *execlabel) 1102{ 1103 1104 LABEL_CHECK(old->cr_label, MAGIC_CRED); 1105 LABEL_CHECK(filelabel, MAGIC_VNODE); 1106 LABEL_CHECK(interpvnodelabel, MAGIC_VNODE); 1107 LABEL_CHECK(execlabel, MAGIC_CRED); 1108 COUNTER_INC(execve_will_transition); 1109 1110 return (0); 1111} 1112 1113COUNTER_DECL(create_proc0); 1114static void 1115mac_test_create_proc0(struct ucred *cred) 1116{ 1117 1118 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1119 COUNTER_INC(create_proc0); 1120} 1121 1122COUNTER_DECL(create_proc1); 1123static void 1124mac_test_create_proc1(struct ucred *cred) 1125{ 1126 1127 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1128 COUNTER_INC(create_proc1); 1129} 1130 1131COUNTER_DECL(relabel_cred); 1132static void 1133mac_test_relabel_cred(struct ucred *cred, struct label *newlabel) 1134{ 1135 1136 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1137 LABEL_CHECK(newlabel, MAGIC_CRED); 1138 COUNTER_INC(relabel_cred); 1139} 1140 1141COUNTER_DECL(thread_userret); 1142static void 1143mac_test_thread_userret(struct thread *td) 1144{ 1145 1146 COUNTER_INC(thread_userret); 1147} 1148 1149/* 1150 * Label cleanup/flush operations 1151 */ 1152COUNTER_DECL(cleanup_sysv_msgmsg); 1153static void 1154mac_test_cleanup_sysv_msgmsg(struct label *msglabel) 1155{ 1156 1157 LABEL_CHECK(msglabel, MAGIC_SYSV_MSG); 1158 COUNTER_INC(cleanup_sysv_msgmsg); 1159} 1160 1161COUNTER_DECL(cleanup_sysv_msgqueue); 1162static void 1163mac_test_cleanup_sysv_msgqueue(struct label *msqlabel) 1164{ 1165 1166 LABEL_CHECK(msqlabel, MAGIC_SYSV_MSQ); 1167 COUNTER_INC(cleanup_sysv_msgqueue); 1168} 1169 1170COUNTER_DECL(cleanup_sysv_sem); 1171static void 1172mac_test_cleanup_sysv_sem(struct label *semalabel) 1173{ 1174 1175 LABEL_CHECK(semalabel, MAGIC_SYSV_SEM); 1176 COUNTER_INC(cleanup_sysv_sem); 1177} 1178 1179COUNTER_DECL(cleanup_sysv_shm); 1180static void 1181mac_test_cleanup_sysv_shm(struct label *shmlabel) 1182{ 1183 1184 LABEL_CHECK(shmlabel, MAGIC_SYSV_SHM); 1185 COUNTER_INC(cleanup_sysv_shm); 1186} 1187 1188/* 1189 * Access control checks. 1190 */ 1191COUNTER_DECL(check_bpfdesc_receive); 1192static int 1193mac_test_check_bpfdesc_receive(struct bpf_d *bpf_d, struct label *bpflabel, 1194 struct ifnet *ifnet, struct label *ifnetlabel) 1195{ 1196 1197 LABEL_CHECK(bpflabel, MAGIC_BPF); 1198 LABEL_CHECK(ifnetlabel, MAGIC_IFNET); 1199 COUNTER_INC(check_bpfdesc_receive); 1200 1201 return (0); 1202} 1203 1204COUNTER_DECL(check_cred_relabel); 1205static int 1206mac_test_check_cred_relabel(struct ucred *cred, struct label *newlabel) 1207{ 1208 1209 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1210 LABEL_CHECK(newlabel, MAGIC_CRED); 1211 COUNTER_INC(check_cred_relabel); 1212 1213 return (0); 1214} 1215 1216COUNTER_DECL(check_cred_visible); 1217static int 1218mac_test_check_cred_visible(struct ucred *u1, struct ucred *u2) 1219{ 1220 1221 LABEL_CHECK(u1->cr_label, MAGIC_CRED); 1222 LABEL_CHECK(u2->cr_label, MAGIC_CRED); 1223 COUNTER_INC(check_cred_visible); 1224 1225 return (0); 1226} 1227 1228COUNTER_DECL(check_ifnet_relabel); 1229static int 1230mac_test_check_ifnet_relabel(struct ucred *cred, struct ifnet *ifnet, 1231 struct label *ifnetlabel, struct label *newlabel) 1232{ 1233 1234 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1235 LABEL_CHECK(ifnetlabel, MAGIC_IFNET); 1236 LABEL_CHECK(newlabel, MAGIC_IFNET); 1237 COUNTER_INC(check_ifnet_relabel); 1238 1239 return (0); 1240} 1241 1242COUNTER_DECL(check_ifnet_transmit); 1243static int 1244mac_test_check_ifnet_transmit(struct ifnet *ifnet, struct label *ifnetlabel, 1245 struct mbuf *m, struct label *mbuflabel) 1246{ 1247 1248 LABEL_CHECK(ifnetlabel, MAGIC_IFNET); 1249 LABEL_CHECK(mbuflabel, MAGIC_MBUF); 1250 COUNTER_INC(check_ifnet_transmit); 1251 1252 return (0); 1253} 1254 1255COUNTER_DECL(check_inpcb_deliver); 1256static int 1257mac_test_check_inpcb_deliver(struct inpcb *inp, struct label *inplabel, 1258 struct mbuf *m, struct label *mlabel) 1259{ 1260 1261 LABEL_CHECK(inplabel, MAGIC_INPCB); 1262 LABEL_CHECK(mlabel, MAGIC_MBUF); 1263 COUNTER_INC(check_inpcb_deliver); 1264 1265 return (0); 1266} 1267 1268COUNTER_DECL(check_sysv_msgmsq); 1269static int 1270mac_test_check_sysv_msgmsq(struct ucred *cred, struct msg *msgptr, 1271 struct label *msglabel, struct msqid_kernel *msqkptr, 1272 struct label *msqklabel) 1273{ 1274 1275 LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ); 1276 LABEL_CHECK(msglabel, MAGIC_SYSV_MSG); 1277 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1278 COUNTER_INC(check_sysv_msgmsq); 1279 1280 return (0); 1281} 1282 1283COUNTER_DECL(check_sysv_msgrcv); 1284static int 1285mac_test_check_sysv_msgrcv(struct ucred *cred, struct msg *msgptr, 1286 struct label *msglabel) 1287{ 1288 1289 LABEL_CHECK(msglabel, MAGIC_SYSV_MSG); 1290 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1291 COUNTER_INC(check_sysv_msgrcv); 1292 1293 return (0); 1294} 1295 1296COUNTER_DECL(check_sysv_msgrmid); 1297static int 1298mac_test_check_sysv_msgrmid(struct ucred *cred, struct msg *msgptr, 1299 struct label *msglabel) 1300{ 1301 1302 LABEL_CHECK(msglabel, MAGIC_SYSV_MSG); 1303 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1304 COUNTER_INC(check_sysv_msgrmid); 1305 1306 return (0); 1307} 1308 1309COUNTER_DECL(check_sysv_msqget); 1310static int 1311mac_test_check_sysv_msqget(struct ucred *cred, struct msqid_kernel *msqkptr, 1312 struct label *msqklabel) 1313{ 1314 1315 LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ); 1316 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1317 COUNTER_INC(check_sysv_msqget); 1318 1319 return (0); 1320} 1321 1322COUNTER_DECL(check_sysv_msqsnd); 1323static int 1324mac_test_check_sysv_msqsnd(struct ucred *cred, struct msqid_kernel *msqkptr, 1325 struct label *msqklabel) 1326{ 1327 1328 LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ); 1329 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1330 COUNTER_INC(check_sysv_msqsnd); 1331 1332 return (0); 1333} 1334 1335COUNTER_DECL(check_sysv_msqrcv); 1336static int 1337mac_test_check_sysv_msqrcv(struct ucred *cred, struct msqid_kernel *msqkptr, 1338 struct label *msqklabel) 1339{ 1340 1341 LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ); 1342 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1343 COUNTER_INC(check_sysv_msqrcv); 1344 1345 return (0); 1346} 1347 1348COUNTER_DECL(check_sysv_msqctl); 1349static int 1350mac_test_check_sysv_msqctl(struct ucred *cred, struct msqid_kernel *msqkptr, 1351 struct label *msqklabel, int cmd) 1352{ 1353 1354 LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ); 1355 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1356 COUNTER_INC(check_sysv_msqctl); 1357 1358 return (0); 1359} 1360 1361COUNTER_DECL(check_sysv_semctl); 1362static int 1363mac_test_check_sysv_semctl(struct ucred *cred, struct semid_kernel *semakptr, 1364 struct label *semaklabel, int cmd) 1365{ 1366 1367 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1368 LABEL_CHECK(semaklabel, MAGIC_SYSV_SEM); 1369 COUNTER_INC(check_sysv_semctl); 1370 1371 return (0); 1372} 1373 1374COUNTER_DECL(check_sysv_semget); 1375static int 1376mac_test_check_sysv_semget(struct ucred *cred, struct semid_kernel *semakptr, 1377 struct label *semaklabel) 1378{ 1379 1380 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1381 LABEL_CHECK(semaklabel, MAGIC_SYSV_SEM); 1382 COUNTER_INC(check_sysv_semget); 1383 1384 return (0); 1385} 1386 1387COUNTER_DECL(check_sysv_semop); 1388static int 1389mac_test_check_sysv_semop(struct ucred *cred, struct semid_kernel *semakptr, 1390 struct label *semaklabel, size_t accesstype) 1391{ 1392 1393 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1394 LABEL_CHECK(semaklabel, MAGIC_SYSV_SEM); 1395 COUNTER_INC(check_sysv_semop); 1396 1397 return (0); 1398} 1399 1400COUNTER_DECL(check_sysv_shmat); 1401static int 1402mac_test_check_sysv_shmat(struct ucred *cred, struct shmid_kernel *shmsegptr, 1403 struct label *shmseglabel, int shmflg) 1404{ 1405 1406 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1407 LABEL_CHECK(shmseglabel, MAGIC_SYSV_SHM); 1408 COUNTER_INC(check_sysv_shmat); 1409 1410 return (0); 1411} 1412 1413COUNTER_DECL(check_sysv_shmctl); 1414static int 1415mac_test_check_sysv_shmctl(struct ucred *cred, struct shmid_kernel *shmsegptr, 1416 struct label *shmseglabel, int cmd) 1417{ 1418 1419 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1420 LABEL_CHECK(shmseglabel, MAGIC_SYSV_SHM); 1421 COUNTER_INC(check_sysv_shmctl); 1422 1423 return (0); 1424} 1425 1426COUNTER_DECL(check_sysv_shmdt); 1427static int 1428mac_test_check_sysv_shmdt(struct ucred *cred, struct shmid_kernel *shmsegptr, 1429 struct label *shmseglabel) 1430{ 1431 1432 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1433 LABEL_CHECK(shmseglabel, MAGIC_SYSV_SHM); 1434 COUNTER_INC(check_sysv_shmdt); 1435 1436 return (0); 1437} 1438 1439COUNTER_DECL(check_sysv_shmget); 1440static int 1441mac_test_check_sysv_shmget(struct ucred *cred, struct shmid_kernel *shmsegptr, 1442 struct label *shmseglabel, int shmflg) 1443{ 1444 1445 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1446 LABEL_CHECK(shmseglabel, MAGIC_SYSV_SHM); 1447 COUNTER_INC(check_sysv_shmget); 1448 1449 return (0); 1450} 1451 1452COUNTER_DECL(check_kenv_dump); 1453static int 1454mac_test_check_kenv_dump(struct ucred *cred) 1455{ 1456 1457 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1458 COUNTER_INC(check_kenv_dump); 1459 1460 return (0); 1461} 1462 1463COUNTER_DECL(check_kenv_get); 1464static int 1465mac_test_check_kenv_get(struct ucred *cred, char *name) 1466{ 1467 1468 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1469 COUNTER_INC(check_kenv_get); 1470 1471 return (0); 1472} 1473 1474COUNTER_DECL(check_kenv_set); 1475static int 1476mac_test_check_kenv_set(struct ucred *cred, char *name, char *value) 1477{ 1478 1479 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1480 COUNTER_INC(check_kenv_set); 1481 1482 return (0); 1483} 1484 1485COUNTER_DECL(check_kenv_unset); 1486static int 1487mac_test_check_kenv_unset(struct ucred *cred, char *name) 1488{ 1489 1490 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1491 COUNTER_INC(check_kenv_unset); 1492 1493 return (0); 1494} 1495 1496COUNTER_DECL(check_kld_load); 1497static int 1498mac_test_check_kld_load(struct ucred *cred, struct vnode *vp, 1499 struct label *label) 1500{ 1501 1502 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1503 LABEL_CHECK(label, MAGIC_VNODE); 1504 COUNTER_INC(check_kld_load); 1505 1506 return (0); 1507} 1508 1509COUNTER_DECL(check_kld_stat); 1510static int 1511mac_test_check_kld_stat(struct ucred *cred) 1512{ 1513 1514 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1515 COUNTER_INC(check_kld_stat); 1516 1517 return (0); 1518} 1519 1520COUNTER_DECL(check_mount_stat); 1521static int 1522mac_test_check_mount_stat(struct ucred *cred, struct mount *mp, 1523 struct label *mntlabel) 1524{ 1525 1526 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1527 LABEL_CHECK(mntlabel, MAGIC_MOUNT); 1528 COUNTER_INC(check_mount_stat); 1529 1530 return (0); 1531} 1532 1533COUNTER_DECL(check_pipe_ioctl); 1534static int 1535mac_test_check_pipe_ioctl(struct ucred *cred, struct pipepair *pp, 1536 struct label *pipelabel, unsigned long cmd, void /* caddr_t */ *data) 1537{ 1538 1539 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1540 LABEL_CHECK(pipelabel, MAGIC_PIPE); 1541 COUNTER_INC(check_pipe_ioctl); 1542 1543 return (0); 1544} 1545 1546COUNTER_DECL(check_pipe_poll); 1547static int 1548mac_test_check_pipe_poll(struct ucred *cred, struct pipepair *pp, 1549 struct label *pipelabel) 1550{ 1551 1552 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1553 LABEL_CHECK(pipelabel, MAGIC_PIPE); 1554 COUNTER_INC(check_pipe_poll); 1555 1556 return (0); 1557} 1558 1559COUNTER_DECL(check_pipe_read); 1560static int 1561mac_test_check_pipe_read(struct ucred *cred, struct pipepair *pp, 1562 struct label *pipelabel) 1563{ 1564 1565 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1566 LABEL_CHECK(pipelabel, MAGIC_PIPE); 1567 COUNTER_INC(check_pipe_read); 1568 1569 return (0); 1570} 1571 1572COUNTER_DECL(check_pipe_relabel); 1573static int 1574mac_test_check_pipe_relabel(struct ucred *cred, struct pipepair *pp, 1575 struct label *pipelabel, struct label *newlabel) 1576{ 1577 1578 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1579 LABEL_CHECK(pipelabel, MAGIC_PIPE); 1580 LABEL_CHECK(newlabel, MAGIC_PIPE); 1581 COUNTER_INC(check_pipe_relabel); 1582 1583 return (0); 1584} 1585 1586COUNTER_DECL(check_pipe_stat); 1587static int 1588mac_test_check_pipe_stat(struct ucred *cred, struct pipepair *pp, 1589 struct label *pipelabel) 1590{ 1591 1592 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1593 LABEL_CHECK(pipelabel, MAGIC_PIPE); 1594 COUNTER_INC(check_pipe_stat); 1595 1596 return (0); 1597} 1598 1599COUNTER_DECL(check_pipe_write); 1600static int 1601mac_test_check_pipe_write(struct ucred *cred, struct pipepair *pp, 1602 struct label *pipelabel) 1603{ 1604 1605 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1606 LABEL_CHECK(pipelabel, MAGIC_PIPE); 1607 COUNTER_INC(check_pipe_write); 1608 1609 return (0); 1610} 1611 1612COUNTER_DECL(check_posix_sem); 1613static int 1614mac_test_check_posix_sem(struct ucred *cred, struct ksem *ksemptr, 1615 struct label *ks_label) 1616{ 1617 1618 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1619 LABEL_CHECK(ks_label, MAGIC_POSIX_SEM); 1620 COUNTER_INC(check_posix_sem); 1621 1622 return (0); 1623} 1624 1625COUNTER_DECL(check_proc_debug); 1626static int 1627mac_test_check_proc_debug(struct ucred *cred, struct proc *proc) 1628{ 1629 1630 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1631 LABEL_CHECK(proc->p_ucred->cr_label, MAGIC_CRED); 1632 COUNTER_INC(check_proc_debug); 1633 1634 return (0); 1635} 1636 1637COUNTER_DECL(check_proc_sched); 1638static int 1639mac_test_check_proc_sched(struct ucred *cred, struct proc *proc) 1640{ 1641 1642 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1643 LABEL_CHECK(proc->p_ucred->cr_label, MAGIC_CRED); 1644 COUNTER_INC(check_proc_sched); 1645 1646 return (0); 1647} 1648 1649COUNTER_DECL(check_proc_signal); 1650static int 1651mac_test_check_proc_signal(struct ucred *cred, struct proc *proc, int signum) 1652{ 1653 1654 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1655 LABEL_CHECK(proc->p_ucred->cr_label, MAGIC_CRED); 1656 COUNTER_INC(check_proc_signal); 1657 1658 return (0); 1659} 1660 1661COUNTER_DECL(check_proc_setaudit); 1662static int 1663mac_test_check_proc_setaudit(struct ucred *cred, struct auditinfo *ai) 1664{ 1665 1666 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1667 COUNTER_INC(check_proc_setaudit); 1668 1669 return (0); 1670} 1671 1672COUNTER_DECL(check_proc_setauid); 1673static int 1674mac_test_check_proc_setauid(struct ucred *cred, uid_t auid) 1675{ 1676 1677 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1678 COUNTER_INC(check_proc_setauid); 1679 1680 return (0); 1681} 1682 1683COUNTER_DECL(check_proc_setuid); 1684static int 1685mac_test_check_proc_setuid(struct ucred *cred, uid_t uid) 1686{ 1687 1688 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1689 COUNTER_INC(check_proc_setuid); 1690 1691 return (0); 1692} 1693 1694COUNTER_DECL(check_proc_euid); 1695static int 1696mac_test_check_proc_seteuid(struct ucred *cred, uid_t euid) 1697{ 1698 1699 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1700 COUNTER_INC(check_proc_euid); 1701 1702 return (0); 1703} 1704 1705COUNTER_DECL(check_proc_setgid); 1706static int 1707mac_test_check_proc_setgid(struct ucred *cred, gid_t gid) 1708{ 1709 1710 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1711 COUNTER_INC(check_proc_setgid); 1712 1713 return (0); 1714} 1715 1716COUNTER_DECL(check_proc_setegid); 1717static int 1718mac_test_check_proc_setegid(struct ucred *cred, gid_t egid) 1719{ 1720 1721 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1722 COUNTER_INC(check_proc_setegid); 1723 1724 return (0); 1725} 1726 1727COUNTER_DECL(check_proc_setgroups); 1728static int 1729mac_test_check_proc_setgroups(struct ucred *cred, int ngroups, 1730 gid_t *gidset) 1731{ 1732 1733 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1734 COUNTER_INC(check_proc_setgroups); 1735 1736 return (0); 1737} 1738 1739COUNTER_DECL(check_proc_setreuid); 1740static int 1741mac_test_check_proc_setreuid(struct ucred *cred, uid_t ruid, uid_t euid) 1742{ 1743 1744 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1745 COUNTER_INC(check_proc_setreuid); 1746 1747 return (0); 1748} 1749 1750COUNTER_DECL(check_proc_setregid); 1751static int 1752mac_test_check_proc_setregid(struct ucred *cred, gid_t rgid, gid_t egid) 1753{ 1754 1755 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1756 COUNTER_INC(check_proc_setregid); 1757 1758 return (0); 1759} 1760 1761COUNTER_DECL(check_proc_setresuid); 1762static int 1763mac_test_check_proc_setresuid(struct ucred *cred, uid_t ruid, uid_t euid, 1764 uid_t suid) 1765{ 1766 1767 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1768 COUNTER_INC(check_proc_setresuid); 1769 1770 return (0); 1771} 1772 1773COUNTER_DECL(check_proc_setresgid); 1774static int 1775mac_test_check_proc_setresgid(struct ucred *cred, gid_t rgid, gid_t egid, 1776 gid_t sgid) 1777{ 1778 1779 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1780 COUNTER_INC(check_proc_setresgid); 1781 1782 return (0); 1783} 1784 1785COUNTER_DECL(check_proc_wait); 1786static int 1787mac_test_check_proc_wait(struct ucred *cred, struct proc *proc) 1788{ 1789 1790 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1791 LABEL_CHECK(proc->p_ucred->cr_label, MAGIC_CRED); 1792 COUNTER_INC(check_proc_wait); 1793 1794 return (0); 1795} 1796 1797COUNTER_DECL(check_socket_accept); 1798static int 1799mac_test_check_socket_accept(struct ucred *cred, struct socket *socket, 1800 struct label *socketlabel) 1801{ 1802 1803 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1804 LABEL_CHECK(socketlabel, MAGIC_SOCKET); 1805 COUNTER_INC(check_socket_accept); 1806 1807 return (0); 1808} 1809 1810COUNTER_DECL(check_socket_bind); 1811static int 1812mac_test_check_socket_bind(struct ucred *cred, struct socket *socket, 1813 struct label *socketlabel, struct sockaddr *sockaddr) 1814{ 1815 1816 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1817 LABEL_CHECK(socketlabel, MAGIC_SOCKET); 1818 COUNTER_INC(check_socket_bind); 1819 1820 return (0); 1821} 1822 1823COUNTER_DECL(check_socket_connect); 1824static int 1825mac_test_check_socket_connect(struct ucred *cred, struct socket *socket, 1826 struct label *socketlabel, struct sockaddr *sockaddr) 1827{ 1828 1829 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1830 LABEL_CHECK(socketlabel, MAGIC_SOCKET); 1831 COUNTER_INC(check_socket_connect); 1832 1833 return (0); 1834} 1835 1836COUNTER_DECL(check_socket_deliver); 1837static int 1838mac_test_check_socket_deliver(struct socket *socket, struct label *socketlabel, 1839 struct mbuf *m, struct label *mbuflabel) 1840{ 1841 1842 LABEL_CHECK(socketlabel, MAGIC_SOCKET); 1843 LABEL_CHECK(mbuflabel, MAGIC_MBUF); 1844 COUNTER_INC(check_socket_deliver); 1845 1846 return (0); 1847} 1848 1849COUNTER_DECL(check_socket_listen); 1850static int 1851mac_test_check_socket_listen(struct ucred *cred, struct socket *socket, 1852 struct label *socketlabel) 1853{ 1854 1855 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1856 LABEL_CHECK(socketlabel, MAGIC_SOCKET); 1857 COUNTER_INC(check_socket_listen); 1858 1859 return (0); 1860} 1861 1862COUNTER_DECL(check_socket_poll); 1863static int 1864mac_test_check_socket_poll(struct ucred *cred, struct socket *socket, 1865 struct label *socketlabel) 1866{ 1867 1868 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1869 LABEL_CHECK(socketlabel, MAGIC_SOCKET); 1870 COUNTER_INC(check_socket_poll); 1871 1872 return (0); 1873} 1874 1875COUNTER_DECL(check_socket_receive); 1876static int 1877mac_test_check_socket_receive(struct ucred *cred, struct socket *socket, 1878 struct label *socketlabel) 1879{ 1880 1881 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1882 LABEL_CHECK(socketlabel, MAGIC_SOCKET); 1883 COUNTER_INC(check_socket_receive); 1884 1885 return (0); 1886} 1887 1888COUNTER_DECL(check_socket_relabel); 1889static int 1890mac_test_check_socket_relabel(struct ucred *cred, struct socket *socket, 1891 struct label *socketlabel, struct label *newlabel) 1892{ 1893 1894 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1895 LABEL_CHECK(socketlabel, MAGIC_SOCKET); 1896 LABEL_CHECK(newlabel, MAGIC_SOCKET); 1897 COUNTER_INC(check_socket_relabel); 1898 1899 return (0); 1900} 1901 1902COUNTER_DECL(check_socket_send); 1903static int 1904mac_test_check_socket_send(struct ucred *cred, struct socket *socket, 1905 struct label *socketlabel) 1906{ 1907 1908 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1909 LABEL_CHECK(socketlabel, MAGIC_SOCKET); 1910 COUNTER_INC(check_socket_send); 1911 1912 return (0); 1913} 1914 1915COUNTER_DECL(check_socket_stat); 1916static int 1917mac_test_check_socket_stat(struct ucred *cred, struct socket *socket, 1918 struct label *socketlabel) 1919{ 1920 1921 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1922 LABEL_CHECK(socketlabel, MAGIC_SOCKET); 1923 COUNTER_INC(check_socket_stat); 1924 1925 return (0); 1926} 1927 1928COUNTER_DECL(check_socket_visible); 1929static int 1930mac_test_check_socket_visible(struct ucred *cred, struct socket *socket, 1931 struct label *socketlabel) 1932{ 1933 1934 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1935 LABEL_CHECK(socketlabel, MAGIC_SOCKET); 1936 COUNTER_INC(check_socket_visible); 1937 1938 return (0); 1939} 1940 1941COUNTER_DECL(check_system_acct); 1942static int 1943mac_test_check_system_acct(struct ucred *cred, struct vnode *vp, 1944 struct label *label) 1945{ 1946 1947 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1948 LABEL_CHECK(label, MAGIC_VNODE); 1949 COUNTER_INC(check_system_acct); 1950 1951 return (0); 1952} 1953 1954COUNTER_DECL(check_system_audit); 1955static int 1956mac_test_check_system_audit(struct ucred *cred, void *record, int length) 1957{ 1958 1959 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1960 COUNTER_INC(check_system_audit); 1961 1962 return (0); 1963} 1964 1965COUNTER_DECL(check_system_auditctl); 1966static int 1967mac_test_check_system_auditctl(struct ucred *cred, struct vnode *vp, 1968 struct label *label) 1969{ 1970 1971 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1972 LABEL_CHECK(label, MAGIC_VNODE); 1973 COUNTER_INC(check_system_auditctl); 1974 1975 return (0); 1976} 1977 1978COUNTER_DECL(check_system_auditon); 1979static int 1980mac_test_check_system_auditon(struct ucred *cred, int cmd) 1981{ 1982 1983 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1984 COUNTER_INC(check_system_auditon); 1985 1986 return (0); 1987} 1988 1989COUNTER_DECL(check_system_reboot); 1990static int 1991mac_test_check_system_reboot(struct ucred *cred, int how) 1992{ 1993 1994 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 1995 COUNTER_INC(check_system_reboot); 1996 1997 return (0); 1998} 1999 2000COUNTER_DECL(check_system_swapoff); 2001static int 2002mac_test_check_system_swapoff(struct ucred *cred, struct vnode *vp, 2003 struct label *label) 2004{ 2005 2006 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2007 LABEL_CHECK(label, MAGIC_VNODE); 2008 COUNTER_INC(check_system_swapoff); 2009 2010 return (0); 2011} 2012 2013COUNTER_DECL(check_system_swapon); 2014static int 2015mac_test_check_system_swapon(struct ucred *cred, struct vnode *vp, 2016 struct label *label) 2017{ 2018 2019 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2020 LABEL_CHECK(label, MAGIC_VNODE); 2021 COUNTER_INC(check_system_swapon); 2022 2023 return (0); 2024} 2025 2026COUNTER_DECL(check_system_sysctl); 2027static int 2028mac_test_check_system_sysctl(struct ucred *cred, struct sysctl_oid *oidp, 2029 void *arg1, int arg2, struct sysctl_req *req) 2030{ 2031 2032 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2033 COUNTER_INC(check_system_sysctl); 2034 2035 return (0); 2036} 2037 2038COUNTER_DECL(check_vnode_access); 2039static int 2040mac_test_check_vnode_access(struct ucred *cred, struct vnode *vp, 2041 struct label *label, int acc_mode) 2042{ 2043 2044 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2045 LABEL_CHECK(label, MAGIC_VNODE); 2046 COUNTER_INC(check_vnode_access); 2047 2048 return (0); 2049} 2050 2051COUNTER_DECL(check_vnode_chdir); 2052static int 2053mac_test_check_vnode_chdir(struct ucred *cred, struct vnode *dvp, 2054 struct label *dlabel) 2055{ 2056 2057 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2058 LABEL_CHECK(dlabel, MAGIC_VNODE); 2059 COUNTER_INC(check_vnode_chdir); 2060 2061 return (0); 2062} 2063 2064COUNTER_DECL(check_vnode_chroot); 2065static int 2066mac_test_check_vnode_chroot(struct ucred *cred, struct vnode *dvp, 2067 struct label *dlabel) 2068{ 2069 2070 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2071 LABEL_CHECK(dlabel, MAGIC_VNODE); 2072 COUNTER_INC(check_vnode_chroot); 2073 2074 return (0); 2075} 2076 2077COUNTER_DECL(check_vnode_create); 2078static int 2079mac_test_check_vnode_create(struct ucred *cred, struct vnode *dvp, 2080 struct label *dlabel, struct componentname *cnp, struct vattr *vap) 2081{ 2082 2083 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2084 LABEL_CHECK(dlabel, MAGIC_VNODE); 2085 COUNTER_INC(check_vnode_create); 2086 2087 return (0); 2088} 2089 2090COUNTER_DECL(check_vnode_delete); 2091static int 2092mac_test_check_vnode_delete(struct ucred *cred, struct vnode *dvp, 2093 struct label *dlabel, struct vnode *vp, struct label *label, 2094 struct componentname *cnp) 2095{ 2096 2097 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2098 LABEL_CHECK(dlabel, MAGIC_VNODE); 2099 LABEL_CHECK(label, MAGIC_VNODE); 2100 COUNTER_INC(check_vnode_delete); 2101 2102 return (0); 2103} 2104 2105COUNTER_DECL(check_vnode_deleteacl); 2106static int 2107mac_test_check_vnode_deleteacl(struct ucred *cred, struct vnode *vp, 2108 struct label *label, acl_type_t type) 2109{ 2110 2111 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2112 LABEL_CHECK(label, MAGIC_VNODE); 2113 COUNTER_INC(check_vnode_deleteacl); 2114 2115 return (0); 2116} 2117 2118COUNTER_DECL(check_vnode_deleteextattr); 2119static int 2120mac_test_check_vnode_deleteextattr(struct ucred *cred, struct vnode *vp, 2121 struct label *label, int attrnamespace, const char *name) 2122{ 2123 2124 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2125 LABEL_CHECK(label, MAGIC_VNODE); 2126 COUNTER_INC(check_vnode_deleteextattr); 2127 2128 return (0); 2129} 2130 2131COUNTER_DECL(check_vnode_exec); 2132static int 2133mac_test_check_vnode_exec(struct ucred *cred, struct vnode *vp, 2134 struct label *label, struct image_params *imgp, 2135 struct label *execlabel) 2136{ 2137 2138 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2139 LABEL_CHECK(label, MAGIC_VNODE); 2140 LABEL_CHECK(execlabel, MAGIC_CRED); 2141 COUNTER_INC(check_vnode_exec); 2142 2143 return (0); 2144} 2145 2146COUNTER_DECL(check_vnode_getacl); 2147static int 2148mac_test_check_vnode_getacl(struct ucred *cred, struct vnode *vp, 2149 struct label *label, acl_type_t type) 2150{ 2151 2152 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2153 LABEL_CHECK(label, MAGIC_VNODE); 2154 COUNTER_INC(check_vnode_getacl); 2155 2156 return (0); 2157} 2158 2159COUNTER_DECL(check_vnode_getextattr); 2160static int 2161mac_test_check_vnode_getextattr(struct ucred *cred, struct vnode *vp, 2162 struct label *label, int attrnamespace, const char *name, struct uio *uio) 2163{ 2164 2165 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2166 LABEL_CHECK(label, MAGIC_VNODE); 2167 COUNTER_INC(check_vnode_getextattr); 2168 2169 return (0); 2170} 2171 2172COUNTER_DECL(check_vnode_link); 2173static int 2174mac_test_check_vnode_link(struct ucred *cred, struct vnode *dvp, 2175 struct label *dlabel, struct vnode *vp, struct label *label, 2176 struct componentname *cnp) 2177{ 2178 2179 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2180 LABEL_CHECK(dlabel, MAGIC_VNODE); 2181 LABEL_CHECK(label, MAGIC_VNODE); 2182 COUNTER_INC(check_vnode_link); 2183 2184 return (0); 2185} 2186 2187COUNTER_DECL(check_vnode_listextattr); 2188static int 2189mac_test_check_vnode_listextattr(struct ucred *cred, struct vnode *vp, 2190 struct label *label, int attrnamespace) 2191{ 2192 2193 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2194 LABEL_CHECK(label, MAGIC_VNODE); 2195 COUNTER_INC(check_vnode_listextattr); 2196 2197 return (0); 2198} 2199 2200COUNTER_DECL(check_vnode_lookup); 2201static int 2202mac_test_check_vnode_lookup(struct ucred *cred, struct vnode *dvp, 2203 struct label *dlabel, struct componentname *cnp) 2204{ 2205 2206 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2207 LABEL_CHECK(dlabel, MAGIC_VNODE); 2208 COUNTER_INC(check_vnode_lookup); 2209 2210 return (0); 2211} 2212 2213COUNTER_DECL(check_vnode_mmap); 2214static int 2215mac_test_check_vnode_mmap(struct ucred *cred, struct vnode *vp, 2216 struct label *label, int prot, int flags) 2217{ 2218 2219 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2220 LABEL_CHECK(label, MAGIC_VNODE); 2221 COUNTER_INC(check_vnode_mmap); 2222 2223 return (0); 2224} 2225 2226COUNTER_DECL(check_vnode_open); 2227static int 2228mac_test_check_vnode_open(struct ucred *cred, struct vnode *vp, 2229 struct label *filelabel, int acc_mode) 2230{ 2231 2232 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2233 LABEL_CHECK(filelabel, MAGIC_VNODE); 2234 COUNTER_INC(check_vnode_open); 2235 2236 return (0); 2237} 2238 2239COUNTER_DECL(check_vnode_poll); 2240static int 2241mac_test_check_vnode_poll(struct ucred *active_cred, struct ucred *file_cred, 2242 struct vnode *vp, struct label *label) 2243{ 2244 2245 LABEL_CHECK(active_cred->cr_label, MAGIC_CRED); 2246 if (file_cred != NULL) 2247 LABEL_CHECK(file_cred->cr_label, MAGIC_CRED); 2248 LABEL_CHECK(label, MAGIC_VNODE); 2249 COUNTER_INC(check_vnode_poll); 2250 2251 return (0); 2252} 2253 2254COUNTER_DECL(check_vnode_read); 2255static int 2256mac_test_check_vnode_read(struct ucred *active_cred, struct ucred *file_cred, 2257 struct vnode *vp, struct label *label) 2258{ 2259 2260 LABEL_CHECK(active_cred->cr_label, MAGIC_CRED); 2261 if (file_cred != NULL) 2262 LABEL_CHECK(file_cred->cr_label, MAGIC_CRED); 2263 LABEL_CHECK(label, MAGIC_VNODE); 2264 COUNTER_INC(check_vnode_read); 2265 2266 return (0); 2267} 2268 2269COUNTER_DECL(check_vnode_readdir); 2270static int 2271mac_test_check_vnode_readdir(struct ucred *cred, struct vnode *dvp, 2272 struct label *dlabel) 2273{ 2274 2275 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2276 LABEL_CHECK(dlabel, MAGIC_VNODE); 2277 COUNTER_INC(check_vnode_readdir); 2278 2279 return (0); 2280} 2281 2282COUNTER_DECL(check_vnode_readlink); 2283static int 2284mac_test_check_vnode_readlink(struct ucred *cred, struct vnode *vp, 2285 struct label *vnodelabel) 2286{ 2287 2288 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2289 LABEL_CHECK(vnodelabel, MAGIC_VNODE); 2290 COUNTER_INC(check_vnode_readlink); 2291 2292 return (0); 2293} 2294 2295COUNTER_DECL(check_vnode_relabel); 2296static int 2297mac_test_check_vnode_relabel(struct ucred *cred, struct vnode *vp, 2298 struct label *vnodelabel, struct label *newlabel) 2299{ 2300 2301 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2302 LABEL_CHECK(vnodelabel, MAGIC_VNODE); 2303 LABEL_CHECK(newlabel, MAGIC_VNODE); 2304 COUNTER_INC(check_vnode_relabel); 2305 2306 return (0); 2307} 2308 2309COUNTER_DECL(check_vnode_rename_from); 2310static int 2311mac_test_check_vnode_rename_from(struct ucred *cred, struct vnode *dvp, 2312 struct label *dlabel, struct vnode *vp, struct label *label, 2313 struct componentname *cnp) 2314{ 2315 2316 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2317 LABEL_CHECK(dlabel, MAGIC_VNODE); 2318 LABEL_CHECK(label, MAGIC_VNODE); 2319 COUNTER_INC(check_vnode_rename_from); 2320 2321 return (0); 2322} 2323 2324COUNTER_DECL(check_vnode_rename_to); 2325static int 2326mac_test_check_vnode_rename_to(struct ucred *cred, struct vnode *dvp, 2327 struct label *dlabel, struct vnode *vp, struct label *label, int samedir, 2328 struct componentname *cnp) 2329{ 2330 2331 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2332 LABEL_CHECK(dlabel, MAGIC_VNODE); 2333 LABEL_CHECK(label, MAGIC_VNODE); 2334 COUNTER_INC(check_vnode_rename_to); 2335 2336 return (0); 2337} 2338 2339COUNTER_DECL(check_vnode_revoke); 2340static int 2341mac_test_check_vnode_revoke(struct ucred *cred, struct vnode *vp, 2342 struct label *label) 2343{ 2344 2345 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2346 LABEL_CHECK(label, MAGIC_VNODE); 2347 COUNTER_INC(check_vnode_revoke); 2348 2349 return (0); 2350} 2351 2352COUNTER_DECL(check_vnode_setacl); 2353static int 2354mac_test_check_vnode_setacl(struct ucred *cred, struct vnode *vp, 2355 struct label *label, acl_type_t type, struct acl *acl) 2356{ 2357 2358 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2359 LABEL_CHECK(label, MAGIC_VNODE); 2360 COUNTER_INC(check_vnode_setacl); 2361 2362 return (0); 2363} 2364 2365COUNTER_DECL(check_vnode_setextattr); 2366static int 2367mac_test_check_vnode_setextattr(struct ucred *cred, struct vnode *vp, 2368 struct label *label, int attrnamespace, const char *name, struct uio *uio) 2369{ 2370 2371 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2372 LABEL_CHECK(label, MAGIC_VNODE); 2373 COUNTER_INC(check_vnode_setextattr); 2374 2375 return (0); 2376} 2377 2378COUNTER_DECL(check_vnode_setflags); 2379static int 2380mac_test_check_vnode_setflags(struct ucred *cred, struct vnode *vp, 2381 struct label *label, u_long flags) 2382{ 2383 2384 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2385 LABEL_CHECK(label, MAGIC_VNODE); 2386 COUNTER_INC(check_vnode_setflags); 2387 2388 return (0); 2389} 2390 2391COUNTER_DECL(check_vnode_setmode); 2392static int 2393mac_test_check_vnode_setmode(struct ucred *cred, struct vnode *vp, 2394 struct label *label, mode_t mode) 2395{ 2396 2397 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2398 LABEL_CHECK(label, MAGIC_VNODE); 2399 COUNTER_INC(check_vnode_setmode); 2400 2401 return (0); 2402} 2403 2404COUNTER_DECL(check_vnode_setowner); 2405static int 2406mac_test_check_vnode_setowner(struct ucred *cred, struct vnode *vp, 2407 struct label *label, uid_t uid, gid_t gid) 2408{ 2409 2410 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2411 LABEL_CHECK(label, MAGIC_VNODE); 2412 COUNTER_INC(check_vnode_setowner); 2413 2414 return (0); 2415} 2416 2417COUNTER_DECL(check_vnode_setutimes); 2418static int 2419mac_test_check_vnode_setutimes(struct ucred *cred, struct vnode *vp, 2420 struct label *label, struct timespec atime, struct timespec mtime) 2421{ 2422 2423 LABEL_CHECK(cred->cr_label, MAGIC_CRED); 2424 LABEL_CHECK(label, MAGIC_VNODE); 2425 COUNTER_INC(check_vnode_setutimes); 2426 2427 return (0); 2428} 2429 2430COUNTER_DECL(check_vnode_stat); 2431static int 2432mac_test_check_vnode_stat(struct ucred *active_cred, struct ucred *file_cred, 2433 struct vnode *vp, struct label *label) 2434{ 2435 2436 LABEL_CHECK(active_cred->cr_label, MAGIC_CRED); 2437 if (file_cred != NULL) 2438 LABEL_CHECK(file_cred->cr_label, MAGIC_CRED); 2439 LABEL_CHECK(label, MAGIC_VNODE); 2440 COUNTER_INC(check_vnode_stat); 2441 2442 return (0); 2443} 2444 2445COUNTER_DECL(check_vnode_write); 2446static int 2447mac_test_check_vnode_write(struct ucred *active_cred, 2448 struct ucred *file_cred, struct vnode *vp, struct label *label) 2449{ 2450 2451 LABEL_CHECK(active_cred->cr_label, MAGIC_CRED); 2452 if (file_cred != NULL) 2453 LABEL_CHECK(file_cred->cr_label, MAGIC_CRED); 2454 LABEL_CHECK(label, MAGIC_VNODE); 2455 COUNTER_INC(check_vnode_write); 2456 2457 return (0); 2458} 2459 2460static struct mac_policy_ops mac_test_ops = 2461{ 2462 .mpo_init_bpfdesc_label = mac_test_init_bpfdesc_label, 2463 .mpo_init_cred_label = mac_test_init_cred_label, 2464 .mpo_init_devfsdirent_label = mac_test_init_devfsdirent_label, 2465 .mpo_init_ifnet_label = mac_test_init_ifnet_label, 2466 .mpo_init_sysv_msgmsg_label = mac_test_init_sysv_msgmsg_label, 2467 .mpo_init_sysv_msgqueue_label = mac_test_init_sysv_msgqueue_label, 2468 .mpo_init_sysv_sem_label = mac_test_init_sysv_sem_label, 2469 .mpo_init_sysv_shm_label = mac_test_init_sysv_shm_label, 2470 .mpo_init_inpcb_label = mac_test_init_inpcb_label, 2471 .mpo_init_ipq_label = mac_test_init_ipq_label, 2472 .mpo_init_mbuf_label = mac_test_init_mbuf_label, 2473 .mpo_init_mount_label = mac_test_init_mount_label,
|
2493 .mpo_destroy_pipe_label = mac_test_destroy_pipe_label, 2494 .mpo_destroy_posix_sem_label = mac_test_destroy_posix_sem_label, 2495 .mpo_destroy_proc_label = mac_test_destroy_proc_label, 2496 .mpo_destroy_socket_label = mac_test_destroy_socket_label, 2497 .mpo_destroy_socket_peer_label = mac_test_destroy_socket_peer_label, 2498 .mpo_destroy_vnode_label = mac_test_destroy_vnode_label, 2499 .mpo_copy_cred_label = mac_test_copy_cred_label, 2500 .mpo_copy_ifnet_label = mac_test_copy_ifnet_label, 2501 .mpo_copy_mbuf_label = mac_test_copy_mbuf_label, 2502 .mpo_copy_pipe_label = mac_test_copy_pipe_label, 2503 .mpo_copy_socket_label = mac_test_copy_socket_label, 2504 .mpo_copy_vnode_label = mac_test_copy_vnode_label, 2505 .mpo_externalize_cred_label = mac_test_externalize_label, 2506 .mpo_externalize_ifnet_label = mac_test_externalize_label, 2507 .mpo_externalize_pipe_label = mac_test_externalize_label, 2508 .mpo_externalize_socket_label = mac_test_externalize_label, 2509 .mpo_externalize_socket_peer_label = mac_test_externalize_label, 2510 .mpo_externalize_vnode_label = mac_test_externalize_label, 2511 .mpo_internalize_cred_label = mac_test_internalize_label, 2512 .mpo_internalize_ifnet_label = mac_test_internalize_label, 2513 .mpo_internalize_pipe_label = mac_test_internalize_label, 2514 .mpo_internalize_socket_label = mac_test_internalize_label, 2515 .mpo_internalize_vnode_label = mac_test_internalize_label, 2516 .mpo_associate_vnode_devfs = mac_test_associate_vnode_devfs, 2517 .mpo_associate_vnode_extattr = mac_test_associate_vnode_extattr, 2518 .mpo_associate_vnode_singlelabel = mac_test_associate_vnode_singlelabel, 2519 .mpo_create_devfs_device = mac_test_create_devfs_device, 2520 .mpo_create_devfs_directory = mac_test_create_devfs_directory, 2521 .mpo_create_devfs_symlink = mac_test_create_devfs_symlink, 2522 .mpo_create_vnode_extattr = mac_test_create_vnode_extattr, 2523 .mpo_create_mount = mac_test_create_mount, 2524 .mpo_relabel_vnode = mac_test_relabel_vnode, 2525 .mpo_setlabel_vnode_extattr = mac_test_setlabel_vnode_extattr, 2526 .mpo_update_devfsdirent = mac_test_update_devfsdirent, 2527 .mpo_create_mbuf_from_socket = mac_test_create_mbuf_from_socket, 2528 .mpo_create_pipe = mac_test_create_pipe, 2529 .mpo_create_posix_sem = mac_test_create_posix_sem, 2530 .mpo_create_socket = mac_test_create_socket, 2531 .mpo_create_socket_from_socket = mac_test_create_socket_from_socket, 2532 .mpo_relabel_pipe = mac_test_relabel_pipe, 2533 .mpo_relabel_socket = mac_test_relabel_socket, 2534 .mpo_set_socket_peer_from_mbuf = mac_test_set_socket_peer_from_mbuf, 2535 .mpo_set_socket_peer_from_socket = mac_test_set_socket_peer_from_socket, 2536 .mpo_create_bpfdesc = mac_test_create_bpfdesc, 2537 .mpo_create_ifnet = mac_test_create_ifnet, 2538 .mpo_create_inpcb_from_socket = mac_test_create_inpcb_from_socket, 2539 .mpo_create_sysv_msgmsg = mac_test_create_sysv_msgmsg, 2540 .mpo_create_sysv_msgqueue = mac_test_create_sysv_msgqueue, 2541 .mpo_create_sysv_sem = mac_test_create_sysv_sem, 2542 .mpo_create_sysv_shm = mac_test_create_sysv_shm, 2543 .mpo_create_datagram_from_ipq = mac_test_create_datagram_from_ipq, 2544 .mpo_create_fragment = mac_test_create_fragment, 2545 .mpo_create_ipq = mac_test_create_ipq, 2546 .mpo_create_mbuf_from_inpcb = mac_test_create_mbuf_from_inpcb, 2547 .mpo_create_mbuf_linklayer = mac_test_create_mbuf_linklayer, 2548 .mpo_create_mbuf_from_bpfdesc = mac_test_create_mbuf_from_bpfdesc, 2549 .mpo_create_mbuf_from_ifnet = mac_test_create_mbuf_from_ifnet, 2550 .mpo_create_mbuf_multicast_encap = mac_test_create_mbuf_multicast_encap, 2551 .mpo_create_mbuf_netlayer = mac_test_create_mbuf_netlayer, 2552 .mpo_fragment_match = mac_test_fragment_match, 2553 .mpo_reflect_mbuf_icmp = mac_test_reflect_mbuf_icmp, 2554 .mpo_reflect_mbuf_tcp = mac_test_reflect_mbuf_tcp, 2555 .mpo_relabel_ifnet = mac_test_relabel_ifnet, 2556 .mpo_update_ipq = mac_test_update_ipq, 2557 .mpo_inpcb_sosetlabel = mac_test_inpcb_sosetlabel, 2558 .mpo_execve_transition = mac_test_execve_transition, 2559 .mpo_execve_will_transition = mac_test_execve_will_transition, 2560 .mpo_create_proc0 = mac_test_create_proc0, 2561 .mpo_create_proc1 = mac_test_create_proc1, 2562 .mpo_relabel_cred = mac_test_relabel_cred, 2563 .mpo_thread_userret = mac_test_thread_userret, 2564 .mpo_cleanup_sysv_msgmsg = mac_test_cleanup_sysv_msgmsg, 2565 .mpo_cleanup_sysv_msgqueue = mac_test_cleanup_sysv_msgqueue, 2566 .mpo_cleanup_sysv_sem = mac_test_cleanup_sysv_sem, 2567 .mpo_cleanup_sysv_shm = mac_test_cleanup_sysv_shm, 2568 .mpo_check_bpfdesc_receive = mac_test_check_bpfdesc_receive, 2569 .mpo_check_cred_relabel = mac_test_check_cred_relabel, 2570 .mpo_check_cred_visible = mac_test_check_cred_visible, 2571 .mpo_check_ifnet_relabel = mac_test_check_ifnet_relabel, 2572 .mpo_check_ifnet_transmit = mac_test_check_ifnet_transmit, 2573 .mpo_check_inpcb_deliver = mac_test_check_inpcb_deliver, 2574 .mpo_check_sysv_msgmsq = mac_test_check_sysv_msgmsq, 2575 .mpo_check_sysv_msgrcv = mac_test_check_sysv_msgrcv, 2576 .mpo_check_sysv_msgrmid = mac_test_check_sysv_msgrmid, 2577 .mpo_check_sysv_msqget = mac_test_check_sysv_msqget, 2578 .mpo_check_sysv_msqsnd = mac_test_check_sysv_msqsnd, 2579 .mpo_check_sysv_msqrcv = mac_test_check_sysv_msqrcv, 2580 .mpo_check_sysv_msqctl = mac_test_check_sysv_msqctl, 2581 .mpo_check_sysv_semctl = mac_test_check_sysv_semctl, 2582 .mpo_check_sysv_semget = mac_test_check_sysv_semget, 2583 .mpo_check_sysv_semop = mac_test_check_sysv_semop, 2584 .mpo_check_sysv_shmat = mac_test_check_sysv_shmat, 2585 .mpo_check_sysv_shmctl = mac_test_check_sysv_shmctl, 2586 .mpo_check_sysv_shmdt = mac_test_check_sysv_shmdt, 2587 .mpo_check_sysv_shmget = mac_test_check_sysv_shmget, 2588 .mpo_check_kenv_dump = mac_test_check_kenv_dump, 2589 .mpo_check_kenv_get = mac_test_check_kenv_get, 2590 .mpo_check_kenv_set = mac_test_check_kenv_set, 2591 .mpo_check_kenv_unset = mac_test_check_kenv_unset, 2592 .mpo_check_kld_load = mac_test_check_kld_load, 2593 .mpo_check_kld_stat = mac_test_check_kld_stat, 2594 .mpo_check_mount_stat = mac_test_check_mount_stat, 2595 .mpo_check_pipe_ioctl = mac_test_check_pipe_ioctl, 2596 .mpo_check_pipe_poll = mac_test_check_pipe_poll, 2597 .mpo_check_pipe_read = mac_test_check_pipe_read, 2598 .mpo_check_pipe_relabel = mac_test_check_pipe_relabel, 2599 .mpo_check_pipe_stat = mac_test_check_pipe_stat, 2600 .mpo_check_pipe_write = mac_test_check_pipe_write, 2601 .mpo_check_posix_sem_destroy = mac_test_check_posix_sem, 2602 .mpo_check_posix_sem_getvalue = mac_test_check_posix_sem, 2603 .mpo_check_posix_sem_open = mac_test_check_posix_sem, 2604 .mpo_check_posix_sem_post = mac_test_check_posix_sem, 2605 .mpo_check_posix_sem_unlink = mac_test_check_posix_sem, 2606 .mpo_check_posix_sem_wait = mac_test_check_posix_sem, 2607 .mpo_check_proc_debug = mac_test_check_proc_debug, 2608 .mpo_check_proc_sched = mac_test_check_proc_sched, 2609 .mpo_check_proc_setaudit = mac_test_check_proc_setaudit, 2610 .mpo_check_proc_setauid = mac_test_check_proc_setauid, 2611 .mpo_check_proc_setuid = mac_test_check_proc_setuid, 2612 .mpo_check_proc_seteuid = mac_test_check_proc_seteuid, 2613 .mpo_check_proc_setgid = mac_test_check_proc_setgid, 2614 .mpo_check_proc_setegid = mac_test_check_proc_setegid, 2615 .mpo_check_proc_setgroups = mac_test_check_proc_setgroups, 2616 .mpo_check_proc_setreuid = mac_test_check_proc_setreuid, 2617 .mpo_check_proc_setregid = mac_test_check_proc_setregid, 2618 .mpo_check_proc_setresuid = mac_test_check_proc_setresuid, 2619 .mpo_check_proc_setresgid = mac_test_check_proc_setresgid, 2620 .mpo_check_proc_signal = mac_test_check_proc_signal, 2621 .mpo_check_proc_wait = mac_test_check_proc_wait, 2622 .mpo_check_socket_accept = mac_test_check_socket_accept, 2623 .mpo_check_socket_bind = mac_test_check_socket_bind, 2624 .mpo_check_socket_connect = mac_test_check_socket_connect, 2625 .mpo_check_socket_deliver = mac_test_check_socket_deliver, 2626 .mpo_check_socket_listen = mac_test_check_socket_listen, 2627 .mpo_check_socket_poll = mac_test_check_socket_poll, 2628 .mpo_check_socket_receive = mac_test_check_socket_receive, 2629 .mpo_check_socket_relabel = mac_test_check_socket_relabel, 2630 .mpo_check_socket_send = mac_test_check_socket_send, 2631 .mpo_check_socket_stat = mac_test_check_socket_stat, 2632 .mpo_check_socket_visible = mac_test_check_socket_visible, 2633 .mpo_check_system_acct = mac_test_check_system_acct, 2634 .mpo_check_system_audit = mac_test_check_system_audit, 2635 .mpo_check_system_auditctl = mac_test_check_system_auditctl, 2636 .mpo_check_system_auditon = mac_test_check_system_auditon, 2637 .mpo_check_system_reboot = mac_test_check_system_reboot, 2638 .mpo_check_system_swapoff = mac_test_check_system_swapoff, 2639 .mpo_check_system_swapon = mac_test_check_system_swapon, 2640 .mpo_check_system_sysctl = mac_test_check_system_sysctl, 2641 .mpo_check_vnode_access = mac_test_check_vnode_access, 2642 .mpo_check_vnode_chdir = mac_test_check_vnode_chdir, 2643 .mpo_check_vnode_chroot = mac_test_check_vnode_chroot, 2644 .mpo_check_vnode_create = mac_test_check_vnode_create, 2645 .mpo_check_vnode_delete = mac_test_check_vnode_delete, 2646 .mpo_check_vnode_deleteacl = mac_test_check_vnode_deleteacl, 2647 .mpo_check_vnode_deleteextattr = mac_test_check_vnode_deleteextattr, 2648 .mpo_check_vnode_exec = mac_test_check_vnode_exec, 2649 .mpo_check_vnode_getacl = mac_test_check_vnode_getacl, 2650 .mpo_check_vnode_getextattr = mac_test_check_vnode_getextattr, 2651 .mpo_check_vnode_link = mac_test_check_vnode_link, 2652 .mpo_check_vnode_listextattr = mac_test_check_vnode_listextattr, 2653 .mpo_check_vnode_lookup = mac_test_check_vnode_lookup, 2654 .mpo_check_vnode_mmap = mac_test_check_vnode_mmap, 2655 .mpo_check_vnode_open = mac_test_check_vnode_open, 2656 .mpo_check_vnode_poll = mac_test_check_vnode_poll, 2657 .mpo_check_vnode_read = mac_test_check_vnode_read, 2658 .mpo_check_vnode_readdir = mac_test_check_vnode_readdir, 2659 .mpo_check_vnode_readlink = mac_test_check_vnode_readlink, 2660 .mpo_check_vnode_relabel = mac_test_check_vnode_relabel, 2661 .mpo_check_vnode_rename_from = mac_test_check_vnode_rename_from, 2662 .mpo_check_vnode_rename_to = mac_test_check_vnode_rename_to, 2663 .mpo_check_vnode_revoke = mac_test_check_vnode_revoke, 2664 .mpo_check_vnode_setacl = mac_test_check_vnode_setacl, 2665 .mpo_check_vnode_setextattr = mac_test_check_vnode_setextattr, 2666 .mpo_check_vnode_setflags = mac_test_check_vnode_setflags, 2667 .mpo_check_vnode_setmode = mac_test_check_vnode_setmode, 2668 .mpo_check_vnode_setowner = mac_test_check_vnode_setowner, 2669 .mpo_check_vnode_setutimes = mac_test_check_vnode_setutimes, 2670 .mpo_check_vnode_stat = mac_test_check_vnode_stat, 2671 .mpo_check_vnode_write = mac_test_check_vnode_write, 2672}; 2673 2674MAC_POLICY_SET(&mac_test_ops, mac_test, "TrustedBSD MAC/Test", 2675 MPC_LOADTIME_FLAG_UNLOADOK | MPC_LOADTIME_FLAG_LABELMBUFS, &test_slot);
|