X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=apps%2Fsilcd%2Fserver_util.h;h=393f09003e6f558b70cdfefe8be4c5956104e912;hp=ec434bc2ef99bb9b64da9e9cbb27809ac4818772;hb=382d15d447b7a95390decfa783836ae4fe255b3d;hpb=c4404f118fffc9777f5e2166ef22dc720e16d571 diff --git a/apps/silcd/server_util.h b/apps/silcd/server_util.h index ec434bc2..393f0900 100644 --- a/apps/silcd/server_util.h +++ b/apps/silcd/server_util.h @@ -20,12 +20,12 @@ #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); @@ -34,25 +34,32 @@ bool silc_server_remove_clients_by_server(SilcServer server, attempt to figure out which clients really are originated from the `from' and which are originated from a server that we have connection to, when we've acting as backup router. If it is FALSE the `to' will - be the new source. This function also removes the clients that are - *really* originated from `from' if `remove_from' is TRUE. These are - clients that the `from' owns, and not just clients that are behind - the `from'. If `from' is NULL then all non-local clients are switched - to `to'. */ + be the new source. */ void silc_server_update_clients_by_server(SilcServer server, SilcServerEntry from, SilcServerEntry to, - bool resolve_real_server, - bool remove_from); + bool resolve_real_server); /* Updates servers that are from `from' to be originated from `to'. This - will also update the server's connection to `to's connection. If - `local_toggle_enabled' is TRUE then local server's connections are - enabled, if FALSE they are disabled. */ -void silc_server_update_servers_by_server(SilcServer server, + will also update the server's connection to `to's connection. */ +void silc_server_update_servers_by_server(SilcServer server, SilcServerEntry from, - SilcServerEntry to, - bool local_toggle_enabled); + SilcServerEntry to); + +/* Toggles the enabled/disabled status of local server connections. Packets + can be sent to the servers when `toggle_enabled' is TRUE and will be + dropped if `toggle_enabled' is FALSE, after this function is called. */ +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, @@ -188,4 +195,16 @@ silc_server_find_socket_by_host(SilcServer server, SilcSocketType type, const char *ip, SilcUInt16 port); +/* This function can be used to match the invite and ban lists. */ +bool silc_server_inviteban_match(SilcServer server, SilcHashTable list, + SilcUInt8 type, void *check); + +/* Process invite or ban information */ +void silc_server_inviteban_process(SilcServer server, SilcHashTable list, + SilcUInt8 action, SilcArgumentPayload args); + +/* Destructor for invite or ban list entrys */ +void silc_server_inviteban_destruct(void *key, void *context, + void *user_context); + #endif /* SERVER_UTIL_H */