ptserver: Remove PR_REMEMBER_TIMES
[openafs.git] / src / ptserver / ptserver.h
index 4dc0387..09251b8 100644 (file)
@@ -1,17 +1,13 @@
 /*
  * Copyright 2000, International Business Machines Corporation and others.
  * All Rights Reserved.
- * 
+ *
  * This software has been released under the terms of the IBM Public
  * License.  For details, see the LICENSE file in the top-level source
  * directory or online at http://www.openafs.org/dl/license10.html
  */
 
-#if defined(UKERNEL)
-#include "afs/ptint.h"
-#else /* defined(UKERNEL) */
 #include "ptint.h"
-#endif /* defined(UKERNEL) */
 
 #define        PRSRV           73
 
 #define PRDBVERSION    0
 
 struct prheader {
-    afs_int32 version;                 /* database version number */
-    afs_int32 headerSize;                      /* bytes in header (almost version#) */
-    afs_int32 freePtr;                 /* first free entry in freelist */
-    afs_int32 eofPtr;                  /* first free byte in file */
-    afs_int32 maxGroup;                        /* most negative group id */
-    afs_int32 maxID;                   /* largest user id allocated */
-    afs_int32 maxForeign;                      /* largest foreign id allocated*/
-    afs_int32 maxInst;                 /* largest sub/super id allocated */
-    afs_int32 orphan;                  /* groups owned by deleted users */
-    afs_int32 usercount;                       /* num users in system */
-    afs_int32 groupcount;                      /* num groups in system */
-    afs_int32 foreigncount;                    /* num registered foreign users NYI*/
-    afs_int32 instcount;                       /* number of sub and super users NYI */
-    afs_int32 reserved[5];                     /* just in case */
-    afs_int32 nameHash[HASHSIZE];              /* hash table for names */
-    afs_int32 idHash[HASHSIZE];                /* hash table for ids */
+    afs_int32 version;         /* database version number */
+    afs_int32 headerSize;      /* bytes in header (almost version#) */
+    afs_int32 freePtr;         /* first free entry in freelist */
+    afs_int32 eofPtr;          /* first free byte in file */
+    afs_int32 maxGroup;                /* most negative group id */
+    afs_int32 maxID;           /* largest user id allocated */
+    afs_int32 maxForeign;      /* largest foreign id allocated */
+    afs_int32 maxInst;         /* largest sub/super id allocated */
+    afs_int32 orphan;          /* groups owned by deleted users */
+    afs_int32 usercount;       /* num users in system */
+    afs_int32 groupcount;      /* num groups in system */
+    afs_int32 foreigncount;    /* num registered foreign users NYI */
+    afs_int32 instcount;       /* number of sub and super users NYI */
+    afs_int32 reserved[5];     /* just in case */
+    afs_int32 nameHash[HASHSIZE];      /* hash table for names */
+    afs_int32 idHash[HASHSIZE];        /* hash table for ids */
 };
 
 extern struct prheader cheader;
@@ -61,18 +57,18 @@ extern struct prheader cheader;
             (char *)&(cheader.field)),                             \
            sizeof(afs_int32))
 
-#define        PRFREE          1               /* 1 if in free list */
-#define        PRGRP           2               /* 1 if a group entry */
-#define        PRCONT          4               /* 1 if an extension block */
-#define        PRCELL          8               /* 1 if cell entry */
-#define        PRFOREIGN       16              /* 1 if foreign user */
-#define        PRINST          32              /* 1 if sub/super instance */
+#define        PRFREE          1       /* 1 if in free list */
+#define        PRGRP           2       /* 1 if a group entry */
+#define        PRCONT          4       /* 1 if an extension block */
+#define        PRCELL          8       /* 1 if cell entry */
+#define        PRFOREIGN       16      /* 1 if foreign user */
+#define        PRINST          32      /* 1 if sub/super instance */
 
-#define PRTYPE         0x3f            /* type bits: only one should be set */
-#define PRUSER         0               /* all type bits 0 => user entry */
+#define PRTYPE         0x3f    /* type bits: only one should be set */
+#define PRUSER         0       /* all type bits 0 => user entry */
 
-#define PRACCESS       (1<<6)          /* access checking enabled */
-#define PRQUOTA                (1<<7)          /* group creation quota checking on */
+#define PRACCESS       (1<<6)  /* access checking enabled */
+#define PRQUOTA                (1<<7)  /* group creation quota checking on */
 
 /* define the access bits for entries, they are stored in the left half of the
  * entry's flags.  The SetFields interface takes them in the right half.  There
@@ -80,7 +76,7 @@ extern struct prheader cheader;
  * add, and remove operations.  For rights with two bits the values are defined
  * to be o=00, m=01, a=10, with 11 reserved.  As implemented, however, it is
  * o=00, m=01, a=1x. */
-#define PRIVATE_SHIFT    16            /* move privacy bits to left half of flags */
+#define PRIVATE_SHIFT    16    /* move privacy bits to left half of flags */
 #define PRP_STATUS_ANY (0x80 << PRIVATE_SHIFT)
 #define PRP_STATUS_MEM (0x40 << PRIVATE_SHIFT)
 #define PRP_OWNED_ANY  (0x20 << PRIVATE_SHIFT)
