static int soo_drain(struct fileproc *, vfs_context_t ctx);
const struct fileops socketops = {
- DTYPE_SOCKET,
- soo_read,
- soo_write,
- soo_ioctl,
- soo_select,
- soo_close,
- soo_kqfilter,
- soo_drain
+ .fo_type = DTYPE_SOCKET,
+ .fo_read = soo_read,
+ .fo_write = soo_write,
+ .fo_ioctl = soo_ioctl,
+ .fo_select = soo_select,
+ .fo_close = soo_close,
+ .fo_kqfilter = soo_kqfilter,
+ .fo_drain = soo_drain,
};
/* ARGSUSED */
int error = 0;
int int_arg;
+#if CONFIG_MACF_SOCKET_SUBSET
+ error = mac_socket_check_ioctl(kauth_cred_get(), so, cmd);
+ if (error)
+ return (error);
+#endif
+
socket_lock(so, 1);
/* call the socket filter's ioctl handler anything but ours */
/* warning avoidance ; protected by isstat64 */
struct stat64 *sb64 = (struct stat64 *)0;
-#if CONFIG_MACF_SOCKET
+#if CONFIG_MACF_SOCKET_SUBSET
ret = mac_socket_check_stat(kauth_cred_get(), so);
if (ret)
return (ret);