summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contrib/m_operspy.c4
-rw-r--r--contrib/m_webirc.c27
-rw-r--r--include/conf.h197
-rw-r--r--include/hash.h8
-rw-r--r--include/hostmask.h20
-rw-r--r--include/resv.h19
-rw-r--r--include/s_bsd.h2
-rw-r--r--include/s_gline.h4
-rw-r--r--include/s_serv.h8
-rw-r--r--modules/core/m_nick.c4
-rw-r--r--modules/core/m_server.c22
-rw-r--r--modules/m_challenge.c27
-rw-r--r--modules/m_connect.c67
-rw-r--r--modules/m_dline.c76
-rw-r--r--modules/m_etrace.c3
-rw-r--r--modules/m_gline.c30
-rw-r--r--modules/m_hash.c4
-rw-r--r--modules/m_kline.c76
-rw-r--r--modules/m_locops.c2
-rw-r--r--modules/m_oper.c11
-rw-r--r--modules/m_resv.c60
-rw-r--r--modules/m_set.c9
-rw-r--r--modules/m_stats.c255
-rw-r--r--modules/m_svsmode.c2
-rw-r--r--modules/m_testline.c54
-rw-r--r--modules/m_trace.c21
-rw-r--r--modules/m_xline.c55
-rw-r--r--src/Makefile.am1
-rw-r--r--src/Makefile.in35
-rw-r--r--src/channel.c2
-rw-r--r--src/channel_mode.c2
-rw-r--r--src/client.c61
-rw-r--r--src/conf.c1207
-rw-r--r--src/conf_db.c171
-rw-r--r--src/conf_parser.c1226
-rw-r--r--src/conf_parser.h2
-rw-r--r--src/conf_parser.y442
-rw-r--r--src/hash.c22
-rw-r--r--src/hostmask.c120
-rw-r--r--src/ircd.c5
-rw-r--r--src/packet.c2
-rw-r--r--src/resv.c74
-rw-r--r--src/s_bsd.c10
-rw-r--r--src/s_gline.c10
-rw-r--r--src/s_serv.c180
-rw-r--r--src/s_user.c66
-rw-r--r--src/send.c4
47 files changed, 1931 insertions, 2778 deletions
diff --git a/contrib/m_operspy.c b/contrib/m_operspy.c
index e690be6..59356be 100644
--- a/contrib/m_operspy.c
+++ b/contrib/m_operspy.c
@@ -566,7 +566,7 @@ do_who_on_channel(struct Client *source_p, struct Channel *chptr,
static void
operspy_log(struct Client *source_p, const char *command, const char *target)
{
- struct ConfItem *conf = NULL;
+ struct MaskItem *conf = NULL;
#ifdef OPERSPY_LOGFILE
FILE *operspy_fb;
dlink_node *cnode;
@@ -583,7 +583,7 @@ operspy_log(struct Client *source_p, const char *command, const char *target)
{
conf = cnode->data;
- if (conf->type == OPER_TYPE)
+ if (conf->type == CONF_OPER)
opername = conf->name;
}
}
diff --git a/contrib/m_webirc.c b/contrib/m_webirc.c
index 72d688b..b3394c9 100644
--- a/contrib/m_webirc.c
+++ b/contrib/m_webirc.c
@@ -93,8 +93,7 @@ invalid_hostname(const char *hostname)
static void
mr_webirc(struct Client *client_p, struct Client *source_p, int parc, char *parv[])
{
- struct AccessItem *aconf = NULL;
- struct ConfItem *conf = NULL;
+ struct MaskItem *conf = NULL;
struct addrinfo hints, *res;
assert(source_p == client_p);
@@ -106,30 +105,28 @@ mr_webirc(struct Client *client_p, struct Client *source_p, int parc, char *parv
return;
}
- aconf = find_address_conf(source_p->host,
- IsGotId(source_p) ? source_p->username : "webirc",
- &source_p->localClient->ip,
- source_p->localClient->aftype, parv[1]);
- if (aconf == NULL || !IsConfClient(aconf))
+ conf = find_address_conf(source_p->host,
+ IsGotId(source_p) ? source_p->username : "webirc",
+ &source_p->localClient->ip,
+ source_p->localClient->aftype, parv[1]);
+ if (conf == NULL || !IsConfClient(conf))
return;
- conf = unmap_conf_item(aconf);
-
- if (!IsConfDoSpoofIp(aconf) || irccmp(conf->name, "webirc."))
+ if (!IsConfDoSpoofIp(conf) || irccmp(conf->name, "webirc."))
{
sendto_one(source_p, ":%s NOTICE %s :Not a CGI:IRC auth block", me.name,
source_p->name[0] ? source_p->name : "*");
return;
}
- if (EmptyString(aconf->passwd))
+ if (EmptyString(conf->passwd))
{
sendto_one(source_p, ":%s NOTICE %s :CGI:IRC auth blocks must have a password",
me.name, source_p->name[0] ? source_p->name : "*");
return;
}
- if (!match_conf_password(parv[1], aconf))
+ if (!match_conf_password(parv[1], conf))
{
sendto_one(source_p, ":%s NOTICE %s :CGI:IRC password incorrect",
me.name, source_p->name[0] ? source_p->name : "*");
@@ -166,10 +163,10 @@ mr_webirc(struct Client *client_p, struct Client *source_p, int parc, char *parv
strlcpy(source_p->host, source_p->sockhost, sizeof(source_p->host));
/* Check dlines now, k/glines will be checked on registration */
- if ((aconf = find_dline_conf(&client_p->localClient->ip,
- client_p->localClient->aftype)))
+ if ((conf = find_dline_conf(&client_p->localClient->ip,
+ client_p->localClient->aftype)))
{
- if (!(aconf->status & CONF_EXEMPTDLINE))
+ if (!(conf->status & CONF_EXEMPTDLINE))
{
exit_client(client_p, &me, "D-lined");
return;
diff --git a/include/conf.h b/include/conf.h
index ac5766b..81648d4 100644
--- a/include/conf.h
+++ b/include/conf.h
@@ -32,9 +32,9 @@
#include "motd.h" /* MessageFile */
#include "client.h"
#include "hook.h"
+#include "conf_class.h"
-struct Client;
extern struct Callback *client_check_cb;
@@ -47,28 +47,27 @@ struct conf_parser_context
extern struct conf_parser_context conf_parser_ctx;
-typedef enum
-{
- CONF_TYPE,
- CLASS_TYPE,
- OPER_TYPE,
- CLIENT_TYPE,
- SERVER_TYPE,
- HUB_TYPE,
- LEAF_TYPE,
- KLINE_TYPE,
- DLINE_TYPE,
- EXEMPTDLINE_TYPE,
- CLUSTER_TYPE,
- RKLINE_TYPE,
- RXLINE_TYPE,
- XLINE_TYPE,
- ULINE_TYPE,
- GLINE_TYPE,
- CRESV_TYPE,
- NRESV_TYPE,
- SERVICE_TYPE
-} ConfType;
+enum maskitem_type
+{
+ CONF_RESERVED = 1 << 0, /* XXX */
+ CONF_CLIENT = 1 << 1,
+ CONF_SERVER = 1 << 2,
+ CONF_KLINE = 1 << 3,
+ CONF_DLINE = 1 << 4,
+ CONF_EXEMPT = 1 << 5,
+ CONF_CLUSTER = 1 << 6,
+ CONF_RKLINE = 1 << 7,
+ CONF_RXLINE = 1 << 8,
+ CONF_XLINE = 1 << 9,
+ CONF_ULINE = 1 << 10,
+ CONF_GLINE = 1 << 11,
+ CONF_CRESV = 1 << 12,
+ CONF_NRESV = 1 << 13,
+ CONF_SERVICE = 1 << 14,
+ CONF_OPER = 1 << 15,
+ CONF_HUB = 1 << 16, /* XXX There are no separate hub/leaf configs anymore. This is just for /stats h */
+ CONF_CLASS = 1 << 17
+};
struct split_nuh_item
{
@@ -84,48 +83,27 @@ struct split_nuh_item
size_t hostsize;
};
-struct ConfItem
-{
- dlink_node node; /* link into known ConfItems of this type */
-
- char *name; /* Primary key */
- void *regexpname;
- unsigned int flags;
- ConfType type;
-};
-
-/*
- * MatchItem - used for XLINE and ULINE types
- */
-struct MatchItem
-{
- char *user; /* Used for ULINE only */
- char *host; /* Used for ULINE only */
- char *reason;
- char *oper_reason;
- int action; /* used for uline */
- int count; /* How many times this matchitem has been matched */
- int ref_count; /* How many times is this matchitem in use */
- int illegal; /* Should it be deleted when possible? */
- unsigned int flags;
- time_t hold; /* Hold action until this time (calendar time) */
- time_t setat;
-};
-
-struct AccessItem
+struct MaskItem
{
+ struct MaskItem *hnext;
dlink_node node;
+ enum maskitem_type type;
unsigned int dns_failed;
unsigned int dns_pending;
unsigned int status; /* If CONF_ILLEGAL, delete when no clients */
unsigned int flags;
unsigned int modes;
unsigned int port;
+ unsigned int count;
+ unsigned int action;
int clients; /* Number of *LOCAL* clients using this */
int bits;
- int type;
+ unsigned int aftype;
+ unsigned int htype;
+ unsigned int active;
struct irc_ssaddr bind; /* ip to bind to for outgoing connect */
struct irc_ssaddr addr; /* ip to connect to */
+ char * name;
char * host; /* host part of user@host */
char * passwd;
char * spasswd; /* Password to send. */
@@ -133,8 +111,7 @@ struct AccessItem
char * user; /* user part of user@host */
time_t hold; /* Hold action until this time (calendar time) */
time_t setat;
- struct ConfItem *class_ptr; /* Class of connection */
- int aftype;
+ struct ClassItem *class; /* Class of connection */
#ifdef HAVE_LIBCRYPTO
/* certs */
char *cipher_list;
@@ -147,27 +124,6 @@ struct AccessItem
dlink_list hub_list;
};
-struct ClassItem
-{
- dlink_list list_ipv4; /* base of per cidr ipv4 client link list */
- dlink_list list_ipv6; /* base of per cidr ipv6 client link list */
- unsigned int max_sendq;
- unsigned int max_recvq;
- int con_freq;
- int ping_freq;
- int ping_warning;
- int max_total;
- int max_local;
- int max_global;
- int max_ident;
- int max_perip;
- int curr_user_count;
- int cidr_bitlen_ipv4;
- int cidr_bitlen_ipv6;
- int number_per_cidr;
- int active;
-};
-
struct CidrItem
{
dlink_node node;
@@ -176,39 +132,12 @@ struct CidrItem
};
-#define CONF_ILLEGAL 0x80000000
-#define CONF_RESERVED 0x00000001
-#define CONF_CLIENT 0x00000002
-#define CONF_SERVER 0x00000004
-#define CONF_OPERATOR 0x00000008
-#define CONF_KLINE 0x00000010
-#define CONF_CLASS 0x00000020
-#define CONF_DLINE 0x00000040
-#define CONF_XLINE 0x00000080
-#define CONF_ULINE 0x00000100
-#define CONF_EXEMPTDLINE 0x00000200
-#define CONF_GLINE 0x00000400
-#define CONF_SERVICE 0x00000800
-
-#define CONF_SERVER_MASK CONF_SERVER
-#define CONF_CLIENT_MASK (CONF_CLIENT | CONF_OPERATOR | CONF_SERVER_MASK)
-
-/* XXX temporary hack */
-#define CONF_CRESV 0x80000001
-#define CONF_NRESV 0x80000002
-
-#define IsConfIllegal(x) ((x)->status & CONF_ILLEGAL)
-#define SetConfIllegal(x) ((x)->status |= CONF_ILLEGAL)
-#define IsConfServer(x) ((x)->status == CONF_SERVER)
-#define SetConfServer(x) ((x)->status = CONF_SERVER)
-#define IsConfOperator(x) ((x)->status & CONF_OPERATOR)
-#define IsConfKill(x) ((x)->status == CONF_KLINE)
-#define IsConfClient(x) ((x)->status & CONF_CLIENT)
-#define IsConfUline(x) ((x)->status & CONF_ULINE)
-#define IsConfXline(x) ((x)->status & CONF_XLINE)
-#define IsConfGline(x) ((x)->status == CONF_GLINE)
-
-/* AccessItem->flags */
+#define IsConfOperator(x) ((x)->type & CONF_OPER)
+#define IsConfKill(x) ((x)->type == CONF_KLINE)
+#define IsConfClient(x) ((x)->type & CONF_CLIENT)
+#define IsConfGline(x) ((x)->type == CONF_GLINE)
+
+/* MaskItem->flags */
/* Generic flags... */
/* access flags... */
@@ -233,7 +162,7 @@ struct CidrItem
#define CONF_FLAGS_SSL 0x00020000
#define CONF_FLAGS_MAINCONF 0x00040000
-/* Macros for struct AccessItem */
+/* Macros for struct MaskItem */
#define IsLimitIp(x) ((x)->flags & CONF_FLAGS_LIMIT_IP)
#define IsNoTilde(x) ((x)->flags & CONF_FLAGS_NO_TILDE)
#define IsConfCanFlood(x) ((x)->flags & CONF_FLAGS_CAN_FLOOD)
@@ -407,11 +336,9 @@ struct logging_entry
extern dlink_list class_items;
extern dlink_list server_items;
extern dlink_list cluster_items;
-extern dlink_list hub_items;
extern dlink_list xconf_items;
extern dlink_list rxconf_items;
extern dlink_list rkconf_items;
-extern dlink_list leaf_items;
extern dlink_list service_items;
extern struct logging_entry ConfigLoggingEntry;
extern struct config_file_entry ConfigFileEntry;/* defined in ircd.c*/
@@ -422,47 +349,40 @@ extern struct admin_info AdminInfo; /* defined in ircd.c */
extern int valid_wild_card(struct Client *, int, int, ...);
/* End GLOBAL section */
-extern unsigned int get_sendq(struct Client *);
-extern unsigned int get_recvq(struct Client *);
-extern const char *get_client_class(struct Client *);
-extern int get_client_ping(struct Client *, int *);
-extern void check_class(void);
-extern void init_class(void);
-extern struct ConfItem *find_class(const char *);
+
+
+
extern void init_ip_hash_table(void);
extern void count_ip_hash(unsigned int *, uint64_t *);
extern void remove_one_ip(struct irc_ssaddr *);
-extern struct ConfItem *make_conf_item(ConfType type);
-extern void free_access_item(struct AccessItem *);
+extern struct MaskItem *conf_make(enum maskitem_type);
extern void read_conf_files(int);
-extern int attach_conf(struct Client *, struct ConfItem *);
+extern int attach_conf(struct Client *, struct MaskItem *);
extern int attach_connect_block(struct Client *, const char *, const char *);
+extern int get_conf_ping(const struct MaskItem *, int *);
-extern int detach_conf(struct Client *, ConfType);
-
-extern struct ConfItem *find_conf_name(dlink_list *, const char *, ConfType);
-extern struct ConfItem *find_conf_exact(ConfType, const char *, const char *, const char *);
-extern struct AccessItem *find_kill(struct Client *);
-extern struct AccessItem *find_gline(struct Client *);
+extern void detach_conf(struct Client *, enum maskitem_type);
+extern struct MaskItem *find_conf_name(dlink_list *, const char *, enum maskitem_type);
+extern struct MaskItem *find_conf_exact(enum maskitem_type, const char *, const char *, const char *);
+extern struct MaskItem *find_kill(struct Client *);
+extern struct MaskItem *find_gline(struct Client *);
extern int conf_connect_allowed(struct irc_ssaddr *, int);
extern char *oper_privs_as_string(const unsigned int);
extern void split_nuh(struct split_nuh_item *);
-extern struct ConfItem *find_matching_name_conf(ConfType, const char *,
- const char *, const char *, int);
-extern struct ConfItem *find_exact_name_conf(ConfType, const struct Client *, const char *,
+extern struct MaskItem *find_matching_name_conf(enum maskitem_type, const char *,
+ const char *, const char *, unsigned int);
+extern struct MaskItem *find_exact_name_conf(enum maskitem_type, const struct Client *, const char *,
const char *, const char *);
-extern void delete_conf_item(struct ConfItem *);
-extern void report_confitem_types(struct Client *, ConfType);
+extern void conf_free(struct MaskItem *);
+extern void report_confitem_types(struct Client *, enum maskitem_type);
extern void yyerror(const char *);
extern void cleanup_tklines(void *);
extern int rehash(int);
-extern int conf_add_server(struct ConfItem *, const char *);
-extern void conf_add_class_to_conf(struct ConfItem *, const char *);
+extern int conf_add_server(struct MaskItem *, const char *);
+extern void conf_add_class_to_conf(struct MaskItem *, const char *);
extern const char *get_oper_name(const struct Client *);
-extern void *map_to_conf(struct ConfItem *);
-extern struct ConfItem *unmap_conf_item(void *);
/* XXX should the parse_aline stuff go into another file ?? */
#define AWILD 0x1 /* check wild cards */
extern int parse_aline(const char *, struct Client *, int, char **,
@@ -473,7 +393,7 @@ extern int valid_comment(struct Client *, char *, int);
#define TK_SECONDS 0
#define TK_MINUTES 1
extern time_t valid_tkline(const char *, int);
-extern int match_conf_password(const char *, const struct AccessItem *);
+extern int match_conf_password(const char *, const struct MaskItem *);
#define NOT_AUTHORIZED (-1)
#define I_LINE_FULL (-2)
@@ -485,5 +405,4 @@ extern int match_conf_password(const char *, const struct AccessItem *);
extern void cluster_a_line(struct Client *,
const char *, int, int, const char *,...);
-extern void rebuild_cidr_class(struct ConfItem *, struct ClassItem *);
#endif /* INCLUDED_s_conf_h */
diff --git a/include/hash.h b/include/hash.h
index a75815f..b6a604f 100644
--- a/include/hash.h
+++ b/include/hash.h
@@ -32,7 +32,7 @@
struct Client;
struct Channel;
-struct ResvChannel;
+struct MaskItem;
struct UserHost;
enum {
@@ -48,8 +48,8 @@ extern void hash_add_client(struct Client *);
extern void hash_del_client(struct Client *);
extern void hash_add_channel(struct Channel *);
extern void hash_del_channel(struct Channel *);
-extern void hash_add_resv(struct ResvChannel *);
-extern void hash_del_resv(struct ResvChannel *);
+extern void hash_add_resv(struct MaskItem *);
+extern void hash_del_resv(struct MaskItem *);
extern void hash_add_id(struct Client *);
extern void hash_del_id(struct Client *);
extern void hash_add_userhost(struct UserHost *);
@@ -61,7 +61,7 @@ extern struct Client *hash_find_client(const char *);
extern struct Client *hash_find_server(const char *);
extern struct Channel *hash_find_channel(const char *);
extern void *hash_get_bucket(int, unsigned int);
-extern struct ResvChannel *hash_find_resv(const char *);
+extern struct MaskItem *hash_find_resv(const char *);
extern void free_list_task(struct ListTask *, struct Client *);
extern void safe_list_channels(struct Client *, struct ListTask *, int);
diff --git a/include/hostmask.h b/include/hostmask.h
index 63abb88..219ad80 100644
--- a/include/hostmask.h
+++ b/include/hostmask.h
@@ -44,24 +44,24 @@ struct AddressRec
{
struct
{
- /* Pointer into AccessItem... -A1kmm */
+ /* Pointer into MaskItem... -A1kmm */
struct irc_ssaddr addr;
int bits;
} ipa;
- /* Pointer into AccessItem... -A1kmm */
+ /* Pointer into MaskItem... -A1kmm */
const char *hostname;
} Mask;
/* type: CONF_CLIENT, CONF_DLINE, CONF_KLINE etc... -A1kmm */
- unsigned int type;
+ enum maskitem_type type;
/* Higher precedences overrule lower ones... */
unsigned int precedence;
/* Only checked if !(type & 1)... */
const char *username;
- struct AccessItem *aconf;
+ struct MaskItem *conf;
dlink_node node;
};
@@ -73,14 +73,14 @@ extern int match_ipv4(const struct irc_ssaddr *, const struct irc_ssaddr *, int)
extern void mask_addr(struct irc_ssaddr *, int);
extern void init_host_hash(void);
-extern void add_conf_by_address(const unsigned int, struct AccessItem *);
-extern void delete_one_address_conf(const char *, struct AccessItem *);
+extern void add_conf_by_address(const unsigned int, struct MaskItem *);
+extern void delete_one_address_conf(const char *, struct MaskItem *);
extern void clear_out_address_conf(void);
extern void hostmask_expire_temporary(void);
-extern struct AccessItem *find_address_conf(const char *, const char *,
+extern struct MaskItem *find_address_conf(const char *, const char *,
struct irc_ssaddr *, int, char *);
-extern struct AccessItem *find_dline_conf(struct irc_ssaddr *, int);
-extern struct AccessItem *find_conf_by_address(const char *, struct irc_ssaddr *,
- unsigned int, int, const char *, const char *, int);
+extern struct MaskItem *find_dline_conf(struct irc_ssaddr *, int);
+extern struct MaskItem *find_conf_by_address(const char *, struct irc_ssaddr *,
+ unsigned int, int, const char *, const char *, int);
#endif /* INCLUDE_hostmask_h */
diff --git a/include/resv.h b/include/resv.h
index 2bba49a..986bb3a 100644
--- a/include/resv.h
+++ b/include/resv.h
@@ -25,28 +25,17 @@
#ifndef INCLUDED_resv_h
#define INCLUDED_resv_h
-struct ResvChannel
-{
- dlink_node node;
- struct ResvChannel *hnext;
- time_t hold; /* Hold action until this time (calendar time) */
- time_t setat;
- char name[CHANNELLEN + 1];
- char *reason;
- unsigned int flags;
-};
-
extern dlink_list nresv_items;
extern dlink_list resv_channel_list;
-extern struct ConfItem *create_channel_resv(char *, char *, int);
-extern struct ConfItem *create_nick_resv(char *, char *, int);
+extern struct MaskItem *create_channel_resv(char *, char *, int);
+extern struct MaskItem *create_nick_resv(char *, char *, int);
-extern int delete_channel_resv(struct ResvChannel *);
+extern int delete_channel_resv(struct MaskItem *);
extern void clear_conf_resv(void);
extern void report_resv(struct Client *);
extern int valid_wild_card_simple(const char *);
-extern struct ResvChannel *match_find_resv(const char *);
+extern struct MaskItem *match_find_resv(const char *);
#endif /* INCLUDED_resv_h */
diff --git a/include/s_bsd.h b/include/s_bsd.h
index a76ce6d..e314bfb 100644
--- a/include/s_bsd.h
+++ b/include/s_bsd.h
@@ -37,7 +37,7 @@
#define SELECT_DELAY 500
struct Client;
-struct AccessItem;
+struct MaskItem;
struct Listener;
extern struct Callback *setup_socket_cb;
diff --git a/include/s_gline.h b/include/s_gline.h
index 1ecc9b2..2222b7d 100644
--- a/include/s_gline.h
+++ b/include/s_gline.h
@@ -30,10 +30,10 @@
#define GLINE_PENDING_DEL_TYPE 0
#define GLINE_PENDING_ADD_TYPE 1
-struct AccessItem;
+struct MaskItem;
extern void cleanup_glines(void *);
-extern struct AccessItem *find_is_glined(const char *, const char *);
+extern struct MaskItem *find_is_glined(const char *, const char *);
struct gline_pending
{
diff --git a/include/s_serv.h b/include/s_serv.h
index 31582ea..e1baf82 100644
--- a/include/s_serv.h
+++ b/include/s_serv.h
@@ -26,7 +26,7 @@
#define INCLUDED_serv_h
#include "config.h"
-struct ConfItem;
+struct MaskItem;
/*
* number of seconds to wait after server starts up, before
@@ -36,7 +36,7 @@ struct ConfItem;
#define STARTUP_CONNECTIONS_TIME 60
struct Client;
-struct AccessItem;
+struct MaskItem;
struct Channel;
/* Capabilities */
@@ -88,14 +88,14 @@ extern int hunt_server(struct Client *, struct Client *,
extern void add_capability(const char *, int, int);
extern int delete_capability(const char *);
extern int find_capability(const char *);
-extern void send_capabilities(struct Client *, struct AccessItem *, int);
+extern void send_capabilities(struct Client *, int);
extern void write_links_file(void *);
extern void server_estab(struct Client *);
extern const char *show_capabilities(struct Client *);
extern void try_connections(void *);
extern void burst_channel(struct Client *client_p, struct Channel *);
extern void sendnick_TS(struct Client *, struct Client *);
-extern int serv_connect(struct AccessItem *, struct Client *);
+extern int serv_connect(struct MaskItem *, struct Client *);
extern struct Client *find_servconn_in_progress(const char *);
extern struct Server *make_server(struct Client *);
#endif /* INCLUDED_s_serv_h */
diff --git a/modules/core/m_nick.c b/modules/core/m_nick.c
index 504f517..8c1d5a8 100644
--- a/modules/core/m_nick.c
+++ b/modules/core/m_nick.c
@@ -221,7 +221,7 @@ mr_nick(struct Client *client_p, struct Client *source_p,
}
/* check if the nick is resv'd */
- if (find_matching_name_conf(NRESV_TYPE, nick, NULL, NULL, 0) &&
+ if (find_matching_name_conf(CONF_NRESV, nick, NULL, NULL, 0) &&
!IsExemptResv(source_p))
{
sendto_one(source_p, form_str(ERR_ERRONEUSNICKNAME), me.name,
@@ -286,7 +286,7 @@ m_nick(struct Client *client_p, struct Client *source_p,
return;
}
- if (find_matching_name_conf(NRESV_TYPE, nick,
+ if (find_matching_name_conf(CONF_NRESV, nick,
NULL, NULL, 0) && !IsExemptResv(source_p) &&
!(HasUMode(source_p, UMODE_OPER) && ConfigFileEntry.oper_pass_resv))
{
diff --git a/modules/core/m_server.c b/modules/core/m_server.c
index 6a2bbf8..a1eb5e7 100644
--- a/modules/core/m_server.c
+++ b/modules/core/m_server.c
@@ -30,7 +30,7 @@
#include "irc_string.h"
#include "ircd.h" /* me */
#include "numeric.h" /* ERR_xxx */
-#include "conf.h" /* struct AccessItem */
+#include "conf.h" /* struct MaskItem */
#include "log.h" /* log level defines */
#include "s_serv.h" /* server_estab, check_server */
#include "s_user.h"
@@ -198,7 +198,7 @@ ms_server(struct Client *client_p, struct Client *source_p,
{
char *name;
struct Client *target_p;
- struct AccessItem *aconf;
+ struct MaskItem *conf = NULL;
int hop;
int hlined = 0;
int llined = 0;
@@ -268,19 +268,19 @@ ms_server(struct Client *client_p, struct Client *source_p,
if (target_p != client_p)
exit_client(target_p, &me, "Overridden");
- aconf = map_to_conf(client_p->localClient->confs.head->data);
+ conf = client_p->localClient->confs.head->data;
/* See if the newly found server is behind a guaranteed
* leaf. If so, close the link.
*/
- DLINK_FOREACH(ptr, aconf->leaf_list.head)
+ DLINK_FOREACH(ptr, conf->leaf_list.head)
if (match(ptr->data, name))
{
llined = 1;
break;
}
- DLINK_FOREACH(ptr, aconf->hub_list.head)
+ DLINK_FOREACH(ptr, conf->hub_list.head)
if (match(ptr->data, name))
{
hlined = 1;
@@ -355,7 +355,7 @@ ms_server(struct Client *client_p, struct Client *source_p,
set_server_gecos(target_p, parv[3]);
SetServer(target_p);
- if (HasFlag(source_p, FLAGS_SERVICE) || find_matching_name_conf(SERVICE_TYPE, target_p->name, NULL, NULL, 0))
+ if (HasFlag(source_p, FLAGS_SERVICE) || find_matching_name_conf(CONF_SERVICE, target_p->name, NULL, NULL, 0))
AddFlag(target_p, FLAGS_SERVICE);
dlinkAdd(target_p, &target_p->node, &global_client_list);
@@ -385,7 +385,7 @@ ms_sid(struct Client *client_p, struct Client *source_p,
int parc, char *parv[])
{
struct Client *target_p;
- struct AccessItem *aconf = NULL;
+ struct MaskItem *conf = NULL;
int hlined = 0;
int llined = 0;
dlink_node *ptr = NULL;
@@ -465,19 +465,19 @@ ms_sid(struct Client *client_p, struct Client *source_p,
if (target_p != client_p)
exit_client(target_p, &me, "Overridden");
- aconf = map_to_conf(client_p->localClient->confs.head->data);
+ conf = client_p->localClient->confs.head->data;
/* See if the newly found server is behind a guaranteed
* leaf. If so, close the link.
*/
- DLINK_FOREACH(ptr, aconf->leaf_list.head)
+ DLINK_FOREACH(ptr, conf->leaf_list.head)
if (match(ptr->data, parv[1]))
{
llined = 1;
break;
}
- DLINK_FOREACH(ptr, aconf->hub_list.head)
+ DLINK_FOREACH(ptr, conf->hub_list.head)
if (match(ptr->data, parv[1]))
{
hlined = 1;
@@ -547,7 +547,7 @@ ms_sid(struct Client *client_p, struct Client *source_p,
set_server_gecos(target_p, parv[4]);
SetServer(target_p);
- if (HasFlag(source_p, FLAGS_SERVICE) || find_matching_name_conf(SERVICE_TYPE, target_p->name, NULL, NULL, 0))
+ if (HasFlag(source_p, FLAGS_SERVICE) || find_matching_name_conf(CONF_SERVICE, target_p->name, NULL, NULL, 0))
AddFlag(target_p, FLAGS_SERVICE);
dlinkAdd(target_p, &target_p->node, &global_client_list);
diff --git a/modules/m_challenge.c b/modules/m_challenge.c
index 027d143..2327ee7 100644
--- a/modules/m_challenge.c
+++ b/modules/m_challenge.c
@@ -71,8 +71,7 @@ m_challenge(struct Client *client_p, struct Client *source_p,
int parc, char *parv[])
{
char *challenge = NULL;
- struct ConfItem *conf = NULL;
- struct AccessItem *aconf = NULL;
+ struct MaskItem *conf = NULL;
if (*parv[1] == '+')
{
@@ -89,7 +88,7 @@ m_challenge(struct Client *client_p, struct Client *source_p,
return;
}
- conf = find_exact_name_conf(OPER_TYPE, source_p,
+ conf = find_exact_name_conf(CONF_OPER, source_p,
source_p->localClient->auth_oper, NULL, NULL);
if (conf == NULL)
{
@@ -124,25 +123,23 @@ m_challenge(struct Client *client_p, struct Client *source_p,
source_p->localClient->response = NULL;
source_p->localClient->auth_oper = NULL;
- if ((conf = find_conf_exact(OPER_TYPE,
- parv[1], source_p->username, source_p->host
- )) != NULL)
- aconf = map_to_conf(conf);
- else if ((conf = find_conf_exact(OPER_TYPE,
- parv[1], source_p->username,
- source_p->sockhost)) != NULL)
- aconf = map_to_conf(conf);
+ if ((conf = find_conf_exact(CONF_OPER,
+ parv[1], source_p->username, source_p->host)))
+ ;
+ else if ((conf = find_conf_exact(CONF_OPER, parv[1], source_p->username,
+ source_p->sockhost)))
+ ;
- if (aconf == NULL)
+ if (!conf)
{
sendto_one (source_p, form_str(ERR_NOOPERHOST), me.name, source_p->name);
- conf = find_exact_name_conf(OPER_TYPE, NULL, parv[1], NULL, NULL);
+ conf = find_exact_name_conf(CONF_OPER, NULL, parv[1], NULL, NULL);
failed_challenge_notice(source_p, parv[1], (conf != NULL)
? "host mismatch" : "no oper {} block");
return;
}
- if (aconf->rsa_public_key == NULL)
+ if (conf->rsa_public_key == NULL)
{
sendto_one (source_p, ":%s NOTICE %s :I'm sorry, PK authentication "
"is not enabled for your oper{} block.", me.name,
@@ -151,7 +148,7 @@ m_challenge(struct Client *client_p, struct Client *source_p,
}
if (!generate_challenge(&challenge, &(source_p->localClient->response),
- aconf->rsa_public_key))
+ conf->rsa_public_key))
sendto_one(source_p, form_str(RPL_RSACHALLENGE),
me.name, source_p->name, challenge);
diff --git a/modules/m_connect.c b/modules/m_connect.c
index 10870e1..b769d8b 100644
--- a/modules/m_connect.c
+++ b/modules/m_connect.c
@@ -55,8 +55,7 @@ mo_connect(struct Client *client_p, struct Client *source_p,
{
int port;
int tmpport;
- struct ConfItem *conf = NULL;
- struct AccessItem *aconf = NULL;
+ struct MaskItem *conf = NULL;
const struct Client *target_p = NULL;
if (EmptyString(parv[1]))
@@ -91,14 +90,12 @@ mo_connect(struct Client *client_p, struct Client *source_p,
/*
* try to find the name, then host, if both fail notify ops and bail
*/
- if ((conf = find_matching_name_conf(SERVER_TYPE,
- parv[1], NULL, NULL, 0)) != NULL)
- aconf = (struct AccessItem *)map_to_conf(conf);
- else if ((conf = find_matching_name_conf(SERVER_TYPE,
- NULL, NULL, parv[1], 0)) != NULL)
- aconf = (struct AccessItem *)map_to_conf(conf);
-
- if (conf == NULL || aconf == NULL)
+ if ((conf = find_matching_name_conf(CONF_SERVER, parv[1], NULL, NULL, 0)))
+ ;
+ else if ((conf = find_matching_name_conf(CONF_SERVER, NULL, NULL, parv[1], 0)))
+ ;
+
+ if (!conf)
{
sendto_one(source_p,
":%s NOTICE %s :Connect: Host %s not listed in ircd.conf",
@@ -110,7 +107,7 @@ mo_connect(struct Client *client_p, struct Client *source_p,
* use the default form configuration structure. If missing
* from there, then use the precompiled default.
*/
- tmpport = port = aconf->port;
+ tmpport = port = conf->port;
if (parc > 2 && !EmptyString(parv[2]))
{
@@ -141,31 +138,31 @@ mo_connect(struct Client *client_p, struct Client *source_p,
ilog(LOG_TYPE_IRCD, "CONNECT From %s : %s %s",
source_p->name, parv[1], parv[2] ? parv[2] : "");
- aconf->port = port;
+ conf->port = port;
/* at this point we should be calling connect_server with a valid
* C:line and a valid port in the C:line
*/
- if (serv_connect(aconf, source_p))
+ if (serv_connect(conf, source_p))
{
if (!ConfigServerHide.hide_server_ips && HasUMode(source_p, UMODE_ADMIN))
sendto_one(source_p, ":%s NOTICE %s :*** Connecting to %s[%s].%d",
- me.name, source_p->name, aconf->host,
- conf->name, aconf->port);
+ me.name, source_p->name, conf->host,
+ conf->name, conf->port);
else
sendto_one(source_p, ":%s NOTICE %s :*** Connecting to %s.%d",
- me.name, source_p->name, conf->name, aconf->port);
+ me.name, source_p->name, conf->name, conf->port);
}
else
{
sendto_one(source_p, ":%s NOTICE %s :*** Couldn't connect to %s.%d",
- me.name, source_p->name, conf->name, aconf->port);
+ me.name, source_p->name, conf->name, conf->port);
}
/* client is either connecting with all the data it needs or has been
* destroyed
*/
- aconf->port = tmpport;
+ conf->port = tmpport;
}
/*
@@ -185,8 +182,7 @@ ms_connect(struct Client *client_p, struct Client *source_p,
{
int port;
int tmpport;
- struct ConfItem *conf = NULL;
- struct AccessItem *aconf = NULL;
+ struct MaskItem *conf = NULL;
const struct Client *target_p = NULL;
if (hunt_server(client_p, source_p,
@@ -211,14 +207,13 @@ ms_connect(struct Client *client_p, struct Client *source_p,
/*
* try to find the name, then host, if both fail notify ops and bail
*/
- if ((conf = find_matching_name_conf(SERVER_TYPE,
- parv[1], NULL, NULL, 0)) != NULL)
- aconf = map_to_conf(conf);
- else if ((conf = find_matching_name_conf(SERVER_TYPE,
- NULL, NULL, parv[1], 0)) != NULL)
- aconf = map_to_conf(conf);
-
- if (conf == NULL || aconf == NULL)
+
+ if ((conf = find_matching_name_conf(CONF_SERVER, parv[1], NULL, NULL, 0)))
+ ;
+ else if ((conf = find_matching_name_conf(CONF_SERVER, NULL, NULL, parv[1], 0)))
+ ;
+
+ if (!conf)
{
sendto_one(source_p,
":%s NOTICE %s :Connect: Host %s not listed in ircd.conf",
@@ -230,15 +225,15 @@ ms_connect(struct Client *client_p, struct Client *source_p,
* use the default form configuration structure. If missing
* from there, then use the precompiled default.
*/
- tmpport = port = aconf->port;
+ tmpport = port = conf->port;
if (parc > 2 && !EmptyString(parv[2]))
{
port = atoi(parv[2]);
/* if someone sends port 0, and we have a config port.. use it */
- if (port == 0 && aconf->port)
- port = aconf->port;
+ if (port == 0 && conf->port)
+ port = conf->port;
else if (port <= 0)
{
sendto_one(source_p, ":%s NOTICE %s :Connect: Illegal port number",
@@ -275,23 +270,23 @@ ms_connect(struct Client *client_p, struct Client *source_p,
ilog(LOG_TYPE_IRCD, "CONNECT From %s : %s %d",
source_p->name, parv[1], port);
- aconf->port = port;
+ conf->port = port;
/*
* At this point we should be calling connect_server with a valid
* C:line and a valid port in the C:line
*/
- if (serv_connect(aconf, source_p))
+ if (serv_connect(conf, source_p))
sendto_one(source_p, ":%s NOTICE %s :*** Connecting to %s.%d",
- me.name, source_p->name, conf->name, aconf->port);
+ me.name, source_p->name, conf->name, conf->port);
else
sendto_one(source_p, ":%s NOTICE %s :*** Couldn't connect to %s.%d",
- me.name, source_p->name, conf->name, aconf->port);
+ me.name, source_p->name, conf->name, conf->port);
/*
* Client is either connecting with all the data it needs or has been
* destroyed
*/
- aconf->port = tmpport;
+ conf->port = tmpport;
}
static struct Message connect_msgtab = {
diff --git a/modules/m_dline.c b/modules/m_dline.c
index f66917c..c375707 100644
--- a/modules/m_dline.c
+++ b/modules/m_dline.c
@@ -28,12 +28,12 @@
#include "client.h"
#include "irc_string.h"
#include "sprintf_irc.h"
+#include "conf.h"
#include "ircd.h"
#include "hostmask.h"
#include "numeric.h"
#include "fdlist.h"
#include "s_bsd.h"
-#include "conf.h"
#include "log.h"
#include "s_misc.h"
#include "send.h"
@@ -51,38 +51,38 @@
* side effects - tkline as given is placed
*/
static void
-apply_dline(struct Client *source_p, struct AccessItem *aconf,
+apply_dline(struct Client *source_p, struct MaskItem *conf,
time_t tkline_time)
{
if (tkline_time)
{
- aconf->hold = CurrentTime + tkline_time;
+ conf->hold = CurrentTime + tkline_time;
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"%s added temporary %d min. D-Line for [%s] [%s]",
get_oper_name(source_p), tkline_time/60,
- aconf->host, aconf->reason);
+ conf->host, conf->reason);
sendto_one(source_p, ":%s NOTICE %s :Added temporary %d min. D-Line [%s]",
MyConnect(source_p) ? me.name : ID_or_name(&me, source_p->from),
- source_p->name, tkline_time/60, aconf->host);
+ source_p->name, tkline_time/60, conf->host);
ilog(LOG_TYPE_DLINE, "%s added temporary %d min. D-Line for [%s] [%s]",
- get_oper_name(source_p), tkline_time/60, aconf->host, aconf->reason);
+ get_oper_name(source_p), tkline_time/60, conf->host, conf->reason);
}
else
{
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"%s added D-Line for [%s] [%s]",
- get_oper_name(source_p), aconf->host, aconf->reason);
+ get_oper_name(source_p), conf->host, conf->reason);
sendto_one(source_p, ":%s NOTICE %s :Added D-Line [%s]",
MyConnect(source_p) ? me.name : ID_or_name(&me, source_p->from),
- source_p->name, aconf->host);
+ source_p->name, conf->host);
ilog(LOG_TYPE_DLINE, "%s added D-Line for [%s] [%s]",
- get_oper_name(source_p), aconf->host, aconf->reason);
+ get_oper_name(source_p), conf->host, conf->reason);
}
- SetConfDatabase(aconf);
- aconf->setat = CurrentTime;
- add_conf_by_address(CONF_DLINE, aconf);
+ SetConfDatabase(conf);
+ conf->setat = CurrentTime;
+ add_conf_by_address(CONF_DLINE, conf);
rehashed_klines = 1;
}
@@ -95,7 +95,7 @@ static int
remove_dline_match(const char *host)
{
struct irc_ssaddr iphost, *piphost;
- struct AccessItem *aconf;
+ struct MaskItem *conf;
int t;
if ((t = parse_netmask(host, &iphost, NULL)) != HM_HOST)
@@ -114,11 +114,11 @@ remove_dline_match(const char *host)
piphost = NULL;
}
- if ((aconf = find_conf_by_address(host, piphost, CONF_DLINE, t, NULL, NULL, 0)))
+ if ((conf = find_conf_by_address(host, piphost, CONF_DLINE, t, NULL, NULL, 0)))
{
- if (IsConfDatabase(aconf))
+ if (IsConfDatabase(conf))
{
- delete_one_address_conf(host, aconf);
+ delete_one_address_conf(host, conf);
return 1;
}
}
@@ -146,7 +146,7 @@ mo_dline(struct Client *client_p, struct Client *source_p,
const char *creason;
const struct Client *target_p = NULL;
struct irc_ssaddr daddr;
- struct AccessItem *aconf=NULL;
+ struct MaskItem *conf=NULL;
time_t tkline_time=0;
int bits, t;
const char *current_date = NULL;
@@ -238,17 +238,17 @@ mo_dline(struct Client *client_p, struct Client *source_p,
parse_netmask(dlhost, &daddr, NULL);
- if ((aconf = find_dline_conf(&daddr, t)) != NULL)
+ if ((conf = find_dline_conf(&daddr, t)) != NULL)
{
- creason = aconf->reason ? aconf->reason : def_reason;
- if (IsConfExemptKline(aconf))
+ creason = conf->reason ? conf->reason : def_reason;
+ if (IsConfExemptKline(conf))
sendto_one(source_p,
":%s NOTICE %s :[%s] is (E)d-lined by [%s] - %s",
- me.name, source_p->name, dlhost, aconf->host, creason);
+ me.name, source_p->name, dlhost, conf->host, creason);
else
sendto_one(source_p,
":%s NOTICE %s :[%s] already D-lined by [%s] - %s",
- me.name, source_p->name, dlhost, aconf->host, creason);
+ me.name, source_p->name, dlhost, conf->host, creason);
return;
}
@@ -258,8 +258,8 @@ mo_dline(struct Client *client_p, struct Client *source_p,
if (!valid_comment(source_p, reason, 1))
return;
- aconf = map_to_conf(make_conf_item(DLINE_TYPE));
- DupString(aconf->host, dlhost);
+ conf = conf_make(CONF_DLINE);
+ DupString(conf->host, dlhost);
if (tkline_time != 0)
snprintf(buffer, sizeof(buffer), "Temporary D-line %d min. - %s (%s)",
@@ -267,8 +267,8 @@ mo_dline(struct Client *client_p, struct Client *source_p,
else
snprintf(buffer, sizeof(buffer), "%s (%s)", reason, current_date);
- DupString(aconf->reason, buffer);
- apply_dline(source_p, aconf, tkline_time);
+ DupString(conf->reason, buffer);
+ apply_dline(source_p, conf, tkline_time);
rehashed_klines = 1;
}
@@ -281,7 +281,7 @@ ms_dline(struct Client *client_p, struct Client *source_p,
const char *creason;
const struct Client *target_p = NULL;
struct irc_ssaddr daddr;
- struct AccessItem *aconf=NULL;
+ struct MaskItem *conf=NULL;
time_t tkline_time=0;
int bits, t;
const char *current_date = NULL;
@@ -305,7 +305,7 @@ ms_dline(struct Client *client_p, struct Client *source_p,
dlhost = parv[3];
reason = parv[4];
- if (HasFlag(source_p, FLAGS_SERVICE) || find_matching_name_conf(ULINE_TYPE, source_p->servptr->name,
+ if (HasFlag(source_p, FLAGS_SERVICE) || find_matching_name_conf(CONF_ULINE, source_p->servptr->name,
source_p->username, source_p->host,
SHARED_DLINE))
{
@@ -357,17 +357,17 @@ ms_dline(struct Client *client_p, struct Client *source_p,
parse_netmask(dlhost, &daddr, NULL);
- if ((aconf = find_dline_conf(&daddr, t)) != NULL)
+ if ((conf = find_dline_conf(&daddr, t)) != NULL)
{
- creason = aconf->reason ? aconf->reason : def_reason;
- if (IsConfExemptKline(aconf))
+ creason = conf->reason ? conf->reason : def_reason;
+ if (IsConfExemptKline(conf))
sendto_one(source_p,
":%s NOTICE %s :[%s] is (E)d-lined by [%s] - %s",
- me.name, source_p->name, dlhost, aconf->host, creason);
+ me.name, source_p->name, dlhost, conf->host, creason);
else
sendto_one(source_p,
":%s NOTICE %s :[%s] already D-lined by [%s] - %s",
- me.name, source_p->name, dlhost, aconf->host, creason);
+ me.name, source_p->name, dlhost, conf->host, creason);
return;
}
@@ -377,8 +377,8 @@ ms_dline(struct Client *client_p, struct Client *source_p,
if (!valid_comment(source_p, reason, 1))
return;
- aconf = map_to_conf(make_conf_item(DLINE_TYPE));
- DupString(aconf->host, dlhost);
+ conf = conf_make(CONF_DLINE);
+ DupString(conf->host, dlhost);
if (tkline_time != 0)
snprintf(buffer, sizeof(buffer), "Temporary D-line %d min. - %s (%s)",
@@ -386,8 +386,8 @@ ms_dline(struct Client *client_p, struct Client *source_p,
else
snprintf(buffer, sizeof(buffer), "%s (%s)", reason, current_date);
- DupString(aconf->reason, buffer);
- apply_dline(source_p, aconf, tkline_time);
+ DupString(conf->reason, buffer);
+ apply_dline(source_p, conf, tkline_time);
rehashed_klines = 1;
}
}
@@ -469,7 +469,7 @@ me_undline(struct Client *client_p, struct Client *source_p,
if (!IsClient(source_p) || !match(parv[1], me.name))
return;
- if (HasFlag(source_p, FLAGS_SERVICE) || find_matching_name_conf(ULINE_TYPE,
+ if (HasFlag(source_p, FLAGS_SERVICE) || find_matching_name_conf(CONF_ULINE,
source_p->servptr->name,
source_p->username, source_p->host,
SHARED_UNDLINE))
diff --git a/modules/m_etrace.c b/modules/m_etrace.c
index 8a3421b..b98d8e3 100644
--- a/modules/m_etrace.c
+++ b/modules/m_etrace.c
@@ -36,6 +36,7 @@
#include "parse.h"
#include "modules.h"
#include "conf.h"
+#include "conf_class.h"
static void report_this_status(struct Client *, struct Client *, int);
@@ -142,7 +143,7 @@ report_this_status(struct Client *source_p, struct Client *target_p,
const char *class_name;
name = get_client_name(target_p, HIDE_IP);
- class_name = get_client_class(target_p);
+ class_name = get_client_class(&target_p->localClient->confs);
set_time();
diff --git a/modules/m_gline.c b/modules/m_gline.c
index 6e6b894..f0e18b5 100644
--- a/modules/m_gline.c
+++ b/modules/m_gline.c
@@ -32,10 +32,10 @@
#include "irc_string.h"
#include "sprintf_irc.h"
#include "ircd.h"
+#include "conf.h"
#include "hostmask.h"
#include "numeric.h"
#include "s_bsd.h"
-#include "conf.h"
#include "s_misc.h"
#include "send.h"
#include "s_serv.h"
@@ -62,25 +62,25 @@ set_local_gline(const struct Client *source_p, const char *user,
const char *host, const char *reason)
{
char buffer[IRCD_BUFSIZE];
- struct AccessItem *aconf = map_to_conf(make_conf_item(GLINE_TYPE));
+ struct MaskItem *conf = conf_make(CONF_GLINE);
snprintf(buffer, sizeof(buffer), "%s (%s)", reason, smalldate(CurrentTime));
- DupString(aconf->reason, buffer);
- DupString(aconf->user, user);
- DupString(aconf->host, host);
+ DupString(conf->reason, buffer);
+ DupString(conf->user, user);
+ DupString(conf->host, host);
- aconf->setat = CurrentTime;
- aconf->hold = CurrentTime + ConfigFileEntry.gline_time;
- SetConfDatabase(aconf);
+ conf->setat = CurrentTime;
+ conf->hold = CurrentTime + ConfigFileEntry.gline_time;
+ SetConfDatabase(conf);
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"%s added G-Line for [%s@%s] [%s]",
get_oper_name(source_p),
- aconf->user, aconf->host, aconf->reason);
+ conf->user, conf->host, conf->reason);
ilog(LOG_TYPE_GLINE, "%s added G-Line for [%s@%s] [%s]",
- get_oper_name(source_p), aconf->user, aconf->host, aconf->reason);
+ get_oper_name(source_p), conf->user, conf->host, conf->reason);
- add_conf_by_address(CONF_GLINE, aconf);
+ add_conf_by_address(CONF_GLINE, conf);
rehashed_klines = 1;
}
@@ -93,7 +93,7 @@ static int
remove_gline_match(const char *user, const char *host)
{
struct irc_ssaddr iphost, *piphost;
- struct AccessItem *aconf;
+ struct MaskItem *conf;
int t;
if ((t = parse_netmask(host, &iphost, NULL)) != HM_HOST)
@@ -112,11 +112,11 @@ remove_gline_match(const char *user, const char *host)
piphost = NULL;
}
- if ((aconf = find_conf_by_address(host, piphost, CONF_GLINE, t, user, NULL, 0)))
+ if ((conf = find_conf_by_address(host, piphost, CONF_GLINE, t, user, NULL, 0)))
{
- if (IsConfDatabase(aconf))
+ if (IsConfDatabase(conf))
{
- delete_one_address_conf(host, aconf);
+ delete_one_address_conf(host, conf);
return 1;
}
}
diff --git a/modules/m_hash.c b/modules/m_hash.c
index 89bc89b..ddf7d51 100644
--- a/modules/m_hash.c
+++ b/modules/m_hash.c
@@ -32,7 +32,7 @@
#include "parse.h"
#include "modules.h"
#include "s_user.h"
-#include "resv.h"
+#include "conf.h"
#include "userhost.h"
@@ -48,7 +48,7 @@ mo_hash(struct Client *client_p, struct Client *source_p,
struct Client *icl;
struct Channel *ch;
struct UserHost *ush;
- struct ResvChannel *rch;
+ struct MaskItem *rch;
for (i = 0; i < HASHSIZE; ++i)
{
diff --git a/modules/m_kline.c b/modules/m_kline.c
index 0964f93..513b860 100644
--- a/modules/m_kline.c
+++ b/modules/m_kline.c
@@ -29,11 +29,11 @@
#include "irc_string.h"
#include "sprintf_irc.h"
#include "ircd.h"
+#include "conf.h"
#include "hostmask.h"
#include "numeric.h"
#include "fdlist.h"
#include "s_bsd.h"
-#include "conf.h"
#include "log.h"
#include "s_misc.h"
#include "send.h"
@@ -46,7 +46,7 @@
static int already_placed_kline(struct Client *, const char *, const char *, int);
-static void m_kline_add_kline(struct Client *, struct AccessItem *, time_t);
+static void m_kline_add_kline(struct Client *, struct MaskItem *, time_t);
static char buffer[IRCD_BUFSIZE];
static int remove_kline_match(const char *, const char *);
@@ -70,7 +70,7 @@ mo_kline(struct Client *client_p, struct Client *source_p,
char *host = NULL;
const char *current_date;
char *target_server = NULL;
- struct AccessItem *aconf;
+ struct MaskItem *conf;
time_t tkline_time = 0;
time_t cur_time;
@@ -117,10 +117,10 @@ mo_kline(struct Client *client_p, struct Client *source_p,
cur_time = CurrentTime;
current_date = smalldate(cur_time);
- aconf = map_to_conf(make_conf_item(KLINE_TYPE));
+ conf = conf_make(CONF_KLINE);
- DupString(aconf->host, host);
- DupString(aconf->user, user);
+ DupString(conf->host, host);
+ DupString(conf->user, user);
if (tkline_time != 0)
snprintf(buffer, sizeof(buffer), "Temporary K-line %d min. - %s (%s)",
@@ -128,8 +128,8 @@ mo_kline(struct Client *client_p, struct Client *source_p,
else
snprintf(buffer, sizeof(buffer), "%s (%s)", reason, current_date);
- DupString(aconf->reason, buffer);
- m_kline_add_kline(source_p, aconf, tkline_time);
+ DupString(conf->reason, buffer);
+ m_kline_add_kline(source_p, conf, tkline_time);
}
/* me_kline - handle remote kline. no propagation */
@@ -137,7 +137,7 @@ static void
me_kline(struct Client *client_p, struct Client *source_p,
int parc, char *parv[])
{
- struct AccessItem *aconf = NULL;
+ struct MaskItem *conf = NULL;
int tkline_time = 0;
const char* current_date;
time_t cur_time;
@@ -157,7 +157,7 @@ me_kline(struct Client *client_p, struct Client *source_p,
cur_time = CurrentTime;
current_date = smalldate(cur_time);
- if (HasFlag(source_p, FLAGS_SERVICE) || find_matching_name_conf(ULINE_TYPE, source_p->servptr->name,
+ if (HasFlag(source_p, FLAGS_SERVICE) || find_matching_name_conf(CONF_ULINE, source_p->servptr->name,
source_p->username, source_p->host,
SHARED_KLINE))
{
@@ -165,9 +165,9 @@ me_kline(struct Client *client_p, struct Client *source_p,
already_placed_kline(source_p, kuser, khost, 1))
return;
- aconf = map_to_conf(make_conf_item(KLINE_TYPE));
- DupString(aconf->host, khost);
- DupString(aconf->user, kuser);
+ conf = conf_make(CONF_KLINE);
+ DupString(conf->host, khost);
+ DupString(conf->user, kuser);
if (tkline_time != 0)
snprintf(buffer, sizeof(buffer), "Temporary K-line %d min. - %s (%s)",
@@ -175,8 +175,8 @@ me_kline(struct Client *client_p, struct Client *source_p,
else
snprintf(buffer, sizeof(buffer), "%s (%s)", kreason, current_date);
- DupString(aconf->reason, buffer);
- m_kline_add_kline(source_p, aconf, tkline_time);
+ DupString(conf->reason, buffer);
+ m_kline_add_kline(source_p, conf, tkline_time);
}
}
@@ -203,41 +203,41 @@ ms_kline(struct Client *client_p, struct Client *source_p,
* side effects - tkline as given is placed
*/
static void
-m_kline_add_kline(struct Client *source_p, struct AccessItem *aconf,
+m_kline_add_kline(struct Client *source_p, struct MaskItem *conf,
time_t tkline_time)
{
if (tkline_time)
{
- aconf->hold = CurrentTime + tkline_time;
+ conf->hold = CurrentTime + tkline_time;
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"%s added temporary %d min. K-Line for [%s@%s] [%s]",
get_oper_name(source_p), tkline_time/60,
- aconf->user, aconf->host,
- aconf->reason);
+ conf->user, conf->host,
+ conf->reason);
sendto_one(source_p, ":%s NOTICE %s :Added temporary %d min. K-Line [%s@%s]",
- MyConnect(source_p) ? me.name : ID_or_name(&me, source_p->from),
- source_p->name, tkline_time/60, aconf->user, aconf->host);
+ MyConnect(source_p) ? me.name : ID_or_name(&me, source_p->from),
+ source_p->name, tkline_time/60, conf->user, conf->host);
ilog(LOG_TYPE_KLINE, "%s added temporary %d min. K-Line for [%s@%s] [%s]",
source_p->name, tkline_time/60,
- aconf->user, aconf->host, aconf->reason);
+ conf->user, conf->host, conf->reason);
}
else
{
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"%s added K-Line for [%s@%s] [%s]",
get_oper_name(source_p),
- aconf->user, aconf->host, aconf->reason);
+ conf->user, conf->host, conf->reason);
sendto_one(source_p, ":%s NOTICE %s :Added K-Line [%s@%s]",
MyConnect(source_p) ? me.name : ID_or_name(&me, source_p->from),
- source_p->name, aconf->user, aconf->host);
+ source_p->name, conf->user, conf->host);
ilog(LOG_TYPE_KLINE, "%s added K-Line for [%s@%s] [%s]",
- source_p->name, aconf->user, aconf->host, aconf->reason);
+ source_p->name, conf->user, conf->host, conf->reason);
}
- aconf->setat = CurrentTime;
- SetConfDatabase(aconf);
+ conf->setat = CurrentTime;
+ SetConfDatabase(conf);
- add_conf_by_address(CONF_KLINE, aconf);
+ add_conf_by_address(CONF_KLINE, conf);
rehashed_klines = 1;
}
@@ -256,7 +256,7 @@ already_placed_kline(struct Client *source_p, const char *luser, const char *lho
{
const char *reason;
struct irc_ssaddr iphost, *piphost;
- struct AccessItem *aconf;
+ struct MaskItem *conf = NULL;
int t;
if ((t = parse_netmask(lhost, &iphost, &t)) != HM_HOST)
@@ -275,15 +275,15 @@ already_placed_kline(struct Client *source_p, const char *luser, const char *lho
piphost = NULL;
}
- if ((aconf = find_conf_by_address(lhost, piphost, CONF_KLINE, t, luser, NULL, 0)))
+ if ((conf = find_conf_by_address(lhost, piphost, CONF_KLINE, t, luser, NULL, 0)))
{
if (warn)
{
- reason = aconf->reason ? aconf->reason : "No reason";
+ reason = conf->reason ? conf->reason : "No reason";
sendto_one(source_p,
":%s NOTICE %s :[%s@%s] already K-Lined by [%s@%s] - %s",
- me.name, source_p->name, luser, lhost, aconf->user,
- aconf->host, reason);
+ me.name, source_p->name, luser, lhost, conf->user,
+ conf->host, reason);
}
return 1;
@@ -382,7 +382,7 @@ me_unkline(struct Client *client_p, struct Client *source_p,
if (!IsClient(source_p) || !match(parv[1], me.name))
return;
- if (HasFlag(source_p, FLAGS_SERVICE) || find_matching_name_conf(ULINE_TYPE,
+ if (HasFlag(source_p, FLAGS_SERVICE) || find_matching_name_conf(CONF_ULINE,
source_p->servptr->name,
source_p->username, source_p->host,
SHARED_UNKLINE))
@@ -428,7 +428,7 @@ static int
remove_kline_match(const char *host, const char *user)
{
struct irc_ssaddr iphost, *piphost;
- struct AccessItem *aconf;
+ struct MaskItem *conf = NULL;
int t;
if ((t = parse_netmask(host, &iphost, NULL)) != HM_HOST)
@@ -447,11 +447,11 @@ remove_kline_match(const char *host, const char *user)
piphost = NULL;
}
- if ((aconf = find_conf_by_address(host, piphost, CONF_KLINE, t, user, NULL, 0)))
+ if ((conf = find_conf_by_address(host, piphost, CONF_KLINE, t, user, NULL, 0)))
{
- if (IsConfDatabase(aconf))
+ if (IsConfDatabase(conf))
{
- delete_one_address_conf(host, aconf);
+ delete_one_address_conf(host, conf);
return 1;
}
}
diff --git a/modules/m_locops.c b/modules/m_locops.c
index 534758f..99fe736 100644
--- a/modules/m_locops.c
+++ b/modules/m_locops.c
@@ -74,7 +74,7 @@ ms_locops(struct Client *client_p, struct Client *source_p,
if (!IsClient(source_p) || !match(parv[1], me.name))
return;
- if (find_matching_name_conf(ULINE_TYPE, source_p->servptr->name,
+ if (find_matching_name_conf(CONF_ULINE, source_p->servptr->name,
"*", "*", SHARED_LOCOPS))
sendto_wallops_flags(UMODE_LOCOPS, source_p, "SLOCOPS - %s", parv[2]);
}
diff --git a/modules/m_oper.c b/modules/m_oper.c
index d58c11b..9aef1bc 100644
--- a/modules/m_oper.c
+++ b/modules/m_oper.c
@@ -71,8 +71,7 @@ static void
m_oper(struct Client *client_p, struct Client *source_p,
int parc, char *parv[])
{
- struct ConfItem *conf;
- struct AccessItem *aconf=NULL;
+ struct MaskItem *conf = NULL;
const char *name = parv[1];
const char *password = parv[2];
@@ -87,18 +86,16 @@ m_oper(struct Client *client_p, struct Client *source_p,
if (!IsFloodDone(source_p))
flood_endgrace(source_p);
- if ((conf = find_exact_name_conf(OPER_TYPE, source_p, name, NULL, NULL)) == NULL)
+ if ((conf = find_exact_name_conf(CONF_OPER, source_p, name, NULL, NULL)) == NULL)
{
sendto_one(source_p, form_str(ERR_NOOPERHOST), me.name, source_p->name);
- conf = find_exact_name_conf(OPER_TYPE, NULL, name, NULL, NULL);
+ conf = find_exact_name_conf(CONF_OPER, NULL, name, NULL, NULL);
failed_oper_notice(source_p, name, (conf != NULL) ?
"host mismatch" : "no oper {} block");
return;
}
- aconf = map_to_conf(conf);
-
- if (match_conf_password(password, aconf))
+ if (match_conf_password(password, conf))
{
if (attach_conf(source_p, conf) != 0)
{
diff --git a/modules/m_resv.c b/modules/m_resv.c
index ba0e540..2fcbf88 100644
--- a/modules/m_resv.c
+++ b/modules/m_resv.c
@@ -140,7 +140,7 @@ ms_resv(struct Client *client_p, struct Client *source_p,
if (!IsClient(source_p) || !match(parv[1], me.name))
return;
- if (HasFlag(source_p, FLAGS_SERVICE) || find_matching_name_conf(ULINE_TYPE, source_p->servptr->name,
+ if (HasFlag(source_p, FLAGS_SERVICE) || find_matching_name_conf(CONF_ULINE, source_p->servptr->name,
source_p->username, source_p->host,
SHARED_RESV))
parse_resv(source_p, parv[2], 0, parv[3]);
@@ -199,7 +199,7 @@ ms_unresv(struct Client *client_p, struct Client *source_p,
if (!IsClient(source_p) || !match(parv[1], me.name))
return;
- if (HasFlag(source_p, FLAGS_SERVICE) || find_matching_name_conf(ULINE_TYPE, source_p->servptr->name,
+ if (HasFlag(source_p, FLAGS_SERVICE) || find_matching_name_conf(CONF_ULINE, source_p->servptr->name,
source_p->username, source_p->host,
SHARED_UNRESV))
remove_resv(source_p, parv[2]);
@@ -217,11 +217,9 @@ ms_unresv(struct Client *client_p, struct Client *source_p,
static void
parse_resv(struct Client *source_p, char *name, int tkline_time, char *reason)
{
- struct ConfItem *conf = NULL;
-
if (IsChanPrefix(*name))
{
- struct ResvChannel *resv_p;
+ struct MaskItem *conf = NULL;
if ((conf = create_channel_resv(name, reason, 0)) == NULL)
{
@@ -231,9 +229,8 @@ parse_resv(struct Client *source_p, char *name, int tkline_time, char *reason)
return;
}
- resv_p = map_to_conf(conf);
- resv_p->setat = CurrentTime;
- SetConfDatabase(resv_p);
+ conf->setat = CurrentTime;
+ SetConfDatabase(conf);
if (tkline_time != 0)
{
@@ -247,11 +244,11 @@ parse_resv(struct Client *source_p, char *name, int tkline_time, char *reason)
get_oper_name(source_p),
tkline_time/60,
(MyClient(source_p) ? "local" : "remote"),
- resv_p->name, resv_p->reason);
+ conf->name, conf->reason);
ilog(LOG_TYPE_IRCD, "%s added temporary %d min. RESV for [%s] [%s]",
source_p->name, (int)tkline_time/60,
- conf->name, resv_p->reason);
- resv_p->hold = CurrentTime + tkline_time;
+ conf->name, conf->reason);
+ conf->hold = CurrentTime + tkline_time;
}
else
{
@@ -263,12 +260,12 @@ parse_resv(struct Client *source_p, char *name, int tkline_time, char *reason)
"%s has placed a %s RESV on channel %s : [%s]",
get_oper_name(source_p),
(MyClient(source_p) ? "local" : "remote"),
- resv_p->name, resv_p->reason);
+ conf->name, conf->reason);
}
}
else
{
- struct MatchItem *resv_p = NULL;
+ struct MaskItem *conf = NULL;
if (!valid_wild_card_simple(name))
{
@@ -292,9 +289,8 @@ parse_resv(struct Client *source_p, char *name, int tkline_time, char *reason)
return;
}
- resv_p = map_to_conf(conf);
- resv_p->setat = CurrentTime;
- SetConfDatabase(resv_p);
+ conf->setat = CurrentTime;
+ SetConfDatabase(conf);
if (tkline_time != 0)
{
@@ -303,17 +299,17 @@ parse_resv(struct Client *source_p, char *name, int tkline_time, char *reason)
me.name, source_p->name,
tkline_time/60,
(MyClient(source_p) ? "local" : "remote"),
- conf->name, resv_p->reason);
+ conf->name, conf->reason);
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"%s has placed a %d minute %s RESV on nick %s : [%s]",
get_oper_name(source_p),
tkline_time/60,
(MyClient(source_p) ? "local" : "remote"),
- conf->name, resv_p->reason);
+ conf->name, conf->reason);
ilog(LOG_TYPE_IRCD, "%s added temporary %d min. RESV for [%s] [%s]",
source_p->name, (int)tkline_time/60,
- conf->name, resv_p->reason);
- resv_p->hold = CurrentTime + tkline_time;
+ conf->name, conf->reason);
+ conf->hold = CurrentTime + tkline_time;
}
else
{
@@ -321,12 +317,12 @@ parse_resv(struct Client *source_p, char *name, int tkline_time, char *reason)
":%s NOTICE %s :A %s RESV has been placed on nick %s : [%s]",
me.name, source_p->name,
(MyClient(source_p) ? "local" : "remote"),
- conf->name, resv_p->reason);
+ conf->name, conf->reason);
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"%s has placed a %s RESV on nick %s : [%s]",
get_oper_name(source_p),
(MyClient(source_p) ? "local" : "remote"),
- conf->name, resv_p->reason);
+ conf->name, conf->reason);
}
}
}
@@ -334,14 +330,12 @@ parse_resv(struct Client *source_p, char *name, int tkline_time, char *reason)
static void
remove_resv(struct Client *source_p, const char *name)
{
- struct ConfItem *conf = NULL;
+ struct MaskItem *conf = NULL;
if (IsChanPrefix(*name))
{
- struct ResvChannel *resv_p;
-
if (resv_channel_list.head == NULL ||
- !(resv_p = hash_find_resv(name)))
+ !(conf = hash_find_resv(name)))
{
sendto_one(source_p,
":%s NOTICE %s :A RESV does not exist for channel: %s",
@@ -349,7 +343,7 @@ remove_resv(struct Client *source_p, const char *name)
return;
}
- if (!IsConfDatabase(resv_p))
+ if (!IsConfDatabase(conf))
{
sendto_one(source_p,
":%s NOTICE %s :The RESV for channel: %s is in ircd.conf and must be removed by hand.",
@@ -357,7 +351,7 @@ remove_resv(struct Client *source_p, const char *name)
return;
}
- delete_channel_resv(resv_p);
+ delete_channel_resv(conf);
sendto_one(source_p,
":%s NOTICE %s :The RESV has been removed on channel: %s",
me.name, source_p->name, name);
@@ -367,18 +361,14 @@ remove_resv(struct Client *source_p, const char *name)
}
else
{
- struct MatchItem *resv_p = NULL;
-
- if ((conf = find_exact_name_conf(NRESV_TYPE, NULL, name, NULL, NULL)) == NULL)
+ if ((conf = find_exact_name_conf(CONF_NRESV, NULL, name, NULL, NULL)) == NULL)
{
sendto_one(source_p, ":%s NOTICE %s :A RESV does not exist for nick: %s",
me.name, source_p->name, name);
return;
}
- resv_p = map_to_conf(conf);
-
- if (!IsConfDatabase(resv_p))
+ if (!IsConfDatabase(conf))
{
sendto_one(source_p,
":%s NOTICE %s :The RESV for nick: %s is in ircd.conf and must be removed by hand.",
@@ -386,7 +376,7 @@ remove_resv(struct Client *source_p, const char *name)
return;
}
- delete_conf_item(conf);
+ conf_free(conf);
sendto_one(source_p, ":%s NOTICE %s :The RESV has been removed on nick: %s",
me.name, source_p->name, name);
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
diff --git a/modules/m_set.c b/modules/m_set.c
index 2623283..8c2e651 100644
--- a/modules/m_set.c
+++ b/modules/m_set.c
@@ -138,19 +138,16 @@ list_quote_commands(struct Client *source_p)
static void
quote_autoconn(struct Client *source_p, const char *arg, int newval)
{
- struct AccessItem *aconf;
-
if (arg != NULL)
{
- struct ConfItem *conf = find_exact_name_conf(SERVER_TYPE, NULL, arg, NULL, NULL);
+ struct MaskItem *conf = find_exact_name_conf(CONF_SERVER, NULL, arg, NULL, NULL);
if (conf != NULL)
{
- aconf = map_to_conf(conf);
if (newval)
- SetConfAllowAutoConn(aconf);
+ SetConfAllowAutoConn(conf);
else
- ClearConfAllowAutoConn(aconf);
+ ClearConfAllowAutoConn(conf);
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"%s has changed AUTOCONN for %s to %i",
diff --git a/modules/m_stats.c b/modules/m_stats.c
index 2fd31ba..2c292e6 100644
--- a/modules/m_stats.c
+++ b/modules/m_stats.c
@@ -30,12 +30,12 @@
#include "ircd.h" /* me */
#include "listener.h" /* show_ports */
#include "s_gline.h"
+#include "conf.h"
#include "hostmask.h"
#include "numeric.h" /* ERR_xxx */
#include "send.h" /* sendto_one */
#include "fdlist.h" /* PF and friends */
#include "s_bsd.h" /* highest_fd */
-#include "conf.h" /* AccessItem, report_configured_links */
#include "s_misc.h" /* serv_info */
#include "s_serv.h" /* hunt_server */
#include "s_user.h" /* show_opers */
@@ -291,9 +291,9 @@ stats_memory(struct Client *source_p, int parc, char *parv[])
sendto_one(source_p, ":%s %d %s z :Resv channels %u(%lu) nicks %u(%lu)",
me.name, RPL_STATSDEBUG, source_p->name,
dlink_list_length(&resv_channel_list),
- dlink_list_length(&resv_channel_list) * sizeof(struct ResvChannel),
+ dlink_list_length(&resv_channel_list) * sizeof(struct MaskItem),
dlink_list_length(&nresv_items),
- dlink_list_length(&nresv_items) * sizeof(struct MatchItem));
+ dlink_list_length(&nresv_items) * sizeof(struct MaskItem));
sendto_one(source_p, ":%s %d %s z :Classes %u(%llu)",
me.name, RPL_STATSDEBUG, source_p->name,
@@ -381,7 +381,7 @@ stats_dns_servers(struct Client *source_p)
static void
stats_connect(struct Client *source_p, int parc, char *parv[])
{
- report_confitem_types(source_p, SERVER_TYPE);
+ report_confitem_types(source_p, CONF_SERVER);
}
/* stats_deny()
@@ -393,8 +393,7 @@ stats_connect(struct Client *source_p, int parc, char *parv[])
static void
stats_deny(struct Client *source_p, int parc, char *parv[])
{
- struct ConfItem *conf;
- struct AccessItem *aconf;
+ struct MaskItem *conf;
dlink_node *ptr = NULL;
unsigned int i = 0;
@@ -405,19 +404,17 @@ stats_deny(struct Client *source_p, int parc, char *parv[])
{
struct AddressRec *arec = ptr->data;
- if (arec->type == CONF_DLINE)
- {
- aconf = arec->aconf;
+ if (arec->type != CONF_DLINE)
+ continue;
- /* dont report a tdline as a dline */
- if (aconf->hold)
- continue;
+ conf = arec->conf;
- conf = unmap_conf_item(aconf);
+ /* dont report a tdline as a dline */
+ if (conf->hold)
+ continue;
- sendto_one(source_p, form_str(RPL_STATSDLINE),
- from, to, 'D', aconf->host, aconf->reason);
- }
+ sendto_one(source_p, form_str(RPL_STATSDLINE),
+ from, to, 'D', conf->host, conf->reason);
}
}
}
@@ -431,8 +428,7 @@ stats_deny(struct Client *source_p, int parc, char *parv[])
static void
stats_tdeny(struct Client *source_p, int parc, char *parv[])
{
- struct ConfItem *conf;
- struct AccessItem *aconf;
+ struct MaskItem *conf = NULL;
dlink_node *ptr = NULL;
unsigned int i = 0;
@@ -443,19 +439,17 @@ stats_tdeny(struct Client *source_p, int parc, char *parv[])
{
struct AddressRec *arec = ptr->data;
- if (arec->type == CONF_DLINE)
- {
- aconf = arec->aconf;
+ if (arec->type != CONF_DLINE)
+ continue;
- /* dont report a permanent dline as a tdline */
- if (!aconf->hold)
- continue;
+ conf = arec->conf;
- conf = unmap_conf_item(aconf);
+ /* dont report a permanent dline as a tdline */
+ if (!conf->hold)
+ continue;
- sendto_one(source_p, form_str(RPL_STATSDLINE),
- from, to, 'd', aconf->host, aconf->reason);
- }
+ sendto_one(source_p, form_str(RPL_STATSDLINE),
+ from, to, 'd', conf->host, conf->reason);
}
}
}
@@ -469,8 +463,7 @@ stats_tdeny(struct Client *source_p, int parc, char *parv[])
static void
stats_exempt(struct Client *source_p, int parc, char *parv[])
{
- struct ConfItem *conf;
- struct AccessItem *aconf;
+ struct MaskItem *conf;
dlink_node *ptr = NULL;
unsigned int i = 0;
@@ -488,16 +481,13 @@ stats_exempt(struct Client *source_p, int parc, char *parv[])
{
struct AddressRec *arec = ptr->data;
- if (arec->type == CONF_EXEMPTDLINE)
- {
- aconf = arec->aconf;
+ if (arec->type != CONF_EXEMPT)
+ continue;
- conf = unmap_conf_item(aconf);
+ conf = arec->conf;
- sendto_one(source_p, form_str(RPL_STATSDLINE),
- from, to, 'e', aconf->host,
- aconf->reason);
- }
+ sendto_one(source_p, form_str(RPL_STATSDLINE),
+ from, to, 'e', conf->host, conf->reason /* XXX */);
}
}
}
@@ -624,13 +614,13 @@ stats_glines(struct Client *source_p, int parc, char *parv[])
if (arec->type == CONF_GLINE)
{
- const struct AccessItem *aconf = arec->aconf;
+ const struct MaskItem *conf = arec->conf;
sendto_one(source_p, form_str(RPL_STATSKLINE),
from, to, "G",
- aconf->host ? aconf->host : "*",
- aconf->user ? aconf->user : "*",
- aconf->reason ? aconf->reason : "No reason");
+ conf->host ? conf->host : "*",
+ conf->user ? conf->user : "*",
+ conf->reason ? conf->reason : "No reason");
}
}
}
@@ -639,49 +629,48 @@ stats_glines(struct Client *source_p, int parc, char *parv[])
static void
stats_hubleaf(struct Client *source_p, int parc, char *parv[])
{
- report_confitem_types(source_p, HUB_TYPE);
- report_confitem_types(source_p, LEAF_TYPE);
+ report_confitem_types(source_p, CONF_HUB);
}
/*
* show_iline_prefix()
*
* inputs - pointer to struct Client requesting output
- * - pointer to struct AccessItem
+ * - pointer to struct MaskItem
* - name to which iline prefix will be prefixed to
* output - pointer to static string with prefixes listed in ascii form
* side effects - NONE
*/
static const char *
-show_iline_prefix(struct Client *sptr, struct AccessItem *aconf, const char *name)
+show_iline_prefix(const struct Client *sptr, const struct MaskItem *conf)
{
static char prefix_of_host[USERLEN + 14];
char *prefix_ptr = prefix_of_host;
- if (IsNoTilde(aconf))
+ if (IsNoTilde(conf))
*prefix_ptr++ = '-';
- if (IsLimitIp(aconf))
+ if (IsLimitIp(conf))
*prefix_ptr++ = '!';
- if (IsNeedIdentd(aconf))
+ if (IsNeedIdentd(conf))
*prefix_ptr++ = '+';
- if (!IsNeedPassword(aconf))
+ if (!IsNeedPassword(conf))
*prefix_ptr++ = '&';
- if (IsConfExemptResv(aconf))
+ if (IsConfExemptResv(conf))
*prefix_ptr++ = '$';
- if (IsNoMatchIp(aconf))
+ if (IsNoMatchIp(conf))
*prefix_ptr++ = '%';
- if (IsConfDoSpoofIp(aconf))
+ if (IsConfDoSpoofIp(conf))
*prefix_ptr++ = '=';
- if (MyOper(sptr) && IsConfExemptKline(aconf))
+ if (MyOper(sptr) && IsConfExemptKline(conf))
*prefix_ptr++ = '^';
- if (MyOper(sptr) && IsConfExemptGline(aconf))
+ if (MyOper(sptr) && IsConfExemptGline(conf))
*prefix_ptr++ = '_';
- if (MyOper(sptr) && IsConfExemptLimits(aconf))
+ if (MyOper(sptr) && IsConfExemptLimits(conf))
*prefix_ptr++ = '>';
- if (IsConfCanFlood(aconf))
+ if (IsConfCanFlood(conf))
*prefix_ptr++ = '|';
- strlcpy(prefix_ptr, name, USERLEN+1);
+ strlcpy(prefix_ptr, conf->user, USERLEN+1);
return prefix_of_host;
}
@@ -689,8 +678,7 @@ show_iline_prefix(struct Client *sptr, struct AccessItem *aconf, const char *nam
static void
report_auth(struct Client *client_p, int parc, char *parv[])
{
- struct ConfItem *conf;
- struct AccessItem *aconf;
+ struct MaskItem *conf = NULL;
dlink_node *ptr = NULL;
unsigned int i;
@@ -701,35 +689,33 @@ report_auth(struct Client *client_p, int parc, char *parv[])
{
struct AddressRec *arec = ptr->data;
- if (arec->type == CONF_CLIENT)
- {
- aconf = arec->aconf;
-
- if (!MyOper(client_p) && IsConfDoSpoofIp(aconf))
- continue;
-
- conf = unmap_conf_item(aconf);
-
- /* We are doing a partial list, based on what matches the u@h of the
- * sender, so prepare the strings for comparing --fl_
- */
- if (ConfigFileEntry.hide_spoof_ips)
- sendto_one(client_p, form_str(RPL_STATSILINE), me.name,
- client_p->name, 'I',
- conf->name == NULL ? "*" : conf->name,
- show_iline_prefix(client_p, aconf, aconf->user),
- IsConfDoSpoofIp(aconf) ? "255.255.255.255" :
- aconf->host, aconf->port,
- aconf->class_ptr ? aconf->class_ptr->name : "<default>");
-
- else
- sendto_one(client_p, form_str(RPL_STATSILINE), me.name,
- client_p->name, 'I',
- conf->name == NULL ? "*" : conf->name,
- show_iline_prefix(client_p, aconf, aconf->user),
- aconf->host, aconf->port,
- aconf->class_ptr ? aconf->class_ptr->name : "<default>");
- }
+ if (arec->type != CONF_CLIENT)
+ continue;
+
+ conf = arec->conf;
+
+ if (!MyOper(client_p) && IsConfDoSpoofIp(conf))
+ continue;
+
+ /* We are doing a partial list, based on what matches the u@h of the
+ * sender, so prepare the strings for comparing --fl_
+ */
+ if (ConfigFileEntry.hide_spoof_ips)
+ sendto_one(client_p, form_str(RPL_STATSILINE), me.name,
+ client_p->name, 'I',
+ conf->name == NULL ? "*" : conf->name,
+ show_iline_prefix(client_p, conf),
+ IsConfDoSpoofIp(conf) ? "255.255.255.255" :
+ conf->host, conf->port,
+ conf->class ? conf->class->name : "<default>");
+
+ else
+ sendto_one(client_p, form_str(RPL_STATSILINE), me.name,
+ client_p->name, 'I',
+ conf->name == NULL ? "*" : conf->name,
+ show_iline_prefix(client_p, conf),
+ conf->host, conf->port,
+ conf->class ? conf->class->name : "<default>");
}
}
}
@@ -745,30 +731,27 @@ stats_auth(struct Client *source_p, int parc, char *parv[])
/* If unopered, Only return matching auth blocks */
else if ((ConfigFileEntry.stats_i_oper_only == 1) && !HasUMode(source_p, UMODE_OPER))
{
- struct ConfItem *conf;
- struct AccessItem *aconf;
+ struct MaskItem *conf;
if (MyConnect(source_p))
- aconf = find_conf_by_address(source_p->host,
+ conf = find_conf_by_address(source_p->host,
&source_p->localClient->ip,
CONF_CLIENT,
source_p->localClient->aftype,
source_p->username,
source_p->localClient->passwd, 1);
else
- aconf = find_conf_by_address(source_p->host, NULL, CONF_CLIENT,
+ conf = find_conf_by_address(source_p->host, NULL, CONF_CLIENT,
0, source_p->username, NULL, 1);
- if (aconf == NULL)
+ if (conf == NULL)
return;
- conf = unmap_conf_item(aconf);
-
sendto_one(source_p, form_str(RPL_STATSILINE), from,
to, 'I',
- "*", show_iline_prefix(source_p, aconf, aconf->user),
- aconf->host, aconf->port,
- aconf->class_ptr ? aconf->class_ptr->name : "<default>");
+ "*", show_iline_prefix(source_p, conf),
+ conf->host, conf->port,
+ conf->class ? conf->class->name : "<default>");
}
/* They are opered, or allowed to see all auth blocks */
else
@@ -785,7 +768,7 @@ stats_auth(struct Client *source_p, int parc, char *parv[])
static void
report_Klines(struct Client *client_p, int tkline)
{
- struct AccessItem *aconf = NULL;
+ struct MaskItem *conf = NULL;
unsigned int i = 0;
const char *p = NULL;
dlink_node *ptr = NULL;
@@ -801,22 +784,22 @@ report_Klines(struct Client *client_p, int tkline)
{
struct AddressRec *arec = ptr->data;
- if (arec->type == CONF_KLINE)
- {
- aconf = arec->aconf;
-
- if (!tkline && aconf->hold)
- continue;
-
- if (HasUMode(client_p, UMODE_OPER))
- sendto_one(client_p, form_str(RPL_STATSKLINE), me.name,
- client_p->name, p, aconf->host, aconf->user,
- aconf->reason);
- else
- sendto_one(client_p, form_str(RPL_STATSKLINE), me.name,
- client_p->name, p, aconf->host, aconf->user,
- aconf->reason);
- }
+ if (arec->type != CONF_KLINE)
+ continue;
+
+ conf = arec->conf;
+
+ if (!tkline && conf->hold)
+ continue;
+
+ if (HasUMode(client_p, UMODE_OPER))
+ sendto_one(client_p, form_str(RPL_STATSKLINE), me.name,
+ client_p->name, p, conf->host, conf->user,
+ conf->reason);
+ else
+ sendto_one(client_p, form_str(RPL_STATSKLINE), me.name,
+ client_p->name, p, conf->host, conf->user,
+ conf->reason);
}
}
}
@@ -832,27 +815,27 @@ stats_tklines(struct Client *source_p, int parc, char *parv[])
/* If unopered, Only return matching klines */
else if ((ConfigFileEntry.stats_k_oper_only == 1) && !HasUMode(source_p, UMODE_OPER))
{
- struct AccessItem *aconf = NULL;
+ struct MaskItem *conf = NULL;
if (MyConnect(source_p))
- aconf = find_conf_by_address(source_p->host,
- &source_p->localClient->ip,
+ conf = find_conf_by_address(source_p->host,
+ &source_p->localClient->ip,
CONF_KLINE,
source_p->localClient->aftype,
source_p->username, NULL, 1);
else
- aconf = find_conf_by_address(source_p->host, NULL, CONF_KLINE,
+ conf = find_conf_by_address(source_p->host, NULL, CONF_KLINE,
0, source_p->username, NULL, 1);
- if (aconf == NULL)
+ if (!conf)
return;
/* dont report a permanent kline as a tkline */
- if (!aconf->hold)
+ if (!conf->hold)
return;
sendto_one(source_p, form_str(RPL_STATSKLINE), from,
- to, "k", aconf->host, aconf->user, aconf->reason);
+ to, "k", conf->host, conf->user, conf->reason);
}
/* Theyre opered, or allowed to see all klines */
else {
@@ -871,33 +854,33 @@ stats_klines(struct Client *source_p, int parc, char *parv[])
/* If unopered, Only return matching klines */
else if ((ConfigFileEntry.stats_k_oper_only == 1) && !HasUMode(source_p, UMODE_OPER))
{
- struct AccessItem *aconf = NULL;
+ struct MaskItem *conf = NULL;
/* search for a kline */
if (MyConnect(source_p))
- aconf = find_conf_by_address(source_p->host,
+ conf = find_conf_by_address(source_p->host,
&source_p->localClient->ip,
CONF_KLINE,
source_p->localClient->aftype,
source_p->username, NULL, 0);
else
- aconf = find_conf_by_address(source_p->host, NULL, CONF_KLINE,
+ conf = find_conf_by_address(source_p->host, NULL, CONF_KLINE,
0, source_p->username, NULL, 0);
- if (aconf == NULL)
+ if (!conf)
return;
/* dont report a tkline as a kline */
- if (aconf->hold)
+ if (conf->hold)
return;
sendto_one(source_p, form_str(RPL_STATSKLINE), from,
- to, "K", aconf->host, aconf->user, aconf->reason);
+ to, "K", conf->host, conf->user, conf->reason);
}
/* Theyre opered, or allowed to see all klines */
else {
report_Klines(source_p, 0);
- report_confitem_types(source_p, RKLINE_TYPE);
+ report_confitem_types(source_p, CONF_RKLINE);
}
}
@@ -914,7 +897,7 @@ stats_oper(struct Client *source_p, int parc, char *parv[])
sendto_one(source_p, form_str(ERR_NOPRIVILEGES),
from, to);
else
- report_confitem_types(source_p, OPER_TYPE);
+ report_confitem_types(source_p, CONF_OPER);
}
/* stats_operedup()
@@ -973,7 +956,7 @@ stats_resv(struct Client *source_p, int parc, char *parv[])
static void
stats_service(struct Client *source_p, int parc, char *parv[])
{
- report_confitem_types(source_p, SERVICE_TYPE);
+ report_confitem_types(source_p, CONF_SERVICE);
}
static void
@@ -1063,7 +1046,7 @@ stats_uptime(struct Client *source_p, int parc, char *parv[])
static void
stats_shared(struct Client *source_p, int parc, char *parv[])
{
- report_confitem_types(source_p, ULINE_TYPE);
+ report_confitem_types(source_p, CONF_ULINE);
}
/* stats_servers()
@@ -1094,14 +1077,14 @@ stats_servers(struct Client *source_p, int parc, char *parv[])
static void
stats_gecos(struct Client *source_p, int parc, char *parv[])
{
- report_confitem_types(source_p, XLINE_TYPE);
- report_confitem_types(source_p, RXLINE_TYPE);
+ report_confitem_types(source_p, CONF_XLINE);
+ report_confitem_types(source_p, CONF_RXLINE);
}
static void
stats_class(struct Client *source_p, int parc, char *parv[])
{
- report_confitem_types(source_p, CLASS_TYPE);
+ report_confitem_types(source_p, CONF_CLASS);
}
static void
diff --git a/modules/m_svsmode.c b/modules/m_svsmode.c
index 34c4c71..3b3322f 100644
--- a/modules/m_svsmode.c
+++ b/modules/m_svsmode.c
@@ -115,7 +115,7 @@ ms_svsmode(struct Client *client_p, struct Client *source_p,
{
dlink_node *dm = NULL;
- detach_conf(target_p, OPER_TYPE);
+ detach_conf(target_p, CONF_OPER);
ClrOFlag(target_p);
DelUMode(target_p, ConfigFileEntry.oper_only_umodes);
diff --git a/modules/m_testline.c b/modules/m_testline.c
index 36c0cd3..4164b2d 100644
--- a/modules/m_testline.c
+++ b/modules/m_testline.c
@@ -59,8 +59,7 @@ mo_testline(struct Client *client_p, struct Client *source_p,
char given_name[IRCD_BUFSIZE];
char given_host[IRCD_BUFSIZE];
char parv1_copy[IRCD_BUFSIZE];
- struct ConfItem *conf;
- struct AccessItem *aconf;
+ struct MaskItem *conf = NULL;
struct irc_ssaddr ip;
int host_mask;
int t;
@@ -77,7 +76,7 @@ mo_testline(struct Client *client_p, struct Client *source_p,
if (IsChanPrefix(*parv[1])) /* Might be channel resv */
{
- const struct ResvChannel *chptr = NULL;
+ const struct MaskItem *chptr = NULL;
if ((chptr = match_find_resv(parv[1])))
{
@@ -105,32 +104,32 @@ mo_testline(struct Client *client_p, struct Client *source_p,
if (t != HM_HOST)
{
- aconf = find_dline_conf(&ip,
+ conf = find_dline_conf(&ip,
#ifdef IPV6
(t == HM_IPV6) ? AF_INET6 : AF_INET
#else
AF_INET
#endif
);
- if (aconf != NULL)
+ if (conf != NULL)
{
++matches;
- if (aconf->status & CONF_EXEMPTDLINE)
+ if (conf->status & CONF_EXEMPT)
sendto_one(source_p,
":%s NOTICE %s :Exempt D-line host [%s] reason [%s]",
- me.name, source_p->name, aconf->host, aconf->reason);
+ me.name, source_p->name, conf->host, conf->reason);
else
sendto_one(source_p, form_str(RPL_TESTLINE),
me.name, source_p->name,
- aconf->hold ? 'd' : 'D',
- aconf->hold ? ((aconf->hold - CurrentTime) / 60)
+ conf->hold ? 'd' : 'D',
+ conf->hold ? ((conf->hold - CurrentTime) / 60)
: 0L,
- aconf->host, aconf->reason);
+ conf->host, conf->reason);
}
}
if (t != HM_HOST)
- aconf = find_address_conf(given_host, given_name, &ip,
+ conf = find_address_conf(given_host, given_name, &ip,
#ifdef IPV6
(t == HM_IPV6) ? AF_INET6 : AF_INET,
#else
@@ -138,41 +137,39 @@ mo_testline(struct Client *client_p, struct Client *source_p,
#endif
parv[2]);
else
- aconf = find_address_conf(given_host, given_name, NULL, 0, parv[2]);
+ conf = find_address_conf(given_host, given_name, NULL, 0, parv[2]);
- if (aconf != NULL)
+ if (conf != NULL)
{
- snprintf(userhost, sizeof(userhost), "%s@%s", aconf->user, aconf->host);
+ snprintf(userhost, sizeof(userhost), "%s@%s", conf->user, conf->host);
- if (aconf->status & CONF_CLIENT)
+ if (conf->status & CONF_CLIENT)
{
sendto_one(source_p, form_str(RPL_TESTLINE),
me.name, source_p->name, 'I', 0L, userhost,
- aconf->class_ptr ? aconf->class_ptr->name : "<default>", "");
+ conf->class ? conf->class->name : "<default>", "");
++matches;
}
- else if (aconf->status & CONF_KLINE)
+ else if (conf->status & CONF_KLINE)
{
sendto_one(source_p, form_str(RPL_TESTLINE),
me.name, source_p->name,
- aconf->hold ? 'k' : 'K',
- aconf->hold ? ((aconf->hold - CurrentTime) / 60)
+ conf->hold ? 'k' : 'K',
+ conf->hold ? ((conf->hold - CurrentTime) / 60)
: 0L,
- userhost, aconf->reason? aconf->reason : "No reason");
+ userhost, conf->reason? conf->reason : "No reason");
++matches;
}
}
- conf = find_matching_name_conf(NRESV_TYPE, given_name, NULL, NULL, 0);
+ conf = find_matching_name_conf(CONF_NRESV, given_name, NULL, NULL, 0);
if (conf != NULL)
{
- const struct MatchItem *mconf = map_to_conf(conf);
-
sendto_one(source_p, form_str(RPL_TESTLINE),
me.name, source_p->name, 'Q', 0L,
conf->name,
- mconf->reason ? mconf->reason : "No reason");;
+ conf->reason ? conf->reason : "No reason");;
++matches;
}
@@ -198,7 +195,7 @@ static void
mo_testgecos(struct Client *client_p, struct Client *source_p,
int parc, char *parv[])
{
- struct ConfItem *conf = NULL;
+ struct MaskItem *conf = NULL;
if (EmptyString(parv[1]))
{
@@ -207,13 +204,10 @@ mo_testgecos(struct Client *client_p, struct Client *source_p,
return;
}
- if ((conf = find_matching_name_conf(XLINE_TYPE, parv[1], NULL, NULL, 0)))
- {
- const struct MatchItem *xconf = map_to_conf(conf);
+ if ((conf = find_matching_name_conf(CONF_XLINE, parv[1], NULL, NULL, 0)))
sendto_one(source_p, form_str(RPL_TESTLINE),
me.name, source_p->name, 'X', 0L,
- conf->name, xconf->reason ? xconf->reason : "X-lined");
- }
+ conf->name, conf->reason ? conf->reason : "X-lined");
else
sendto_one(source_p, form_str(RPL_NOTESTLINE),
me.name, source_p->name, parv[1]);
diff --git a/modules/m_trace.c b/modules/m_trace.c
index 3694140..6116a75 100644
--- a/modules/m_trace.c
+++ b/modules/m_trace.c
@@ -35,6 +35,7 @@
#include "parse.h"
#include "modules.h"
#include "conf.h"
+#include "conf_class.h"
static void do_actual_trace(struct Client *, int, char *[]);
@@ -163,8 +164,6 @@ static void
do_actual_trace(struct Client *source_p, int parc, char *parv[])
{
struct Client *target_p = NULL;
- struct ConfItem *conf;
- struct ClassItem *cltmp;
int doall = 0;
int wilds, dow;
dlink_node *ptr;
@@ -207,19 +206,16 @@ do_actual_trace(struct Client *source_p, int parc, char *parv[])
/* lets also do this for opers tracing nicks */
{
const char *name;
- const char *class_name;
-
target_p = hash_find_client(tname);
if (target_p && IsClient(target_p))
{
name = get_client_name(target_p, HIDE_IP);
- class_name = get_client_class(target_p);
if (HasUMode(target_p, UMODE_OPER))
{
sendto_one(source_p, form_str(RPL_TRACEOPERATOR),
- from, to, class_name, name,
+ from, to, get_client_class(&target_p->localClient->confs), name,
IsIPSpoof(target_p) ? "255.255.255.255" : target_p->sockhost,
CurrentTime - target_p->localClient->lasttime,
CurrentTime - target_p->localClient->last_privmsg);
@@ -227,7 +223,7 @@ do_actual_trace(struct Client *source_p, int parc, char *parv[])
else
{
sendto_one(source_p,form_str(RPL_TRACEUSER),
- from, to, class_name, name,
+ from, to, get_client_class(&target_p->localClient->confs), name,
IsIPSpoof(target_p) ? "255.255.255.255" : target_p->sockhost,
CurrentTime - target_p->localClient->lasttime,
CurrentTime - target_p->localClient->last_privmsg);
@@ -281,14 +277,13 @@ do_actual_trace(struct Client *source_p, int parc, char *parv[])
report_this_status(source_p, target_p, dow);
}
- DLINK_FOREACH(ptr, class_items.head)
+ DLINK_FOREACH(ptr, class_get_list()->head)
{
- conf = ptr->data;
- cltmp = map_to_conf(conf);
+ const struct ClassItem *class = ptr->data;
- if (cltmp->curr_user_count > 0)
+ if (class->ref_count > 0)
sendto_one(source_p, form_str(RPL_TRACECLASS),
- from, to, conf->name, cltmp->curr_user_count);
+ from, to, class->name, class->ref_count);
}
sendto_one(source_p, form_str(RPL_ENDOFTRACE), from, to, tname);
@@ -320,7 +315,7 @@ report_this_status(struct Client *source_p, struct Client *target_p, int dow)
}
name = get_client_name(target_p, HIDE_IP);
- class_name = get_client_class(target_p);
+ class_name = get_client_class(&target_p->localClient->confs);
set_time();
diff --git a/modules/m_xline.c b/modules/m_xline.c
index 9f1acc6..e512ac2 100644
--- a/modules/m_xline.c
+++ b/modules/m_xline.c
@@ -29,11 +29,11 @@
#include "irc_string.h"
#include "sprintf_irc.h"
#include "ircd.h"
+#include "conf.h"
#include "hostmask.h"
#include "numeric.h"
#include "fdlist.h"
#include "s_bsd.h"
-#include "conf.h"
#include "log.h"
#include "s_misc.h"
#include "send.h"
@@ -68,8 +68,7 @@ mo_xline(struct Client *client_p, struct Client *source_p,
{
char *reason = NULL;
char *gecos = NULL;
- struct ConfItem *conf = NULL;
- struct MatchItem *match_item = NULL;
+ struct MaskItem *conf = NULL;
char *target_server = NULL;
time_t tkline_time = 0;
@@ -117,14 +116,12 @@ mo_xline(struct Client *client_p, struct Client *source_p,
if (!valid_xline(source_p, gecos, reason, 0))
return;
- if ((conf = find_matching_name_conf(XLINE_TYPE, gecos,
+ if ((conf = find_matching_name_conf(CONF_XLINE, gecos,
NULL, NULL, 0)) != NULL)
{
- match_item = map_to_conf(conf);
-
sendto_one(source_p, ":%s NOTICE %s :[%s] already X-Lined by [%s] - %s",
me.name, source_p->name, gecos,
- conf->name, match_item->reason);
+ conf->name, conf->reason);
return;
}
@@ -184,8 +181,7 @@ me_xline(struct Client *client_p, struct Client *source_p,
static void
relay_xline(struct Client *source_p, char *parv[])
{
- struct ConfItem *conf;
- struct MatchItem *match_item;
+ struct MaskItem *conf = NULL;
int t_sec;
t_sec = atoi(parv[3]);
@@ -200,18 +196,17 @@ relay_xline(struct Client *source_p, char *parv[])
if (!match(parv[1], me.name))
return;
- if (HasFlag(source_p, FLAGS_SERVICE) || find_matching_name_conf(ULINE_TYPE, source_p->servptr->name,
+ if (HasFlag(source_p, FLAGS_SERVICE) || find_matching_name_conf(CONF_ULINE, source_p->servptr->name,
source_p->username, source_p->host,
SHARED_XLINE))
{
- if ((conf = find_matching_name_conf(XLINE_TYPE, parv[2],
+ if ((conf = find_matching_name_conf(CONF_XLINE, parv[2],
NULL, NULL, 0)) != NULL)
{
- match_item = map_to_conf(conf);
sendto_one(source_p, ":%s NOTICE %s :[%s] already X-Lined by [%s] - %s",
ID_or_name(&me, source_p->from),
ID_or_name(source_p, source_p->from),
- parv[2], conf->name, match_item->reason);
+ parv[2], conf->name, conf->reason);
return;
}
@@ -285,7 +280,7 @@ ms_unxline(struct Client *client_p, struct Client *source_p,
if (!match(parv[1], me.name))
return;
- if (HasFlag(source_p, FLAGS_SERVICE) || find_matching_name_conf(ULINE_TYPE, source_p->servptr->name,
+ if (HasFlag(source_p, FLAGS_SERVICE) || find_matching_name_conf(CONF_ULINE, source_p->servptr->name,
source_p->username, source_p->host,
SHARED_UNXLINE))
remove_xline(source_p, parv[2]);
@@ -330,50 +325,48 @@ static void
write_xline(struct Client *source_p, char *gecos, char *reason,
time_t tkline_time)
{
- struct ConfItem *conf;
- struct MatchItem *xconf;
+ struct MaskItem *conf;
const char *current_date;
time_t cur_time;
- conf = make_conf_item(XLINE_TYPE);
- xconf = map_to_conf(conf);
+ conf = conf_make(CONF_XLINE);
collapse(gecos);
DupString(conf->name, gecos);
- DupString(xconf->reason, reason);
+ DupString(conf->reason, reason);
cur_time = CurrentTime;
current_date = smalldate(cur_time);
- xconf->setat = CurrentTime;
+ conf->setat = CurrentTime;
- SetConfDatabase(xconf);
+ SetConfDatabase(conf);
if (tkline_time != 0)
{
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"%s added temporary %d min. X-Line for [%s] [%s]",
get_oper_name(source_p), (int)tkline_time/60,
- conf->name, xconf->reason);
+ conf->name, conf->reason);
sendto_one(source_p, ":%s NOTICE %s :Added temporary %d min. X-Line [%s]",
MyConnect(source_p) ? me.name : ID_or_name(&me, source_p->from),
source_p->name, (int)tkline_time/60, conf->name);
ilog(LOG_TYPE_KLINE, "%s added temporary %d min. X-Line for [%s] [%s]",
source_p->name, (int)tkline_time/60,
- conf->name, xconf->reason);
- xconf->hold = CurrentTime + tkline_time;
+ conf->name, conf->reason);
+ conf->hold = CurrentTime + tkline_time;
}
else
{
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"%s added X-Line for [%s] [%s]",
get_oper_name(source_p), conf->name,
- xconf->reason);
+ conf->reason);
sendto_one(source_p,
":%s NOTICE %s :Added X-Line [%s] [%d] [%s]",
MyConnect(source_p) ? me.name : ID_or_name(&me, source_p->from),
source_p->name, conf->name,
- xconf->action, xconf->reason);
+ conf->action, conf->reason);
ilog(LOG_TYPE_IRCD, "%s added X-Line for [%s] [%s]",
- get_oper_name(source_p), conf->name, xconf->reason);
+ get_oper_name(source_p), conf->name, conf->reason);
}
rehashed_klines = 1;
@@ -408,19 +401,17 @@ static int
remove_xline_match(const char *gecos)
{
dlink_node *ptr = NULL, *next_ptr = NULL;
- struct ConfItem *conf = NULL;
DLINK_FOREACH_SAFE(ptr, next_ptr, xconf_items.head)
{
- conf = ptr->data;
- struct MatchItem *xconf = map_to_conf(conf);
+ struct MaskItem *conf = ptr->data;
- if (!IsConfDatabase(xconf))
+ if (!IsConfDatabase(conf))
continue;
if (!irccmp(gecos, conf->name))
{
- delete_conf_item(conf);
+ conf_free(conf);
return 1;
}
}
diff --git a/src/Makefile.am b/src/Makefile.am
index b1418b1..f79e405 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -14,6 +14,7 @@ ircd_SOURCES = balloc.c \
channel_mode.c \
client.c \
conf.c \
+ conf_class.c \
conf_db.c \
conf_parser.y \
conf_lexer.l \
diff --git a/src/Makefile.in b/src/Makefile.in
index 063d156..cabccfc 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -68,22 +68,23 @@ am__installdirs = "$(DESTDIR)$(sbindir)"
PROGRAMS = $(sbin_PROGRAMS)
am_ircd_OBJECTS = balloc.$(OBJEXT) channel.$(OBJEXT) \
channel_mode.$(OBJEXT) client.$(OBJEXT) conf.$(OBJEXT) \
- conf_db.$(OBJEXT) conf_parser.$(OBJEXT) conf_lexer.$(OBJEXT) \
- dbuf.$(OBJEXT) event.$(OBJEXT) fdlist.$(OBJEXT) \
- getopt.$(OBJEXT) hash.$(OBJEXT) hook.$(OBJEXT) \
- hostmask.$(OBJEXT) irc_res.$(OBJEXT) irc_reslib.$(OBJEXT) \
- irc_string.$(OBJEXT) ircd.$(OBJEXT) ircd_signal.$(OBJEXT) \
- list.$(OBJEXT) listener.$(OBJEXT) log.$(OBJEXT) \
- match.$(OBJEXT) memory.$(OBJEXT) modules.$(OBJEXT) \
- motd.$(OBJEXT) rng_mt.$(OBJEXT) numeric.$(OBJEXT) \
- packet.$(OBJEXT) parse.$(OBJEXT) s_bsd_epoll.$(OBJEXT) \
- s_bsd_poll.$(OBJEXT) s_bsd_sigio.$(OBJEXT) \
- s_bsd_devpoll.$(OBJEXT) s_bsd_kqueue.$(OBJEXT) \
- s_bsd_select.$(OBJEXT) restart.$(OBJEXT) resv.$(OBJEXT) \
- rsa.$(OBJEXT) s_auth.$(OBJEXT) s_bsd.$(OBJEXT) \
- s_gline.$(OBJEXT) s_misc.$(OBJEXT) s_serv.$(OBJEXT) \
- s_user.$(OBJEXT) send.$(OBJEXT) sprintf_irc.$(OBJEXT) \
- version.$(OBJEXT) watch.$(OBJEXT) whowas.$(OBJEXT)
+ conf_class.$(OBJEXT) conf_db.$(OBJEXT) conf_parser.$(OBJEXT) \
+ conf_lexer.$(OBJEXT) dbuf.$(OBJEXT) event.$(OBJEXT) \
+ fdlist.$(OBJEXT) getopt.$(OBJEXT) hash.$(OBJEXT) \
+ hook.$(OBJEXT) hostmask.$(OBJEXT) irc_res.$(OBJEXT) \
+ irc_reslib.$(OBJEXT) irc_string.$(OBJEXT) ircd.$(OBJEXT) \
+ ircd_signal.$(OBJEXT) list.$(OBJEXT) listener.$(OBJEXT) \
+ log.$(OBJEXT) match.$(OBJEXT) memory.$(OBJEXT) \
+ modules.$(OBJEXT) motd.$(OBJEXT) rng_mt.$(OBJEXT) \
+ numeric.$(OBJEXT) packet.$(OBJEXT) parse.$(OBJEXT) \
+ s_bsd_epoll.$(OBJEXT) s_bsd_poll.$(OBJEXT) \
+ s_bsd_sigio.$(OBJEXT) s_bsd_devpoll.$(OBJEXT) \
+ s_bsd_kqueue.$(OBJEXT) s_bsd_select.$(OBJEXT) \
+ restart.$(OBJEXT) resv.$(OBJEXT) rsa.$(OBJEXT) \
+ s_auth.$(OBJEXT) s_bsd.$(OBJEXT) s_gline.$(OBJEXT) \
+ s_misc.$(OBJEXT) s_serv.$(OBJEXT) s_user.$(OBJEXT) \
+ send.$(OBJEXT) sprintf_irc.$(OBJEXT) version.$(OBJEXT) \
+ watch.$(OBJEXT) whowas.$(OBJEXT)
ircd_OBJECTS = $(am_ircd_OBJECTS)
am__DEPENDENCIES_1 =
ircd_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
@@ -274,6 +275,7 @@ ircd_SOURCES = balloc.c \
channel_mode.c \
client.c \
conf.c \
+ conf_class.c \
conf_db.c \
conf_parser.y \
conf_lexer.l \
@@ -419,6 +421,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/channel_mode.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/client.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/conf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/conf_class.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/conf_db.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/conf_lexer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/conf_parser.Po@am__quote@
diff --git a/src/channel.c b/src/channel.c
index 90d1548..28eade6 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -30,6 +30,7 @@
#include "channel_mode.h"
#include "client.h"
#include "hash.h"
+#include "conf.h"
#include "hostmask.h"
#include "irc_string.h"
#include "sprintf_irc.h"
@@ -38,7 +39,6 @@
#include "s_serv.h" /* captab */
#include "s_user.h"
#include "send.h"
-#include "conf.h" /* ConfigFileEntry, ConfigChannel */
#include "event.h"
#include "memory.h"
#include "balloc.h"
diff --git a/src/channel_mode.c b/src/channel_mode.c
index 5607df2..b6810f3 100644
--- a/src/channel_mode.c
+++ b/src/channel_mode.c
@@ -28,6 +28,7 @@
#include "channel_mode.h"
#include "client.h"
#include "hash.h"
+#include "conf.h"
#include "hostmask.h"
#include "irc_string.h"
#include "sprintf_irc.h"
@@ -37,7 +38,6 @@
#include "s_user.h"
#include "send.h"
#include "whowas.h"
-#include "conf.h" /* ConfigFileEntry, ConfigChannel */
#include "event.h"
#include "memory.h"
#include "balloc.h"
diff --git a/src/client.c b/src/client.c
index 2d245ec..33f8dc6 100644
--- a/src/client.c
+++ b/src/client.c
@@ -74,7 +74,7 @@ static dlink_node *eac_next; /* next aborted client to exit */
static void check_pings_list(dlink_list *);
static void check_unknowns_list(void);
-static void ban_them(struct Client *, struct ConfItem *);
+static void ban_them(struct Client *, struct MaskItem *);
/* init_client()
@@ -254,7 +254,7 @@ check_pings_list(dlink_list *list)
if (!IsRegistered(client_p))
ping = CONNECTTIMEOUT, pingwarn = 0;
else
- ping = get_client_ping(client_p, &pingwarn);
+ ping = get_client_ping(&client_p->localClient->confs, &pingwarn);
if (ping < CurrentTime - client_p->localClient->lasttime)
{
@@ -352,8 +352,7 @@ void
check_conf_klines(void)
{
struct Client *client_p = NULL; /* current local client_p being examined */
- struct AccessItem *aconf = NULL;
- struct ConfItem *conf = NULL;
+ struct MaskItem *conf = NULL;
dlink_node *ptr, *next_ptr;
DLINK_FOREACH_SAFE(ptr, next_ptr, local_client_list.head)
@@ -365,19 +364,17 @@ check_conf_klines(void)
if (IsDead(client_p) || !IsClient(client_p))
continue;
- /* if there is a returned struct ConfItem then kill it */
- if ((aconf = find_dline_conf(&client_p->localClient->ip,
+ if ((conf = find_dline_conf(&client_p->localClient->ip,
client_p->localClient->aftype)) != NULL)
{
- if (aconf->status & CONF_EXEMPTDLINE)
+ if (conf->status & CONF_EXEMPT)
continue;
- conf = unmap_conf_item(aconf);
ban_them(client_p, conf);
continue; /* and go examine next fd/client_p */
}
- if (ConfigFileEntry.glines && (aconf = find_gline(client_p)))
+ if (ConfigFileEntry.glines && (conf = find_gline(client_p)))
{
if (IsExemptKline(client_p) ||
IsExemptGline(client_p))
@@ -388,16 +385,13 @@ check_conf_klines(void)
continue;
}
- conf = unmap_conf_item(aconf);
ban_them(client_p, conf);
/* and go examine next fd/client_p */
continue;
}
- if ((aconf = find_kill(client_p)) != NULL)
+ if ((conf = find_kill(client_p)) != NULL)
{
-
- /* if there is a returned struct AccessItem.. then kill it */
if (IsExemptKline(client_p))
{
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
@@ -406,15 +400,13 @@ check_conf_klines(void)
continue;
}
- conf = unmap_conf_item(aconf);
ban_them(client_p, conf);
continue;
}
- /* if there is a returned struct MatchItem then kill it */
- if ((conf = find_matching_name_conf(XLINE_TYPE, client_p->info,
+ if ((conf = find_matching_name_conf(CONF_XLINE, client_p->info,
NULL, NULL, 0)) != NULL ||
- (conf = find_matching_name_conf(RXLINE_TYPE, client_p->info,
+ (conf = find_matching_name_conf(CONF_RXLINE, client_p->info,
NULL, NULL, 0)) != NULL)
{
ban_them(client_p, conf);
@@ -427,10 +419,10 @@ check_conf_klines(void)
{
client_p = ptr->data;
- if ((aconf = find_dline_conf(&client_p->localClient->ip,
- client_p->localClient->aftype)))
+ if ((conf = find_dline_conf(&client_p->localClient->ip,
+ client_p->localClient->aftype)))
{
- if (aconf->status & CONF_EXEMPTDLINE)
+ if (conf->status & CONF_EXEMPT)
continue;
exit_client(client_p, &me, "D-lined");
@@ -442,16 +434,14 @@ check_conf_klines(void)
* ban_them
*
* inputs - pointer to client to ban
- * - pointer to ConfItem
+ * - pointer to MaskItem
* output - NONE
* side effects - given client_p is banned
*/
static void
-ban_them(struct Client *client_p, struct ConfItem *conf)
+ban_them(struct Client *client_p, struct MaskItem *conf)
{
const char *user_reason = NULL; /* What is sent to user */
- struct AccessItem *aconf = NULL;
- struct MatchItem *xconf = NULL;
const char *type_string = NULL;
const char dline_string[] = "D-line";
const char kline_string[] = "K-line";
@@ -460,34 +450,27 @@ ban_them(struct Client *client_p, struct ConfItem *conf)
switch (conf->type)
{
- case RKLINE_TYPE:
- case KLINE_TYPE:
+ case CONF_RKLINE:
+ case CONF_KLINE:
type_string = kline_string;
- aconf = map_to_conf(conf);
break;
- case DLINE_TYPE:
+ case CONF_DLINE:
type_string = dline_string;
- aconf = map_to_conf(conf);
break;
- case GLINE_TYPE:
+ case CONF_GLINE:
type_string = gline_string;
- aconf = map_to_conf(conf);
break;
- case RXLINE_TYPE:
- case XLINE_TYPE:
+ case CONF_RXLINE:
+ case CONF_XLINE:
type_string = xline_string;
- xconf = map_to_conf(conf);
- ++xconf->count;
+ ++conf->count;
break;
default:
assert(0);
break;
}
- if (aconf != NULL)
- user_reason = aconf->reason ? aconf->reason : type_string;
- if (xconf != NULL)
- user_reason = xconf->reason ? xconf->reason : type_string;
+ user_reason = conf->reason ? conf->reason : type_string;
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE, "%s active for %s",
type_string, get_client_name(client_p, HIDE_IP));
diff --git a/src/conf.c b/src/conf.c
index 8c92889..0d4c5c4 100644
--- a/src/conf.c
+++ b/src/conf.c
@@ -52,6 +52,7 @@
#include "parse.h"
#include "s_misc.h"
#include "conf_db.h"
+#include "conf_class.h"
struct Callback *client_check_cb = NULL;
struct config_server_hide ConfigServerHide;
@@ -66,8 +67,6 @@ dlink_list xconf_items = { NULL, NULL, 0 };
dlink_list rxconf_items = { NULL, NULL, 0 };
dlink_list rkconf_items = { NULL, NULL, 0 };
dlink_list nresv_items = { NULL, NULL, 0 };
-dlink_list class_items = { NULL, NULL, 0 };
-
dlink_list temporary_resv = { NULL, NULL, 0 };
extern unsigned int lineno;
@@ -80,29 +79,21 @@ struct conf_parser_context conf_parser_ctx = { 0, 0, NULL };
/* internally defined functions */
static void read_conf(FILE *);
static void clear_out_old_conf(void);
-static void flush_deleted_I_P(void);
static void expire_tklines(dlink_list *);
static void garbage_collect_ip_entries(void);
static int hash_ip(struct irc_ssaddr *);
static int verify_access(struct Client *, const char *);
-static int attach_iline(struct Client *, struct ConfItem *);
+static int attach_iline(struct Client *, struct MaskItem *);
static struct ip_entry *find_or_add_ip(struct irc_ssaddr *);
-static dlink_list *map_to_list(ConfType);
-static struct AccessItem *find_regexp_kline(const char *[]);
+static dlink_list *map_to_list(enum maskitem_type);
+static struct MaskItem *find_regexp_kline(const char *[]);
static int find_user_host(struct Client *, char *, char *, char *, unsigned int);
/*
* bit_len
*/
-static int cidr_limit_reached(int, struct irc_ssaddr *, struct ClassItem *);
-static void remove_from_cidr_check(struct irc_ssaddr *, struct ClassItem *);
-static void destroy_cidr_class(struct ClassItem *);
-
static void flags_to_ascii(unsigned int, const unsigned int[], char *, int);
-/* address of default class conf */
-static struct ConfItem *class_default;
-
/* usually, with hash tables, you use a prime number...
* but in this case I am dealing with ip addresses,
* not ascii strings.
@@ -122,28 +113,9 @@ static BlockHeap *ip_entry_heap = NULL;
static int ip_entries_count = 0;
-void *
-map_to_conf(struct ConfItem *aconf)
-{
- void *conf;
- conf = (void *)((uintptr_t)aconf +
- (uintptr_t)sizeof(struct ConfItem));
- return(conf);
-}
-
-struct ConfItem *
-unmap_conf_item(void *aconf)
-{
- struct ConfItem *conf;
-
- conf = (struct ConfItem *)((uintptr_t)aconf -
- (uintptr_t)sizeof(struct ConfItem));
- return(conf);
-}
-
/* conf_dns_callback()
*
- * inputs - pointer to struct AccessItem
+ * inputs - pointer to struct MaskItem
* - pointer to DNSReply reply
* output - none
* side effects - called when resolver query finishes
@@ -154,14 +126,14 @@ unmap_conf_item(void *aconf)
static void
conf_dns_callback(void *vptr, const struct irc_ssaddr *addr, const char *name)
{
- struct AccessItem *aconf = vptr;
+ struct MaskItem *conf = vptr;
- aconf->dns_pending = 0;
+ conf->dns_pending = 0;
if (addr != NULL)
- memcpy(&aconf->addr, addr, sizeof(aconf->addr));
+ memcpy(&conf->addr, addr, sizeof(conf->addr));
else
- aconf->dns_failed = 1;
+ conf->dns_failed = 1;
}
/* conf_dns_lookup()
@@ -171,15 +143,72 @@ conf_dns_callback(void *vptr, const struct irc_ssaddr *addr, const char *name)
* allocate a dns_query and start ns lookup.
*/
static void
-conf_dns_lookup(struct AccessItem *aconf)
+conf_dns_lookup(struct MaskItem *conf)
{
- if (!aconf->dns_pending)
+ if (!conf->dns_pending)
{
- aconf->dns_pending = 1;
- gethost_byname(conf_dns_callback, aconf, aconf->host);
+ conf->dns_pending = 1;
+ gethost_byname(conf_dns_callback, conf, conf->host);
}
}
+struct MaskItem *
+conf_make(enum maskitem_type type)
+{
+ struct MaskItem *conf = MyMalloc(sizeof(*conf));
+ dlink_list *list = NULL;
+
+ conf->type = type;
+ conf->active = 1;
+ conf->aftype = AF_INET;
+
+ if ((list = map_to_list(type)))
+ dlinkAdd(conf, &conf->node, list);
+ return conf;
+}
+
+void
+conf_free(struct MaskItem *conf)
+{
+ dlink_node *ptr = NULL, *ptr_next = NULL;
+
+ MyFree(conf->name);
+
+ if (conf->dns_pending)
+ delete_resolver_queries(conf);
+ if (conf->passwd != NULL)
+ memset(conf->passwd, 0, strlen(conf->passwd));
+ if (conf->spasswd != NULL)
+ memset(conf->spasswd, 0, strlen(conf->spasswd));
+
+ conf->class = NULL;
+
+ MyFree(conf->passwd);
+ MyFree(conf->spasswd);
+ MyFree(conf->reason);
+ MyFree(conf->user);
+ MyFree(conf->host);
+#ifdef HAVE_LIBCRYPTO
+ MyFree(conf->cipher_list);
+
+ if (conf->rsa_public_key)
+ RSA_free(conf->rsa_public_key);
+
+ MyFree(conf->rsa_public_key_file);
+#endif
+ DLINK_FOREACH_SAFE(ptr, ptr_next, conf->hub_list.head)
+ {
+ MyFree(ptr->data);
+ free_dlink_node(ptr);
+ }
+
+ DLINK_FOREACH_SAFE(ptr, ptr_next, conf->leaf_list.head)
+ {
+ MyFree(ptr->data);
+ free_dlink_node(ptr);
+ }
+}
+#if 0
/* make_conf_item()
*
* inputs - type of item
@@ -295,7 +324,7 @@ make_conf_item(ConfType type)
dlinkAdd(conf, &conf->node, &service_items);
break;
- case CLASS_TYPE:
+ case CONF_CLASS:
conf = MyMalloc(sizeof(struct ConfItem) +
sizeof(struct ClassItem));
dlinkAdd(conf, &conf->node, &class_items);
@@ -495,6 +524,7 @@ free_access_item(struct AccessItem *aconf)
conf = unmap_conf_item(aconf);
delete_conf_item(conf);
}
+#endif
static const unsigned int shared_bit_table[] =
{ 'K', 'k', 'U', 'X', 'x', 'Y', 'Q', 'q', 'R', 'L', 0};
@@ -507,62 +537,57 @@ static const unsigned int shared_bit_table[] =
* side effects -
*/
void
-report_confitem_types(struct Client *source_p, ConfType type)
+report_confitem_types(struct Client *source_p, enum maskitem_type type)
{
dlink_node *ptr = NULL, *dptr = NULL;
- struct ConfItem *conf = NULL;
- struct AccessItem *aconf = NULL;
- struct MatchItem *matchitem = NULL;
- struct ClassItem *classitem = NULL;
+ struct MaskItem *conf = NULL;
+ const struct ClassItem *class = NULL;
char buf[12];
char *p = NULL;
switch (type)
{
- case XLINE_TYPE:
+ case CONF_XLINE:
DLINK_FOREACH(ptr, xconf_items.head)
{
conf = ptr->data;
- matchitem = map_to_conf(conf);
sendto_one(source_p, form_str(RPL_STATSXLINE),
me.name, source_p->name,
- matchitem->hold ? "x": "X", matchitem->count,
- conf->name, matchitem->reason);
+ conf->hold ? "x": "X", conf->count,
+ conf->name, conf->reason);
}
break;
#ifdef HAVE_LIBPCRE
- case RXLINE_TYPE:
+ case CONF_RXLINE:
DLINK_FOREACH(ptr, rxconf_items.head)
{
conf = ptr->data;
- matchitem = map_to_conf(conf);
sendto_one(source_p, form_str(RPL_STATSXLINE),
me.name, source_p->name,
- "XR", matchitem->count,
- conf->name, matchitem->reason);
+ "XR", conf->count,
+ conf->name, conf->reason);
}
break;
- case RKLINE_TYPE:
+ case CONF_RKLINE:
DLINK_FOREACH(ptr, rkconf_items.head)
{
- aconf = map_to_conf((conf = ptr->data));
+ conf = ptr->data;
sendto_one(source_p, form_str(RPL_STATSKLINE), me.name,
- source_p->name, "KR", aconf->host, aconf->user,
- aconf->reason);
+ source_p->name, "KR", conf->host, conf->user,
+ conf->reason);
}
break;
#endif
- case ULINE_TYPE:
+ case CONF_ULINE:
DLINK_FOREACH(ptr, uconf_items.head)
{
conf = ptr->data;
- matchitem = map_to_conf(conf);
p = buf;
@@ -570,12 +595,12 @@ report_confitem_types(struct Client *source_p, ConfType type)
* consistency with cluster{} flags
*/
*p++ = 'c';
- flags_to_ascii(matchitem->action, shared_bit_table, p, 0);
+ flags_to_ascii(conf->action /* XXX XXX */, shared_bit_table, p, 0);
sendto_one(source_p, form_str(RPL_STATSULINE),
me.name, source_p->name, conf->name,
- matchitem->user?matchitem->user: "*",
- matchitem->host?matchitem->host: "*", buf);
+ conf->user?conf->user: "*",
+ conf->host?conf->host: "*", buf);
}
DLINK_FOREACH(ptr, cluster_items.head)
@@ -585,7 +610,7 @@ report_confitem_types(struct Client *source_p, ConfType type)
p = buf;
*p++ = 'C';
- flags_to_ascii(conf->flags, shared_bit_table, p, 0);
+ flags_to_ascii(conf->flags /* XXX XXX */, shared_bit_table, p, 0);
sendto_one(source_p, form_str(RPL_STATSULINE),
me.name, source_p->name, conf->name,
@@ -594,49 +619,43 @@ report_confitem_types(struct Client *source_p, ConfType type)
break;
- case OPER_TYPE:
+ case CONF_OPER:
DLINK_FOREACH(ptr, oconf_items.head)
{
conf = ptr->data;
- aconf = map_to_conf(conf);
/* Don't allow non opers to see oper privs */
if (HasUMode(source_p, UMODE_OPER))
sendto_one(source_p, form_str(RPL_STATSOLINE),
- me.name, source_p->name, 'O', aconf->user, aconf->host,
- conf->name, oper_privs_as_string(aconf->port),
- aconf->class_ptr ? aconf->class_ptr->name : "<default>");
+ me.name, source_p->name, 'O', conf->user, conf->host,
+ conf->name, oper_privs_as_string(conf->port),
+ conf->class ? conf->class->name : "<default>");
else
sendto_one(source_p, form_str(RPL_STATSOLINE),
- me.name, source_p->name, 'O', aconf->user, aconf->host,
+ me.name, source_p->name, 'O', conf->user, conf->host,
conf->name, "0",
- aconf->class_ptr ? aconf->class_ptr->name : "<default>");
+ conf->class ? conf->class->name : "<default>");
}
break;
- case CLASS_TYPE:
- DLINK_FOREACH(ptr, class_items.head)
+ case CONF_CLASS:
+ DLINK_FOREACH(ptr, class_get_list()->head)
{
- conf = ptr->data;
- classitem = map_to_conf(conf);
+ class = ptr->data;
sendto_one(source_p, form_str(RPL_STATSYLINE),
me.name, source_p->name, 'Y',
- conf->name, classitem->ping_freq,
- classitem->con_freq,
- classitem->max_total, classitem->max_sendq,
- classitem->max_recvq,
- classitem->curr_user_count,
- classitem->number_per_cidr, classitem->cidr_bitlen_ipv4,
- classitem->number_per_cidr, classitem->cidr_bitlen_ipv6,
- classitem->active ? "active" : "disabled");
+ class->name, class->ping_freq,
+ class->con_freq,
+ class->max_total, class->max_sendq,
+ class->max_recvq,
+ class->ref_count,
+ class->number_per_cidr, class->cidr_bitlen_ipv4,
+ class->number_per_cidr, class->cidr_bitlen_ipv6,
+ class->active ? "active" : "disabled");
}
break;
- case CONF_TYPE:
- case CLIENT_TYPE:
- break;
-
- case SERVICE_TYPE:
+ case CONF_SERVICE:
DLINK_FOREACH(ptr, service_items.head)
{
conf = ptr->data;
@@ -645,19 +664,18 @@ report_confitem_types(struct Client *source_p, ConfType type)
}
break;
- case SERVER_TYPE:
+ case CONF_SERVER:
DLINK_FOREACH(ptr, server_items.head)
{
p = buf;
conf = ptr->data;
- aconf = map_to_conf(conf);
buf[0] = '\0';
- if (IsConfAllowAutoConn(aconf))
+ if (IsConfAllowAutoConn(conf))
*p++ = 'A';
- if (IsConfSSL(aconf))
+ if (IsConfSSL(conf))
*p++ = 'S';
if (buf[0] == '\0')
*p++ = '*';
@@ -669,48 +687,38 @@ report_confitem_types(struct Client *source_p, ConfType type)
*/
if (!ConfigServerHide.hide_server_ips && HasUMode(source_p, UMODE_ADMIN))
sendto_one(source_p, form_str(RPL_STATSCLINE),
- me.name, source_p->name, 'C', aconf->host,
- buf, conf->name, aconf->port,
- aconf->class_ptr ? aconf->class_ptr->name : "<default>");
+ me.name, source_p->name, 'C', conf->host,
+ buf, conf->name, conf->port,
+ conf->class ? conf->class->name : "<default>");
else
sendto_one(source_p, form_str(RPL_STATSCLINE),
me.name, source_p->name, 'C',
- "*@127.0.0.1", buf, conf->name, aconf->port,
- aconf->class_ptr ? aconf->class_ptr->name : "<default>");
+ "*@127.0.0.1", buf, conf->name, conf->port,
+ conf->class ? conf->class->name : "<default>");
}
break;
- case HUB_TYPE:
+ case CONF_HUB:
DLINK_FOREACH(ptr, server_items.head)
{
conf = ptr->data;
- aconf = map_to_conf(conf);
- DLINK_FOREACH(dptr, aconf->hub_list.head)
+ DLINK_FOREACH(dptr, conf->hub_list.head)
sendto_one(source_p, form_str(RPL_STATSHLINE), me.name,
source_p->name, 'H', dptr->data, conf->name, 0, "*");
}
- break;
- case LEAF_TYPE:
DLINK_FOREACH(ptr, server_items.head)
{
conf = ptr->data;
- aconf = map_to_conf(conf);
- DLINK_FOREACH(dptr, aconf->leaf_list.head)
+ DLINK_FOREACH(dptr, conf->leaf_list.head)
sendto_one(source_p, form_str(RPL_STATSLLINE), me.name,
source_p->name, 'L', dptr->data, conf->name, 0, "*");
}
+
break;
- case GLINE_TYPE:
- case KLINE_TYPE:
- case DLINE_TYPE:
- case EXEMPTDLINE_TYPE:
- case CRESV_TYPE:
- case NRESV_TYPE:
- case CLUSTER_TYPE:
default:
break;
}
@@ -729,7 +737,7 @@ report_confitem_types(struct Client *source_p, ConfType type)
* Look for conf lines which have the same
* status as the flags passed.
*/
-static void *
+void *
check_client(va_list args)
{
struct Client *source_p = va_arg(args, struct Client *);
@@ -808,14 +816,13 @@ check_client(va_list args)
static int
verify_access(struct Client *client_p, const char *username)
{
- struct AccessItem *aconf = NULL, *rkconf = NULL;
- struct ConfItem *conf = NULL;
+ struct MaskItem *conf = NULL, *rkconf = NULL;
char non_ident[USERLEN + 1] = { '~', '\0' };
const char *uhi[3];
if (IsGotId(client_p))
{
- aconf = find_address_conf(client_p->host, client_p->username,
+ conf = find_address_conf(client_p->host, client_p->username,
&client_p->localClient->ip,
client_p->localClient->aftype,
client_p->localClient->passwd);
@@ -823,7 +830,7 @@ verify_access(struct Client *client_p, const char *username)
else
{
strlcpy(non_ident+1, username, sizeof(non_ident)-1);
- aconf = find_address_conf(client_p->host,non_ident,
+ conf = find_address_conf(client_p->host,non_ident,
&client_p->localClient->ip,
client_p->localClient->aftype,
client_p->localClient->passwd);
@@ -835,30 +842,26 @@ verify_access(struct Client *client_p, const char *username)
rkconf = find_regexp_kline(uhi);
- if (aconf != NULL)
+ if (conf != NULL)
{
- if (IsConfClient(aconf) && !rkconf)
+ if (IsConfClient(conf) && !rkconf)
{
- conf = unmap_conf_item(aconf);
-
- if (IsConfRedir(aconf))
+ if (IsConfRedir(conf))
{
sendto_one(client_p, form_str(RPL_REDIR),
me.name, client_p->name,
conf->name ? conf->name : "",
- aconf->port);
+ conf->port);
return(NOT_AUTHORIZED);
}
- if (IsConfDoIdentd(aconf))
+ if (IsConfDoIdentd(conf))
SetNeedId(client_p);
/* Thanks for spoof idea amm */
- if (IsConfDoSpoofIp(aconf))
+ if (IsConfDoSpoofIp(conf))
{
- conf = unmap_conf_item(aconf);
-
- if (!ConfigFileEntry.hide_spoof_ips && IsConfSpoofNotice(aconf))
+ if (!ConfigFileEntry.hide_spoof_ips && IsConfSpoofNotice(conf))
sendto_realops_flags(UMODE_ALL, L_ADMIN, SEND_NOTICE,
"%s spoofing: %s as %s",
client_p->name, client_p->host, conf->name);
@@ -868,15 +871,15 @@ verify_access(struct Client *client_p, const char *username)
return(attach_iline(client_p, conf));
}
- else if (rkconf || IsConfKill(aconf) || (ConfigFileEntry.glines && IsConfGline(aconf)))
+ else if (rkconf || IsConfKill(conf) || (ConfigFileEntry.glines && IsConfGline(conf)))
{
/* XXX */
- aconf = rkconf ? rkconf : aconf;
- if (IsConfGline(aconf))
+ conf = rkconf ? rkconf : conf;
+ if (IsConfGline(conf))
sendto_one(client_p, ":%s NOTICE %s :*** G-lined", me.name,
client_p->name);
sendto_one(client_p, ":%s NOTICE %s :*** Banned: %s",
- me.name, client_p->name, aconf->reason);
+ me.name, client_p->name, conf->reason);
return(BANNED_CLIENT);
}
}
@@ -892,10 +895,10 @@ verify_access(struct Client *client_p, const char *username)
* side effects - do actual attach
*/
static int
-attach_iline(struct Client *client_p, struct ConfItem *conf)
+attach_iline(struct Client *client_p, struct MaskItem *conf)
{
- struct AccessItem *aconf;
- struct ClassItem *aclass;
+// struct MaskItem *conf = NULL;
+ struct ClassItem *class = NULL;
struct ip_entry *ip_found;
int a_limit_reached = 0;
int local = 0, global = 0, ident = 0;
@@ -904,11 +907,10 @@ attach_iline(struct Client *client_p, struct ConfItem *conf)
ip_found->count++;
SetIpHash(client_p);
- aconf = map_to_conf(conf);
- if (aconf->class_ptr == NULL)
+ if (conf->class == NULL)
return NOT_AUTHORIZED; /* If class is missing, this is best */
- aclass = map_to_conf(aconf->class_ptr);
+ class = conf->class;
count_user_host(client_p->username, client_p->host,
&global, &local, &ident);
@@ -917,21 +919,21 @@ attach_iline(struct Client *client_p, struct ConfItem *conf)
* setting a_limit_reached if any limit is reached.
* - Dianora
*/
- if (aclass->max_total != 0 && aclass->curr_user_count >= aclass->max_total)
+ if (class->max_total != 0 && class->ref_count >= class->max_total)
a_limit_reached = 1;
- else if (aclass->max_perip != 0 && ip_found->count > aclass->max_perip)
+ else if (class->max_perip != 0 && ip_found->count > class->max_perip)
a_limit_reached = 1;
- else if (aclass->max_local != 0 && local >= aclass->max_local)
+ else if (class->max_local != 0 && local >= class->max_local)
a_limit_reached = 1;
- else if (aclass->max_global != 0 && global >= aclass->max_global)
+ else if (class->max_global != 0 && global >= class->max_global)
a_limit_reached = 1;
- else if (aclass->max_ident != 0 && ident >= aclass->max_ident &&
+ else if (class->max_ident != 0 && ident >= class->max_ident &&
client_p->username[0] != '~')
a_limit_reached = 1;
if (a_limit_reached)
{
- if (!IsConfExemptLimits(aconf))
+ if (!IsConfExemptLimits(conf))
return TOO_MANY; /* Already at maximum allowed */
sendto_one(client_p,
@@ -1180,59 +1182,43 @@ garbage_collect_ip_entries(void)
* side effects - Disassociate configuration from the client.
* Also removes a class from the list if marked for deleting.
*/
-int
-detach_conf(struct Client *client_p, ConfType type)
+void
+detach_conf(struct Client *client_p, enum maskitem_type type)
{
- dlink_node *ptr, *next_ptr;
- struct ConfItem *conf;
- struct ClassItem *aclass;
- struct AccessItem *aconf;
- struct ConfItem *aclass_conf;
+ dlink_node *ptr = NULL, *next_ptr = NULL;
+ struct MaskItem *conf = NULL;
DLINK_FOREACH_SAFE(ptr, next_ptr, client_p->localClient->confs.head)
{
conf = ptr->data;
- if (type == CONF_TYPE || conf->type == type)
+ if (conf->type & type)
{
dlinkDelete(ptr, &client_p->localClient->confs);
free_dlink_node(ptr);
switch (conf->type)
{
- case CLIENT_TYPE:
- case OPER_TYPE:
- case SERVER_TYPE:
- aconf = map_to_conf(conf);
+ case CONF_CLIENT:
+ case CONF_OPER:
+ case CONF_SERVER:
+ assert(conf->clients > 0);
- assert(aconf->clients > 0);
+ assert(conf->class->ref_count > 0);
- if ((aclass_conf = aconf->class_ptr) != NULL)
- {
- aclass = map_to_conf(aclass_conf);
-
- assert(aclass->curr_user_count > 0);
-
- if (conf->type == CLIENT_TYPE)
- remove_from_cidr_check(&client_p->localClient->ip, aclass);
- if (--aclass->curr_user_count == 0 && aclass->active == 0)
- delete_conf_item(aclass_conf);
- }
-
- if (--aconf->clients == 0 && IsConfIllegal(aconf))
- delete_conf_item(conf);
+ if (conf->type == CONF_CLIENT)
+ remove_from_cidr_check(&client_p->localClient->ip, conf->class);
+ if (--conf->class->ref_count == 0 && conf->class->active == 0)
+ class_free(conf->class);
+ if (--conf->clients == 0 && conf->active == 0)
+ conf_free(conf);
break;
default:
break;
}
-
- if (type != CONF_TYPE)
- return 0;
}
}
-
- return -1;
}
/* attach_conf()
@@ -1246,24 +1232,18 @@ detach_conf(struct Client *client_p, ConfType type)
* attachment if there was an old one...
*/
int
-attach_conf(struct Client *client_p, struct ConfItem *conf)
+attach_conf(struct Client *client_p, struct MaskItem *conf)
{
- struct AccessItem *aconf = map_to_conf(conf);
- struct ClassItem *aclass = map_to_conf(aconf->class_ptr);
-
if (dlinkFind(&client_p->localClient->confs, conf) != NULL)
return 1;
- if (IsConfIllegal(aconf)) /* TBV: can't happen */
- return NOT_AUTHORIZED;
-
- if (conf->type == CLIENT_TYPE)
- if (cidr_limit_reached(IsConfExemptLimits(aconf),
- &client_p->localClient->ip, aclass))
+ if (conf->type == CONF_CLIENT)
+ if (cidr_limit_reached(IsConfExemptLimits(conf),
+ &client_p->localClient->ip, conf->class))
return TOO_MANY; /* Already at maximum allowed */
- aclass->curr_user_count++;
- aconf->clients++;
+ conf->class->ref_count++;
+ conf->clients++;
dlinkAdd(conf, make_dlink_node(), &client_p->localClient->confs);
@@ -1283,8 +1263,7 @@ attach_connect_block(struct Client *client_p, const char *name,
const char *host)
{
dlink_node *ptr;
- struct ConfItem *conf;
- struct AccessItem *aconf;
+ struct MaskItem *conf = NULL;
assert(client_p != NULL);
assert(host != NULL);
@@ -1295,9 +1274,8 @@ attach_connect_block(struct Client *client_p, const char *name,
DLINK_FOREACH(ptr, server_items.head)
{
conf = ptr->data;
- aconf = map_to_conf(conf);
- if (match(conf->name, name) == 0 || match(aconf->host, host) == 0)
+ if (match(conf->name, name) == 0 || match(conf->host, host) == 0)
continue;
attach_conf(client_p, conf);
@@ -1309,7 +1287,7 @@ attach_connect_block(struct Client *client_p, const char *name,
/* find_conf_exact()
*
- * inputs - type of ConfItem
+ * inputs - type of MaskItem
* - pointer to name to find
* - pointer to username to find
* - pointer to host to find
@@ -1317,14 +1295,13 @@ attach_connect_block(struct Client *client_p, const char *name,
* side effects - find a conf entry which matches the hostname
* and has the same name.
*/
-struct ConfItem *
-find_conf_exact(ConfType type, const char *name, const char *user,
+struct MaskItem *
+find_conf_exact(enum maskitem_type type, const char *name, const char *user,
const char *host)
{
dlink_node *ptr;
dlink_list *list_p;
- struct ConfItem *conf = NULL;
- struct AccessItem *aconf;
+ struct MaskItem *conf = NULL;
/* Only valid for OPER_TYPE and ...? */
list_p = map_to_list(type);
@@ -1335,9 +1312,9 @@ find_conf_exact(ConfType type, const char *name, const char *user,
if (conf->name == NULL)
continue;
- aconf = map_to_conf(conf);
- if (aconf->host == NULL)
+ if (conf->host == NULL)
continue;
+
if (irccmp(conf->name, name) != 0)
continue;
@@ -1346,15 +1323,11 @@ find_conf_exact(ConfType type, const char *name, const char *user,
** socket host) matches *either* host or name field
** of the configuration.
*/
- if (!match(aconf->host, host) || !match(aconf->user, user))
+ if (!match(conf->host, host) || !match(conf->user, user))
continue;
- if (type == OPER_TYPE)
- {
- struct ClassItem *aclass = map_to_conf(aconf->class_ptr);
-
- if (aconf->clients >= aclass->max_total)
+ if (type == CONF_OPER)
+ if (conf->clients >= conf->class->max_total)
continue;
- }
return conf;
}
@@ -1371,11 +1344,11 @@ find_conf_exact(ConfType type, const char *name, const char *user,
* side effects - find a conf entry which matches the name
* and has the given mask.
*/
-struct ConfItem *
-find_conf_name(dlink_list *list, const char *name, ConfType type)
+struct MaskItem *
+find_conf_name(dlink_list *list, const char *name, enum maskitem_type type)
{
dlink_node *ptr;
- struct ConfItem* conf;
+ struct MaskItem* conf;
DLINK_FOREACH(ptr, list->head)
{
@@ -1399,42 +1372,34 @@ find_conf_name(dlink_list *list, const char *name, ConfType type)
* side effects - none
*/
static dlink_list *
-map_to_list(ConfType type)
+map_to_list(enum maskitem_type type)
{
switch(type)
{
- case RXLINE_TYPE:
+ case CONF_RXLINE:
return(&rxconf_items);
break;
- case XLINE_TYPE:
+ case CONF_XLINE:
return(&xconf_items);
break;
- case ULINE_TYPE:
+ case CONF_ULINE:
return(&uconf_items);
break;
- case NRESV_TYPE:
+ case CONF_NRESV:
return(&nresv_items);
break;
- case OPER_TYPE:
+ case CONF_OPER:
return(&oconf_items);
break;
- case CLASS_TYPE:
- return(&class_items);
- break;
- case SERVER_TYPE:
+ case CONF_SERVER:
return(&server_items);
break;
- case SERVICE_TYPE:
+ case CONF_SERVICE:
return(&service_items);
break;
- case CLUSTER_TYPE:
+ case CONF_CLUSTER:
return(&cluster_items);
break;
- case CONF_TYPE:
- case GLINE_TYPE:
- case KLINE_TYPE:
- case DLINE_TYPE:
- case CRESV_TYPE:
default:
return NULL;
}
@@ -1447,34 +1412,32 @@ map_to_list(ConfType type)
* - pointer to user
* - pointer to host
* - optional action to match on as well
- * output - NULL or pointer to found struct MatchItem
+ * output - NULL or pointer to found struct MaskItem
* side effects - looks for a match on name field
*/
-struct ConfItem *
-find_matching_name_conf(ConfType type, const char *name, const char *user,
- const char *host, int action)
+struct MaskItem *
+find_matching_name_conf(enum maskitem_type type, const char *name, const char *user,
+ const char *host, unsigned int action)
{
dlink_node *ptr=NULL;
- struct ConfItem *conf=NULL;
- struct AccessItem *aconf=NULL;
- struct MatchItem *match_item=NULL;
+ struct MaskItem *conf=NULL;
dlink_list *list_p = map_to_list(type);
switch (type)
{
#ifdef HAVE_LIBPCRE
- case RXLINE_TYPE:
+ case CONF_RXLINE:
DLINK_FOREACH(ptr, list_p->head)
{
conf = ptr->data;
assert(conf->regexpname);
- if (!ircd_pcre_exec(conf->regexpname, name))
+ if (!ircd_pcre_exec(conf->regexuser, name))
return conf;
}
break;
#endif
- case SERVICE_TYPE:
+ case CONF_SERVICE:
DLINK_FOREACH(ptr, list_p->head)
{
conf = ptr->data;
@@ -1486,39 +1449,37 @@ find_matching_name_conf(ConfType type, const char *name, const char *user,
}
break;
- case XLINE_TYPE:
- case ULINE_TYPE:
- case NRESV_TYPE:
+ case CONF_XLINE:
+ case CONF_ULINE:
+ case CONF_NRESV:
DLINK_FOREACH(ptr, list_p->head)
{
conf = ptr->data;
- match_item = map_to_conf(conf);
if (EmptyString(conf->name))
continue;
if ((name != NULL) && match_esc(conf->name, name))
{
if ((user == NULL && (host == NULL)))
return conf;
- if ((match_item->action & action) != action)
+ if ((conf->action & action) != action)
continue;
- if (EmptyString(match_item->user) || EmptyString(match_item->host))
+ if (EmptyString(conf->user) || EmptyString(conf->host))
return conf;
- if (match(match_item->user, user) && match(match_item->host, host))
+ if (match(conf->user, user) && match(conf->host, host))
return conf;
}
}
break;
- case SERVER_TYPE:
+ case CONF_SERVER:
DLINK_FOREACH(ptr, list_p->head)
{
conf = ptr->data;
- aconf = map_to_conf(conf);
- if ((name != NULL) && match_esc(name, conf->name))
+ if ((name != NULL) && match(name, conf->name))
return conf;
- else if ((host != NULL) && match_esc(host, aconf->host))
+ else if ((host != NULL) && match(host, conf->host))
return conf;
}
break;
@@ -1535,32 +1496,28 @@ find_matching_name_conf(ConfType type, const char *name, const char *user,
* - pointer to name string to find
* - pointer to user
* - pointer to host
- * output - NULL or pointer to found struct MatchItem
+ * output - NULL or pointer to found struct MaskItem
* side effects - looks for an exact match on name field
*/
-struct ConfItem *
-find_exact_name_conf(ConfType type, const struct Client *who, const char *name,
+struct MaskItem *
+find_exact_name_conf(enum maskitem_type type, const struct Client *who, const char *name,
const char *user, const char *host)
{
dlink_node *ptr = NULL;
- struct AccessItem *aconf;
- struct ConfItem *conf;
- struct MatchItem *match_item;
- dlink_list *list_p;
-
- list_p = map_to_list(type);
+ struct MaskItem *conf;
+ dlink_list *list_p = map_to_list(type);
switch(type)
{
- case RXLINE_TYPE:
- case XLINE_TYPE:
- case ULINE_TYPE:
- case NRESV_TYPE:
+ case CONF_RXLINE:
+ case CONF_XLINE:
+ case CONF_ULINE:
+ case CONF_NRESV:
DLINK_FOREACH(ptr, list_p->head)
{
conf = ptr->data;
- match_item = (struct MatchItem *)map_to_conf(conf);
+
if (EmptyString(conf->name))
continue;
@@ -1568,19 +1525,18 @@ find_exact_name_conf(ConfType type, const struct Client *who, const char *name,
{
if ((user == NULL && (host == NULL)))
return (conf);
- if (EmptyString(match_item->user) || EmptyString(match_item->host))
+ if (EmptyString(conf->user) || EmptyString(conf->host))
return (conf);
- if (match(match_item->user, user) && match(match_item->host, host))
+ if (match(conf->user, user) && match(conf->host, host))
return (conf);
}
}
break;
- case OPER_TYPE:
+ case CONF_OPER:
DLINK_FOREACH(ptr, list_p->head)
{
conf = ptr->data;
- aconf = map_to_conf(conf);
if (EmptyString(conf->name))
continue;
@@ -1589,25 +1545,25 @@ find_exact_name_conf(ConfType type, const struct Client *who, const char *name,
{
if (!who)
return conf;
- if (EmptyString(aconf->user) || EmptyString(aconf->host))
+ if (EmptyString(conf->user) || EmptyString(conf->host))
return conf;
- if (match(aconf->user, who->username))
+ if (match(conf->user, who->username))
{
- switch (aconf->type)
+ switch (conf->htype)
{
case HM_HOST:
- if (match(aconf->host, who->host) || match(aconf->host, who->sockhost))
+ if (match(conf->host, who->host) || match(conf->host, who->sockhost))
return conf;
break;
case HM_IPV4:
if (who->localClient->aftype == AF_INET)
- if (match_ipv4(&who->localClient->ip, &aconf->addr, aconf->bits))
+ if (match_ipv4(&who->localClient->ip, &conf->addr, conf->bits))
return conf;
break;
#ifdef IPV6
case HM_IPV6:
if (who->localClient->aftype == AF_INET6)
- if (match_ipv6(&who->localClient->ip, &aconf->addr, aconf->bits))
+ if (match_ipv6(&who->localClient->ip, &conf->addr, conf->bits))
return conf;
break;
#endif
@@ -1620,19 +1576,19 @@ find_exact_name_conf(ConfType type, const struct Client *who, const char *name,
break;
- case SERVER_TYPE:
+ case CONF_SERVER:
DLINK_FOREACH(ptr, list_p->head)
{
conf = ptr->data;
- aconf = (struct AccessItem *)map_to_conf(conf);
+
if (EmptyString(conf->name))
continue;
if (name == NULL)
{
- if (EmptyString(aconf->host))
+ if (EmptyString(conf->host))
continue;
- if (irccmp(aconf->host, host) == 0)
+ if (irccmp(conf->host, host) == 0)
return(conf);
}
else if (irccmp(conf->name, name) == 0)
@@ -1642,18 +1598,6 @@ find_exact_name_conf(ConfType type, const struct Client *who, const char *name,
}
break;
- case CLASS_TYPE:
- DLINK_FOREACH(ptr, list_p->head)
- {
- conf = ptr->data;
- if (EmptyString(conf->name))
- continue;
-
- if (irccmp(conf->name, name) == 0)
- return (conf);
- }
- break;
-
default:
break;
}
@@ -1687,8 +1631,6 @@ rehash(int sig)
load_conf_modules();
- flush_deleted_I_P();
-
rehashed_klines = 1;
/* XXX */
if (ConfigLoggingEntry.use_logging)
@@ -1712,7 +1654,7 @@ set_default_conf(void)
/* verify init_class() ran, this should be an unnecessary check
* but its not much work.
*/
- assert(class_default == (struct ConfItem *) class_items.tail->data);
+ assert(class_default == class_items.tail->data);
#ifdef HAVE_LIBCRYPTO
ServerInfo.rsa_private_key = NULL;
@@ -1855,7 +1797,7 @@ read_conf(FILE *file)
yyparse(); /* Load the values from the conf */
validate_conf(); /* Check to make sure some values are still okay. */
/* Some global values are also loaded here. */
- check_class(); /* Make sure classes are valid */
+ class_delete_marked(); /* Make sure classes are valid */
}
/* lookup_confhost()
@@ -1864,17 +1806,14 @@ read_conf(FILE *file)
* line and convert an IP addresses in a.b.c.d number for to IP#s.
*/
static void
-lookup_confhost(struct ConfItem *conf)
+lookup_confhost(struct MaskItem *conf)
{
- struct AccessItem *aconf;
struct addrinfo hints, *res;
- aconf = map_to_conf(conf);
-
- if (has_wildcards(aconf->host))
+ if (has_wildcards(conf->host))
{
ilog(LOG_TYPE_IRCD, "Host/server name error: (%s) (%s)",
- aconf->host, conf->name);
+ conf->host, conf->name);
return;
}
@@ -1889,17 +1828,18 @@ lookup_confhost(struct ConfItem *conf)
/* Get us ready for a bind() and don't bother doing dns lookup */
hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
- if (getaddrinfo(aconf->host, NULL, &hints, &res))
+ if (getaddrinfo(conf->host, NULL, &hints, &res))
{
- conf_dns_lookup(aconf);
+ conf_dns_lookup(conf);
return;
}
assert(res != NULL);
- memcpy(&aconf->addr, res->ai_addr, res->ai_addrlen);
- aconf->addr.ss_len = res->ai_addrlen;
- aconf->addr.ss.ss_family = res->ai_family;
+ memcpy(&conf->addr, res->ai_addr, res->ai_addrlen);
+ conf->addr.ss_len = res->ai_addrlen;
+ conf->addr.ss.ss_family = res->ai_family;
+
freeaddrinfo(res);
}
@@ -1914,13 +1854,13 @@ int
conf_connect_allowed(struct irc_ssaddr *addr, int aftype)
{
struct ip_entry *ip_found;
- struct AccessItem *aconf = find_dline_conf(addr, aftype);
+ struct MaskItem *conf = find_dline_conf(addr, aftype);
/* DLINE exempt also gets you out of static limits/pacing... */
- if (aconf && (aconf->status & CONF_EXEMPTDLINE))
+ if (conf && (conf->status & CONF_EXEMPT))
return 0;
- if (aconf != NULL)
+ if (conf != NULL)
return BANNED_CLIENT;
ip_found = find_or_add_ip(addr);
@@ -1936,7 +1876,7 @@ conf_connect_allowed(struct irc_ssaddr *addr, int aftype)
return 0;
}
-static struct AccessItem *
+static struct MaskItem *
find_regexp_kline(const char *uhi[])
{
#ifdef HAVE_LIBPCRE
@@ -1944,7 +1884,7 @@ find_regexp_kline(const char *uhi[])
DLINK_FOREACH(ptr, rkconf_items.head)
{
- struct AccessItem *aptr = map_to_conf(ptr->data);
+ struct MaskItem *aptr = ptr->data;
assert(aptr->regexuser);
assert(aptr->regexhost);
@@ -1961,14 +1901,14 @@ find_regexp_kline(const char *uhi[])
/* find_kill()
*
* inputs - pointer to client structure
- * output - pointer to struct AccessItem if found
+ * output - pointer to struct MaskItem if found
* side effects - See if this user is klined already,
- * and if so, return struct AccessItem pointer
+ * and if so, return struct MaskItem pointer
*/
-struct AccessItem *
+struct MaskItem *
find_kill(struct Client *client_p)
{
- struct AccessItem *aconf = NULL;
+ struct MaskItem *conf = NULL;
const char *uhi[3];
uhi[0] = client_p->username;
@@ -1977,26 +1917,26 @@ find_kill(struct Client *client_p)
assert(client_p != NULL);
- aconf = find_conf_by_address(client_p->host, &client_p->localClient->ip,
- CONF_KLINE, client_p->localClient->aftype,
- client_p->username, NULL, 1);
- if (aconf == NULL)
- aconf = find_regexp_kline(uhi);
+ conf = find_conf_by_address(client_p->host, &client_p->localClient->ip,
+ CONF_KLINE, client_p->localClient->aftype,
+ client_p->username, NULL, 1);
+ if (conf == NULL)
+ conf = find_regexp_kline(uhi);
- return aconf;
+ return conf;
}
-struct AccessItem *
+struct MaskItem *
find_gline(struct Client *client_p)
{
- struct AccessItem *aconf;
+ struct MaskItem *conf;
assert(client_p != NULL);
- aconf = find_conf_by_address(client_p->host, &client_p->localClient->ip,
- CONF_GLINE, client_p->localClient->aftype,
- client_p->username, NULL, 1);
- return aconf;
+ conf = find_conf_by_address(client_p->host, &client_p->localClient->ip,
+ CONF_GLINE, client_p->localClient->aftype,
+ client_p->username, NULL, 1);
+ return conf;
}
/* cleanup_tklines()
@@ -2026,46 +1966,40 @@ expire_tklines(dlink_list *tklist)
{
dlink_node *ptr;
dlink_node *next_ptr;
- struct ConfItem *conf;
- struct MatchItem *xconf;
- struct MatchItem *nconf;
- struct ResvChannel *cconf;
+ struct MaskItem *conf;
DLINK_FOREACH_SAFE(ptr, next_ptr, tklist->head)
{
conf = ptr->data;
- if (conf->type == XLINE_TYPE)
+ if (conf->type == CONF_XLINE)
{
- xconf = (struct MatchItem *)map_to_conf(conf);
- if (xconf->hold && xconf->hold <= CurrentTime)
+ if (conf->hold && conf->hold <= CurrentTime)
{
if (ConfigFileEntry.tkline_expire_notices)
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"Temporary X-line for [%s] expired", conf->name);
- delete_conf_item(conf);
+ conf_free(conf);
}
}
- else if (conf->type == NRESV_TYPE)
+ else if (conf->type == CONF_NRESV)
{
- nconf = (struct MatchItem *)map_to_conf(conf);
- if (nconf->hold && nconf->hold <= CurrentTime)
+ if (conf->hold && conf->hold <= CurrentTime)
{
if (ConfigFileEntry.tkline_expire_notices)
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"Temporary RESV for [%s] expired", conf->name);
- delete_conf_item(conf);
+ conf_free(conf);
}
}
- else if (conf->type == CRESV_TYPE)
- {
- cconf = ptr->data;
- if (cconf->hold && cconf->hold <= CurrentTime)
+ else if (conf->type == CONF_CRESV)
+ { /* XXX XXX */
+ if (conf->hold && conf->hold <= CurrentTime)
{
if (ConfigFileEntry.tkline_expire_notices)
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
- "Temporary RESV for [%s] expired", cconf->name);
- delete_channel_resv(cconf);
+ "Temporary RESV for [%s] expired", conf->name);
+ delete_channel_resv(conf);
}
}
}
@@ -2135,10 +2069,9 @@ get_oper_name(const struct Client *client_p)
{
if ((cnode = client_p->localClient->confs.head))
{
- struct ConfItem *conf = cnode->data;
- const struct AccessItem *aconf = map_to_conf(conf);
+ struct MaskItem *conf = cnode->data;
- if (IsConfOperator(aconf))
+ if (IsConfOperator(conf))
{
snprintf(buffer, sizeof(buffer), "%s!%s@%s{%s}", client_p->name,
client_p->username, client_p->host, conf->name);
@@ -2240,9 +2173,7 @@ static void
clear_out_old_conf(void)
{
dlink_node *ptr = NULL, *next_ptr = NULL;
- struct ConfItem *conf;
- struct AccessItem *aconf;
- struct ClassItem *cltmp;
+ struct MaskItem *conf;
dlink_list *free_items [] = {
&server_items, &oconf_items,
&uconf_items, &xconf_items, &rxconf_items, &rkconf_items,
@@ -2260,65 +2191,32 @@ clear_out_old_conf(void)
DLINK_FOREACH_SAFE(ptr, next_ptr, (*iterator)->head)
{
conf = ptr->data;
- /* XXX This is less than pretty */
- if (conf->type == SERVER_TYPE)
- {
- aconf = map_to_conf(conf);
- if (aconf->clients != 0)
- {
- SetConfIllegal(aconf);
- dlinkDelete(&conf->node, &server_items);
- }
- else
- {
- delete_conf_item(conf);
- }
- }
- else if (conf->type == OPER_TYPE)
- {
- aconf = map_to_conf(conf);
+ dlinkDelete(&conf->node, map_to_list(conf->type));
- if (aconf->clients != 0)
- {
- SetConfIllegal(aconf);
- dlinkDelete(&conf->node, &oconf_items);
- }
- else
- {
- delete_conf_item(conf);
- }
- }
- else if (conf->type == XLINE_TYPE ||
- conf->type == RXLINE_TYPE ||
- conf->type == RKLINE_TYPE)
+ /* XXX This is less than pretty */
+ if (conf->type == CONF_SERVER || conf->type == CONF_OPER)
{
- /* temporary (r)xlines are also on
- * the (r)xconf items list */
- aconf = map_to_conf(conf);
- if (aconf->hold)
- continue;
-
- delete_conf_item(conf);
+ if (!conf->clients)
+ conf_free(conf);
}
- else
+ else if (conf->type == CONF_XLINE ||
+ conf->type == CONF_RXLINE ||
+ conf->type == CONF_RKLINE)
{
- delete_conf_item(conf);
+ if (!conf->hold)
+ conf_free(conf);
}
+ else
+ conf_free(conf);
}
}
/*
* don't delete the class table, rather mark all entries
- * for deletion. The table is cleaned up by check_class. - avalon
+ * for deletion. The table is cleaned up by class_delete_marked. - avalon
*/
- DLINK_FOREACH(ptr, class_items.head)
- {
- cltmp = map_to_conf(ptr->data);
-
- if (ptr != class_items.tail) /* never mark the "default" class */
- cltmp->active = 0;
- }
+ class_mark_for_deletion();
clear_out_address_conf();
@@ -2381,273 +2279,30 @@ clear_out_old_conf(void)
delete_isupport("EXCEPTS");
}
-/* flush_deleted_I_P()
- *
- * inputs - none
- * output - none
- * side effects - This function removes I/P conf items
- */
-static void
-flush_deleted_I_P(void)
-{
- dlink_node *ptr;
- dlink_node *next_ptr;
- struct ConfItem *conf;
- struct AccessItem *aconf;
- dlink_list * free_items [] = {
- &server_items, &oconf_items, NULL
- };
- dlink_list ** iterator = free_items; /* C is dumb */
-
- /* flush out deleted I and P lines
- * although still in use.
- */
- for (; *iterator != NULL; iterator++)
- {
- DLINK_FOREACH_SAFE(ptr, next_ptr, (*iterator)->head)
- {
- conf = ptr->data;
- aconf = (struct AccessItem *)map_to_conf(conf);
-
- if (IsConfIllegal(aconf))
- {
- dlinkDelete(ptr, *iterator);
-
- if (aconf->clients == 0)
- delete_conf_item(conf);
- }
- }
- }
-}
-
#define BAD_PING (-1)
/* get_conf_ping()
*
- * inputs - pointer to struct AccessItem
+ * inputs - pointer to struct MaskItem
* - pointer to a variable that receives ping warning time
* output - ping frequency
* side effects - NONE
*/
-static int
-get_conf_ping(struct ConfItem *conf, int *pingwarn)
+int
+get_conf_ping(const struct MaskItem *conf, int *pingwarn)
{
- struct ClassItem *aclass;
- struct AccessItem *aconf;
-
if (conf != NULL)
{
- aconf = (struct AccessItem *)map_to_conf(conf);
- if (aconf->class_ptr != NULL)
+ if (conf->class)
{
- aclass = (struct ClassItem *)map_to_conf(aconf->class_ptr);
- *pingwarn = aclass->ping_warning;
- return aclass->ping_freq;
+ *pingwarn = conf->class->ping_warning;
+ return conf->class->ping_freq;
}
}
return BAD_PING;
}
-/* get_client_class()
- *
- * inputs - pointer to client struct
- * output - pointer to name of class
- * side effects - NONE
- */
-const char *
-get_client_class(struct Client *target_p)
-{
- dlink_node *cnode = NULL;
- struct AccessItem *aconf = NULL;
-
- assert(!IsMe(target_p));
-
- if ((cnode = target_p->localClient->confs.head))
- {
- struct ConfItem *conf = cnode->data;
-
- assert((conf->type == CLIENT_TYPE) || (conf->type == SERVER_TYPE) ||
- (conf->type == OPER_TYPE));
-
- aconf = map_to_conf(conf);
- if (aconf->class_ptr != NULL)
- return aconf->class_ptr->name;
- }
-
- return "default";
-}
-
-/* get_client_ping()
- *
- * inputs - pointer to client struct
- * - pointer to a variable that receives ping warning time
- * output - ping frequency
- * side effects - NONE
- */
-int
-get_client_ping(struct Client *target_p, int *pingwarn)
-{
- int ping = 0;
- dlink_node *cnode = NULL;
-
- if ((cnode = target_p->localClient->confs.head))
- {
- struct ConfItem *conf = cnode->data;
-
- assert((conf->type == CLIENT_TYPE) || (conf->type == SERVER_TYPE) ||
- (conf->type == OPER_TYPE));
-
- ping = get_conf_ping(conf, pingwarn);
- if (ping > 0)
- return ping;
- }
-
- *pingwarn = 0;
- return DEFAULT_PINGFREQUENCY;
-}
-
-/* find_class()
- *
- * inputs - string name of class
- * output - corresponding Class pointer
- * side effects - NONE
- */
-struct ConfItem *
-find_class(const char *classname)
-{
- struct ConfItem *conf;
-
- if ((conf = find_exact_name_conf(CLASS_TYPE, NULL, classname, NULL, NULL)) != NULL)
- return conf;
-
- return class_default;
-}
-
-/* check_class()
- *
- * inputs - NONE
- * output - NONE
- * side effects -
- */
-void
-check_class(void)
-{
- dlink_node *ptr = NULL, *next_ptr = NULL;
-
- DLINK_FOREACH_SAFE(ptr, next_ptr, class_items.head)
- {
- struct ClassItem *aclass = map_to_conf(ptr->data);
-
- if (!aclass->active && !aclass->curr_user_count)
- {
- destroy_cidr_class(aclass);
- delete_conf_item(ptr->data);
- }
- }
-}
-
-/* init_class()
- *
- * inputs - NONE
- * output - NONE
- * side effects -
- */
-void
-init_class(void)
-{
- struct ClassItem *aclass;
-
- class_default = make_conf_item(CLASS_TYPE);
-
- aclass = map_to_conf(class_default);
- aclass->active = 1;
- DupString(class_default->name, "default");
- aclass->con_freq = DEFAULT_CONNECTFREQUENCY;
- aclass->ping_freq = DEFAULT_PINGFREQUENCY;
- aclass->max_total = MAXIMUM_LINKS_DEFAULT;
- aclass->max_sendq = DEFAULT_SENDQ;
- aclass->max_recvq = DEFAULT_RECVQ;
-
- client_check_cb = register_callback("check_client", check_client);
-}
-
-/* get_sendq()
- *
- * inputs - pointer to client
- * output - sendq for this client as found from its class
- * side effects - NONE
- */
-unsigned int
-get_sendq(struct Client *client_p)
-{
- unsigned int sendq = DEFAULT_SENDQ;
- dlink_node *cnode;
- struct ConfItem *class_conf;
- struct ClassItem *aclass;
- struct AccessItem *aconf;
-
- assert(!IsMe(client_p));
-
- if ((cnode = client_p->localClient->confs.head))
- {
- struct ConfItem *conf = cnode->data;
-
- assert((conf->type == CLIENT_TYPE) || (conf->type == SERVER_TYPE) ||
- (conf->type == OPER_TYPE));
-
- aconf = map_to_conf(conf);
-
- if ((class_conf = aconf->class_ptr) == NULL)
- return DEFAULT_SENDQ; /* TBV: shouldn't be possible at all */
-
- aclass = map_to_conf(class_conf);
- sendq = aclass->max_sendq;
- return sendq;
- }
-
- /* XXX return a default?
- * if here, then there wasn't an attached conf with a sendq
- * that is very bad -Dianora
- */
- return DEFAULT_SENDQ;
-}
-
-unsigned int
-get_recvq(struct Client *client_p)
-{
- unsigned int recvq = DEFAULT_RECVQ;
- dlink_node *cnode;
- struct ConfItem *class_conf;
- struct ClassItem *aclass;
- struct AccessItem *aconf;
-
- assert(!IsMe(client_p));
-
- if ((cnode = client_p->localClient->confs.head))
- {
- struct ConfItem *conf = cnode->data;
-
- assert((conf->type == CLIENT_TYPE) || (conf->type == SERVER_TYPE) ||
- (conf->type == OPER_TYPE));
-
- aconf = map_to_conf(conf);
-
- if ((class_conf = aconf->class_ptr) == NULL)
- return DEFAULT_RECVQ; /* TBV: shouldn't be possible at all */
-
- aclass = map_to_conf(class_conf);
- recvq = aclass->max_recvq;
- return recvq;
- }
-
- /* XXX return a default?
- * if here, then there wasn't an attached conf with a recvq
- * that is very bad -Dianora
- */
- return DEFAULT_RECVQ;
-}
-
/* conf_add_class_to_conf()
*
* inputs - pointer to config item
@@ -2655,41 +2310,37 @@ get_recvq(struct Client *client_p)
* side effects - Add a class pointer to a conf
*/
void
-conf_add_class_to_conf(struct ConfItem *conf, const char *class_name)
+conf_add_class_to_conf(struct MaskItem *conf, const char *class_name)
{
- struct AccessItem *aconf = map_to_conf(conf);
struct ClassItem *class = NULL;
if (class_name == NULL)
{
- aconf->class_ptr = class_default;
+ conf->class = class_default;
- if (conf->type == CLIENT_TYPE)
+ if (conf->type == CONF_CLIENT)
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"Warning *** Defaulting to default class for %s@%s",
- aconf->user, aconf->host);
+ conf->user, conf->host);
else
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"Warning *** Defaulting to default class for %s",
conf->name);
}
else
- aconf->class_ptr = find_class(class_name);
+ conf->class = class_find(class_name, 1);
- if (aconf->class_ptr)
- class = map_to_conf(aconf->class_ptr);
-
- if (aconf->class_ptr == NULL || !class->active)
+ if (conf->class == NULL)
{
- if (conf->type == CLIENT_TYPE)
+ if (conf->type == CONF_CLIENT)
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"Warning *** Defaulting to default class for %s@%s",
- aconf->user, aconf->host);
+ conf->user, conf->host);
else
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"Warning *** Defaulting to default class for %s",
conf->name);
- aconf->class_ptr = class_default;
+ conf->class = class_default;
}
}
@@ -2701,13 +2352,11 @@ conf_add_class_to_conf(struct ConfItem *conf, const char *class_name)
* side effects - Add a connect block
*/
int
-conf_add_server(struct ConfItem *conf, const char *class_name)
+conf_add_server(struct MaskItem *conf, const char *class_name)
{
- struct AccessItem *aconf = map_to_conf(conf);
-
conf_add_class_to_conf(conf, class_name);
- if (!aconf->host || !conf->name)
+ if (!conf->host || !conf->name)
{
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"Bad connect block");
@@ -2715,7 +2364,7 @@ conf_add_server(struct ConfItem *conf, const char *class_name)
return -1;
}
- if (EmptyString(aconf->passwd))
+ if (EmptyString(conf->passwd))
{
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"Bad connect block, name %s",
@@ -3126,19 +2775,19 @@ valid_comment(struct Client *source_p, char *comment, int warn)
* side effects - none
*/
int
-match_conf_password(const char *password, const struct AccessItem *aconf)
+match_conf_password(const char *password, const struct MaskItem *conf)
{
const char *encr = NULL;
- if (EmptyString(password) || EmptyString(aconf->passwd))
+ if (EmptyString(password) || EmptyString(conf->passwd))
return 0;
- if (aconf->flags & CONF_FLAGS_ENCRYPTED)
- encr = crypt(password, aconf->passwd);
+ if (conf->flags & CONF_FLAGS_ENCRYPTED)
+ encr = crypt(password, conf->passwd);
else
encr = password;
- return !strcmp(encr, aconf->passwd);
+ return !strcmp(encr, conf->passwd);
}
/*
@@ -3167,7 +2816,7 @@ cluster_a_line(struct Client *source_p, const char *command,
DLINK_FOREACH(ptr, cluster_items.head)
{
- const struct ConfItem *conf = ptr->data;
+ const struct MaskItem *conf = ptr->data;
if (conf->flags & cluster_type)
sendto_match_servs(source_p, conf->name, CAP_CLUSTER|capab,
@@ -3289,227 +2938,3 @@ flags_to_ascii(unsigned int flags, const unsigned int bit_table[], char *p,
}
*p = '\0';
}
-
-/*
- * cidr_limit_reached
- *
- * inputs - int flag allowing over_rule of limits
- * - pointer to the ip to be added
- * - pointer to the class
- * output - non zero if limit reached
- * 0 if limit not reached
- * side effects -
- */
-static int
-cidr_limit_reached(int over_rule,
- struct irc_ssaddr *ip, struct ClassItem *aclass)
-{
- dlink_node *ptr = NULL;
- struct CidrItem *cidr;
-
- if (aclass->number_per_cidr <= 0)
- return 0;
-
- if (ip->ss.ss_family == AF_INET)
- {
- if (aclass->cidr_bitlen_ipv4 <= 0)
- return 0;
-
- DLINK_FOREACH(ptr, aclass->list_ipv4.head)
- {
- cidr = ptr->data;
- if (match_ipv4(ip, &cidr->mask, aclass->cidr_bitlen_ipv4))
- {
- if (!over_rule && (cidr->number_on_this_cidr >= aclass->number_per_cidr))
- return -1;
- cidr->number_on_this_cidr++;
- return 0;
- }
- }
- cidr = MyMalloc(sizeof(struct CidrItem));
- cidr->number_on_this_cidr = 1;
- cidr->mask = *ip;
- mask_addr(&cidr->mask, aclass->cidr_bitlen_ipv4);
- dlinkAdd(cidr, &cidr->node, &aclass->list_ipv4);
- }
-#ifdef IPV6
- else if (aclass->cidr_bitlen_ipv6 > 0)
- {
- DLINK_FOREACH(ptr, aclass->list_ipv6.head)
- {
- cidr = ptr->data;
- if (match_ipv6(ip, &cidr->mask, aclass->cidr_bitlen_ipv6))
- {
- if (!over_rule && (cidr->number_on_this_cidr >= aclass->number_per_cidr))
- return -1;
- cidr->number_on_this_cidr++;
- return 0;
- }
- }
- cidr = MyMalloc(sizeof(struct CidrItem));
- cidr->number_on_this_cidr = 1;
- cidr->mask = *ip;
- mask_addr(&cidr->mask, aclass->cidr_bitlen_ipv6);
- dlinkAdd(cidr, &cidr->node, &aclass->list_ipv6);
- }
-#endif
- return 0;
-}
-
-/*
- * remove_from_cidr_check
- *
- * inputs - pointer to the ip to be removed
- * - pointer to the class
- * output - NONE
- * side effects -
- */
-static void
-remove_from_cidr_check(struct irc_ssaddr *ip, struct ClassItem *aclass)
-{
- dlink_node *ptr = NULL;
- dlink_node *next_ptr = NULL;
- struct CidrItem *cidr;
-
- if (aclass->number_per_cidr == 0)
- return;
-
- if (ip->ss.ss_family == AF_INET)
- {
- if (aclass->cidr_bitlen_ipv4 <= 0)
- return;
-
- DLINK_FOREACH_SAFE(ptr, next_ptr, aclass->list_ipv4.head)
- {
- cidr = ptr->data;
- if (match_ipv4(ip, &cidr->mask, aclass->cidr_bitlen_ipv4))
- {
- cidr->number_on_this_cidr--;
- if (cidr->number_on_this_cidr == 0)
- {
- dlinkDelete(ptr, &aclass->list_ipv4);
- MyFree(cidr);
- return;
- }
- }
- }
- }
-#ifdef IPV6
- else if (aclass->cidr_bitlen_ipv6 > 0)
- {
- DLINK_FOREACH_SAFE(ptr, next_ptr, aclass->list_ipv6.head)
- {
- cidr = ptr->data;
- if (match_ipv6(ip, &cidr->mask, aclass->cidr_bitlen_ipv6))
- {
- cidr->number_on_this_cidr--;
- if (cidr->number_on_this_cidr == 0)
- {
- dlinkDelete(ptr, &aclass->list_ipv6);
- MyFree(cidr);
- return;
- }
- }
- }
- }
-#endif
-}
-
-static void
-rebuild_cidr_list(int aftype, struct ConfItem *oldcl, struct ClassItem *newcl,
- dlink_list *old_list, dlink_list *new_list, int changed)
-{
- dlink_node *ptr;
- struct Client *client_p;
- struct ConfItem *conf;
- struct AccessItem *aconf;
-
- if (!changed)
- {
- *new_list = *old_list;
- old_list->head = old_list->tail = NULL;
- old_list->length = 0;
- return;
- }
-
- DLINK_FOREACH(ptr, local_client_list.head)
- {
- client_p = ptr->data;
- if (client_p->localClient->aftype != aftype)
- continue;
- if (dlink_list_length(&client_p->localClient->confs) == 0)
- continue;
-
- conf = client_p->localClient->confs.tail->data;
- if (conf->type == CLIENT_TYPE)
- {
- aconf = map_to_conf(conf);
- if (aconf->class_ptr == oldcl)
- cidr_limit_reached(1, &client_p->localClient->ip, newcl);
- }
- }
-}
-
-/*
- * rebuild_cidr_class
- *
- * inputs - pointer to old conf
- * - pointer to new_class
- * output - none
- * side effects - rebuilds the class link list of cidr blocks
- */
-void
-rebuild_cidr_class(struct ConfItem *conf, struct ClassItem *new_class)
-{
- struct ClassItem *old_class = map_to_conf(conf);
-
- if (old_class->number_per_cidr > 0 && new_class->number_per_cidr > 0)
- {
- if (old_class->cidr_bitlen_ipv4 > 0 && new_class->cidr_bitlen_ipv4 > 0)
- rebuild_cidr_list(AF_INET, conf, new_class,
- &old_class->list_ipv4, &new_class->list_ipv4,
- old_class->cidr_bitlen_ipv4 != new_class->cidr_bitlen_ipv4);
-
-#ifdef IPV6
- if (old_class->cidr_bitlen_ipv6 > 0 && new_class->cidr_bitlen_ipv6 > 0)
- rebuild_cidr_list(AF_INET6, conf, new_class,
- &old_class->list_ipv6, &new_class->list_ipv6,
- old_class->cidr_bitlen_ipv6 != new_class->cidr_bitlen_ipv6);
-#endif
- }
-
- destroy_cidr_class(old_class);
-}
-
-/*
- * destroy_cidr_list
- *
- * inputs - pointer to class dlink list of cidr blocks
- * output - none
- * side effects - completely destroys the class link list of cidr blocks
- */
-static void
-destroy_cidr_list(dlink_list *list)
-{
- dlink_node *ptr = NULL, *next_ptr = NULL;
-
- DLINK_FOREACH_SAFE(ptr, next_ptr, list->head)
- {
- dlinkDelete(ptr, list);
- MyFree(ptr->data);
- }
-}
-
-/*
- * destroy_cidr_class
- *
- * inputs - pointer to class
- * output - none
- * side effects - completely destroys the class link list of cidr blocks
- */
-static void
-destroy_cidr_class(struct ClassItem *aclass)
-{
- destroy_cidr_list(&aclass->list_ipv4);
- destroy_cidr_list(&aclass->list_ipv6);
-}
diff --git a/src/conf_db.c b/src/conf_db.c
index 31725dc..560026a 100644
--- a/src/conf_db.c
+++ b/src/conf_db.c
@@ -627,7 +627,7 @@ save_kline_database(void)
{
struct AddressRec *arec = ptr->data;
- if (arec->type == CONF_KLINE && IsConfDatabase(arec->aconf))
+ if (arec->type == CONF_KLINE && IsConfDatabase(arec->conf))
++records;
}
}
@@ -640,13 +640,13 @@ save_kline_database(void)
{
struct AddressRec *arec = ptr->data;
- if (arec->type == CONF_KLINE && IsConfDatabase(arec->aconf))
+ if (arec->type == CONF_KLINE && IsConfDatabase(arec->conf))
{
- SAFE_WRITE(write_string(arec->aconf->user, f), KPATH);
- SAFE_WRITE(write_string(arec->aconf->host, f), KPATH);
- SAFE_WRITE(write_string(arec->aconf->reason, f), KPATH);
- SAFE_WRITE(write_uint64(arec->aconf->setat, f), KPATH);
- SAFE_WRITE(write_uint64(arec->aconf->hold, f), KPATH);
+ SAFE_WRITE(write_string(arec->conf->user, f), KPATH);
+ SAFE_WRITE(write_string(arec->conf->host, f), KPATH);
+ SAFE_WRITE(write_string(arec->conf->reason, f), KPATH);
+ SAFE_WRITE(write_uint64(arec->conf->setat, f), KPATH);
+ SAFE_WRITE(write_uint64(arec->conf->hold, f), KPATH);
}
}
}
@@ -658,7 +658,7 @@ void
load_kline_database(void)
{
struct dbFILE *f = NULL;
- struct AccessItem *aconf = NULL;
+ struct MaskItem *conf = NULL;
char *field_1 = NULL;
char *field_2 = NULL;
char *field_3 = NULL;
@@ -686,15 +686,15 @@ load_kline_database(void)
SAFE_READ(read_uint64(&field_4, f));
SAFE_READ(read_uint64(&field_5, f));
- aconf = map_to_conf(make_conf_item(KLINE_TYPE));
- aconf->user = field_1;
- aconf->host = field_2;
- aconf->reason = field_3;
- aconf->setat = field_4;
- aconf->hold = field_5;
- SetConfDatabase(aconf);
+ conf = conf_make(CONF_KLINE);
+ conf->user = field_1;
+ conf->host = field_2;
+ conf->reason = field_3;
+ conf->setat = field_4;
+ conf->hold = field_5;
+ SetConfDatabase(conf);
- add_conf_by_address(CONF_KLINE, aconf);
+ add_conf_by_address(CONF_KLINE, conf);
}
close_db(f);
@@ -717,7 +717,7 @@ save_dline_database(void)
{
struct AddressRec *arec = ptr->data;
- if (arec->type == CONF_DLINE && IsConfDatabase(arec->aconf))
+ if (arec->type == CONF_DLINE && IsConfDatabase(arec->conf))
++records;
}
}
@@ -730,12 +730,12 @@ save_dline_database(void)
{
struct AddressRec *arec = ptr->data;
- if (arec->type == CONF_DLINE && IsConfDatabase(arec->aconf))
+ if (arec->type == CONF_DLINE && IsConfDatabase(arec->conf))
{
- SAFE_WRITE(write_string(arec->aconf->host, f), DLPATH);
- SAFE_WRITE(write_string(arec->aconf->reason, f), DLPATH);
- SAFE_WRITE(write_uint64(arec->aconf->setat, f), DLPATH);
- SAFE_WRITE(write_uint64(arec->aconf->hold, f), DLPATH);
+ SAFE_WRITE(write_string(arec->conf->host, f), DLPATH);
+ SAFE_WRITE(write_string(arec->conf->reason, f), DLPATH);
+ SAFE_WRITE(write_uint64(arec->conf->setat, f), DLPATH);
+ SAFE_WRITE(write_uint64(arec->conf->hold, f), DLPATH);
}
}
}
@@ -747,7 +747,7 @@ void
load_dline_database(void)
{
struct dbFILE *f = NULL;
- struct AccessItem *aconf = NULL;
+ struct MaskItem *conf = NULL;
char *field_1 = NULL;
char *field_2 = NULL;
uint32_t i = 0;
@@ -773,14 +773,14 @@ load_dline_database(void)
SAFE_READ(read_uint64(&field_3, f));
SAFE_READ(read_uint64(&field_4, f));
- aconf = map_to_conf(make_conf_item(DLINE_TYPE));
- aconf->host = field_1;
- aconf->reason = field_2;
- aconf->setat = field_3;
- aconf->hold = field_4;
- SetConfDatabase(aconf);
+ conf = conf_make(CONF_DLINE);
+ conf->host = field_1;
+ conf->reason = field_2;
+ conf->setat = field_3;
+ conf->hold = field_4;
+ SetConfDatabase(conf);
- add_conf_by_address(CONF_DLINE, aconf);
+ add_conf_by_address(CONF_DLINE, conf);
}
close_db(f);
@@ -803,7 +803,7 @@ save_gline_database(void)
{
struct AddressRec *arec = ptr->data;
- if (arec->type == CONF_GLINE && IsConfDatabase(arec->aconf))
+ if (arec->type == CONF_GLINE && IsConfDatabase(arec->conf))
++records;
}
}
@@ -816,13 +816,13 @@ save_gline_database(void)
{
struct AddressRec *arec = ptr->data;
- if (arec->type == CONF_GLINE && IsConfDatabase(arec->aconf))
+ if (arec->type == CONF_GLINE && IsConfDatabase(arec->conf))
{
- SAFE_WRITE(write_string(arec->aconf->user, f), GPATH);
- SAFE_WRITE(write_string(arec->aconf->host, f), GPATH);
- SAFE_WRITE(write_string(arec->aconf->reason, f), GPATH);
- SAFE_WRITE(write_uint64(arec->aconf->setat, f), GPATH);
- SAFE_WRITE(write_uint64(arec->aconf->hold, f), GPATH);
+ SAFE_WRITE(write_string(arec->conf->user, f), GPATH);
+ SAFE_WRITE(write_string(arec->conf->host, f), GPATH);
+ SAFE_WRITE(write_string(arec->conf->reason, f), GPATH);
+ SAFE_WRITE(write_uint64(arec->conf->setat, f), GPATH);
+ SAFE_WRITE(write_uint64(arec->conf->hold, f), GPATH);
}
}
}
@@ -834,7 +834,7 @@ void
load_gline_database(void)
{
struct dbFILE *f = NULL;
- struct AccessItem *aconf = NULL;
+ struct MaskItem *conf = NULL;
char *field_1 = NULL;
char *field_2 = NULL;
char *field_3 = NULL;
@@ -862,15 +862,15 @@ load_gline_database(void)
SAFE_READ(read_uint64(&field_4, f));
SAFE_READ(read_uint64(&field_5, f));
- aconf = map_to_conf(make_conf_item(KLINE_TYPE));
- aconf->user = field_1;
- aconf->host = field_2;
- aconf->reason = field_3;
- aconf->setat = field_4;
- aconf->hold = field_5;
- SetConfDatabase(aconf);
+ conf = conf_make(CONF_GLINE);
+ conf->user = field_1;
+ conf->host = field_2;
+ conf->reason = field_3;
+ conf->setat = field_4;
+ conf->hold = field_5;
+ SetConfDatabase(conf);
- add_conf_by_address(CONF_GLINE, aconf);
+ add_conf_by_address(CONF_GLINE, conf);
}
close_db(f);
@@ -882,26 +882,24 @@ save_resv_database(void)
uint32_t records = 0;
struct dbFILE *f = NULL;
dlink_node *ptr = NULL;
- struct ConfItem *conf;
- struct ResvChannel *resv_cp;
- struct MatchItem *resv_np;
+ struct MaskItem *conf = NULL;
if (!(f = open_db("resv", RESVPATH, "w", KLINE_DB_VERSION)))
return;
DLINK_FOREACH(ptr, resv_channel_list.head)
{
- resv_cp = ptr->data;
+ conf = ptr->data;
- if (IsConfDatabase(resv_cp))
+ if (IsConfDatabase(conf))
++records;
}
DLINK_FOREACH(ptr, nresv_items.head)
{
- resv_np = map_to_conf(ptr->data);
+ conf = ptr->data;
- if (IsConfDatabase(resv_np))
+ if (IsConfDatabase(conf))
++records;
}
@@ -909,29 +907,28 @@ save_resv_database(void)
DLINK_FOREACH(ptr, resv_channel_list.head)
{
- resv_cp = ptr->data;
+ conf = ptr->data;
- if (!IsConfDatabase(resv_cp))
+ if (!IsConfDatabase(conf))
continue;
- SAFE_WRITE(write_string(resv_cp->name, f), RESVPATH);
- SAFE_WRITE(write_string(resv_cp->reason, f), RESVPATH);
- SAFE_WRITE(write_uint64(resv_cp->setat, f), RESVPATH);
- SAFE_WRITE(write_uint64(resv_cp->hold, f), RESVPATH);
+ SAFE_WRITE(write_string(conf->name, f), RESVPATH);
+ SAFE_WRITE(write_string(conf->reason, f), RESVPATH);
+ SAFE_WRITE(write_uint64(conf->setat, f), RESVPATH);
+ SAFE_WRITE(write_uint64(conf->hold, f), RESVPATH);
}
DLINK_FOREACH(ptr, nresv_items.head)
{
conf = ptr->data;
- resv_np = map_to_conf(conf);
- if (!IsConfDatabase(resv_np))
+ if (!IsConfDatabase(conf))
continue;
SAFE_WRITE(write_string(conf->name, f), RESVPATH);
- SAFE_WRITE(write_string(resv_np->reason, f), RESVPATH);
- SAFE_WRITE(write_uint64(resv_np->setat, f), RESVPATH);
- SAFE_WRITE(write_uint64(resv_np->hold, f), RESVPATH);
+ SAFE_WRITE(write_string(conf->reason, f), RESVPATH);
+ SAFE_WRITE(write_uint64(conf->setat, f), RESVPATH);
+ SAFE_WRITE(write_uint64(conf->hold, f), RESVPATH);
}
close_db(f);
@@ -946,9 +943,7 @@ load_resv_database(void)
struct dbFILE *f = NULL;
char *name = NULL;
char *reason = NULL;
- struct ConfItem *conf;
- struct ResvChannel *resv_cp;
- struct MatchItem *resv_np;
+ struct MaskItem *conf = NULL;
if (!(f = open_db("resv", RESVPATH, "r", KLINE_DB_VERSION)))
return;
@@ -973,20 +968,18 @@ load_resv_database(void)
if ((conf = create_channel_resv(name, reason, 0)) == NULL)
continue;
- resv_cp = map_to_conf(conf);
- resv_cp->setat = tmp64_setat;
- resv_cp->hold = tmp64_hold;
- SetConfDatabase(resv_cp);
+ conf->setat = tmp64_setat;
+ conf->hold = tmp64_hold;
+ SetConfDatabase(conf);
}
else
{
if ((conf = create_nick_resv(name, reason, 0)) == NULL)
continue;
- resv_np = map_to_conf(conf);
- resv_np->setat = tmp64_setat;
- resv_np->hold = tmp64_hold;
- SetConfDatabase(resv_np);
+ conf->setat = tmp64_setat;
+ conf->hold = tmp64_hold;
+ SetConfDatabase(conf);
}
MyFree(name);
@@ -1002,8 +995,7 @@ save_xline_database(void)
uint32_t records = 0;
struct dbFILE *f = NULL;
dlink_node *ptr = NULL;
- struct ConfItem *conf = NULL;
- struct MatchItem *xconf = NULL;
+ struct MaskItem *conf = NULL;
if (!(f = open_db("xline", XPATH, "w", KLINE_DB_VERSION)))
return;
@@ -1012,7 +1004,7 @@ save_xline_database(void)
{
conf = ptr->data;
- if (IsConfDatabase(xconf))
+ if (IsConfDatabase(conf))
++records;
}
@@ -1021,15 +1013,14 @@ save_xline_database(void)
DLINK_FOREACH(ptr, xconf_items.head)
{
conf = ptr->data;
- xconf = map_to_conf(conf);
- if (!IsConfDatabase(xconf))
+ if (!IsConfDatabase(conf))
continue;
SAFE_WRITE(write_string(conf->name, f), XPATH);
- SAFE_WRITE(write_string(xconf->reason, f), XPATH);
- SAFE_WRITE(write_uint64(xconf->setat, f), XPATH);
- SAFE_WRITE(write_uint64(xconf->hold, f), XPATH);
+ SAFE_WRITE(write_string(conf->reason, f), XPATH);
+ SAFE_WRITE(write_uint64(conf->setat, f), XPATH);
+ SAFE_WRITE(write_uint64(conf->hold, f), XPATH);
}
close_db(f);
@@ -1044,8 +1035,7 @@ load_xline_database(void)
struct dbFILE *f = NULL;
char *name = NULL;
char *reason = NULL;
- struct ConfItem *conf = NULL;
- struct MatchItem *xconf = NULL;
+ struct MaskItem *conf = NULL;
if (!(f = open_db("xline", XPATH, "r", KLINE_DB_VERSION)))
return;
@@ -1065,15 +1055,14 @@ load_xline_database(void)
SAFE_READ(read_uint64(&tmp64_setat, f));
SAFE_READ(read_uint64(&tmp64_hold, f));
- conf = make_conf_item(XLINE_TYPE);
- xconf = map_to_conf(conf);
+ conf = conf_make(CONF_XLINE);
- SetConfDatabase(xconf);
+ SetConfDatabase(conf);
conf->name = name;
- xconf->reason = reason;
- xconf->setat = tmp64_setat;
- xconf->hold = tmp64_hold;
+ conf->reason = reason;
+ conf->setat = tmp64_setat;
+ conf->hold = tmp64_hold;
}
close_db(f);
diff --git a/src/conf_parser.c b/src/conf_parser.c
index ae2d2e3..68ec966 100644
--- a/src/conf_parser.c
+++ b/src/conf_parser.c
@@ -75,6 +75,7 @@
#include "ircd.h"
#include "list.h"
#include "conf.h"
+#include "conf_class.h"
#include "event.h"
#include "log.h"
#include "client.h" /* for UMODE_ALL only */
@@ -100,9 +101,7 @@
int yylex(void);
static char *class_name = NULL;
-static struct ConfItem *yy_conf = NULL;
-static struct AccessItem *yy_aconf = NULL;
-static struct MatchItem *yy_match_item = NULL;
+static struct MaskItem *yy_conf = NULL;
static struct ClassItem *yy_class = NULL;
static char *yy_class_name = NULL;
@@ -149,7 +148,7 @@ free_collect_item(struct CollectItem *item)
/* Line 358 of yacc.c */
-#line 153 "conf_parser.c"
+#line 152 "conf_parser.c"
# ifndef YY_NULL
# if defined __cplusplus && 201103L <= __cplusplus
@@ -619,14 +618,14 @@ extern int yydebug;
typedef union YYSTYPE
{
/* Line 374 of yacc.c */
-#line 110 "conf_parser.y"
+#line 109 "conf_parser.y"
int number;
char *string;
/* Line 374 of yacc.c */
-#line 630 "conf_parser.c"
+#line 629 "conf_parser.c"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -654,7 +653,7 @@ int yyparse ();
/* Copy the second part of user declarations. */
/* Line 377 of yacc.c */
-#line 658 "conf_parser.c"
+#line 657 "conf_parser.c"
#ifdef short
# undef short
@@ -1213,69 +1212,69 @@ static const yytype_int16 yyrhs[] =
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 330, 330, 331, 334, 335, 336, 337, 338, 339,
- 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
- 350, 351, 352, 353, 354, 355, 359, 359, 360, 364,
- 368, 372, 376, 380, 386, 386, 387, 388, 389, 390,
- 397, 400, 400, 401, 401, 401, 403, 409, 416, 418,
- 418, 419, 419, 420, 420, 421, 421, 422, 422, 423,
- 423, 424, 424, 425, 425, 426, 427, 430, 431, 433,
- 433, 434, 440, 448, 448, 449, 455, 463, 502, 561,
- 589, 597, 612, 627, 636, 650, 659, 687, 717, 740,
- 749, 751, 751, 752, 752, 753, 753, 755, 764, 773,
- 785, 786, 786, 788, 788, 789, 791, 798, 798, 808,
- 809, 811, 811, 812, 812, 814, 819, 822, 828, 827,
- 833, 833, 834, 838, 842, 846, 850, 854, 858, 869,
- 868, 966, 966, 967, 967, 967, 968, 968, 968, 969,
- 969, 969, 971, 980, 1017, 1029, 1040, 1082, 1092, 1091,
- 1097, 1097, 1098, 1102, 1106, 1110, 1114, 1118, 1122, 1126,
- 1130, 1134, 1138, 1142, 1146, 1150, 1154, 1158, 1162, 1166,
- 1170, 1174, 1181, 1180, 1186, 1186, 1187, 1191, 1195, 1199,
- 1203, 1207, 1211, 1215, 1219, 1223, 1227, 1231, 1235, 1239,
- 1243, 1247, 1251, 1255, 1259, 1270, 1269, 1319, 1319, 1320,
- 1321, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329,
- 1330, 1331, 1331, 1332, 1334, 1343, 1349, 1355, 1361, 1367,
- 1373, 1379, 1385, 1391, 1397, 1404, 1410, 1416, 1426, 1425,
- 1442, 1441, 1446, 1446, 1447, 1451, 1455, 1463, 1463, 1464,
- 1464, 1464, 1464, 1464, 1466, 1466, 1468, 1468, 1470, 1484,
- 1504, 1513, 1526, 1525, 1594, 1594, 1595, 1595, 1595, 1595,
- 1596, 1596, 1596, 1597, 1597, 1599, 1634, 1647, 1656, 1668,
- 1667, 1671, 1671, 1672, 1676, 1680, 1684, 1688, 1692, 1696,
- 1700, 1704, 1710, 1729, 1739, 1753, 1752, 1768, 1768, 1769,
- 1769, 1769, 1769, 1771, 1780, 1795, 1808, 1810, 1810, 1811,
- 1811, 1813, 1829, 1828, 1844, 1844, 1845, 1845, 1845, 1845,
- 1847, 1856, 1879, 1878, 1884, 1884, 1885, 1889, 1893, 1897,
- 1901, 1905, 1909, 1913, 1917, 1921, 1931, 1930, 1947, 1947,
- 1948, 1948, 1948, 1950, 1957, 1956, 1962, 1962, 1963, 1967,
- 1971, 1975, 1979, 1983, 1987, 1991, 1995, 1999, 2009, 2008,
- 2059, 2059, 2060, 2060, 2060, 2061, 2061, 2062, 2062, 2062,
- 2063, 2063, 2063, 2064, 2064, 2065, 2067, 2076, 2085, 2111,
- 2129, 2147, 2153, 2157, 2166, 2165, 2169, 2169, 2170, 2174,
- 2180, 2191, 2202, 2213, 2222, 2241, 2240, 2304, 2303, 2307,
- 2307, 2308, 2314, 2314, 2315, 2315, 2315, 2315, 2317, 2336,
- 2346, 2345, 2368, 2368, 2369, 2369, 2369, 2371, 2377, 2386,
- 2388, 2388, 2389, 2389, 2391, 2410, 2409, 2457, 2456, 2460,
- 2460, 2461, 2467, 2467, 2468, 2468, 2468, 2468, 2470, 2476,
- 2485, 2488, 2488, 2489, 2489, 2490, 2490, 2491, 2491, 2492,
- 2492, 2493, 2493, 2494, 2495, 2496, 2496, 2497, 2497, 2498,
- 2498, 2499, 2499, 2500, 2500, 2501, 2501, 2502, 2503, 2503,
- 2504, 2504, 2505, 2505, 2506, 2506, 2507, 2507, 2508, 2509,
- 2509, 2510, 2511, 2512, 2512, 2513, 2513, 2514, 2515, 2516,
- 2517, 2517, 2518, 2521, 2526, 2532, 2538, 2544, 2549, 2554,
- 2559, 2564, 2569, 2574, 2579, 2584, 2589, 2594, 2599, 2604,
- 2609, 2614, 2620, 2631, 2636, 2641, 2646, 2651, 2656, 2659,
- 2664, 2667, 2672, 2677, 2682, 2687, 2692, 2697, 2702, 2707,
- 2712, 2723, 2728, 2733, 2738, 2747, 2756, 2761, 2766, 2772,
- 2771, 2776, 2776, 2777, 2780, 2783, 2786, 2789, 2792, 2795,
- 2798, 2801, 2804, 2807, 2810, 2813, 2816, 2819, 2822, 2825,
- 2828, 2831, 2834, 2840, 2839, 2844, 2844, 2845, 2848, 2851,
- 2854, 2857, 2860, 2863, 2866, 2869, 2872, 2875, 2878, 2881,
- 2884, 2887, 2890, 2893, 2896, 2899, 2902, 2907, 2912, 2917,
- 2926, 2929, 2929, 2930, 2931, 2931, 2932, 2932, 2933, 2933,
- 2934, 2935, 2935, 2936, 2937, 2937, 2938, 2938, 2940, 2945,
- 2950, 2955, 2960, 2965, 2970, 2975, 2980, 2985, 2990, 2995,
- 3000, 3005, 3013, 3016, 3016, 3017, 3017, 3018, 3019, 3019,
- 3020, 3021, 3023, 3029, 3035, 3044, 3058, 3064
+ 0, 329, 329, 330, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, 351, 352, 353, 354, 358, 358, 359, 363,
+ 367, 371, 375, 379, 385, 385, 386, 387, 388, 389,
+ 396, 399, 399, 400, 400, 400, 402, 408, 415, 417,
+ 417, 418, 418, 419, 419, 420, 420, 421, 421, 422,
+ 422, 423, 423, 424, 424, 425, 426, 429, 430, 432,
+ 432, 433, 439, 447, 447, 448, 454, 462, 501, 560,
+ 588, 596, 611, 626, 635, 649, 658, 686, 716, 739,
+ 748, 750, 750, 751, 751, 752, 752, 754, 763, 772,
+ 784, 785, 785, 787, 787, 788, 790, 797, 797, 807,
+ 808, 810, 810, 811, 811, 813, 818, 821, 827, 826,
+ 832, 832, 833, 837, 841, 845, 849, 853, 857, 868,
+ 867, 959, 959, 960, 960, 960, 961, 961, 961, 962,
+ 962, 962, 964, 973, 1010, 1022, 1033, 1075, 1085, 1084,
+ 1090, 1090, 1091, 1095, 1099, 1103, 1107, 1111, 1115, 1119,
+ 1123, 1127, 1131, 1135, 1139, 1143, 1147, 1151, 1155, 1159,
+ 1163, 1167, 1174, 1173, 1179, 1179, 1180, 1184, 1188, 1192,
+ 1196, 1200, 1204, 1208, 1212, 1216, 1220, 1224, 1228, 1232,
+ 1236, 1240, 1244, 1248, 1252, 1263, 1262, 1308, 1308, 1309,
+ 1310, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318,
+ 1319, 1320, 1320, 1321, 1323, 1332, 1338, 1344, 1350, 1356,
+ 1362, 1368, 1374, 1380, 1386, 1393, 1399, 1405, 1415, 1414,
+ 1431, 1430, 1435, 1435, 1436, 1440, 1444, 1452, 1452, 1453,
+ 1453, 1453, 1453, 1453, 1455, 1455, 1457, 1457, 1459, 1473,
+ 1493, 1502, 1515, 1514, 1577, 1577, 1578, 1578, 1578, 1578,
+ 1579, 1579, 1579, 1580, 1580, 1582, 1617, 1630, 1639, 1651,
+ 1650, 1654, 1654, 1655, 1659, 1663, 1667, 1671, 1675, 1679,
+ 1683, 1687, 1693, 1712, 1722, 1736, 1735, 1751, 1751, 1752,
+ 1752, 1752, 1752, 1754, 1763, 1778, 1791, 1793, 1793, 1794,
+ 1794, 1796, 1812, 1811, 1826, 1826, 1827, 1827, 1827, 1827,
+ 1829, 1838, 1861, 1860, 1866, 1866, 1867, 1871, 1875, 1879,
+ 1883, 1887, 1891, 1895, 1899, 1903, 1913, 1912, 1928, 1928,
+ 1929, 1929, 1929, 1931, 1938, 1937, 1943, 1943, 1944, 1948,
+ 1952, 1956, 1960, 1964, 1968, 1972, 1976, 1980, 1990, 1989,
+ 2038, 2038, 2039, 2039, 2039, 2040, 2040, 2041, 2041, 2041,
+ 2042, 2042, 2042, 2043, 2043, 2044, 2046, 2055, 2064, 2090,
+ 2108, 2126, 2132, 2136, 2145, 2144, 2148, 2148, 2149, 2153,
+ 2159, 2170, 2181, 2192, 2201, 2220, 2219, 2283, 2282, 2286,
+ 2286, 2287, 2293, 2293, 2294, 2294, 2294, 2294, 2296, 2315,
+ 2325, 2324, 2347, 2347, 2348, 2348, 2348, 2350, 2356, 2365,
+ 2367, 2367, 2368, 2368, 2370, 2389, 2388, 2435, 2434, 2438,
+ 2438, 2439, 2445, 2445, 2446, 2446, 2446, 2446, 2448, 2454,
+ 2463, 2466, 2466, 2467, 2467, 2468, 2468, 2469, 2469, 2470,
+ 2470, 2471, 2471, 2472, 2473, 2474, 2474, 2475, 2475, 2476,
+ 2476, 2477, 2477, 2478, 2478, 2479, 2479, 2480, 2481, 2481,
+ 2482, 2482, 2483, 2483, 2484, 2484, 2485, 2485, 2486, 2487,
+ 2487, 2488, 2489, 2490, 2490, 2491, 2491, 2492, 2493, 2494,
+ 2495, 2495, 2496, 2499, 2504, 2510, 2516, 2522, 2527, 2532,
+ 2537, 2542, 2547, 2552, 2557, 2562, 2567, 2572, 2577, 2582,
+ 2587, 2592, 2598, 2609, 2614, 2619, 2624, 2629, 2634, 2637,
+ 2642, 2645, 2650, 2655, 2660, 2665, 2670, 2675, 2680, 2685,
+ 2690, 2701, 2706, 2711, 2716, 2725, 2734, 2739, 2744, 2750,
+ 2749, 2754, 2754, 2755, 2758, 2761, 2764, 2767, 2770, 2773,
+ 2776, 2779, 2782, 2785, 2788, 2791, 2794, 2797, 2800, 2803,
+ 2806, 2809, 2812, 2818, 2817, 2822, 2822, 2823, 2826, 2829,
+ 2832, 2835, 2838, 2841, 2844, 2847, 2850, 2853, 2856, 2859,
+ 2862, 2865, 2868, 2871, 2874, 2877, 2880, 2885, 2890, 2895,
+ 2904, 2907, 2907, 2908, 2909, 2909, 2910, 2910, 2911, 2911,
+ 2912, 2913, 2913, 2914, 2915, 2915, 2916, 2916, 2918, 2923,
+ 2928, 2933, 2938, 2943, 2948, 2953, 2958, 2963, 2968, 2973,
+ 2978, 2983, 2991, 2994, 2994, 2995, 2995, 2996, 2997, 2997,
+ 2998, 2999, 3001, 3007, 3013, 3022, 3036, 3042
};
#endif
@@ -3139,13 +3138,13 @@ yyreduce:
{
case 26:
/* Line 1813 of yacc.c */
-#line 359 "conf_parser.y"
+#line 358 "conf_parser.y"
{ (yyval.number) = 0; }
break;
case 28:
/* Line 1813 of yacc.c */
-#line 361 "conf_parser.y"
+#line 360 "conf_parser.y"
{
(yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number);
}
@@ -3153,7 +3152,7 @@ yyreduce:
case 29:
/* Line 1813 of yacc.c */
-#line 365 "conf_parser.y"
+#line 364 "conf_parser.y"
{
(yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number);
}
@@ -3161,7 +3160,7 @@ yyreduce:
case 30:
/* Line 1813 of yacc.c */
-#line 369 "conf_parser.y"
+#line 368 "conf_parser.y"
{
(yyval.number) = (yyvsp[(1) - (3)].number) * 60 + (yyvsp[(3) - (3)].number);
}
@@ -3169,7 +3168,7 @@ yyreduce:
case 31:
/* Line 1813 of yacc.c */
-#line 373 "conf_parser.y"
+#line 372 "conf_parser.y"
{
(yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 + (yyvsp[(3) - (3)].number);
}
@@ -3177,7 +3176,7 @@ yyreduce:
case 32:
/* Line 1813 of yacc.c */
-#line 377 "conf_parser.y"
+#line 376 "conf_parser.y"
{
(yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 + (yyvsp[(3) - (3)].number);
}
@@ -3185,7 +3184,7 @@ yyreduce:
case 33:
/* Line 1813 of yacc.c */
-#line 381 "conf_parser.y"
+#line 380 "conf_parser.y"
{
(yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 * 7 + (yyvsp[(3) - (3)].number);
}
@@ -3193,37 +3192,37 @@ yyreduce:
case 34:
/* Line 1813 of yacc.c */
-#line 386 "conf_parser.y"
+#line 385 "conf_parser.y"
{ (yyval.number) = 0; }
break;
case 36:
/* Line 1813 of yacc.c */
-#line 387 "conf_parser.y"
+#line 386 "conf_parser.y"
{ (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number); }
break;
case 37:
/* Line 1813 of yacc.c */
-#line 388 "conf_parser.y"
+#line 387 "conf_parser.y"
{ (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number); }
break;
case 38:
/* Line 1813 of yacc.c */
-#line 389 "conf_parser.y"
+#line 388 "conf_parser.y"
{ (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 + (yyvsp[(3) - (3)].number); }
break;
case 39:
/* Line 1813 of yacc.c */
-#line 390 "conf_parser.y"
+#line 389 "conf_parser.y"
{ (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 * 1024 + (yyvsp[(3) - (3)].number); }
break;
case 46:
/* Line 1813 of yacc.c */
-#line 404 "conf_parser.y"
+#line 403 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
add_conf_module(libio_basename(yylval.string));
@@ -3232,7 +3231,7 @@ yyreduce:
case 47:
/* Line 1813 of yacc.c */
-#line 410 "conf_parser.y"
+#line 409 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
mod_add_path(yylval.string);
@@ -3241,7 +3240,7 @@ yyreduce:
case 71:
/* Line 1813 of yacc.c */
-#line 435 "conf_parser.y"
+#line 434 "conf_parser.y"
{
#ifdef HAVE_LIBCRYPTO
if (conf_parser_ctx.pass == 2 && ServerInfo.client_ctx)
@@ -3252,7 +3251,7 @@ yyreduce:
case 72:
/* Line 1813 of yacc.c */
-#line 441 "conf_parser.y"
+#line 440 "conf_parser.y"
{
#ifdef HAVE_LIBCRYPTO
if (conf_parser_ctx.pass == 2 && ServerInfo.client_ctx)
@@ -3263,7 +3262,7 @@ yyreduce:
case 75:
/* Line 1813 of yacc.c */
-#line 450 "conf_parser.y"
+#line 449 "conf_parser.y"
{
#ifdef HAVE_LIBCRYPTO
if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
@@ -3274,7 +3273,7 @@ yyreduce:
case 76:
/* Line 1813 of yacc.c */
-#line 456 "conf_parser.y"
+#line 455 "conf_parser.y"
{
#ifdef HAVE_LIBCRYPTO
if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
@@ -3285,7 +3284,7 @@ yyreduce:
case 77:
/* Line 1813 of yacc.c */
-#line 464 "conf_parser.y"
+#line 463 "conf_parser.y"
{
#ifdef HAVE_LIBCRYPTO
if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
@@ -3327,7 +3326,7 @@ yyreduce:
case 78:
/* Line 1813 of yacc.c */
-#line 503 "conf_parser.y"
+#line 502 "conf_parser.y"
{
#ifdef HAVE_LIBCRYPTO
if (conf_parser_ctx.pass == 1)
@@ -3389,7 +3388,7 @@ yyreduce:
case 79:
/* Line 1813 of yacc.c */
-#line 562 "conf_parser.y"
+#line 561 "conf_parser.y"
{
/* TBD - XXX: error reporting */
#ifdef HAVE_LIBCRYPTO
@@ -3420,7 +3419,7 @@ yyreduce:
case 80:
/* Line 1813 of yacc.c */
-#line 590 "conf_parser.y"
+#line 589 "conf_parser.y"
{
#ifdef HAVE_LIBCRYPTO
if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
@@ -3431,7 +3430,7 @@ yyreduce:
case 81:
/* Line 1813 of yacc.c */
-#line 598 "conf_parser.y"
+#line 597 "conf_parser.y"
{
/* this isn't rehashable */
if (conf_parser_ctx.pass == 2 && !ServerInfo.name)
@@ -3449,7 +3448,7 @@ yyreduce:
case 82:
/* Line 1813 of yacc.c */
-#line 613 "conf_parser.y"
+#line 612 "conf_parser.y"
{
/* this isn't rehashable */
if (conf_parser_ctx.pass == 2 && !ServerInfo.sid)
@@ -3467,7 +3466,7 @@ yyreduce:
case 83:
/* Line 1813 of yacc.c */
-#line 628 "conf_parser.y"
+#line 627 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -3479,7 +3478,7 @@ yyreduce:
case 84:
/* Line 1813 of yacc.c */
-#line 637 "conf_parser.y"
+#line 636 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -3496,7 +3495,7 @@ yyreduce:
case 85:
/* Line 1813 of yacc.c */
-#line 651 "conf_parser.y"
+#line 650 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -3508,7 +3507,7 @@ yyreduce:
case 86:
/* Line 1813 of yacc.c */
-#line 660 "conf_parser.y"
+#line 659 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
{
@@ -3539,7 +3538,7 @@ yyreduce:
case 87:
/* Line 1813 of yacc.c */
-#line 688 "conf_parser.y"
+#line 687 "conf_parser.y"
{
#ifdef IPV6
if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
@@ -3572,7 +3571,7 @@ yyreduce:
case 88:
/* Line 1813 of yacc.c */
-#line 718 "conf_parser.y"
+#line 717 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -3598,7 +3597,7 @@ yyreduce:
case 89:
/* Line 1813 of yacc.c */
-#line 741 "conf_parser.y"
+#line 740 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ServerInfo.hub = yylval.number;
@@ -3607,7 +3606,7 @@ yyreduce:
case 97:
/* Line 1813 of yacc.c */
-#line 756 "conf_parser.y"
+#line 755 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -3619,7 +3618,7 @@ yyreduce:
case 98:
/* Line 1813 of yacc.c */
-#line 765 "conf_parser.y"
+#line 764 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -3631,7 +3630,7 @@ yyreduce:
case 99:
/* Line 1813 of yacc.c */
-#line 774 "conf_parser.y"
+#line 773 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -3643,7 +3642,7 @@ yyreduce:
case 106:
/* Line 1813 of yacc.c */
-#line 792 "conf_parser.y"
+#line 791 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ConfigLoggingEntry.use_logging = yylval.number;
@@ -3652,7 +3651,7 @@ yyreduce:
case 107:
/* Line 1813 of yacc.c */
-#line 798 "conf_parser.y"
+#line 797 "conf_parser.y"
{
lfile[0] = '\0';
ltype = 0;
@@ -3662,7 +3661,7 @@ yyreduce:
case 108:
/* Line 1813 of yacc.c */
-#line 803 "conf_parser.y"
+#line 802 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2 && ltype > 0)
log_add_file(ltype, lsize, lfile);
@@ -3671,7 +3670,7 @@ yyreduce:
case 115:
/* Line 1813 of yacc.c */
-#line 815 "conf_parser.y"
+#line 814 "conf_parser.y"
{
strlcpy(lfile, yylval.string, sizeof(lfile));
}
@@ -3679,7 +3678,7 @@ yyreduce:
case 116:
/* Line 1813 of yacc.c */
-#line 820 "conf_parser.y"
+#line 819 "conf_parser.y"
{
lsize = (yyvsp[(3) - (4)].number);
}
@@ -3687,7 +3686,7 @@ yyreduce:
case 117:
/* Line 1813 of yacc.c */
-#line 823 "conf_parser.y"
+#line 822 "conf_parser.y"
{
lsize = 0;
}
@@ -3695,7 +3694,7 @@ yyreduce:
case 118:
/* Line 1813 of yacc.c */
-#line 828 "conf_parser.y"
+#line 827 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ltype = 0;
@@ -3704,7 +3703,7 @@ yyreduce:
case 122:
/* Line 1813 of yacc.c */
-#line 835 "conf_parser.y"
+#line 834 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ltype = LOG_TYPE_USER;
@@ -3713,7 +3712,7 @@ yyreduce:
case 123:
/* Line 1813 of yacc.c */
-#line 839 "conf_parser.y"
+#line 838 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ltype = LOG_TYPE_OPER;
@@ -3722,7 +3721,7 @@ yyreduce:
case 124:
/* Line 1813 of yacc.c */
-#line 843 "conf_parser.y"
+#line 842 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ltype = LOG_TYPE_GLINE;
@@ -3731,7 +3730,7 @@ yyreduce:
case 125:
/* Line 1813 of yacc.c */
-#line 847 "conf_parser.y"
+#line 846 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ltype = LOG_TYPE_DLINE;
@@ -3740,7 +3739,7 @@ yyreduce:
case 126:
/* Line 1813 of yacc.c */
-#line 851 "conf_parser.y"
+#line 850 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ltype = LOG_TYPE_KLINE;
@@ -3749,7 +3748,7 @@ yyreduce:
case 127:
/* Line 1813 of yacc.c */
-#line 855 "conf_parser.y"
+#line 854 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ltype = LOG_TYPE_KILL;
@@ -3758,7 +3757,7 @@ yyreduce:
case 128:
/* Line 1813 of yacc.c */
-#line 859 "conf_parser.y"
+#line 858 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ltype = LOG_TYPE_DEBUG;
@@ -3767,13 +3766,12 @@ yyreduce:
case 129:
/* Line 1813 of yacc.c */
-#line 869 "conf_parser.y"
+#line 868 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
- yy_conf = make_conf_item(OPER_TYPE);
- yy_aconf = map_to_conf(yy_conf);
- SetConfEncrypted(yy_aconf); /* Yes, the default is encrypted */
+ yy_conf = conf_make(CONF_OPER);
+ SetConfEncrypted(yy_conf); /* Yes, the default is encrypted */
}
else
{
@@ -3785,7 +3783,7 @@ yyreduce:
case 130:
/* Line 1813 of yacc.c */
-#line 882 "conf_parser.y"
+#line 880 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -3801,44 +3799,41 @@ yyreduce:
DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
{
- struct AccessItem *new_aconf;
- struct ConfItem *new_conf;
+ struct MaskItem *new_conf;
yy_tmp = ptr->data;
- new_conf = make_conf_item(OPER_TYPE);
- new_aconf = (struct AccessItem *)map_to_conf(new_conf);
-
- new_aconf->flags = yy_aconf->flags;
+ new_conf = conf_make(CONF_OPER);
+ new_conf->flags = yy_conf->flags;
if (yy_conf->name != NULL)
DupString(new_conf->name, yy_conf->name);
if (yy_tmp->user != NULL)
- DupString(new_aconf->user, yy_tmp->user);
+ DupString(new_conf->user, yy_tmp->user);
else
- DupString(new_aconf->user, "*");
+ DupString(new_conf->user, "*");
if (yy_tmp->host != NULL)
- DupString(new_aconf->host, yy_tmp->host);
+ DupString(new_conf->host, yy_tmp->host);
else
- DupString(new_aconf->host, "*");
+ DupString(new_conf->host, "*");
- new_aconf->type = parse_netmask(new_aconf->host, &new_aconf->addr,
- &new_aconf->bits);
+ new_conf->htype = parse_netmask(new_conf->host, &new_conf->addr,
+ &new_conf->bits);
conf_add_class_to_conf(new_conf, class_name);
- if (yy_aconf->passwd != NULL)
- DupString(new_aconf->passwd, yy_aconf->passwd);
+ if (yy_conf->passwd != NULL)
+ DupString(new_conf->passwd, yy_conf->passwd);
- new_aconf->port = yy_aconf->port;
+ new_conf->port = yy_conf->port;
#ifdef HAVE_LIBCRYPTO
- if (yy_aconf->rsa_public_key_file != NULL)
+ if (yy_conf->rsa_public_key_file != NULL)
{
BIO *file;
- DupString(new_aconf->rsa_public_key_file,
- yy_aconf->rsa_public_key_file);
+ DupString(new_conf->rsa_public_key_file,
+ yy_conf->rsa_public_key_file);
- file = BIO_new_file(yy_aconf->rsa_public_key_file, "r");
- new_aconf->rsa_public_key = PEM_read_bio_RSA_PUBKEY(file,
+ file = BIO_new_file(yy_conf->rsa_public_key_file, "r");
+ new_conf->rsa_public_key = PEM_read_bio_RSA_PUBKEY(file,
NULL, 0, NULL);
BIO_set_close(file, BIO_CLOSE);
BIO_free(file);
@@ -3846,7 +3841,7 @@ yyreduce:
#endif
#ifdef HAVE_LIBCRYPTO
- if (yy_tmp->name && (yy_tmp->passwd || yy_aconf->rsa_public_key)
+ if (yy_tmp->name && (yy_tmp->passwd || yy_conf->rsa_public_key)
&& yy_tmp->host)
#else
if (yy_tmp->name && yy_tmp->passwd && yy_tmp->host)
@@ -3862,8 +3857,6 @@ yyreduce:
}
yy_conf = NULL;
- yy_aconf = NULL;
-
MyFree(class_name);
class_name = NULL;
@@ -3873,7 +3866,7 @@ yyreduce:
case 142:
/* Line 1813 of yacc.c */
-#line 972 "conf_parser.y"
+#line 965 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -3885,7 +3878,7 @@ yyreduce:
case 143:
/* Line 1813 of yacc.c */
-#line 981 "conf_parser.y"
+#line 974 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -3902,13 +3895,13 @@ yyreduce:
split_nuh(&nuh);
- if (yy_aconf->user == NULL)
+ if (yy_conf->user == NULL)
{
- DupString(yy_aconf->user, userbuf);
- DupString(yy_aconf->host, hostbuf);
+ DupString(yy_conf->user, userbuf);
+ DupString(yy_conf->host, hostbuf);
- yy_aconf->type = parse_netmask(yy_aconf->host, &yy_aconf->addr,
- &yy_aconf->bits);
+ yy_conf->htype = parse_netmask(yy_conf->host, &yy_conf->addr,
+ &yy_conf->bits);
}
else
{
@@ -3925,55 +3918,55 @@ yyreduce:
case 144:
/* Line 1813 of yacc.c */
-#line 1018 "conf_parser.y"
+#line 1011 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
- if (yy_aconf->passwd != NULL)
- memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
+ if (yy_conf->passwd != NULL)
+ memset(yy_conf->passwd, 0, strlen(yy_conf->passwd));
- MyFree(yy_aconf->passwd);
- DupString(yy_aconf->passwd, yylval.string);
+ MyFree(yy_conf->passwd);
+ DupString(yy_conf->passwd, yylval.string);
}
}
break;
case 145:
/* Line 1813 of yacc.c */
-#line 1030 "conf_parser.y"
+#line 1023 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
if (yylval.number)
- SetConfEncrypted(yy_aconf);
+ SetConfEncrypted(yy_conf);
else
- ClearConfEncrypted(yy_aconf);
+ ClearConfEncrypted(yy_conf);
}
}
break;
case 146:
/* Line 1813 of yacc.c */
-#line 1041 "conf_parser.y"
+#line 1034 "conf_parser.y"
{
#ifdef HAVE_LIBCRYPTO
if (conf_parser_ctx.pass == 2)
{
BIO *file;
- if (yy_aconf->rsa_public_key != NULL)
+ if (yy_conf->rsa_public_key != NULL)
{
- RSA_free(yy_aconf->rsa_public_key);
- yy_aconf->rsa_public_key = NULL;
+ RSA_free(yy_conf->rsa_public_key);
+ yy_conf->rsa_public_key = NULL;
}
- if (yy_aconf->rsa_public_key_file != NULL)
+ if (yy_conf->rsa_public_key_file != NULL)
{
- MyFree(yy_aconf->rsa_public_key_file);
- yy_aconf->rsa_public_key_file = NULL;
+ MyFree(yy_conf->rsa_public_key_file);
+ yy_conf->rsa_public_key_file = NULL;
}
- DupString(yy_aconf->rsa_public_key_file, yylval.string);
+ DupString(yy_conf->rsa_public_key_file, yylval.string);
file = BIO_new_file(yylval.string, "r");
if (file == NULL)
@@ -3982,9 +3975,9 @@ yyreduce:
break;
}
- yy_aconf->rsa_public_key = PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
+ yy_conf->rsa_public_key = PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
- if (yy_aconf->rsa_public_key == NULL)
+ if (yy_conf->rsa_public_key == NULL)
{
yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
break;
@@ -3999,7 +3992,7 @@ yyreduce:
case 147:
/* Line 1813 of yacc.c */
-#line 1083 "conf_parser.y"
+#line 1076 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -4011,422 +4004,418 @@ yyreduce:
case 148:
/* Line 1813 of yacc.c */
-#line 1092 "conf_parser.y"
+#line 1085 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes = 0;
+ yy_conf->modes = 0;
}
break;
case 152:
/* Line 1813 of yacc.c */
-#line 1099 "conf_parser.y"
+#line 1092 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_BOTS;
+ yy_conf->modes |= UMODE_BOTS;
}
break;
case 153:
/* Line 1813 of yacc.c */
-#line 1103 "conf_parser.y"
+#line 1096 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_CCONN;
+ yy_conf->modes |= UMODE_CCONN;
}
break;
case 154:
/* Line 1813 of yacc.c */
-#line 1107 "conf_parser.y"
+#line 1100 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_CCONN_FULL;
+ yy_conf->modes |= UMODE_CCONN_FULL;
}
break;
case 155:
/* Line 1813 of yacc.c */
-#line 1111 "conf_parser.y"
+#line 1104 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_DEAF;
+ yy_conf->modes |= UMODE_DEAF;
}
break;
case 156:
/* Line 1813 of yacc.c */
-#line 1115 "conf_parser.y"
+#line 1108 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_DEBUG;
+ yy_conf->modes |= UMODE_DEBUG;
}
break;
case 157:
/* Line 1813 of yacc.c */
-#line 1119 "conf_parser.y"
+#line 1112 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_FULL;
+ yy_conf->modes |= UMODE_FULL;
}
break;
case 158:
/* Line 1813 of yacc.c */
-#line 1123 "conf_parser.y"
+#line 1116 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_HIDDEN;
+ yy_conf->modes |= UMODE_HIDDEN;
}
break;
case 159:
/* Line 1813 of yacc.c */
-#line 1127 "conf_parser.y"
+#line 1120 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_SKILL;
+ yy_conf->modes |= UMODE_SKILL;
}
break;
case 160:
/* Line 1813 of yacc.c */
-#line 1131 "conf_parser.y"
+#line 1124 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_NCHANGE;
+ yy_conf->modes |= UMODE_NCHANGE;
}
break;
case 161:
/* Line 1813 of yacc.c */
-#line 1135 "conf_parser.y"
+#line 1128 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_REJ;
+ yy_conf->modes |= UMODE_REJ;
}
break;
case 162:
/* Line 1813 of yacc.c */
-#line 1139 "conf_parser.y"
+#line 1132 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_UNAUTH;
+ yy_conf->modes |= UMODE_UNAUTH;
}
break;
case 163:
/* Line 1813 of yacc.c */
-#line 1143 "conf_parser.y"
+#line 1136 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_SPY;
+ yy_conf->modes |= UMODE_SPY;
}
break;
case 164:
/* Line 1813 of yacc.c */
-#line 1147 "conf_parser.y"
+#line 1140 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_EXTERNAL;
+ yy_conf->modes |= UMODE_EXTERNAL;
}
break;
case 165:
/* Line 1813 of yacc.c */
-#line 1151 "conf_parser.y"
+#line 1144 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_OPERWALL;
+ yy_conf->modes |= UMODE_OPERWALL;
}
break;
case 166:
/* Line 1813 of yacc.c */
-#line 1155 "conf_parser.y"
+#line 1148 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_SERVNOTICE;
+ yy_conf->modes |= UMODE_SERVNOTICE;
}
break;
case 167:
/* Line 1813 of yacc.c */
-#line 1159 "conf_parser.y"
+#line 1152 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_INVISIBLE;
+ yy_conf->modes |= UMODE_INVISIBLE;
}
break;
case 168:
/* Line 1813 of yacc.c */
-#line 1163 "conf_parser.y"
+#line 1156 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_WALLOP;
+ yy_conf->modes |= UMODE_WALLOP;
}
break;
case 169:
/* Line 1813 of yacc.c */
-#line 1167 "conf_parser.y"
+#line 1160 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_SOFTCALLERID;
+ yy_conf->modes |= UMODE_SOFTCALLERID;
}
break;
case 170:
/* Line 1813 of yacc.c */
-#line 1171 "conf_parser.y"
+#line 1164 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_CALLERID;
+ yy_conf->modes |= UMODE_CALLERID;
}
break;
case 171:
/* Line 1813 of yacc.c */
-#line 1175 "conf_parser.y"
+#line 1168 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_LOCOPS;
+ yy_conf->modes |= UMODE_LOCOPS;
}
break;
case 172:
/* Line 1813 of yacc.c */
-#line 1181 "conf_parser.y"
+#line 1174 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port = 0;
+ yy_conf->port = 0;
}
break;
case 176:
/* Line 1813 of yacc.c */
-#line 1188 "conf_parser.y"
+#line 1181 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
+ yy_conf->port |= OPER_FLAG_GLOBAL_KILL;
}
break;
case 177:
/* Line 1813 of yacc.c */
-#line 1192 "conf_parser.y"
+#line 1185 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_REMOTE;
+ yy_conf->port |= OPER_FLAG_REMOTE;
}
break;
case 178:
/* Line 1813 of yacc.c */
-#line 1196 "conf_parser.y"
+#line 1189 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_K;
+ yy_conf->port |= OPER_FLAG_K;
}
break;
case 179:
/* Line 1813 of yacc.c */
-#line 1200 "conf_parser.y"
+#line 1193 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_UNKLINE;
+ yy_conf->port |= OPER_FLAG_UNKLINE;
}
break;
case 180:
/* Line 1813 of yacc.c */
-#line 1204 "conf_parser.y"
+#line 1197 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_DLINE;
+ yy_conf->port |= OPER_FLAG_DLINE;
}
break;
case 181:
/* Line 1813 of yacc.c */
-#line 1208 "conf_parser.y"
+#line 1201 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_UNDLINE;
+ yy_conf->port |= OPER_FLAG_UNDLINE;
}
break;
case 182:
/* Line 1813 of yacc.c */
-#line 1212 "conf_parser.y"
+#line 1205 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_X;
+ yy_conf->port |= OPER_FLAG_X;
}
break;
case 183:
/* Line 1813 of yacc.c */
-#line 1216 "conf_parser.y"
+#line 1209 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_GLINE;
+ yy_conf->port |= OPER_FLAG_GLINE;
}
break;
case 184:
/* Line 1813 of yacc.c */
-#line 1220 "conf_parser.y"
+#line 1213 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_DIE;
+ yy_conf->port |= OPER_FLAG_DIE;
}
break;
case 185:
/* Line 1813 of yacc.c */
-#line 1224 "conf_parser.y"
+#line 1217 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_RESTART;
+ yy_conf->port |= OPER_FLAG_RESTART;
}
break;
case 186:
/* Line 1813 of yacc.c */
-#line 1228 "conf_parser.y"
+#line 1221 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_REHASH;
+ yy_conf->port |= OPER_FLAG_REHASH;
}
break;
case 187:
/* Line 1813 of yacc.c */
-#line 1232 "conf_parser.y"
+#line 1225 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_ADMIN;
+ yy_conf->port |= OPER_FLAG_ADMIN;
}
break;
case 188:
/* Line 1813 of yacc.c */
-#line 1236 "conf_parser.y"
+#line 1229 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_N;
+ yy_conf->port |= OPER_FLAG_N;
}
break;
case 189:
/* Line 1813 of yacc.c */
-#line 1240 "conf_parser.y"
+#line 1233 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_OPERWALL;
+ yy_conf->port |= OPER_FLAG_OPERWALL;
}
break;
case 190:
/* Line 1813 of yacc.c */
-#line 1244 "conf_parser.y"
+#line 1237 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_GLOBOPS;
+ yy_conf->port |= OPER_FLAG_GLOBOPS;
}
break;
case 191:
/* Line 1813 of yacc.c */
-#line 1248 "conf_parser.y"
+#line 1241 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_OPER_SPY;
+ yy_conf->port |= OPER_FLAG_OPER_SPY;
}
break;
case 192:
/* Line 1813 of yacc.c */
-#line 1252 "conf_parser.y"
+#line 1245 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_REMOTEBAN;
+ yy_conf->port |= OPER_FLAG_REMOTEBAN;
}
break;
case 193:
/* Line 1813 of yacc.c */
-#line 1256 "conf_parser.y"
+#line 1249 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_SET;
+ yy_conf->port |= OPER_FLAG_SET;
}
break;
case 194:
/* Line 1813 of yacc.c */
-#line 1260 "conf_parser.y"
+#line 1253 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_MODULE;
+ yy_conf->port |= OPER_FLAG_MODULE;
}
break;
case 195:
/* Line 1813 of yacc.c */
-#line 1270 "conf_parser.y"
+#line 1263 "conf_parser.y"
{
if (conf_parser_ctx.pass == 1)
{
- yy_conf = make_conf_item(CLASS_TYPE);
- yy_class = map_to_conf(yy_conf);
+ yy_class = class_make();
}
}
break;
case 196:
/* Line 1813 of yacc.c */
-#line 1277 "conf_parser.y"
+#line 1269 "conf_parser.y"
{
if (conf_parser_ctx.pass == 1)
{
- struct ConfItem *cconf = NULL;
struct ClassItem *class = NULL;
if (yy_class_name == NULL)
- delete_conf_item(yy_conf);
+ class_free(yy_class);
else
{
- cconf = find_exact_name_conf(CLASS_TYPE, NULL, yy_class_name, NULL, NULL);
+ class = class_find(yy_class_name, 0);
- if (cconf != NULL) /* The class existed already */
+ if (class != NULL) /* The class existed already */
{
int user_count = 0;
- rebuild_cidr_class(cconf, yy_class);
-
- class = map_to_conf(cconf);
+ rebuild_cidr_class(class, yy_class);
- user_count = class->curr_user_count;
+ user_count = class->ref_count;
memcpy(class, yy_class, sizeof(*class));
- class->curr_user_count = user_count;
+ class->ref_count = user_count;
class->active = 1;
- delete_conf_item(yy_conf);
+ class_free(yy_class);
- MyFree(cconf->name); /* Allows case change of class name */
- cconf->name = yy_class_name;
+ MyFree(class->name); /* Allows case change of class name */
+ class->name = yy_class_name;
}
else /* Brand new class */
{
- MyFree(yy_conf->name); /* just in case it was allocated */
- yy_conf->name = yy_class_name;
+ MyFree(yy_class->name); /* just in case it was allocated */
+ yy_class->name = yy_class_name;
yy_class->active = 1;
}
}
@@ -4438,7 +4427,7 @@ yyreduce:
case 214:
/* Line 1813 of yacc.c */
-#line 1335 "conf_parser.y"
+#line 1324 "conf_parser.y"
{
if (conf_parser_ctx.pass == 1)
{
@@ -4450,7 +4439,7 @@ yyreduce:
case 215:
/* Line 1813 of yacc.c */
-#line 1344 "conf_parser.y"
+#line 1333 "conf_parser.y"
{
if (conf_parser_ctx.pass == 1)
yy_class->ping_freq = (yyvsp[(3) - (4)].number);
@@ -4459,7 +4448,7 @@ yyreduce:
case 216:
/* Line 1813 of yacc.c */
-#line 1350 "conf_parser.y"
+#line 1339 "conf_parser.y"
{
if (conf_parser_ctx.pass == 1)
yy_class->ping_warning = (yyvsp[(3) - (4)].number);
@@ -4468,7 +4457,7 @@ yyreduce:
case 217:
/* Line 1813 of yacc.c */
-#line 1356 "conf_parser.y"
+#line 1345 "conf_parser.y"
{
if (conf_parser_ctx.pass == 1)
yy_class->max_perip = (yyvsp[(3) - (4)].number);
@@ -4477,7 +4466,7 @@ yyreduce:
case 218:
/* Line 1813 of yacc.c */
-#line 1362 "conf_parser.y"
+#line 1351 "conf_parser.y"
{
if (conf_parser_ctx.pass == 1)
yy_class->con_freq = (yyvsp[(3) - (4)].number);
@@ -4486,7 +4475,7 @@ yyreduce:
case 219:
/* Line 1813 of yacc.c */
-#line 1368 "conf_parser.y"
+#line 1357 "conf_parser.y"
{
if (conf_parser_ctx.pass == 1)
yy_class->max_total = (yyvsp[(3) - (4)].number);
@@ -4495,7 +4484,7 @@ yyreduce:
case 220:
/* Line 1813 of yacc.c */
-#line 1374 "conf_parser.y"
+#line 1363 "conf_parser.y"
{
if (conf_parser_ctx.pass == 1)
yy_class->max_global = (yyvsp[(3) - (4)].number);
@@ -4504,7 +4493,7 @@ yyreduce:
case 221:
/* Line 1813 of yacc.c */
-#line 1380 "conf_parser.y"
+#line 1369 "conf_parser.y"
{
if (conf_parser_ctx.pass == 1)
yy_class->max_local = (yyvsp[(3) - (4)].number);
@@ -4513,7 +4502,7 @@ yyreduce:
case 222:
/* Line 1813 of yacc.c */
-#line 1386 "conf_parser.y"
+#line 1375 "conf_parser.y"
{
if (conf_parser_ctx.pass == 1)
yy_class->max_ident = (yyvsp[(3) - (4)].number);
@@ -4522,7 +4511,7 @@ yyreduce:
case 223:
/* Line 1813 of yacc.c */
-#line 1392 "conf_parser.y"
+#line 1381 "conf_parser.y"
{
if (conf_parser_ctx.pass == 1)
yy_class->max_sendq = (yyvsp[(3) - (4)].number);
@@ -4531,7 +4520,7 @@ yyreduce:
case 224:
/* Line 1813 of yacc.c */
-#line 1398 "conf_parser.y"
+#line 1387 "conf_parser.y"
{
if (conf_parser_ctx.pass == 1)
if ((yyvsp[(3) - (4)].number) >= CLIENT_FLOOD_MIN && (yyvsp[(3) - (4)].number) <= CLIENT_FLOOD_MAX)
@@ -4541,7 +4530,7 @@ yyreduce:
case 225:
/* Line 1813 of yacc.c */
-#line 1405 "conf_parser.y"
+#line 1394 "conf_parser.y"
{
if (conf_parser_ctx.pass == 1)
yy_class->cidr_bitlen_ipv4 = (yyvsp[(3) - (4)].number) > 32 ? 32 : (yyvsp[(3) - (4)].number);
@@ -4550,7 +4539,7 @@ yyreduce:
case 226:
/* Line 1813 of yacc.c */
-#line 1411 "conf_parser.y"
+#line 1400 "conf_parser.y"
{
if (conf_parser_ctx.pass == 1)
yy_class->cidr_bitlen_ipv6 = (yyvsp[(3) - (4)].number) > 128 ? 128 : (yyvsp[(3) - (4)].number);
@@ -4559,7 +4548,7 @@ yyreduce:
case 227:
/* Line 1813 of yacc.c */
-#line 1417 "conf_parser.y"
+#line 1406 "conf_parser.y"
{
if (conf_parser_ctx.pass == 1)
yy_class->number_per_cidr = (yyvsp[(3) - (4)].number);
@@ -4568,7 +4557,7 @@ yyreduce:
case 228:
/* Line 1813 of yacc.c */
-#line 1426 "conf_parser.y"
+#line 1415 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -4580,7 +4569,7 @@ yyreduce:
case 229:
/* Line 1813 of yacc.c */
-#line 1433 "conf_parser.y"
+#line 1422 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -4592,7 +4581,7 @@ yyreduce:
case 230:
/* Line 1813 of yacc.c */
-#line 1442 "conf_parser.y"
+#line 1431 "conf_parser.y"
{
listener_flags = 0;
}
@@ -4600,7 +4589,7 @@ yyreduce:
case 234:
/* Line 1813 of yacc.c */
-#line 1448 "conf_parser.y"
+#line 1437 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
listener_flags |= LISTENER_SSL;
@@ -4609,7 +4598,7 @@ yyreduce:
case 235:
/* Line 1813 of yacc.c */
-#line 1452 "conf_parser.y"
+#line 1441 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
listener_flags |= LISTENER_HIDDEN;
@@ -4618,7 +4607,7 @@ yyreduce:
case 236:
/* Line 1813 of yacc.c */
-#line 1456 "conf_parser.y"
+#line 1445 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
listener_flags |= LISTENER_SERVER;
@@ -4627,13 +4616,13 @@ yyreduce:
case 244:
/* Line 1813 of yacc.c */
-#line 1466 "conf_parser.y"
+#line 1455 "conf_parser.y"
{ listener_flags = 0; }
break;
case 248:
/* Line 1813 of yacc.c */
-#line 1471 "conf_parser.y"
+#line 1460 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -4652,7 +4641,7 @@ yyreduce:
case 249:
/* Line 1813 of yacc.c */
-#line 1485 "conf_parser.y"
+#line 1474 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -4675,7 +4664,7 @@ yyreduce:
case 250:
/* Line 1813 of yacc.c */
-#line 1505 "conf_parser.y"
+#line 1494 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -4687,7 +4676,7 @@ yyreduce:
case 251:
/* Line 1813 of yacc.c */
-#line 1514 "conf_parser.y"
+#line 1503 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -4699,12 +4688,11 @@ yyreduce:
case 252:
/* Line 1813 of yacc.c */
-#line 1526 "conf_parser.y"
+#line 1515 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
- yy_conf = make_conf_item(CLIENT_TYPE);
- yy_aconf = map_to_conf(yy_conf);
+ yy_conf = conf_make(CONF_CLIENT);
}
else
{
@@ -4716,52 +4704,48 @@ yyreduce:
case 253:
/* Line 1813 of yacc.c */
-#line 1538 "conf_parser.y"
+#line 1526 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
struct CollectItem *yy_tmp = NULL;
dlink_node *ptr = NULL, *next_ptr = NULL;
- if (yy_aconf->user && yy_aconf->host)
+ if (yy_conf->user && yy_conf->host)
{
conf_add_class_to_conf(yy_conf, class_name);
- add_conf_by_address(CONF_CLIENT, yy_aconf);
+ add_conf_by_address(CONF_CLIENT, yy_conf);
}
else
- delete_conf_item(yy_conf);
+ conf_free(yy_conf);
/* copy over settings from first struct */
DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
{
- struct AccessItem *new_aconf;
- struct ConfItem *new_conf;
-
- new_conf = make_conf_item(CLIENT_TYPE);
- new_aconf = map_to_conf(new_conf);
+ struct MaskItem *new_conf = conf_make(CONF_CLIENT);
yy_tmp = ptr->data;
assert(yy_tmp->user && yy_tmp->host);
- if (yy_aconf->passwd != NULL)
- DupString(new_aconf->passwd, yy_aconf->passwd);
+ if (yy_conf->passwd != NULL)
+ DupString(new_conf->passwd, yy_conf->passwd);
if (yy_conf->name != NULL)
DupString(new_conf->name, yy_conf->name);
- if (yy_aconf->passwd != NULL)
- DupString(new_aconf->passwd, yy_aconf->passwd);
+ if (yy_conf->passwd != NULL)
+ DupString(new_conf->passwd, yy_conf->passwd);
- new_aconf->flags = yy_aconf->flags;
- new_aconf->port = yy_aconf->port;
+ new_conf->flags = yy_conf->flags;
+ new_conf->port = yy_conf->port;
- DupString(new_aconf->user, yy_tmp->user);
- collapse(new_aconf->user);
+ DupString(new_conf->user, yy_tmp->user);
+ collapse(new_conf->user);
- DupString(new_aconf->host, yy_tmp->host);
- collapse(new_aconf->host);
+ DupString(new_conf->host, yy_tmp->host);
+ collapse(new_conf->host);
conf_add_class_to_conf(new_conf, class_name);
- add_conf_by_address(CONF_CLIENT, new_aconf);
+ add_conf_by_address(CONF_CLIENT, new_conf);
dlinkDelete(&yy_tmp->node, &col_conf_list);
free_collect_item(yy_tmp);
}
@@ -4769,14 +4753,13 @@ yyreduce:
MyFree(class_name);
class_name = NULL;
yy_conf = NULL;
- yy_aconf = NULL;
}
}
break;
case 265:
/* Line 1813 of yacc.c */
-#line 1600 "conf_parser.y"
+#line 1583 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -4794,10 +4777,10 @@ yyreduce:
split_nuh(&nuh);
- if (yy_aconf->user == NULL)
+ if (yy_conf->user == NULL)
{
- DupString(yy_aconf->user, userbuf);
- DupString(yy_aconf->host, hostbuf);
+ DupString(yy_conf->user, userbuf);
+ DupString(yy_conf->host, hostbuf);
}
else
{
@@ -4814,23 +4797,23 @@ yyreduce:
case 266:
/* Line 1813 of yacc.c */
-#line 1635 "conf_parser.y"
+#line 1618 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
/* be paranoid */
- if (yy_aconf->passwd != NULL)
- memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
+ if (yy_conf->passwd != NULL)
+ memset(yy_conf->passwd, 0, strlen(yy_conf->passwd));
- MyFree(yy_aconf->passwd);
- DupString(yy_aconf->passwd, yylval.string);
+ MyFree(yy_conf->passwd);
+ DupString(yy_conf->passwd, yylval.string);
}
}
break;
case 267:
/* Line 1813 of yacc.c */
-#line 1648 "conf_parser.y"
+#line 1631 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -4842,109 +4825,109 @@ yyreduce:
case 268:
/* Line 1813 of yacc.c */
-#line 1657 "conf_parser.y"
+#line 1640 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
if (yylval.number)
- SetConfEncrypted(yy_aconf);
+ SetConfEncrypted(yy_conf);
else
- ClearConfEncrypted(yy_aconf);
+ ClearConfEncrypted(yy_conf);
}
}
break;
case 269:
/* Line 1813 of yacc.c */
-#line 1668 "conf_parser.y"
+#line 1651 "conf_parser.y"
{
}
break;
case 273:
/* Line 1813 of yacc.c */
-#line 1673 "conf_parser.y"
+#line 1656 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
+ yy_conf->flags |= CONF_FLAGS_SPOOF_NOTICE;
}
break;
case 274:
/* Line 1813 of yacc.c */
-#line 1677 "conf_parser.y"
+#line 1660 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
+ yy_conf->flags |= CONF_FLAGS_NOLIMIT;
}
break;
case 275:
/* Line 1813 of yacc.c */
-#line 1681 "conf_parser.y"
+#line 1664 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
+ yy_conf->flags |= CONF_FLAGS_EXEMPTKLINE;
}
break;
case 276:
/* Line 1813 of yacc.c */
-#line 1685 "conf_parser.y"
+#line 1668 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
+ yy_conf->flags |= CONF_FLAGS_NEED_IDENTD;
}
break;
case 277:
/* Line 1813 of yacc.c */
-#line 1689 "conf_parser.y"
+#line 1672 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
+ yy_conf->flags |= CONF_FLAGS_CAN_FLOOD;
}
break;
case 278:
/* Line 1813 of yacc.c */
-#line 1693 "conf_parser.y"
+#line 1676 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
+ yy_conf->flags |= CONF_FLAGS_NO_TILDE;
}
break;
case 279:
/* Line 1813 of yacc.c */
-#line 1697 "conf_parser.y"
+#line 1680 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
+ yy_conf->flags |= CONF_FLAGS_EXEMPTGLINE;
}
break;
case 280:
/* Line 1813 of yacc.c */
-#line 1701 "conf_parser.y"
+#line 1684 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->flags |= CONF_FLAGS_EXEMPTRESV;
+ yy_conf->flags |= CONF_FLAGS_EXEMPTRESV;
}
break;
case 281:
/* Line 1813 of yacc.c */
-#line 1705 "conf_parser.y"
+#line 1688 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
+ yy_conf->flags |= CONF_FLAGS_NEED_PASSWORD;
}
break;
case 282:
/* Line 1813 of yacc.c */
-#line 1711 "conf_parser.y"
+#line 1694 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -4953,7 +4936,7 @@ yyreduce:
if (strlen(yylval.string) <= HOSTLEN && valid_hostname(yylval.string))
{
DupString(yy_conf->name, yylval.string);
- yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
+ yy_conf->flags |= CONF_FLAGS_SPOOF_IP;
}
else
{
@@ -4966,11 +4949,11 @@ yyreduce:
case 283:
/* Line 1813 of yacc.c */
-#line 1730 "conf_parser.y"
+#line 1713 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
- yy_aconf->flags |= CONF_FLAGS_REDIR;
+ yy_conf->flags |= CONF_FLAGS_REDIR;
MyFree(yy_conf->name);
DupString(yy_conf->name, yylval.string);
}
@@ -4979,19 +4962,19 @@ yyreduce:
case 284:
/* Line 1813 of yacc.c */
-#line 1740 "conf_parser.y"
+#line 1723 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
- yy_aconf->flags |= CONF_FLAGS_REDIR;
- yy_aconf->port = (yyvsp[(3) - (4)].number);
+ yy_conf->flags |= CONF_FLAGS_REDIR;
+ yy_conf->port = (yyvsp[(3) - (4)].number);
}
}
break;
case 285:
/* Line 1813 of yacc.c */
-#line 1753 "conf_parser.y"
+#line 1736 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5003,7 +4986,7 @@ yyreduce:
case 286:
/* Line 1813 of yacc.c */
-#line 1760 "conf_parser.y"
+#line 1743 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5015,7 +4998,7 @@ yyreduce:
case 293:
/* Line 1813 of yacc.c */
-#line 1772 "conf_parser.y"
+#line 1755 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5027,7 +5010,7 @@ yyreduce:
case 294:
/* Line 1813 of yacc.c */
-#line 1781 "conf_parser.y"
+#line 1764 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5045,7 +5028,7 @@ yyreduce:
case 295:
/* Line 1813 of yacc.c */
-#line 1796 "conf_parser.y"
+#line 1779 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5058,13 +5041,13 @@ yyreduce:
case 301:
/* Line 1813 of yacc.c */
-#line 1814 "conf_parser.y"
+#line 1797 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
if (valid_servname(yylval.string))
{
- yy_conf = make_conf_item(SERVICE_TYPE);
+ yy_conf = conf_make(CONF_SERVICE);
DupString(yy_conf->name, yylval.string);
}
}
@@ -5073,20 +5056,19 @@ yyreduce:
case 302:
/* Line 1813 of yacc.c */
-#line 1829 "conf_parser.y"
+#line 1812 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
- yy_conf = make_conf_item(ULINE_TYPE);
- yy_match_item = map_to_conf(yy_conf);
- yy_match_item->action = SHARED_ALL;
+ yy_conf = conf_make(CONF_ULINE);
+ yy_conf->action = SHARED_ALL;
}
}
break;
case 303:
/* Line 1813 of yacc.c */
-#line 1837 "conf_parser.y"
+#line 1819 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5097,7 +5079,7 @@ yyreduce:
case 310:
/* Line 1813 of yacc.c */
-#line 1848 "conf_parser.y"
+#line 1830 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5109,7 +5091,7 @@ yyreduce:
case 311:
/* Line 1813 of yacc.c */
-#line 1857 "conf_parser.y"
+#line 1839 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5126,126 +5108,125 @@ yyreduce:
split_nuh(&nuh);
- DupString(yy_match_item->user, userbuf);
- DupString(yy_match_item->host, hostbuf);
+ DupString(yy_conf->user, userbuf);
+ DupString(yy_conf->host, hostbuf);
}
}
break;
case 312:
/* Line 1813 of yacc.c */
-#line 1879 "conf_parser.y"
+#line 1861 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_match_item->action = 0;
+ yy_conf->action = 0;
}
break;
case 316:
/* Line 1813 of yacc.c */
-#line 1886 "conf_parser.y"
+#line 1868 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_match_item->action |= SHARED_KLINE;
+ yy_conf->action |= SHARED_KLINE;
}
break;
case 317:
/* Line 1813 of yacc.c */
-#line 1890 "conf_parser.y"
+#line 1872 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_match_item->action |= SHARED_UNKLINE;
+ yy_conf->action |= SHARED_UNKLINE;
}
break;
case 318:
/* Line 1813 of yacc.c */
-#line 1894 "conf_parser.y"
+#line 1876 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_match_item->action |= SHARED_DLINE;
+ yy_conf->action |= SHARED_DLINE;
}
break;
case 319:
/* Line 1813 of yacc.c */
-#line 1898 "conf_parser.y"
+#line 1880 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_match_item->action |= SHARED_UNDLINE;
+ yy_conf->action |= SHARED_UNDLINE;
}
break;
case 320:
/* Line 1813 of yacc.c */
-#line 1902 "conf_parser.y"
+#line 1884 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_match_item->action |= SHARED_XLINE;
+ yy_conf->action |= SHARED_XLINE;
}
break;
case 321:
/* Line 1813 of yacc.c */
-#line 1906 "conf_parser.y"
+#line 1888 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_match_item->action |= SHARED_UNXLINE;
+ yy_conf->action |= SHARED_UNXLINE;
}
break;
case 322:
/* Line 1813 of yacc.c */
-#line 1910 "conf_parser.y"
+#line 1892 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_match_item->action |= SHARED_RESV;
+ yy_conf->action |= SHARED_RESV;
}
break;
case 323:
/* Line 1813 of yacc.c */
-#line 1914 "conf_parser.y"
+#line 1896 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_match_item->action |= SHARED_UNRESV;
+ yy_conf->action |= SHARED_UNRESV;
}
break;
case 324:
/* Line 1813 of yacc.c */
-#line 1918 "conf_parser.y"
+#line 1900 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_match_item->action |= SHARED_LOCOPS;
+ yy_conf->action |= SHARED_LOCOPS;
}
break;
case 325:
/* Line 1813 of yacc.c */
-#line 1922 "conf_parser.y"
+#line 1904 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_match_item->action = SHARED_ALL;
+ yy_conf->action = SHARED_ALL;
}
break;
case 326:
/* Line 1813 of yacc.c */
-#line 1931 "conf_parser.y"
+#line 1913 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
- yy_conf = make_conf_item(CLUSTER_TYPE);
- yy_conf->flags = SHARED_ALL;
+ yy_conf = conf_make(CONF_CLUSTER);
}
}
break;
case 327:
/* Line 1813 of yacc.c */
-#line 1938 "conf_parser.y"
+#line 1919 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5258,7 +5239,7 @@ yyreduce:
case 333:
/* Line 1813 of yacc.c */
-#line 1951 "conf_parser.y"
+#line 1932 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
DupString(yy_conf->name, yylval.string);
@@ -5267,7 +5248,7 @@ yyreduce:
case 334:
/* Line 1813 of yacc.c */
-#line 1957 "conf_parser.y"
+#line 1938 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
yy_conf->flags = 0;
@@ -5276,7 +5257,7 @@ yyreduce:
case 338:
/* Line 1813 of yacc.c */
-#line 1964 "conf_parser.y"
+#line 1945 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
yy_conf->flags |= SHARED_KLINE;
@@ -5285,7 +5266,7 @@ yyreduce:
case 339:
/* Line 1813 of yacc.c */
-#line 1968 "conf_parser.y"
+#line 1949 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
yy_conf->flags |= SHARED_UNKLINE;
@@ -5294,7 +5275,7 @@ yyreduce:
case 340:
/* Line 1813 of yacc.c */
-#line 1972 "conf_parser.y"
+#line 1953 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
yy_conf->flags |= SHARED_DLINE;
@@ -5303,7 +5284,7 @@ yyreduce:
case 341:
/* Line 1813 of yacc.c */
-#line 1976 "conf_parser.y"
+#line 1957 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
yy_conf->flags |= SHARED_UNDLINE;
@@ -5312,7 +5293,7 @@ yyreduce:
case 342:
/* Line 1813 of yacc.c */
-#line 1980 "conf_parser.y"
+#line 1961 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
yy_conf->flags |= SHARED_XLINE;
@@ -5321,7 +5302,7 @@ yyreduce:
case 343:
/* Line 1813 of yacc.c */
-#line 1984 "conf_parser.y"
+#line 1965 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
yy_conf->flags |= SHARED_UNXLINE;
@@ -5330,7 +5311,7 @@ yyreduce:
case 344:
/* Line 1813 of yacc.c */
-#line 1988 "conf_parser.y"
+#line 1969 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
yy_conf->flags |= SHARED_RESV;
@@ -5339,7 +5320,7 @@ yyreduce:
case 345:
/* Line 1813 of yacc.c */
-#line 1992 "conf_parser.y"
+#line 1973 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
yy_conf->flags |= SHARED_UNRESV;
@@ -5348,7 +5329,7 @@ yyreduce:
case 346:
/* Line 1813 of yacc.c */
-#line 1996 "conf_parser.y"
+#line 1977 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
yy_conf->flags |= SHARED_LOCOPS;
@@ -5357,7 +5338,7 @@ yyreduce:
case 347:
/* Line 1813 of yacc.c */
-#line 2000 "conf_parser.y"
+#line 1981 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
yy_conf->flags = SHARED_ALL;
@@ -5366,15 +5347,14 @@ yyreduce:
case 348:
/* Line 1813 of yacc.c */
-#line 2009 "conf_parser.y"
+#line 1990 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
- yy_conf = make_conf_item(SERVER_TYPE);
- yy_aconf = map_to_conf(yy_conf);
+ yy_conf = conf_make(CONF_SERVER);
/* defaults */
- yy_aconf->port = PORTNUM;
+ yy_conf->port = PORTNUM;
}
else
{
@@ -5386,22 +5366,22 @@ yyreduce:
case 349:
/* Line 1813 of yacc.c */
-#line 2024 "conf_parser.y"
+#line 2004 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
- if (yy_aconf->host && yy_aconf->passwd && yy_aconf->spasswd)
+ if (yy_conf->host && yy_conf->passwd && yy_conf->spasswd)
{
if (conf_add_server(yy_conf, class_name) == -1)
- delete_conf_item(yy_conf);
+ conf_free(yy_conf);
}
else
{
if (yy_conf->name != NULL)
{
- if (yy_aconf->host == NULL)
+ if (yy_conf->host == NULL)
yyerror("Ignoring connect block -- missing host");
- else if (!yy_aconf->passwd || !yy_aconf->spasswd)
+ else if (!yy_conf->passwd || !yy_conf->spasswd)
yyerror("Ignoring connect block -- missing password");
}
@@ -5412,20 +5392,19 @@ yyreduce:
* rewrite ASAP. make_conf_item() shouldn't really add things onto
* a doubly linked list immediately without any sanity checks! -Michael
*/
- delete_conf_item(yy_conf);
+ conf_free(yy_conf);
}
MyFree(class_name);
class_name = NULL;
yy_conf = NULL;
- yy_aconf = NULL;
}
}
break;
case 366:
/* Line 1813 of yacc.c */
-#line 2068 "conf_parser.y"
+#line 2047 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5437,19 +5416,19 @@ yyreduce:
case 367:
/* Line 1813 of yacc.c */
-#line 2077 "conf_parser.y"
+#line 2056 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
- MyFree(yy_aconf->host);
- DupString(yy_aconf->host, yylval.string);
+ MyFree(yy_conf->host);
+ DupString(yy_conf->host, yylval.string);
}
}
break;
case 368:
/* Line 1813 of yacc.c */
-#line 2086 "conf_parser.y"
+#line 2065 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5467,9 +5446,9 @@ yyreduce:
{
assert(res != NULL);
- memcpy(&yy_aconf->bind, res->ai_addr, res->ai_addrlen);
- yy_aconf->bind.ss.ss_family = res->ai_family;
- yy_aconf->bind.ss_len = res->ai_addrlen;
+ memcpy(&yy_conf->bind, res->ai_addr, res->ai_addrlen);
+ yy_conf->bind.ss.ss_family = res->ai_family;
+ yy_conf->bind.ss_len = res->ai_addrlen;
freeaddrinfo(res);
}
}
@@ -5478,7 +5457,7 @@ yyreduce:
case 369:
/* Line 1813 of yacc.c */
-#line 2112 "conf_parser.y"
+#line 2091 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5487,11 +5466,11 @@ yyreduce:
else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
yyerror("Server passwords cannot contain spaces");
else {
- if (yy_aconf->spasswd != NULL)
- memset(yy_aconf->spasswd, 0, strlen(yy_aconf->spasswd));
+ if (yy_conf->spasswd != NULL)
+ memset(yy_conf->spasswd, 0, strlen(yy_conf->spasswd));
- MyFree(yy_aconf->spasswd);
- DupString(yy_aconf->spasswd, yylval.string);
+ MyFree(yy_conf->spasswd);
+ DupString(yy_conf->spasswd, yylval.string);
}
}
}
@@ -5499,7 +5478,7 @@ yyreduce:
case 370:
/* Line 1813 of yacc.c */
-#line 2130 "conf_parser.y"
+#line 2109 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5508,11 +5487,11 @@ yyreduce:
else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
yyerror("Server passwords cannot contain spaces");
else {
- if (yy_aconf->passwd != NULL)
- memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
+ if (yy_conf->passwd != NULL)
+ memset(yy_conf->passwd, 0, strlen(yy_conf->passwd));
- MyFree(yy_aconf->passwd);
- DupString(yy_aconf->passwd, yylval.string);
+ MyFree(yy_conf->passwd);
+ DupString(yy_conf->passwd, yylval.string);
}
}
}
@@ -5520,103 +5499,103 @@ yyreduce:
case 371:
/* Line 1813 of yacc.c */
-#line 2148 "conf_parser.y"
+#line 2127 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port = (yyvsp[(3) - (4)].number);
+ yy_conf->port = (yyvsp[(3) - (4)].number);
}
break;
case 372:
/* Line 1813 of yacc.c */
-#line 2154 "conf_parser.y"
+#line 2133 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->aftype = AF_INET;
+ yy_conf->aftype = AF_INET;
}
break;
case 373:
/* Line 1813 of yacc.c */
-#line 2158 "conf_parser.y"
+#line 2137 "conf_parser.y"
{
#ifdef IPV6
if (conf_parser_ctx.pass == 2)
- yy_aconf->aftype = AF_INET6;
+ yy_conf->aftype = AF_INET6;
#endif
}
break;
case 374:
/* Line 1813 of yacc.c */
-#line 2166 "conf_parser.y"
+#line 2145 "conf_parser.y"
{
}
break;
case 378:
/* Line 1813 of yacc.c */
-#line 2171 "conf_parser.y"
+#line 2150 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- SetConfAllowAutoConn(yy_aconf);
+ SetConfAllowAutoConn(yy_conf);
}
break;
case 379:
/* Line 1813 of yacc.c */
-#line 2175 "conf_parser.y"
+#line 2154 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- SetConfSSL(yy_aconf);
+ SetConfSSL(yy_conf);
}
break;
case 380:
/* Line 1813 of yacc.c */
-#line 2181 "conf_parser.y"
+#line 2160 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
if (yylval.number)
- yy_aconf->flags |= CONF_FLAGS_ENCRYPTED;
+ yy_conf->flags |= CONF_FLAGS_ENCRYPTED;
else
- yy_aconf->flags &= ~CONF_FLAGS_ENCRYPTED;
+ yy_conf->flags &= ~CONF_FLAGS_ENCRYPTED;
}
}
break;
case 381:
/* Line 1813 of yacc.c */
-#line 2192 "conf_parser.y"
+#line 2171 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
char *mask;
DupString(mask, yylval.string);
- dlinkAdd(mask, make_dlink_node(), &yy_aconf->hub_list);
+ dlinkAdd(mask, make_dlink_node(), &yy_conf->hub_list);
}
}
break;
case 382:
/* Line 1813 of yacc.c */
-#line 2203 "conf_parser.y"
+#line 2182 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
char *mask;
DupString(mask, yylval.string);
- dlinkAdd(mask, make_dlink_node(), &yy_aconf->leaf_list);
+ dlinkAdd(mask, make_dlink_node(), &yy_conf->leaf_list);
}
}
break;
case 383:
/* Line 1813 of yacc.c */
-#line 2214 "conf_parser.y"
+#line 2193 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5628,13 +5607,13 @@ yyreduce:
case 384:
/* Line 1813 of yacc.c */
-#line 2223 "conf_parser.y"
+#line 2202 "conf_parser.y"
{
#ifdef HAVE_LIBCRYPTO
if (conf_parser_ctx.pass == 2)
{
- MyFree(yy_aconf->cipher_list);
- DupString(yy_aconf->cipher_list, yylval.string);
+ MyFree(yy_conf->cipher_list);
+ DupString(yy_conf->cipher_list, yylval.string);
}
#else
if (conf_parser_ctx.pass == 2)
@@ -5645,7 +5624,7 @@ yyreduce:
case 385:
/* Line 1813 of yacc.c */
-#line 2241 "conf_parser.y"
+#line 2220 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5657,7 +5636,7 @@ yyreduce:
case 386:
/* Line 1813 of yacc.c */
-#line 2248 "conf_parser.y"
+#line 2227 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5678,17 +5657,17 @@ yyreduce:
break;
}
- yy_aconf = map_to_conf(make_conf_item(RKLINE_TYPE));
- yy_aconf->regexuser = exp_user;
- yy_aconf->regexhost = exp_host;
+ yy_conf = conf_make(CONF_RKLINE);
+ yy_conf->regexuser = exp_user;
+ yy_conf->regexhost = exp_host;
- DupString(yy_aconf->user, userbuf);
- DupString(yy_aconf->host, hostbuf);
+ DupString(yy_conf->user, userbuf);
+ DupString(yy_conf->host, hostbuf);
if (reasonbuf[0])
- DupString(yy_aconf->reason, reasonbuf);
+ DupString(yy_conf->reason, reasonbuf);
else
- DupString(yy_aconf->reason, "No reason");
+ DupString(yy_conf->reason, "No reason");
#else
ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: no PCRE support");
break;
@@ -5696,34 +5675,34 @@ yyreduce:
}
else
{
- yy_aconf = map_to_conf(make_conf_item(KLINE_TYPE));
+ yy_conf = conf_make(CONF_KLINE);
- DupString(yy_aconf->user, userbuf);
- DupString(yy_aconf->host, hostbuf);
+ DupString(yy_conf->user, userbuf);
+ DupString(yy_conf->host, hostbuf);
if (reasonbuf[0])
- DupString(yy_aconf->reason, reasonbuf);
+ DupString(yy_conf->reason, reasonbuf);
else
- DupString(yy_aconf->reason, "No reason");
- add_conf_by_address(CONF_KLINE, yy_aconf);
+ DupString(yy_conf->reason, "No reason");
+ add_conf_by_address(CONF_KLINE, yy_conf);
}
}
- yy_aconf = NULL;
+ yy_conf = NULL;
}
}
break;
case 387:
/* Line 1813 of yacc.c */
-#line 2304 "conf_parser.y"
+#line 2283 "conf_parser.y"
{
}
break;
case 391:
/* Line 1813 of yacc.c */
-#line 2309 "conf_parser.y"
+#line 2288 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
regex_ban = 1;
@@ -5732,7 +5711,7 @@ yyreduce:
case 398:
/* Line 1813 of yacc.c */
-#line 2318 "conf_parser.y"
+#line 2297 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5754,7 +5733,7 @@ yyreduce:
case 399:
/* Line 1813 of yacc.c */
-#line 2337 "conf_parser.y"
+#line 2316 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
@@ -5763,7 +5742,7 @@ yyreduce:
case 400:
/* Line 1813 of yacc.c */
-#line 2346 "conf_parser.y"
+#line 2325 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
hostbuf[0] = reasonbuf[0] = '\0';
@@ -5772,21 +5751,21 @@ yyreduce:
case 401:
/* Line 1813 of yacc.c */
-#line 2350 "conf_parser.y"
+#line 2329 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
if (hostbuf[0] && parse_netmask(hostbuf, NULL, NULL) != HM_HOST)
{
- yy_aconf = map_to_conf(make_conf_item(DLINE_TYPE));
- DupString(yy_aconf->host, hostbuf);
+ yy_conf = conf_make(CONF_DLINE);
+ DupString(yy_conf->host, hostbuf);
if (reasonbuf[0])
- DupString(yy_aconf->reason, reasonbuf);
+ DupString(yy_conf->reason, reasonbuf);
else
- DupString(yy_aconf->reason, "No reason");
- add_conf_by_address(CONF_DLINE, yy_aconf);
- yy_aconf = NULL;
+ DupString(yy_conf->reason, "No reason");
+ add_conf_by_address(CONF_DLINE, yy_conf);
+ yy_conf = NULL;
}
}
}
@@ -5794,7 +5773,7 @@ yyreduce:
case 407:
/* Line 1813 of yacc.c */
-#line 2372 "conf_parser.y"
+#line 2351 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
strlcpy(hostbuf, yylval.string, sizeof(hostbuf));
@@ -5803,7 +5782,7 @@ yyreduce:
case 408:
/* Line 1813 of yacc.c */
-#line 2378 "conf_parser.y"
+#line 2357 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
@@ -5812,17 +5791,17 @@ yyreduce:
case 414:
/* Line 1813 of yacc.c */
-#line 2392 "conf_parser.y"
+#line 2371 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
{
- yy_aconf = map_to_conf(make_conf_item(EXEMPTDLINE_TYPE));
- DupString(yy_aconf->host, yylval.string);
+ yy_conf = conf_make(CONF_EXEMPT);
+ DupString(yy_conf->host, yylval.string);
- add_conf_by_address(CONF_EXEMPTDLINE, yy_aconf);
- yy_aconf = NULL;
+ add_conf_by_address(CONF_EXEMPT, yy_conf);
+ yy_conf = NULL;
}
}
}
@@ -5830,7 +5809,7 @@ yyreduce:
case 415:
/* Line 1813 of yacc.c */
-#line 2410 "conf_parser.y"
+#line 2389 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5842,7 +5821,7 @@ yyreduce:
case 416:
/* Line 1813 of yacc.c */
-#line 2417 "conf_parser.y"
+#line 2396 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5861,23 +5840,22 @@ yyreduce:
break;
}
- yy_conf = make_conf_item(RXLINE_TYPE);
- yy_conf->regexpname = exp_p;
+ yy_conf = conf_make(CONF_RXLINE);
+ yy_conf->regexuser = exp_p;
#else
ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: no PCRE support");
break;
#endif
}
else
- yy_conf = make_conf_item(XLINE_TYPE);
+ yy_conf = conf_make(CONF_XLINE);
- yy_match_item = map_to_conf(yy_conf);
DupString(yy_conf->name, gecos_name);
if (reasonbuf[0])
- DupString(yy_match_item->reason, reasonbuf);
+ DupString(yy_conf->reason, reasonbuf);
else
- DupString(yy_match_item->reason, "No reason");
+ DupString(yy_conf->reason, "No reason");
}
}
}
@@ -5885,14 +5863,14 @@ yyreduce:
case 417:
/* Line 1813 of yacc.c */
-#line 2457 "conf_parser.y"
+#line 2435 "conf_parser.y"
{
}
break;
case 421:
/* Line 1813 of yacc.c */
-#line 2462 "conf_parser.y"
+#line 2440 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
regex_ban = 1;
@@ -5901,7 +5879,7 @@ yyreduce:
case 428:
/* Line 1813 of yacc.c */
-#line 2471 "conf_parser.y"
+#line 2449 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
strlcpy(gecos_name, yylval.string, sizeof(gecos_name));
@@ -5910,7 +5888,7 @@ yyreduce:
case 429:
/* Line 1813 of yacc.c */
-#line 2477 "conf_parser.y"
+#line 2455 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
@@ -5919,7 +5897,7 @@ yyreduce:
case 483:
/* Line 1813 of yacc.c */
-#line 2522 "conf_parser.y"
+#line 2500 "conf_parser.y"
{
ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
}
@@ -5927,7 +5905,7 @@ yyreduce:
case 484:
/* Line 1813 of yacc.c */
-#line 2527 "conf_parser.y"
+#line 2505 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ConfigFileEntry.glines = yylval.number;
@@ -5936,7 +5914,7 @@ yyreduce:
case 485:
/* Line 1813 of yacc.c */
-#line 2533 "conf_parser.y"
+#line 2511 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
@@ -5945,7 +5923,7 @@ yyreduce:
case 486:
/* Line 1813 of yacc.c */
-#line 2539 "conf_parser.y"
+#line 2517 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ConfigFileEntry.gline_request_time = (yyvsp[(3) - (4)].number);
@@ -5954,7 +5932,7 @@ yyreduce:
case 487:
/* Line 1813 of yacc.c */
-#line 2545 "conf_parser.y"
+#line 2523 "conf_parser.y"
{
ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
}
@@ -5962,7 +5940,7 @@ yyreduce:
case 488:
/* Line 1813 of yacc.c */
-#line 2550 "conf_parser.y"
+#line 2528 "conf_parser.y"
{
ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
}
@@ -5970,7 +5948,7 @@ yyreduce:
case 489:
/* Line 1813 of yacc.c */
-#line 2555 "conf_parser.y"
+#line 2533 "conf_parser.y"
{
ConfigFileEntry.tkline_expire_notices = yylval.number;
}
@@ -5978,7 +5956,7 @@ yyreduce:
case 490:
/* Line 1813 of yacc.c */
-#line 2560 "conf_parser.y"
+#line 2538 "conf_parser.y"
{
ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
}
@@ -5986,7 +5964,7 @@ yyreduce:
case 491:
/* Line 1813 of yacc.c */
-#line 2565 "conf_parser.y"
+#line 2543 "conf_parser.y"
{
ConfigFileEntry.hide_spoof_ips = yylval.number;
}
@@ -5994,7 +5972,7 @@ yyreduce:
case 492:
/* Line 1813 of yacc.c */
-#line 2570 "conf_parser.y"
+#line 2548 "conf_parser.y"
{
ConfigFileEntry.ignore_bogus_ts = yylval.number;
}
@@ -6002,7 +5980,7 @@ yyreduce:
case 493:
/* Line 1813 of yacc.c */
-#line 2575 "conf_parser.y"
+#line 2553 "conf_parser.y"
{
ConfigFileEntry.disable_remote = yylval.number;
}
@@ -6010,7 +5988,7 @@ yyreduce:
case 494:
/* Line 1813 of yacc.c */
-#line 2580 "conf_parser.y"
+#line 2558 "conf_parser.y"
{
ConfigFileEntry.failed_oper_notice = yylval.number;
}
@@ -6018,7 +5996,7 @@ yyreduce:
case 495:
/* Line 1813 of yacc.c */
-#line 2585 "conf_parser.y"
+#line 2563 "conf_parser.y"
{
ConfigFileEntry.anti_nick_flood = yylval.number;
}
@@ -6026,7 +6004,7 @@ yyreduce:
case 496:
/* Line 1813 of yacc.c */
-#line 2590 "conf_parser.y"
+#line 2568 "conf_parser.y"
{
ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
}
@@ -6034,7 +6012,7 @@ yyreduce:
case 497:
/* Line 1813 of yacc.c */
-#line 2595 "conf_parser.y"
+#line 2573 "conf_parser.y"
{
ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
}
@@ -6042,7 +6020,7 @@ yyreduce:
case 498:
/* Line 1813 of yacc.c */
-#line 2600 "conf_parser.y"
+#line 2578 "conf_parser.y"
{
ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
}
@@ -6050,7 +6028,7 @@ yyreduce:
case 499:
/* Line 1813 of yacc.c */
-#line 2605 "conf_parser.y"
+#line 2583 "conf_parser.y"
{
ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
}
@@ -6058,7 +6036,7 @@ yyreduce:
case 500:
/* Line 1813 of yacc.c */
-#line 2610 "conf_parser.y"
+#line 2588 "conf_parser.y"
{
ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
}
@@ -6066,7 +6044,7 @@ yyreduce:
case 501:
/* Line 1813 of yacc.c */
-#line 2615 "conf_parser.y"
+#line 2593 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
@@ -6075,7 +6053,7 @@ yyreduce:
case 502:
/* Line 1813 of yacc.c */
-#line 2621 "conf_parser.y"
+#line 2599 "conf_parser.y"
{
if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
{
@@ -6089,7 +6067,7 @@ yyreduce:
case 503:
/* Line 1813 of yacc.c */
-#line 2632 "conf_parser.y"
+#line 2610 "conf_parser.y"
{
ConfigFileEntry.invisible_on_connect = yylval.number;
}
@@ -6097,7 +6075,7 @@ yyreduce:
case 504:
/* Line 1813 of yacc.c */
-#line 2637 "conf_parser.y"
+#line 2615 "conf_parser.y"
{
ConfigFileEntry.warn_no_nline = yylval.number;
}
@@ -6105,7 +6083,7 @@ yyreduce:
case 505:
/* Line 1813 of yacc.c */
-#line 2642 "conf_parser.y"
+#line 2620 "conf_parser.y"
{
ConfigFileEntry.stats_e_disabled = yylval.number;
}
@@ -6113,7 +6091,7 @@ yyreduce:
case 506:
/* Line 1813 of yacc.c */
-#line 2647 "conf_parser.y"
+#line 2625 "conf_parser.y"
{
ConfigFileEntry.stats_o_oper_only = yylval.number;
}
@@ -6121,7 +6099,7 @@ yyreduce:
case 507:
/* Line 1813 of yacc.c */
-#line 2652 "conf_parser.y"
+#line 2630 "conf_parser.y"
{
ConfigFileEntry.stats_P_oper_only = yylval.number;
}
@@ -6129,7 +6107,7 @@ yyreduce:
case 508:
/* Line 1813 of yacc.c */
-#line 2657 "conf_parser.y"
+#line 2635 "conf_parser.y"
{
ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
}
@@ -6137,7 +6115,7 @@ yyreduce:
case 509:
/* Line 1813 of yacc.c */
-#line 2660 "conf_parser.y"
+#line 2638 "conf_parser.y"
{
ConfigFileEntry.stats_k_oper_only = 1;
}
@@ -6145,7 +6123,7 @@ yyreduce:
case 510:
/* Line 1813 of yacc.c */
-#line 2665 "conf_parser.y"
+#line 2643 "conf_parser.y"
{
ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
}
@@ -6153,7 +6131,7 @@ yyreduce:
case 511:
/* Line 1813 of yacc.c */
-#line 2668 "conf_parser.y"
+#line 2646 "conf_parser.y"
{
ConfigFileEntry.stats_i_oper_only = 1;
}
@@ -6161,7 +6139,7 @@ yyreduce:
case 512:
/* Line 1813 of yacc.c */
-#line 2673 "conf_parser.y"
+#line 2651 "conf_parser.y"
{
ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
}
@@ -6169,7 +6147,7 @@ yyreduce:
case 513:
/* Line 1813 of yacc.c */
-#line 2678 "conf_parser.y"
+#line 2656 "conf_parser.y"
{
ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
}
@@ -6177,7 +6155,7 @@ yyreduce:
case 514:
/* Line 1813 of yacc.c */
-#line 2683 "conf_parser.y"
+#line 2661 "conf_parser.y"
{
ConfigFileEntry.opers_bypass_callerid = yylval.number;
}
@@ -6185,7 +6163,7 @@ yyreduce:
case 515:
/* Line 1813 of yacc.c */
-#line 2688 "conf_parser.y"
+#line 2666 "conf_parser.y"
{
ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
}
@@ -6193,7 +6171,7 @@ yyreduce:
case 516:
/* Line 1813 of yacc.c */
-#line 2693 "conf_parser.y"
+#line 2671 "conf_parser.y"
{
ConfigFileEntry.short_motd = yylval.number;
}
@@ -6201,7 +6179,7 @@ yyreduce:
case 517:
/* Line 1813 of yacc.c */
-#line 2698 "conf_parser.y"
+#line 2676 "conf_parser.y"
{
ConfigFileEntry.no_oper_flood = yylval.number;
}
@@ -6209,7 +6187,7 @@ yyreduce:
case 518:
/* Line 1813 of yacc.c */
-#line 2703 "conf_parser.y"
+#line 2681 "conf_parser.y"
{
ConfigFileEntry.true_no_oper_flood = yylval.number;
}
@@ -6217,7 +6195,7 @@ yyreduce:
case 519:
/* Line 1813 of yacc.c */
-#line 2708 "conf_parser.y"
+#line 2686 "conf_parser.y"
{
ConfigFileEntry.oper_pass_resv = yylval.number;
}
@@ -6225,7 +6203,7 @@ yyreduce:
case 520:
/* Line 1813 of yacc.c */
-#line 2713 "conf_parser.y"
+#line 2691 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -6239,7 +6217,7 @@ yyreduce:
case 521:
/* Line 1813 of yacc.c */
-#line 2724 "conf_parser.y"
+#line 2702 "conf_parser.y"
{
ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
}
@@ -6247,7 +6225,7 @@ yyreduce:
case 522:
/* Line 1813 of yacc.c */
-#line 2729 "conf_parser.y"
+#line 2707 "conf_parser.y"
{
ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
}
@@ -6255,7 +6233,7 @@ yyreduce:
case 523:
/* Line 1813 of yacc.c */
-#line 2734 "conf_parser.y"
+#line 2712 "conf_parser.y"
{
ConfigFileEntry.use_egd = yylval.number;
}
@@ -6263,7 +6241,7 @@ yyreduce:
case 524:
/* Line 1813 of yacc.c */
-#line 2739 "conf_parser.y"
+#line 2717 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -6275,7 +6253,7 @@ yyreduce:
case 525:
/* Line 1813 of yacc.c */
-#line 2748 "conf_parser.y"
+#line 2726 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2 && valid_servname(yylval.string))
{
@@ -6287,7 +6265,7 @@ yyreduce:
case 526:
/* Line 1813 of yacc.c */
-#line 2757 "conf_parser.y"
+#line 2735 "conf_parser.y"
{
ConfigFileEntry.ping_cookie = yylval.number;
}
@@ -6295,7 +6273,7 @@ yyreduce:
case 527:
/* Line 1813 of yacc.c */
-#line 2762 "conf_parser.y"
+#line 2740 "conf_parser.y"
{
ConfigFileEntry.disable_auth = yylval.number;
}
@@ -6303,7 +6281,7 @@ yyreduce:
case 528:
/* Line 1813 of yacc.c */
-#line 2767 "conf_parser.y"
+#line 2745 "conf_parser.y"
{
ConfigFileEntry.throttle_time = yylval.number;
}
@@ -6311,7 +6289,7 @@ yyreduce:
case 529:
/* Line 1813 of yacc.c */
-#line 2772 "conf_parser.y"
+#line 2750 "conf_parser.y"
{
ConfigFileEntry.oper_umodes = 0;
}
@@ -6319,7 +6297,7 @@ yyreduce:
case 533:
/* Line 1813 of yacc.c */
-#line 2778 "conf_parser.y"
+#line 2756 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_BOTS;
}
@@ -6327,7 +6305,7 @@ yyreduce:
case 534:
/* Line 1813 of yacc.c */
-#line 2781 "conf_parser.y"
+#line 2759 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_CCONN;
}
@@ -6335,7 +6313,7 @@ yyreduce:
case 535:
/* Line 1813 of yacc.c */
-#line 2784 "conf_parser.y"
+#line 2762 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
}
@@ -6343,7 +6321,7 @@ yyreduce:
case 536:
/* Line 1813 of yacc.c */
-#line 2787 "conf_parser.y"
+#line 2765 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_DEAF;
}
@@ -6351,7 +6329,7 @@ yyreduce:
case 537:
/* Line 1813 of yacc.c */
-#line 2790 "conf_parser.y"
+#line 2768 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
}
@@ -6359,7 +6337,7 @@ yyreduce:
case 538:
/* Line 1813 of yacc.c */
-#line 2793 "conf_parser.y"
+#line 2771 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_FULL;
}
@@ -6367,7 +6345,7 @@ yyreduce:
case 539:
/* Line 1813 of yacc.c */
-#line 2796 "conf_parser.y"
+#line 2774 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_HIDDEN;
}
@@ -6375,7 +6353,7 @@ yyreduce:
case 540:
/* Line 1813 of yacc.c */
-#line 2799 "conf_parser.y"
+#line 2777 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_SKILL;
}
@@ -6383,7 +6361,7 @@ yyreduce:
case 541:
/* Line 1813 of yacc.c */
-#line 2802 "conf_parser.y"
+#line 2780 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
}
@@ -6391,7 +6369,7 @@ yyreduce:
case 542:
/* Line 1813 of yacc.c */
-#line 2805 "conf_parser.y"
+#line 2783 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_REJ;
}
@@ -6399,7 +6377,7 @@ yyreduce:
case 543:
/* Line 1813 of yacc.c */
-#line 2808 "conf_parser.y"
+#line 2786 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
}
@@ -6407,7 +6385,7 @@ yyreduce:
case 544:
/* Line 1813 of yacc.c */
-#line 2811 "conf_parser.y"
+#line 2789 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_SPY;
}
@@ -6415,7 +6393,7 @@ yyreduce:
case 545:
/* Line 1813 of yacc.c */
-#line 2814 "conf_parser.y"
+#line 2792 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
}
@@ -6423,7 +6401,7 @@ yyreduce:
case 546:
/* Line 1813 of yacc.c */
-#line 2817 "conf_parser.y"
+#line 2795 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
}
@@ -6431,7 +6409,7 @@ yyreduce:
case 547:
/* Line 1813 of yacc.c */
-#line 2820 "conf_parser.y"
+#line 2798 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
}
@@ -6439,7 +6417,7 @@ yyreduce:
case 548:
/* Line 1813 of yacc.c */
-#line 2823 "conf_parser.y"
+#line 2801 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
}
@@ -6447,7 +6425,7 @@ yyreduce:
case 549:
/* Line 1813 of yacc.c */
-#line 2826 "conf_parser.y"
+#line 2804 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
}
@@ -6455,7 +6433,7 @@ yyreduce:
case 550:
/* Line 1813 of yacc.c */
-#line 2829 "conf_parser.y"
+#line 2807 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
}
@@ -6463,7 +6441,7 @@ yyreduce:
case 551:
/* Line 1813 of yacc.c */
-#line 2832 "conf_parser.y"
+#line 2810 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
}
@@ -6471,7 +6449,7 @@ yyreduce:
case 552:
/* Line 1813 of yacc.c */
-#line 2835 "conf_parser.y"
+#line 2813 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
}
@@ -6479,7 +6457,7 @@ yyreduce:
case 553:
/* Line 1813 of yacc.c */
-#line 2840 "conf_parser.y"
+#line 2818 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes = 0;
}
@@ -6487,7 +6465,7 @@ yyreduce:
case 557:
/* Line 1813 of yacc.c */
-#line 2846 "conf_parser.y"
+#line 2824 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
}
@@ -6495,7 +6473,7 @@ yyreduce:
case 558:
/* Line 1813 of yacc.c */
-#line 2849 "conf_parser.y"
+#line 2827 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
}
@@ -6503,7 +6481,7 @@ yyreduce:
case 559:
/* Line 1813 of yacc.c */
-#line 2852 "conf_parser.y"
+#line 2830 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
}
@@ -6511,7 +6489,7 @@ yyreduce:
case 560:
/* Line 1813 of yacc.c */
-#line 2855 "conf_parser.y"
+#line 2833 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
}
@@ -6519,7 +6497,7 @@ yyreduce:
case 561:
/* Line 1813 of yacc.c */
-#line 2858 "conf_parser.y"
+#line 2836 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
}
@@ -6527,7 +6505,7 @@ yyreduce:
case 562:
/* Line 1813 of yacc.c */
-#line 2861 "conf_parser.y"
+#line 2839 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
}
@@ -6535,7 +6513,7 @@ yyreduce:
case 563:
/* Line 1813 of yacc.c */
-#line 2864 "conf_parser.y"
+#line 2842 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
}
@@ -6543,7 +6521,7 @@ yyreduce:
case 564:
/* Line 1813 of yacc.c */
-#line 2867 "conf_parser.y"
+#line 2845 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_HIDDEN;
}
@@ -6551,7 +6529,7 @@ yyreduce:
case 565:
/* Line 1813 of yacc.c */
-#line 2870 "conf_parser.y"
+#line 2848 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
}
@@ -6559,7 +6537,7 @@ yyreduce:
case 566:
/* Line 1813 of yacc.c */
-#line 2873 "conf_parser.y"
+#line 2851 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
}
@@ -6567,7 +6545,7 @@ yyreduce:
case 567:
/* Line 1813 of yacc.c */
-#line 2876 "conf_parser.y"
+#line 2854 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
}
@@ -6575,7 +6553,7 @@ yyreduce:
case 568:
/* Line 1813 of yacc.c */
-#line 2879 "conf_parser.y"
+#line 2857 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
}
@@ -6583,7 +6561,7 @@ yyreduce:
case 569:
/* Line 1813 of yacc.c */
-#line 2882 "conf_parser.y"
+#line 2860 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
}
@@ -6591,7 +6569,7 @@ yyreduce:
case 570:
/* Line 1813 of yacc.c */
-#line 2885 "conf_parser.y"
+#line 2863 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
}
@@ -6599,7 +6577,7 @@ yyreduce:
case 571:
/* Line 1813 of yacc.c */
-#line 2888 "conf_parser.y"
+#line 2866 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
}
@@ -6607,7 +6585,7 @@ yyreduce:
case 572:
/* Line 1813 of yacc.c */
-#line 2891 "conf_parser.y"
+#line 2869 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
}
@@ -6615,7 +6593,7 @@ yyreduce:
case 573:
/* Line 1813 of yacc.c */
-#line 2894 "conf_parser.y"
+#line 2872 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
}
@@ -6623,7 +6601,7 @@ yyreduce:
case 574:
/* Line 1813 of yacc.c */
-#line 2897 "conf_parser.y"
+#line 2875 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
}
@@ -6631,7 +6609,7 @@ yyreduce:
case 575:
/* Line 1813 of yacc.c */
-#line 2900 "conf_parser.y"
+#line 2878 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
}
@@ -6639,7 +6617,7 @@ yyreduce:
case 576:
/* Line 1813 of yacc.c */
-#line 2903 "conf_parser.y"
+#line 2881 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
}
@@ -6647,7 +6625,7 @@ yyreduce:
case 577:
/* Line 1813 of yacc.c */
-#line 2908 "conf_parser.y"
+#line 2886 "conf_parser.y"
{
ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
}
@@ -6655,7 +6633,7 @@ yyreduce:
case 578:
/* Line 1813 of yacc.c */
-#line 2913 "conf_parser.y"
+#line 2891 "conf_parser.y"
{
ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
}
@@ -6663,7 +6641,7 @@ yyreduce:
case 579:
/* Line 1813 of yacc.c */
-#line 2918 "conf_parser.y"
+#line 2896 "conf_parser.y"
{
ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
}
@@ -6671,7 +6649,7 @@ yyreduce:
case 598:
/* Line 1813 of yacc.c */
-#line 2941 "conf_parser.y"
+#line 2919 "conf_parser.y"
{
ConfigChannel.disable_fake_channels = yylval.number;
}
@@ -6679,7 +6657,7 @@ yyreduce:
case 599:
/* Line 1813 of yacc.c */
-#line 2946 "conf_parser.y"
+#line 2924 "conf_parser.y"
{
ConfigChannel.restrict_channels = yylval.number;
}
@@ -6687,7 +6665,7 @@ yyreduce:
case 600:
/* Line 1813 of yacc.c */
-#line 2951 "conf_parser.y"
+#line 2929 "conf_parser.y"
{
ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
}
@@ -6695,7 +6673,7 @@ yyreduce:
case 601:
/* Line 1813 of yacc.c */
-#line 2956 "conf_parser.y"
+#line 2934 "conf_parser.y"
{
ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
}
@@ -6703,7 +6681,7 @@ yyreduce:
case 602:
/* Line 1813 of yacc.c */
-#line 2961 "conf_parser.y"
+#line 2939 "conf_parser.y"
{
ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
}
@@ -6711,7 +6689,7 @@ yyreduce:
case 603:
/* Line 1813 of yacc.c */
-#line 2966 "conf_parser.y"
+#line 2944 "conf_parser.y"
{
ConfigChannel.max_chans_per_oper = (yyvsp[(3) - (4)].number);
}
@@ -6719,7 +6697,7 @@ yyreduce:
case 604:
/* Line 1813 of yacc.c */
-#line 2971 "conf_parser.y"
+#line 2949 "conf_parser.y"
{
ConfigChannel.quiet_on_ban = yylval.number;
}
@@ -6727,7 +6705,7 @@ yyreduce:
case 605:
/* Line 1813 of yacc.c */
-#line 2976 "conf_parser.y"
+#line 2954 "conf_parser.y"
{
ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
}
@@ -6735,7 +6713,7 @@ yyreduce:
case 606:
/* Line 1813 of yacc.c */
-#line 2981 "conf_parser.y"
+#line 2959 "conf_parser.y"
{
ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
}
@@ -6743,7 +6721,7 @@ yyreduce:
case 607:
/* Line 1813 of yacc.c */
-#line 2986 "conf_parser.y"
+#line 2964 "conf_parser.y"
{
ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
}
@@ -6751,7 +6729,7 @@ yyreduce:
case 608:
/* Line 1813 of yacc.c */
-#line 2991 "conf_parser.y"
+#line 2969 "conf_parser.y"
{
ConfigChannel.no_create_on_split = yylval.number;
}
@@ -6759,7 +6737,7 @@ yyreduce:
case 609:
/* Line 1813 of yacc.c */
-#line 2996 "conf_parser.y"
+#line 2974 "conf_parser.y"
{
ConfigChannel.no_join_on_split = yylval.number;
}
@@ -6767,7 +6745,7 @@ yyreduce:
case 610:
/* Line 1813 of yacc.c */
-#line 3001 "conf_parser.y"
+#line 2979 "conf_parser.y"
{
GlobalSetOptions.joinfloodcount = yylval.number;
}
@@ -6775,7 +6753,7 @@ yyreduce:
case 611:
/* Line 1813 of yacc.c */
-#line 3006 "conf_parser.y"
+#line 2984 "conf_parser.y"
{
GlobalSetOptions.joinfloodtime = yylval.number;
}
@@ -6783,7 +6761,7 @@ yyreduce:
case 622:
/* Line 1813 of yacc.c */
-#line 3024 "conf_parser.y"
+#line 3002 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ConfigServerHide.flatten_links = yylval.number;
@@ -6792,7 +6770,7 @@ yyreduce:
case 623:
/* Line 1813 of yacc.c */
-#line 3030 "conf_parser.y"
+#line 3008 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ConfigServerHide.hide_servers = yylval.number;
@@ -6801,7 +6779,7 @@ yyreduce:
case 624:
/* Line 1813 of yacc.c */
-#line 3036 "conf_parser.y"
+#line 3014 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -6813,7 +6791,7 @@ yyreduce:
case 625:
/* Line 1813 of yacc.c */
-#line 3045 "conf_parser.y"
+#line 3023 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -6830,7 +6808,7 @@ yyreduce:
case 626:
/* Line 1813 of yacc.c */
-#line 3059 "conf_parser.y"
+#line 3037 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ConfigServerHide.hidden = yylval.number;
@@ -6839,7 +6817,7 @@ yyreduce:
case 627:
/* Line 1813 of yacc.c */
-#line 3065 "conf_parser.y"
+#line 3043 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ConfigServerHide.hide_server_ips = yylval.number;
@@ -6848,7 +6826,7 @@ yyreduce:
/* Line 1813 of yacc.c */
-#line 6852 "conf_parser.c"
+#line 6830 "conf_parser.c"
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
diff --git a/src/conf_parser.h b/src/conf_parser.h
index ca2f469..c627256 100644
--- a/src/conf_parser.h
+++ b/src/conf_parser.h
@@ -480,7 +480,7 @@ extern int yydebug;
typedef union YYSTYPE
{
/* Line 2077 of yacc.c */
-#line 110 "conf_parser.y"
+#line 109 "conf_parser.y"
int number;
char *string;
diff --git a/src/conf_parser.y b/src/conf_parser.y
index 293376e..8080f77 100644
--- a/src/conf_parser.y
+++ b/src/conf_parser.y
@@ -33,6 +33,7 @@
#include "ircd.h"
#include "list.h"
#include "conf.h"
+#include "conf_class.h"
#include "event.h"
#include "log.h"
#include "client.h" /* for UMODE_ALL only */
@@ -58,9 +59,7 @@
int yylex(void);
static char *class_name = NULL;
-static struct ConfItem *yy_conf = NULL;
-static struct AccessItem *yy_aconf = NULL;
-static struct MatchItem *yy_match_item = NULL;
+static struct MaskItem *yy_conf = NULL;
static struct ClassItem *yy_class = NULL;
static char *yy_class_name = NULL;
@@ -869,9 +868,8 @@ oper_entry: OPERATOR
{
if (conf_parser_ctx.pass == 2)
{
- yy_conf = make_conf_item(OPER_TYPE);
- yy_aconf = map_to_conf(yy_conf);
- SetConfEncrypted(yy_aconf); /* Yes, the default is encrypted */
+ yy_conf = conf_make(CONF_OPER);
+ SetConfEncrypted(yy_conf); /* Yes, the default is encrypted */
}
else
{
@@ -894,44 +892,41 @@ oper_entry: OPERATOR
DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
{
- struct AccessItem *new_aconf;
- struct ConfItem *new_conf;
+ struct MaskItem *new_conf;
yy_tmp = ptr->data;
- new_conf = make_conf_item(OPER_TYPE);
- new_aconf = (struct AccessItem *)map_to_conf(new_conf);
-
- new_aconf->flags = yy_aconf->flags;
+ new_conf = conf_make(CONF_OPER);
+ new_conf->flags = yy_conf->flags;
if (yy_conf->name != NULL)
DupString(new_conf->name, yy_conf->name);
if (yy_tmp->user != NULL)
- DupString(new_aconf->user, yy_tmp->user);
+ DupString(new_conf->user, yy_tmp->user);
else
- DupString(new_aconf->user, "*");
+ DupString(new_conf->user, "*");
if (yy_tmp->host != NULL)
- DupString(new_aconf->host, yy_tmp->host);
+ DupString(new_conf->host, yy_tmp->host);
else
- DupString(new_aconf->host, "*");
+ DupString(new_conf->host, "*");
- new_aconf->type = parse_netmask(new_aconf->host, &new_aconf->addr,
- &new_aconf->bits);
+ new_conf->htype = parse_netmask(new_conf->host, &new_conf->addr,
+ &new_conf->bits);
conf_add_class_to_conf(new_conf, class_name);
- if (yy_aconf->passwd != NULL)
- DupString(new_aconf->passwd, yy_aconf->passwd);
+ if (yy_conf->passwd != NULL)
+ DupString(new_conf->passwd, yy_conf->passwd);
- new_aconf->port = yy_aconf->port;
+ new_conf->port = yy_conf->port;
#ifdef HAVE_LIBCRYPTO
- if (yy_aconf->rsa_public_key_file != NULL)
+ if (yy_conf->rsa_public_key_file != NULL)
{
BIO *file;
- DupString(new_aconf->rsa_public_key_file,
- yy_aconf->rsa_public_key_file);
+ DupString(new_conf->rsa_public_key_file,
+ yy_conf->rsa_public_key_file);
- file = BIO_new_file(yy_aconf->rsa_public_key_file, "r");
- new_aconf->rsa_public_key = PEM_read_bio_RSA_PUBKEY(file,
+ file = BIO_new_file(yy_conf->rsa_public_key_file, "r");
+ new_conf->rsa_public_key = PEM_read_bio_RSA_PUBKEY(file,
NULL, 0, NULL);
BIO_set_close(file, BIO_CLOSE);
BIO_free(file);
@@ -939,7 +934,7 @@ oper_entry: OPERATOR
#endif
#ifdef HAVE_LIBCRYPTO
- if (yy_tmp->name && (yy_tmp->passwd || yy_aconf->rsa_public_key)
+ if (yy_tmp->name && (yy_tmp->passwd || yy_conf->rsa_public_key)
&& yy_tmp->host)
#else
if (yy_tmp->name && yy_tmp->passwd && yy_tmp->host)
@@ -955,8 +950,6 @@ oper_entry: OPERATOR
}
yy_conf = NULL;
- yy_aconf = NULL;
-
MyFree(class_name);
class_name = NULL;
@@ -994,13 +987,13 @@ oper_user: USER '=' QSTRING ';'
split_nuh(&nuh);
- if (yy_aconf->user == NULL)
+ if (yy_conf->user == NULL)
{
- DupString(yy_aconf->user, userbuf);
- DupString(yy_aconf->host, hostbuf);
+ DupString(yy_conf->user, userbuf);
+ DupString(yy_conf->host, hostbuf);
- yy_aconf->type = parse_netmask(yy_aconf->host, &yy_aconf->addr,
- &yy_aconf->bits);
+ yy_conf->htype = parse_netmask(yy_conf->host, &yy_conf->addr,
+ &yy_conf->bits);
}
else
{
@@ -1018,11 +1011,11 @@ oper_password: PASSWORD '=' QSTRING ';'
{
if (conf_parser_ctx.pass == 2)
{
- if (yy_aconf->passwd != NULL)
- memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
+ if (yy_conf->passwd != NULL)
+ memset(yy_conf->passwd, 0, strlen(yy_conf->passwd));
- MyFree(yy_aconf->passwd);
- DupString(yy_aconf->passwd, yylval.string);
+ MyFree(yy_conf->passwd);
+ DupString(yy_conf->passwd, yylval.string);
}
};
@@ -1031,9 +1024,9 @@ oper_encrypted: ENCRYPTED '=' TBOOL ';'
if (conf_parser_ctx.pass == 2)
{
if (yylval.number)
- SetConfEncrypted(yy_aconf);
+ SetConfEncrypted(yy_conf);
else
- ClearConfEncrypted(yy_aconf);
+ ClearConfEncrypted(yy_conf);
}
};
@@ -1044,19 +1037,19 @@ oper_rsa_public_key_file: RSA_PUBLIC_KEY_FILE '=' QSTRING ';'
{
BIO *file;
- if (yy_aconf->rsa_public_key != NULL)
+ if (yy_conf->rsa_public_key != NULL)
{
- RSA_free(yy_aconf->rsa_public_key);
- yy_aconf->rsa_public_key = NULL;
+ RSA_free(yy_conf->rsa_public_key);
+ yy_conf->rsa_public_key = NULL;
}
- if (yy_aconf->rsa_public_key_file != NULL)
+ if (yy_conf->rsa_public_key_file != NULL)
{
- MyFree(yy_aconf->rsa_public_key_file);
- yy_aconf->rsa_public_key_file = NULL;
+ MyFree(yy_conf->rsa_public_key_file);
+ yy_conf->rsa_public_key_file = NULL;
}
- DupString(yy_aconf->rsa_public_key_file, yylval.string);
+ DupString(yy_conf->rsa_public_key_file, yylval.string);
file = BIO_new_file(yylval.string, "r");
if (file == NULL)
@@ -1065,9 +1058,9 @@ oper_rsa_public_key_file: RSA_PUBLIC_KEY_FILE '=' QSTRING ';'
break;
}
- yy_aconf->rsa_public_key = PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
+ yy_conf->rsa_public_key = PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
- if (yy_aconf->rsa_public_key == NULL)
+ if (yy_conf->rsa_public_key == NULL)
{
yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
break;
@@ -1091,175 +1084,175 @@ oper_class: CLASS '=' QSTRING ';'
oper_umodes: T_UMODES
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes = 0;
+ yy_conf->modes = 0;
} '=' oper_umodes_items ';' ;
oper_umodes_items: oper_umodes_items ',' oper_umodes_item | oper_umodes_item;
oper_umodes_item: T_BOTS
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_BOTS;
+ yy_conf->modes |= UMODE_BOTS;
} | T_CCONN
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_CCONN;
+ yy_conf->modes |= UMODE_CCONN;
} | T_CCONN_FULL
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_CCONN_FULL;
+ yy_conf->modes |= UMODE_CCONN_FULL;
} | T_DEAF
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_DEAF;
+ yy_conf->modes |= UMODE_DEAF;
} | T_DEBUG
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_DEBUG;
+ yy_conf->modes |= UMODE_DEBUG;
} | T_FULL
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_FULL;
+ yy_conf->modes |= UMODE_FULL;
} | HIDDEN
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_HIDDEN;
+ yy_conf->modes |= UMODE_HIDDEN;
} | T_SKILL
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_SKILL;
+ yy_conf->modes |= UMODE_SKILL;
} | T_NCHANGE
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_NCHANGE;
+ yy_conf->modes |= UMODE_NCHANGE;
} | T_REJ
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_REJ;
+ yy_conf->modes |= UMODE_REJ;
} | T_UNAUTH
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_UNAUTH;
+ yy_conf->modes |= UMODE_UNAUTH;
} | T_SPY
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_SPY;
+ yy_conf->modes |= UMODE_SPY;
} | T_EXTERNAL
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_EXTERNAL;
+ yy_conf->modes |= UMODE_EXTERNAL;
} | T_OPERWALL
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_OPERWALL;
+ yy_conf->modes |= UMODE_OPERWALL;
} | T_SERVNOTICE
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_SERVNOTICE;
+ yy_conf->modes |= UMODE_SERVNOTICE;
} | T_INVISIBLE
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_INVISIBLE;
+ yy_conf->modes |= UMODE_INVISIBLE;
} | T_WALLOP
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_WALLOP;
+ yy_conf->modes |= UMODE_WALLOP;
} | T_SOFTCALLERID
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_SOFTCALLERID;
+ yy_conf->modes |= UMODE_SOFTCALLERID;
} | T_CALLERID
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_CALLERID;
+ yy_conf->modes |= UMODE_CALLERID;
} | T_LOCOPS
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->modes |= UMODE_LOCOPS;
+ yy_conf->modes |= UMODE_LOCOPS;
};
oper_flags: IRCD_FLAGS
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port = 0;
+ yy_conf->port = 0;
} '=' oper_flags_items ';';
oper_flags_items: oper_flags_items ',' oper_flags_item | oper_flags_item;
oper_flags_item: GLOBAL_KILL
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
+ yy_conf->port |= OPER_FLAG_GLOBAL_KILL;
} | REMOTE
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_REMOTE;
+ yy_conf->port |= OPER_FLAG_REMOTE;
} | KLINE
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_K;
+ yy_conf->port |= OPER_FLAG_K;
} | UNKLINE
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_UNKLINE;
+ yy_conf->port |= OPER_FLAG_UNKLINE;
} | T_DLINE
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_DLINE;
+ yy_conf->port |= OPER_FLAG_DLINE;
} | T_UNDLINE
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_UNDLINE;
+ yy_conf->port |= OPER_FLAG_UNDLINE;
} | XLINE
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_X;
+ yy_conf->port |= OPER_FLAG_X;
} | GLINE
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_GLINE;
+ yy_conf->port |= OPER_FLAG_GLINE;
} | DIE
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_DIE;
+ yy_conf->port |= OPER_FLAG_DIE;
} | T_RESTART
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_RESTART;
+ yy_conf->port |= OPER_FLAG_RESTART;
} | REHASH
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_REHASH;
+ yy_conf->port |= OPER_FLAG_REHASH;
} | ADMIN
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_ADMIN;
+ yy_conf->port |= OPER_FLAG_ADMIN;
} | NICK_CHANGES
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_N;
+ yy_conf->port |= OPER_FLAG_N;
} | T_OPERWALL
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_OPERWALL;
+ yy_conf->port |= OPER_FLAG_OPERWALL;
} | T_GLOBOPS
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_GLOBOPS;
+ yy_conf->port |= OPER_FLAG_GLOBOPS;
} | OPER_SPY_T
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_OPER_SPY;
+ yy_conf->port |= OPER_FLAG_OPER_SPY;
} | REMOTEBAN
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_REMOTEBAN;
+ yy_conf->port |= OPER_FLAG_REMOTEBAN;
} | T_SET
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_SET;
+ yy_conf->port |= OPER_FLAG_SET;
} | MODULE
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port |= OPER_FLAG_MODULE;
+ yy_conf->port |= OPER_FLAG_MODULE;
};
@@ -1270,44 +1263,40 @@ class_entry: CLASS
{
if (conf_parser_ctx.pass == 1)
{
- yy_conf = make_conf_item(CLASS_TYPE);
- yy_class = map_to_conf(yy_conf);
+ yy_class = class_make();
}
} '{' class_items '}' ';'
{
if (conf_parser_ctx.pass == 1)
{
- struct ConfItem *cconf = NULL;
struct ClassItem *class = NULL;
if (yy_class_name == NULL)
- delete_conf_item(yy_conf);
+ class_free(yy_class);
else
{
- cconf = find_exact_name_conf(CLASS_TYPE, NULL, yy_class_name, NULL, NULL);
+ class = class_find(yy_class_name, 0);
- if (cconf != NULL) /* The class existed already */
+ if (class != NULL) /* The class existed already */
{
int user_count = 0;
- rebuild_cidr_class(cconf, yy_class);
-
- class = map_to_conf(cconf);
+ rebuild_cidr_class(class, yy_class);
- user_count = class->curr_user_count;
+ user_count = class->ref_count;
memcpy(class, yy_class, sizeof(*class));
- class->curr_user_count = user_count;
+ class->ref_count = user_count;
class->active = 1;
- delete_conf_item(yy_conf);
+ class_free(yy_class);
- MyFree(cconf->name); /* Allows case change of class name */
- cconf->name = yy_class_name;
+ MyFree(class->name); /* Allows case change of class name */
+ class->name = yy_class_name;
}
else /* Brand new class */
{
- MyFree(yy_conf->name); /* just in case it was allocated */
- yy_conf->name = yy_class_name;
+ MyFree(yy_class->name); /* just in case it was allocated */
+ yy_class->name = yy_class_name;
yy_class->active = 1;
}
}
@@ -1526,8 +1515,7 @@ auth_entry: IRCD_AUTH
{
if (conf_parser_ctx.pass == 2)
{
- yy_conf = make_conf_item(CLIENT_TYPE);
- yy_aconf = map_to_conf(yy_conf);
+ yy_conf = conf_make(CONF_CLIENT);
}
else
{
@@ -1541,45 +1529,41 @@ auth_entry: IRCD_AUTH
struct CollectItem *yy_tmp = NULL;
dlink_node *ptr = NULL, *next_ptr = NULL;
- if (yy_aconf->user && yy_aconf->host)
+ if (yy_conf->user && yy_conf->host)
{
conf_add_class_to_conf(yy_conf, class_name);
- add_conf_by_address(CONF_CLIENT, yy_aconf);
+ add_conf_by_address(CONF_CLIENT, yy_conf);
}
else
- delete_conf_item(yy_conf);
+ conf_free(yy_conf);
/* copy over settings from first struct */
DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
{
- struct AccessItem *new_aconf;
- struct ConfItem *new_conf;
-
- new_conf = make_conf_item(CLIENT_TYPE);
- new_aconf = map_to_conf(new_conf);
+ struct MaskItem *new_conf = conf_make(CONF_CLIENT);
yy_tmp = ptr->data;
assert(yy_tmp->user && yy_tmp->host);
- if (yy_aconf->passwd != NULL)
- DupString(new_aconf->passwd, yy_aconf->passwd);
+ if (yy_conf->passwd != NULL)
+ DupString(new_conf->passwd, yy_conf->passwd);
if (yy_conf->name != NULL)
DupString(new_conf->name, yy_conf->name);
- if (yy_aconf->passwd != NULL)
- DupString(new_aconf->passwd, yy_aconf->passwd);
+ if (yy_conf->passwd != NULL)
+ DupString(new_conf->passwd, yy_conf->passwd);
- new_aconf->flags = yy_aconf->flags;
- new_aconf->port = yy_aconf->port;
+ new_conf->flags = yy_conf->flags;
+ new_conf->port = yy_conf->port;
- DupString(new_aconf->user, yy_tmp->user);
- collapse(new_aconf->user);
+ DupString(new_conf->user, yy_tmp->user);
+ collapse(new_conf->user);
- DupString(new_aconf->host, yy_tmp->host);
- collapse(new_aconf->host);
+ DupString(new_conf->host, yy_tmp->host);
+ collapse(new_conf->host);
conf_add_class_to_conf(new_conf, class_name);
- add_conf_by_address(CONF_CLIENT, new_aconf);
+ add_conf_by_address(CONF_CLIENT, new_conf);
dlinkDelete(&yy_tmp->node, &col_conf_list);
free_collect_item(yy_tmp);
}
@@ -1587,7 +1571,6 @@ auth_entry: IRCD_AUTH
MyFree(class_name);
class_name = NULL;
yy_conf = NULL;
- yy_aconf = NULL;
}
};
@@ -1614,10 +1597,10 @@ auth_user: USER '=' QSTRING ';'
split_nuh(&nuh);
- if (yy_aconf->user == NULL)
+ if (yy_conf->user == NULL)
{
- DupString(yy_aconf->user, userbuf);
- DupString(yy_aconf->host, hostbuf);
+ DupString(yy_conf->user, userbuf);
+ DupString(yy_conf->host, hostbuf);
}
else
{
@@ -1636,11 +1619,11 @@ auth_passwd: PASSWORD '=' QSTRING ';'
if (conf_parser_ctx.pass == 2)
{
/* be paranoid */
- if (yy_aconf->passwd != NULL)
- memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
+ if (yy_conf->passwd != NULL)
+ memset(yy_conf->passwd, 0, strlen(yy_conf->passwd));
- MyFree(yy_aconf->passwd);
- DupString(yy_aconf->passwd, yylval.string);
+ MyFree(yy_conf->passwd);
+ DupString(yy_conf->passwd, yylval.string);
}
};
@@ -1658,9 +1641,9 @@ auth_encrypted: ENCRYPTED '=' TBOOL ';'
if (conf_parser_ctx.pass == 2)
{
if (yylval.number)
- SetConfEncrypted(yy_aconf);
+ SetConfEncrypted(yy_conf);
else
- ClearConfEncrypted(yy_aconf);
+ ClearConfEncrypted(yy_conf);
}
};
@@ -1672,39 +1655,39 @@ auth_flags_items: auth_flags_items ',' auth_flags_item | auth_flags_item;
auth_flags_item: SPOOF_NOTICE
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
+ yy_conf->flags |= CONF_FLAGS_SPOOF_NOTICE;
} | EXCEED_LIMIT
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
+ yy_conf->flags |= CONF_FLAGS_NOLIMIT;
} | KLINE_EXEMPT
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
+ yy_conf->flags |= CONF_FLAGS_EXEMPTKLINE;
} | NEED_IDENT
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
+ yy_conf->flags |= CONF_FLAGS_NEED_IDENTD;
} | CAN_FLOOD
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
+ yy_conf->flags |= CONF_FLAGS_CAN_FLOOD;
} | NO_TILDE
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
+ yy_conf->flags |= CONF_FLAGS_NO_TILDE;
} | GLINE_EXEMPT
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
+ yy_conf->flags |= CONF_FLAGS_EXEMPTGLINE;
} | RESV_EXEMPT
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->flags |= CONF_FLAGS_EXEMPTRESV;
+ yy_conf->flags |= CONF_FLAGS_EXEMPTRESV;
} | NEED_PASSWORD
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
+ yy_conf->flags |= CONF_FLAGS_NEED_PASSWORD;
};
auth_spoof: SPOOF '=' QSTRING ';'
@@ -1716,7 +1699,7 @@ auth_spoof: SPOOF '=' QSTRING ';'
if (strlen(yylval.string) <= HOSTLEN && valid_hostname(yylval.string))
{
DupString(yy_conf->name, yylval.string);
- yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
+ yy_conf->flags |= CONF_FLAGS_SPOOF_IP;
}
else
{
@@ -1730,7 +1713,7 @@ auth_redir_serv: REDIRSERV '=' QSTRING ';'
{
if (conf_parser_ctx.pass == 2)
{
- yy_aconf->flags |= CONF_FLAGS_REDIR;
+ yy_conf->flags |= CONF_FLAGS_REDIR;
MyFree(yy_conf->name);
DupString(yy_conf->name, yylval.string);
}
@@ -1740,8 +1723,8 @@ auth_redir_port: REDIRPORT '=' NUMBER ';'
{
if (conf_parser_ctx.pass == 2)
{
- yy_aconf->flags |= CONF_FLAGS_REDIR;
- yy_aconf->port = $3;
+ yy_conf->flags |= CONF_FLAGS_REDIR;
+ yy_conf->port = $3;
}
};
@@ -1816,7 +1799,7 @@ service_name: NAME '=' QSTRING ';'
{
if (valid_servname(yylval.string))
{
- yy_conf = make_conf_item(SERVICE_TYPE);
+ yy_conf = conf_make(CONF_SERVICE);
DupString(yy_conf->name, yylval.string);
}
}
@@ -1829,9 +1812,8 @@ shared_entry: T_SHARED
{
if (conf_parser_ctx.pass == 2)
{
- yy_conf = make_conf_item(ULINE_TYPE);
- yy_match_item = map_to_conf(yy_conf);
- yy_match_item->action = SHARED_ALL;
+ yy_conf = conf_make(CONF_ULINE);
+ yy_conf->action = SHARED_ALL;
}
} '{' shared_items '}' ';'
{
@@ -1870,58 +1852,58 @@ shared_user: USER '=' QSTRING ';'
split_nuh(&nuh);
- DupString(yy_match_item->user, userbuf);
- DupString(yy_match_item->host, hostbuf);
+ DupString(yy_conf->user, userbuf);
+ DupString(yy_conf->host, hostbuf);
}
};
shared_type: TYPE
{
if (conf_parser_ctx.pass == 2)
- yy_match_item->action = 0;
+ yy_conf->action = 0;
} '=' shared_types ';' ;
shared_types: shared_types ',' shared_type_item | shared_type_item;
shared_type_item: KLINE
{
if (conf_parser_ctx.pass == 2)
- yy_match_item->action |= SHARED_KLINE;
+ yy_conf->action |= SHARED_KLINE;
} | UNKLINE
{
if (conf_parser_ctx.pass == 2)
- yy_match_item->action |= SHARED_UNKLINE;
+ yy_conf->action |= SHARED_UNKLINE;
} | T_DLINE
{
if (conf_parser_ctx.pass == 2)
- yy_match_item->action |= SHARED_DLINE;
+ yy_conf->action |= SHARED_DLINE;
} | T_UNDLINE
{
if (conf_parser_ctx.pass == 2)
- yy_match_item->action |= SHARED_UNDLINE;
+ yy_conf->action |= SHARED_UNDLINE;
} | XLINE
{
if (conf_parser_ctx.pass == 2)
- yy_match_item->action |= SHARED_XLINE;
+ yy_conf->action |= SHARED_XLINE;
} | T_UNXLINE
{
if (conf_parser_ctx.pass == 2)
- yy_match_item->action |= SHARED_UNXLINE;
+ yy_conf->action |= SHARED_UNXLINE;
} | RESV
{
if (conf_parser_ctx.pass == 2)
- yy_match_item->action |= SHARED_RESV;
+ yy_conf->action |= SHARED_RESV;
} | T_UNRESV
{
if (conf_parser_ctx.pass == 2)
- yy_match_item->action |= SHARED_UNRESV;
+ yy_conf->action |= SHARED_UNRESV;
} | T_LOCOPS
{
if (conf_parser_ctx.pass == 2)
- yy_match_item->action |= SHARED_LOCOPS;
+ yy_conf->action |= SHARED_LOCOPS;
} | T_ALL
{
if (conf_parser_ctx.pass == 2)
- yy_match_item->action = SHARED_ALL;
+ yy_conf->action = SHARED_ALL;
};
/***************************************************************************
@@ -1931,8 +1913,7 @@ cluster_entry: T_CLUSTER
{
if (conf_parser_ctx.pass == 2)
{
- yy_conf = make_conf_item(CLUSTER_TYPE);
- yy_conf->flags = SHARED_ALL;
+ yy_conf = conf_make(CONF_CLUSTER);
}
} '{' cluster_items '}' ';'
{
@@ -2009,11 +1990,10 @@ connect_entry: CONNECT
{
if (conf_parser_ctx.pass == 2)
{
- yy_conf = make_conf_item(SERVER_TYPE);
- yy_aconf = map_to_conf(yy_conf);
+ yy_conf = conf_make(CONF_SERVER);
/* defaults */
- yy_aconf->port = PORTNUM;
+ yy_conf->port = PORTNUM;
}
else
{
@@ -2024,18 +2004,18 @@ connect_entry: CONNECT
{
if (conf_parser_ctx.pass == 2)
{
- if (yy_aconf->host && yy_aconf->passwd && yy_aconf->spasswd)
+ if (yy_conf->host && yy_conf->passwd && yy_conf->spasswd)
{
if (conf_add_server(yy_conf, class_name) == -1)
- delete_conf_item(yy_conf);
+ conf_free(yy_conf);
}
else
{
if (yy_conf->name != NULL)
{
- if (yy_aconf->host == NULL)
+ if (yy_conf->host == NULL)
yyerror("Ignoring connect block -- missing host");
- else if (!yy_aconf->passwd || !yy_aconf->spasswd)
+ else if (!yy_conf->passwd || !yy_conf->spasswd)
yyerror("Ignoring connect block -- missing password");
}
@@ -2046,13 +2026,12 @@ connect_entry: CONNECT
* rewrite ASAP. make_conf_item() shouldn't really add things onto
* a doubly linked list immediately without any sanity checks! -Michael
*/
- delete_conf_item(yy_conf);
+ conf_free(yy_conf);
}
MyFree(class_name);
class_name = NULL;
yy_conf = NULL;
- yy_aconf = NULL;
}
};
@@ -2077,8 +2056,8 @@ connect_host: HOST '=' QSTRING ';'
{
if (conf_parser_ctx.pass == 2)
{
- MyFree(yy_aconf->host);
- DupString(yy_aconf->host, yylval.string);
+ MyFree(yy_conf->host);
+ DupString(yy_conf->host, yylval.string);
}
};
@@ -2100,9 +2079,9 @@ connect_vhost: VHOST '=' QSTRING ';'
{
assert(res != NULL);
- memcpy(&yy_aconf->bind, res->ai_addr, res->ai_addrlen);
- yy_aconf->bind.ss.ss_family = res->ai_family;
- yy_aconf->bind.ss_len = res->ai_addrlen;
+ memcpy(&yy_conf->bind, res->ai_addr, res->ai_addrlen);
+ yy_conf->bind.ss.ss_family = res->ai_family;
+ yy_conf->bind.ss_len = res->ai_addrlen;
freeaddrinfo(res);
}
}
@@ -2117,11 +2096,11 @@ connect_send_password: SEND_PASSWORD '=' QSTRING ';'
else if (strchr($3, ' ') != NULL)
yyerror("Server passwords cannot contain spaces");
else {
- if (yy_aconf->spasswd != NULL)
- memset(yy_aconf->spasswd, 0, strlen(yy_aconf->spasswd));
+ if (yy_conf->spasswd != NULL)
+ memset(yy_conf->spasswd, 0, strlen(yy_conf->spasswd));
- MyFree(yy_aconf->spasswd);
- DupString(yy_aconf->spasswd, yylval.string);
+ MyFree(yy_conf->spasswd);
+ DupString(yy_conf->spasswd, yylval.string);
}
}
};
@@ -2135,11 +2114,11 @@ connect_accept_password: ACCEPT_PASSWORD '=' QSTRING ';'
else if (strchr($3, ' ') != NULL)
yyerror("Server passwords cannot contain spaces");
else {
- if (yy_aconf->passwd != NULL)
- memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
+ if (yy_conf->passwd != NULL)
+ memset(yy_conf->passwd, 0, strlen(yy_conf->passwd));
- MyFree(yy_aconf->passwd);
- DupString(yy_aconf->passwd, yylval.string);
+ MyFree(yy_conf->passwd);
+ DupString(yy_conf->passwd, yylval.string);
}
}
};
@@ -2147,18 +2126,18 @@ connect_accept_password: ACCEPT_PASSWORD '=' QSTRING ';'
connect_port: PORT '=' NUMBER ';'
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->port = $3;
+ yy_conf->port = $3;
};
connect_aftype: AFTYPE '=' T_IPV4 ';'
{
if (conf_parser_ctx.pass == 2)
- yy_aconf->aftype = AF_INET;
+ yy_conf->aftype = AF_INET;
} | AFTYPE '=' T_IPV6 ';'
{
#ifdef IPV6
if (conf_parser_ctx.pass == 2)
- yy_aconf->aftype = AF_INET6;
+ yy_conf->aftype = AF_INET6;
#endif
};
@@ -2170,11 +2149,11 @@ connect_flags_items: connect_flags_items ',' connect_flags_item | connect_flags_
connect_flags_item: AUTOCONN
{
if (conf_parser_ctx.pass == 2)
- SetConfAllowAutoConn(yy_aconf);
+ SetConfAllowAutoConn(yy_conf);
} | T_SSL
{
if (conf_parser_ctx.pass == 2)
- SetConfSSL(yy_aconf);
+ SetConfSSL(yy_conf);
};
connect_encrypted: ENCRYPTED '=' TBOOL ';'
@@ -2182,9 +2161,9 @@ connect_encrypted: ENCRYPTED '=' TBOOL ';'
if (conf_parser_ctx.pass == 2)
{
if (yylval.number)
- yy_aconf->flags |= CONF_FLAGS_ENCRYPTED;
+ yy_conf->flags |= CONF_FLAGS_ENCRYPTED;
else
- yy_aconf->flags &= ~CONF_FLAGS_ENCRYPTED;
+ yy_conf->flags &= ~CONF_FLAGS_ENCRYPTED;
}
};
@@ -2195,7 +2174,7 @@ connect_hub_mask: HUB_MASK '=' QSTRING ';'
char *mask;
DupString(mask, yylval.string);
- dlinkAdd(mask, make_dlink_node(), &yy_aconf->hub_list);
+ dlinkAdd(mask, make_dlink_node(), &yy_conf->hub_list);
}
};
@@ -2206,7 +2185,7 @@ connect_leaf_mask: LEAF_MASK '=' QSTRING ';'
char *mask;
DupString(mask, yylval.string);
- dlinkAdd(mask, make_dlink_node(), &yy_aconf->leaf_list);
+ dlinkAdd(mask, make_dlink_node(), &yy_conf->leaf_list);
}
};
@@ -2224,8 +2203,8 @@ connect_ssl_cipher_list: T_SSL_CIPHER_LIST '=' QSTRING ';'
#ifdef HAVE_LIBCRYPTO
if (conf_parser_ctx.pass == 2)
{
- MyFree(yy_aconf->cipher_list);
- DupString(yy_aconf->cipher_list, yylval.string);
+ MyFree(yy_conf->cipher_list);
+ DupString(yy_conf->cipher_list, yylval.string);
}
#else
if (conf_parser_ctx.pass == 2)
@@ -2265,17 +2244,17 @@ kill_entry: KILL
break;
}
- yy_aconf = map_to_conf(make_conf_item(RKLINE_TYPE));
- yy_aconf->regexuser = exp_user;
- yy_aconf->regexhost = exp_host;
+ yy_conf = conf_make(CONF_RKLINE);
+ yy_conf->regexuser = exp_user;
+ yy_conf->regexhost = exp_host;
- DupString(yy_aconf->user, userbuf);
- DupString(yy_aconf->host, hostbuf);
+ DupString(yy_conf->user, userbuf);
+ DupString(yy_conf->host, hostbuf);
if (reasonbuf[0])
- DupString(yy_aconf->reason, reasonbuf);
+ DupString(yy_conf->reason, reasonbuf);
else
- DupString(yy_aconf->reason, "No reason");
+ DupString(yy_conf->reason, "No reason");
#else
ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: no PCRE support");
break;
@@ -2283,20 +2262,20 @@ kill_entry: KILL
}
else
{
- yy_aconf = map_to_conf(make_conf_item(KLINE_TYPE));
+ yy_conf = conf_make(CONF_KLINE);
- DupString(yy_aconf->user, userbuf);
- DupString(yy_aconf->host, hostbuf);
+ DupString(yy_conf->user, userbuf);
+ DupString(yy_conf->host, hostbuf);
if (reasonbuf[0])
- DupString(yy_aconf->reason, reasonbuf);
+ DupString(yy_conf->reason, reasonbuf);
else
- DupString(yy_aconf->reason, "No reason");
- add_conf_by_address(CONF_KLINE, yy_aconf);
+ DupString(yy_conf->reason, "No reason");
+ add_conf_by_address(CONF_KLINE, yy_conf);
}
}
- yy_aconf = NULL;
+ yy_conf = NULL;
}
};
@@ -2352,15 +2331,15 @@ deny_entry: DENY
{
if (hostbuf[0] && parse_netmask(hostbuf, NULL, NULL) != HM_HOST)
{
- yy_aconf = map_to_conf(make_conf_item(DLINE_TYPE));
- DupString(yy_aconf->host, hostbuf);
+ yy_conf = conf_make(CONF_DLINE);
+ DupString(yy_conf->host, hostbuf);
if (reasonbuf[0])
- DupString(yy_aconf->reason, reasonbuf);
+ DupString(yy_conf->reason, reasonbuf);
else
- DupString(yy_aconf->reason, "No reason");
- add_conf_by_address(CONF_DLINE, yy_aconf);
- yy_aconf = NULL;
+ DupString(yy_conf->reason, "No reason");
+ add_conf_by_address(CONF_DLINE, yy_conf);
+ yy_conf = NULL;
}
}
};
@@ -2394,11 +2373,11 @@ exempt_ip: IP '=' QSTRING ';'
{
if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
{
- yy_aconf = map_to_conf(make_conf_item(EXEMPTDLINE_TYPE));
- DupString(yy_aconf->host, yylval.string);
+ yy_conf = conf_make(CONF_EXEMPT);
+ DupString(yy_conf->host, yylval.string);
- add_conf_by_address(CONF_EXEMPTDLINE, yy_aconf);
- yy_aconf = NULL;
+ add_conf_by_address(CONF_EXEMPT, yy_conf);
+ yy_conf = NULL;
}
}
};
@@ -2432,23 +2411,22 @@ gecos_entry: GECOS
break;
}
- yy_conf = make_conf_item(RXLINE_TYPE);
- yy_conf->regexpname = exp_p;
+ yy_conf = conf_make(CONF_RXLINE);
+ yy_conf->regexuser = exp_p;
#else
ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: no PCRE support");
break;
#endif
}
else
- yy_conf = make_conf_item(XLINE_TYPE);
+ yy_conf = conf_make(CONF_XLINE);
- yy_match_item = map_to_conf(yy_conf);
DupString(yy_conf->name, gecos_name);
if (reasonbuf[0])
- DupString(yy_match_item->reason, reasonbuf);
+ DupString(yy_conf->reason, reasonbuf);
else
- DupString(yy_match_item->reason, "No reason");
+ DupString(yy_conf->reason, "No reason");
}
}
};
diff --git a/src/hash.c b/src/hash.c
index d0b0a55..cd3fc1e 100644
--- a/src/hash.c
+++ b/src/hash.c
@@ -57,7 +57,7 @@ static struct Client *idTable[HASHSIZE];
static struct Client *clientTable[HASHSIZE];
static struct Channel *channelTable[HASHSIZE];
static struct UserHost *userhostTable[HASHSIZE];
-static struct ResvChannel *resvchannelTable[HASHSIZE];
+static struct MaskItem *resvchannelTable[HASHSIZE];
/* init_hash()
@@ -153,12 +153,12 @@ hash_add_channel(struct Channel *chptr)
}
void
-hash_add_resv(struct ResvChannel *chptr)
+hash_add_resv(struct MaskItem *conf)
{
- unsigned int hashv = strhash(chptr->name);
+ unsigned int hashv = strhash(conf->name);
- chptr->hnext = resvchannelTable[hashv];
- resvchannelTable[hashv] = chptr;
+ conf->hnext = resvchannelTable[hashv];
+ resvchannelTable[hashv] = conf;
}
void
@@ -305,10 +305,10 @@ hash_del_channel(struct Channel *chptr)
}
void
-hash_del_resv(struct ResvChannel *chptr)
+hash_del_resv(struct MaskItem *chptr)
{
unsigned int hashv = strhash(chptr->name);
- struct ResvChannel *tmp = resvchannelTable[hashv];
+ struct MaskItem *tmp = resvchannelTable[hashv];
if (tmp != NULL)
{
@@ -511,17 +511,17 @@ hash_get_bucket(int type, unsigned int hashv)
* if can't find one returns NULL, if can find it moves
* it to the top of the list and returns it.
*/
-struct ResvChannel *
+struct MaskItem *
hash_find_resv(const char *name)
{
unsigned int hashv = strhash(name);
- struct ResvChannel *chptr;
+ struct MaskItem *chptr;
if ((chptr = resvchannelTable[hashv]) != NULL)
{
if (irccmp(name, chptr->name))
{
- struct ResvChannel *prev;
+ struct MaskItem *prev;
while (prev = chptr, (chptr = chptr->hnext) != NULL)
{
@@ -769,7 +769,7 @@ delete_user_host(const char *user, const char *host, int global)
static int
exceeding_sendq(struct Client *to)
{
- if (dbuf_length(&to->localClient->buf_sendq) > (get_sendq(to) / 2))
+ if (dbuf_length(&to->localClient->buf_sendq) > (get_sendq(&to->localClient->confs) / 2))
return 1;
else
return 0;
diff --git a/src/hostmask.c b/src/hostmask.c
index e7d014d..c033e2d 100644
--- a/src/hostmask.c
+++ b/src/hostmask.c
@@ -437,7 +437,7 @@ get_mask_hash(const char *text)
return hash_text(text);
}
-/* struct AccessItem *find_conf_by_address(const char *, struct irc_ssaddr *,
+/* struct MaskItem *find_conf_by_address(const char *, struct irc_ssaddr *,
* int type, int fam, const char *username)
* Input: The hostname, the address, the type of mask to find, the address
* family, the username.
@@ -445,16 +445,16 @@ get_mask_hash(const char *text)
* Side-effects: None
* Note: Setting bit 0 of the type means that the username is ignored.
* Warning: IsNeedPassword for everything that is not an auth{} entry
- * should always be true (i.e. aconf->flags & CONF_FLAGS_NEED_PASSWORD == 0)
+ * should always be true (i.e. conf->flags & CONF_FLAGS_NEED_PASSWORD == 0)
*/
-struct AccessItem *
+struct MaskItem *
find_conf_by_address(const char *name, struct irc_ssaddr *addr, unsigned int type,
int fam, const char *username, const char *password, int do_match)
{
unsigned int hprecv = 0;
dlink_node *ptr = NULL;
- struct AccessItem *hprec = NULL;
- struct AddressRec *arec;
+ struct MaskItem *hprec = NULL;
+ struct AddressRec *arec = NULL;
int b;
int (*cmpfunc)(const char *, const char *) = do_match ? match : irccmp;
@@ -481,11 +481,11 @@ find_conf_by_address(const char *name, struct irc_ssaddr *addr, unsigned int typ
match_ipv6(addr, &arec->Mask.ipa.addr,
arec->Mask.ipa.bits) &&
(type & 0x1 || cmpfunc(arec->username, username) == do_match) &&
- (IsNeedPassword(arec->aconf) || arec->aconf->passwd == NULL ||
- match_conf_password(password, arec->aconf)))
+ (IsNeedPassword(arec->conf) || arec->conf->passwd == NULL ||
+ match_conf_password(password, arec->conf)))
{
hprecv = arec->precedence;
- hprec = arec->aconf;
+ hprec = arec->conf;
}
}
}
@@ -506,11 +506,11 @@ find_conf_by_address(const char *name, struct irc_ssaddr *addr, unsigned int typ
match_ipv4(addr, &arec->Mask.ipa.addr,
arec->Mask.ipa.bits) &&
(type & 0x1 || cmpfunc(arec->username, username) == do_match) &&
- (IsNeedPassword(arec->aconf) || arec->aconf->passwd == NULL ||
- match_conf_password(password, arec->aconf)))
+ (IsNeedPassword(arec->conf) || arec->conf->passwd == NULL ||
+ match_conf_password(password, arec->conf)))
{
hprecv = arec->precedence;
- hprec = arec->aconf;
+ hprec = arec->conf;
}
}
}
@@ -531,11 +531,11 @@ find_conf_by_address(const char *name, struct irc_ssaddr *addr, unsigned int typ
(arec->masktype == HM_HOST) &&
cmpfunc(arec->Mask.hostname, name) == do_match &&
(type & 0x1 || cmpfunc(arec->username, username) == do_match) &&
- (IsNeedPassword(arec->aconf) || arec->aconf->passwd == NULL ||
- match_conf_password(password, arec->aconf)))
+ (IsNeedPassword(arec->conf) || arec->conf->passwd == NULL ||
+ match_conf_password(password, arec->conf)))
{
hprecv = arec->precedence;
- hprec = arec->aconf;
+ hprec = arec->conf;
}
}
p = strchr(p, '.');
@@ -553,11 +553,11 @@ find_conf_by_address(const char *name, struct irc_ssaddr *addr, unsigned int typ
arec->masktype == HM_HOST &&
cmpfunc(arec->Mask.hostname, name) == do_match &&
(type & 0x1 || cmpfunc(arec->username, username) == do_match) &&
- (IsNeedPassword(arec->aconf) || arec->aconf->passwd == NULL ||
- match_conf_password(password, arec->aconf)))
+ (IsNeedPassword(arec->conf) || arec->conf->passwd == NULL ||
+ match_conf_password(password, arec->conf)))
{
hprecv = arec->precedence;
- hprec = arec->aconf;
+ hprec = arec->conf;
}
}
}
@@ -565,56 +565,59 @@ find_conf_by_address(const char *name, struct irc_ssaddr *addr, unsigned int typ
return hprec;
}
-/* struct AccessItem* find_address_conf(const char*, const char*,
+/* struct MaskItem* find_address_conf(const char*, const char*,
* struct irc_ssaddr*, int, char *);
* Input: The hostname, username, address, address family.
- * Output: The applicable AccessItem.
+ * Output: The applicable MaskItem.
* Side-effects: None
*/
-struct AccessItem *
+struct MaskItem *
find_address_conf(const char *host, const char *user,
struct irc_ssaddr *ip, int aftype, char *password)
{
- struct AccessItem *iconf, *kconf;
+ struct MaskItem *authcnf = NULL, *killcnf = NULL;
/* Find the best auth{} block... If none, return NULL -A1kmm */
- if ((iconf = find_conf_by_address(host, ip, CONF_CLIENT, aftype, user,
- password, 1)) == NULL)
+ if ((authcnf = find_conf_by_address(host, ip, CONF_CLIENT, aftype, user,
+ password, 1)) == NULL)
return NULL;
/* If they are exempt from K-lines, return the best auth{} block. -A1kmm */
- if (IsConfExemptKline(iconf))
- return iconf;
+ if (IsConfExemptKline(authcnf))
+ return authcnf;
/* Find the best K-line... -A1kmm */
- kconf = find_conf_by_address(host, ip, CONF_KLINE, aftype, user, NULL, 1);
+ killcnf = find_conf_by_address(host, ip, CONF_KLINE, aftype, user, NULL, 1);
/*
* If they are K-lined, return the K-line. Otherwise, return the
* auth{} block. -A1kmm
*/
- if (kconf != NULL)
- return kconf;
+ if (killcnf != NULL)
+ return killcnf;
+
+ if (IsConfExemptGline(authcnf))
+ return authcnf;
- kconf = find_conf_by_address(host, ip, CONF_GLINE, aftype, user, NULL, 1);
- if (kconf != NULL && !IsConfExemptGline(iconf))
- return kconf;
+ killcnf = find_conf_by_address(host, ip, CONF_GLINE, aftype, user, NULL, 1);
+ if (killcnf != NULL)
+ return killcnf;
- return iconf;
+ return authcnf;
}
-/* struct AccessItem* find_dline_conf(struct irc_ssaddr*, int)
+/* struct MaskItem* find_dline_conf(struct irc_ssaddr*, int)
*
* Input: An address, an address family.
* Output: The best matching D-line or exempt line.
* Side effects: None.
*/
-struct AccessItem *
+struct MaskItem *
find_dline_conf(struct irc_ssaddr *addr, int aftype)
{
- struct AccessItem *eline;
+ struct MaskItem *eline;
- eline = find_conf_by_address(NULL, addr, CONF_EXEMPTDLINE | 1, aftype,
+ eline = find_conf_by_address(NULL, addr, CONF_EXEMPT | 1, aftype,
NULL, NULL, 1);
if (eline != NULL)
return eline;
@@ -622,13 +625,13 @@ find_dline_conf(struct irc_ssaddr *addr, int aftype)
return find_conf_by_address(NULL, addr, CONF_DLINE | 1, aftype, NULL, NULL, 1);
}
-/* void add_conf_by_address(int, struct AccessItem *aconf)
+/* void add_conf_by_address(int, struct MaskItem *aconf)
* Input:
* Output: None
* Side-effects: Adds this entry to the hash table.
*/
void
-add_conf_by_address(const unsigned int type, struct AccessItem *aconf)
+add_conf_by_address(const unsigned int type, struct MaskItem *conf)
{
const char *address;
const char *username;
@@ -636,11 +639,10 @@ add_conf_by_address(const unsigned int type, struct AccessItem *aconf)
int bits = 0;
struct AddressRec *arec;
- address = aconf->host;
- username = aconf->user;
+ address = conf->host;
+ username = conf->user;
- assert(type != 0);
- assert(aconf != NULL);
+ assert(type);
if (EmptyString(address))
address = "/NOMATCH!/";
@@ -649,7 +651,7 @@ add_conf_by_address(const unsigned int type, struct AccessItem *aconf)
arec->masktype = parse_netmask(address, &arec->Mask.ipa.addr, &bits);
arec->Mask.ipa.bits = bits;
arec->username = username;
- arec->aconf = aconf;
+ arec->conf = conf;
arec->precedence = prec_value--;
arec->type = type;
@@ -674,14 +676,14 @@ add_conf_by_address(const unsigned int type, struct AccessItem *aconf)
}
}
-/* void delete_one_address(const char*, struct AccessItem*)
- * Input: An address string, the associated AccessItem.
+/* void delete_one_address(const char*, struct MaskItem*)
+ * Input: An address string, the associated MaskItem.
* Output: None
- * Side effects: Deletes an address record. Frees the AccessItem if there
+ * Side effects: Deletes an address record. Frees the MaskItem if there
* is nothing referencing it, sets it as illegal otherwise.
*/
void
-delete_one_address_conf(const char *address, struct AccessItem *aconf)
+delete_one_address_conf(const char *address, struct MaskItem *conf)
{
int bits = 0;
uint32_t hv = 0;
@@ -711,13 +713,12 @@ delete_one_address_conf(const char *address, struct AccessItem *aconf)
{
struct AddressRec *arec = ptr->data;
- if (arec->aconf == aconf)
+ if (arec->conf == conf)
{
dlinkDelete(&arec->node, &atable[hv]);
- aconf->status |= CONF_ILLEGAL;
- if (!aconf->clients)
- free_access_item(aconf);
+ if (!conf->clients)
+ conf_free(conf);
MyFree(arec);
return;
@@ -729,7 +730,7 @@ delete_one_address_conf(const char *address, struct AccessItem *aconf)
* Input: None
* Output: None
* Side effects: Clears out all address records in the hash table,
- * frees them, and frees the AccessItems if nothing references
+ * frees them, and frees the MaskItems if nothing references
* them, otherwise sets them as illegal.
*/
void
@@ -748,14 +749,13 @@ clear_out_address_conf(void)
* We keep the temporary K-lines and destroy the permanent ones,
* just to be confusing :) -A1kmm
*/
- if (arec->aconf->hold || IsConfDatabase(arec->aconf))
+ if (arec->conf->hold || IsConfDatabase(arec->conf))
continue;
dlinkDelete(&arec->node, &atable[i]);
- arec->aconf->status |= CONF_ILLEGAL;
- if (!arec->aconf->clients)
- free_access_item(arec->aconf);
+ if (!arec->conf->clients)
+ conf_free(arec->conf);
MyFree(arec);
}
}
@@ -784,8 +784,8 @@ hostmask_send_expiration(struct AddressRec *arec)
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"Temporary %c-line for [%s@%s] expired", ban_type,
- (arec->aconf->user) ? arec->aconf->user : "*",
- (arec->aconf->host) ? arec->aconf->host : "*");
+ (arec->conf->user) ? arec->conf->user : "*",
+ (arec->conf->host) ? arec->conf->host : "*");
}
void
@@ -800,7 +800,7 @@ hostmask_expire_temporary(void)
{
struct AddressRec *arec = ptr->data;
- if (!arec->aconf->hold || arec->aconf->hold > CurrentTime)
+ if (!arec->conf->hold || arec->conf->hold > CurrentTime)
continue;
switch (arec->type)
@@ -811,7 +811,7 @@ hostmask_expire_temporary(void)
hostmask_send_expiration(arec);
dlinkDelete(&arec->node, &atable[i]);
- free_access_item(arec->aconf);
+ conf_free(arec->conf);
MyFree(arec);
break;
}
diff --git a/src/ircd.c b/src/ircd.c
index 75b10ed..a593841 100644
--- a/src/ircd.c
+++ b/src/ircd.c
@@ -36,6 +36,7 @@
#include "ircd_signal.h"
#include "s_gline.h"
#include "motd.h"
+#include "conf.h"
#include "hostmask.h"
#include "numeric.h"
#include "packet.h"
@@ -45,7 +46,6 @@
#include "rng_mt.h"
#include "s_auth.h"
#include "s_bsd.h"
-#include "conf.h"
#include "log.h"
#include "s_misc.h"
#include "s_serv.h" /* try_connections */
@@ -60,6 +60,7 @@
#include "supported.h"
#include "watch.h"
#include "conf_db.h"
+#include "conf_class.h"
/* /quote set variables */
struct SetOptions GlobalSetOptions;
@@ -556,7 +557,7 @@ main(int argc, char *argv[])
init_ip_hash_table(); /* client host ip hash table */
init_host_hash(); /* Host-hashtable. */
init_client();
- init_class();
+ class_init();
whowas_init();
watch_init();
init_auth(); /* Initialise the auth code */
diff --git a/src/packet.c b/src/packet.c
index aeb4ac6..b6224e6 100644
--- a/src/packet.c
+++ b/src/packet.c
@@ -364,7 +364,7 @@ read_packet(fde_t *fd, void *data)
/* Check to make sure we're not flooding */
if (!(IsServer(client_p) || IsHandshake(client_p) || IsConnecting(client_p))
&& (dbuf_length(&client_p->localClient->buf_recvq) >
- get_recvq(client_p)))
+ get_recvq(&client_p->localClient->confs)))
{
if (!(ConfigFileEntry.no_oper_flood && HasUMode(client_p, UMODE_OPER)))
{
diff --git a/src/resv.c b/src/resv.c
index 1998386..662cf13 100644
--- a/src/resv.c
+++ b/src/resv.c
@@ -47,11 +47,10 @@ dlink_list resv_channel_list = { NULL, NULL, 0 };
* output - pointer to struct ResvChannel
* side effects -
*/
-struct ConfItem *
+struct MaskItem *
create_channel_resv(char *name, char *reason, int in_conf)
{
- struct ConfItem *conf = NULL;
- struct ResvChannel *resv_p = NULL;
+ struct MaskItem *conf = NULL;
if (name == NULL || reason == NULL)
return NULL;
@@ -62,15 +61,13 @@ create_channel_resv(char *name, char *reason, int in_conf)
if (strlen(reason) > REASONLEN)
reason[REASONLEN] = '\0';
- conf = make_conf_item(CRESV_TYPE);
- resv_p = map_to_conf(conf);
+ conf = conf_make(CONF_CRESV);
- strlcpy(resv_p->name, name, sizeof(resv_p->name));
DupString(conf->name, name);
- DupString(resv_p->reason, reason);
+ DupString(conf->reason, reason);
- dlinkAdd(resv_p, &resv_p->node, &resv_channel_list);
- hash_add_resv(resv_p);
+ dlinkAdd(conf, &conf->node, &resv_channel_list);
+ hash_add_resv(conf);
return conf;
}
@@ -83,26 +80,24 @@ create_channel_resv(char *name, char *reason, int in_conf)
* output - pointer to struct ResvNick
* side effects -
*/
-struct ConfItem *
+struct MaskItem *
create_nick_resv(char *name, char *reason, int in_conf)
{
- struct ConfItem *conf = NULL;
- struct MatchItem *resv_p = NULL;
+ struct MaskItem *conf = NULL;
if (name == NULL || reason == NULL)
return NULL;
- if (find_matching_name_conf(NRESV_TYPE, name, NULL, NULL, 0))
+ if (find_matching_name_conf(CONF_NRESV, name, NULL, NULL, 0))
return NULL;
if (strlen(reason) > REASONLEN)
reason[REASONLEN] = '\0';
- conf = make_conf_item(NRESV_TYPE);
- resv_p = map_to_conf(conf);
+ conf = conf_make(CONF_NRESV);
DupString(conf->name, name);
- DupString(resv_p->reason, reason);
+ DupString(conf->reason, reason);
return conf;
}
@@ -120,10 +115,10 @@ clear_conf_resv(void)
DLINK_FOREACH_SAFE(ptr, next_ptr, resv_channel_list.head)
{
- struct ResvChannel *resv_p = ptr->data;
+ struct MaskItem *conf = ptr->data;
- if (!IsConfDatabase(resv_p))
- delete_channel_resv(resv_p);
+ if (!IsConfDatabase(conf))
+ delete_channel_resv(conf);
}
}
@@ -134,16 +129,11 @@ clear_conf_resv(void)
* side effects - given struct ResvChannel * is removed
*/
int
-delete_channel_resv(struct ResvChannel *resv_p)
+delete_channel_resv(struct MaskItem *conf)
{
- struct ConfItem *conf = NULL;
- assert(resv_p != NULL);
-
- hash_del_resv(resv_p);
- dlinkDelete(&resv_p->node, &resv_channel_list);
- MyFree(resv_p->reason);
- conf = unmap_conf_item(resv_p);
- delete_conf_item(conf);
+ hash_del_resv(conf);
+ dlinkDelete(&conf->node, &resv_channel_list);
+ conf_free(conf);
return 1;
}
@@ -155,7 +145,7 @@ delete_channel_resv(struct ResvChannel *resv_p)
* side effects - Finds a reserved channel whose name matches 'name',
* if can't find one returns NULL.
*/
-struct ResvChannel *
+struct MaskItem *
match_find_resv(const char *name)
{
dlink_node *ptr = NULL;
@@ -165,10 +155,10 @@ match_find_resv(const char *name)
DLINK_FOREACH(ptr, resv_channel_list.head)
{
- struct ResvChannel *chptr = ptr->data;
+ struct MaskItem *conf = ptr->data;
- if (match_chan(name, chptr->name))
- return chptr;
+ if (match_chan(name, conf->name))
+ return conf;
}
return NULL;
@@ -183,29 +173,25 @@ match_find_resv(const char *name)
void
report_resv(struct Client *source_p)
{
- dlink_node *ptr;
- struct ConfItem *conf;
- struct ResvChannel *resv_cp;
- struct MatchItem *resv_np;
+ dlink_node *ptr = NULL;
+ struct MaskItem *conf = NULL;
DLINK_FOREACH(ptr, resv_channel_list.head)
{
- resv_cp = ptr->data;
+ conf = ptr->data;
sendto_one(source_p, form_str(RPL_STATSQLINE),
me.name, source_p->name,
- resv_cp->hold ? 'q' : 'Q',
- resv_cp->name, resv_cp->reason);
+ conf->hold ? 'q' : 'Q',
+ conf->name, conf->reason);
}
DLINK_FOREACH(ptr, nresv_items.head)
{
- conf = ptr->data;
- resv_np = map_to_conf(conf);
-
+ conf = ptr->data;;
sendto_one(source_p, form_str(RPL_STATSQLINE),
me.name, source_p->name,
- resv_np->hold ? 'q' : 'Q',
- conf->name, resv_np->reason);
+ conf->hold ? 'q' : 'Q',
+ conf->name, conf->reason);
}
}
diff --git a/src/s_bsd.c b/src/s_bsd.c
index 5eaae02..b3ea5f1 100644
--- a/src/s_bsd.c
+++ b/src/s_bsd.c
@@ -177,8 +177,6 @@ init_comm(void)
void
close_connection(struct Client *client_p)
{
- struct AccessItem *aconf;
- struct ClassItem *aclass;
dlink_node *ptr = NULL;
assert(client_p);
@@ -210,7 +208,7 @@ close_connection(struct Client *client_p)
DLINK_FOREACH(ptr, server_items.head)
{
- struct ConfItem *conf = ptr->data;
+ struct MaskItem *conf = ptr->data;
if (irccmp(conf->name, client_p->name))
continue;
@@ -219,9 +217,7 @@ close_connection(struct Client *client_p)
* Reset next-connect cycle of all connect{} blocks that match
* this servername.
*/
- aconf = map_to_conf(conf);
- aclass = map_to_conf(aconf->class_ptr);
- aconf->hold = CurrentTime + aclass->con_freq;
+ conf->hold = CurrentTime + conf->class->con_freq;
}
}
else
@@ -243,7 +239,7 @@ close_connection(struct Client *client_p)
dbuf_clear(&client_p->localClient->buf_recvq);
MyFree(client_p->localClient->passwd);
- detach_conf(client_p, CONF_TYPE);
+ detach_conf(client_p, CONF_CLIENT|CONF_OPER|CONF_SERVER);
client_p->from = NULL; /* ...this should catch them! >:) --msa */
}
diff --git a/src/s_gline.c b/src/s_gline.c
index aff7a05..3d563be 100644
--- a/src/s_gline.c
+++ b/src/s_gline.c
@@ -27,8 +27,8 @@
#include "client.h"
#include "irc_string.h"
#include "ircd.h"
-#include "hostmask.h"
#include "conf.h"
+#include "hostmask.h"
#include "s_misc.h"
#include "send.h"
#include "s_serv.h"
@@ -42,11 +42,11 @@ dlink_list pending_glines[GLINE_PENDING_ADD_TYPE + 1] = { { NULL, NULL, 0 },
static void expire_pending_glines(struct gline_pending *);
-struct AccessItem *
+struct MaskItem *
find_is_glined(const char *host, const char *user)
{
struct irc_ssaddr iphost, *piphost;
- struct AccessItem *aconf;
+ struct MaskItem *conf = NULL;
int t;
if ((t = parse_netmask(host, &iphost, &t)) != HM_HOST)
@@ -65,8 +65,8 @@ find_is_glined(const char *host, const char *user)
piphost = NULL;
}
- aconf = find_conf_by_address(host, piphost, CONF_GLINE, t, user, NULL, 0);
- return aconf;
+ conf = find_conf_by_address(host, piphost, CONF_GLINE, t, user, NULL, 0);
+ return conf;
}
/* cleanup_glines()
diff --git a/src/s_serv.c b/src/s_serv.c
index ea2da4e..69e40cb 100644
--- a/src/s_serv.c
+++ b/src/s_serv.c
@@ -271,10 +271,8 @@ hunt_server(struct Client *client_p, struct Client *source_p, const char *comman
void
try_connections(void *unused)
{
- dlink_node *ptr;
- struct ConfItem *conf;
- struct AccessItem *aconf;
- struct ClassItem *cltmp;
+ dlink_node *ptr = NULL;
+ struct MaskItem *conf;
int confrq;
/* TODO: change this to set active flag to 0 when added to event! --Habeeb */
@@ -284,15 +282,14 @@ try_connections(void *unused)
DLINK_FOREACH(ptr, server_items.head)
{
conf = ptr->data;
- aconf = map_to_conf(conf);
+
+ assert(conf->status & CONF_SERVER);
/* Also when already connecting! (update holdtimes) --SRB
*/
- if (!(aconf->status & CONF_SERVER) || !aconf->port ||
- !(IsConfAllowAutoConn(aconf)))
+ if (!conf->port ||!IsConfAllowAutoConn(conf))
continue;
- cltmp = map_to_conf(aconf->class_ptr);
/* Skip this entry if the use of it is still on hold until
* future. Otherwise handle this entry (and set it on hold
@@ -300,19 +297,19 @@ try_connections(void *unused)
* made one successfull connection... [this algorithm is
* a bit fuzzy... -- msa >;) ]
*/
- if (aconf->hold > CurrentTime)
+ if (conf->hold > CurrentTime)
continue;
- if (cltmp == NULL)
+ if (conf->class == NULL)
confrq = DEFAULT_CONNECTFREQUENCY;
else
{
- confrq = cltmp->con_freq;
+ confrq = conf->class->con_freq;
if (confrq < MIN_CONN_FREQ)
confrq = MIN_CONN_FREQ;
}
- aconf->hold = CurrentTime + confrq;
+ conf->hold = CurrentTime + confrq;
/* Found a CONNECT config with port specified, scan clients
* and see if this server is already connected?
@@ -320,7 +317,7 @@ try_connections(void *unused)
if (hash_find_server(conf->name) != NULL)
continue;
- if (cltmp->curr_user_count < cltmp->max_total)
+ if (conf->class->ref_count < conf->class->max_total)
{
/* Go to the end of the list, if not already last */
if (ptr->next != NULL)
@@ -347,9 +344,9 @@ try_connections(void *unused)
else
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"Connection to %s[%s] activated.",
- conf->name, aconf->host);
+ conf->name, conf->host);
- serv_connect(aconf, NULL);
+ serv_connect(conf, NULL);
/* We connect only one at time... */
return;
}
@@ -381,10 +378,8 @@ int
check_server(const char *name, struct Client *client_p)
{
dlink_node *ptr;
- struct ConfItem *conf = NULL;
- struct ConfItem *server_conf = NULL;
- struct AccessItem *server_aconf = NULL;
- struct AccessItem *aconf = NULL;
+ struct MaskItem *conf = NULL;
+ struct MaskItem *server_conf = NULL;
int error = -1;
assert(client_p != NULL);
@@ -393,7 +388,6 @@ check_server(const char *name, struct Client *client_p)
DLINK_FOREACH(ptr, server_items.head)
{
conf = ptr->data;
- aconf = map_to_conf(conf);
if (!match(name, conf->name))
continue;
@@ -402,12 +396,12 @@ check_server(const char *name, struct Client *client_p)
/* XXX: Fix me for IPv6 */
/* XXX sockhost is the IPv4 ip as a string */
- if (match(aconf->host, client_p->host) ||
- match(aconf->host, client_p->sockhost))
+ if (match(conf->host, client_p->host) ||
+ match(conf->host, client_p->sockhost))
{
error = -2;
- if (!match_conf_password(client_p->localClient->passwd, aconf))
+ if (!match_conf_password(client_p->localClient->passwd, conf))
return -2;
server_conf = conf;
@@ -419,29 +413,28 @@ check_server(const char *name, struct Client *client_p)
attach_conf(client_p, server_conf);
- server_aconf = map_to_conf(server_conf);
- if (aconf != NULL)
+ if (server_conf != NULL)
{
struct sockaddr_in *v4;
#ifdef IPV6
struct sockaddr_in6 *v6;
#endif
- switch (aconf->aftype)
+ switch (server_conf->aftype)
{
#ifdef IPV6
case AF_INET6:
- v6 = (struct sockaddr_in6 *)&aconf->addr;
+ v6 = (struct sockaddr_in6 *)&server_conf->addr;
if (IN6_IS_ADDR_UNSPECIFIED(&v6->sin6_addr))
- memcpy(&aconf->addr, &client_p->localClient->ip, sizeof(struct irc_ssaddr));
+ memcpy(&server_conf->addr, &client_p->localClient->ip, sizeof(struct irc_ssaddr));
break;
#endif
case AF_INET:
- v4 = (struct sockaddr_in *)&aconf->addr;
+ v4 = (struct sockaddr_in *)&server_conf->addr;
if (v4->sin_addr.s_addr == INADDR_NONE)
- memcpy(&aconf->addr, &client_p->localClient->ip, sizeof(struct irc_ssaddr));
+ memcpy(&server_conf->addr, &client_p->localClient->ip, sizeof(struct irc_ssaddr));
break;
}
}
@@ -530,15 +523,13 @@ find_capability(const char *capab)
/* send_capabilities()
*
* inputs - Client pointer to send to
- * - Pointer to AccessItem (for crypt)
* - int flag of capabilities that this server can send
* output - NONE
* side effects - send the CAPAB line to a server -orabidoo
*
*/
void
-send_capabilities(struct Client *client_p, struct AccessItem *aconf,
- int cap_can_send)
+send_capabilities(struct Client *client_p, int cap_can_send)
{
struct Capability *cap=NULL;
char msgbuf[IRCD_BUFSIZE];
@@ -683,8 +674,7 @@ void
server_estab(struct Client *client_p)
{
struct Client *target_p;
- struct ConfItem *conf;
- struct AccessItem *aconf=NULL;
+ struct MaskItem *conf = NULL;
char *host;
const char *inpath;
static char inpath_ip[HOSTLEN * 2 + USERLEN + 6];
@@ -700,7 +690,7 @@ server_estab(struct Client *client_p)
inpath = get_client_name(client_p, MASK_IP); /* "refresh" inpath with host */
host = client_p->name;
- if ((conf = find_conf_name(&client_p->localClient->confs, host, SERVER_TYPE))
+ if ((conf = find_conf_name(&client_p->localClient->confs, host, CONF_SERVER))
== NULL)
{
/* This shouldn't happen, better tell the ops... -A1kmm */
@@ -731,25 +721,16 @@ server_estab(struct Client *client_p)
}
}
- aconf = map_to_conf(conf);
-
if (IsUnknown(client_p))
{
/* jdc -- 1. Use EmptyString(), not [0] index reference.
- * 2. Check aconf->spasswd, not aconf->passwd.
+ * 2. Check conf->spasswd, not conf->passwd.
*/
- if (!EmptyString(aconf->spasswd))
+ if (!EmptyString(conf->spasswd))
sendto_one(client_p, "PASS %s TS %d %s",
- aconf->spasswd, TS_CURRENT, me.id);
+ conf->spasswd, TS_CURRENT, me.id);
- /* Pass my info to the new server
- *
- * Pass on ZIP if supported
- * Pass on TB if supported.
- * - Dianora
- */
-
- send_capabilities(client_p, aconf, 0);
+ send_capabilities(client_p, 0);
sendto_one(client_p, "SERVER %s 1 :%s%s",
me.name, ConfigServerHide.hidden ? "(H) " : "", me.info);
@@ -763,7 +744,7 @@ server_estab(struct Client *client_p)
hash_add_id(client_p);
/* XXX Does this ever happen? I don't think so -db */
- detach_conf(client_p, OPER_TYPE);
+ detach_conf(client_p, CONF_OPER);
/* *WARNING*
** In the following code in place of plain server's
@@ -805,7 +786,7 @@ server_estab(struct Client *client_p)
/* fixing eob timings.. -gnp */
client_p->localClient->firsttime = CurrentTime;
- if (find_matching_name_conf(SERVICE_TYPE, client_p->name, NULL, NULL, 0))
+ if (find_matching_name_conf(CONF_SERVICE, client_p->name, NULL, NULL, 0))
AddFlag(client_p, FLAGS_SERVICE);
/* Show the real host/IP to admins */
@@ -1078,28 +1059,24 @@ burst_members(struct Client *client_p, struct Channel *chptr)
* it suceeded or not, and 0 if it fails in here somewhere.
*/
int
-serv_connect(struct AccessItem *aconf, struct Client *by)
+serv_connect(struct MaskItem *conf, struct Client *by)
{
- struct ConfItem *conf;
struct Client *client_p;
char buf[HOSTIPLEN + 1];
/* conversion structs */
struct sockaddr_in *v4;
- /* Make sure aconf is useful */
- assert(aconf != NULL);
+ /* Make sure conf is useful */
+ assert(conf != NULL);
- /* XXX should be passing struct ConfItem in the first place */
- conf = unmap_conf_item(aconf);
- /* log */
- getnameinfo((struct sockaddr *)&aconf->addr, aconf->addr.ss_len,
+ getnameinfo((struct sockaddr *)&conf->addr, conf->addr.ss_len,
buf, sizeof(buf), NULL, 0, NI_NUMERICHOST);
- ilog(LOG_TYPE_IRCD, "Connect to %s[%s] @%s", conf->name, aconf->host,
+ ilog(LOG_TYPE_IRCD, "Connect to %s[%s] @%s", conf->name, conf->host,
buf);
/* Still processing a DNS lookup? -> exit */
- if (aconf->dns_pending)
+ if (conf->dns_pending)
{
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"Error connecting to %s: DNS lookup for connect{} in progress.",
@@ -1107,7 +1084,7 @@ serv_connect(struct AccessItem *aconf, struct Client *by)
return (0);
}
- if (aconf->dns_failed)
+ if (conf->dns_failed)
{
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"Error connecting to %s: DNS lookup for connect{} failed.",
@@ -1116,7 +1093,7 @@ serv_connect(struct AccessItem *aconf, struct Client *by)
}
/* Make sure this server isn't already connected
- * Note: aconf should ALWAYS be a valid C: line
+ * Note: conf should ALWAYS be a valid C: line
*/
if ((client_p = hash_find_server(conf->name)) != NULL)
{
@@ -1138,13 +1115,13 @@ serv_connect(struct AccessItem *aconf, struct Client *by)
/* Copy in the server, hostname, fd */
strlcpy(client_p->name, conf->name, sizeof(client_p->name));
- strlcpy(client_p->host, aconf->host, sizeof(client_p->host));
+ strlcpy(client_p->host, conf->host, sizeof(client_p->host));
/* We already converted the ip once, so lets use it - stu */
strlcpy(client_p->sockhost, buf, sizeof(client_p->sockhost));
/* create a socket for the server connection */
- if (comm_open(&client_p->localClient->fd, aconf->addr.ss.ss_family,
+ if (comm_open(&client_p->localClient->fd, conf->addr.ss.ss_family,
SOCK_STREAM, 0, NULL) < 0)
{
/* Eek, failure to create the socket */
@@ -1161,7 +1138,7 @@ serv_connect(struct AccessItem *aconf, struct Client *by)
/* Attach config entries to client here rather than in
* serv_connect_callback(). This to avoid null pointer references.
*/
- if (!attach_connect_block(client_p, conf->name, aconf->host))
+ if (!attach_connect_block(client_p, conf->name, conf->host))
{
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"Host %s is not enabled for connecting: no connect{} block",
@@ -1190,26 +1167,26 @@ serv_connect(struct AccessItem *aconf, struct Client *by)
SetConnecting(client_p);
dlinkAdd(client_p, &client_p->node, &global_client_list);
/* from def_fam */
- client_p->localClient->aftype = aconf->aftype;
+ client_p->localClient->aftype = conf->aftype;
/* Now, initiate the connection */
/* XXX assume that a non 0 type means a specific bind address
* for this connect.
*/
- switch (aconf->aftype)
+ switch (conf->aftype)
{
case AF_INET:
- v4 = (struct sockaddr_in*)&aconf->bind;
+ v4 = (struct sockaddr_in*)&conf->bind;
if (v4->sin_addr.s_addr != 0)
{
struct irc_ssaddr ipn;
memset(&ipn, 0, sizeof(struct irc_ssaddr));
ipn.ss.ss_family = AF_INET;
ipn.ss_port = 0;
- memcpy(&ipn, &aconf->bind, sizeof(struct irc_ssaddr));
- comm_connect_tcp(&client_p->localClient->fd, aconf->host, aconf->port,
+ memcpy(&ipn, &conf->bind, sizeof(struct irc_ssaddr));
+ comm_connect_tcp(&client_p->localClient->fd, conf->host, conf->port,
(struct sockaddr *)&ipn, ipn.ss_len,
- serv_connect_callback, client_p, aconf->aftype,
+ serv_connect_callback, client_p, conf->aftype,
CONNECTTIMEOUT);
}
else if (ServerInfo.specific_ipv4_vhost)
@@ -1219,14 +1196,14 @@ serv_connect(struct AccessItem *aconf, struct Client *by)
ipn.ss.ss_family = AF_INET;
ipn.ss_port = 0;
memcpy(&ipn, &ServerInfo.ip, sizeof(struct irc_ssaddr));
- comm_connect_tcp(&client_p->localClient->fd, aconf->host, aconf->port,
+ comm_connect_tcp(&client_p->localClient->fd, conf->host, conf->port,
(struct sockaddr *)&ipn, ipn.ss_len,
- serv_connect_callback, client_p, aconf->aftype,
+ serv_connect_callback, client_p, conf->aftype,
CONNECTTIMEOUT);
}
else
- comm_connect_tcp(&client_p->localClient->fd, aconf->host, aconf->port,
- NULL, 0, serv_connect_callback, client_p, aconf->aftype,
+ comm_connect_tcp(&client_p->localClient->fd, conf->host, conf->port,
+ NULL, 0, serv_connect_callback, client_p, conf->aftype,
CONNECTTIMEOUT);
break;
#ifdef IPV6
@@ -1237,20 +1214,20 @@ serv_connect(struct AccessItem *aconf, struct Client *by)
struct sockaddr_in6 *v6conf;
memset(&ipn, 0, sizeof(struct irc_ssaddr));
- v6conf = (struct sockaddr_in6 *)&aconf->bind;
+ v6conf = (struct sockaddr_in6 *)&conf->bind;
v6 = (struct sockaddr_in6 *)&ipn;
if (memcmp(&v6conf->sin6_addr, &v6->sin6_addr,
sizeof(struct in6_addr)) != 0)
{
- memcpy(&ipn, &aconf->bind, sizeof(struct irc_ssaddr));
+ memcpy(&ipn, &conf->bind, sizeof(struct irc_ssaddr));
ipn.ss.ss_family = AF_INET6;
ipn.ss_port = 0;
comm_connect_tcp(&client_p->localClient->fd,
- aconf->host, aconf->port,
+ conf->host, conf->port,
(struct sockaddr *)&ipn, ipn.ss_len,
serv_connect_callback, client_p,
- aconf->aftype, CONNECTTIMEOUT);
+ conf->aftype, CONNECTTIMEOUT);
}
else if (ServerInfo.specific_ipv6_vhost)
{
@@ -1258,16 +1235,16 @@ serv_connect(struct AccessItem *aconf, struct Client *by)
ipn.ss.ss_family = AF_INET6;
ipn.ss_port = 0;
comm_connect_tcp(&client_p->localClient->fd,
- aconf->host, aconf->port,
+ conf->host, conf->port,
(struct sockaddr *)&ipn, ipn.ss_len,
serv_connect_callback, client_p,
- aconf->aftype, CONNECTTIMEOUT);
+ conf->aftype, CONNECTTIMEOUT);
}
else
comm_connect_tcp(&client_p->localClient->fd,
- aconf->host, aconf->port,
+ conf->host, conf->port,
NULL, 0, serv_connect_callback, client_p,
- aconf->aftype, CONNECTTIMEOUT);
+ conf->aftype, CONNECTTIMEOUT);
}
#endif
}
@@ -1278,11 +1255,10 @@ serv_connect(struct AccessItem *aconf, struct Client *by)
static void
finish_ssl_server_handshake(struct Client *client_p)
{
- struct ConfItem *conf=NULL;
- struct AccessItem *aconf=NULL;
+ struct MaskItem *conf = NULL;
conf = find_conf_name(&client_p->localClient->confs,
- client_p->name, SERVER_TYPE);
+ client_p->name, CONF_SERVER);
if (conf == NULL)
{
sendto_realops_flags(UMODE_ALL, L_ADMIN, SEND_NOTICE,
@@ -1294,14 +1270,12 @@ finish_ssl_server_handshake(struct Client *client_p)
return;
}
- aconf = map_to_conf(conf);
-
/* jdc -- Check and send spasswd, not passwd. */
- if (!EmptyString(aconf->spasswd))
+ if (!EmptyString(conf->spasswd))
sendto_one(client_p, "PASS %s TS %d %s",
- aconf->spasswd, TS_CURRENT, me.id);
+ conf->spasswd, TS_CURRENT, me.id);
- send_capabilities(client_p, aconf, 0);
+ send_capabilities(client_p, 0);
sendto_one(client_p, "SERVER %s 1 :%s%s",
me.name, ConfigServerHide.hidden ? "(H) " : "",
@@ -1362,7 +1336,7 @@ ssl_server_handshake(fde_t *fd, struct Client *client_p)
}
static void
-ssl_connect_init(struct Client *client_p, struct AccessItem *aconf, fde_t *fd)
+ssl_connect_init(struct Client *client_p, struct MaskItem *conf, fde_t *fd)
{
if ((client_p->localClient->fd.ssl = SSL_new(ServerInfo.client_ctx)) == NULL)
{
@@ -1375,8 +1349,8 @@ ssl_connect_init(struct Client *client_p, struct AccessItem *aconf, fde_t *fd)
SSL_set_fd(fd->ssl, fd->fd);
- if (!EmptyString(aconf->cipher_list))
- SSL_set_cipher_list(client_p->localClient->fd.ssl, aconf->cipher_list);
+ if (!EmptyString(conf->cipher_list))
+ SSL_set_cipher_list(client_p->localClient->fd.ssl, conf->cipher_list);
ssl_server_handshake(NULL, client_p);
}
@@ -1394,8 +1368,7 @@ static void
serv_connect_callback(fde_t *fd, int status, void *data)
{
struct Client *client_p = data;
- struct ConfItem *conf=NULL;
- struct AccessItem *aconf=NULL;
+ struct MaskItem *conf = NULL;
/* First, make sure its a real client! */
assert(client_p != NULL);
@@ -1433,7 +1406,7 @@ serv_connect_callback(fde_t *fd, int status, void *data)
/* COMM_OK, so continue the connection procedure */
/* Get the C/N lines */
conf = find_conf_name(&client_p->localClient->confs,
- client_p->name, SERVER_TYPE);
+ client_p->name, CONF_SERVER);
if (conf == NULL)
{
sendto_realops_flags(UMODE_ALL, L_ADMIN, SEND_NOTICE,
@@ -1445,24 +1418,23 @@ serv_connect_callback(fde_t *fd, int status, void *data)
return;
}
- aconf = map_to_conf(conf);
/* Next, send the initial handshake */
SetHandshake(client_p);
#ifdef HAVE_LIBCRYPTO
- if (IsConfSSL(aconf))
+ if (IsConfSSL(conf))
{
- ssl_connect_init(client_p, aconf, fd);
+ ssl_connect_init(client_p, conf, fd);
return;
}
#endif
/* jdc -- Check and send spasswd, not passwd. */
- if (!EmptyString(aconf->spasswd))
+ if (!EmptyString(conf->spasswd))
sendto_one(client_p, "PASS %s TS %d %s",
- aconf->spasswd, TS_CURRENT, me.id);
+ conf->spasswd, TS_CURRENT, me.id);
- send_capabilities(client_p, aconf, 0);
+ send_capabilities(client_p, 0);
sendto_one(client_p, "SERVER %s 1 :%s%s",
me.name, ConfigServerHide.hidden ? "(H) " : "",
diff --git a/src/s_user.c b/src/s_user.c
index cb8cc61..c711446 100644
--- a/src/s_user.c
+++ b/src/s_user.c
@@ -60,7 +60,7 @@ struct Callback *umode_cb = NULL;
static char umode_buffer[IRCD_BUFSIZE];
static void user_welcome(struct Client *);
-static void report_and_set_user_flags(struct Client *, const struct AccessItem *);
+static void report_and_set_user_flags(struct Client *, const struct MaskItem *);
static int check_xline(struct Client *);
static void introduce_client(struct Client *);
static const char *uid_get(void);
@@ -280,8 +280,7 @@ void
register_local_user(struct Client *source_p)
{
const char *id = NULL;
- const struct AccessItem *aconf = NULL;
- dlink_node *ptr = NULL;
+ const struct MaskItem *conf = NULL;
assert(source_p != NULL);
assert(source_p == source_p->from);
@@ -323,8 +322,7 @@ register_local_user(struct Client *source_p)
sizeof(source_p->host));
}
- ptr = source_p->localClient->confs.head;
- aconf = map_to_conf(ptr->data);
+ conf = source_p->localClient->confs.head->data;
if (!IsGotId(source_p))
{
@@ -332,7 +330,7 @@ register_local_user(struct Client *source_p)
const char *p = username;
unsigned int i = 0;
- if (IsNeedIdentd(aconf))
+ if (IsNeedIdentd(conf))
{
++ServerStats.is_ref;
sendto_one(source_p, ":%s NOTICE %s :*** Notice -- You need to install "
@@ -343,7 +341,7 @@ register_local_user(struct Client *source_p)
strlcpy(username, source_p->username, sizeof(username));
- if (!IsNoTilde(aconf))
+ if (!IsNoTilde(conf))
source_p->username[i++] = '~';
for (; *p && i < USERLEN; ++p)
@@ -354,11 +352,11 @@ register_local_user(struct Client *source_p)
}
/* password check */
- if (!EmptyString(aconf->passwd))
+ if (!EmptyString(conf->passwd))
{
const char *pass = source_p->localClient->passwd;
- if (!match_conf_password(pass, aconf))
+ if (!match_conf_password(pass, conf))
{
++ServerStats.is_ref;
sendto_one(source_p, form_str(ERR_PASSWDMISMATCH),
@@ -374,7 +372,7 @@ register_local_user(struct Client *source_p)
*/
/* report if user has &^>= etc. and set flags as needed in source_p */
- report_and_set_user_flags(source_p, aconf);
+ report_and_set_user_flags(source_p, conf);
if (IsDead(source_p))
return;
@@ -427,7 +425,7 @@ register_local_user(struct Client *source_p)
source_p->name, source_p->username, source_p->host,
ConfigFileEntry.hide_spoof_ips && IsIPSpoof(source_p) ?
"255.255.255.255" : source_p->sockhost,
- get_client_class(source_p),
+ get_client_class(&source_p->localClient->confs),
source_p->info, source_p->id);
sendto_realops_flags(UMODE_CCONN_FULL, L_ALL, SEND_NOTICE,
@@ -435,7 +433,7 @@ register_local_user(struct Client *source_p)
source_p->name, source_p->username, source_p->host,
ConfigFileEntry.hide_spoof_ips && IsIPSpoof(source_p) ?
"255.255.255.255" : source_p->sockhost,
- get_client_class(source_p),
+ get_client_class(&source_p->localClient->confs),
ConfigFileEntry.hide_spoof_ips && IsIPSpoof(source_p) ?
"<hidden>" : source_p->localClient->client_host,
ConfigFileEntry.hide_spoof_ips && IsIPSpoof(source_p) ?
@@ -737,16 +735,16 @@ valid_nickname(const char *nickname, const int local)
/* report_and_set_user_flags()
*
* inputs - pointer to source_p
- * - pointer to aconf for this user
+ * - pointer to conf for this user
* output - NONE
* side effects - Report to user any special flags
* they are getting, and set them.
*/
static void
-report_and_set_user_flags(struct Client *source_p, const struct AccessItem *aconf)
+report_and_set_user_flags(struct Client *source_p, const struct MaskItem *conf)
{
/* If this user is being spoofed, tell them so */
- if (IsConfDoSpoofIp(aconf))
+ if (IsConfDoSpoofIp(conf))
{
sendto_one(source_p,
":%s NOTICE %s :*** Spoofing your IP. congrats.",
@@ -754,7 +752,7 @@ report_and_set_user_flags(struct Client *source_p, const struct AccessItem *acon
}
/* If this user is in the exception class, Set it "E lined" */
- if (IsConfExemptKline(aconf))
+ if (IsConfExemptKline(conf))
{
SetExemptKline(source_p);
sendto_one(source_p,
@@ -765,14 +763,14 @@ report_and_set_user_flags(struct Client *source_p, const struct AccessItem *acon
/* The else here is to make sure that G line exempt users
* do not get noticed twice.
*/
- else if (IsConfExemptGline(aconf))
+ else if (IsConfExemptGline(conf))
{
SetExemptGline(source_p);
sendto_one(source_p, ":%s NOTICE %s :*** You are exempt from G lines.",
me.name, source_p->name);
}
- if (IsConfExemptResv(aconf))
+ if (IsConfExemptResv(conf))
{
SetExemptResv(source_p);
sendto_one(source_p, ":%s NOTICE %s :*** You are exempt from resvs.",
@@ -780,7 +778,7 @@ report_and_set_user_flags(struct Client *source_p, const struct AccessItem *acon
}
/* If this user is exempt from user limits set it "F lined" */
- if (IsConfExemptLimits(aconf))
+ if (IsConfExemptLimits(conf))
{
SetExemptLimits(source_p);
sendto_one(source_p,
@@ -788,7 +786,7 @@ report_and_set_user_flags(struct Client *source_p, const struct AccessItem *acon
me.name,source_p->name);
}
- if (IsConfCanFlood(aconf))
+ if (IsConfCanFlood(conf))
{
SetCanFlood(source_p);
sendto_one(source_p, ":%s NOTICE %s :*** You are exempt from flood "
@@ -921,7 +919,7 @@ set_user_mode(struct Client *client_p, struct Client *source_p,
{
dlink_node *dm;
- detach_conf(source_p, OPER_TYPE);
+ detach_conf(source_p, CONF_OPER);
ClrOFlag(source_p);
DelUMode(source_p, ConfigFileEntry.oper_only_umodes);
@@ -1158,18 +1156,16 @@ user_welcome(struct Client *source_p)
static int
check_xline(struct Client *source_p)
{
- struct ConfItem *conf = NULL;
+ struct MaskItem *conf = NULL;
const char *reason = NULL;
- if ((conf = find_matching_name_conf(XLINE_TYPE, source_p->info, NULL, NULL, 0)) ||
- (conf = find_matching_name_conf(RXLINE_TYPE, source_p->info, NULL, NULL, 0)))
+ if ((conf = find_matching_name_conf(CONF_XLINE, source_p->info, NULL, NULL, 0)) ||
+ (conf = find_matching_name_conf(CONF_RXLINE, source_p->info, NULL, NULL, 0)))
{
- struct MatchItem *reg = map_to_conf(conf);
-
- ++reg->count;
+ ++conf->count;
- if (reg->reason != NULL)
- reason = reg->reason;
+ if (conf->reason != NULL)
+ reason = conf->reason;
else
reason = "No Reason";
@@ -1191,7 +1187,7 @@ check_xline(struct Client *source_p)
*
* inputs - pointer to given client to oper
* output - NONE
- * side effects - Blindly opers up given source_p, using aconf info
+ * side effects - Blindly opers up given source_p, using conf info
* all checks on passwords have already been done.
* This could also be used by rsa oper routines.
*/
@@ -1199,16 +1195,16 @@ void
oper_up(struct Client *source_p)
{
const unsigned int old = source_p->umodes;
- const struct AccessItem *oconf = NULL;
+ const struct MaskItem *conf = NULL;
assert(source_p->localClient->confs.head);
- oconf = map_to_conf((source_p->localClient->confs.head)->data);
+ conf = source_p->localClient->confs.head->data;
++Count.oper;
SetOper(source_p);
- if (oconf->modes)
- AddUMode(source_p, oconf->modes);
+ if (conf->modes)
+ AddUMode(source_p, conf->modes);
else if (ConfigFileEntry.oper_umodes)
AddUMode(source_p, ConfigFileEntry.oper_umodes);
@@ -1220,7 +1216,7 @@ oper_up(struct Client *source_p)
assert(dlinkFind(&oper_list, source_p) == NULL);
dlinkAdd(source_p, make_dlink_node(), &oper_list);
- AddOFlag(source_p, oconf->port);
+ AddOFlag(source_p, conf->port);
if (HasOFlag(source_p, OPER_FLAG_ADMIN))
AddUMode(source_p, UMODE_ADMIN);
diff --git a/src/send.c b/src/send.c
index 53804b3..903f089 100644
--- a/src/send.c
+++ b/src/send.c
@@ -106,14 +106,14 @@ send_message(struct Client *to, char *buf, int len)
assert(!IsMe(to));
assert(to != &me);
- if (dbuf_length(&to->localClient->buf_sendq) + len > get_sendq(to))
+ if (dbuf_length(&to->localClient->buf_sendq) + len > get_sendq(&to->localClient->confs))
{
if (IsServer(to))
sendto_realops_flags(UMODE_ALL, L_ALL, SEND_NOTICE,
"Max SendQ limit exceeded for %s: %lu > %lu",
get_client_name(to, HIDE_IP),
(unsigned long)(dbuf_length(&to->localClient->buf_sendq) + len),
- get_sendq(to));
+ get_sendq(&to->localClient->confs));
if (IsClient(to))
SetSendQExceeded(to);
dead_link_on_write(to, 0);