]> 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 291d7010ddb9a6e7ad628592733751e3485fabe8..3a36a2e202f3eec040b45d8de476da75d862a1d0 100644 (file)
@@ -29,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;
 
@@ -51,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;
@@ -63,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;
@@ -75,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;
@@ -98,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);
@@ -134,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);
@@ -152,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