Added silc_server_remove_servers_by_server to remove servers
[silc.git] / apps / silcd / server_util.h
index 6d906485d32ddca51f9195181ec4c501734db73f..6831ce31407caf7340f94beace0c73c721489f35 100644 (file)
 #ifndef SERVER_UTIL_H
 #define SERVER_UTIL_H
 
-/* This function is used to remove all client entries by the server `entry'.
-   This is called when the connection is lost to the server. In this case
-   we must invalidate all the client entries owned by the server `entry'. 
-   If the `server_signoff' is TRUE then the SERVER_SIGNOFF notify is
+/* This function removes all client entries that are originated from
+   `router' and are owned by `entry'.  `router' and `entry' can be same
+   too.  If `server_signoff' is TRUE then SERVER_SIGNOFF notify is 
    distributed to our local clients. */
-bool silc_server_remove_clients_by_server(SilcServer server, 
+bool silc_server_remove_clients_by_server(SilcServer server,
+                                         SilcServerEntry router,
                                          SilcServerEntry entry,
                                          bool server_signoff);
 
@@ -57,6 +57,15 @@ void silc_server_update_servers_by_server(SilcServer server,
 void silc_server_local_servers_toggle_enabled(SilcServer server,
                                              bool toggle_enabled);
 
+/* Removes servers that are originated from the `from'.  The server
+   entry is deleted in this function.  If `remove_clients' is TRUE then
+   all clients originated from the server are removed too, and server
+   signoff is sent.  Note that this does not remove the `from'.  This
+   also does not remove locally connected servers. */
+void silc_server_remove_servers_by_server(SilcServer server,
+                                         SilcServerEntry from,
+                                         bool remove_clients);
+
 /* Removes channels that are from `from. */
 void silc_server_remove_channels_by_server(SilcServer server, 
                                           SilcServerEntry from);