diff options
author | dd <dd@FreeBSD.org> | 2002-07-17 01:46:48 +0000 |
---|---|---|
committer | dd <dd@FreeBSD.org> | 2002-07-17 01:46:48 +0000 |
commit | 9498a983a938cec96851b64642f0b62bba7d1827 (patch) | |
tree | 403633d67f5bcbe849c414892c2fea74d94f0b09 /sys/fs/devfs/devfs_vnops.c | |
parent | c57275f3471899132e94d39ef870d25599ec6f95 (diff) | |
download | FreeBSD-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.c | 20 |
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 }, |