Re: argument defs for vnode scope callbacks
Re: argument defs for vnode scope callbacks
- Subject: Re: argument defs for vnode scope callbacks
- From: Quinn <email@hidden>
- Date: Wed, 11 May 2005 14:06:01 +0100
At 14:55 +0200 11/5/05, Nicolas Berloquin wrote:
One more question, though : Is it possible to have more specific informations
about the auth request, like the real VNOP that was issued and which generated
the request ?
Not as far as I know.
vnode_if.h lists all kinds of VNOPs that seem to be more finegrained than the
bits passed to the callback. I logged the bitfield for each call,
and I wasn't able to see when a file gets created for example...
You should have seen a write authorization request for the parent directory.
However, I should stress that (apart from for the KATH_SCOPE_FILEOP),
Kauth is not a notification mechanism, it's an authorization
mechanism. Hence you get information about the action being
authorized, not the higher-level operation that caused it.
One last thing :
You say that "There are many other things you can use with VATTR_WANTED."
Is this completely undocumented, or did I miss a piece of doc ?
It's not documented, per se, but there's a list in the <sys/vnode.h>
header in the Kernel framework.
#define VNODE_ATTR_va_rdev (1LL<< 0) /* 00000001 */
#define VNODE_ATTR_va_nlink (1LL<< 1) /* 00000002 */
#define VNODE_ATTR_va_total_size (1LL<< 2) /* 00000004 */
#define VNODE_ATTR_va_total_alloc (1LL<< 3) /* 00000008 */
#define VNODE_ATTR_va_data_size (1LL<< 4) /* 00000010 */
#define VNODE_ATTR_va_data_alloc (1LL<< 5) /* 00000020 */
#define VNODE_ATTR_va_iosize (1LL<< 6) /* 00000040 */
#define VNODE_ATTR_va_uid (1LL<< 7) /* 00000080 */
#define VNODE_ATTR_va_gid (1LL<< 8) /* 00000100 */
#define VNODE_ATTR_va_mode (1LL<< 9) /* 00000200 */
#define VNODE_ATTR_va_flags (1LL<<10) /* 00000400 */
#define VNODE_ATTR_va_acl (1LL<<11) /* 00000800 */
#define VNODE_ATTR_va_create_time (1LL<<12) /* 00001000 */
#define VNODE_ATTR_va_access_time (1LL<<13) /* 00002000 */
#define VNODE_ATTR_va_modify_time (1LL<<14) /* 00004000 */
#define VNODE_ATTR_va_change_time (1LL<<15) /* 00008000 */
#define VNODE_ATTR_va_backup_time (1LL<<16) /* 00010000 */
#define VNODE_ATTR_va_fileid (1LL<<17) /* 00020000 */
#define VNODE_ATTR_va_linkid (1LL<<18) /* 00040000 */
#define VNODE_ATTR_va_parentid (1LL<<19) /* 00080000 */
#define VNODE_ATTR_va_fsid (1LL<<20) /* 00100000 */
#define VNODE_ATTR_va_filerev (1LL<<21) /* 00200000 */
#define VNODE_ATTR_va_gen (1LL<<22) /* 00400000 */
#define VNODE_ATTR_va_encoding (1LL<<23) /* 00800000 */
#define VNODE_ATTR_va_type (1LL<<24) /* 01000000 */
#define VNODE_ATTR_va_name (1LL<<25) /* 02000000 */
#define VNODE_ATTR_va_uuuid (1LL<<26) /* 04000000 */
#define VNODE_ATTR_va_guuid (1LL<<27) /* 08000000 */
#define VNODE_ATTR_va_nchildren (1LL<<28) /* 10000000 */
If you look at the VATTR_WANTED macro, you'll see that it ends up
referencing these constants by concatenating VNODE_ATTR_ and its
argument (eg va_nchildren).
S+E
--
Quinn "The Eskimo!" <http://www.apple.com/developer/>
Apple Developer Technical Support * Networking, Communications, Hardware
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-kernel mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden