1 #ifndef AFS_SRC_LIBAFSCP_AFSCP_H
2 #define AFS_SRC_LIBAFSCP_AFSCP_H
6 #include <afs/afsint.h>
7 #include <afs/afs_consts.h>
8 #include <afs/cellconfig.h>
10 #include <afs/afsutil.h>
13 /* not included elsewhere for Windows */
22 afs_uint32 addrs
[AFS_MAXHOSTS
];
23 struct rx_connection
*conns
[AFS_MAXHOSTS
];
28 char name
[MAXCELLCHARS
+ 1];
29 struct rx_securityClass
*security
;
31 struct ubik_client
*vlservers
;
34 struct afscp_server
**fsservers
;
41 struct afscp_cell
*cell
;
45 int servers
[AFS_MAXHOSTS
];
46 char name
[AFSNAMEMAX
];
51 struct afscp_venusfid
{
52 struct afscp_cell
*cell
;
59 char name
[16 + 32 * (EPP
- 2)];
62 struct afscp_dirstream
{
63 struct afscp_venusfid fid
;
69 struct afscp_dirent ret
;
72 struct afscp_dircache
{
73 struct afscp_venusfid me
;
82 struct afscp_statent
{
83 struct afscp_venusfid me
;
84 struct AFSFetchStatus status
;
91 struct afscp_openfile
{
92 struct afscp_venusfid fid
;
96 struct afscp_callback
{
98 const struct afscp_server
*server
;
100 struct AFSCallBack cb
;
104 extern int afscp_errno
;
105 int afscp_Init(const char *);
106 void afscp_Finalize(void);
108 int afscp_Insecure(void);
109 int afscp_AnonymousAuth(int);
111 void afscp_SetConfDir(char *confDir
);
113 struct afscp_cell
*afscp_DefaultCell(void);
114 struct afscp_cell
*afscp_CellByName(const char *, const char *);
115 int afscp_SetDefaultRealm(const char *);
116 int afscp_SetDefaultCell(const char *);
117 struct afscp_cell
*afscp_CellById(int);
118 int afscp_CellId(struct afscp_cell
*);
119 void afscp_FreeAllCells(void);
120 void afscp_FreeAllServers(void);
122 struct afscp_server
*afscp_ServerById(struct afscp_cell
*, afsUUID
*);
123 struct afscp_server
*afscp_ServerByAddr(struct afscp_cell
*, afs_uint32
);
124 struct afscp_server
*afscp_AnyServerByAddr(afs_uint32
);
125 struct afscp_server
*afscp_ServerByIndex(int);
126 struct rx_connection
*afscp_ServerConnection(const struct afscp_server
*,
129 int afscp_CheckCallBack(const struct afscp_venusfid
*fid
,
130 const struct afscp_server
*server
,
131 afs_uint32
*expiretime
);
132 int afscp_FindCallBack(const struct afscp_venusfid
*f
,
133 const struct afscp_server
*server
,
134 struct afscp_callback
**ret
);
135 int afscp_AddCallBack(const struct afscp_server
*,
136 const struct AFSFid
*,
137 const struct AFSFetchStatus
*,
138 const struct AFSCallBack
*, const time_t);
139 int afscp_RemoveCallBack(const struct afscp_server
*,
140 const struct afscp_venusfid
*);
141 int afscp_ReturnCallBacks(const struct afscp_server
*);
142 int afscp_ReturnAllCallBacks(void);
143 int afscp_WaitForCallback(const struct afscp_venusfid
*fid
, int seconds
);
146 /* frees with free() */
147 struct afscp_venusfid
*afscp_MakeFid(struct afscp_cell
*, afs_uint32
,
148 afs_uint32
, afs_uint32
);
149 struct afscp_venusfid
*afscp_DupFid(const struct afscp_venusfid
*);
150 void afscp_FreeFid(struct afscp_venusfid
*);
153 int afscp_Stat(const struct afscp_venusfid
*, struct stat
*);
155 ssize_t
afscp_PRead(const struct afscp_venusfid
*, void *, size_t, off_t
);
156 ssize_t
afscp_PWrite(const struct afscp_venusfid
*, const void *,
159 * for future implementation: (?)
160 * struct afscp_openfile *afscp_FidOpen(const struct afscp_venusfid *);
161 * off_t afscp_FSeek(struct afscp_openfile *, off_t, int);
162 * ssize_t afscp_FRead(const struct afscp_openfile *, void *, size_t);
166 int afscp_GetStatus(const struct afscp_venusfid
*, struct AFSFetchStatus
*);
167 int afscp_StoreStatus(const struct afscp_venusfid
*, struct AFSStoreStatus
*);
168 int afscp_CreateFile(const struct afscp_venusfid
*, char *,
169 struct AFSStoreStatus
*, struct afscp_venusfid
**);
170 int afscp_Lock(const struct afscp_venusfid
*, int locktype
);
171 int afscp_MakeDir(const struct afscp_venusfid
*, char *,
172 struct AFSStoreStatus
*, struct afscp_venusfid
**);
173 int afscp_Symlink(const struct afscp_venusfid
*, char *,
174 char *, struct AFSStoreStatus
*);
175 int afscp_RemoveFile(const struct afscp_venusfid
*, char *);
176 int afscp_RemoveDir(const struct afscp_venusfid
*, char *);
177 int afscp_FetchACL(const struct afscp_venusfid
*, struct AFSOpaque
*);
178 int afscp_StoreACL(const struct afscp_venusfid
*, struct AFSOpaque
*);
180 /* directory parsing stuff*/
181 struct afscp_dirstream
*afscp_OpenDir(const struct afscp_venusfid
*);
182 struct afscp_dirent
*afscp_ReadDir(struct afscp_dirstream
*);
183 int afscp_RewindDir(struct afscp_dirstream
*);
184 int afscp_CloseDir(struct afscp_dirstream
*);
185 struct afscp_venusfid
*afscp_DirLookup(struct afscp_dirstream
*,
187 struct afscp_venusfid
*afscp_ResolveName(const struct afscp_venusfid
*,
189 struct afscp_venusfid
*afscp_ResolvePath(const char *);
190 struct afscp_venusfid
*afscp_ResolvePathFromVol(const struct afscp_volume
*,
194 struct afscp_volume
*afscp_VolumeByName(struct afscp_cell
*,
195 const char *, afs_int32
);
196 struct afscp_volume
*afscp_VolumeById(struct afscp_cell
*, afs_uint32
);
198 #define DIRMODE_CELL 0
199 #define DIRMODE_DYNROOT 1
200 int afscp_SetDirMode(int);
202 #endif /* AFS_SRC_LIBAFSCP_AFSCP_H */