1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 #define VA_LOADED 0x0001
33 #define VA_PRELOADED 0x0002
34
35 struct ntvattr {
36 LIST_ENTRY(ntvattr) va_list;
37
38 u_int32_t va_vflag;
39 struct vnode *va_vp;
40 struct ntnode *va_ip;
41
42 u_int32_t va_flag;
43 u_int32_t va_type;
44 u_int8_t va_namelen;
45 char va_name[NTFS_MAXATTRNAME];
46
47 u_int32_t va_compression;
48 u_int32_t va_compressalg;
49 u_int32_t va_datalen;
50 u_int32_t va_allocated;
51 cn_t va_vcnstart;
52 cn_t va_vcnend;
53 u_int16_t va_index;
54 union {
55 struct {
56 cn_t * cn;
57 cn_t * cl;
58 u_long cnt;
59 } vrun;
60 caddr_t datap;
61 struct attr_name *name;
62 struct attr_indexroot *iroot;
63 struct attr_indexalloc *ialloc;
64 } va_d;
65 };
66 #define va_vruncn va_d.vrun.cn
67 #define va_vruncl va_d.vrun.cl
68 #define va_vruncnt va_d.vrun.cnt
69 #define va_datap va_d.datap
70 #define va_a_name va_d.name
71 #define va_a_iroot va_d.iroot
72 #define va_a_ialloc va_d.ialloc
73
74 #ifndef __OpenBSD__
75 int ntfs_procfixups( struct ntfsmount *, u_int32_t, caddr_t, size_t );
76 int ntfs_parserun( cn_t *, cn_t *, u_int8_t *, u_long, u_long *);
77 int ntfs_runtocn( cn_t *, struct ntfsmount *, u_int8_t *, u_long, cn_t);
78 int ntfs_readntvattr_plain( struct ntfsmount *, struct ntnode *, struct ntvattr *, off_t, size_t, void *,size_t *, struct uio *);
79 int ntfs_readattr_plain( struct ntfsmount *, struct ntnode *, u_int32_t, char *, off_t, size_t, void *,size_t *, struct uio *);
80 int ntfs_readattr( struct ntfsmount *, struct ntnode *, u_int32_t, char *, off_t, size_t, void *, struct uio *);
81 int ntfs_filesize( struct ntfsmount *, struct fnode *, u_int64_t *, u_int64_t *);
82 int ntfs_times( struct ntfsmount *, struct ntnode *, ntfs_times_t *);
83 struct timespec ntfs_nttimetounix( u_int64_t );
84 int ntfs_ntreaddir( struct ntfsmount *, struct fnode *, u_int32_t, struct attr_indexentry **);
85 int ntfs_runtovrun( cn_t **, cn_t **, u_long *, u_int8_t *);
86 int ntfs_attrtontvattr( struct ntfsmount *, struct ntvattr **, struct attr * );
87 void ntfs_freentvattr( struct ntvattr * );
88 int ntfs_loadntvattrs( struct ntfsmount *, struct vnode *, caddr_t, struct ntvattr **);
89 struct ntvattr * ntfs_findntvattr( struct ntfsmount *, struct ntnode *, u_int32_t, cn_t );
90 int ntfs_ntlookupfile(struct ntfsmount *, struct vnode *, struct componentname *, struct vnode **);
91 int ntfs_isnamepermitted(struct ntfsmount *, struct attr_indexentry * );
92 int ntfs_ntvattrrele(struct ntvattr * );
93 int ntfs_ntvattrget(struct ntfsmount *, struct ntnode *, u_int32_t, const char *, cn_t , struct ntvattr **);
94 int ntfs_ntlookup(struct ntfsmount *, ino_t, struct ntnode **);
95 int ntfs_ntget(struct ntnode *);
96 void ntfs_ntref(struct ntnode *);
97 void ntfs_ntrele(struct ntnode *);
98 void ntfs_ntput(struct ntnode *);
99 int ntfs_loadntnode( struct ntfsmount *, struct ntnode * );
100 int ntfs_writentvattr_plain(struct ntfsmount *, struct ntnode *, struct ntvattr *, off_t, size_t, void *, size_t *, struct uio *);
101 int ntfs_writeattr_plain(struct ntfsmount *, struct ntnode *, u_int32_t, char *, off_t, size_t, void *, size_t *, struct uio *);
102 void ntfs_toupper_init(void);
103 int ntfs_toupper_use(struct mount *, struct ntfsmount *);
104 void ntfs_toupper_unuse(void);
105 int ntfs_fget(struct ntfsmount *, struct ntnode *, int, char *, struct fnode **);
106 void ntfs_frele(struct fnode *);
107 #else
108 int ntfs_procfixups(struct ntfsmount *, u_int32_t, caddr_t, size_t);
109 int ntfs_parserun(cn_t *, cn_t *, u_int8_t *, u_long, u_long *);
110 int ntfs_runtocn(cn_t *, struct ntfsmount *, u_int8_t *, u_long, cn_t);
111 int ntfs_readntvattr_plain(struct ntfsmount *, struct ntnode *, struct ntvattr *, off_t, size_t, void *,size_t *, struct uio *);
112 int ntfs_readattr_plain(struct ntfsmount *, struct ntnode *, u_int32_t, char *, off_t, size_t, void *,size_t *, struct uio *);
113 int ntfs_readattr(struct ntfsmount *, struct ntnode *, u_int32_t, char *, off_t, size_t, void *, struct uio *);
114 int ntfs_filesize(struct ntfsmount *, struct fnode *, u_int64_t *, u_int64_t *);
115 int ntfs_times(struct ntfsmount *, struct ntnode *, ntfs_times_t *);
116 struct timespec ntfs_nttimetounix(u_int64_t);
117 int ntfs_ntreaddir(struct ntfsmount *, struct fnode *, u_int32_t, struct attr_indexentry **, struct proc *);
118 int ntfs_runtovrun(cn_t **, cn_t **, u_long *, u_int8_t *);
119 int ntfs_attrtontvattr(struct ntfsmount *, struct ntvattr **, struct attr *);
120 void ntfs_freentvattr(struct ntvattr *);
121 int ntfs_loadntvattrs(struct ntfsmount *, struct vnode *, caddr_t, struct ntvattr **);
122 struct ntvattr * ntfs_findntvattr(struct ntfsmount *, struct ntnode *, u_int32_t, cn_t);
123 int ntfs_ntlookupfile(struct ntfsmount *, struct vnode *, struct componentname *, struct vnode **, struct proc *);
124 int ntfs_isnamepermitted(struct ntfsmount *, struct attr_indexentry *);
125 int ntfs_ntvattrrele(struct ntvattr * );
126 int ntfs_ntvattrget(struct ntfsmount *, struct ntnode *, u_int32_t, const char *, cn_t , struct ntvattr **);
127 int ntfs_ntlookup(struct ntfsmount *, ino_t, struct ntnode **, struct proc *);
128 int ntfs_ntget(struct ntnode *, struct proc *);
129 void ntfs_ntref(struct ntnode *);
130 void ntfs_ntrele(struct ntnode *);
131 void ntfs_ntput(struct ntnode *, struct proc *);
132 int ntfs_loadntnode( struct ntfsmount *, struct ntnode *);
133 int ntfs_writentvattr_plain(struct ntfsmount *, struct ntnode *, struct ntvattr *, off_t, size_t, void *, size_t *, struct uio *);
134 int ntfs_writeattr_plain(struct ntfsmount *, struct ntnode *, u_int32_t, char *, off_t, size_t, void *, size_t *, struct uio *);
135 void ntfs_toupper_init(void);
136 int ntfs_toupper_use(struct mount *, struct ntfsmount *, struct proc *);
137 void ntfs_toupper_unuse(struct proc *);
138 int ntfs_fget(struct ntfsmount *, struct ntnode *, int, char *, struct fnode **);
139 void ntfs_frele(struct fnode *);
140 #endif
141
142
143 ntfs_wget_func_t ntfs_utf8_wget;
144 ntfs_wput_func_t ntfs_utf8_wput;
145 ntfs_wcmp_func_t ntfs_utf8_wcmp;