#include "TaAfsAdmSvrInternal.h"
-
-/*
- * DEFINITIONS ________________________________________________________________
- *
- */
-
-extern void AfsAdmSvr_Startup (void);
-extern void AfsAdmSvr_Shutdown (void);
-
-
/*
* ROUTINES ___________________________________________________________________
*
void FastList_OnSize (HWND hList);
void FastList_OnPaint (HWND hList);
void FastList_OnPaintItem (LPFASTLIST pfl, LPFASTLISTDRAWITEM pdi);
-void FastList_OnPaintItem_DrawImage (LPFASTLIST pfl, LPFASTLISTDRAWITEM pdi, int iImage, LONG xImage, LONG yImage, BOOL fHLines);
+BOOL FastList_OnPaintItem_DrawImage (LPFASTLIST pfl, LPFASTLISTDRAWITEM pdi, HIMAGELIST hil, int iImage, LONG xImage, LONG yImage, BOOL fHLines);
void FastList_OnPaintItem_GetItemColors (LPFASTLIST pfl, LPFASTLISTDRAWITEM pdi, COLORREF *pclrFore, COLORREF *pclrBack);
void FastList_OnPaintItem_TreeLines (LPFASTLIST pfl, LPFASTLISTDRAWITEM pdi, DWORD dwLines, RECT *prLines);
void FastList_OnPaintItem_Large (LPFASTLIST pfl, LPFASTLISTDRAWITEM pdi);
*
*/
-BOOL Worker_StartOneThread (BOOL fActivate, ULONG *pStatus = NULL);
-
BOOL Worker_LoadLibraries (ULONG *pStatus);
void Worker_FreeLibraries (void);
-DWORD _stdcall Worker_ThreadProc (LPARAM lp);
-
DWORD Worker_PerformTask (WORKERTASK wtask, LPWORKERPACKET lpwp);
char cm_NetBiosName[32];
-void cm_InitFakeRootDir();
-
void
afsi_start()
{
extern void afsi_log(char *pattern, ...);
-extern char AFSConfigKeyName[];
-
HANDLE WaitToTerminate;
int GlobalStatus;
#endif /* DJGPP */
/* from .xg file */
-long VL_GetEntryByID(struct rx_connection *, long, long, struct vldbentry *);
-long VL_GetEntryByNameO(struct rx_connection *, char *, struct vldbentry *);
-long VL_ProbeServer(struct rx_connection *);
-long VL_GetEntryBYIDN(struct rx_connection *, long, long, struct nvldbentry *);
-long VL_GetEntryByNameN(struct rx_connection *, char *, struct nvldbentry *);
+/* FIXME: these were "long" but Windows NT wants "int" */
+int VL_GetEntryByID(struct rx_connection *, long, long, struct vldbentry *);
+int VL_GetEntryByNameO(struct rx_connection *, char *, struct vldbentry *);
+int VL_ProbeServer(struct rx_connection *);
+int VL_GetEntryBYIDN(struct rx_connection *, long, long, struct nvldbentry *);
+int VL_GetEntryByNameN(struct rx_connection *, char *, struct nvldbentry *);
/* from .xg file */
extern StartRXAFS_FetchData (struct rx_call *,
#include "afsd.h"
-void afsi_log();
+extern void afsi_log(char *pattern, ...);
/* This module implements the buffer package used by the local transaction
* system (cm). It is initialized by calling cm_Init, which calls buf_Init;
#include "afsd.h"
+/*extern void afsi_log(char *pattern, ...);*/
+
/* read/write lock for all global storage in this module */
osi_rwlock_t cm_callbackLock;
#include "afsd.h"
+#ifdef DEBUG
+extern void afsi_log(char *pattern, ...);
+#endif
+
osi_mutex_t cm_bufGetMutex;
#ifdef AFS_FREELANCE_CLIENT
extern osi_mutex_t cm_Freelance_Lock;
#include <lwp.h>
#include <afs/afsint.h>
+/*extern void afsi_log(char *pattern, ...);*/
+
extern int errno;
static char dns_addr[30];
#ifdef DJGPP
#include "cm_freelance.h"
#include "stdio.h"
+extern void afsi_log(char *pattern, ...);
+
int cm_noLocalMountPoints;
int cm_fakeDirSize;
int cm_fakeDirCallback=0;
#define MAX_PATH 260
osi_mutex_t cm_Afsdsbmt_Lock;
-#ifdef AFS_FREELANCE_CLIENT
-extern osi_mutex_t cm_Freelance_Lock;
-#endif
extern afs_int32 cryptall;
* can match them up. A list of session keys, searched by UUID, is maintained.
*/
-extern void afsi_log();
+extern void afsi_log(char *pattern, ...);
typedef struct tokenEvent {
afs_uuid_t uuid;
#include "afsd.h"
+/*extern void afsi_log(char *pattern, ...);*/
+
extern osi_hyper_t hzero;
/* hash table stuff */
#define ROVOL 1
#define BACKVOL 2
+#ifdef DEBUG
+extern void afsi_log(char *pattern, ...);
+#endif
+
unsigned int cm_mountRootGen = 0;
char cm_sysName[100];
#include <osi.h>
#include <afsint.h>
-typedef long afs_int32;
-typedef unsigned long afs_uint32;
-typedef short afs_int16;
-typedef unsigned short afs_uint16;
-
#include "fs.h"
#include "fs_utils.h"
#include "cmd.h"
unsigned int sessionGen = 0;
-void afsi_log();
+extern void afsi_log(char *pattern, ...);
osi_hyper_t hzero = {0, 0};
osi_hyper_t hones = {0xFFFFFFFF, -1};
void smb_DispatchPacket(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp,
NCB *ncbp, raw_write_cont_t *rwcp);
void smb_NetbiosInit();
-extern char cm_HostName[];
#ifdef DJGPP
+extern char cm_HostName[];
extern char cm_confDir[];
#endif
void *lockp;
} smb_waitingLock_t;
-smb_waitingLock_t *smb_allWaitingLocks;
+extern smb_waitingLock_t *smb_allWaitingLocks;
typedef long (smb_proc_t)(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp);
extern smb_user_t *smb_FindUserByNameThisSession(smb_vc_t *vcp, char *usern);
+extern smb_username_t *smb_FindUserByName(char *usern, char *machine, int flags);
+
+extern smb_user_t *smb_FindUserByNameThisSession(smb_vc_t *vcp, char *usern);
+
extern void smb_ReleaseUID(smb_user_t *uidp);
extern cm_user_t *smb_GetUser(smb_vc_t *vcp, smb_packet_t *inp);
extern char *myCrt_2Dispatch(int i);
+extern char *myCrt_2Dispatch(int i);
+
extern unsigned int smb_Attributes(cm_scache_t *scp);
extern int smb_ChainFID(int fid, smb_packet_t *inp);
#include "smb.h"
-extern smb_vc_t *dead_vcp;
-
extern osi_hyper_t hzero;
smb_packet_t *smb_Directory_Watches = NULL;
smb_ioctlProc_t *smb_ioctlProcsp[SMB_IOCTL_MAXPROCS];
/*extern unsigned char smb_LANadapter;*/
-extern LANA_ENUM lana_list;
void smb_InitIoctl(void)
{
static void UpdateConfigProgress(int nStepNum);
static void ShowTitle();
static void ViewLog();
-static void LogConfigState();
static void ShowConfigFailedMsg();
static BOOL Unconfiguring();
-static void SetButtonText(UINT uiMsgID);
-static char *GetAfsRootDir();
static BOOL GetCellServDB(char **ppszCellServDB);
static BOOL FreeCellServDB();
static char *GetVicepName();
*/
BOOL CALLBACK GetCurConfigDlgProc(HWND hwndDlg, UINT msg, WPARAM wp, LPARAM lp);
static DWORD CALLBACK GetCurrentConfigState(LPPROGRESSDISPLAY ppd, LPARAM lp);
-static void SetConfigDefaults();
static void ShowMsg(UINT uiMsgID);
static void NextStep(UINT uiMsgID);
static TCHAR szNo[cchRESOURCE];
static const UINT DISK_DRIVE_IMAGE = 0;
-static const UINT DISABLED_DISK_DRIVE_IMAGE = 1;
+//static const UINT DISABLED_DISK_DRIVE_IMAGE = 1;
+//static const UINT DISK_DRIVE_WITH_WARNING_IMAGE = 2;
// Remember the config state of the FS so we can detect when it changes.
// When it changes we must redisplay the partition info.
*
*/
static void OnInitDialog(HWND hwndDlg);
-static void CheckEnableButtons();
static void OnAdvanced();
static void UpdateControls();
static BOOL OnSalvage();
static void EnableScMachine(BOOL bEnable = TRUE);
static void OnScMachineChange();
static void CheckEnableBak();
-static void PrepareToConfig(CONFIG_STATE& state, BOOL bRunning, BOOL bOn);
+static BOOL PrepareToConfig(CONFIG_STATE& state, BOOL bRunning, BOOL bOn, UINT uiCtrlID);
static BOOL PrepareToConfig();
static void CheckEnableApply();
* PROTOTYPES _________________________________________________________________
*
*/
-BOOL Validation_IsValid(TCHAR *pszInput, VALIDATION_TYPE type, BOOL bShowError);
-
static BOOL CheckAfsPartitionName(TCHAR *pszInput, int &nErrorMsgResID);
static BOOL CheckAfsCellName(TCHAR *pszInput, int &nErrorMsgResID);
static BOOL CheckAfsPassword(TCHAR *pszInput, int &nErrorMsgResID);
static BOOL CheckAfsUid(TCHAR *pszInput, int &nErrorMsgResID);
static BOOL CheckAfsServerName(TCHAR *pszInput, int &nErrorMsgResID);
-static BOOL CheckFileName(TCHAR *pszInput, int &nErrorMsgResID);
-static BOOL CheckPath(TCHAR *pszInput, int &nErrorMsgResID);
static void ShowError(int nErrorMsgResID);
*/
static HWND m_hDriveList = 0;
-static const UINT MAX_DRIVES = 26;
+//static const UINT MAX_DRIVES = 26;
static const UINT DISK_DRIVE_IMAGE = 0;
static const UINT DISABLED_DISK_DRIVE_IMAGE = 1;
static const UINT DISK_DRIVE_WITH_WARNING_IMAGE = 2;
// Add an entry in the Servers list for each server in the cell.
//
- LPIDENT lpiSelStart = (LPIDENT)FL_GetSelectedData (pdr->hList);
- BOOL fRefresh = FALSE;
+// LPIDENT lpiSelStart = (LPIDENT)FL_GetSelectedData (pdr->hList);
+// BOOL fRefresh = FALSE;
LPCELL lpCell;
if (!g.lpiCell || !(lpCell = g.lpiCell->OpenCell()))
*
*/
-DWORD WINAPI Task_ThreadProc (PVOID lp);
-
-void Task_Perform (LPTASKPACKET ptp);
-
#ifdef DEBUG
void Task_ExportCell (LPTASKPACKET ptp);
#endif
void Main_OnNotifyFromDispatch (LPNOTIFYSTRUCT lpns);
void Main_OnPreviewPane (BOOL fPreviewNew, BOOL fVertNew, BOOL fStoreView);
-void Main_OnServerView (int lvsNew);
DWORD WINAPI Main_OnOpenServers_ThreadProc (PVOID lp);
-void Main_OnEndTask_Properties (LPTASKPACKET ptp);
void Main_SubclassServers (HWND hDlg);
BOOL CALLBACK Machine_Delete_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
void Machine_Delete_OnInitDialog (HWND hDlg);
void Machine_Delete_OnDestroy (HWND hDlg);
-void Machine_Delete_OnCheck (HWND hDlg);
void Machine_Delete_OnOK (HWND hDlg);
*
*/
-DWORD WINAPI Task_ThreadProc (PVOID lp);
-
-void Task_Perform (LPTASKPACKET ptp);
-
void Task_OpenCell (LPTASKPACKET ptp);
void Task_UpdCreds (LPTASKPACKET ptp);
void Task_UpdUsers (LPTASKPACKET ptp);
BOOL InitApp (LPSTR pszCmdLineA);
void ExitApp (void);
-void Quit (void);
void PumpMessage (MSG *pmsg);
BOOL IsServerInstalled (void);
echo !define MUI_MAJORVERSION 1 >>nsi-includes.nsi
echo !define MUI_MINORVERSION 2 >>nsi-includes.nsi
echo !define MUI_PATCHLEVEL 1100 >>nsi-includes.nsi
-if "%AFSDEV_CL% == "1310" echo !define CL1310 1 >> nsi-includes.nsi
+if "%AFSDEV_CL%" == "1310" echo !define CL1310 1 >> nsi-includes.nsi
if "%AFSDEV_BUILDTYPE%" == "CHECKED" echo !define DEBUG 1 >>nsi-includes.nsi
UNLOCK_GLOBAL_MUTEX}
#endif /* !defined(UKERNEL) */
-static
+static int
GetNoAuthFlag(adir)
struct afsconf_dir *adir;
{
}
+int
afsconf_GetNoAuthFlag(adir)
struct afsconf_dir *adir;
{
UNLOCK_GLOBAL_MUTEX return rc;
}
+void
afsconf_SetNoAuthFlag(adir, aflag)
struct afsconf_dir *adir;
int aflag;
UNLOCK_GLOBAL_MUTEX}
/* deletes a user from the UserList file */
+int
afsconf_DeleteUser(adir, auser)
struct afsconf_dir *adir;
register char *auser;
}
/* returns nth super user from the UserList file */
+int
afsconf_GetNthUser(adir, an, abuffer, abufferLen)
struct afsconf_dir *adir;
afs_int32 an;
}
/* add a user to the user list, checking for duplicates */
+int
afsconf_AddUser(adir, aname)
struct afsconf_dir *adir;
char *aname;
by acellInfo parm. Useful only on the server (which describes only one cell).
*/
-static
+static int
VerifyEntries(aci)
register struct afsconf_cell *aci;
{
This is a handle to the internal cache that is maintained by the bosserver.
*/
+int
afsconf_SetCellInfo(adir, apath, acellInfo)
struct afsconf_dir *adir;
char *apath;
return code;
}
+int
afsconf_SetExtendedCellInfo(adir, apath, acellInfo, clones)
struct afsconf_dir *adir;
char *apath;
extern int bnode_Init( /* no parms */ );
extern afs_int32 bnode_Create();
extern struct bnode *bnode_FindInstance();
+extern int bnode_WaitStatus(register struct bnode *abnode, int astatus);
+extern int bnode_SetStat(register struct bnode *abnode, register int agoal);
#include <ubik.h>
#include <afs/ktime.h>
-
-
-extern char *volutil_PartitionName();
-extern struct rx_call *rx_NewCall();
-extern char *volutil_PartitionName();
-extern struct hostent *hostutil_GetHostByName();
-
static IStatServer();
static DoStat();
extern struct ktime bozo_nextRestartKT, bozo_nextDayKT;
extern struct afsconf_dir *bozo_confdir;
-extern struct rx_securityClass *bozo_rxsc[2];
extern int bozo_newKTs;
extern int DoLogging;
#ifdef BOS_RESTRICTED_MODE
#define BOZO_LWP_STACKSIZE 16000
extern int BOZO_ExecuteRequest();
extern int RXSTATS_ExecuteRequest();
-extern int afsconf_GetKey();
extern struct bnode_ops fsbnode_ops, ezbnode_ops, cronbnode_ops;
void bozo_Log();
struct rx_securityClass *bozo_rxsc[3];
const char *bozo_fileName;
FILE *bozo_logFile;
-extern int rx_stackSize; /* for rx_SetStackSize macro */
int DoLogging = 0;
int DoSyslog = 0;
static int cron_procexit(), cron_getstring(), cron_getparm(), cron_restartp();
static int cron_hascore();
struct bnode *cron_create();
-extern char *ktime_DateOf();
#define SDTIME 60 /* time in seconds given to a process to evaporate */
static int fs_procexit(), fs_getstring(), fs_getparm(), fs_restartp();
static int fs_hascore();
struct bnode *fs_create();
-struct bnode *fsmr_create();
static SetNeedsClock();
static NudgeProcs();
curPollPtr->flags &= ~(clear); \
unlock_Status();
+extern struct bc_config *bc_globalConfig;
+extern afs_int32 bc_GetConn(struct bc_config *aconfig, afs_int32 aport, struct rx_connection **tconn);
+extern statusP findStatus(afs_uint32 taskId);
+
/* globals for backup coordinator status management */
dlqlinkT statusHead; /* chain of status blocks */
PROCESS dispatchPid;
afs_int32 code = 0;
- extern struct bc_config *bc_globalConfig;
- extern struct rx_connection *bc_GetConn();
lastTaskCode = 0;
{
statusP ptr;
afs_int32 done = 0, rcode, t;
- extern statusP findStatus();
t = (TASK_DONE | ABORT_DONE | TASK_ERROR);
while (!done) {
extern struct bc_config *bc_globalConfig;
-extern char *ktime_GetDateUsage();
extern struct bc_dumpSchedule *bc_FindDumpSchedule();
extern struct bc_volumeSet *bc_FindVolumeSet(struct bc_config *cfg,
char *name);
extern struct ubik_client *cstruct;
extern int bc_Dumper(); /* function to do dumps */
extern int bc_Restorer(); /* function to do restores */
-extern void bc_HandleMisc();
-extern afs_int32 ScanDumpHdr();
-extern afs_int32 ScanTapeVolume();
extern char *whoami;
-extern int VL_ListEntry();
-extern int VL_ListAttributesN2();
extern struct ktc_token ttoken;
extern char *tailCompPtr();
extern statusP createStatusNode();
return (code);
}
+int
compareDump(ptr1, ptr2)
struct budb_dumpEntry *ptr1, *ptr2;
{
* move all the items on the fromptr and append to the toptr's list
*/
+void
dlqMoveb(fromptr, toptr)
dlqlinkP fromptr;
dlqlinkP toptr;
#include <afs/bubasics.h>
#include "bc.h"
-extern struct bc_config *bc_globalConfig;
-extern FILE *bc_open();
-extern void bc_HandleMisc();
-extern char *whoami;
-
static char db_dsvs = 0; /*Assume debugging output turned off */
static char mn[] = "dsvs"; /*Module name */
struct bc_dumpTask bc_dumpTasks[BC_MAXSIMDUMPS];
-extern struct bc_config *bc_globalConfig;
extern char *bc_CopyString();
extern void bc_HandleMisc();
extern char *whoami;
int localauth, interact;
char tcell[64];
-extern int BC_ExecuteRequest();
extern int bc_AddDumpCmd();
extern int bc_AddHostCmd();
extern int bc_AddVolEntryCmd();
extern int bc_restoreDbCmd();
extern int bc_saveDbCmd();
-extern PrintError();
-
/*
* Global configuration information for the Backup Coordinator.
*/
#include <afs/vlserver.h>
#include "error_macros.h"
-
-extern struct bc_config *bc_globalConfig;
extern struct bc_dumpTask bc_dumpTasks[BC_MAXSIMDUMPS];
-extern void bc_HandleMisc();
extern char *whoami;
-extern struct rx_connection *bc_GetConn();
#define BC_MAXLEVELS 20
#define MAXTAPESATONCE 10
extern struct bc_config *bc_globalConfig;
extern struct udbHandleS udbHandle;
extern char *whoami;
-extern struct bc_volumeSet *bc_FindVolumeSet(struct bc_config *cf,
- char *name);
+extern struct bc_volumeSet *bc_FindVolumeSet(struct bc_config *cf, char *name);
+extern void FreeVolumeSet(struct bc_volumeSet *avset);
+
/* ------------------------------------
* command level routines
#include "bc.h"
#include <afs/volint.h>
-extern int VL_GetEntryByID();
extern char *whoami;
/* ********************************************************************* */
struct memoryHashTable *ht_GetType();
extern afs_uint32 ht_HashEntry();
extern dbadr ht_LookupBucket();
+
+extern afs_int32 dbwrite(struct ubik_trans *ut, afs_int32 pos, char *buff, afs_int32 len);
+extern void db_panic(char *reason);
+extern void ht_Reset(struct memoryHashTable *mht);
extern struct ubik_dbase *BU_dbase;
extern struct afsconf_dir *BU_conf; /* for getting cell info */
-extern afs_int32 myHost;
-extern struct memoryDB db; /* incore copies of db structures */
afs_int32 AddVolume(), AddVolumes(), CreateDump(), DoDeleteDump(),
DoDeleteTape(), ListDumps();
#include "globals.h"
#include "afs/audit.h"
-
-extern afs_int32 ubik_lastYesTime;
-extern afs_int32 ubik_nBuffers;
-
struct ubik_dbase *BU_dbase;
struct afsconf_dir *BU_conf; /* for getting cell info */
#include "butc_xbsa.h"
#include <afs/butx.h>
+#include "error_macros.h"
+
extern int debugLevel;
#include "error_macros.h"
-extern struct ubik_client *cstruct;
dlqlinkT savedEntries;
dlqlinkT entries_to_flush;
extern struct rx_connection *UV_Bind();
-extern char *globalCellName;
-
-extern afs_int32 xbsaType;
extern afs_int32 groupId;
extern afs_int32 BufferSize;
extern afs_int32 statusSize;
extern FILE *centralLogIO;
afs_int32 lastPass = 0;
#ifdef xbsa
+extern afs_int32 xbsaType;
char *butcdumpIdStr = "/backup_afs_volume_dumps";
extern struct butx_transactionInfo butxInfo;
extern char *xbsaObjectOwner;
afs_int32 tc_EndMargin;
afs_int32 tc_KEndMargin;
-char *bufferBlock;
+static char *bufferBlock;
/* compute the absolute expiration date */
afs_int32
code = evalue; \
goto abort_exit; \
}
+
+/*need conversion to varargs*//*extern void ELog(afs_int32 task, char *str, char *a, char *b, char *c, char *d, char *e, char *f, char *g, char *h, char *i, char *j);
+extern void ErrorLog(int debug, afs_int32 task, afs_int32 error1, afs_int32 error2, char *str, char *a, char *b, char *c, char *d, char *e, char *f, char *g, char *h, char *i, char *j);
+extern void TLog(afs_int32 task, char *str, char *a, char *b, char *c, char *d, char *e, char *f, char *g, char *h, char *i, char *j);
+extern void TapeLog(int debug, afs_int32 task, afs_int32 error1, afs_int32 error2, char *str, char *a, char *b, char *c, char *d, char *e, char *f, char *g, char *h, char *i, char *j);*/
+
+extern void FreeNode(afs_int32 taskID);
+extern void CreateNode(struct dumpNode **newNode);
+extern void LeaveDeviceQueue(struct deviceSyncNode *devLatch);
+extern void EnterDeviceQueue(struct deviceSyncNode *devLatch);
+extern Date ExpirationDate(afs_int32 dumpid);
+extern void InitNodeList(afs_int32 portOffset);
+
+/* bucoord/status.c */
+extern void clearStatus(afs_uint32 taskId, afs_uint32 flags);
+extern void setStatus(afs_uint32 taskId, afs_uint32 flags);
#include <errno.h>
#include <afs/tcdata.h>
-extern int debugLevel;
+#include "error_macros.h"
+
+/*extern int debugLevel;*/
static struct dumpNode *dumpQHeader; /* ptr to head of the dumpNode list */
static struct dumpNode headNode; /* the dummy header of the node list */
static afs_int32 maxTaskID; /* the largest task Id allotted so far, this is never reused */
#include "butc_xbsa.h"
/* GLOBAL CONFIGURATION PARAMETERS */
-extern int dump_namecheck;
extern int queryoperator;
extern int tapemounted;
extern char *opencallout;
extern char *whoami;
extern char *extractDumpName();
extern int BufferSize; /* Size in B stored for header info */
-extern char *restoretofile;
FILE *restoretofilefd;
+#ifdef xbsa
+extern char *restoretofile;
extern int forcemultiple;
+#endif
/* XBSA Global Parameters */
afs_int32 xbsaType;
struct butx_transactionInfo butxInfo;
#endif
-struct TapeBlock { /* A 16KB tapeblock */
+static struct TapeBlock { /* A 16KB tapeblock */
char mark[BUTM_HDRSIZE]; /* Header info */
char data[BUTM_BLKSIZE]; /* data */
} *bufferBlock;
afs_int32 readVolumeHeader( /*char *buffer,afs_int32 bufloc,(struct volumeHeader *)vhptr */ );
/* The on-disk volume header or trailer can differ in size from platform to platform */
-struct TapeBlock tapeBlock;
+static struct TapeBlock tapeBlock;
char tapeVolumeHT[sizeof(struct volumeHeader) + 2 * sizeof(char)];
void
/* GLOBAL CONFIGURATION PARAMETERS */
extern int autoQuery;
extern int queryoperator;
-extern int isafile;
/* Handle for the information read from all the tapes of a dump */
afs_int32 tapepos; /* when read a label, remember its position */
#include <afs/tcdata.h>
#include "error_macros.h"
#include "butc_xbsa.h"
-extern afs_int32 xbsaType;
callPermitted(call)
struct rx_call *call;
-DSTRICT \
-D_WIN32_IE=0x0400 \
-D_WIN32_WINNT=0x0400 \
- -DAFS_AFSDB_ENV \
- -DAFS_FREELANCE_CLIENT \
- -DAFS_64BIT_ENV \
+ -DAFS_AFSDB_ENV \
+ -DAFS_FREELANCE_CLIENT \
+ -DAFS_64BIT_ENV \
+ -DAFS_64BIT_CLIENT \
$(AFSDEV_AUXCDEFINES)
exit(1);
}
+int
main(int argc, char **argv)
{
char stampsFile[1024];
des_random_key(des_cblock key)
{
LOCK_INIT if (!is_inited) {
- void des_init_random_number_generator();
des_init_random_number_generator(key);
}
UNLOCK_INIT
#endif
int des_read_pw_string(char *, int, char *, int);
-int des_string_to_key(char *, des_cblock *);
+void des_string_to_key(char *, des_cblock *);
/*** Routines ****************************************************** */
int
/* Some Cheap statistics which should be shared with the rxkad definitions, but
* aren't. The layout should match the layout in rxkad/rxkad.p.h. */
-struct {
- afs_uint32 rxkad_stuff[34]; /* see rxkad.h */
- afs_uint32 fc_stuff[3]; /* see rxkad.h */
+struct rxkad_stats {
+ afs_uint32 connections[3]; /* client side only */
+ afs_uint32 destroyObject; /* client security objects */
+ afs_uint32 destroyClient; /* client connections */
+ afs_uint32 destroyUnused; /* unused server conn */
+ afs_uint32 destroyUnauth; /* unauthenticated server conn */
+ afs_uint32 destroyConn[3]; /* server conn per level */
+ afs_uint32 expired; /* server packets rejected */
+ afs_uint32 challengesSent; /* server challenges sent */
+ afs_uint32 challenges[3]; /* challenges seen by client */
+ afs_uint32 responses[3]; /* responses seen by server */
+ afs_uint32 preparePackets[6];
+ afs_uint32 checkPackets[6];
+ afs_uint32 bytesEncrypted[2]; /* index just by type */
+ afs_uint32 bytesDecrypted[2];
+ afs_uint32 fc_encrypts[2]; /* DECRYPT==0, ENCRYPT==1 */
+ afs_uint32 fc_key_scheds; /* key schedule creations */
afs_uint32 des_encrypts[2]; /* DECRYPT==0, ENCRYPT==1 */
afs_uint32 des_key_scheds; /* key schedule creations */
afs_uint32 des_randoms; /* random blocks generated */
- unsigned long spares[10];
+ long spares[10];
} rxkad_stats; /* put these here for convenience */
#ifdef AFS_PTHREAD_ENV
/* MIN_ARGC == MAX_ARGC ==> required # args */
extern char *errmsg();
-extern int des_string_to_key();
+extern void des_string_to_key();
extern int des_key_sched();
extern int des_ecb_encrypt();
extern int des_cbc_encrypt();
extern char *errmsg();
-extern int des_string_to_key();
+extern void des_string_to_key();
extern int des_key_sched();
extern int des_ecb_encrypt();
extern int des_cbc_encrypt();
#define BUFFER_FID_SIZE (6 + 2*sizeof(char*)/sizeof(int))
#endif
-struct buffer {
+static struct buffer {
/* fid is used for Unique cache key + i/o addressing.
* fid size is based on 4 + size of inode and size of pointer
*/
extern struct DirEntry *GetBlob(void *dir, afs_int32 blobno);
extern int DirHash(register char *string);
+extern int DStat(int *abuffers, int *acalls, int *aios);
+extern int DInit(int abuffers);
+extern void *DRead(register afs_int32 *fid, register int page);
+extern void DRelease(register struct buffer *bp, int flag);
+extern int DVOffset(register void *ap);
+extern void DZap(register afs_int32 *fid);
+extern int DFlushVolume(register afs_int32 vid);
+extern int DFlushEntry(register afs_int32 *fid);
+extern int DFlush();
+extern void *DNew(register afs_int32 *fid, register int page);
+
#ifdef KERNEL
extern int afs_dir_NameBlobs(char *name);
extern int afs_dir_Create(void *dir, char *entry, void *vfid);
#define MAXENAME 256
-struct DirEntry *GetBlob();
-struct PageHeader *DRead();
extern afs_int32 DErrno;
-int NameBlobs(), Lookup(), Create(), MakeDir();
/* figure out how many pages in use in a directory, given ptr to its (locked) header */
static
#include "kautils.h"
#include "kaport.h"
-
#define CMD_PARSER_AMBIG_FIX 1 /* allow ambiguous aliases */
-extern char *ktime_GetDateUsage();
-
#define KA_SIXHOURS (6*3600)
static struct ubik_client *conn;
/* These are the command operation procedures. */
int
-ListUsers(struct cmd_syndesc *as, char *arock)
-{
- struct kaident name;
- afs_int32 index;
- afs_int32 count;
- afs_int32 next_index;
- int code, all = 0, showa = 0;
- int showkey = (as->parms[2].items != NULL);
-
- if (as->parms[0].items)
- all = 1;
- if (as->parms[1].items) {
- all = 1;
- showa = 1;
- }
- for (index = 0; 1; index = next_index) {
- code =
- ubik_Call(KAM_ListEntry, conn, 0, index, &next_index, &count,
- &name);
- if (code) {
- com_err(whoami, code, "calling KAM_ListEntry");
- break;
- }
- if (!next_index)
- break;
- if (next_index < 0)
- printf("next_index (%d) is negative: ", next_index);
- if (strlen(name.name) == 0)
- printf("name is zero length: ");
- if (all)
- DumpUser(name.name, NULL, showa, showkey, name.instance);
- else
- ka_PrintUserID("", name.name, name.instance, "\n");
- }
- return code;
-}
-
-
-int
-ExamineUser(struct cmd_syndesc *as, char *arock)
-{
- int showkey = (as->parms[1].items != NULL);
- return DumpUser(as->parms[0].items->data, arock, 0, showkey, NULL);
-}
-
-
-int
DumpUser(char *user, char *arock, int showadmin, int showkey, char *inst)
{
char name[MAXKTCNAMELEN];
return 0;
}
+int
+ListUsers(struct cmd_syndesc *as, char *arock)
+{
+ struct kaident name;
+ afs_int32 index;
+ afs_int32 count;
+ afs_int32 next_index;
+ int code, all = 0, showa = 0;
+ int showkey = (as->parms[2].items != NULL);
+
+ if (as->parms[0].items)
+ all = 1;
+ if (as->parms[1].items) {
+ all = 1;
+ showa = 1;
+ }
+ for (index = 0; 1; index = next_index) {
+ code =
+ ubik_Call(KAM_ListEntry, conn, 0, index, &next_index, &count,
+ &name);
+ if (code) {
+ com_err(whoami, code, "calling KAM_ListEntry");
+ break;
+ }
+ if (!next_index)
+ break;
+ if (next_index < 0)
+ printf("next_index (%d) is negative: ", next_index);
+ if (strlen(name.name) == 0)
+ printf("name is zero length: ");
+ if (all)
+ DumpUser(name.name, NULL, showa, showkey, name.instance);
+ else
+ ka_PrintUserID("", name.name, name.instance, "\n");
+ }
+ return code;
+}
+
+
+int
+ExamineUser(struct cmd_syndesc *as, char *arock)
+{
+ int showkey = (as->parms[1].items != NULL);
+ return DumpUser(as->parms[0].items->data, arock, 0, showkey, NULL);
+}
+
+
struct OKerrors {
int code;
char *msg;
#include "kautils.h"
#include "kaserver.h"
-extern struct kaheader cheader;
extern Date cheaderReadTime; /* time cheader last read in */
-extern struct ubik_dbase *KA_dbase;
#define set_header_word(tt,field,value) kawrite ((tt), ((char *)&(cheader.field) - (char *)&cheader), ((cheader.field = (value)), (char *)&(cheader.field)), sizeof(afs_int32))
struct afsconf_dir *KA_conf; /* for getting cell info */
-extern afs_int32 ubik_lastYesTime;
-extern afs_int32 ubik_nBuffers;
int MinHours = 0;
int npwSums = KA_NPWSUMS; /* needs to be variable sometime */
extern void ka_timestr(afs_int32 time, char *tstr, afs_int32 tlen);
+extern void ka_debugKeyCache(struct ka_debugInfo *info);
+
+extern void save_principal(char *p, char *n, char *i, char *c);
+
extern afs_int32 ka_GetAFSTicket(char *name, char *instance, char *realm,
Date lifetime, afs_int32 flags);
static int zero_argc;
static char **zero_argv;
-extern int init_child(), pasword_bad(), give_to_child(), terminate_child();
+extern int init_child(), give_to_child(), terminate_child();
#ifdef AFS_NT40_ENV
struct passwd {
char data[MAX_PKT_LEN];
};
-extern struct kadstats dynamic_statistics;
extern char *lastOperation;
extern char lrealm[];
#endif
#endif
-
-
-/*
- * Prototypes for functions that don't exist in any header files
- */
-
-extern int BOZO_AddCellHost();
-extern int BOZO_AddKey();
-extern int BOZO_AddSUser();
-extern int BOZO_CreateBnode();
-extern int BOZO_DeleteBnode();
-extern int BOZO_DeleteCellHost();
-extern int BOZO_DeleteKey();
-extern int BOZO_DeleteSUser();
-extern int BOZO_EnumerateInstance();
-extern int BOZO_Exec();
-extern int BOZO_GetCellHost();
-extern int BOZO_GetCellName();
-extern int BOZO_GetDates();
-extern int BOZO_GetInstanceInfo();
-extern int BOZO_GetInstanceParm();
-extern int BOZO_GetInstanceParm();
-extern int BOZO_GetRestartTime();
-extern int BOZO_GetStatus();
-extern int BOZO_ListSUsers();
-extern int BOZO_ListKeys();
-extern int BOZO_Prune();
-extern int BOZO_ReBozo();
-extern int BOZO_Restart();
-extern int BOZO_RestartAll();
-extern int BOZO_SetCellName();
-extern int BOZO_SetNoAuthFlag();
-extern int BOZO_SetRestartTime();
-extern int BOZO_SetStatus(struct rx_connection *, char *, afs_int32);
-extern int BOZO_SetTStatus(struct rx_connection *, char *, afs_int32);
-extern int BOZO_ShutdownAll();
-extern int BOZO_StartupAll();
-extern int BOZO_UnInstall();
-extern int BOZO_WaitAll();
-extern int StartBOZO_GetLog();
-extern int StartBOZO_Install();
-
typedef struct bos_server {
int begin_magic;
int is_valid;
#undef ENCRYPT
extern int ubik_Call();
-extern int ubik_Call_New();
extern int ubik_CallIter();
typedef struct {
#include <afs/ptserver.h>
/*
- * The list of external functions that aren't prototyped anywhere
- */
-
-extern int PR_NameToID();
-extern int PR_AddToGroup();
-extern int PR_ChangeEntry();
-extern int PR_RemoveFromGroup();
-extern int PR_INewEntry();
-extern int PR_NewEntry();
-extern int PR_Delete();
-extern int PR_IDToName();
-extern int PR_ListEntry();
-extern int PR_SetMax();
-extern int PR_ListElements();
-extern int PR_SetFieldsEntry();
-extern int PR_IsAMemberOf();
-extern int PR_ListMax();
-extern int PR_ListOwned();
-extern int PR_ListEntries();
-
-/*
* IsValidCellHandle - validate the cell handle for making pts
* requests.
*
#include <pthread.h>
#endif
-extern int RXSTATS_RetrieveProcessRPCStats();
-extern int RXSTATS_RetrievePeerRPCStats();
-extern int RXSTATS_QueryProcessRPCStats();
-extern int RXSTATS_QueryPeerRPCStats();
-extern int RXSTATS_EnableProcessRPCStats();
-extern int RXSTATS_EnablePeerRPCStats();
-extern int RXSTATS_DisableProcessRPCStats();
-extern int RXSTATS_DisablePeerRPCStats();
-extern int RXSTATS_ClearProcessRPCStats();
-extern int RXSTATS_ClearPeerRPCStats();
-
/*
* This structure stores the client and server function lists.
* This is kept separate from the actual interface definitions
#include "vsprocs.h"
#include "lockprocs.h"
-extern int VL_GetAddrsU();
-
typedef struct file_server {
int begin_magic;
int is_valid;
#endif
/*
- * Functions that aren't prototyped, but that we use
- */
-
-extern int VL_CreateEntryN(), VL_CreateEntry(), VL_GetEntryByIDN(),
-VL_GetEntryByID(), VL_GetEntryByNameN(), VL_GetEntryByNameO(),
-VL_ReplaceEntryN(), VL_ReplaceEntry(), VL_ListAttributesN(),
-VL_ListAttributes(), VL_GetAddrsU();
-
-/*
* VLDB entry conversion routines.
* convert from one type of VLDB record to another. There are only
* two types "old" and "new".
#endif
#include <afs/afsutil.h>
-extern char *valloc();
int ft_debug;
#define TRUE 1
}
-VOID WINAPI Enter_LWP(PVOID fiberData)
+static VOID WINAPI Enter_LWP(PVOID fiberData)
{
PROCESS pcb = (PROCESS)fiberData;
#define MILLION 1000000
-static globalInitDone = 0;
-
-void openafs_insque(struct TM_Elem *, struct TM_Elem *);
-void openafs_remque(struct TM_Elem *);
+static int globalInitDone = 0;
/* t1 = t2 - t3 */
static void
char *whoami;
+#ifndef AFS_PTHREAD_ENV
extern struct ubik_client *pruclient;
+#endif
static int ignoreExist = 0;
static char line[256];
#include "pterror.h"
#include <afs/afsutil.h>
-extern char *ucstring();
-extern char *lcstring();
-
static char *whoami = "testpr";
static struct afsconf_dir *conf; /* cell info, set by MyBeforeProc */
static char conf_dir[100];
/* Other declarations */
+int
afsconf_GetNoAuthFlag()
{
return (1);
void clock_UpdateTime(void);
void
-clock_Init()
+clock_Init(void)
{
if (!QueryPerformanceFrequency(&rxi_clockFreq)) {
printf("No High Performance clock, exiting.\n");
#ifndef KERNEL
/* Make clock uninitialized. */
-clock_UnInit()
+int
+clock_UnInit(void)
{
clockInitialized = 0;
+ return 0;
}
#endif
#define TIMEOUT 20
-extern struct hostent *hostutil_GetHostByName();
-
static short
PortNumber(aport)
register char *aport;
#include "private_data.h"
#define XPRT_RXKAD_CLIENT
-char *rxi_Alloc();
-
#ifndef max
#define max(a,b) ((a) < (b)? (b) : (a))
#endif /* max */
#include "private_data.h"
#define XPRT_RXKAD_COMMON
-char *rxi_Alloc();
-
#ifndef afs_max
#define afs_max(a,b) ((a) < (b)? (b) : (a))
#endif /* afs_max */
#include "ubik_int.h"
#define PHSIZE 128
-struct buffer {
+static struct buffer {
struct ubik_dbase *dbase; /* dbase within which the buffer resides */
afs_int32 file; /* Unique cache key */
afs_int32 page; /* page number */
}
/* Release the transaction lock */
-int
+void
ulock_relLock(atrans)
struct ubik_trans *atrans;
{
if (rwlockinit)
- return EINVAL;
+ return;
if (atrans->locktype == LOCKREAD) {
ReleaseReadLock(&rwlock);
extern int DISK_WriteV();
extern int DISK_Truncate();
extern int DISK_SetVersion();
+
+/* disk.c */
+extern int udisk_abort(struct ubik_trans *atrans);
+
+/* lock.c */
+extern void ulock_relLock(struct ubik_trans *atrans);
+
#endif /* UBIK_INTERNALS */
extern afs_int32 ubik_nBuffers;
extern afs_int32 ubik_ClientDestroy(struct ubik_client *aclient);
+/* ubik.c */
+extern int ubik_BeginTrans(register struct ubik_dbase *dbase, afs_int32 transMode, struct ubik_trans **transPtr);
+extern int ubik_EndTrans(register struct ubik_trans *transPtr);
#endif /* UBIK_H */
#include "ubik.h"
#include "ubik_int.h"
-extern struct hostent *hostutil_GetHostByName();
-
static short
PortNumber(register char *aport)
{
#include "global.h"
extern int UPDATE_ExecuteRequest();
+extern rxkad_level StringToLevel(char *name);
+
static int AddObject(char **expPath, char *dir);
static int PathInDirectory(char *dir, char *path);
/* forward defs
*/
-static int advance();
-static int backref();
-static int cclass();
+static int advance(register char *lp, register char *ep);
+static int backref(register int i, register char *lp);
+static int cclass(register char *set, register char c, int af);
/*
* try to match the next thing in the dfa
*/
static int
-advance(lp, ep)
- register char *lp, *ep;
+advance(register char *lp, register char *ep)
{
register char *curlp;
int ct, i;
}
static int
-backref(i, lp)
- register int i;
- register char *lp;
+backref(register int i, register char *lp)
{
register char *bp;
}
static int
-cclass(set, c, af)
- register char *set, c;
- int af;
+cclass(register char *set, register char c, int af)
{
register int n;
void
SetDebug_Signal(int signo)
{
- extern int IOMGR_SoftSig();
+/* extern int IOMGR_SoftSig();*/
if (LogLevel > 0) {
LogLevel *= 5;
#endif
#define PAGESIZE 2048
-extern int LogLevel;
-
afs_int32 lpErrno, lpCount;
/* returns 0 on success, errno on failure */
void fill_entry();
void fill_update_entry();
-extern int VL_GetAddrsU(), VL_RegisterAddrs();
#define VL_NUMBER_OPCODESX 34
static char *opcode_names[VL_NUMBER_OPCODESX] = {
"CreateEntry",
char name[64];
};
-extern int VL_UpdateEntryByName();
#define NVOLS 1000
#define ALLOCNT 50000
struct Vlent *VLa[NVOLS];
struct rx_connection *serverconns[MAXSERVERS];
char confdir[AFSDIR_PATH_MAX];
char *(args[50]);
-extern struct cmd_syndesc *cmd_CreateSyntax();
struct Vlent *
GetVolume(vol, entry)
extern int afsconf_CheckAuth();
extern int afsconf_ServerAuth();
-extern afs_int32 ubik_lastYesTime;
-extern afs_int32 ubik_nBuffers;
-
static CheckSignal();
int LogLevel = 0;
int smallMem = 0;
#define VLog(level, str) ViceLog(5, str)
+extern int FreeBlock(struct ubik_trans *trans, afs_int32 blockindex);
+
#endif /* _VLSERVER_ */
extern struct vlheader cheader;
struct vlheader xheader;
-extern struct ubik_dbase *VL_dbase;
extern afs_uint32 HostAddress[];
extern int maxnservers;
struct extentaddr extentaddr;
#endif
#define osi_Assert(e) (void)(e)
-extern int LogLevel; /* Vice loglevel */
int (*V_BreakVolumeCallbacks) ();
#define MAXHANDLERS 4 /* Up to 4 clients; must be at least 2, so that
char partName[16]; /* partition name, e.g. /vicepa */
};
-
/* Forward declarations */
-static int getport();
static void FSYNC_sync();
static void FSYNC_newconnection();
static void FSYNC_com();
#endif /* !O_LARGEFILE */
#endif /* AFS_NT40_ENV */
-extern afs_int32 DErrno;
-
#ifdef AFS_PTHREAD_ENV
pthread_once_t ih_glock_once = PTHREAD_ONCE_INIT;
pthread_mutex_t ih_glock_mutex;
#define BASEFILEATTRIBUTE FILE_ATTRIBUTE_NORMAL
+static void AddToZLCDeleteList(char dir, char *name);
+
/* nt_unlink - unlink a case sensitive name.
*
* nt_unlink supports the nt_dec call.
int tag, vno;
FdHandle_t linkHandle;
int ninodes = 0;
- static void AddToZLCDeleteList(char dir, char *name);
static void DeleteZLCFiles(char *path);
s = nt_HandleToVolDir(path, &myIH);
#ifdef AFS_OSF_ENV
extern void *calloc();
#endif
-extern char *vol_DevName();
static char *TimeStamp(time_t clock, int precision);
#define ORPH_IGNORE 0
#define VolserVersion "2.0"
#define N_SECURITY_OBJECTS 3
-extern int (*vol_PollProc) ();
extern struct volser_trans *TransList();
#ifndef AFS_PTHREAD_ENV
+extern int (*vol_PollProc) ();
extern int IOMGR_Poll();
#endif
char *GlobalNameHack = NULL;
int VolumeChanged; /* XXXX */
static char busyFlags[MAXHELPERS];
struct volser_trans *QI_GlobalWriteTrans = 0;
-extern int QI_write();
-extern int QI_flush();
-extern int (*VolWriteProc) ();
-extern int (*VolFlushProc) ();
extern void AFSVolExecuteRequest();
extern void RXSTATS_ExecuteRequest();
struct afsconf_dir *tdir;
extern int DoLogging;
extern struct volser_trans *FindTrans(), *NewTrans(), *TransList();
extern struct afsconf_dir *tdir;
-extern char *volutil_PartitionName();
extern void LogError(afs_int32 errcode);
VolDeleteVolume(), VolClone();
afs_int32 VolReClone(), VolTransCreate(), VolGetNthVolume(), VolGetFlags(),
VolForward(), VolDump();
-afs_int32 VolForwardMultiple();
afs_int32 VolRestore(), VolEndTrans(), VolSetForwarding(), VolGetStatus(),
VolSetInfo(), VolGetName();
-afs_int32 VolSignalRestore(), VolListPartitions(), VolListOneVolume(),
+afs_int32 VolListPartitions(), VolListOneVolume(),
VolXListOneVolume(), VolXListVolumes();
afs_int32 VolListVolumes(), XVolListPartitions(), VolMonitor(),
VolSetIdsTypes(), VolSetDate(), VolSetFlags();
#define RV_OFFLINE 0x2
#define RV_RDONLY 0x10000
+extern afs_uint32 vsu_GetVolumeID(char *astring, struct ubik_client *acstruct, afs_int32 *errp);
+extern int vsu_ExtractName(char rname[], char name[]);
+extern afs_int32 vsu_ClientInit(int noAuthFlag, char *confDir, char *cellName, afs_int32 sauth, struct ubik_client **uclientp, int (*secproc)());
+extern void vsu_SetCrypt(int cryptflag);
+
#endif /* _VOLSER_ */
struct tqElem *next;
};
-
-struct hostent *hostutil_GetHostByName(register char *ahost);
-
#define COMMONPARMS cmd_Seek(ts, 12);\
cmd_AddParm(ts, "-cell", CMD_SINGLE, CMD_OPTIONAL, "cell name");\
cmd_AddParm(ts, "-noauth", CMD_FLAG, CMD_OPTIONAL, "don't authenticate");\
afs_int32 tserver;
extern struct ubik_client *cstruct;
const char *confdir;
-extern struct rx_connection *UV_Bind();
-extern int UV_SetSecurity();
-extern int UV_SetVolumeInfo();
-extern int vsu_SetCrypt();
-extern VL_SetLock();
-extern VL_ReleaseLock();
-extern VL_DeleteEntry();
-extern VL_ListEntry();
-extern VL_GetAddrs();
-extern VL_GetAddrsU();
-extern VL_ChangeAddr();
-
-extern int vsu_ExtractName();
-extern PrintError();
-extern void EnumerateEntry();
-extern void SubEnumerateEntry();
-
static struct tqHead busyHead, notokHead;
#include <volser_prototypes.h>
-afs_int32 VolumeExists(), CheckVldbRWBK(), CheckVldb();
-
struct ubik_client *cstruct;
int verbose = 0;
-extern int VL_GetNewVolumeId();
-extern int VL_SetLock();
-extern int VL_ReleaseLock();
-extern int VL_DeleteEntry();
-
-void MapNetworkToHost();
-void MapHostToNetwork();
struct release {
afs_int32 time;
struct ubik_client *cstruct;
static rxkad_level vsu_rxkad_level = rxkad_clear;
-extern int VL_CreateEntry(), VL_CreateEntryN();
-extern int VL_GetEntryByID(), VL_GetEntryByIDN();
-extern int VL_GetEntryByNameO(), VL_GetEntryByNameN();
-extern int VL_ReplaceEntry(), VL_ReplaceEntryN();
-extern int VL_ListAttributes(), VL_ListAttributesN(), VL_ListAttributesN2();
static void
ovlentry_to_nvlentry(oentryp, nentryp)
#define GETADDRUCACHESIZE 64
struct cacheips cacheips[GETADDRUCACHESIZE];
int cacheip_index = 0;
-extern int VL_GetAddrsU();
+
VLDB_IsSameAddrs(serv1, serv2, errorp)
afs_int32 serv1, serv2, *errorp;
{
/*extract the name of volume <name> without readonly or backup suffixes
* and return the result as <rname>.
*/
+int
vsu_ExtractName(rname, name)
char rname[], name[];
{