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
/* General definitions */
+/* SILC port */
+#define SILC_PORT 768;
+
/* Server and router. Used internally by the code. */
#define SILC_SERVER 0
#define SILC_ROUTER 1
unsigned long retry_interval_min;
unsigned long retry_interval_min_usec;
unsigned long retry_interval_max;
- unsigned int retry_keep_trying;
+ char retry_keep_trying;
unsigned long protocol_timeout;
unsigned long protocol_timeout_usec;
+
+ char require_reverse_mapping;
} *SilcServerParams;
/* Macros */
/* 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);
void silc_server_packet_parse_type(SilcServer server,
SilcSocketConnection sock,
SilcPacketContext *packet);
+void silc_server_create_connection(SilcServer server,
+ char *remote_host, unsigned int port);
void silc_server_close_connection(SilcServer server,
SilcSocketConnection sock);
+void silc_server_free_client_data(SilcServer server,
+ SilcSocketConnection sock,
+ SilcClientEntry client, 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,
+ int notify,
+ char *signoff_message,
+ int keygen);
int silc_server_remove_from_one_channel(SilcServer server,
SilcSocketConnection sock,
SilcChannelEntry channel,
SilcChannelEntry silc_server_create_new_channel(SilcServer server,
SilcServerID *router_id,
char *cipher,
- char *channel_name);
+ char *hmac,
+ char *channel_name,
+ int broadcast);
+SilcChannelEntry
+silc_server_create_new_channel_with_id(SilcServer server,
+ char *cipher,
+ char *hmac,
+ 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);
+void silc_server_get_users_on_channel(SilcServer server,
+ SilcChannelEntry channel,
+ SilcBuffer *user_list,
+ SilcBuffer *mode_list,
+ unsigned int *user_count);
+void silc_server_save_users_on_channel(SilcServer server,
+ SilcSocketConnection sock,
+ SilcChannelEntry channel,
+ SilcClientID *noadd,
+ SilcBuffer user_list,
+ SilcBuffer mode_list,
+ unsigned int user_count);
#endif