]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - src/newconf.c
MyMalloc -> rb_malloc
[irc/rqf/shadowircd.git] / src / newconf.c
index 7e2a3766ec99e7fd85a556104098b0b0cdfd8bcf..eddeeff674beedcb41e857cf3fe4342dce86d731 100644 (file)
@@ -1,5 +1,5 @@
 /* This code is in the public domain.
- * $Id: newconf.c 3131 2007-01-21 15:36:31Z jilles $
+ * $Id: newconf.c 3550 2007-08-09 06:47:26Z nenolod $
  */
 
 #include "stdinc.h"
@@ -9,9 +9,7 @@
 #include <openssl/rsa.h>
 #endif
 
-#include "memory.h"
 #include "newconf.h"
-#include "tools.h"
 #include "ircd_defs.h"
 #include "sprintf_irc.h"
 #include "common.h"
@@ -25,7 +23,6 @@
 #include "listener.h"
 #include "hostmask.h"
 #include "s_serv.h"
-#include "event.h"
 #include "hash.h"
 #include "cache.h"
 #include "ircd.h"
@@ -37,7 +34,7 @@
 struct TopConf *conf_cur_block;
 static char *conf_cur_block_name;
 
-static dlink_list conf_items;
+static rb_dlink_list conf_items;
 
 static struct ConfItem *yy_aconf = NULL;
 
@@ -46,10 +43,10 @@ static struct Class *yy_class = NULL;
 static struct remote_conf *yy_shared = NULL;
 static struct server_conf *yy_server = NULL;
 
-static dlink_list yy_aconf_list;
-static dlink_list yy_oper_list;
-static dlink_list yy_shared_list;
-static dlink_list yy_cluster_list;
+static rb_dlink_list yy_aconf_list;
+static rb_dlink_list yy_oper_list;
+static rb_dlink_list yy_shared_list;
+static rb_dlink_list yy_cluster_list;
 static struct oper_conf *yy_oper = NULL;
 
 static struct alias_entry *yy_alias = NULL;
