Handle default oplevels.
[srvx.git] / src / proto.h
index 8355925758f74bdad0b26d79b46d6d0179abf4d2..16d546d716866ae1df3ea6a72fc4faa88d0995d1 100644 (file)
@@ -60,7 +60,7 @@ struct uplinkNode
     char               *host;
     int                        port;
 
-    struct sockaddr_in         *bind_addr;
+    struct sockaddr    *bind_addr;
     int                bind_addr_len;
 
     char               *password;
@@ -102,12 +102,12 @@ struct userNode *get_chanmsg_bot(unsigned char prefix);
 typedef void (*privmsg_func_t) (struct userNode *user, struct userNode *target, char *text, int server_qualified);
 void reg_privmsg_func(struct userNode *user, privmsg_func_t handler);
 void reg_notice_func(struct userNode *user, privmsg_func_t handler);
+void unreg_privmsg_func(struct userNode *user, privmsg_func_t handler);
+void unreg_notice_func(struct userNode *user, privmsg_func_t handler);
 
 typedef void (*oper_func_t) (struct userNode *user);
 void reg_oper_func(oper_func_t handler);
 
-extern struct userList dead_users;
-
 /* replay silliness */
 void replay_read_line(void);
 void replay_event_loop(void);
@@ -150,6 +150,7 @@ void irc_svsnick(struct userNode *from, struct userNode *target, const char *new
 /* account maintenance */
 void irc_account(struct userNode *user, const char *stamp);
 void irc_regnick(struct userNode *user);
+void irc_fakehost(struct userNode *user, const char *host);
 
 /* numeric messages */
 void irc_numeric(struct userNode *user, unsigned int num, const char *format, ...);
@@ -166,7 +167,7 @@ void irc_numeric(struct userNode *user, unsigned int num, const char *format, ..
 /* stuff originally from other headers that is really protocol-specific */
 int IsChannelName(const char *name);
 int is_valid_nick(const char *nick);
-struct userNode *AddService(const char *nick, const char *desc, const char *hostname);
+struct userNode *AddService(const char *nick, const char *modes, const char *desc, const char *hostname);
 struct userNode *AddClone(const char *nick, const char *ident, const char *hostname, const char *desc);
 struct server* AddServer(struct server* uplink, const char *name, int hops, time_t boot, time_t link, const char *numeric, const char *description);
 void DelServer(struct server* serv, int announce, const char *message);
@@ -191,17 +192,22 @@ struct mod_chanmode {
     unsigned int alloc_argc;
 #endif
     char new_key[KEYLEN + 1];
+    char new_upass[KEYLEN + 1];
+    char new_apass[KEYLEN + 1];
     struct {
         unsigned int mode;
         union {
             struct modeNode *member;
             const char *hostmask;
-        };
+        } u;
     } args[1];
 };
 #define MCP_ALLOW_OVB     0x0001 /* allow op, voice, ban manipulation */
 #define MCP_FROM_SERVER   0x0002 /* parse as from a server */
 #define MCP_KEY_FREE      0x0004 /* -k without a key argument */
+#define MCP_REGISTERED   0x0008 /* chan is already registered; do not allow changes to MODE_REGISTERED */
+#define MCP_UPASS_FREE    0x0010 /* -U without a key argument */
+#define MCP_APASS_FREE    0x0020 /* -A without a key argument */
 #define MC_ANNOUNCE       0x0100 /* send a mod_chanmode() change out */
 #define MC_NOTIFY         0x0200 /* make local callbacks to announce */
 #ifdef NDEBUG
@@ -212,7 +218,7 @@ struct mod_chanmode {
 
 struct mod_chanmode *mod_chanmode_alloc(unsigned int argc);
 struct mod_chanmode *mod_chanmode_dup(struct mod_chanmode *orig, unsigned int extra);
-struct mod_chanmode *mod_chanmode_parse(struct chanNode *channel, char **modes, unsigned int argc, unsigned int flags);
+struct mod_chanmode *mod_chanmode_parse(struct chanNode *channel, char **modes, unsigned int argc, unsigned int flags, short base_oplevel);
 void mod_chanmode_apply(struct userNode *who, struct chanNode *channel, struct mod_chanmode *change);
 void mod_chanmode_announce(struct userNode *who, struct chanNode *channel, struct mod_chanmode *change);
 char *mod_chanmode_format(struct mod_chanmode *desc, char *buffer);