OpenAFS
OpenAFS distributed network file system
|
00001 /* 00002 * ubik.h: 00003 * This file is automatically generated; please do not edit it. 00004 */ 00005 /* Including ./ubik.p.h at beginning of ubik.h file. */ 00006 00007 /* 00008 * Copyright 2000, International Business Machines Corporation and others. 00009 * All Rights Reserved. 00010 * 00011 * This software has been released under the terms of the IBM Public 00012 * License. For details, see the LICENSE file in the top-level source 00013 * directory or online at http://www.openafs.org/dl/license10.html 00014 */ 00015 00016 #ifndef UBIK_H 00017 #define UBIK_H 00018 00019 #include <stdarg.h> 00020 00021 #include <ubik_int.h> 00022 00024 #define UBIK_READTRANS 0 00025 #define UBIK_WRITETRANS 1 00026 /*\}*/ 00027 00029 #define LOCKREAD 1 00030 #define LOCKWRITE 2 00031 #define LOCKWAIT 3 00032 /*\}*/ 00033 00035 #define UPUBIKONLY 1 00036 #define UBIK_CALL_NEW 2 00037 /*\}*/ 00038 00040 #define VOTE_SERVICE_ID 50 00041 #define DISK_SERVICE_ID 51 00042 #define USER_SERVICE_ID 52 00043 /*\}*/ 00044 00045 #define UBIK_MAGIC 0x354545 00046 00048 #define MAXSERVERS 20 00049 /*\}*/ 00050 00052 #define vcmp(a,b) ((a).epoch == (b).epoch? ((a).counter - (b).counter) : ((a).epoch - (b).epoch)) 00053 00055 #define CFLastFailed 1 00056 /*\}*/ 00057 00058 #ifdef AFS_PTHREAD_ENV 00059 #include <pthread.h> 00060 #else 00061 #include <lwp.h> 00062 #endif 00063 00067 struct ubik_client { 00068 short initializationState; 00069 short states[MAXSERVERS]; 00070 struct rx_connection *conns[MAXSERVERS]; 00071 afs_int32 syncSite; 00072 #ifdef AFS_PTHREAD_ENV 00073 pthread_mutex_t cm; 00074 #endif 00075 }; 00076 00077 #ifdef AFS_PTHREAD_ENV 00078 #define LOCK_UBIK_CLIENT(client) MUTEX_ENTER(&client->cm) 00079 #define UNLOCK_UBIK_CLIENT(client) MUTEX_EXIT(&client->cm) 00080 #else 00081 #define LOCK_UBIK_CLIENT(client) 00082 #define UNLOCK_UBIK_CLIENT(client) 00083 #endif 00084 00085 #define ubik_GetRPCConn(astr,aindex) ((aindex) >= MAXSERVERS? 0 : (astr)->conns[aindex]) 00086 #define ubik_GetRPCHost(astr,aindex) ((aindex) >= MAXSERVERS? 0 : (astr)->hosts[aindex]) 00087 00091 struct ubik_hdr { 00092 afs_int32 magic; 00093 short pad1; 00094 short size; 00095 struct ubik_version version; 00096 }; 00097 00101 struct ubik_trans { 00102 struct ubik_dbase *dbase; 00103 struct ubik_trans *next; 00104 afs_int32 locktype; 00105 struct ubik_trunc *activeTruncs; 00106 struct ubik_tid tid; 00107 afs_int32 minCommitTime; 00108 afs_int32 seekFile; 00109 afs_int32 seekPos; 00110 short flags; 00111 char type; 00112 iovec_wrt iovec_info; 00113 iovec_buf iovec_data; 00114 }; 00115 00119 struct ubik_trunc { 00120 struct ubik_trunc *next; 00121 afs_int32 file; 00122 afs_int32 length; 00123 }; 00124 00125 struct ubik_stat { 00126 afs_int32 size; 00127 afs_int32 mtime; 00128 }; 00129 00130 #if defined(UKERNEL) 00131 #include "afs/lock.h" 00132 #else /* defined(UKERNEL) */ 00133 #include <lock.h> /* just to make sure we've got this */ 00134 #endif /* defined(UKERNEL) */ 00135 00142 struct ubik_dbase { 00143 char *pathName; 00144 struct ubik_trans *activeTrans; 00145 struct ubik_version version; 00146 #ifdef AFS_PTHREAD_ENV 00147 pthread_mutex_t versionLock; 00148 #elif defined(UKERNEL) 00149 struct afs_lock versionLock; 00150 #else /* defined(UKERNEL) */ 00151 struct Lock versionLock; 00152 #endif /* defined(UKERNEL) */ 00153 afs_int32 tidCounter; 00154 afs_int32 writeTidCounter; 00155 afs_int32 flags; 00156 /* physio procedures */ 00157 int (*read) (struct ubik_dbase * adbase, afs_int32 afile, void *abuffer, 00158 afs_int32 apos, afs_int32 alength); 00159 int (*write) (struct ubik_dbase * adbase, afs_int32 afile, void *abuffer, 00160 afs_int32 apos, afs_int32 alength); 00161 int (*truncate) (struct ubik_dbase * adbase, afs_int32 afile, 00162 afs_int32 asize); 00163 int (*sync) (struct ubik_dbase * adbase, afs_int32 afile); 00164 int (*stat) (struct ubik_dbase * adbase, afs_int32 afid, 00165 struct ubik_stat * astat); 00166 void (*open) (struct ubik_dbase * adbase, afs_int32 afid); 00167 int (*setlabel) (struct ubik_dbase * adbase, afs_int32 afile, struct ubik_version * aversion); 00168 int (*getlabel) (struct ubik_dbase * adbase, afs_int32 afile, struct ubik_version * aversion); 00169 int (*getnfiles) (struct ubik_dbase * adbase); 00170 short readers; 00171 struct ubik_version cachedVersion; 00172 #ifdef UKERNEL 00173 struct afs_lock cache_lock; 00174 #else 00175 struct Lock cache_lock; 00176 #endif 00177 #ifdef AFS_PTHREAD_ENV 00178 pthread_cond_t version_cond; 00179 pthread_cond_t flags_cond; 00180 #endif 00181 }; 00182 00192 typedef int (*ubik_updatecache_func) (struct ubik_trans *atrans, void *rock); 00193 00195 extern int (*ubik_CRXSecurityProc) (void *, struct rx_securityClass **, 00196 afs_int32 *); 00197 extern void *ubik_CRXSecurityRock; 00198 extern int (*ubik_SRXSecurityProc) (void *, struct rx_securityClass **, 00199 afs_int32 *); 00200 extern void *ubik_SRXSecurityRock; 00201 extern int (*ubik_CheckRXSecurityProc) (void *, struct rx_call *); 00202 extern void *ubik_CheckRXSecurityRock; 00203 00204 extern void ubik_SetClientSecurityProcs(int (*scproc)(void *, 00205 struct rx_securityClass **, 00206 afs_int32 *), 00207 int (*checkproc) (void *), 00208 void *rock); 00209 extern void ubik_SetServerSecurityProcs 00210 (void (*buildproc) (void *, 00211 struct rx_securityClass ***, 00212 afs_int32 *), 00213 int (*checkproc) (void *, struct rx_call *), 00214 void *rock); 00215 00216 /*\}*/ 00217 00218 /* 00219 * For applications that make use of ubik_BeginTransReadAnyWrite, writing 00220 * processes must not update the application-level cache as they write, 00221 * or else readers can read the new cache before the data is committed to 00222 * the db. So, when a commit occurs, the cache must be updated right then. 00223 * If set, this function will be called during commits of write transactions, 00224 * to update the application-level cache after a write. This will be called 00225 * immediately after the local disk commit succeeds, and it will be called 00226 * with a lock held that prevents other threads from reading from the cache 00227 * or the db in general. 00228 * 00229 * Note that this function MUST be set in order to make use of 00230 * ubik_BeginTransReadAnyWrite. 00231 */ 00232 extern int (*ubik_SyncWriterCacheProc) (void); 00233 00234 /****************INTERNALS BELOW ****************/ 00235 00236 #ifdef UBIK_INTERNALS 00237 00238 #define UBIK_PAGESIZE 1024 00239 #define UBIK_LOGPAGESIZE 10 00240 #define NBUFFERS 20 00241 #define HDRSIZE 64 00242 /*\}*/ 00243 00245 #define DBWRITING 1 00246 /*\}*/ 00247 00249 #define TRDONE 1 00250 #define TRABORT 2 00251 #define TRREADANY 4 00252 #define TRCACHELOCKED 32 00255 #define TRREADWRITE 64 00257 /*\}*/ 00258 00260 #define LWANT 1 00261 /*\}*/ 00262 00264 #define LOGFILE (-1) 00265 /*\}*/ 00266 00268 #define LOGNEW 100 00269 #define LOGEND 101 00270 #define LOGABORT 102 00271 #define LOGDATA 103 00272 #define LOGTRUNCATE 104 00273 /*\}*/ 00274 00285 #define MAXSKEW 10 00286 #define POLLTIME 15 00287 #define RPCTIMEOUT 20 00288 #define BIGTIME 75 00289 #define SMALLTIME 60 00290 /*\}*/ 00291 00295 struct ubik_server { 00296 struct ubik_server *next; 00297 afs_uint32 addr[UBIK_MAX_INTERFACE_ADDR]; 00298 afs_int32 lastVoteTime; 00299 afs_int32 lastBeaconSent; 00300 struct ubik_version version; 00301 struct rx_connection *vote_rxcid; 00302 struct rx_connection *disk_rxcid; 00303 char lastVote; 00304 char up; 00305 char beaconSinceDown; 00306 char currentDB; 00307 char magic; 00308 char isClone; 00309 }; 00310 00312 #ifdef AFS_PTHREAD_ENV 00313 # define DBHOLD(a) MUTEX_ENTER(&((a)->versionLock)) 00314 # define DBRELE(a) MUTEX_EXIT(&((a)->versionLock)) 00315 #else /* !AFS_PTHREAD_ENV */ 00316 # define DBHOLD(a) ObtainWriteLock(&((a)->versionLock)) 00317 # define DBRELE(a) ReleaseWriteLock(&((a)->versionLock)) 00318 #endif /* !AFS_PTHREAD_ENV */ 00319 /*\}*/ 00320 00321 /* globals */ 00322 00324 extern struct ubik_server *ubik_servers; 00325 extern char amIClone; 00326 /*\}*/ 00327 00329 extern short ubik_callPortal; 00330 /*\}*/ 00331 00333 #define UBIK_RECSYNCSITE 1 /* am sync site */ 00334 #define UBIK_RECFOUNDDB 2 /* found acceptable dbase from quorum */ 00335 #define UBIK_RECHAVEDB 4 /* fetched best dbase */ 00336 #define UBIK_RECLABELDB 8 /* relabelled dbase */ 00337 #define UBIK_RECSENTDB 0x10 /* sent best db to *everyone* */ 00338 #define UBIK_RECSBETTER UBIK_RECLABELDB /* last state */ 00339 /*\}*/ 00340 00341 extern afs_int32 ubik_quorum; /* min hosts in quorum */ 00342 extern struct ubik_dbase *ubik_dbase; /* the database handled by this server */ 00343 extern afs_uint32 ubik_host[UBIK_MAX_INTERFACE_ADDR]; /* this host addr, in net order */ 00344 extern int ubik_amSyncSite; /* sleep on this waiting to be sync site */ 00345 extern struct ubik_stats { /* random stats */ 00346 afs_int32 escapes; 00347 } ubik_stats; 00348 extern afs_int32 urecovery_state; /* sync site recovery process state */ 00349 extern struct ubik_trans *ubik_currentTrans; /* current trans */ 00350 extern afs_int32 ubik_debugFlag; /* ubik debug flag */ 00351 extern int ubikPrimaryAddrOnly; /* use only primary address */ 00352 00353 /* 00354 * Lock ordering 00355 * 00356 * Any of the locks may be acquired singly; when acquiring multiple locks, they 00357 * should be acquired in the listed order: 00358 * application cache lock (dbase->cache_lock) 00359 * database lock DBHOLD/DBRELE 00360 * beacon lock UBIK_BEACON_LOCK/UNLOCK 00361 * vote lock UBIK_VOTE_LOCK/UNLOCK 00362 * version lock UBIK_VERSION_LOCK/UNLOCK 00363 * server address lock UBIK_ADDR_LOCK/UNLOCK 00364 */ 00365 00375 struct beacon_data { 00376 #ifdef AFS_PTHREAD_ENV 00377 pthread_mutex_t beacon_lock; 00378 #endif 00379 int ubik_amSyncSite; 00380 afs_int32 syncSiteUntil; 00381 }; 00382 00383 #define UBIK_BEACON_LOCK MUTEX_ENTER(&beacon_globals.beacon_lock) 00384 #define UBIK_BEACON_UNLOCK MUTEX_EXIT(&beacon_globals.beacon_lock) 00385 00389 struct vote_data { 00390 #ifdef AFS_PTHREAD_ENV 00391 pthread_mutex_t vote_lock; 00392 #endif 00393 struct ubik_version ubik_dbVersion; /* sync site's dbase version */ 00394 struct ubik_tid ubik_dbTid; /* sync site's tid, or 0 if none */ 00395 /* Used by all sites in nominating new sync sites */ 00396 afs_int32 ubik_lastYesTime; /* time we sent the last yes vote */ 00397 afs_uint32 lastYesHost; /* host to which we sent yes vote */ 00398 /* Next is time sync site began this vote: guarantees sync site until this + SMALLTIME */ 00399 afs_int32 lastYesClaim; 00400 int lastYesState; /* did last site we voted for claim to be sync site? */ 00401 /* Used to guarantee that nomination process doesn't loop */ 00402 afs_int32 lowestTime; 00403 afs_uint32 lowestHost; 00404 afs_int32 syncTime; 00405 afs_int32 syncHost; 00406 }; 00407 00408 #define UBIK_VOTE_LOCK MUTEX_ENTER(&vote_globals.vote_lock) 00409 #define UBIK_VOTE_UNLOCK MUTEX_EXIT(&vote_globals.vote_lock) 00410 00418 struct addr_data { 00419 #ifdef AFS_PTHREAD_ENV 00420 pthread_mutex_t addr_lock; 00421 #endif 00422 afs_int32 ubikSecIndex; 00423 struct rx_securityClass *ubikSecClass; 00424 }; 00425 00426 #define UBIK_ADDR_LOCK MUTEX_ENTER(&addr_globals.addr_lock) 00427 #define UBIK_ADDR_UNLOCK MUTEX_EXIT(&addr_globals.addr_lock) 00428 00433 struct version_data { 00434 #ifdef AFS_PTHREAD_ENV 00435 pthread_mutex_t version_lock; 00436 #endif 00437 afs_int32 ubik_epochTime; /* time when this site started */ 00438 }; 00439 00440 #define UBIK_VERSION_LOCK MUTEX_ENTER(&version_globals.version_lock) 00441 #define UBIK_VERSION_UNLOCK MUTEX_EXIT(&version_globals.version_lock) 00442 00443 /* phys.c */ 00444 extern int uphys_stat(struct ubik_dbase *adbase, afs_int32 afid, 00445 struct ubik_stat *astat); 00446 extern int uphys_read(struct ubik_dbase *adbase, afs_int32 afile, 00447 void *abuffer, afs_int32 apos, 00448 afs_int32 alength); 00449 extern int uphys_write(struct ubik_dbase *adbase, afs_int32 afile, 00450 void *abuffer, afs_int32 apos, 00451 afs_int32 alength); 00452 extern int uphys_truncate(struct ubik_dbase *adbase, afs_int32 afile, 00453 afs_int32 asize); 00454 extern int uphys_getnfiles(struct ubik_dbase *adbase); 00455 extern int uphys_getlabel(struct ubik_dbase *adbase, afs_int32 afile, 00456 struct ubik_version *aversion); 00457 extern int uphys_setlabel(struct ubik_dbase *adbase, afs_int32 afile, 00458 struct ubik_version *aversion); 00459 extern int uphys_sync(struct ubik_dbase *adbase, afs_int32 afile); 00460 extern void uphys_invalidate(struct ubik_dbase *adbase, 00461 afs_int32 afid); 00462 00464 extern int urecovery_ResetState(void); 00465 extern int urecovery_LostServer(struct ubik_server *server); 00466 extern int urecovery_AllBetter(struct ubik_dbase *adbase, 00467 int areadAny); 00468 extern int urecovery_AbortAll(struct ubik_dbase *adbase); 00469 extern int urecovery_CheckTid(struct ubik_tid *atid, int abortalways); 00470 extern int urecovery_Initialize(struct ubik_dbase *adbase); 00471 extern void *urecovery_Interact(void *); 00472 extern int DoProbe(struct ubik_server *server); 00473 /*\}*/ 00474 00476 extern afs_int32 ContactQuorum_NoArguments(afs_int32 (*proc) 00477 (struct rx_connection *, 00478 ubik_tid *), 00479 struct ubik_trans *atrans, 00480 int aflags); 00481 00482 extern afs_int32 ContactQuorum_DISK_Lock(struct ubik_trans *atrans, 00483 int aflags, 00484 afs_int32 file, afs_int32 position, 00485 afs_int32 length, afs_int32 type); 00486 00487 extern afs_int32 ContactQuorum_DISK_Write(struct ubik_trans *atrans, 00488 int aflags, 00489 afs_int32 file, afs_int32 position, 00490 bulkdata *data); 00491 00492 extern afs_int32 ContactQuorum_DISK_Truncate(struct ubik_trans *atrans, 00493 int aflags, 00494 afs_int32 file, afs_int32 length); 00495 00496 extern afs_int32 ContactQuorum_DISK_WriteV(struct ubik_trans *atrans, 00497 int aflags, 00498 iovec_wrt * io_vector, 00499 iovec_buf *io_buffer); 00500 00501 extern afs_int32 ContactQuorum_DISK_SetVersion(struct ubik_trans *atrans, 00502 int aflags, 00503 ubik_version *OldVersion, 00504 ubik_version *NewVersion); 00505 00506 extern void panic(char *format, ...) 00507 AFS_ATTRIBUTE_FORMAT(__printf__, 1, 2); 00508 00509 extern afs_uint32 ubikGetPrimaryInterfaceAddr(afs_uint32 addr); 00510 00511 extern int ubik_CheckAuth(struct rx_call *); 00512 00513 /*\}*/ 00514 00516 struct afsconf_cell; 00517 extern void ubeacon_InitSecurityClass(void); 00518 extern void ubeacon_ReinitServer(struct ubik_server *ts); 00519 extern void ubeacon_Debug(struct ubik_debug *aparm); 00520 extern int ubeacon_AmSyncSite(void); 00521 extern int ubeacon_InitServerListByInfo(afs_uint32 ame, 00522 struct afsconf_cell *info, 00523 char clones[]); 00524 extern int ubeacon_InitServerList(afs_uint32 ame, afs_uint32 aservers[]); 00525 extern void *ubeacon_Interact(void *); 00526 extern int ubeacon_updateUbikNetworkAddress(afs_uint32 ubik_host[]); 00527 extern struct beacon_data beacon_globals; 00528 extern struct addr_data addr_globals; 00529 00530 /*\}*/ 00531 00533 extern int udisk_Init(int nBUffers); 00534 extern void udisk_Debug(struct ubik_debug *aparm); 00535 extern int udisk_Invalidate(struct ubik_dbase *adbase, afs_int32 afid); 00536 extern int udisk_read(struct ubik_trans *atrans, afs_int32 afile, 00537 void *abuffer, afs_int32 apos, afs_int32 alen); 00538 extern int udisk_truncate(struct ubik_trans *atrans, afs_int32 afile, 00539 afs_int32 alength); 00540 extern int udisk_write(struct ubik_trans *atrans, afs_int32 afile, 00541 void *abuffer, afs_int32 apos, afs_int32 alen); 00542 extern int udisk_begin(struct ubik_dbase *adbase, int atype, 00543 struct ubik_trans **atrans); 00544 extern int udisk_commit(struct ubik_trans *atrans); 00545 extern int udisk_abort(struct ubik_trans *atrans); 00546 extern int udisk_end(struct ubik_trans *atrans); 00547 /*\}*/ 00548 00550 extern void ulock_Init(void); 00551 extern int ulock_getLock(struct ubik_trans *atrans, int atype, int await); 00552 extern void ulock_relLock(struct ubik_trans *atrans); 00553 extern void ulock_Debug(struct ubik_debug *aparm); 00554 /*\}*/ 00555 00557 extern int uvote_ShouldIRun(void); 00558 extern afs_int32 uvote_GetSyncSite(void); 00559 extern int uvote_Init(void); 00560 extern void ubik_vprint(const char *format, va_list ap) 00561 AFS_ATTRIBUTE_FORMAT(__printf__, 1, 0); 00562 00563 extern void ubik_print(const char *format, ...) 00564 AFS_ATTRIBUTE_FORMAT(__printf__, 1, 2); 00565 00566 extern void ubik_dprint(const char *format, ...) 00567 AFS_ATTRIBUTE_FORMAT(__printf__, 1, 2); 00568 00569 extern void ubik_dprint_25(const char *format, ...) 00570 AFS_ATTRIBUTE_FORMAT(__printf__, 1, 2); 00571 extern struct vote_data vote_globals; 00572 extern void uvote_set_dbVersion(struct ubik_version); 00573 extern int uvote_eq_dbVersion(struct ubik_version); 00574 extern int uvote_HaveSyncAndVersion(struct ubik_version); 00575 /*\}*/ 00576 00577 #endif /* UBIK_INTERNALS */ 00578 00579 extern afs_int32 ubik_nBuffers; 00580 00586 struct afsconf_cell; 00587 extern int ubik_ServerInitByInfo(afs_uint32 myHost, short myPort, 00588 struct afsconf_cell *info, char clones[], 00589 const char *pathName, 00590 struct ubik_dbase **dbase); 00591 extern int ubik_ServerInit(afs_uint32 myHost, short myPort, 00592 afs_uint32 serverList[], 00593 const char *pathName, struct ubik_dbase **dbase); 00594 extern int ubik_BeginTrans(struct ubik_dbase *dbase, 00595 afs_int32 transMode, struct ubik_trans **transPtr); 00596 extern int ubik_BeginTransReadAny(struct ubik_dbase *dbase, 00597 afs_int32 transMode, 00598 struct ubik_trans **transPtr); 00599 extern int ubik_BeginTransReadAnyWrite(struct ubik_dbase *dbase, 00600 afs_int32 transMode, 00601 struct ubik_trans **transPtr); 00602 extern int ubik_AbortTrans(struct ubik_trans *transPtr); 00603 00604 extern int ubik_EndTrans(struct ubik_trans *transPtr); 00605 extern int ubik_Read(struct ubik_trans *transPtr, void *buffer, 00606 afs_int32 length); 00607 extern int ubik_Flush(struct ubik_trans *transPtr); 00608 extern int ubik_Write(struct ubik_trans *transPtr, void *buffer, 00609 afs_int32 length); 00610 extern int ubik_Seek(struct ubik_trans *transPtr, afs_int32 fileid, 00611 afs_int32 position); 00612 extern int ubik_Tell(struct ubik_trans *transPtr, afs_int32 * fileid, 00613 afs_int32 * position); 00614 extern int ubik_Truncate(struct ubik_trans *transPtr, 00615 afs_int32 length); 00616 extern int ubik_SetLock(struct ubik_trans *atrans, afs_int32 apos, 00617 afs_int32 alen, int atype); 00618 extern int ubik_WaitVersion(struct ubik_dbase *adatabase, 00619 struct ubik_version *aversion); 00620 extern int ubik_GetVersion(struct ubik_trans *atrans, 00621 struct ubik_version *avers); 00622 extern int ubik_CheckCache(struct ubik_trans *atrans, 00623 ubik_updatecache_func check, 00624 void *rock); 00625 extern struct version_data version_globals; 00626 /*\}*/ 00627 00630 extern int ubik_ParseClientList(int argc, char **argv, afs_uint32 * aothers); 00631 extern unsigned int afs_random(void); 00632 extern int ubik_ClientInit(struct rx_connection **serverconns, 00633 struct ubik_client **aclient); 00634 extern afs_int32 ubik_ClientDestroy(struct ubik_client *aclient); 00635 extern struct rx_connection *ubik_RefreshConn(struct rx_connection *tc); 00636 #ifdef UBIK_LEGACY_CALLITER 00637 extern afs_int32 ubik_CallIter(int (*aproc) (), struct ubik_client *aclient, 00638 afs_int32 aflags, int *apos, long p1, long p2, 00639 long p3, long p4, long p5, long p6, long p7, 00640 long p8, long p9, long p10, long p11, long p12, 00641 long p13, long p14, long p15, long p16); 00642 extern afs_int32 ubik_Call_New(int (*aproc) (), struct ubik_client 00643 *aclient, afs_int32 aflags, long p1, long p2, 00644 long p3, long p4, long p5, long p6, long p7, 00645 long p8, long p9, long p10, long p11, long p12, 00646 long p13, long p14, long p15, long p16); 00647 #endif 00648 /*\}*/ 00649 00650 /* \name ubikcmd.c */ 00651 extern int ubik_ParseServerList(int argc, char **argv, afs_uint32 *ahost, 00652 afs_uint32 *aothers); 00653 /*\}*/ 00654 00655 /* \name uinit.c */ 00656 00657 struct rx_securityClass; 00658 extern afs_int32 ugen_ClientInit(int noAuthFlag, const char *confDir, 00659 char *cellName, afs_int32 sauth, 00660 struct ubik_client **uclientp, 00661 int (*secproc) (struct rx_securityClass *sc, 00662 afs_int32 scIndex), 00663 char *funcName, 00664 afs_int32 gen_rxkad_level, 00665 afs_int32 maxservers, char *serviceid, 00666 afs_int32 deadtime, afs_uint32 server, 00667 afs_uint32 port, afs_int32 usrvid); 00668 00669 #endif /* UBIK_H */ 00670 00671 /* End of prolog file ./ubik.p.h. */ 00672 00673 #define UNOQUORUM (5376L) 00674 #define UNOTSYNC (5377L) 00675 #define UNHOSTS (5378L) 00676 #define UIOERROR (5379L) 00677 #define UINTERNAL (5380L) 00678 #define USYNC (5381L) 00679 #define UNOENT (5382L) 00680 #define UBADLOCK (5383L) 00681 #define UBADLOG (5384L) 00682 #define UBADHOST (5385L) 00683 #define UBADTYPE (5386L) 00684 #define UTWOENDS (5387L) 00685 #define UDONE (5388L) 00686 #define UNOSERVERS (5389L) 00687 #define UEOF (5390L) 00688 #define ULOGIO (5391L) 00689 #define UBADFAM (5392L) 00690 #define UBADCELL (5393L) 00691 #define UBADSECGRP (5394L) 00692 #define UBADGROUP (5395L) 00693 #define UBADUUID (5396L) 00694 #define UNOMEM (5397L) 00695 #define UNOTMEMBER (5398L) 00696 #define UNBINDINGS (5399L) 00697 #define UBADPRINNAME (5400L) 00698 #define UPIPE (5401L) 00699 #define UDEADLOCK (5402L) 00700 #define UEXCEPTION (5403L) 00701 #define UTPQFAIL (5404L) 00702 #define USKEWED (5405L) 00703 #define UNOLOCK (5406L) 00704 #define UNOACCESS (5407L) 00705 #define UNOSPC (5408L) 00706 #define UBADPATH (5409L) 00707 #define UBADF (5410L) 00708 #define UREINITIALIZE (5411L) 00709 #define UMUTEXINIT (5412L) 00710 #define UMUTEXDESTROY (5413L) 00711 extern void initialize_U_error_table(void); 00712 #define ERROR_TABLE_BASE_U (5376L) 00713 00714 /* for compatibility with older versions... */ 00715 #define init_U_err_tbl initialize_U_error_table 00716 #define U_err_base ERROR_TABLE_BASE_U 00717 00718 /* for compatibility with other users... */ 00719 #define ERROR_TABLE_BASE_u (5376L) 00720 #define init_u_err_tbl initialize_U_error_table 00721 #define initialize_u_error_table initialize_U_error_table 00722 #define u_err_base ERROR_TABLE_BASE_u