@@ -83,24 +80,24 @@ add_top_conf(const char *name, int (*sfunc) (struct TopConf *),
 {
        struct TopConf *tc;
 
-       tc = MyMalloc(sizeof(struct TopConf));
+       tc = rb_malloc(sizeof(struct TopConf));
 
-       DupString(tc->tc_name, name);
+       tc->tc_name = name;
        tc->tc_sfunc = sfunc;
        tc->tc_efunc = efunc;
        tc->tc_entries = items;
 
-       dlinkAddAlloc(tc, &conf_items);
+       rb_dlinkAddAlloc(tc, &conf_items);
        return 0;
 }
 
 struct TopConf *
 find_top_conf(const char *name)
 {
-       dlink_node *d;
+       rb_dlink_node *d;
        struct TopConf *tc;
 
-       DLINK_FOREACH(d, conf_items.head)
+       RB_DLINK_FOREACH(d, conf_items.head)
        {
                tc = d->data;
                if(strcasecmp(tc->tc_name, name) == 0)
@@ -115,7 +112,7 @@ struct ConfEntry *
 find_conf_item(const struct TopConf *top, const char *name)
 {
        struct ConfEntry *cf;
-       dlink_node *d;
+       rb_dlink_node *d;
 
        if(top->tc_entries)
        {
@@ -130,7 +127,7 @@ find_conf_item(const struct TopConf *top, const char *name)
                }
        }
 
-       DLINK_FOREACH(d, top->tc_items.head)
+       RB_DLINK_FOREACH(d, top->tc_items.head)
        {
                cf = d->data;
                if(strcasecmp(cf->cf_name, name) == 0)
@@ -144,17 +141,16 @@ int
 remove_top_conf(char *name)
 {
        struct TopConf *tc;
-       dlink_node *ptr;
+       rb_dlink_node *ptr;
 
        if((tc = find_top_conf(name)) == NULL)
                return -1;
 
-       if((ptr = dlinkFind(tc, &conf_items)) == NULL)
+       if((ptr = rb_dlinkFind(tc, &conf_items)) == NULL)
                return -1;
 
-       dlinkDestroy(ptr, &conf_items);
-       MyFree(tc->tc_name);
-       MyFree(tc);
+       rb_dlinkDestroy(ptr, &conf_items);
+       rb_free(tc);
 
        return 0;
 }
@@ -226,7 +222,7 @@ conf_set_serverinfo_network_name(void *data)
        if((p = strchr((char *) data, ' ')))
                *p = '\0';
 
-       MyFree(ServerInfo.network_name);
+       rb_free(ServerInfo.network_name);
        DupString(ServerInfo.network_name, (char *) data);
 }
 
@@ -272,7 +268,7 @@ conf_set_modules_module(void *data)
 
        load_one_module((char *) data, 0);
 
-       MyFree(m_bn);
+       rb_free(m_bn);
 #else
        conf_report_error("Ignoring modules::module -- loadable module support not present.");
 #endif
@@ -308,7 +304,7 @@ static struct mode_table umode_table[] = {
        {NULL, 0}
 };
 
-static struct mode_table flag_table[] = {
+static struct mode_table oper_table[] = {
        {"encrypted",           OPER_ENCRYPTED          },
        {"local_kill",          OPER_LOCKILL            },
        {"global_kill",         OPER_GLOBKILL|OPER_LOCKILL      },
@@ -322,10 +318,12 @@ static struct mode_table flag_table[] = {
        {"admin",               OPER_ADMIN              },
        {"hidden_admin",        OPER_HADMIN             },
        {"xline",               OPER_XLINE              },
+       {"resv",                OPER_RESV               },
        {"operwall",            OPER_OPERWALL           },
        {"oper_spy",            OPER_SPY                },
        {"hidden_oper",         OPER_INVIS              },
        {"remoteban",           OPER_REMOTEBAN          },
+       {"mass_notice",         OPER_MASSNOTICE         },
        {NULL, 0}
 };
 
@@ -450,8 +448,8 @@ set_modes_from_table(int *modes, const char *whatis, struct mode_table *tab, con
 static int
 conf_begin_oper(struct TopConf *tc)
 {
-       dlink_node *ptr;
-       dlink_node *next_ptr;
+       rb_dlink_node *ptr;
+       rb_dlink_node *next_ptr;
 
        if(yy_oper != NULL)
        {
@@ -459,14 +457,14 @@ conf_begin_oper(struct TopConf *tc)
                yy_oper = NULL;
        }
 
-       DLINK_FOREACH_SAFE(ptr, next_ptr, yy_oper_list.head)
+       RB_DLINK_FOREACH_SAFE(ptr, next_ptr, yy_oper_list.head)
        {
                free_oper_conf(ptr->data);
-               dlinkDestroy(ptr, &yy_oper_list);
+               rb_dlinkDestroy(ptr, &yy_oper_list);
        }
 
        yy_oper = make_oper_conf();
-       yy_oper->flags |= OPER_ENCRYPTED|OPER_OPERWALL|OPER_REMOTEBAN;
+       yy_oper->flags |= OPER_ENCRYPTED|OPER_RESV|OPER_OPERWALL|OPER_REMOTEBAN|OPER_MASSNOTICE;
 
        return 0;
 }
@@ -475,8 +473,8 @@ static int
 conf_end_oper(struct TopConf *tc)
 {
        struct oper_conf *yy_tmpoper;
-       dlink_node *ptr;
-       dlink_node *next_ptr;
+       rb_dlink_node *ptr;
+       rb_dlink_node *next_ptr;
 
        if(conf_cur_block_name != NULL)
        {
@@ -507,7 +505,7 @@ conf_end_oper(struct TopConf *tc)
         * and host in, yy_oper contains the rest of the information which
         * we need to copy into each element in yy_oper_list
         */
-       DLINK_FOREACH_SAFE(ptr, next_ptr, yy_oper_list.head)
+       RB_DLINK_FOREACH_SAFE(ptr, next_ptr, yy_oper_list.head)
        {
                yy_tmpoper = ptr->data;
 
@@ -537,7 +535,7 @@ conf_end_oper(struct TopConf *tc)
                        yy_tmpoper->rsa_pubkey =
                                (RSA *) PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
 
-                       BIO_set_close(file, BIO_CLOSE);
+                       (void)BIO_set_close(file, BIO_CLOSE);
                        BIO_free(file);
 
                        if(yy_tmpoper->rsa_pubkey == NULL)
@@ -551,7 +549,7 @@ conf_end_oper(struct TopConf *tc)
 #endif
 
                /* all is ok, put it on oper_conf_list */
-               dlinkMoveNode(ptr, &yy_oper_list, &oper_conf_list);
+               rb_dlinkMoveNode(ptr, &yy_oper_list, &oper_conf_list);
        }
 
        free_oper_conf(yy_oper);
@@ -565,7 +563,7 @@ conf_set_oper_flags(void *data)
 {
        conf_parm_t *args = data;
 
-       set_modes_from_table(&yy_oper->flags, "flag", flag_table, args);
+       set_modes_from_table(&yy_oper->flags, "flag", oper_table, args);
 }
 
 static void
@@ -598,7 +596,7 @@ conf_set_oper_user(void *data)
                return;
        }
 
-       dlinkAddAlloc(yy_tmpoper, &yy_oper_list);
+       rb_dlinkAddAlloc(yy_tmpoper, &yy_oper_list);
 }
 
 static void
@@ -607,7 +605,7 @@ conf_set_oper_password(void *data)
        if(yy_oper->passwd)
        {
                memset(yy_oper->passwd, 0, strlen(yy_oper->passwd));
-               MyFree(yy_oper->passwd);
+               rb_free(yy_oper->passwd);
        }
 
        DupString(yy_oper->passwd, (char *) data);
@@ -617,7 +615,7 @@ static void
 conf_set_oper_rsa_public_key_file(void *data)
 {
 #ifdef HAVE_LIBCRYPTO
-       MyFree(yy_oper->rsa_pubkey_file);
+       rb_free(yy_oper->rsa_pubkey_file);
        DupString(yy_oper->rsa_pubkey_file, (char *) data);
 #else
        conf_report_error("Warning -- ignoring rsa_public_key_file (OpenSSL support not available");
@@ -733,7 +731,7 @@ static char *listener_address;
 static int
 conf_begin_listen(struct TopConf *tc)
 {
-       MyFree(listener_address);
+       rb_free(listener_address);
        listener_address = NULL;
        return 0;
 }
@@ -741,7 +739,7 @@ conf_begin_listen(struct TopConf *tc)
 static int
 conf_end_listen(struct TopConf *tc)
 {
-       MyFree(listener_address);
+       rb_free(listener_address);
        listener_address = NULL;
        return 0;
 }
@@ -785,23 +783,23 @@ conf_set_listen_port(void *data)
 static void
 conf_set_listen_address(void *data)
 {
-       MyFree(listener_address);
+       rb_free(listener_address);
        DupString(listener_address, data);
 }
 
 static int
 conf_begin_auth(struct TopConf *tc)
 {
-       dlink_node *ptr;
-       dlink_node *next_ptr;
+       rb_dlink_node *ptr;
+       rb_dlink_node *next_ptr;
 
        if(yy_aconf)
                free_conf(yy_aconf);
 
-       DLINK_FOREACH_SAFE(ptr, next_ptr, yy_aconf_list.head)
+       RB_DLINK_FOREACH_SAFE(ptr, next_ptr, yy_aconf_list.head)
        {
                free_conf(ptr->data);
-               dlinkDestroy(ptr, &yy_aconf_list);
+               rb_dlinkDestroy(ptr, &yy_aconf_list);
        }
 
        yy_aconf = make_conf();
@@ -814,8 +812,8 @@ static int
 conf_end_auth(struct TopConf *tc)
 {
        struct ConfItem *yy_tmp;
-       dlink_node *ptr;
-       dlink_node *next_ptr;
+       rb_dlink_node *ptr;
+       rb_dlink_node *next_ptr;
 
        if(EmptyString(yy_aconf->name))
                DupString(yy_aconf->name, "NOMATCH");
@@ -833,7 +831,7 @@ conf_end_auth(struct TopConf *tc)
        conf_add_class_to_conf(yy_aconf);
        add_conf_by_address(yy_aconf->host, CONF_CLIENT, yy_aconf->user, yy_aconf);
 
-       DLINK_FOREACH_SAFE(ptr, next_ptr, yy_aconf_list.head)
+       RB_DLINK_FOREACH_SAFE(ptr, next_ptr, yy_aconf_list.head)
        {
                yy_tmp = ptr->data;
 
@@ -855,7 +853,7 @@ conf_end_auth(struct TopConf *tc)
                conf_add_class_to_conf(yy_tmp);
 
                add_conf_by_address(yy_tmp->host, CONF_CLIENT, yy_tmp->user, yy_tmp);
-               dlinkDestroy(ptr, &yy_aconf_list);
+               rb_dlinkDestroy(ptr, &yy_aconf_list);
        }
 
        yy_aconf = NULL;
@@ -891,7 +889,7 @@ conf_set_auth_user(void *data)
        }
 
        if(yy_aconf != yy_tmp)
-               dlinkAddAlloc(yy_tmp, &yy_aconf_list);
+               rb_dlinkAddAlloc(yy_tmp, &yy_aconf_list);
 }
 
 static void
@@ -899,7 +897,7 @@ conf_set_auth_passwd(void *data)
 {
        if(yy_aconf->passwd)
                memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
-       MyFree(yy_aconf->passwd);
+       rb_free(yy_aconf->passwd);
        DupString(yy_aconf->passwd, data);
 }
 
@@ -959,7 +957,7 @@ conf_set_auth_spoof(void *data)
                return;
        }
 
-       MyFree(yy_aconf->name);
+       rb_free(yy_aconf->name);
        DupString(yy_aconf->name, data);
        yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
 }
@@ -976,7 +974,7 @@ static void
 conf_set_auth_redir_serv(void *data)
 {
        yy_aconf->flags |= CONF_FLAGS_REDIR;
-       MyFree(yy_aconf->name);
+       rb_free(yy_aconf->name);
        DupString(yy_aconf->name, data);
 }
 
@@ -992,7 +990,7 @@ conf_set_auth_redir_port(void *data)
 static void
 conf_set_auth_class(void *data)
 {
-       MyFree(yy_aconf->className);
+       rb_free(yy_aconf->className);
        DupString(yy_aconf->className, data);
 }
 
@@ -1003,12 +1001,12 @@ conf_set_auth_class(void *data)
 static int
 conf_cleanup_shared(struct TopConf *tc)
 {
-       dlink_node *ptr, *next_ptr;
+       rb_dlink_node *ptr, *next_ptr;
 
-       DLINK_FOREACH_SAFE(ptr, next_ptr, yy_shared_list.head)
+       RB_DLINK_FOREACH_SAFE(ptr, next_ptr, yy_shared_list.head)
        {
                free_remote_conf(ptr->data);
-               dlinkDestroy(ptr, &yy_shared_list);
+               rb_dlinkDestroy(ptr, &yy_shared_list);
        }
 
        if(yy_shared != NULL)
@@ -1071,7 +1069,7 @@ conf_set_shared_oper(void *data)
        else
                DupString(yy_shared->username, username);
 
-       dlinkAddAlloc(yy_shared, &yy_shared_list);
+       rb_dlinkAddAlloc(yy_shared, &yy_shared_list);
        yy_shared = NULL;
 }
 
@@ -1080,20 +1078,20 @@ conf_set_shared_flags(void *data)
 {
        conf_parm_t *args = data;
        int flags = 0;
-       dlink_node *ptr, *next_ptr;
+       rb_dlink_node *ptr, *next_ptr;
 
        if(yy_shared != NULL)
                free_remote_conf(yy_shared);
 
        set_modes_from_table(&flags, "flag", shared_table, args);
 
-       DLINK_FOREACH_SAFE(ptr, next_ptr, yy_shared_list.head)
+       RB_DLINK_FOREACH_SAFE(ptr, next_ptr, yy_shared_list.head)
        {
                yy_shared = ptr->data;
 
                yy_shared->flags = flags;
-               dlinkDestroy(ptr, &yy_shared_list);
-               dlinkAddTail(yy_shared, &yy_shared->node, &shared_conf_list);
+               rb_dlinkDestroy(ptr, &yy_shared_list);
+               rb_dlinkAddTail(yy_shared, &yy_shared->node, &shared_conf_list);
        }
 
        yy_shared = NULL;
@@ -1107,6 +1105,7 @@ conf_begin_connect(struct TopConf *tc)
 
        yy_server = make_server_conf();
        yy_server->port = PORTNUM;
+       yy_server->flags |= SERVER_TB;
 
        if(conf_cur_block_name != NULL)
                DupString(yy_server->name, conf_cur_block_name);
@@ -1153,7 +1152,7 @@ conf_end_connect(struct TopConf *tc)
 #endif
 
        add_server_conf(yy_server);
-       dlinkAdd(yy_server, &yy_server->node, &server_conf_list);
+       rb_dlinkAdd(yy_server, &yy_server->node, &server_conf_list);
 
        yy_server = NULL;
        return 0;
@@ -1162,7 +1161,7 @@ conf_end_connect(struct TopConf *tc)
 static void
 conf_set_connect_host(void *data)
 {
-       MyFree(yy_server->host);
+       rb_free(yy_server->host);
        DupString(yy_server->host, data);
        if (strchr(yy_server->host, ':'))
                yy_server->aftype = AF_INET6;
@@ -1187,7 +1186,7 @@ conf_set_connect_send_password(void *data)
        if(yy_server->spasswd)
        {
                memset(yy_server->spasswd, 0, strlen(yy_server->spasswd));
-               MyFree(yy_server->spasswd);
+               rb_free(yy_server->spasswd);
        }
 
        DupString(yy_server->spasswd, data);
@@ -1199,7 +1198,7 @@ conf_set_connect_accept_password(void *data)
        if(yy_server->passwd)
        {
                memset(yy_server->passwd, 0, strlen(yy_server->passwd));
-               MyFree(yy_server->passwd);
+               rb_free(yy_server->passwd);
        }
        DupString(yy_server->passwd, data);
 }
@@ -1254,7 +1253,7 @@ conf_set_connect_hub_mask(void *data)
 
        DupString(yy_hub->host, data);
        DupString(yy_hub->server, yy_server->name);
-       dlinkAdd(yy_hub, &yy_hub->node, &hubleaf_conf_list);
+       rb_dlinkAdd(yy_hub, &yy_hub->node, &hubleaf_conf_list);
 }
 
 static void
@@ -1270,13 +1269,13 @@ conf_set_connect_leaf_mask(void *data)
 
        DupString(yy_leaf->host, data);
        DupString(yy_leaf->server, yy_server->name);
-       dlinkAdd(yy_leaf, &yy_leaf->node, &hubleaf_conf_list);
+       rb_dlinkAdd(yy_leaf, &yy_leaf->node, &hubleaf_conf_list);
 }
 
 static void
 conf_set_connect_class(void *data)
 {
-       MyFree(yy_server->class_name);
+       rb_free(yy_server->class_name);
        DupString(yy_server->class_name, data);
 }
 
@@ -1301,12 +1300,12 @@ conf_set_exempt_ip(void *data)
 static int
 conf_cleanup_cluster(struct TopConf *tc)
 {
-       dlink_node *ptr, *next_ptr;
+       rb_dlink_node *ptr, *next_ptr;
 
-       DLINK_FOREACH_SAFE(ptr, next_ptr, yy_cluster_list.head)
+       RB_DLINK_FOREACH_SAFE(ptr, next_ptr, yy_cluster_list.head)
        {
                free_remote_conf(ptr->data);
-               dlinkDestroy(ptr, &yy_cluster_list);
+               rb_dlinkDestroy(ptr, &yy_cluster_list);
        }
 
        if(yy_shared != NULL)
@@ -1326,7 +1325,7 @@ conf_set_cluster_name(void *data)
 
        yy_shared = make_remote_conf();
        DupString(yy_shared->server, data);
-       dlinkAddAlloc(yy_shared, &yy_cluster_list);
+       rb_dlinkAddAlloc(yy_shared, &yy_cluster_list);
 
        yy_shared = NULL;
 }
@@ -1336,19 +1335,19 @@ conf_set_cluster_flags(void *data)
 {
        conf_parm_t *args = data;
        int flags = 0;
-       dlink_node *ptr, *next_ptr;
+       rb_dlink_node *ptr, *next_ptr;
 
        if(yy_shared != NULL)
                free_remote_conf(yy_shared);
 
        set_modes_from_table(&flags, "flag", cluster_table, args);
 
-       DLINK_FOREACH_SAFE(ptr, next_ptr, yy_cluster_list.head)
+       RB_DLINK_FOREACH_SAFE(ptr, next_ptr, yy_cluster_list.head)
        {
                yy_shared = ptr->data;
                yy_shared->flags = flags;
-               dlinkAddTail(yy_shared, &yy_shared->node, &cluster_conf_list);
-               dlinkDestroy(ptr, &yy_cluster_list);
+               rb_dlinkAddTail(yy_shared, &yy_shared->node, &cluster_conf_list);
+               rb_dlinkDestroy(ptr, &yy_cluster_list);
        }
 
        yy_shared = NULL;
@@ -1528,14 +1527,6 @@ conf_set_serverhide_links_delay(void *data)
 {
        int val = *(unsigned int *) data;
 
-       if((val > 0) && ConfigServerHide.links_disabled == 1)
-       {
-               eventAddIsh("cache_links", cache_links, NULL, val);
-               ConfigServerHide.links_disabled = 0;
-       }
-       else if(val != ConfigServerHide.links_delay)
-               eventUpdate("cache_links", val);
-
        ConfigServerHide.links_delay = val;
 }
 
@@ -1543,9 +1534,9 @@ static int
 conf_begin_service(struct TopConf *tc)
 {
        struct Client *target_p;
-       dlink_node *ptr;
+       rb_dlink_node *ptr;
 
-       DLINK_FOREACH(ptr, global_serv_list.head)
+       RB_DLINK_FOREACH(ptr, global_serv_list.head)
        {
                target_p = ptr->data;
 
@@ -1582,30 +1573,16 @@ conf_set_service_name(void *data)
        }
 
        DupString(tmp, data);
-       dlinkAddAlloc(tmp, &service_list);
+       rb_dlinkAddAlloc(tmp, &service_list);
 
        if((target_p = find_server(NULL, tmp)))
                target_p->flags |= FLAGS_SERVICE;
 }
 
-static int
-alias_hash(const char *p)
-{
-       int hash_val = 0;
-
-       while (*p)
-       {
-               hash_val += ((int) (*p) & 0xDF);
-               p++;
-       }
-
-       return (hash_val % MAX_MSG_HASH);
-}
-
 static int
 conf_begin_alias(struct TopConf *tc)
 {
-       yy_alias = MyMalloc(sizeof(struct alias_entry));
+       yy_alias = rb_malloc(sizeof(struct alias_entry));
 
        if (conf_cur_block_name != NULL)
                DupString(yy_alias->name, conf_cur_block_name);
@@ -1619,8 +1596,6 @@ conf_begin_alias(struct TopConf *tc)
 static int
 conf_end_alias(struct TopConf *tc)
 {
-       int hashval;
-
        if (yy_alias == NULL)
                return -1;
 
@@ -1628,7 +1603,7 @@ conf_end_alias(struct TopConf *tc)
        {
                conf_report_error("Ignoring alias -- must have a name.");
 
-               MyFree(yy_alias);
+               rb_free(yy_alias);
 
                return -1;
        }
@@ -1637,14 +1612,15 @@ conf_end_alias(struct TopConf *tc)
        {
                conf_report_error("Ignoring alias -- must have a target.");
 
-               MyFree(yy_alias);
+               rb_free(yy_alias);
 
                return -1;
        }
 
-       hashval = alias_hash(yy_alias->name);
+       if (!alias_dict)
+               alias_dict = irc_dictionary_create(strcasecmp);
 
-       dlinkAddAlloc(yy_alias, &alias_hash_table[hashval]);
+       irc_dictionary_add(alias_dict, yy_alias->name, yy_alias);
 
        return 0;
 }
@@ -1681,8 +1657,8 @@ conf_set_blacklist_reason(void *data)
        if (yy_blacklist_host && yy_blacklist_reason)
        {
                new_blacklist(yy_blacklist_host, yy_blacklist_reason);
-               MyFree(yy_blacklist_host);
-               MyFree(yy_blacklist_reason);
+               rb_free(yy_blacklist_host);
+               rb_free(yy_blacklist_reason);
                yy_blacklist_host = NULL;
                yy_blacklist_reason = NULL;
        }
@@ -1738,7 +1714,7 @@ conf_end_block(struct TopConf *tc)
        if(tc->tc_efunc)
                return tc->tc_efunc(tc);
 
-       MyFree(conf_cur_block_name);
+       rb_free(conf_cur_block_name);
        return 0;
 }
 
@@ -1757,7 +1733,7 @@ conf_set_generic_string(void *data, int len, void *location)
        if(len && strlen(input) > len)
                input[len] = '\0';
 
-       MyFree(*loc);
+       rb_free(*loc);
        DupString(*loc, input);
 }
 
@@ -1870,14 +1846,14 @@ add_conf_item(const char *topconf, const char *name, int type, void (*func) (voi
        if((cf = find_conf_item(tc, name)) != NULL)
                return -1;
 
-       cf = MyMalloc(sizeof(struct ConfEntry));
+       cf = rb_malloc(sizeof(struct ConfEntry));
 
-       DupString(cf->cf_name, name);
+       cf->cf_name = name;
        cf->cf_type = type;
        cf->cf_func = func;
        cf->cf_arg = NULL;
 
-       dlinkAddAlloc(cf, &tc->tc_items);
+       rb_dlinkAddAlloc(cf, &tc->tc_items);
 
        return 0;
 }
@@ -1887,7 +1863,7 @@ remove_conf_item(const char *topconf, const char *name)
 {
        struct TopConf *tc;
        struct ConfEntry *cf;
-       dlink_node *ptr;
+       rb_dlink_node *ptr;
 
        if((tc = find_top_conf(topconf)) == NULL)
                return -1;
@@ -1895,11 +1871,11 @@ remove_conf_item(const char *topconf, const char *name)
        if((cf = find_conf_item(tc, name)) == NULL)
                return -1;
 
-       if((ptr = dlinkFind(cf, &tc->tc_items)) == NULL)
+       if((ptr = rb_dlinkFind(cf, &tc->tc_items)) == NULL)
                return -1;
 
-       dlinkDestroy(ptr, &tc->tc_items);
-       MyFree(cf);
+       rb_dlinkDestroy(ptr, &tc->tc_items);
+       rb_free(cf);
 
        return 0;
 }
@@ -1910,7 +1886,6 @@ static struct ConfEntry conf_serverinfo_table[] =
        { "description",        CF_QSTRING, NULL, 0, &ServerInfo.description    },
        { "network_desc",       CF_QSTRING, NULL, 0, &ServerInfo.network_desc   },
        { "hub",                CF_YESNO,   NULL, 0, &ServerInfo.hub            },
-       { "use_ts6",            CF_YESNO,   NULL, 0, &ServerInfo.use_ts6        },
 
        { "network_name",       CF_QSTRING, conf_set_serverinfo_network_name,   0, NULL },
        { "name",               CF_QSTRING, conf_set_serverinfo_name,   0, NULL },
@@ -1918,6 +1893,8 @@ static struct ConfEntry conf_serverinfo_table[] =
        { "vhost",              CF_QSTRING, conf_set_serverinfo_vhost,  0, NULL },
        { "vhost6",             CF_QSTRING, conf_set_serverinfo_vhost6, 0, NULL },
 
+       { "max_clients",        CF_INT,     NULL, 0, &ServerInfo.max_clients    },
+
        { "\0", 0, NULL, 0, NULL }
 };
 
@@ -2033,7 +2010,6 @@ static struct ConfEntry conf_general_table[] =
        { "connect_timeout",    CF_TIME,  NULL, 0, &ConfigFileEntry.connect_timeout     },
        { "default_floodcount", CF_INT,   NULL, 0, &ConfigFileEntry.default_floodcount  },
        { "disable_auth",       CF_YESNO, NULL, 0, &ConfigFileEntry.disable_auth        },
-       { "dot_in_ip6_addr",    CF_YESNO, NULL, 0, &ConfigFileEntry.dot_in_ip6_addr     },
        { "dots_in_ident",      CF_INT,   NULL, 0, &ConfigFileEntry.dots_in_ident       },
        { "failed_oper_notice", CF_YESNO, NULL, 0, &ConfigFileEntry.failed_oper_notice  },
        { "glines",             CF_YESNO, NULL, 0, &ConfigFileEntry.glines              },
@@ -2041,7 +2017,6 @@ static struct ConfEntry conf_general_table[] =
        { "gline_min_cidr6",    CF_INT,   NULL, 0, &ConfigFileEntry.gline_min_cidr6     },
        { "gline_time",         CF_TIME,  NULL, 0, &ConfigFileEntry.gline_time          },
        { "global_snotices",    CF_YESNO, NULL, 0, &ConfigFileEntry.global_snotices     },
-       { "idletime",           CF_TIME,  NULL, 0, &ConfigFileEntry.idletime            },
        { "hide_spoof_ips",     CF_YESNO, NULL, 0, &ConfigFileEntry.hide_spoof_ips      },
        { "dline_with_reason",  CF_YESNO, NULL, 0, &ConfigFileEntry.dline_with_reason   },
        { "kline_with_reason",  CF_YESNO, NULL, 0, &ConfigFileEntry.kline_with_reason   },
@@ -2051,6 +2026,7 @@ static struct ConfEntry conf_general_table[] =
        { "max_nick_time",      CF_TIME,  NULL, 0, &ConfigFileEntry.max_nick_time       },
        { "max_nick_changes",   CF_INT,   NULL, 0, &ConfigFileEntry.max_nick_changes    },
        { "max_targets",        CF_INT,   NULL, 0, &ConfigFileEntry.max_targets         },
+       { "max_unknown_ip",     CF_INT,   NULL, 0, &ConfigFileEntry.max_unknown_ip      },
        { "min_nonwildcard",    CF_INT,   NULL, 0, &ConfigFileEntry.min_nonwildcard     },
        { "nick_delay",         CF_TIME,  NULL, 0, &ConfigFileEntry.nick_delay          },
        { "no_oper_flood",      CF_YESNO, NULL, 0, &ConfigFileEntry.no_oper_flood       },
@@ -2083,7 +2059,6 @@ static struct ConfEntry conf_channel_table[] =
        { "default_split_user_count",   CF_INT,  NULL, 0, &ConfigChannel.default_split_user_count        },
        { "default_split_server_count", CF_INT,  NULL, 0, &ConfigChannel.default_split_server_count },
        { "burst_topicwho",     CF_YESNO, NULL, 0, &ConfigChannel.burst_topicwho        },
-       { "invite_ops_only",    CF_YESNO, NULL, 0, &ConfigChannel.invite_ops_only       },
        { "kick_on_split_riding", CF_YESNO, NULL, 0, &ConfigChannel.kick_on_split_riding },
        { "knock_delay",        CF_TIME,  NULL, 0, &ConfigChannel.knock_delay           },
        { "knock_delay_channel",CF_TIME,  NULL, 0, &ConfigChannel.knock_delay_channel   },