]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/utils.h
Allow support for multiple dns results per request. This is a significant change...
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / utils.h
index e031fdeb51231978776e4232b3a3d2b61c6c07ed..3a36a2e202f3eec040b45d8de476da75d862a1d0 100644 (file)
@@ -1,3 +1,16 @@
+/*       +------------------------------------+
+ *       | Inspire Internet Relay Chat Daemon |
+ *       +------------------------------------+
+ *
+ *  InspIRCd: (C) 2002-2007 InspIRCd Development Team
+ * See: http://www.inspircd.org/wiki/index.php/Credits
+ *
+ * This program is free but copyrighted software; see
+ *            the file COPYING for details.
+ *
+ * ---------------------------------------------------
+ */
+
 #ifndef __ST__UTIL__
 #define __ST__UTIL__
 
@@ -16,7 +29,11 @@ class ModuleSpanningTree;
 /* This hash_map holds the hash equivalent of the server
  * tree, used for rapid linear lookups.
  */
+#ifdef WINDOWS
+typedef nspace::hash_map<std::string, TreeServer*, nspace::hash_compare<string, less<string> > > server_hash;
+#else
 typedef nspace::hash_map<std::string, TreeServer*, nspace::hash<string>, irc::StrHashComp> server_hash;
+#endif
 
 typedef std::map<TreeServer*,TreeServer*> TreeServerList;
 
@@ -38,6 +55,9 @@ class SpanningTreeUtilities
        /** Creator module
         */
        ModuleSpanningTree* Creator;
+       /** Remote servers that are currently bursting
+        */
+       server_hash RemoteServersBursting;
        /** Flatten links and /MAP for non-opers
         */
        bool FlatLinks;
@@ -50,9 +70,16 @@ class SpanningTreeUtilities
        /** Synchronize timestamps between servers
         */
        bool EnableTimeSync;
+       /** Make snomasks +CQ quiet during bursts and splits
+        */
+       bool quiet_bursts;
        /** Socket bindings for listening sockets
         */
        std::vector<TreeSocket*> Bindings;
+       /* Number of seconds that a server can go without ping
+        * before opers are warned of high latency.
+        */
+       int PingWarnTime;
        /** This variable represents the root of the server tree
         */
        TreeServer *TreeRoot;
@@ -62,6 +89,9 @@ class SpanningTreeUtilities
        /** Hash of currently connected servers by name
         */
        server_hash serverlist;
+       /** Hash of servers currently bursting but not initialized as connected
+        */
+       std::map<irc::string,TreeSocket*> burstingserverlist;
        /** Holds the data from the <link> tags in the conf
         */
        std::vector<Link> LinkBlocks;
@@ -85,6 +115,18 @@ class SpanningTreeUtilities
         */
        std::vector<std::string> hooknames;
 
+       /** True (default) if we are to use challenge-response HMAC
+        * to authenticate passwords.
+        *
+        * NOTE: This defaults to on, but should be turned off if
+        * you are linking to an older version of inspircd.
+        */
+       bool ChallengeResponse;
+
+       /** Ping frequency of server to server links
+        */
+       int PingFreq;
+
        /** Initialise utility class
         */
        SpanningTreeUtilities(InspIRCd* Instance, ModuleSpanningTree* Creator);
@@ -121,6 +163,12 @@ class SpanningTreeUtilities
        /** Find a server by name
         */
        TreeServer* FindServer(const std::string &ServerName);
+       /** Find a remote bursting server by name
+        */
+       TreeServer* FindRemoteBurstServer(TreeServer* Server);
+       /** Set a remote server to bursting or not bursting
+        */
+       void SetRemoteBursting(TreeServer* Server, bool bursting);
        /** Find a route to a server by name
         */
        TreeServer* BestRouteTo(const std::string &ServerName);
@@ -139,6 +187,12 @@ class SpanningTreeUtilities
        /** Refresh the IP cache used for allowing inbound connections
         */
        void RefreshIPCache();
+
+       TreeSocket* FindBurstingServer(const std::string &ServerName);
+
+       void AddBurstingServer(const std::string &ServerName, TreeSocket* s);
+
+       void DelBurstingServer(TreeSocket* s);
 };
 
 #endif