summaryrefslogtreecommitdiffstats
path: root/sys/fs/devfs/devfs_vnops.c
diff options
context:
space:
mode:
authordd <dd@FreeBSD.org>2002-07-17 01:46:48 +0000
committerdd <dd@FreeBSD.org>2002-07-17 01:46:48 +0000
commit9498a983a938cec96851b64642f0b62bba7d1827 (patch)
tree403633d67f5bcbe849c414892c2fea74d94f0b09 /sys/fs/devfs/devfs_vnops.c
parentc57275f3471899132e94d39ef870d25599ec6f95 (diff)
downloadFreeBSD-src-9498a983a938cec96851b64642f0b62bba7d1827.zip
FreeBSD-src-9498a983a938cec96851b64642f0b62bba7d1827.tar.gz
Introduce the DEVFS "rule" subsystem. DEVFS rules permit the
administrator to define certain properties of new devfs nodes before they become visible to the userland. Both static (e.g., /dev/speaker) and dynamic (e.g., /dev/bpf*, some removable devices) nodes are supported. Each DEVFS mount may have a different ruleset assigned to it, permitting different policies to be implemented for things like jails. Approved by: phk
Diffstat (limited to 'sys/fs/devfs/devfs_vnops.c')
-rw-r--r--sys/fs/devfs/devfs_vnops.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/sys/fs/devfs/devfs_vnops.c b/sys/fs/devfs/devfs_vnops.c
index 8779c96..069d224 100644
--- a/sys/fs/devfs/devfs_vnops.c
+++ b/sys/fs/devfs/devfs_vnops.c
@@ -62,6 +62,7 @@
static int devfs_access(struct vop_access_args *ap);
static int devfs_getattr(struct vop_getattr_args *ap);
+static int devfs_ioctl(struct vop_ioctl_args *ap);
static int devfs_lookupx(struct vop_lookup_args *ap);
static int devfs_mknod(struct vop_mknod_args *ap);
static int devfs_pathconf(struct vop_pathconf_args *ap);
@@ -247,6 +248,24 @@ devfs_getattr(ap)
}
static int
+devfs_ioctl(ap)
+ struct vop_ioctl_args /* {
+ struct vnode *a_vp;
+ int a_command;
+ caddr_t a_data;
+ int a_fflag;
+ struct ucred *a_cred;
+ struct thread *a_td;
+ } */ *ap;
+{
+ int error;
+
+ error = devfs_rules_ioctl(ap->a_vp->v_mount, ap->a_command, ap->a_data,
+ ap->a_td);
+ return (error);
+}
+
+static int
devfs_lookupx(ap)
struct vop_lookup_args /* {
struct vnode * a_dvp;
@@ -808,6 +827,7 @@ static struct vnodeopv_entry_desc devfs_vnodeop_entries[] = {
{ &vop_default_desc, (vop_t *) vop_defaultop },
{ &vop_access_desc, (vop_t *) devfs_access },
{ &vop_getattr_desc, (vop_t *) devfs_getattr },
+ { &vop_ioctl_desc, (vop_t *) devfs_ioctl },
{ &vop_islocked_desc, (vop_t *) vop_stdislocked },
{ &vop_lock_desc, (vop_t *) vop_stdlock },
{ &vop_lookup_desc, (vop_t *) devfs_lookup },
OpenPOWER on IntegriCloud