387
388 }
389
390 /*ARGSUSED4*/
391 static int
392 devpts_setattr(struct vnode *vp, struct vattr *vap, int flags,
393 struct cred *cred, caller_context_t *ctp)
394 {
395 ASSERT((vp->v_type == VCHR) || (vp->v_type == VDIR));
396 return (devname_setattr_func(vp, vap, flags, cred,
397 devpts_set_id, AT_UID|AT_GID));
398 }
399
400
401 /*
402 * We override lookup and readdir to build entries based on the
403 * in kernel pty table. Also override setattr/setsecattr to
404 * avoid persisting permissions.
405 */
406 const fs_operation_def_t devpts_vnodeops_tbl[] = {
407 VOPNAME_READDIR, { .vop_readdir = devpts_readdir },
408 VOPNAME_LOOKUP, { .vop_lookup = devpts_lookup },
409 VOPNAME_CREATE, { .vop_create = devpts_create },
410 VOPNAME_SETATTR, { .vop_setattr = devpts_setattr },
411 VOPNAME_REMOVE, { .error = fs_nosys },
412 VOPNAME_MKDIR, { .error = fs_nosys },
413 VOPNAME_RMDIR, { .error = fs_nosys },
414 VOPNAME_SYMLINK, { .error = fs_nosys },
415 VOPNAME_SETSECATTR, { .error = fs_nosys },
416 NULL, NULL
417 };
|
387
388 }
389
390 /*ARGSUSED4*/
391 static int
392 devpts_setattr(struct vnode *vp, struct vattr *vap, int flags,
393 struct cred *cred, caller_context_t *ctp)
394 {
395 ASSERT((vp->v_type == VCHR) || (vp->v_type == VDIR));
396 return (devname_setattr_func(vp, vap, flags, cred,
397 devpts_set_id, AT_UID|AT_GID));
398 }
399
400
401 /*
402 * We override lookup and readdir to build entries based on the
403 * in kernel pty table. Also override setattr/setsecattr to
404 * avoid persisting permissions.
405 */
406 const fs_operation_def_t devpts_vnodeops_tbl[] = {
407 { VOPNAME_READDIR, { .vop_readdir = devpts_readdir } },
408 { VOPNAME_LOOKUP, { .vop_lookup = devpts_lookup } },
409 { VOPNAME_CREATE, { .vop_create = devpts_create } },
410 { VOPNAME_SETATTR, { .vop_setattr = devpts_setattr } },
411 { VOPNAME_REMOVE, { .error = fs_nosys } },
412 { VOPNAME_MKDIR, { .error = fs_nosys } },
413 { VOPNAME_RMDIR, { .error = fs_nosys } },
414 { VOPNAME_SYMLINK, { .error = fs_nosys } },
415 { VOPNAME_SETSECATTR, { .error = fs_nosys } },
416 { NULL, { NULL } }
417 };
|