windows-misc-20070619
[openafs.git] / src / WINNT / afsd / cm_cell.h
index ca0ae38..64eb03e 100644 (file)
 
 #include "cm_server.h"
 
+#define CELL_MAXNAMELEN                 256
+
+#define CM_CELL_MAGIC    ('C' | 'E' <<8 | 'L'<<16 | 'L'<<24)
+
 /* a cell structure */
-typedef struct cm_cell {
-       long cellID;                    /* cell ID */
-       struct cm_cell *nextp;          /* locked by cm_cellLock */
-        char *namep;                   /* cell name; never changes */
-        struct cm_serverRef *vlServersp;       /* locked by cm_serverLock */
-        osi_mutex_t mx;                        /* mutex locking fields (flags) */
-        long flags;                    /* locked by mx */
+typedef struct cm_cell {        
+    afs_uint32  magic;
+    afs_int32 cellID;                  /* cell ID */
+    struct cm_cell *nextp;             /* locked by cm_cellLock */
+    char name[CELL_MAXNAMELEN];         /* cell name; never changes */
+    cm_serverRef_t *vlServersp;         /* locked by cm_serverLock */
+    osi_mutex_t mx;                    /* mutex locking fields (flags) */
+    long flags;                                /* locked by mx */
+    time_t timeout;                     /* if dns, time at which the server addrs expire */
 } cm_cell_t;
 
-#define CM_CELLFLAG_SUID       1       /* setuid flag; not yet used */
+/* These are bit flag values */
+#define CM_CELLFLAG_SUID            1  /* setuid flag; not yet used */
+#define CM_CELLFLAG_DNS              2  /* cell servers are from DNS */
+#define CM_CELLFLAG_VLSERVER_INVALID 4  /* cell servers are invalid */
+#define CM_CELLFLAG_FREELANCE        8  /* local freelance fake cell */
+
+extern void cm_InitCell(int newFile, long maxCells);
 
-extern void cm_InitCell(void);
+extern long cm_ShutdownCell(void);
+
+extern long cm_ValidateCell(void);
 
 extern cm_cell_t *cm_GetCell(char *namep, long flags);
 
-extern cm_cell_t *cm_FindCellByID(long cellID);
+extern cm_cell_t *cm_GetCell_Gen(char *namep, char *newnamep, long flags);
+
+extern cm_cell_t *cm_FindCellByID(afs_int32 cellID);
 
 extern void cm_ChangeRankCellVLServer(cm_server_t       *tsp);
 
@@ -36,4 +52,6 @@ extern osi_rwlock_t cm_cellLock;
 
 extern cm_cell_t *cm_allCellsp;
 
+extern int cm_DumpCells(FILE *, char *, int);
+
 #endif /* __CELL_H_ENV_ */