From c15efe117367ada8d7e34e65849e2c3820ff7f42 Mon Sep 17 00:00:00 2001 From: MrIron Date: Fri, 17 Oct 2025 23:06:21 +0200 Subject: [PATCH 1/2] Network configuration feature will allow services to set network-wide options --- doc/example.conf | 1 + include/handlers.h | 1 + include/ircd_features.h | 5 +- include/ircd_netconf.h | 66 +++ include/msg.h | 4 + ircd/Makefile.in | 1189 ++++++++++++++++++++------------------- ircd/ircd_features.c | 5 +- ircd/ircd_netconf.c | 265 +++++++++ ircd/m_config.c | 94 ++++ ircd/parse.c | 7 + ircd/s_serv.c | 4 + ircd/s_stats.c | 6 +- ircd/test/Makefile.in | 6 +- 13 files changed, 1079 insertions(+), 574 deletions(-) create mode 100644 include/ircd_netconf.h create mode 100644 ircd/ircd_netconf.c create mode 100644 ircd/m_config.c diff --git a/doc/example.conf b/doc/example.conf index 7d881228..ac61e434 100644 --- a/doc/example.conf +++ b/doc/example.conf @@ -933,6 +933,7 @@ features # "HIS_TRACE" = "TRUE"; # "HIS_STATS_a" = "TRUE"; # "HIS_STATS_c" = "TRUE"; +# "HIS_STATS_C" = "TRUE"; # "HIS_STATS_d" = "TRUE"; # "HIS_STATS_e" = "TRUE"; # "HIS_STATS_f" = "TRUE"; diff --git a/include/handlers.h b/include/handlers.h index f8bc6073..d7eea755 100644 --- a/include/handlers.h +++ b/include/handlers.h @@ -89,6 +89,7 @@ struct Client; extern int m_admin(struct Client*, struct Client*, int, char*[]); extern int m_away(struct Client*, struct Client*, int, char*[]); extern int m_cap(struct Client*, struct Client*, int, char*[]); +extern int ms_config(struct Client*, struct Client*, int, char*[]); extern int m_cnotice(struct Client*, struct Client*, int, char*[]); extern int m_cprivmsg(struct Client*, struct Client*, int, char*[]); extern int m_gline(struct Client*, struct Client*, int, char*[]); diff --git a/include/ircd_features.h b/include/ircd_features.h index 10167947..3f6bc140 100644 --- a/include/ircd_features.h +++ b/include/ircd_features.h @@ -122,6 +122,7 @@ enum Feature { FEAT_HIS_TRACE, FEAT_HIS_STATS_a, FEAT_HIS_STATS_c, + FEAT_HIS_STATS_C, FEAT_HIS_STATS_d, FEAT_HIS_STATS_e, FEAT_HIS_STATS_f, @@ -132,13 +133,13 @@ enum Feature { FEAT_HIS_STATS_k, FEAT_HIS_STATS_l, FEAT_HIS_STATS_L, - FEAT_HIS_STATS_M, FEAT_HIS_STATS_m, + FEAT_HIS_STATS_M, FEAT_HIS_STATS_o, FEAT_HIS_STATS_p, FEAT_HIS_STATS_q, - FEAT_HIS_STATS_R, FEAT_HIS_STATS_r, + FEAT_HIS_STATS_R, FEAT_HIS_STATS_t, FEAT_HIS_STATS_T, FEAT_HIS_STATS_u, diff --git a/include/ircd_netconf.h b/include/ircd_netconf.h new file mode 100644 index 00000000..7ea59d3c --- /dev/null +++ b/include/ircd_netconf.h @@ -0,0 +1,66 @@ +/* + * IRC - Internet Relay Chat, include/ircd_netconf.h + * Copyright (C) 2025 MrIron + * + * See file AUTHORS in IRC package for additional names of + * the programmers. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 1, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef INCLUDED_ircd_netconf_h +#define INCLUDED_ircd_netconf_h + +#include + +struct Client; +struct StatDesc; + +/** Configuration set return values */ +#define CONFIG_REJECTED -1 /**< Rejected - older timestamp */ +#define CONFIG_CREATED 0 /**< New entry created */ +#define CONFIG_TIMESTAMP 1 /**< Timestamp updated, same value */ +#define CONFIG_CHANGED 2 /**< Value actually changed */ + +/** Configuration entry structure */ +struct ConfigEntry { + char *key; /**< Configuration option key */ + char *value; /**< Configuration option value */ + time_t timestamp; /**< Timestamp when this config was set */ + struct ConfigEntry *next; /**< Next configuration entry */ +}; + +/** Configuration change callback function type */ +typedef void (*config_callback_f)(const char *key, const char *old_value, const char *new_value); + +/** Configuration callback structure */ +struct ConfigCallback { + char *key_prefix; /**< Key prefix to match (e.g., "sasl.") */ + config_callback_f callback; /**< Callback function */ + struct ConfigCallback *next; /**< Next callback */ +}; + +/* + * Prototypes + */ + +extern int config_set(const char *key, const char *value, time_t timestamp); +extern const char *config_get(const char *key); +extern void config_register_callback(const char *key_prefix, config_callback_f callback); +extern void config_unregister_callback(const char *key_prefix); +extern void config_burst(struct Client *cptr); +extern void config_stats(struct Client *sptr, const struct StatDesc *sd, char *param); + +#endif /* INCLUDED_ircd_config_h */ \ No newline at end of file diff --git a/include/msg.h b/include/msg.h index 2fba1e79..c56c31a3 100644 --- a/include/msg.h +++ b/include/msg.h @@ -376,6 +376,10 @@ struct Client; #define TOK_CHGHOST "CHGHOST" #define CMD_CHGHOST MSG_CHGHOST, TOK_CHGHOST +#define MSG_CONFIG "CONFIG" +#define TOK_CONFIG "CF" +#define CMD_CONFIG MSG_CONFIG, TOK_CONFIG + /* * Constants */ diff --git a/ircd/Makefile.in b/ircd/Makefile.in index 432c66e2..fa45a4d0 100644 --- a/ircd/Makefile.in +++ b/ircd/Makefile.in @@ -102,6 +102,7 @@ IRCD_SRC = \ ircd_features.c \ ircd_lexer.c \ ircd_log.c \ + ircd_netconf.c \ ircd_relay.c \ ircd_reply.c \ ircd_res.c \ @@ -120,6 +121,7 @@ IRCD_SRC = \ m_cap.c \ m_clearmode.c \ m_close.c \ + m_config.c \ m_connect.c \ m_cprivmsg.c \ m_create.c \ @@ -354,85 +356,92 @@ IPcheck.o: IPcheck.c ../config.h ../include/IPcheck.h \ ../include/channel.h ../include/ircd_defs.h ../include/res.h \ ../include/client.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/capab.h \ - ../include/ircd.h ../include/struct.h ../include/match.h \ - ../include/msg.h ../include/ircd_alloc.h ../include/ircd_events.h \ - ../include/ircd_features.h ../include/ircd_log.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/res.h \ - ../include/s_debug.h ../include/s_user.h ../include/send.h + ../include/ircd_features.h ../include/ircd.h ../include/struct.h \ + ../include/match.h ../include/msg.h ../include/ircd_alloc.h \ + ../include/ircd_events.h ../include/ircd_features.h \ + ../include/ircd_log.h ../include/ircd_string.h ../include/ircd_chattr.h \ + ../include/res.h ../include/s_debug.h ../include/s_user.h \ + ../include/send.h channel.o: channel.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ - ../include/ircd_handler.h ../include/capab.h ../include/destruct_event.h \ - ../include/hash.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_alloc.h ../include/ircd_chattr.h ../include/ircd_defs.h \ - ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_snprintf.h ../include/ircd_string.h ../include/list.h \ - ../include/match.h ../include/msg.h ../include/msgq.h \ - ../include/numeric.h ../include/numnicks.h ../include/querycmds.h \ - ../include/ircd_features.h ../include/s_bsd.h ../include/s_conf.h \ - ../include/client.h ../include/s_debug.h ../include/s_misc.h \ - ../include/s_user.h ../include/send.h ../include/struct.h \ - ../include/sys.h ../include/whowas.h + ../include/ircd_handler.h ../include/capab.h ../include/ircd_features.h \ + ../include/destruct_event.h ../include/hash.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_alloc.h ../include/ircd_chattr.h \ + ../include/ircd_defs.h ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_snprintf.h \ + ../include/ircd_string.h ../include/list.h ../include/match.h \ + ../include/msg.h ../include/msgq.h ../include/numeric.h \ + ../include/numnicks.h ../include/querycmds.h ../include/s_bsd.h \ + ../include/s_conf.h ../include/client.h ../include/s_debug.h \ + ../include/s_misc.h ../include/s_user.h ../include/send.h \ + ../include/struct.h ../include/sys.h ../include/whowas.h class.o: class.c ../config.h ../include/class.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/client.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_alloc.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/list.h ../include/numeric.h \ - ../include/s_conf.h ../include/s_debug.h ../include/send.h + ../include/capab.h ../include/ircd_features.h ../include/client.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_alloc.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/list.h \ + ../include/numeric.h ../include/s_conf.h ../include/s_debug.h \ + ../include/send.h client.o: client.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/class.h ../include/client.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_features.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/list.h ../include/msgq.h \ - ../include/numeric.h ../include/s_conf.h ../include/s_debug.h \ - ../include/send.h ../include/struct.h + ../include/ircd_features.h ../include/class.h ../include/client.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/list.h \ + ../include/msgq.h ../include/numeric.h ../include/s_conf.h \ + ../include/s_debug.h ../include/send.h ../include/struct.h crule.o: crule.c ../config.h ../include/crule.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_alloc.h ../include/ircd_chattr.h \ + ../include/capab.h ../include/ircd_features.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_alloc.h ../include/ircd_chattr.h \ ../include/ircd_string.h ../include/match.h ../include/s_bsd.h \ ../include/s_debug.h ../include/struct.h dbuf.o: dbuf.c ../config.h ../include/dbuf.h ../include/ircd_alloc.h \ ../include/ircd_chattr.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/send.h ../include/sys.h + ../include/ircd_log.h ../include/send.h ../include/client.h \ + ../include/ircd_defs.h ../include/msgq.h ../include/ircd_events.h \ + ../include/ircd_handler.h ../include/res.h ../include/capab.h \ + ../include/ircd_features.h ../include/sys.h destruct_event.o: destruct_event.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/s_debug.h \ ../include/ircd_alloc.h ../include/ircd.h ../include/struct.h \ ../include/ircd_events.h ../include/ircd_log.h ../include/send.h \ - ../include/msg.h ../include/ircd_handler.h + ../include/client.h ../include/dbuf.h ../include/msgq.h \ + ../include/ircd_handler.h ../include/capab.h ../include/ircd_features.h \ + ../include/msg.h fileio.o: fileio.c ../config.h ../include/fileio.h \ ../include/ircd_alloc.h ../include/ircd_log.h gline.o: gline.c ../config.h ../include/gline.h ../include/res.h \ ../include/channel.h ../include/ircd_defs.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ - ../include/ircd_handler.h ../include/capab.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_alloc.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_snprintf.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/match.h \ - ../include/numeric.h ../include/s_bsd.h ../include/s_debug.h \ - ../include/s_misc.h ../include/s_stats.h ../include/send.h \ - ../include/struct.h ../include/sys.h ../include/msg.h \ - ../include/numnicks.h + ../include/ircd_handler.h ../include/capab.h ../include/ircd_features.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_alloc.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_snprintf.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/match.h ../include/numeric.h \ + ../include/s_bsd.h ../include/s_debug.h ../include/s_misc.h \ + ../include/s_stats.h ../include/send.h ../include/struct.h \ + ../include/sys.h ../include/msg.h ../include/numnicks.h hash.o: hash.c ../config.h ../include/hash.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/channel.h ../include/ircd_alloc.h \ - ../include/ircd_chattr.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd.h ../include/struct.h \ - ../include/match.h ../include/msg.h ../include/numeric.h \ - ../include/random.h ../include/send.h ../include/struct.h \ - ../include/sys.h + ../include/capab.h ../include/ircd_features.h ../include/channel.h \ + ../include/ircd_alloc.h ../include/ircd_chattr.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_string.h ../include/ircd.h \ + ../include/struct.h ../include/match.h ../include/msg.h \ + ../include/numeric.h ../include/random.h ../include/send.h \ + ../include/struct.h ../include/sys.h ircd.o: ircd.c ../config.h ../include/ircd.h ../include/struct.h \ ../include/ircd_defs.h ../include/IPcheck.h ../include/class.h \ ../include/client.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/client.h ../include/crule.h \ - ../include/destruct_event.h ../include/channel.h ../include/hash.h \ - ../include/ircd_alloc.h ../include/ircd_events.h \ + ../include/capab.h ../include/ircd_features.h ../include/client.h \ + ../include/crule.h ../include/destruct_event.h ../include/channel.h \ + ../include/hash.h ../include/ircd_alloc.h ../include/ircd_events.h \ ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ ../include/ircd_signal.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/ircd_crypt.h ../include/jupe.h \ @@ -459,34 +468,44 @@ ircd_features.o: ircd_features.c ../config.h ../include/ircd_features.h \ ../include/channel.h ../include/ircd_defs.h ../include/res.h \ ../include/class.h ../include/client.h ../include/dbuf.h \ ../include/msgq.h ../include/ircd_events.h ../include/ircd_handler.h \ - ../include/capab.h ../include/client.h ../include/hash.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_alloc.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/match.h ../include/motd.h \ - ../include/msg.h ../include/numeric.h ../include/numnicks.h \ - ../include/random.h ../include/s_bsd.h ../include/s_debug.h \ - ../include/s_misc.h ../include/s_stats.h ../include/send.h \ - ../include/struct.h ../include/sys.h ../include/whowas.h + ../include/capab.h ../include/ircd_features.h ../include/client.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_alloc.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/match.h \ + ../include/motd.h ../include/msg.h ../include/numeric.h \ + ../include/numnicks.h ../include/random.h ../include/s_bsd.h \ + ../include/s_debug.h ../include/s_misc.h ../include/s_stats.h \ + ../include/send.h ../include/struct.h ../include/sys.h \ + ../include/whowas.h ircd_lexer.o: ircd_lexer.c ../config.h ../include/ircd.h \ ../include/struct.h ../include/ircd_defs.h ../include/ircd_alloc.h \ ../include/ircd_log.h ../include/ircd_string.h ../include/ircd_chattr.h \ ../include/s_conf.h ../include/client.h ../include/dbuf.h \ ../include/msgq.h ../include/ircd_events.h ../include/ircd_handler.h \ - ../include/res.h ../include/capab.h y.tab.h + ../include/res.h ../include/capab.h ../include/ircd_features.h y.tab.h ircd_log.o: ircd_log.c ../config.h ../include/ircd_log.h \ ../include/client.h ../include/ircd_defs.h ../include/dbuf.h \ ../include/msgq.h ../include/ircd_events.h ../include/ircd_handler.h \ - ../include/res.h ../include/capab.h ../include/ircd_alloc.h \ - ../include/ircd_reply.h ../include/ircd_snprintf.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/ircd.h \ - ../include/struct.h ../include/numeric.h ../include/s_debug.h \ - ../include/send.h ../include/struct.h + ../include/res.h ../include/capab.h ../include/ircd_features.h \ + ../include/ircd_alloc.h ../include/ircd_reply.h \ + ../include/ircd_snprintf.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/ircd.h ../include/struct.h \ + ../include/numeric.h ../include/s_debug.h ../include/send.h \ + ../include/struct.h +ircd_netconf.o: ircd_netconf.c ../config.h ../include/client.h \ + ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ + ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ + ../include/capab.h ../include/ircd_features.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_alloc.h ../include/ircd_netconf.h \ + ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ + ../include/numnicks.h ../include/s_debug.h ../include/send.h ircd_relay.o: ircd_relay.c ../config.h ../include/ircd_relay.h \ ../include/channel.h ../include/ircd_defs.h ../include/res.h \ ../include/client.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/capab.h \ - ../include/hash.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_chattr.h ../include/ircd_features.h \ + ../include/ircd_features.h ../include/hash.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_chattr.h ../include/ircd_features.h \ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/match.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_debug.h ../include/s_misc.h \ @@ -494,21 +513,21 @@ ircd_relay.o: ircd_relay.c ../config.h ../include/ircd_relay.h \ ircd_reply.o: ircd_reply.c ../config.h ../include/ircd_reply.h \ ../include/client.h ../include/ircd_defs.h ../include/dbuf.h \ ../include/msgq.h ../include/ircd_events.h ../include/ircd_handler.h \ - ../include/res.h ../include/capab.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_log.h ../include/ircd_snprintf.h \ - ../include/msg.h ../include/msgq.h ../include/numeric.h \ - ../include/s_conf.h ../include/client.h ../include/s_debug.h \ - ../include/send.h + ../include/res.h ../include/capab.h ../include/ircd_features.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ + ../include/ircd_snprintf.h ../include/msg.h ../include/msgq.h \ + ../include/numeric.h ../include/s_conf.h ../include/client.h \ + ../include/s_debug.h ../include/send.h ircd_res.o: ircd_res.c ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h ../config.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/ircd_alloc.h ../include/ircd_log.h ../include/ircd_osdep.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_features.h ../include/ircd_alloc.h ../include/ircd_log.h \ + ../include/ircd_osdep.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/ircd_snprintf.h ../include/ircd.h \ ../include/struct.h ../include/numeric.h ../include/fileio.h \ ../include/random.h ../include/s_bsd.h ../include/s_debug.h \ - ../include/s_stats.h ../include/ircd_features.h ../include/send.h \ - ../include/sys.h ../include/res.h ../include/ircd_reslib.h + ../include/s_stats.h ../include/send.h ../include/sys.h ../include/res.h \ + ../include/ircd_reslib.h ircd_reslib.o: ircd_reslib.c ../include/ircd.h ../include/struct.h \ ../include/ircd_defs.h ../include/res.h ../config.h \ ../include/ircd_reslib.h ../include/ircd_defs.h ../include/fileio.h \ @@ -518,31 +537,31 @@ ircd_signal.o: ircd_signal.c ../config.h ../include/ircd.h \ ../include/ircd_events.h ../include/ircd_log.h ../include/ircd_signal.h \ ../include/s_conf.h ../include/client.h ../include/dbuf.h \ ../include/msgq.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h + ../include/capab.h ../include/ircd_features.h ircd_snprintf.o: ircd_snprintf.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/channel.h ../include/ircd_log.h \ - ../include/ircd_snprintf.h ../include/struct.h + ../include/capab.h ../include/ircd_features.h ../include/channel.h \ + ../include/ircd_log.h ../include/ircd_snprintf.h ../include/struct.h ircd_string.o: ircd_string.c ../config.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/ircd_defs.h ../include/ircd_chattr.h \ ../include/ircd_log.h ../include/res.h chattr.tab.c jupe.o: jupe.c ../config.h ../include/jupe.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_alloc.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/match.h ../include/msg.h \ - ../include/numeric.h ../include/numnicks.h ../include/s_bsd.h \ - ../include/s_misc.h ../include/send.h ../include/struct.h \ - ../include/sys.h + ../include/capab.h ../include/ircd_features.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_alloc.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/match.h \ + ../include/msg.h ../include/numeric.h ../include/numnicks.h \ + ../include/s_bsd.h ../include/s_misc.h ../include/send.h \ + ../include/struct.h ../include/sys.h list.o: list.c ../config.h ../include/list.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_alloc.h ../include/ircd_events.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/capab.h ../include/ircd_features.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_alloc.h ../include/ircd_events.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/listener.h ../include/match.h \ ../include/numeric.h ../include/res.h ../include/s_auth.h \ ../include/s_bsd.h ../include/s_conf.h ../include/client.h \ @@ -551,177 +570,193 @@ list.o: list.c ../config.h ../include/list.h ../include/client.h \ listener.o: listener.c ../config.h ../include/listener.h \ ../include/ircd_defs.h ../include/ircd_events.h ../include/res.h \ ../include/client.h ../include/dbuf.h ../include/msgq.h \ - ../include/ircd_handler.h ../include/capab.h ../include/client.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_alloc.h \ - ../include/ircd_events.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_osdep.h ../include/ircd_reply.h \ - ../include/ircd_snprintf.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/match.h ../include/numeric.h \ - ../include/s_bsd.h ../include/s_conf.h ../include/s_misc.h \ - ../include/s_stats.h ../include/send.h ../include/sys.h + ../include/ircd_handler.h ../include/capab.h ../include/ircd_features.h \ + ../include/client.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_alloc.h ../include/ircd_events.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_osdep.h \ + ../include/ircd_reply.h ../include/ircd_snprintf.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/match.h \ + ../include/numeric.h ../include/s_bsd.h ../include/s_conf.h \ + ../include/s_misc.h ../include/s_stats.h ../include/send.h \ + ../include/sys.h m_account.o: m_account.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/msg.h ../include/numnicks.h \ - ../include/s_debug.h ../include/s_user.h ../include/send.h + ../include/capab.h ../include/ircd_features.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ + ../include/numnicks.h ../include/s_debug.h ../include/s_user.h \ + ../include/send.h m_admin.o: m_admin.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_features.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/match.h ../include/msg.h \ - ../include/numeric.h ../include/numnicks.h ../include/s_conf.h \ - ../include/client.h ../include/s_user.h + ../include/capab.h ../include/ircd_features.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/match.h \ + ../include/msg.h ../include/numeric.h ../include/numnicks.h \ + ../include/s_conf.h ../include/client.h ../include/s_user.h m_asll.o: m_asll.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/hash.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/numeric.h ../include/numnicks.h \ - ../include/match.h ../include/msg.h ../include/send.h ../include/s_bsd.h \ - ../include/s_user.h + ../include/ircd_features.h ../include/hash.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/numeric.h \ + ../include/numnicks.h ../include/match.h ../include/msg.h \ + ../include/send.h ../include/s_bsd.h ../include/s_user.h m_away.o: m_away.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_alloc.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/s_user.h ../include/send.h + ../include/ircd_features.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_alloc.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ + ../include/numeric.h ../include/numnicks.h ../include/s_user.h \ + ../include/send.h m_burst.o: m_burst.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ - ../include/ircd_handler.h ../include/capab.h ../include/hash.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_alloc.h \ - ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/list.h \ - ../include/match.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/s_conf.h ../include/client.h \ - ../include/s_misc.h ../include/send.h ../include/struct.h \ - ../include/ircd_snprintf.h + ../include/ircd_handler.h ../include/capab.h ../include/ircd_features.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_alloc.h ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/list.h ../include/match.h \ + ../include/msg.h ../include/numeric.h ../include/numnicks.h \ + ../include/s_conf.h ../include/client.h ../include/s_misc.h \ + ../include/send.h ../include/struct.h ../include/ircd_snprintf.h m_cap.o: m_cap.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_chattr.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_snprintf.h \ - ../include/ircd_string.h ../include/msg.h ../include/numeric.h \ - ../include/send.h ../include/s_auth.h ../include/s_user.h + ../include/ircd_features.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_chattr.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_snprintf.h ../include/ircd_string.h ../include/msg.h \ + ../include/numeric.h ../include/send.h ../include/s_auth.h \ + ../include/s_user.h m_clearmode.o: m_clearmode.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/channel.h ../include/hash.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_alloc.h \ - ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/list.h \ - ../include/msg.h ../include/numeric.h ../include/numnicks.h \ - ../include/s_conf.h ../include/client.h ../include/send.h + ../include/capab.h ../include/ircd_features.h ../include/channel.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_alloc.h ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/list.h ../include/msg.h \ + ../include/numeric.h ../include/numnicks.h ../include/s_conf.h \ + ../include/client.h ../include/send.h m_close.o: m_close.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/numeric.h \ - ../include/s_bsd.h ../include/send.h + ../include/capab.h ../include/ircd_features.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/numeric.h ../include/s_bsd.h ../include/send.h +m_config.o: m_config.c ../config.h ../include/client.h \ + ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ + ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ + ../include/capab.h ../include/ircd_features.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_netconf.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ + ../include/numeric.h ../include/numnicks.h ../include/send.h \ + ../include/s_debug.h m_connect.o: m_connect.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/crule.h ../include/hash.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/jupe.h ../include/match.h \ - ../include/msg.h ../include/numeric.h ../include/numnicks.h \ - ../include/s_bsd.h ../include/s_conf.h ../include/client.h \ - ../include/s_user.h ../include/send.h + ../include/capab.h ../include/ircd_features.h ../include/crule.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/jupe.h \ + ../include/match.h ../include/msg.h ../include/numeric.h \ + ../include/numnicks.h ../include/s_bsd.h ../include/s_conf.h \ + ../include/client.h ../include/s_user.h ../include/send.h m_cprivmsg.o: m_cprivmsg.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/s_user.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_features.h + ../include/capab.h ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/s_user.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_features.h m_create.o: m_create.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ - ../include/ircd_handler.h ../include/capab.h ../include/hash.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_handler.h ../include/capab.h ../include/ircd_features.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_debug.h ../include/s_misc.h \ ../include/s_user.h ../include/send.h m_defaults.o: m_defaults.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/numeric.h \ - ../include/numnicks.h ../include/send.h ../include/supported.h \ - ../include/channel.h ../include/version.h + ../include/capab.h ../include/ircd_features.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/numeric.h ../include/numnicks.h ../include/send.h \ + ../include/supported.h ../include/channel.h ../include/version.h m_destruct.o: m_destruct.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ - ../include/numeric.h ../include/numnicks.h ../include/send.h \ - ../include/channel.h ../include/destruct_event.h + ../include/capab.h ../include/ircd_features.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ + ../include/numnicks.h ../include/send.h ../include/channel.h \ + ../include/destruct_event.h m_desynch.o: m_desynch.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ - ../include/numeric.h ../include/numnicks.h ../include/s_bsd.h \ - ../include/send.h + ../include/capab.h ../include/ircd_features.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ + ../include/numnicks.h ../include/s_bsd.h ../include/send.h m_die.o: m_die.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_features.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_bsd.h ../include/send.h m_endburst.o: m_endburst.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ - ../include/ircd_handler.h ../include/capab.h ../include/hash.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_handler.h ../include/capab.h ../include/ircd_features.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/send.h m_error.o: m_error.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_alloc.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/capab.h ../include/ircd_features.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_alloc.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/numeric.h ../include/numnicks.h \ ../include/s_debug.h ../include/s_misc.h ../include/send.h m_get.o: m_get.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/hash.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/numeric.h \ - ../include/numnicks.h ../include/send.h + ../include/ircd_features.h ../include/hash.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/numeric.h ../include/numnicks.h \ + ../include/send.h m_gline.o: m_gline.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/gline.h ../include/hash.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/match.h ../include/msg.h \ - ../include/numeric.h ../include/numnicks.h ../include/s_conf.h \ - ../include/client.h ../include/s_debug.h ../include/s_misc.h \ - ../include/send.h + ../include/capab.h ../include/ircd_features.h ../include/gline.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/match.h \ + ../include/msg.h ../include/numeric.h ../include/numnicks.h \ + ../include/s_conf.h ../include/client.h ../include/s_debug.h \ + ../include/s_misc.h ../include/send.h m_help.o: m_help.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/hash.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/send.h + ../include/ircd_features.h ../include/hash.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ + ../include/numeric.h ../include/numnicks.h ../include/send.h m_info.o: m_info.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_features.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_misc.h ../include/s_user.h \ ../include/s_conf.h ../include/client.h ../include/send.h \ @@ -729,25 +764,25 @@ m_info.o: m_info.c ../config.h ../include/client.h ../include/ircd_defs.h \ m_invite.o: m_invite.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ - ../include/ircd_handler.h ../include/capab.h ../include/hash.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/list.h ../include/msg.h \ - ../include/numeric.h ../include/numnicks.h ../include/s_user.h \ - ../include/send.h ../include/struct.h + ../include/ircd_handler.h ../include/capab.h ../include/ircd_features.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/list.h \ + ../include/msg.h ../include/numeric.h ../include/numnicks.h \ + ../include/s_user.h ../include/send.h ../include/struct.h m_ison.o: m_ison.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/hash.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/msgq.h ../include/numeric.h \ - ../include/send.h + ../include/ircd_features.h ../include/hash.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/msgq.h \ + ../include/numeric.h ../include/send.h m_join.o: m_join.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ - ../include/ircd_handler.h ../include/capab.h ../include/gline.h \ - ../include/hash.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_chattr.h ../include/ircd_features.h \ + ../include/ircd_handler.h ../include/capab.h ../include/ircd_features.h \ + ../include/gline.h ../include/hash.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_chattr.h ../include/ircd_features.h \ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/msg.h ../include/numeric.h ../include/numnicks.h \ ../include/s_debug.h ../include/s_user.h ../include/send.h \ @@ -755,351 +790,362 @@ m_join.o: m_join.c ../config.h ../include/channel.h \ m_jupe.o: m_jupe.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/jupe.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_features.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_features.h ../include/jupe.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/match.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_conf.h \ ../include/client.h ../include/s_misc.h ../include/send.h m_kick.o: m_kick.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ - ../include/ircd_handler.h ../include/capab.h ../include/hash.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_handler.h ../include/capab.h ../include/ircd_features.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/send.h ../include/ircd_features.h m_kill.o: m_kill.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/hash.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_snprintf.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/s_misc.h ../include/send.h \ - ../include/whowas.h + ../include/ircd_features.h ../include/hash.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_snprintf.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ + ../include/numeric.h ../include/numnicks.h ../include/s_misc.h \ + ../include/send.h ../include/whowas.h m_links.o: m_links.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_defs.h ../include/ircd_features.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/capab.h ../include/ircd_features.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_defs.h ../include/ircd_features.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/match.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_user.h \ ../include/send.h ../include/struct.h m_list.o: m_list.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ - ../include/ircd_handler.h ../include/capab.h ../include/hash.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_alloc.h \ - ../include/ircd_chattr.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/msg.h ../include/numeric.h ../include/numnicks.h \ - ../include/s_bsd.h ../include/send.h + ../include/ircd_handler.h ../include/capab.h ../include/ircd_features.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_alloc.h ../include/ircd_chattr.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/msg.h ../include/numeric.h \ + ../include/numnicks.h ../include/s_bsd.h ../include/send.h m_lusers.o: m_lusers.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ - ../include/numeric.h ../include/numnicks.h ../include/querycmds.h \ - ../include/ircd_features.h ../include/s_user.h ../include/s_serv.h \ - ../include/send.h + ../include/capab.h ../include/ircd_features.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ + ../include/numnicks.h ../include/querycmds.h ../include/s_user.h \ + ../include/s_serv.h ../include/send.h m_map.o: m_map.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_defs.h \ - ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_snprintf.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/list.h ../include/match.h \ - ../include/msg.h ../include/numeric.h ../include/s_user.h \ - ../include/s_serv.h ../include/send.h ../include/querycmds.h \ - ../include/ircd_features.h + ../include/ircd_features.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_defs.h ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_snprintf.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/list.h \ + ../include/match.h ../include/msg.h ../include/numeric.h \ + ../include/s_user.h ../include/s_serv.h ../include/send.h \ + ../include/querycmds.h m_mode.o: m_mode.c ../config.h ../include/handlers.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ - ../include/ircd_handler.h ../include/capab.h ../include/hash.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/s_conf.h ../include/client.h \ - ../include/s_debug.h ../include/s_user.h ../include/send.h + ../include/ircd_handler.h ../include/capab.h ../include/ircd_features.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ + ../include/numeric.h ../include/numnicks.h ../include/s_conf.h \ + ../include/client.h ../include/s_debug.h ../include/s_user.h \ + ../include/send.h m_motd.o: m_motd.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/match.h ../include/motd.h \ - ../include/msg.h ../include/numeric.h ../include/numnicks.h \ - ../include/s_conf.h ../include/client.h ../include/class.h \ - ../include/s_user.h ../include/send.h + ../include/ircd_features.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/match.h \ + ../include/motd.h ../include/msg.h ../include/numeric.h \ + ../include/numnicks.h ../include/s_conf.h ../include/client.h \ + ../include/class.h ../include/s_user.h ../include/send.h m_names.o: m_names.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ - ../include/ircd_handler.h ../include/capab.h ../include/hash.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_handler.h ../include/capab.h ../include/ircd_features.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_user.h ../include/send.h m_nick.o: m_nick.c ../config.h ../include/IPcheck.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_chattr.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/msg.h ../include/numeric.h ../include/numnicks.h \ - ../include/s_debug.h ../include/s_misc.h ../include/s_user.h \ - ../include/send.h ../include/sys.h + ../include/capab.h ../include/ircd_features.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_chattr.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/msg.h ../include/numeric.h \ + ../include/numnicks.h ../include/s_debug.h ../include/s_misc.h \ + ../include/s_user.h ../include/send.h ../include/sys.h m_notice.o: m_notice.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/handlers.h ../include/ircd_chattr.h \ - ../include/ircd_log.h ../include/ircd_relay.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/match.h ../include/msg.h \ - ../include/numeric.h ../include/send.h + ../include/capab.h ../include/ircd_features.h ../include/handlers.h \ + ../include/ircd_chattr.h ../include/ircd_log.h ../include/ircd_relay.h \ + ../include/ircd_reply.h ../include/ircd_string.h ../include/match.h \ + ../include/msg.h ../include/numeric.h ../include/send.h m_oper.o: m_oper.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/hash.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_alloc.h ../include/ircd_features.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_features.h ../include/hash.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_alloc.h ../include/ircd_features.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/ircd_crypt.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/querycmds.h \ - ../include/ircd_features.h ../include/s_conf.h ../include/client.h \ - ../include/s_debug.h ../include/s_user.h ../include/s_misc.h \ - ../include/send.h + ../include/s_conf.h ../include/client.h ../include/s_debug.h \ + ../include/s_user.h ../include/s_misc.h ../include/send.h m_opmode.o: m_opmode.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/channel.h ../include/hash.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/querycmds.h ../include/ircd_features.h \ + ../include/capab.h ../include/ircd_features.h ../include/channel.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ + ../include/numeric.h ../include/numnicks.h ../include/querycmds.h \ ../include/send.h ../include/s_conf.h ../include/client.h \ ../include/s_user.h m_part.o: m_part.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ - ../include/ircd_handler.h ../include/capab.h ../include/hash.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_handler.h ../include/capab.h ../include/ircd_features.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/numeric.h ../include/numnicks.h \ - ../include/send.h + ../include/send.h ../include/s_user.h m_pass.o: m_pass.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/s_auth.h ../include/send.h + ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/s_auth.h \ + ../include/send.h m_ping.o: m_ping.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/hash.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/ircd.h \ - ../include/struct.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/opercmds.h ../include/s_debug.h \ - ../include/send.h + ../include/ircd_features.h ../include/hash.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/ircd.h ../include/struct.h \ + ../include/msg.h ../include/numeric.h ../include/numnicks.h \ + ../include/opercmds.h ../include/s_debug.h ../include/send.h m_pong.o: m_pong.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/hash.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/opercmds.h ../include/s_auth.h \ - ../include/s_user.h ../include/send.h + ../include/ircd_features.h ../include/hash.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ + ../include/numeric.h ../include/numnicks.h ../include/opercmds.h \ + ../include/s_auth.h ../include/s_user.h ../include/send.h m_privmsg.o: m_privmsg.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_chattr.h ../include/ircd_features.h \ + ../include/capab.h ../include/ircd_features.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_chattr.h ../include/ircd_features.h \ ../include/ircd_log.h ../include/ircd_relay.h ../include/ircd_reply.h \ ../include/ircd_string.h ../include/match.h ../include/msg.h \ ../include/numeric.h ../include/send.h m_privs.o: m_privs.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ - ../include/numeric.h ../include/numnicks.h ../include/send.h + ../include/capab.h ../include/ircd_features.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ + ../include/numnicks.h ../include/send.h m_proto.o: m_proto.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_alloc.h ../include/ircd_chattr.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h ../include/msg.h \ - ../include/numeric.h ../include/numnicks.h ../include/s_debug.h \ - ../include/s_misc.h ../include/send.h ../include/supported.h \ - ../include/channel.h ../include/version.h + ../include/capab.h ../include/ircd_features.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_alloc.h ../include/ircd_chattr.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/msg.h ../include/numeric.h ../include/numnicks.h \ + ../include/s_debug.h ../include/s_misc.h ../include/send.h \ + ../include/supported.h ../include/channel.h ../include/version.h m_pseudo.o: m_pseudo.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_features.h ../include/ircd_log.h \ - ../include/ircd_relay.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/ircd_snprintf.h ../include/msg.h \ - ../include/numeric.h ../include/numnicks.h ../include/s_conf.h \ - ../include/client.h ../include/s_user.h + ../include/capab.h ../include/ircd_features.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ + ../include/ircd_log.h ../include/ircd_relay.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h \ + ../include/ircd_snprintf.h ../include/msg.h ../include/numeric.h \ + ../include/numnicks.h ../include/s_conf.h ../include/client.h \ + ../include/s_user.h m_quit.o: m_quit.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ - ../include/ircd_handler.h ../include/capab.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_log.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/struct.h ../include/s_misc.h \ - ../include/ircd_reply.h + ../include/ircd_handler.h ../include/capab.h ../include/ircd_features.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/struct.h \ + ../include/s_misc.h ../include/s_user.h ../include/ircd_reply.h m_rehash.o: m_rehash.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/motd.h ../include/numeric.h \ - ../include/s_conf.h ../include/client.h ../include/send.h + ../include/capab.h ../include/ircd_features.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/motd.h \ + ../include/numeric.h ../include/s_conf.h ../include/client.h \ + ../include/send.h m_reset.o: m_reset.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_features.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/capab.h ../include/ircd_features.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/numeric.h ../include/numnicks.h \ ../include/send.h m_restart.o: m_restart.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/numeric.h ../include/numnicks.h \ - ../include/send.h + ../include/capab.h ../include/ircd_features.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/numeric.h \ + ../include/numnicks.h ../include/send.h m_rping.o: m_rping.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ - ../include/numeric.h ../include/numnicks.h ../include/opercmds.h \ - ../include/s_user.h ../include/send.h + ../include/capab.h ../include/ircd_features.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ + ../include/numnicks.h ../include/opercmds.h ../include/s_user.h \ + ../include/send.h m_rpong.o: m_rpong.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ - ../include/numeric.h ../include/numnicks.h ../include/opercmds.h \ - ../include/send.h + ../include/capab.h ../include/ircd_features.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ + ../include/numnicks.h ../include/opercmds.h ../include/send.h m_server.o: m_server.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_log.h ../include/ircd_features.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/jupe.h ../include/list.h \ - ../include/match.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/querycmds.h ../include/ircd_features.h \ + ../include/capab.h ../include/ircd_features.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ + ../include/ircd_features.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/jupe.h \ + ../include/list.h ../include/match.h ../include/msg.h \ + ../include/numeric.h ../include/numnicks.h ../include/querycmds.h \ ../include/s_bsd.h ../include/s_conf.h ../include/client.h \ ../include/s_debug.h ../include/s_misc.h ../include/s_serv.h \ ../include/send.h ../include/userload.h m_set.o: m_set.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/hash.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/numeric.h \ - ../include/numnicks.h ../include/send.h + ../include/ircd_features.h ../include/hash.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/numeric.h ../include/numnicks.h \ + ../include/send.h m_settime.o: m_settime.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_features.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_snprintf.h \ + ../include/capab.h ../include/ircd_features.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_snprintf.h \ ../include/ircd_string.h ../include/ircd_chattr.h ../include/list.h \ ../include/msg.h ../include/numeric.h ../include/numnicks.h \ ../include/s_user.h ../include/send.h ../include/struct.h m_silence.o: m_silence.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ - ../include/ircd_handler.h ../include/capab.h ../include/hash.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_snprintf.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/list.h \ - ../include/msg.h ../include/numeric.h ../include/numnicks.h \ - ../include/s_user.h ../include/send.h ../include/struct.h + ../include/ircd_handler.h ../include/capab.h ../include/ircd_features.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_snprintf.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/list.h ../include/msg.h \ + ../include/numeric.h ../include/numnicks.h ../include/s_user.h \ + ../include/send.h ../include/struct.h m_squit.o: m_squit.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_chattr.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h ../include/numeric.h \ - ../include/numnicks.h ../include/match.h ../include/s_debug.h \ - ../include/s_misc.h ../include/s_user.h ../include/send.h + ../include/capab.h ../include/ircd_features.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_chattr.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/numeric.h ../include/numnicks.h ../include/match.h \ + ../include/s_debug.h ../include/s_misc.h ../include/s_user.h \ + ../include/send.h m_stats.o: m_stats.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ - ../include/numeric.h ../include/s_stats.h ../include/s_user.h \ - ../include/send.h ../include/struct.h + ../include/capab.h ../include/ircd_features.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ + ../include/s_stats.h ../include/s_user.h ../include/send.h \ + ../include/struct.h m_time.o: m_time.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/s_misc.h ../include/s_user.h \ - ../include/send.h + ../include/ircd_features.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ + ../include/numeric.h ../include/numnicks.h ../include/s_misc.h \ + ../include/s_user.h ../include/send.h m_topic.o: m_topic.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ - ../include/ircd_handler.h ../include/capab.h ../include/hash.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/send.h + ../include/ircd_handler.h ../include/capab.h ../include/ircd_features.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ + ../include/numeric.h ../include/numnicks.h ../include/send.h m_trace.o: m_trace.c ../config.h ../include/class.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/client.h ../include/hash.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/match.h ../include/msg.h \ - ../include/numeric.h ../include/numnicks.h ../include/s_bsd.h \ - ../include/s_conf.h ../include/s_user.h ../include/send.h \ - ../include/version.h + ../include/capab.h ../include/ircd_features.h ../include/client.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/match.h \ + ../include/msg.h ../include/numeric.h ../include/numnicks.h \ + ../include/s_bsd.h ../include/s_conf.h ../include/s_user.h \ + ../include/send.h ../include/version.h m_uping.o: m_uping.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/match.h \ - ../include/msg.h ../include/numeric.h ../include/numnicks.h \ - ../include/s_conf.h ../include/client.h ../include/s_user.h \ - ../include/send.h ../include/uping.h + ../include/capab.h ../include/ircd_features.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/match.h ../include/msg.h \ + ../include/numeric.h ../include/numnicks.h ../include/s_conf.h \ + ../include/client.h ../include/s_user.h ../include/send.h \ + ../include/uping.h m_user.o: m_user.c ../config.h ../include/handlers.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_chattr.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/numeric.h ../include/numnicks.h \ - ../include/s_auth.h ../include/s_debug.h ../include/s_misc.h \ - ../include/s_user.h ../include/send.h + ../include/capab.h ../include/ircd_features.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_chattr.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_string.h ../include/numeric.h \ + ../include/numnicks.h ../include/s_auth.h ../include/s_debug.h \ + ../include/s_misc.h ../include/s_user.h ../include/send.h m_userhost.o: m_userhost.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/msgq.h \ - ../include/numeric.h ../include/s_user.h ../include/struct.h + ../include/capab.h ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/msgq.h ../include/numeric.h \ + ../include/s_user.h ../include/struct.h m_userip.o: m_userip.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/msgq.h ../include/numeric.h \ - ../include/s_user.h ../include/struct.h + ../include/capab.h ../include/ircd_features.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/msgq.h \ + ../include/numeric.h ../include/s_user.h ../include/struct.h m_version.o: m_version.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_features.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_snprintf.h \ + ../include/capab.h ../include/ircd_features.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_snprintf.h \ ../include/ircd_string.h ../include/ircd_chattr.h ../include/match.h \ ../include/msg.h ../include/numeric.h ../include/numnicks.h \ ../include/s_debug.h ../include/s_user.h ../include/send.h \ @@ -1107,79 +1153,82 @@ m_version.o: m_version.c ../config.h ../include/client.h \ m_wallchops.o: m_wallchops.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ - ../include/ircd_handler.h ../include/capab.h ../include/hash.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_handler.h ../include/capab.h ../include/ircd_features.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_user.h ../include/send.h m_wallops.o: m_wallops.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ - ../include/numeric.h ../include/send.h + ../include/capab.h ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ + ../include/send.h m_wallusers.o: m_wallusers.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ - ../include/numeric.h ../include/send.h + ../include/capab.h ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ + ../include/send.h m_wallvoices.o: m_wallvoices.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ - ../include/ircd_handler.h ../include/capab.h ../include/hash.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_handler.h ../include/capab.h ../include/ircd_features.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_user.h ../include/send.h m_webirc.o: m_webirc.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_features.h ../include/ircd_reply.h \ + ../include/capab.h ../include/ircd_features.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_features.h ../include/ircd_reply.h \ ../include/ircd_string.h ../include/ircd_chattr.h ../include/s_auth.h \ ../include/s_conf.h ../include/client.h ../include/s_misc.h m_who.o: m_who.c ../config.h ../include/channel.h ../include/ircd_defs.h \ ../include/res.h ../include/client.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/capab.h \ - ../include/hash.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_chattr.h ../include/ircd_features.h \ + ../include/ircd_features.h ../include/hash.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_chattr.h ../include/ircd_features.h \ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/match.h ../include/numeric.h ../include/numnicks.h \ ../include/send.h ../include/whocmds.h m_whois.o: m_whois.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ - ../include/ircd_handler.h ../include/capab.h ../include/hash.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/match.h ../include/msg.h \ - ../include/numeric.h ../include/numnicks.h ../include/s_conf.h \ - ../include/client.h ../include/s_user.h ../include/send.h \ - ../include/whocmds.h + ../include/ircd_handler.h ../include/capab.h ../include/ircd_features.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/match.h \ + ../include/msg.h ../include/numeric.h ../include/numnicks.h \ + ../include/s_conf.h ../include/client.h ../include/s_user.h \ + ../include/send.h ../include/whocmds.h m_whowas.o: m_whowas.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_features.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/capab.h ../include/ircd_features.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_user.h ../include/s_misc.h \ ../include/send.h ../include/whowas.h m_xquery.o: m_xquery.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/send.h + ../include/capab.h ../include/ircd_features.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ + ../include/numeric.h ../include/numnicks.h ../include/send.h m_xreply.o: m_xreply.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/s_auth.h ../include/send.h + ../include/capab.h ../include/ircd_features.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ + ../include/numeric.h ../include/numnicks.h ../include/s_auth.h \ + ../include/send.h match.o: match.c ../config.h ../include/match.h ../include/res.h \ ../include/ircd_chattr.h ../include/ircd_string.h \ ../include/ircd_snprintf.h @@ -1187,15 +1236,15 @@ memdebug.o: memdebug.c ../include/ircd.h ../include/struct.h \ ../include/ircd_defs.h ../include/ircd_alloc.h ../include/ircd_log.h \ ../include/client.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../config.h ../include/ircd_handler.h \ - ../include/res.h ../include/capab.h ../include/s_debug.h \ - ../include/send.h + ../include/res.h ../include/capab.h ../include/ircd_features.h \ + ../include/s_debug.h ../include/send.h motd.o: motd.c ../config.h ../include/motd.h ../include/res.h \ ../include/class.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ - ../include/ircd_handler.h ../include/capab.h ../include/client.h \ - ../include/fileio.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_alloc.h ../include/ircd_features.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_handler.h ../include/capab.h ../include/ircd_features.h \ + ../include/client.h ../include/fileio.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_alloc.h ../include/ircd_features.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/match.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_conf.h \ ../include/s_debug.h ../include/s_user.h ../include/s_stats.h \ @@ -1204,21 +1253,24 @@ msgq.o: msgq.c ../config.h ../include/msgq.h ../include/ircd_defs.h \ ../include/ircd.h ../include/struct.h ../include/ircd_alloc.h \ ../include/ircd_defs.h ../include/ircd_features.h ../include/ircd_log.h \ ../include/ircd_reply.h ../include/ircd_snprintf.h ../include/numeric.h \ - ../include/send.h ../include/s_debug.h ../include/s_stats.h + ../include/send.h ../include/client.h ../include/dbuf.h \ + ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ + ../include/capab.h ../include/ircd_features.h ../include/s_debug.h \ + ../include/s_stats.h numnicks.o: numnicks.c ../config.h ../include/numnicks.h \ ../include/client.h ../include/ircd_defs.h ../include/dbuf.h \ ../include/msgq.h ../include/ircd_events.h ../include/ircd_handler.h \ - ../include/res.h ../include/capab.h ../include/client.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_alloc.h \ - ../include/ircd_log.h ../include/ircd_string.h ../include/ircd_chattr.h \ - ../include/match.h ../include/s_bsd.h ../include/s_debug.h \ - ../include/s_misc.h ../include/struct.h + ../include/res.h ../include/capab.h ../include/ircd_features.h \ + ../include/client.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_alloc.h ../include/ircd_log.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/match.h ../include/s_bsd.h \ + ../include/s_debug.h ../include/s_misc.h ../include/struct.h opercmds.o: opercmds.c ../config.h ../include/opercmds.h \ ../include/class.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/client.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_chattr.h ../include/ircd_reply.h \ + ../include/ircd_features.h ../include/client.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_chattr.h ../include/ircd_reply.h \ ../include/ircd_string.h ../include/listener.h ../include/match.h \ ../include/msg.h ../include/numeric.h ../include/numnicks.h \ ../include/s_conf.h ../include/send.h ../include/struct.h @@ -1228,69 +1280,70 @@ os_generic.o: os_generic.c ../config.h ../include/ircd_osdep.h \ packet.o: packet.c ../config.h ../include/packet.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_chattr.h ../include/ircd_log.h ../include/parse.h \ - ../include/s_bsd.h ../include/s_misc.h ../include/send.h + ../include/capab.h ../include/ircd_features.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_chattr.h ../include/ircd_log.h \ + ../include/parse.h ../include/s_bsd.h ../include/s_misc.h \ + ../include/send.h parse.o: parse.c ../config.h ../include/parse.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/channel.h ../include/handlers.h \ - ../include/hash.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_alloc.h ../include/ircd_chattr.h \ + ../include/capab.h ../include/ircd_features.h ../include/channel.h \ + ../include/handlers.h ../include/hash.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_alloc.h ../include/ircd_chattr.h \ ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ ../include/ircd_string.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/opercmds.h ../include/querycmds.h \ - ../include/ircd_features.h ../include/res.h ../include/s_bsd.h \ - ../include/s_conf.h ../include/client.h ../include/s_debug.h \ - ../include/s_misc.h ../include/s_numeric.h ../include/s_user.h \ - ../include/send.h ../include/struct.h ../include/sys.h \ - ../include/whocmds.h ../include/whowas.h + ../include/res.h ../include/s_bsd.h ../include/s_conf.h \ + ../include/client.h ../include/s_debug.h ../include/s_misc.h \ + ../include/s_numeric.h ../include/s_user.h ../include/send.h \ + ../include/struct.h ../include/sys.h ../include/whocmds.h \ + ../include/whowas.h querycmds.o: querycmds.c ../config.h ../include/querycmds.h \ ../include/ircd_features.h random.o: random.c ../config.h ../include/random.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd_log.h ../include/ircd_md5.h \ - ../include/ircd_reply.h ../include/send.h + ../include/capab.h ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_md5.h ../include/ircd_reply.h ../include/send.h s_auth.o: s_auth.c ../config.h ../include/s_auth.h \ ../include/ircd_events.h ../include/class.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/client.h ../include/IPcheck.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_alloc.h ../include/ircd_chattr.h \ - ../include/ircd_events.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_osdep.h ../include/ircd_reply.h \ - ../include/ircd_snprintf.h ../include/ircd_string.h ../include/list.h \ - ../include/msg.h ../include/numeric.h ../include/numnicks.h \ - ../include/querycmds.h ../include/ircd_features.h ../include/random.h \ - ../include/res.h ../include/s_bsd.h ../include/s_conf.h \ - ../include/s_debug.h ../include/s_misc.h ../include/s_stats.h \ - ../include/s_user.h ../include/send.h + ../include/ircd_features.h ../include/client.h ../include/IPcheck.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_alloc.h \ + ../include/ircd_chattr.h ../include/ircd_events.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_osdep.h \ + ../include/ircd_reply.h ../include/ircd_snprintf.h \ + ../include/ircd_string.h ../include/list.h ../include/msg.h \ + ../include/numeric.h ../include/numnicks.h ../include/querycmds.h \ + ../include/random.h ../include/res.h ../include/s_bsd.h \ + ../include/s_conf.h ../include/s_debug.h ../include/s_misc.h \ + ../include/s_stats.h ../include/s_user.h ../include/send.h s_bsd.o: s_bsd.c ../config.h ../include/s_bsd.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/IPcheck.h ../include/channel.h \ - ../include/class.h ../include/client.h ../include/hash.h \ - ../include/ircd_alloc.h ../include/ircd_log.h ../include/ircd_features.h \ - ../include/ircd_osdep.h ../include/ircd_reply.h \ - ../include/ircd_snprintf.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/ircd.h ../include/struct.h \ - ../include/list.h ../include/listener.h ../include/msg.h \ - ../include/msgq.h ../include/numeric.h ../include/numnicks.h \ - ../include/packet.h ../include/parse.h ../include/querycmds.h \ - ../include/ircd_features.h ../include/res.h ../include/s_auth.h \ + ../include/capab.h ../include/ircd_features.h ../include/IPcheck.h \ + ../include/channel.h ../include/class.h ../include/client.h \ + ../include/hash.h ../include/ircd_alloc.h ../include/ircd_log.h \ + ../include/ircd_features.h ../include/ircd_osdep.h \ + ../include/ircd_reply.h ../include/ircd_snprintf.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/ircd.h \ + ../include/struct.h ../include/list.h ../include/listener.h \ + ../include/msg.h ../include/msgq.h ../include/numeric.h \ + ../include/numnicks.h ../include/packet.h ../include/parse.h \ + ../include/querycmds.h ../include/res.h ../include/s_auth.h \ ../include/s_conf.h ../include/s_debug.h ../include/s_misc.h \ ../include/s_user.h ../include/send.h ../include/struct.h \ ../include/sys.h ../include/uping.h ../include/version.h s_conf.o: s_conf.c ../config.h ../include/s_conf.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/IPcheck.h ../include/class.h \ - ../include/client.h ../include/crule.h ../include/ircd_features.h \ - ../include/fileio.h ../include/gline.h ../include/hash.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_alloc.h \ - ../include/ircd_chattr.h ../include/ircd_lexer.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_snprintf.h \ + ../include/capab.h ../include/ircd_features.h ../include/IPcheck.h \ + ../include/class.h ../include/client.h ../include/crule.h \ + ../include/ircd_features.h ../include/fileio.h ../include/gline.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_alloc.h ../include/ircd_chattr.h ../include/ircd_lexer.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_snprintf.h \ ../include/ircd_string.h ../include/list.h ../include/listener.h \ ../include/match.h ../include/motd.h ../include/numeric.h \ ../include/numnicks.h ../include/opercmds.h ../include/parse.h \ @@ -1301,92 +1354,94 @@ s_debug.o: s_debug.c ../config.h ../include/s_debug.h \ ../include/ircd_defs.h ../include/channel.h ../include/res.h \ ../include/class.h ../include/client.h ../include/dbuf.h \ ../include/msgq.h ../include/ircd_events.h ../include/ircd_handler.h \ - ../include/capab.h ../include/client.h ../include/gline.h \ - ../include/hash.h ../include/ircd_alloc.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_osdep.h ../include/ircd_reply.h \ - ../include/ircd.h ../include/struct.h ../include/jupe.h \ - ../include/list.h ../include/listener.h ../include/motd.h \ - ../include/msgq.h ../include/numeric.h ../include/numnicks.h \ - ../include/res.h ../include/s_bsd.h ../include/s_conf.h \ - ../include/s_user.h ../include/s_stats.h ../include/send.h \ - ../include/struct.h ../include/sys.h ../include/whowas.h + ../include/capab.h ../include/ircd_features.h ../include/client.h \ + ../include/gline.h ../include/hash.h ../include/ircd_alloc.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_osdep.h \ + ../include/ircd_reply.h ../include/ircd.h ../include/struct.h \ + ../include/jupe.h ../include/list.h ../include/listener.h \ + ../include/motd.h ../include/msgq.h ../include/numeric.h \ + ../include/numnicks.h ../include/res.h ../include/s_bsd.h \ + ../include/s_conf.h ../include/s_user.h ../include/s_stats.h \ + ../include/send.h ../include/struct.h ../include/sys.h \ + ../include/whowas.h s_err.o: s_err.c ../config.h ../include/numeric.h ../include/ircd_log.h \ ../include/s_debug.h ../include/ircd_defs.h s_misc.o: s_misc.c ../config.h ../include/s_misc.h ../include/IPcheck.h \ ../include/channel.h ../include/ircd_defs.h ../include/res.h \ ../include/client.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/capab.h \ - ../include/hash.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_alloc.h ../include/ircd_features.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_snprintf.h \ + ../include/ircd_features.h ../include/hash.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_alloc.h ../include/ircd_features.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_snprintf.h \ ../include/ircd_string.h ../include/ircd_chattr.h ../include/list.h \ ../include/match.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/parse.h ../include/querycmds.h \ - ../include/ircd_features.h ../include/res.h ../include/s_auth.h \ - ../include/s_bsd.h ../include/s_conf.h ../include/client.h \ - ../include/s_debug.h ../include/s_stats.h ../include/s_user.h \ - ../include/send.h ../include/struct.h ../include/sys.h \ - ../include/uping.h ../include/userload.h + ../include/res.h ../include/s_auth.h ../include/s_bsd.h \ + ../include/s_conf.h ../include/client.h ../include/s_debug.h \ + ../include/s_stats.h ../include/s_user.h ../include/send.h \ + ../include/struct.h ../include/sys.h ../include/uping.h \ + ../include/userload.h s_numeric.o: s_numeric.c ../config.h ../include/s_numeric.h \ ../include/channel.h ../include/ircd_defs.h ../include/res.h \ ../include/client.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/capab.h \ - ../include/hash.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_features.h ../include/ircd_snprintf.h \ - ../include/numnicks.h ../include/send.h ../include/struct.h + ../include/ircd_features.h ../include/hash.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_features.h \ + ../include/ircd_snprintf.h ../include/numnicks.h ../include/send.h \ + ../include/struct.h s_serv.o: s_serv.c ../config.h ../include/s_serv.h ../include/IPcheck.h \ ../include/channel.h ../include/ircd_defs.h ../include/res.h \ ../include/client.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/capab.h \ - ../include/gline.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_alloc.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/ircd_snprintf.h \ - ../include/ircd_crypt.h ../include/jupe.h ../include/list.h \ - ../include/match.h ../include/msg.h ../include/msgq.h \ + ../include/ircd_features.h ../include/gline.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_alloc.h \ + ../include/ircd_log.h ../include/ircd_netconf.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/ircd_chattr.h \ + ../include/ircd_snprintf.h ../include/ircd_crypt.h ../include/jupe.h \ + ../include/list.h ../include/match.h ../include/msg.h ../include/msgq.h \ ../include/numeric.h ../include/numnicks.h ../include/parse.h \ - ../include/querycmds.h ../include/ircd_features.h ../include/s_bsd.h \ - ../include/s_conf.h ../include/client.h ../include/s_debug.h \ - ../include/s_misc.h ../include/s_user.h ../include/send.h \ - ../include/struct.h ../include/sys.h ../include/userload.h + ../include/querycmds.h ../include/s_bsd.h ../include/s_conf.h \ + ../include/client.h ../include/s_debug.h ../include/s_misc.h \ + ../include/s_user.h ../include/send.h ../include/struct.h \ + ../include/sys.h ../include/userload.h s_stats.o: s_stats.c ../config.h ../include/class.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/client.h ../include/gline.h \ - ../include/hash.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_chattr.h ../include/ircd_events.h \ - ../include/ircd_features.h ../include/ircd_crypt.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h ../include/listener.h \ - ../include/list.h ../include/match.h ../include/motd.h ../include/msg.h \ - ../include/msgq.h ../include/numeric.h ../include/numnicks.h \ - ../include/querycmds.h ../include/ircd_features.h ../include/res.h \ - ../include/s_auth.h ../include/s_bsd.h ../include/s_conf.h \ - ../include/s_debug.h ../include/s_misc.h ../include/s_serv.h \ - ../include/s_stats.h ../include/s_user.h ../include/send.h \ - ../include/struct.h ../include/userload.h + ../include/capab.h ../include/ircd_features.h ../include/client.h \ + ../include/gline.h ../include/hash.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_chattr.h ../include/ircd_netconf.h \ + ../include/ircd_events.h ../include/ircd_features.h \ + ../include/ircd_crypt.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_string.h ../include/listener.h ../include/list.h \ + ../include/match.h ../include/motd.h ../include/msg.h ../include/msgq.h \ + ../include/numeric.h ../include/numnicks.h ../include/querycmds.h \ + ../include/res.h ../include/s_auth.h ../include/s_bsd.h \ + ../include/s_conf.h ../include/s_debug.h ../include/s_misc.h \ + ../include/s_serv.h ../include/s_stats.h ../include/s_user.h \ + ../include/send.h ../include/struct.h ../include/userload.h s_user.o: s_user.c ../config.h ../include/s_user.h ../include/IPcheck.h \ ../include/channel.h ../include/ircd_defs.h ../include/res.h \ ../include/class.h ../include/client.h ../include/dbuf.h \ ../include/msgq.h ../include/ircd_events.h ../include/ircd_handler.h \ - ../include/capab.h ../include/client.h ../include/hash.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_alloc.h \ - ../include/ircd_chattr.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_snprintf.h \ - ../include/ircd_string.h ../include/list.h ../include/match.h \ - ../include/motd.h ../include/msg.h ../include/msgq.h \ + ../include/capab.h ../include/ircd_features.h ../include/client.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_alloc.h ../include/ircd_chattr.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_snprintf.h ../include/ircd_string.h ../include/list.h \ + ../include/match.h ../include/motd.h ../include/msg.h ../include/msgq.h \ ../include/numeric.h ../include/numnicks.h ../include/parse.h \ - ../include/querycmds.h ../include/ircd_features.h ../include/random.h \ - ../include/s_auth.h ../include/s_bsd.h ../include/s_conf.h \ - ../include/s_debug.h ../include/s_misc.h ../include/s_serv.h \ - ../include/send.h ../include/struct.h ../include/supported.h \ - ../include/channel.h ../include/sys.h ../include/userload.h \ - ../include/version.h ../include/whowas.h ../include/handlers.h -send.o: send.c ../config.h ../include/send.h ../include/channel.h \ - ../include/ircd_defs.h ../include/res.h ../include/class.h \ - ../include/client.h ../include/dbuf.h ../include/msgq.h \ - ../include/ircd_events.h ../include/ircd_handler.h ../include/capab.h \ - ../include/client.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_features.h ../include/ircd_log.h \ + ../include/querycmds.h ../include/random.h ../include/s_auth.h \ + ../include/s_bsd.h ../include/s_conf.h ../include/s_debug.h \ + ../include/s_misc.h ../include/s_serv.h ../include/send.h \ + ../include/struct.h ../include/supported.h ../include/channel.h \ + ../include/sys.h ../include/userload.h ../include/version.h \ + ../include/whowas.h ../include/handlers.h +send.o: send.c ../config.h ../include/send.h ../include/client.h \ + ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ + ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ + ../include/capab.h ../include/ircd_features.h ../include/channel.h \ + ../include/class.h ../include/client.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_features.h ../include/ircd_log.h \ ../include/ircd_snprintf.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/list.h ../include/match.h \ ../include/msg.h ../include/numnicks.h ../include/parse.h \ @@ -1395,9 +1450,9 @@ send.o: send.c ../config.h ../include/send.h ../include/channel.h \ uping.o: uping.c ../config.h ../include/uping.h ../include/ircd_defs.h \ ../include/ircd_events.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_handler.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_alloc.h ../include/ircd_events.h ../include/ircd_log.h \ - ../include/ircd_osdep.h ../include/ircd_string.h \ + ../include/capab.h ../include/ircd_features.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_alloc.h ../include/ircd_events.h \ + ../include/ircd_log.h ../include/ircd_osdep.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/match.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_bsd.h \ ../include/s_conf.h ../include/client.h ../include/s_debug.h \ @@ -1406,30 +1461,30 @@ uping.o: uping.c ../config.h ../include/uping.h ../include/ircd_defs.h \ userload.o: userload.c ../config.h ../include/userload.h \ ../include/client.h ../include/ircd_defs.h ../include/dbuf.h \ ../include/msgq.h ../include/ircd_events.h ../include/ircd_handler.h \ - ../include/res.h ../include/capab.h ../include/ircd.h \ - ../include/struct.h ../include/msg.h ../include/numnicks.h \ - ../include/querycmds.h ../include/ircd_features.h ../include/s_misc.h \ + ../include/res.h ../include/capab.h ../include/ircd_features.h \ + ../include/ircd.h ../include/struct.h ../include/msg.h \ + ../include/numnicks.h ../include/querycmds.h ../include/s_misc.h \ ../include/s_stats.h ../include/send.h ../include/struct.h \ ../include/sys.h whocmds.o: whocmds.c ../config.h ../include/whocmds.h \ ../include/channel.h ../include/ircd_defs.h ../include/res.h \ ../include/client.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/capab.h \ - ../include/hash.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_chattr.h ../include/ircd_features.h \ + ../include/ircd_features.h ../include/hash.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_chattr.h ../include/ircd_features.h \ ../include/ircd_reply.h ../include/ircd_snprintf.h \ ../include/ircd_string.h ../include/list.h ../include/match.h \ ../include/numeric.h ../include/numnicks.h ../include/querycmds.h \ - ../include/ircd_features.h ../include/random.h ../include/s_bsd.h \ - ../include/s_conf.h ../include/client.h ../include/s_misc.h \ - ../include/s_user.h ../include/send.h ../include/struct.h \ - ../include/sys.h ../include/userload.h ../include/version.h \ - ../include/whowas.h ../include/msg.h + ../include/random.h ../include/s_bsd.h ../include/s_conf.h \ + ../include/client.h ../include/s_misc.h ../include/s_user.h \ + ../include/send.h ../include/struct.h ../include/sys.h \ + ../include/userload.h ../include/version.h ../include/whowas.h \ + ../include/msg.h whowas.o: whowas.c ../config.h ../include/whowas.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_alloc.h ../include/ircd_chattr.h \ + ../include/capab.h ../include/ircd_features.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_alloc.h ../include/ircd_chattr.h \ ../include/ircd_features.h ../include/ircd_log.h \ ../include/ircd_string.h ../include/list.h ../include/numeric.h \ ../include/s_debug.h ../include/s_misc.h ../include/s_user.h \ @@ -1437,18 +1492,18 @@ whowas.o: whowas.c ../config.h ../include/whowas.h ../include/client.h \ y.tab.o: y.tab.c ../config.h ../include/s_conf.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/class.h ../include/client.h \ - ../include/crule.h ../include/fileio.h ../include/gline.h \ - ../include/hash.h ../include/IPcheck.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_alloc.h ../include/ircd_chattr.h \ - ../include/ircd_features.h ../include/ircd_lexer.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_snprintf.h \ - ../include/ircd_string.h ../include/list.h ../include/listener.h \ - ../include/match.h ../include/motd.h ../include/numeric.h \ - ../include/numnicks.h ../include/opercmds.h ../include/parse.h \ - ../include/res.h ../include/s_auth.h ../include/s_bsd.h \ - ../include/s_debug.h ../include/s_misc.h ../include/send.h \ - ../include/struct.h ../include/sys.h + ../include/capab.h ../include/ircd_features.h ../include/class.h \ + ../include/client.h ../include/crule.h ../include/fileio.h \ + ../include/gline.h ../include/hash.h ../include/IPcheck.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_alloc.h \ + ../include/ircd_chattr.h ../include/ircd_features.h \ + ../include/ircd_lexer.h ../include/ircd_log.h ../include/ircd_reply.h \ + ../include/ircd_snprintf.h ../include/ircd_string.h ../include/list.h \ + ../include/listener.h ../include/match.h ../include/motd.h \ + ../include/numeric.h ../include/numnicks.h ../include/opercmds.h \ + ../include/parse.h ../include/res.h ../include/s_auth.h \ + ../include/s_bsd.h ../include/s_debug.h ../include/s_misc.h \ + ../include/send.h ../include/struct.h ../include/sys.h engine_devpoll.o: engine_devpoll.c ../config.h ../include/ircd_events.h \ ../include/ircd.h ../include/struct.h ../include/ircd_defs.h \ ../include/ircd_alloc.h ../include/ircd_features.h ../include/ircd_log.h \ diff --git a/ircd/ircd_features.c b/ircd/ircd_features.c index 6410099b..53aaa3e1 100644 --- a/ircd/ircd_features.c +++ b/ircd/ircd_features.c @@ -387,6 +387,7 @@ static struct FeatureDesc { F_B(HIS_TRACE, 0, 1, 0), F_B(HIS_STATS_a, 0, 1, 0), F_B(HIS_STATS_c, 0, 1, 0), + F_B(HIS_STATS_C, 0, 1, 0), F_B(HIS_STATS_d, 0, 1, 0), F_B(HIS_STATS_e, 0, 1, 0), F_B(HIS_STATS_f, 0, 1, 0), @@ -397,13 +398,13 @@ static struct FeatureDesc { F_B(HIS_STATS_k, 0, 1, 0), F_B(HIS_STATS_l, 0, 1, 0), F_B(HIS_STATS_L, 0, 1, 0), - F_B(HIS_STATS_M, 0, 1, 0), F_B(HIS_STATS_m, 0, 1, 0), + F_B(HIS_STATS_M, 0, 1, 0), F_B(HIS_STATS_o, 0, 1, 0), F_B(HIS_STATS_p, 0, 1, 0), F_B(HIS_STATS_q, 0, 1, 0), - F_B(HIS_STATS_R, 0, 1, 0), F_B(HIS_STATS_r, 0, 1, 0), + F_B(HIS_STATS_R, 0, 1, 0), F_B(HIS_STATS_t, 0, 1, 0), F_B(HIS_STATS_T, 0, 1, 0), F_B(HIS_STATS_u, 0, 0, 0), diff --git a/ircd/ircd_netconf.c b/ircd/ircd_netconf.c new file mode 100644 index 00000000..a08ad2d3 --- /dev/null +++ b/ircd/ircd_netconf.c @@ -0,0 +1,265 @@ +/* + * IRC - Internet Relay Chat, ircd/ircd_netconf.c + * Copyright (C) 2025 MrIron + * + * See file AUTHORS in IRC package for additional names of + * the programmers. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 1, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "config.h" + +#include "client.h" +#include "ircd.h" +#include "ircd_alloc.h" +#include "ircd_netconf.h" +#include "ircd_reply.h" +#include "ircd_string.h" +#include "msg.h" +#include "numeric.h" +#include "numnicks.h" +#include "s_debug.h" +#include "send.h" + +#include +#include + +/** Head of the configuration list */ +static struct ConfigEntry *config_list = NULL; + +/** Head of the callback list */ +static struct ConfigCallback *callback_list = NULL; + +/** Find a configuration entry by key + * @param[in] key Configuration key to find + * @return Configuration entry or NULL if not found + */ +static struct ConfigEntry *config_find(const char *key) +{ + struct ConfigEntry *entry; + + assert(key != NULL); + + for (entry = config_list; entry; entry = entry->next) { + if (ircd_strcmp(entry->key, key) == 0) + return entry; + } + + return NULL; +} + +/** Call registered callbacks for a key + * @param[in] key Configuration key that changed + * @param[in] old_value Previous value (NULL if new) + * @param[in] new_value New value + */ +static void config_call_callbacks(const char *key, const char *old_value, const char *new_value) +{ + struct ConfigCallback *cb; + + for (cb = callback_list; cb; cb = cb->next) { + if (ircd_strncmp(key, cb->key_prefix, strlen(cb->key_prefix)) == 0) { + cb->callback(key, old_value, new_value); + } + } +} + +/** Set a configuration option + * @param[in] key Configuration key + * @param[in] value Configuration value + * @param[in] timestamp Timestamp when this config was set + * @return 1 if the value was updated, 0 if it was created, -1 on error + */ +int config_set(const char *key, const char *value, time_t timestamp) +{ + struct ConfigEntry *entry; + char *old_value = NULL; + int result; + + assert(key != NULL); + assert(value != NULL); + + entry = config_find(key); + + if (entry) { + /* Only update if timestamp is newer */ + if (timestamp <= entry->timestamp) + return CONFIG_REJECTED; + + /* Save old value for callbacks */ + DupString(old_value, entry->value); + + /* Check if value actually changed */ + int value_changed = (ircd_strcmp(old_value, value) != 0); + + /* Update existing entry */ + MyFree(entry->value); + DupString(entry->value, value); + entry->timestamp = timestamp; + + result = value_changed ? CONFIG_CHANGED : CONFIG_TIMESTAMP; + } else { + /* Create new entry */ + entry = MyMalloc(sizeof(struct ConfigEntry)); + DupString(entry->key, key); + DupString(entry->value, value); + entry->timestamp = timestamp; + entry->next = config_list; + config_list = entry; + result = CONFIG_CREATED; + } + + Debug((DEBUG_DEBUG, "Config %s: %s = %s (timestamp: %lu)", + (result == CONFIG_CHANGED) ? "changed" : + (result == CONFIG_TIMESTAMP) ? "timestamp updated" : "set", + key, value, (unsigned long)timestamp)); + + /* Call callbacks */ + config_call_callbacks(key, old_value, value); + + if (old_value) + MyFree(old_value); + + return result; +} + +/** Get a configuration value + * @param[in] key Configuration key + * @return Configuration value or NULL if not found + */ +const char *config_get(const char *key) +{ + struct ConfigEntry *entry; + + assert(key != NULL); + + entry = config_find(key); + return entry ? entry->value : NULL; +} + +/** Get the timestamp of a configuration option + * @param[in] key Configuration key + * @return Timestamp or 0 if not found + */ +time_t config_get_timestamp(const char *key) +{ + struct ConfigEntry *entry; + + assert(key != NULL); + + entry = config_find(key); + return entry ? entry->timestamp : 0; +} + +/** Count the number of configuration entries + * @return Number of configuration entries + */ +static int config_count(void) +{ + struct ConfigEntry *entry; + int count = 0; + + for (entry = config_list; entry; entry = entry->next) + count++; + + return count; +} + +/** Register a callback for configuration changes + * @param[in] key_prefix Key prefix to match (e.g., "sasl.") + * @param[in] callback Callback function to call + */ +void config_register_callback(const char *key_prefix, config_callback_f callback) +{ + struct ConfigCallback *cb; + + assert(key_prefix != NULL); + assert(callback != NULL); + + /* Check if callback already exists */ + for (cb = callback_list; cb; cb = cb->next) { + if (ircd_strcmp(cb->key_prefix, key_prefix) == 0) { + cb->callback = callback; + return; + } + } + + /* Create new callback */ + cb = MyMalloc(sizeof(struct ConfigCallback)); + DupString(cb->key_prefix, key_prefix); + cb->callback = callback; + cb->next = callback_list; + callback_list = cb; + + Debug((DEBUG_DEBUG, "Config callback registered for prefix: %s", key_prefix)); +} + +/** Unregister a callback for configuration changes + * @param[in] key_prefix Key prefix that was registered + */ +void config_unregister_callback(const char *key_prefix) +{ + struct ConfigCallback *cb, *prev = NULL; + + assert(key_prefix != NULL); + + for (cb = callback_list; cb; prev = cb, cb = cb->next) { + if (ircd_strcmp(cb->key_prefix, key_prefix) == 0) { + if (prev) + prev->next = cb->next; + else + callback_list = cb->next; + + MyFree(cb->key_prefix); + MyFree(cb); + + Debug((DEBUG_DEBUG, "Config callback unregistered for prefix: %s", key_prefix)); + return; + } + } +} + +/** Burst all configuration entries to a newly connected server + * @param[in] cptr Server to send CF messages to + */ +void config_burst(struct Client *cptr) +{ + struct ConfigEntry *entry; + + for (entry = config_list; entry; entry = entry->next) { + sendcmdto_one(&me, CMD_CONFIG, cptr, "%Tu %s %s", + entry->timestamp, entry->key, entry->value); + } + + Debug((DEBUG_INFO, "Config burst: %d entries sent to %s", + config_count(), cli_name(cptr))); +} + +/** Generate configuration statistics for /STATS C + * @param[in] sptr Client requesting statistics + * @param[in] sd Stats descriptor (unused) + * @param[in] param Additional parameter (unused) + */ +void config_stats(struct Client *sptr, const struct StatDesc *sd, char *param) +{ + struct ConfigEntry *entry; + + for (entry = config_list; entry; entry = entry->next) { + send_reply(sptr, SND_EXPLICIT | RPL_STATSDEBUG, + "%Tu %s :%s", + entry->timestamp, entry->key, entry->value); + } +} \ No newline at end of file diff --git a/ircd/m_config.c b/ircd/m_config.c new file mode 100644 index 00000000..c9d9d3e3 --- /dev/null +++ b/ircd/m_config.c @@ -0,0 +1,94 @@ +/* + * IRC - Internet Relay Chat, ircd/m_config.c + * Copyright (C) 2025 MrIron + * + * See file AUTHORS in IRC package for additional names of + * the programmers. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 1, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "config.h" + +#include "client.h" +#include "ircd.h" +#include "ircd_alloc.h" +#include "ircd_netconf.h" +#include "ircd_reply.h" +#include "ircd_string.h" +#include "msg.h" +#include "numeric.h" +#include "numnicks.h" +#include "send.h" +#include "s_debug.h" + +#include + +/** Handler for server CONFIG messages + * @param[in] cptr Local client that sent us the message + * @param[in] sptr Original source of the message + * @param[in] parc Number of parameters + * @param[in] parv Parameter vector (source CF timestamp key value) + * @return 0 on success + */ +int ms_config(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) +{ + time_t timestamp; + const char *key, *value; + const char *old_value; + int result; + + if (parc < 4) + return need_more_params(sptr, "CF"); + + timestamp = atol(parv[1]); + key = parv[2]; + value = parv[3]; + + /* Get the old value for comparison */ + old_value = config_get(key); + char *old_value_copy = NULL; + if (old_value) + DupString(old_value_copy, old_value); + + /* Try to set the configuration */ + result = config_set(key, value, timestamp); + + if (result != CONFIG_REJECTED) { + /* Configuration was set or updated, propagate to other servers */ + sendcmdto_serv_butone(sptr, CMD_CONFIG, cptr, "%Tu %s :%s", + timestamp, key, value); + + /* Send notification to operators based on what actually happened */ + if (result == CONFIG_CREATED) { + sendto_opmask_butone(0, SNO_NETWORK, + "Network configuration set: %s = %s", + key, value); + } else if (result == CONFIG_CHANGED) { + sendto_opmask_butone(0, SNO_NETWORK, + "Network configuration updated: %s = %s (was: %s)", + key, value, old_value_copy ? old_value_copy : "(unset)"); + } + + Debug((DEBUG_DEBUG, "NETCONF: %s set %s = %s (timestamp: %Tu)", + cli_name(sptr), key, value, timestamp)); + } + + /* Clean up the copied old value */ + if (old_value_copy) + MyFree(old_value_copy); + + return 0; +} diff --git a/ircd/parse.c b/ircd/parse.c index cfc78ca3..60771e25 100644 --- a/ircd/parse.c +++ b/ircd/parse.c @@ -658,6 +658,13 @@ struct Message msgtab[] = { /* UNREG, CLIENT, SERVER, OPER, SERVICE */ { m_quit, m_ignore, m_ignore, m_ignore, m_ignore } }, + { + MSG_CONFIG, + TOK_CONFIG, + 0, MAXPARA, 0, 0, NULL, + /* UNREG, CLIENT, SERVER, OPER, SERVICE */ + { m_ignore, m_ignore, ms_config, m_ignore, m_ignore } + }, { 0 } }; diff --git a/ircd/s_serv.c b/ircd/s_serv.c index 2969808b..691c7a0b 100644 --- a/ircd/s_serv.c +++ b/ircd/s_serv.c @@ -35,6 +35,7 @@ #include "ircd.h" #include "ircd_alloc.h" #include "ircd_log.h" +#include "ircd_netconf.h" #include "ircd_reply.h" #include "ircd_string.h" #include "ircd_snprintf.h" @@ -197,6 +198,9 @@ int server_estab(struct Client *cptr, struct ConfItem *aconf) gline_burst(cptr); jupe_burst(cptr); + /* Burst server configuration. */ + config_burst(cptr); + /* * Pass on my client information to the new server * diff --git a/ircd/s_stats.c b/ircd/s_stats.c index 07ddf9cb..09f17478 100644 --- a/ircd/s_stats.c +++ b/ircd/s_stats.c @@ -27,6 +27,7 @@ #include "hash.h" #include "ircd.h" #include "ircd_chattr.h" +#include "ircd_netconf.h" #include "ircd_events.h" #include "ircd_features.h" #include "ircd_crypt.h" @@ -558,9 +559,12 @@ struct StatDesc statsinfo[] = { { 'a', "nameservers", STAT_FLAG_OPERFEAT|STAT_FLAG_LOCONLY, FEAT_HIS_STATS_a, report_dns_servers, 0, "DNS servers." }, - { 'c', "connect", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_c, + { 'c', "connect", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS), FEAT_HIS_STATS_c, stats_configured_links, CONF_SERVER, "Remote server connection lines." }, + { 'C', "config", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS), FEAT_HIS_STATS_C, + config_stats, 0, + "Network configuration entries." }, { 'd', "maskrules", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS), FEAT_HIS_STATS_d, stats_crule_list, CRULE_MASK, "Dynamic routing configuration." }, diff --git a/ircd/test/Makefile.in b/ircd/test/Makefile.in index 9831ecc0..388f1abb 100644 --- a/ircd/test/Makefile.in +++ b/ircd/test/Makefile.in @@ -70,7 +70,8 @@ ircd_in_addr_t.o: ircd_in_addr_t.c ../../include/ircd_log.h \ ../../include/numnicks.h ../../include/client.h \ ../../include/ircd_defs.h ../../include/dbuf.h ../../include/msgq.h \ ../../include/ircd_events.h ../../config.h ../../include/ircd_handler.h \ - ../../include/res.h ../../include/capab.h ../../include/res.h + ../../include/res.h ../../include/capab.h ../../include/ircd_features.h \ + ../../include/res.h ircd_match_t.o: ircd_match_t.c ../../include/ircd_log.h \ ../../include/match.h ../../include/res.h ../../config.h ircd_string_t.o: ircd_string_t.c ../../include/ircd_string.h \ @@ -78,4 +79,5 @@ ircd_string_t.o: ircd_string_t.c ../../include/ircd_string.h \ test_stub.o: test_stub.c ../../include/client.h ../../include/ircd_defs.h \ ../../include/dbuf.h ../../include/msgq.h ../../include/ircd_events.h \ ../../config.h ../../include/ircd_handler.h ../../include/res.h \ - ../../include/capab.h ../../include/ircd_log.h ../../include/s_debug.h + ../../include/capab.h ../../include/ircd_features.h \ + ../../include/ircd_log.h ../../include/s_debug.h From f834d955a5e01b59bf1402990abcea0bc57a9430 Mon Sep 17 00:00:00 2001 From: MrIron Date: Sat, 18 Oct 2025 21:21:50 +0200 Subject: [PATCH 2/2] Better handling of ircu relevant netconfig options. --- include/ircd_netconf.h | 11 ++- ircd/ircd_netconf.c | 187 ++++++++++++++++++++++++++++++----------- 2 files changed, 146 insertions(+), 52 deletions(-) diff --git a/include/ircd_netconf.h b/include/ircd_netconf.h index 7ea59d3c..c23967d2 100644 --- a/include/ircd_netconf.h +++ b/include/ircd_netconf.h @@ -52,6 +52,12 @@ struct ConfigCallback { struct ConfigCallback *next; /**< Next callback */ }; +/** Network configuration options */ +enum NetConf { + /* To be included. This is the implementation only. */ + NETCONF_LAST_NC +}; + /* * Prototypes */ @@ -62,5 +68,8 @@ extern void config_register_callback(const char *key_prefix, config_callback_f c extern void config_unregister_callback(const char *key_prefix); extern void config_burst(struct Client *cptr); extern void config_stats(struct Client *sptr, const struct StatDesc *sd, char *param); +extern int netconf_int(enum NetConf key); +extern int netconf_bool(enum NetConf key); +extern const char *netconf_str(enum NetConf key); -#endif /* INCLUDED_ircd_config_h */ \ No newline at end of file +#endif /* INCLUDED_ircd_netconf_h */ diff --git a/ircd/ircd_netconf.c b/ircd/ircd_netconf.c index a08ad2d3..6415b5f6 100644 --- a/ircd/ircd_netconf.c +++ b/ircd/ircd_netconf.c @@ -43,6 +43,37 @@ static struct ConfigEntry *config_list = NULL; /** Head of the callback list */ static struct ConfigCallback *callback_list = NULL; +#define NETCONF_INT 0x0001 /**< set if entry contains an integer value */ +#define NETCONF_BOOL 0x0002 /**< set if entry contains a boolean value */ +#define NETCONF_STR 0x0003 /**< set if entry contains a string value */ +#define NETCONF_MASK 0x000f /**< possible value types */ + +/** Declare a network configuration option that takes integer values. */ +#define NC_I(type, cf_string, v_int) \ + { NETCONF_ ## type, cf_string, NETCONF_INT, 0, (v_int), 0, 0 } + +/** Declare a network configuration option that takes boolean values. */ +#define NC_B(type, cf_string, v_int) \ + { NETCONF_ ## type, cf_string, NETCONF_BOOL, 0, (v_int), 0, 0 } + +/** Declare a network configuration option that takes string values. */ +#define NC_S(type, cf_string, v_str) \ + { NETCONF_ ## type, cf_string, NETCONF_STR, 0, 0, 0, (v_str) } + +/** Network configuration description structure */ +static struct NetConfDesc { + enum NetConf netconf; /**< configuration identifier */ + char* type; /**< string describing type */ + unsigned int flags; /**< flags for configuration */ + int v_int; /**< integer value */ + int def_int; /**< default integer value */ + char* v_str; /**< string value */ + char* def_str; /**< default string value */ +} netconf_descs[] = { + + { NETCONF_LAST_NC, 0, 0, 0, 0, 0, 0 } /* sentinel */ +}; + /** Find a configuration entry by key * @param[in] key Configuration key to find * @return Configuration entry or NULL if not found @@ -50,14 +81,14 @@ static struct ConfigCallback *callback_list = NULL; static struct ConfigEntry *config_find(const char *key) { struct ConfigEntry *entry; - + assert(key != NULL); - + for (entry = config_list; entry; entry = entry->next) { if (ircd_strcmp(entry->key, key) == 0) return entry; } - + return NULL; } @@ -69,7 +100,7 @@ static struct ConfigEntry *config_find(const char *key) static void config_call_callbacks(const char *key, const char *old_value, const char *new_value) { struct ConfigCallback *cb; - + for (cb = callback_list; cb; cb = cb->next) { if (ircd_strncmp(key, cb->key_prefix, strlen(cb->key_prefix)) == 0) { cb->callback(key, old_value, new_value); @@ -79,7 +110,7 @@ static void config_call_callbacks(const char *key, const char *old_value, const /** Set a configuration option * @param[in] key Configuration key - * @param[in] value Configuration value + * @param[in] value Configuration value * @param[in] timestamp Timestamp when this config was set * @return 1 if the value was updated, 0 if it was created, -1 on error */ @@ -88,28 +119,28 @@ int config_set(const char *key, const char *value, time_t timestamp) struct ConfigEntry *entry; char *old_value = NULL; int result; - + assert(key != NULL); assert(value != NULL); - + entry = config_find(key); - + if (entry) { /* Only update if timestamp is newer */ if (timestamp <= entry->timestamp) return CONFIG_REJECTED; - + /* Save old value for callbacks */ DupString(old_value, entry->value); - + /* Check if value actually changed */ int value_changed = (ircd_strcmp(old_value, value) != 0); - + /* Update existing entry */ MyFree(entry->value); DupString(entry->value, value); entry->timestamp = timestamp; - + result = value_changed ? CONFIG_CHANGED : CONFIG_TIMESTAMP; } else { /* Create new entry */ @@ -121,18 +152,18 @@ int config_set(const char *key, const char *value, time_t timestamp) config_list = entry; result = CONFIG_CREATED; } - - Debug((DEBUG_DEBUG, "Config %s: %s = %s (timestamp: %lu)", - (result == CONFIG_CHANGED) ? "changed" : - (result == CONFIG_TIMESTAMP) ? "timestamp updated" : "set", + + Debug((DEBUG_DEBUG, "Config %s: %s = %s (timestamp: %lu)", + (result == CONFIG_CHANGED) ? "changed" : + (result == CONFIG_TIMESTAMP) ? "timestamp updated" : "set", key, value, (unsigned long)timestamp)); - + /* Call callbacks */ config_call_callbacks(key, old_value, value); - + if (old_value) MyFree(old_value); - + return result; } @@ -143,25 +174,11 @@ int config_set(const char *key, const char *value, time_t timestamp) const char *config_get(const char *key) { struct ConfigEntry *entry; - - assert(key != NULL); - - entry = config_find(key); - return entry ? entry->value : NULL; -} -/** Get the timestamp of a configuration option - * @param[in] key Configuration key - * @return Timestamp or 0 if not found - */ -time_t config_get_timestamp(const char *key) -{ - struct ConfigEntry *entry; - assert(key != NULL); - + entry = config_find(key); - return entry ? entry->timestamp : 0; + return entry ? entry->value : NULL; } /** Count the number of configuration entries @@ -171,10 +188,10 @@ static int config_count(void) { struct ConfigEntry *entry; int count = 0; - + for (entry = config_list; entry; entry = entry->next) count++; - + return count; } @@ -185,10 +202,10 @@ static int config_count(void) void config_register_callback(const char *key_prefix, config_callback_f callback) { struct ConfigCallback *cb; - + assert(key_prefix != NULL); assert(callback != NULL); - + /* Check if callback already exists */ for (cb = callback_list; cb; cb = cb->next) { if (ircd_strcmp(cb->key_prefix, key_prefix) == 0) { @@ -196,36 +213,36 @@ void config_register_callback(const char *key_prefix, config_callback_f callback return; } } - + /* Create new callback */ cb = MyMalloc(sizeof(struct ConfigCallback)); DupString(cb->key_prefix, key_prefix); cb->callback = callback; cb->next = callback_list; callback_list = cb; - + Debug((DEBUG_DEBUG, "Config callback registered for prefix: %s", key_prefix)); } -/** Unregister a callback for configuration changes +/** Unregister a callback for configuration changes * @param[in] key_prefix Key prefix that was registered */ void config_unregister_callback(const char *key_prefix) { struct ConfigCallback *cb, *prev = NULL; - + assert(key_prefix != NULL); - + for (cb = callback_list; cb; prev = cb, cb = cb->next) { if (ircd_strcmp(cb->key_prefix, key_prefix) == 0) { if (prev) prev->next = cb->next; else callback_list = cb->next; - + MyFree(cb->key_prefix); MyFree(cb); - + Debug((DEBUG_DEBUG, "Config callback unregistered for prefix: %s", key_prefix)); return; } @@ -238,13 +255,13 @@ void config_unregister_callback(const char *key_prefix) void config_burst(struct Client *cptr) { struct ConfigEntry *entry; - + for (entry = config_list; entry; entry = entry->next) { sendcmdto_one(&me, CMD_CONFIG, cptr, "%Tu %s %s", entry->timestamp, entry->key, entry->value); } - - Debug((DEBUG_INFO, "Config burst: %d entries sent to %s", + + Debug((DEBUG_INFO, "Config burst: %d entries sent to %s", config_count(), cli_name(cptr))); } @@ -256,10 +273,78 @@ void config_burst(struct Client *cptr) void config_stats(struct Client *sptr, const struct StatDesc *sd, char *param) { struct ConfigEntry *entry; - + for (entry = config_list; entry; entry = entry->next) { send_reply(sptr, SND_EXPLICIT | RPL_STATSDEBUG, "%Tu %s :%s", entry->timestamp, entry->key, entry->value); } -} \ No newline at end of file +} + +/** Find a netconf description by key + * @param[in] key NetConf enum key + * @return NetConf description or NULL if not found + */ +static struct NetConfDesc *netconf_find(enum NetConf key) +{ + int i; + + for (i = 0; netconf_descs[i].netconf != NETCONF_LAST_NC; i++) { + if (netconf_descs[i].netconf == key) + return &netconf_descs[i]; + } + + return NULL; +} + +/** Get integer value of a configuration option with default + * @param[in] key NetConf enum key + * @return Integer value (from config or default) + */ +int netconf_int(enum NetConf key) +{ + struct NetConfDesc *desc = netconf_find(key); + const char *value; + + assert(desc != NULL); + assert((desc->flags & NETCONF_MASK) == NETCONF_INT); + + value = config_get(desc->type); + return value ? atoi(value) : desc->def_int; +} + +/** Get boolean value of a configuration option with default + * @param[in] key NetConf enum key + * @return Boolean value (0 or 1, from config or default) + */ +int netconf_bool(enum NetConf key) +{ + struct NetConfDesc *desc = netconf_find(key); + const char *value; + + assert(desc != NULL); + assert((desc->flags & NETCONF_MASK) == NETCONF_BOOL); + + value = config_get(desc->type); + if (!value) return desc->def_int; + + return (ircd_strcmp(value, "true") == 0 || + ircd_strcmp(value, "1") == 0 || + ircd_strcmp(value, "yes") == 0) ? 1 : 0; +} + +/** Get string value of a configuration option with default + * @param[in] key NetConf enum key + * @return String value (from config or default) + */ +const char *netconf_str(enum NetConf key) +{ + struct NetConfDesc *desc = netconf_find(key); + const char *value; + + assert(desc != NULL); + assert((desc->flags & NETCONF_MASK) == NETCONF_STR); + + value = config_get(desc->type); + return value ? value : desc->def_str; +}