]> jfr.im git - irc/quakenet/newserv.git/blobdiff - authext/authext.h
GLINES: fix null pointer deref in trustgline / trustungline
[irc/quakenet/newserv.git] / authext / authext.h
index ddc09c4f8d789d3be41036bcb204545d7919d187..81e58616cf749c6d74865cc03c773d56ed6c0593 100644 (file)
@@ -1,6 +1,11 @@
 #ifndef __AUTHEXT_H
 #define __AUTHEXT_H
 
+#include "../irc/irc_config.h"
+#include "../lib/flags.h"
+
+#include <sys/types.h>
+
 #define MAXAUTHNAMEEXTS 5
 
 struct nick;
@@ -10,7 +15,10 @@ typedef struct authname {
   int usercount;
   unsigned int marker;
   struct nick *nicks;
-  struct authname *next;
+  struct authname *next, *nextbyname;
+  unsigned int namebucket;
+  u_int64_t flags;
+  char name[ACCOUNTLEN+1];
   /* These are extensions only used by other modules */
   void *exts[MAXAUTHNAMEEXTS];
 } authname;
@@ -20,20 +28,23 @@ typedef struct authname {
 extern authname *authnametable[AUTHNAMEHASHSIZE];
 
 /* Allocators */
-authname *newauthname();
+authname *newauthname(void);
 void freeauthname (authname *hp);
 
 /* EXT management */
-int registerauthnameext(const char *name);
+int registerauthnameext(const char *name, int persistant);
 int findauthnameext(const char *name);
 void releaseauthnameext(int index);
 
 /* Actual user commands */
 authname *findauthname(unsigned long userid);
-authname *findorcreateauthname(unsigned long userid);
+authname *findauthnamebyname(const char *name);
+authname *findorcreateauthname(unsigned long userid, const char *name);
 void releaseauthname(authname *anp);
 
 /* Marker */
-unsigned int nextauthnamemarker();
+unsigned int nextauthnamemarker(void);
+
+authname *getauthbyname(const char *name);
 
 #endif