updates.
[silc.git] / apps / silcd / server.h
index 7d38a7e71aeeb68152845f5fc867e22e329c9d03..1b83e1a836216f968e0b4fd3fad50e784e18665d 100644 (file)
@@ -4,7 +4,7 @@
 
   Author: Pekka Riikonen <priikone@poseidon.pspt.fi>
 
-  Copyright (C) 1997 - 2000 Pekka Riikonen
+  Copyright (C) 1997 - 2001 Pekka Riikonen
 
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -68,17 +68,19 @@ typedef struct {
 /* This macro is used to send notify messages with formatted string. The
    string is formatted with arguments and the formatted string is sent as
    argument. */
-#define SILC_SERVER_SEND_NOTIFY(server, sock, type, fmt)                   \
-do {                                                                       \
-  char *__fmt__ = silc_format fmt;                                         \
-  silc_server_send_notify(server, sock, type, 1, __fmt__, strlen(__fmt__)); \
-  silc_free(__fmt__);                                                      \
+#define SILC_SERVER_SEND_NOTIFY(server, sock, type, fmt)       \
+do {                                                           \
+  char *__fmt__ = silc_format fmt;                             \
+  silc_server_send_notify(server, sock, FALSE,                         \
+                         type, 1, __fmt__, strlen(__fmt__));   \
+  silc_free(__fmt__);                                          \
 } while(0);
 
 /* Prototypes */
 int silc_server_alloc(SilcServer *new_server);
 void silc_server_free(SilcServer server);
 int silc_server_init(SilcServer server);
+void silc_server_daemonise(SilcServer server);
 void silc_server_run(SilcServer server);
 void silc_server_stop(SilcServer server);
 void silc_server_packet_parse(SilcPacketParserContext *parser_context);
@@ -87,11 +89,19 @@ void silc_server_packet_parse_type(SilcServer server,
                                   SilcPacketContext *packet);
 void silc_server_close_connection(SilcServer server,
                                  SilcSocketConnection sock);
+void silc_server_free_client_data(SilcServer server, 
+                                 SilcSocketConnection sock,
+                                 SilcClientEntry user_data, char *signoff);
 void silc_server_free_sock_user_data(SilcServer server, 
                                     SilcSocketConnection sock);
+int silc_server_channel_has_global(SilcChannelEntry channel);
+int silc_server_channel_has_local(SilcChannelEntry channel);
+int silc_server_remove_clients_by_server(SilcServer server, 
+                                        SilcServerEntry entry);
 void silc_server_remove_from_channels(SilcServer server, 
                                      SilcSocketConnection sock,
-                                     SilcClientEntry client);
+                                     SilcClientEntry client,
+                                     char *signoff_message);
 int silc_server_remove_from_one_channel(SilcServer server, 
                                        SilcSocketConnection sock,
                                        SilcChannelEntry channel,
@@ -105,9 +115,24 @@ void silc_server_disconnect_remote(SilcServer server,
 SilcChannelEntry silc_server_create_new_channel(SilcServer server, 
                                                SilcServerID *router_id,
                                                char *cipher, 
-                                               char *channel_name);
+                                               char *channel_name,
+                                               int broadcast);
+SilcChannelEntry 
+silc_server_create_new_channel_with_id(SilcServer server, 
+                                      char *cipher, 
+                                      char *channel_name,
+                                      SilcChannelID *channel_id,
+                                      int broadcast);
 void silc_server_create_channel_key(SilcServer server, 
                                    SilcChannelEntry channel,
                                    unsigned int key_len);
+SilcChannelEntry silc_server_save_channel_key(SilcServer server,
+                                             SilcBuffer key_payload,
+                                             SilcChannelEntry channel);
+void silc_server_perform_heartbeat(SilcSocketConnection sock,
+                                  void *hb_context);
+void silc_server_announce_servers(SilcServer server);
+void silc_server_announce_clients(SilcServer server);
+void silc_server_announce_channels(SilcServer server);
 
 #endif