@@ -93,40 +89,62 @@ extern struct prheader cheader;
 #define PRP_GROUP_DEFAULT (PRP_STATUS_ANY | PRP_MEMBER_ANY)
 #define PRP_USER_DEFAULT (PRP_STATUS_ANY)
 
-#define PR_REMEMBER_TIMES 1
-
 struct prentry {
-    afs_int32 flags;                           /* random flags */
-    afs_int32 id;                              /* user or group id*/
-    afs_int32 cellid;                  /* A foreign users's repsenting group */
-    afs_int32 next;                            /* next block same entry (or freelist) */
-#ifdef PR_REMEMBER_TIMES
+    afs_int32 flags;           /* random flags */
+    afs_int32 id;              /* user or group id */
+    afs_int32 cellid;          /* A foreign users's repsenting group */
+    afs_int32 next;            /* next block same entry (or freelist) */
     afs_uint32 createTime, addTime, removeTime, changeTime;
     afs_int32 reserved[1];
-#else
-    afs_int32 reserved[5];
-#endif
-    afs_int32 entries[PRSIZE];         /* groups a user is a member of (or list of members */
-    afs_int32 nextID;                  /* id hash table next pointer */
-    afs_int32 nextName;                        /* name has table next ptr */
-    afs_int32 owner;                   /* id of owner of entry */
-    afs_int32 creator;                 /* may differ from owner */
-    afs_int32 ngroups;                 /* number of groups this user has created
-                                        * -- 0 for reg group entries
-                                        * -- number of foreign users if foreign group */
-    afs_int32 nusers;                  /* Users added to foreign group */
-    afs_int32 count;                           /* number of members/groups for this group/user */
-    afs_int32 instance;                        /* number of sub/super instances for this user NYI */
-    afs_int32 owned;                           /* chain of groups owned by this entry */
-    afs_int32 nextOwned;                       /* chain of groups for owner of this entry */
-    afs_int32 parent;                  /* ptr to super instance  NYI*/
-    afs_int32 sibling;                 /* ptr to sibling instance  NYI*/
-    afs_int32 child;                           /* ptr to first child  NYI*/
-    char name[PR_MAXNAMELEN];          /* user or group name */
+    afs_int32 entries[PRSIZE]; /* groups a user is a member of (or list of members */
+    afs_int32 nextID;          /* id hash table next pointer */
+    afs_int32 nextName;                /* name has table next ptr */
+    afs_int32 owner;           /* id of owner of entry */
+    afs_int32 creator;         /* may differ from owner */
+    afs_int32 ngroups;         /* number of groups this user has created
+                                * -- 0 for reg group entries
+                                * -- number of foreign users if foreign group */
+    afs_int32 nusers;          /* Users added to foreign group */
+    afs_int32 count;           /* number of members/groups for this group/user */
+    afs_int32 instance;                /* number of sub/super instances for this user NYI */
+    afs_int32 owned;           /* chain of groups owned by this entry */
+    afs_int32 nextOwned;       /* chain of groups for owner of this entry */
+    afs_int32 parent;          /* ptr to super instance  NYI */
+    afs_int32 sibling;         /* ptr to sibling instance  NYI */
+    afs_int32 child;           /* ptr to first child  NYI */
+    char name[PR_MAXNAMELEN];  /* user or group name */
+};
+
+#if defined(SUPERGROUPS)
+
+struct prentryg {
+    afs_int32 flags;           /* random flags */
+    afs_int32 id;              /* user or group id */
+    afs_int32 cellid;          /* reserved for cellID */
+    afs_int32 next;            /* next block same entry (or freelist) */
+    afs_uint32 createTime, addTime, removeTime, changeTime;
+    afs_int32 reserved[1];
+    afs_int32 entries[PRSIZE]; /* groups a user is a member of (or list of members */
+    afs_int32 nextID;          /* id hash table next pointer */
+    afs_int32 nextName;                /* name has table next ptr */
+    afs_int32 owner;           /* id of owner of entry */
+    afs_int32 creator;         /* may differ from owner */
+    afs_int32 ngroups;         /* number of groups this user has created - 0 for group entries */
+    afs_int32 nusers;          /* number of foreign user entries this user has created - 0 for group entries NYI */
+    afs_int32 count;           /* number of members/groups for this group/user */
+    afs_int32 countsg;         /* number of supergroups for this group */
+    afs_int32 owned;           /* chain of groups owned by this entry */
+    afs_int32 nextOwned;       /* chain of groups for owner of this entry */
+    afs_int32 nextsg;          /* next block same entry for supergroups */
+#define SGSIZE 2               /* number of supergroup entries */
+    afs_int32 supergroup[SGSIZE];      /* supergroups this group belongs to */
+    char name[PR_MAXNAMELEN];  /* user or group name */
 };
 
-struct contentry {                     /* continuation of entry */
-    afs_int32 flags;               
+#endif /* SUPERGROUPS */
+
+struct contentry {             /* continuation of entry */
+    afs_int32 flags;
     afs_int32 id;
     afs_int32 cellid;
     afs_int32 next;