Committer : klmitch
CVSROOT : /cvsroot/undernet-ircu
Module : ircu2.10
Commit time: 2006-06-01 15:59:29 UTC
Modified files:
ChangeLog doc/example.conf doc/readme.features
include/ircd_features.h ircd/ircd_features.c ircd/s_stats.c
Log message:
Author: Kev <[EMAIL PROTECTED]>
Log message:
Add support for deprecating features and/or changing their names; use these
facilities to change the case-sensitive names of HIS_STATS_? features to
non-case-sensitive names using the long version of the /stats. The next
major release should remove the old HIS_STATS_? feature names and revert
the feature system to case-insensitive matching.
---------------------- diff included ----------------------
Index: ircu2.10/ChangeLog
diff -u ircu2.10/ChangeLog:1.775 ircu2.10/ChangeLog:1.776
--- ircu2.10/ChangeLog:1.775 Mon May 15 20:37:38 2006
+++ ircu2.10/ChangeLog Thu Jun 1 08:59:18 2006
@@ -1,3 +1,26 @@
+2006-06-01 Kevin L. Mitchell <[EMAIL PROTECTED]>
+
+ * ircd/ircd_features.c: add FEAT_DEP to mark deprecated features
+ with no replacement; create and use feat_type() macro to extract
+ the type of a feature from its flags
+
+ * doc/readme.features: update for new HIS_STATS_* names
+
+ * doc/example.conf: update for new HIS_STATS_* names
+
+2006-05-31 Kevin L. Mitchell <[EMAIL PROTECTED]>
+
+ * ircd/s_stats.c: use new names for controlling features
+
+ * ircd/ircd_features.c: add support for deprecated aliases for
+ features--allows a feature to be accessed by user or .conf by two
+ names, but warns when the deprecated name is used; change all
+ HIS_STATS_? features to aliases for the new names; remove
+ unnecessary HIS_STATS_M
+
+ * include/ircd_features.h: add features covering new names for
+ FEAT_HIS_STATS_?; remove unnecessary FEAT_HIS_STATS_M
+
2006-05-15 Michael Poole <[EMAIL PROTECTED]>
* ircd/s_auth.c (check_auth_finished): Only check passwords on
Index: ircu2.10/doc/example.conf
diff -u ircu2.10/doc/example.conf:1.68 ircu2.10/doc/example.conf:1.69
--- ircu2.10/doc/example.conf:1.68 Sun May 14 12:31:30 2006
+++ ircu2.10/doc/example.conf Thu Jun 1 08:59:18 2006
@@ -818,34 +818,33 @@
# "HIS_MAP" = "TRUE";
# "HIS_LINKS" = "TRUE";
# "HIS_TRACE" = "TRUE";
-# "HIS_STATS_a" = "TRUE";
-# "HIS_STATS_c" = "TRUE";
-# "HIS_STATS_d" = "TRUE";
-# "HIS_STATS_e" = "TRUE";
-# "HIS_STATS_f" = "TRUE";
-# "HIS_STATS_g" = "TRUE";
-# "HIS_STATS_i" = "TRUE";
-# "HIS_STATS_j" = "TRUE";
-# "HIS_STATS_J" = "TRUE";
-# "HIS_STATS_k" = "TRUE";
-# "HIS_STATS_l" = "TRUE";
-# "HIS_STATS_L" = "TRUE";
-# "HIS_STATS_m" = "TRUE";
-# "HIS_STATS_M" = "TRUE";
-# "HIS_STATS_o" = "TRUE";
-# "HIS_STATS_p" = "TRUE";
-# "HIS_STATS_q" = "TRUE";
-# "HIS_STATS_r" = "TRUE";
-# "HIS_STATS_R" = "TRUE";
-# "HIS_STATS_t" = "TRUE";
-# "HIS_STATS_T" = "TRUE";
-# "HIS_STATS_u" = "FALSE";
-# "HIS_STATS_U" = "TRUE";
-# "HIS_STATS_v" = "TRUE";
-# "HIS_STATS_w" = "TRUE";
-# "HIS_STATS_x" = "TRUE";
-# "HIS_STATS_y" = "TRUE";
-# "HIS_STATS_z" = "TRUE";
+# "HIS_STATS_NAMESERVERS" = "TRUE";
+# "HIS_STATS_CONNECT" = "TRUE";
+# "HIS_STATS_CRULES" = "TRUE";
+# "HIS_STATS_ENGINE" = "TRUE";
+# "HIS_STATS_FEATURES" = "TRUE";
+# "HIS_STATS_GLINES" = "TRUE";
+# "HIS_STATS_ACCESS" = "TRUE";
+# "HIS_STATS_HISTOGRAM" = "TRUE";
+# "HIS_STATS_JUPES" = "TRUE";
+# "HIS_STATS_KLINES" = "TRUE";
+# "HIS_STATS_LINKS" = "TRUE";
+# "HIS_STATS_MODULES" = "TRUE";
+# "HIS_STATS_COMMANDS" = "TRUE";
+# "HIS_STATS_OPERATORS" = "TRUE";
+# "HIS_STATS_PORTS" = "TRUE";
+# "HIS_STATS_QUARANTINES" = "TRUE";
+# "HIS_STATS_MAPPINGS" = "TRUE";
+# "HIS_STATS_USAGE" = "TRUE";
+# "HIS_STATS_LOCALS" = "TRUE";
+# "HIS_STATS_MOTDS" = "TRUE";
+# "HIS_STATS_UPTIME" = "FALSE";
+# "HIS_STATS_UWORLD" = "TRUE";
+# "HIS_STATS_VSERVERS" = "TRUE";
+# "HIS_STATS_USERLOAD" = "TRUE";
+# "HIS_STATS_MEMUSAGE" = "TRUE";
+# "HIS_STATS_CLASSES" = "TRUE";
+# "HIS_STATS_MEMORY" = "TRUE";
# "HIS_STATS_IAUTH" = "TRUE";
# "HIS_WHOIS_SERVERNAME" = "TRUE";
# "HIS_WHOIS_IDLETIME" = "TRUE";
Index: ircu2.10/doc/readme.features
diff -u ircu2.10/doc/readme.features:1.23 ircu2.10/doc/readme.features:1.24
--- ircu2.10/doc/readme.features:1.23 Thu Apr 6 20:27:51 2006
+++ ircu2.10/doc/readme.features Thu Jun 1 08:59:19 2006
@@ -486,169 +486,163 @@
As per UnderNet CFV-165, this removes /TRACE from users.
-HIS_STATS_a
+HIS_STATS_NAMESERVERS
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS a from users.
-HIS_STATS_l
+HIS_STATS_LINKS
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS l from users.
-HIS_STATS_L
+HIS_STATS_MODULES
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS L from users.
-HIS_STATS_c
+HIS_STATS_CONNECT
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS c from users.
-HIS_STATS_g
+HIS_STATS_GLINES
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS g from users.
-HIS_STATS_k
+HIS_STATS_KLINES
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS k from users.
-HIS_STATS_f
+HIS_STATS_FEATURES
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS f from users.
-HIS_STATS_i
+HIS_STATS_ACCESS
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS i from users.
-HIS_STATS_j
+HIS_STATS_HISTOGRAM
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS j from users.
-HIS_STATS_J
+HIS_STATS_JUPES
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS J from users.
-HIS_STATS_M
- * Type: boolean
- * Default: TRUE
-
-As per UnderNet CFV-165, this removes /STATS M from users.
-
-HIS_STATS_m
+HIS_STATS_COMMANDS
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS m from users.
-HIS_STATS_o
+HIS_STATS_OPERATORS
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS o from users.
-HIS_STATS_p
+HIS_STATS_PORTS
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS p from users.
-HIS_STATS_q
+HIS_STATS_QUARANTINES
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS q from users.
-HIS_STATS_r
+HIS_STATS_USAGE
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS r from users.
-HIS_STATS_R
+HIS_STATS_MAPPINGS
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS R from users.
-HIS_STATS_d
+HIS_STATS_CRULES
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS d from users.
-HIS_STATS_e
+HIS_STATS_ENGINE
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS e from users.
-HIS_STATS_t
+HIS_STATS_LOCALS
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS t from users.
-HIS_STATS_T
+HIS_STATS_MOTDS
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS T from users.
-HIS_STATS_u
+HIS_STATS_UPTIME
* Type: boolean
* Default: FALSE
As per UnderNet CFV-165, this allows users to perform /STATS u.
-HIS_STATS_U
+HIS_STATS_UWORLD
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS U from users.
-HIS_STATS_v
+HIS_STATS_VSERVERS
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS v from users.
-HIS_STATS_w
+HIS_STATS_USERLOAD
* Type: boolean
* Default: FALSE
As per UnderNet CFV-165, this allows users to perform /STATS w.
-HIS_STATS_x
+HIS_STATS_MEMUSAGE
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS x from users.
-HIS_STATS_y
+HIS_STATS_CLASSES
* Type: boolean
* Default: TRUE
As per UnderNet CFV-165, this removes /STATS y from users.
-HIS_STATS_z
+HIS_STATS_MEMORY
* Type: boolean
* Default: TRUE
Index: ircu2.10/include/ircd_features.h
diff -u ircu2.10/include/ircd_features.h:1.42
ircu2.10/include/ircd_features.h:1.43
--- ircu2.10/include/ircd_features.h:1.42 Thu Apr 6 20:27:51 2006
+++ ircu2.10/include/ircd_features.h Thu Jun 1 08:59:19 2006
@@ -20,7 +20,7 @@
*/
/** @file
* @brief Public interfaces and declarations for dealing with configurable
features.
- * @version $Id: ircd_features.h,v 1.42 2006/04/07 03:27:51 entrope Exp $
+ * @version $Id: ircd_features.h,v 1.43 2006/06/01 15:59:19 klmitch Exp $
*/
struct Client;
@@ -109,33 +109,59 @@
FEAT_HIS_LINKS,
FEAT_HIS_TRACE,
FEAT_HIS_STATS_a,
+ FEAT_HIS_STATS_NAMESERVERS,
FEAT_HIS_STATS_c,
+ FEAT_HIS_STATS_CONNECT,
FEAT_HIS_STATS_d,
+ FEAT_HIS_STATS_CRULES,
FEAT_HIS_STATS_e,
+ FEAT_HIS_STATS_ENGINE,
FEAT_HIS_STATS_f,
+ FEAT_HIS_STATS_FEATURES,
FEAT_HIS_STATS_g,
+ FEAT_HIS_STATS_GLINES,
FEAT_HIS_STATS_i,
+ FEAT_HIS_STATS_ACCESS,
FEAT_HIS_STATS_j,
+ FEAT_HIS_STATS_HISTOGRAM,
FEAT_HIS_STATS_J,
+ FEAT_HIS_STATS_JUPES,
FEAT_HIS_STATS_k,
+ FEAT_HIS_STATS_KLINES,
FEAT_HIS_STATS_l,
+ FEAT_HIS_STATS_LINKS,
FEAT_HIS_STATS_L,
- FEAT_HIS_STATS_M,
+ FEAT_HIS_STATS_MODULES,
FEAT_HIS_STATS_m,
+ FEAT_HIS_STATS_COMMANDS,
FEAT_HIS_STATS_o,
+ FEAT_HIS_STATS_OPERATORS,
FEAT_HIS_STATS_p,
+ FEAT_HIS_STATS_PORTS,
FEAT_HIS_STATS_q,
+ FEAT_HIS_STATS_QUARANTINES,
FEAT_HIS_STATS_R,
+ FEAT_HIS_STATS_MAPPINGS,
FEAT_HIS_STATS_r,
+ FEAT_HIS_STATS_USAGE,
FEAT_HIS_STATS_t,
+ FEAT_HIS_STATS_LOCALS,
FEAT_HIS_STATS_T,
+ FEAT_HIS_STATS_MOTDS,
FEAT_HIS_STATS_u,
+ FEAT_HIS_STATS_UPTIME,
FEAT_HIS_STATS_U,
+ FEAT_HIS_STATS_UWORLD,
FEAT_HIS_STATS_v,
+ FEAT_HIS_STATS_VSERVERS,
FEAT_HIS_STATS_w,
+ FEAT_HIS_STATS_USERLOAD,
FEAT_HIS_STATS_x,
+ FEAT_HIS_STATS_MEMUSAGE,
FEAT_HIS_STATS_y,
+ FEAT_HIS_STATS_CLASSES,
FEAT_HIS_STATS_z,
+ FEAT_HIS_STATS_MEMORY,
FEAT_HIS_STATS_IAUTH,
FEAT_HIS_WHOIS_SERVERNAME,
FEAT_HIS_WHOIS_IDLETIME,
Index: ircu2.10/ircd/ircd_features.c
diff -u ircu2.10/ircd/ircd_features.c:1.56 ircu2.10/ircd/ircd_features.c:1.57
--- ircu2.10/ircd/ircd_features.c:1.56 Thu Apr 6 20:27:50 2006
+++ ircu2.10/ircd/ircd_features.c Thu Jun 1 08:59:19 2006
@@ -18,7 +18,7 @@
*/
/** @file
* @brief Implementation of configurable feature support.
- * @version $Id: ircd_features.c,v 1.56 2006/04/07 03:27:50 entrope Exp $
+ * @version $Id: ircd_features.c,v 1.57 2006/06/01 15:59:19 klmitch Exp $
*/
#include "config.h"
@@ -286,8 +286,13 @@
#define FEAT_INT 0x0001 /**< set if entry contains an integer value */
#define FEAT_BOOL 0x0002 /**< set if entry contains a boolean value */
#define FEAT_STR 0x0003 /**< set if entry contains a string value */
+#define FEAT_ALIAS 0x0004 /**< set if entry is alias for another entry */
+#define FEAT_DEP 0x0005 /**< set if entry is deprecated feature */
#define FEAT_MASK 0x000f /**< possible value types */
+/** Extract just the feature type from a feature descriptor. */
+#define feat_type(feat) ((feat)->flags & FEAT_MASK)
+
#define FEAT_MARK 0x0010 /**< set if entry has been changed */
#define FEAT_NULL 0x0020 /**< NULL string is permitted */
#define FEAT_CASE 0x0040 /**< string is case-sensitive */
@@ -314,6 +319,13 @@
#define F_S(type, flags, v_str, notify)
\
{ FEAT_ ## type, #type, FEAT_STR | (flags), 0, 0, 0, (v_str),
\
0, 0, 0, (notify), 0, 0, 0 }
+/** Declare a feature as an alias for another feature. */
+#define F_A(type, alias) \
+ { FEAT_ ## type, #type, FEAT_ALIAS, 0, FEAT_ ## alias, 0, 0, \
+ 0, 0, 0, 0, 0, 0, 0 }
+/** Declare a feature as deprecated. */
+#define F_D(type) \
+ { FEAT_ ## type, #type, FEAT_DEP, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
/** Table of feature descriptions. */
static struct FeatureDesc {
@@ -409,34 +421,60 @@
F_B(HIS_MAP, 0, 1, 0),
F_B(HIS_LINKS, 0, 1, 0),
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_d, 0, 1, 0),
- F_B(HIS_STATS_e, 0, 1, 0),
- F_B(HIS_STATS_f, 0, 1, 0),
- F_B(HIS_STATS_g, 0, 1, 0),
- F_B(HIS_STATS_i, 0, 1, 0),
- F_B(HIS_STATS_j, 0, 1, 0),
- F_B(HIS_STATS_J, 0, 1, 0),
- 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_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_t, 0, 1, 0),
- F_B(HIS_STATS_T, 0, 1, 0),
- F_B(HIS_STATS_u, 0, 0, 0),
- F_B(HIS_STATS_U, 0, 1, 0),
- F_B(HIS_STATS_v, 0, 1, 0),
- F_B(HIS_STATS_w, 0, 0, 0),
- F_B(HIS_STATS_x, 0, 1, 0),
- F_B(HIS_STATS_y, 0, 1, 0),
- F_B(HIS_STATS_z, 0, 1, 0),
+ F_A(HIS_STATS_a, HIS_STATS_NAMESERVERS),
+ F_B(HIS_STATS_NAMESERVERS, 0, 1, 0),
+ F_A(HIS_STATS_c, HIS_STATS_CONNECT),
+ F_B(HIS_STATS_CONNECT, 0, 1, 0),
+ F_A(HIS_STATS_d, HIS_STATS_CRULES),
+ F_B(HIS_STATS_CRULES, 0, 1, 0),
+ F_A(HIS_STATS_e, HIS_STATS_ENGINE),
+ F_B(HIS_STATS_ENGINE, 0, 1, 0),
+ F_A(HIS_STATS_f, HIS_STATS_FEATURES),
+ F_B(HIS_STATS_FEATURES, 0, 1, 0),
+ F_A(HIS_STATS_g, HIS_STATS_GLINES),
+ F_B(HIS_STATS_GLINES, 0, 1, 0),
+ F_A(HIS_STATS_i, HIS_STATS_ACCESS),
+ F_B(HIS_STATS_ACCESS, 0, 1, 0),
+ F_A(HIS_STATS_j, HIS_STATS_HISTOGRAM),
+ F_B(HIS_STATS_HISTOGRAM, 0, 1, 0),
+ F_A(HIS_STATS_J, HIS_STATS_JUPES),
+ F_B(HIS_STATS_JUPES, 0, 1, 0),
+ F_A(HIS_STATS_k, HIS_STATS_KLINES),
+ F_B(HIS_STATS_KLINES, 0, 1, 0),
+ F_A(HIS_STATS_l, HIS_STATS_LINKS),
+ F_B(HIS_STATS_LINKS, 0, 1, 0),
+ F_A(HIS_STATS_L, HIS_STATS_MODULES),
+ F_B(HIS_STATS_MODULES, 0, 1, 0),
+ F_A(HIS_STATS_m, HIS_STATS_COMMANDS),
+ F_B(HIS_STATS_COMMANDS, 0, 1, 0),
+ F_A(HIS_STATS_o, HIS_STATS_OPERATORS),
+ F_B(HIS_STATS_OPERATORS, 0, 1, 0),
+ F_A(HIS_STATS_p, HIS_STATS_PORTS),
+ F_B(HIS_STATS_PORTS, 0, 1, 0),
+ F_A(HIS_STATS_q, HIS_STATS_QUARANTINES),
+ F_B(HIS_STATS_QUARANTINES, 0, 1, 0),
+ F_A(HIS_STATS_R, HIS_STATS_MAPPINGS),
+ F_B(HIS_STATS_MAPPINGS, 0, 1, 0),
+ F_A(HIS_STATS_r, HIS_STATS_USAGE),
+ F_B(HIS_STATS_USAGE, 0, 1, 0),
+ F_A(HIS_STATS_t, HIS_STATS_LOCALS),
+ F_B(HIS_STATS_LOCALS, 0, 1, 0),
+ F_A(HIS_STATS_T, HIS_STATS_MOTDS),
+ F_B(HIS_STATS_MOTDS, 0, 1, 0),
+ F_A(HIS_STATS_u, HIS_STATS_UPTIME),
+ F_B(HIS_STATS_UPTIME, 0, 0, 0),
+ F_A(HIS_STATS_U, HIS_STATS_UWORLD),
+ F_B(HIS_STATS_UWORLD, 0, 1, 0),
+ F_A(HIS_STATS_v, HIS_STATS_VSERVERS),
+ F_B(HIS_STATS_VSERVERS, 0, 1, 0),
+ F_A(HIS_STATS_w, HIS_STATS_USERLOAD),
+ F_B(HIS_STATS_USERLOAD, 0, 0, 0),
+ F_A(HIS_STATS_x, HIS_STATS_MEMUSAGE),
+ F_B(HIS_STATS_MEMUSAGE, 0, 1, 0),
+ F_A(HIS_STATS_y, HIS_STATS_CLASSES),
+ F_B(HIS_STATS_CLASSES, 0, 1, 0),
+ F_A(HIS_STATS_z, HIS_STATS_MEMORY),
+ F_B(HIS_STATS_MEMORY, 0, 1, 0),
F_B(HIS_STATS_IAUTH, 0, 1, 0),
F_B(HIS_WHOIS_SERVERNAME, 0, 1, 0),
F_B(HIS_WHOIS_IDLETIME, 0, 1, 0),
@@ -477,8 +515,30 @@
assert(0 != feature);
for (i = 0; features[i].type; i++) /* find appropriate descriptor */
- if (!strcmp(feature, features[i].type))
+ if (!strcmp(feature, features[i].type)) {
+ if (feat_type(&features[i]) == FEAT_ALIAS) {
+ Debug((DEBUG_NOTICE, "Deprecated feature \"%s\" referenced; replace "
+ "with %s", feature, features[features[i].def_int].type));
+ if (from) /* report a warning */
+ send_reply(from, SND_EXPLICIT | ERR_NOFEATURE,
+ "%s :Feature deprecated, use %s", feature,
+ features[features[i].def_int].type);
+ else
+ log_write(LS_CONFIG, L_WARNING, 0, "Feature \"%s\" deprecated, "
+ "use \"%s\"", feature, features[features[i].def_int].type);
+
+ return &features[features[i].def_int];
+ } else if (feat_type(&features[i]) == FEAT_DEP) {
+ Debug((DEBUG_NOTICE, "Deprecated feature \"%s\" referenced", feature));
+ if (from) /* report a warning */
+ send_reply(from, SND_EXPLICIT | ERR_NOFEATURE,
+ "%s :Feature deprecated", feature);
+ else
+ log_write(LS_CONFIG, L_WARNING, 0, "Feature \"%s\" deprecated",
+ feature);
+ }
return &features[i];
+ }
Debug((DEBUG_ERROR, "Unknown feature \"%s\"", feature));
if (from) /* report an error */
@@ -514,7 +574,7 @@
if (from && feat->flags & FEAT_READ)
return send_reply(from, ERR_NOFEATURE, fields[0]);
- switch (feat->flags & FEAT_MASK) {
+ switch (feat_type(feat)) {
case FEAT_NONE:
if (feat->set && (i = (*feat->set)(from, fields + 1, count - 1))) {
change++; /* feature handler wants a change recorded */
@@ -665,7 +725,7 @@
if (from && feat->flags & FEAT_READ)
return send_reply(from, ERR_NOFEATURE, fields[0]);
- switch (feat->flags & FEAT_MASK) {
+ switch (feat_type(feat)) {
case FEAT_NONE: /* None... */
if (feat->reset && (i = (*feat->reset)(from, fields + 1, count - 1))) {
change++; /* feature handler wants a change recorded */
@@ -726,7 +786,7 @@
(feat->flags & FEAT_OPER && !IsAnOper(from))) /* check privs */
return send_reply(from, ERR_NOPRIVILEGES);
- switch (feat->flags & FEAT_MASK) {
+ switch (feat_type(feat)) {
case FEAT_NONE: /* none, call the callback... */
if (feat->get) /* if there's a callback, use it */
(*feat->get)(from, fields + 1, count - 1);
@@ -779,7 +839,7 @@
for (i = 0; features[i].type; i++) {
change = 0;
- switch (features[i].flags & FEAT_MASK) {
+ switch (feat_type(&features[i])) {
case FEAT_NONE:
if (features[i].mark &&
(*features[i].mark)(features[i].flags & FEAT_MARK ? 1 : 0))
@@ -819,7 +879,7 @@
int i;
for (i = 0; features[i].type; i++) {
- switch (features[i].flags & FEAT_MASK) {
+ switch (feat_type(&features[i])) {
case FEAT_NONE: /* you're on your own */
break;
@@ -857,7 +917,7 @@
(features[i].flags & FEAT_OPER && !IsAnOper(to)))
continue; /* skip this one */
- switch (features[i].flags & FEAT_MASK) {
+ switch (feat_type(&features[i])) {
case FEAT_NONE:
if (features[i].report) /* let the callback handle this */
(*features[i].report)(to, features[i].flags & FEAT_MARK ? 1 : 0);
@@ -898,7 +958,7 @@
feature_int(enum Feature feat)
{
assert(features[feat].feat == feat);
- assert((features[feat].flags & FEAT_MASK) == FEAT_INT);
+ assert(feat_type(&features[feat]) == FEAT_INT);
return features[feat].v_int;
}
@@ -914,7 +974,7 @@
if (FEAT_LAST_F < feat)
return 0;
assert(features[feat].feat == feat);
- assert((features[feat].flags & FEAT_MASK) == FEAT_BOOL);
+ assert(feat_type(&features[feat]) == FEAT_BOOL);
return features[feat].v_int;
}
@@ -927,7 +987,7 @@
feature_str(enum Feature feat)
{
assert(features[feat].feat == feat);
- assert((features[feat].flags & FEAT_MASK) == FEAT_STR);
+ assert(feat_type(&features[feat]) == FEAT_STR);
return features[feat].v_str;
}
Index: ircu2.10/ircd/s_stats.c
diff -u ircu2.10/ircd/s_stats.c:1.49 ircu2.10/ircd/s_stats.c:1.50
--- ircu2.10/ircd/s_stats.c:1.49 Thu Apr 6 20:27:50 2006
+++ ircu2.10/ircd/s_stats.c Thu Jun 1 08:59:19 2006
@@ -63,7 +63,7 @@
/** @file
* @brief Report configuration lines and other statistics from this
* server.
- * @version $Id: s_stats.c,v 1.49 2006/04/07 03:27:50 entrope Exp $
+ * @version $Id: s_stats.c,v 1.50 2006/06/01 15:59:19 klmitch Exp $
*
* Note: The info is reported in the order the server uses
* it--not reversed as in ircd.conf!
@@ -103,95 +103,95 @@
/** Contains information about all statistics. */
static struct StatDesc statsinfo[] = {
- { 'a', "nameservers", STAT_FLAG_OPERFEAT|STAT_FLAG_LOCONLY, FEAT_HIS_STATS_a,
+ { 'a', "nameservers", STAT_FLAG_OPERFEAT|STAT_FLAG_LOCONLY,
FEAT_HIS_STATS_NAMESERVERS,
report_dns_servers, 0,
"DNS servers." },
- { 'c', "connect", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_c,
+ { 'c', "connect", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_CONNECT,
stats_configured_links, CONF_SERVER,
"Remote server connection lines." },
- { 'd', "maskrules", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS),
FEAT_HIS_STATS_d,
+ { 'd', "maskrules", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS),
FEAT_HIS_STATS_CRULES,
stats_crule_list, CRULE_MASK,
"Dynamic routing configuration." },
- { 'D', "crules", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS), FEAT_HIS_STATS_d,
+ { 'D', "crules", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS),
FEAT_HIS_STATS_CRULES,
stats_crule_list, CRULE_ALL,
"Dynamic routing configuration." },
- { 'e', "engine", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_e,
+ { 'e', "engine", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_ENGINE,
stats_engine, 0,
"Report server event loop engine." },
- { 'f', "features", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_f,
+ { 'f', "features", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_FEATURES,
feature_report, 0,
"Feature settings." },
- { 'g', "glines", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_g,
+ { 'g', "glines", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_GLINES,
gline_stats, 0,
"Global bans (G-lines)." },
- { 'i', "access", (STAT_FLAG_OPERFEAT | STAT_FLAG_VARPARAM), FEAT_HIS_STATS_i,
+ { 'i', "access", (STAT_FLAG_OPERFEAT | STAT_FLAG_VARPARAM),
FEAT_HIS_STATS_ACCESS,
stats_access, CONF_CLIENT,
"Connection authorization lines." },
- { 'j', "histogram", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS),
FEAT_HIS_STATS_j,
+ { 'j', "histogram", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS),
FEAT_HIS_STATS_HISTOGRAM,
msgq_histogram, 0,
"Message length histogram." },
- { 'J', "jupes", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS), FEAT_HIS_STATS_J,
+ { 'J', "jupes", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS),
FEAT_HIS_STATS_JUPES,
stats_nickjupes, 0,
"Nickname jupes." },
- { 'k', "klines", (STAT_FLAG_OPERFEAT | STAT_FLAG_VARPARAM), FEAT_HIS_STATS_k,
+ { 'k', "klines", (STAT_FLAG_OPERFEAT | STAT_FLAG_VARPARAM),
FEAT_HIS_STATS_KLINES,
stats_klines, 0,
"Local bans (K-Lines)." },
{ 'l', "links", (STAT_FLAG_OPERFEAT | STAT_FLAG_VARPARAM |
STAT_FLAG_CASESENS),
- FEAT_HIS_STATS_l,
+ FEAT_HIS_STATS_LINKS,
stats_links, 0,
"Current connections information." },
{ 'L', "modules", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS),
- FEAT_HIS_STATS_L,
+ FEAT_HIS_STATS_MODULES,
stats_modules, 0,
"Dynamically loaded modules." },
- { 'm', "commands", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS),
FEAT_HIS_STATS_m,
+ { 'm', "commands", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS),
FEAT_HIS_STATS_COMMANDS,
stats_commands, 0,
"Message usage information." },
- { 'o', "operators", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_o,
+ { 'o', "operators", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_OPERATORS,
stats_configured_links, CONF_OPERATOR,
"Operator information." },
- { 'p', "ports", (STAT_FLAG_OPERFEAT | STAT_FLAG_VARPARAM), FEAT_HIS_STATS_p,
+ { 'p', "ports", (STAT_FLAG_OPERFEAT | STAT_FLAG_VARPARAM),
FEAT_HIS_STATS_PORTS,
show_ports, 0,
"Listening ports." },
- { 'q', "quarantines", (STAT_FLAG_OPERONLY | STAT_FLAG_VARPARAM),
FEAT_HIS_STATS_q,
+ { 'q', "quarantines", (STAT_FLAG_OPERONLY | STAT_FLAG_VARPARAM),
FEAT_HIS_STATS_QUARANTINES,
stats_quarantine, 0,
"Quarantined channels list." },
- { 'R', "mappings", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS),
FEAT_HIS_STATS_R,
+ { 'R', "mappings", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS),
FEAT_HIS_STATS_MAPPINGS,
stats_mapping, 0,
"Service mappings." },
#ifdef DEBUGMODE
- { 'r', "usage", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS), FEAT_HIS_STATS_r,
+ { 'r', "usage", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS),
FEAT_HIS_STATS_USAGE,
send_usage, 0,
"System resource usage (Debug only)." },
#endif
- { 'T', "motds", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS), FEAT_HIS_STATS_T,
+ { 'T', "motds", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS),
FEAT_HIS_STATS_MOTDS,
motd_report, 0,
"Configured Message Of The Day files." },
- { 't', "locals", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS), FEAT_HIS_STATS_t,
+ { 't', "locals", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS),
FEAT_HIS_STATS_LOCALS,
tstats, 0,
"Local connection statistics (Total SND/RCV, etc)." },
- { 'U', "uworld", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS), FEAT_HIS_STATS_U,
+ { 'U', "uworld", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS),
FEAT_HIS_STATS_UWORLD,
stats_configured_links, CONF_UWORLD,
"Service server information." },
- { 'u', "uptime", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS), FEAT_HIS_STATS_u,
+ { 'u', "uptime", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS),
FEAT_HIS_STATS_UPTIME,
stats_uptime, 0,
"Current uptime & highest connection count." },
- { 'v', "vservers", (STAT_FLAG_OPERFEAT | STAT_FLAG_VARPARAM |
STAT_FLAG_CASESENS), FEAT_HIS_STATS_v,
+ { 'v', "vservers", (STAT_FLAG_OPERFEAT | STAT_FLAG_VARPARAM |
STAT_FLAG_CASESENS), FEAT_HIS_STATS_VSERVERS,
stats_servers_verbose, 1,
"Verbose server information." },
- { 'V', "vserversmach", (STAT_FLAG_OPERFEAT | STAT_FLAG_VARPARAM |
STAT_FLAG_CASESENS), FEAT_HIS_STATS_v,
+ { 'V', "vserversmach", (STAT_FLAG_OPERFEAT | STAT_FLAG_VARPARAM |
STAT_FLAG_CASESENS), FEAT_HIS_STATS_VSERVERS,
stats_servers_verbose, 0,
"Verbose server information." },
- { 'w', "userload", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_w,
+ { 'w', "userload", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_USERLOAD,
calc_load, 0,
"Userload statistics." },
- { 'x', "memusage", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_x,
+ { 'x', "memusage", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_MEMUSAGE,
stats_meminfo, 0,
"List usage information." },
- { 'y', "classes", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_y,
+ { 'y', "classes", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_CLASSES,
report_classes, 0,
"Connection classes." },
- { 'z', "memory", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_z,
+ { 'z', "memory", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_MEMORY,
count_memory, 0,
"Memory/Structure allocation information." },
{ '*', "help", STAT_FLAG_CASESENS, FEAT_LAST_F,
----------------------- End of diff -----------------------
_______________________________________________
Patches mailing list
[email protected]
http://undernet.sbg.org/mailman/listinfo/patches