#define DELETE 1
#define RENAME 2
#define ISDOTDOT 1


#define VATTR_INIT(a)			do {(a)->va_supported = (a)->va_active = 0ll; (a)->va_vaflags = 0;} while(0)

#define VATTR_SET_ACTIVE(a, b)		((a)->va_active |= VNODE_ATTR_ ## b)

#define VATTR_WANTED(a, b)		VATTR_SET_ACTIVE(a, b)
#define VNODE_ATTR_va_name		1
#define VNODE_ATTR_va_fileid		1
#define VNODE_READDIR_EXTENDED 1
#define VNODE_READDIR_REQSEEKOFF 1

#define VNODE_ATTR_va_rdev 1
#define  VNODE_ATTR_va_nlink 2
#define  VNODE_ATTR_va_data_size 3
#define  VNODE_ATTR_va_mode 4
#define  VNODE_ATTR_va_create_time 5
#define  VNODE_ATTR_va_modify_time 6
#define  VNODE_ATTR_va_access_time 7
#define  VNODE_ATTR_va_backup_time 8
#define  VNODE_ATTR_va_parentid 9
#define  VNODE_ATTR_va_encoding 10
#define  VNODE_ATTR_va_nchildren 11
#define VNODE_ATTR_va_data_alloc 12

#define VNODE_READ	001
#define VNODE_WRITE	002


#define VATTR_RETURN(a, b, c)		do { (a)-> b = (c); VATTR_SET_SUPPORTED(a, b);} while(0)

#define VATTR_SET_SUPPORTED(a, b)	((a)->va_supported |= VNODE_ATTR_ ## b)



extern	int desiredvnodes;

enum {
VNFS_NOCACHE =1,
VNFS_CANTCACHE=2
};

enum {
VNCREATE_FLAVOR=1
};

struct  vnode_attr{
int va_fileid;
int va_supported;
int va_active;
int va_vaflags;
struct timespec va_create_time;
struct timespec va_modify_time;
struct timespec  va_access_time;
struct timespec  va_change_time;
struct timespec va_backup_time;
int va_rdev;
int va_nlink;
int va_data_size;
int va_mode;
int va_parentid;
int va_encoding;
int va_nchildren;
int va_data_alloc;
int va_name;
};

struct  componentname{
int cn_flags;
int * cn_nameptr;
int cn_namelen;
int cn_consume;
int cn_nameiop;
};

struct vnode_fsparam{
int vnfs_vtype;
int vnfs_str;
int vnfs_dvp;
int vnfs_fsnode;
int vnfs_vops;
int vnfs_markroot;
int vnfs_marksystem;
int vnfs_rdev;
int vnfs_filesize;


struct vnodeopv_entry_desc{
};

struct vnodeopv_desc{
};

struct vfsops {
};


