updates. New data types.
[silc.git] / apps / silcd / serverconfig.h
index ef26de850b7ee22fcffa9180458a5a236d3499fb..0a2c714770a018a72b5614274c72b60aba7836d3 100644 (file)
@@ -25,8 +25,8 @@
 typedef struct SilcServerConfigSectionAlgStruct {
   char *alg_name;
   char *sim_name;
-  unsigned int block_len;
-  unsigned int key_len;
+  uint32 block_len;
+  uint32 key_len;
   struct SilcServerConfigSectionAlgStruct *next;
   struct SilcServerConfigSectionAlgStruct *prev;
 #define SILC_CONFIG_SERVER_MODNAME "builtin"
@@ -37,7 +37,7 @@ typedef struct {
   char *server_name;
   char *server_ip;
   char *location;
-  unsigned short port;
+  uint16 port;
 } SilcServerConfigSectionServerInfo;
 
 /* Holds server's administrative information from config file */
@@ -52,7 +52,7 @@ typedef struct {
 typedef struct SilcServerConfigSectionListenPortStruct {
   char *host;
   char *remote_ip;
-  unsigned short port;
+  uint16 port;
   struct SilcServerConfigSectionListenPortStruct *next;
   struct SilcServerConfigSectionListenPortStruct *prev;
 } SilcServerConfigSectionListenPort;
@@ -68,7 +68,7 @@ typedef struct {
 typedef struct SilcServerConfigSectionLoggingStruct {
   char *logtype;
   char *filename;
-  unsigned int maxsize;
+  uint32 maxsize;
   struct SilcServerConfigSectionLoggingStruct *next;
   struct SilcServerConfigSectionLoggingStruct *prev;
 
@@ -81,10 +81,10 @@ typedef struct SilcServerConfigSectionLoggingStruct {
 
 /* Holds all configured connection classes */
 typedef struct SilcServerConfigSectionConnectionClassStruct {
-  unsigned int class;
-  unsigned int ping_freq;
-  unsigned int connect_freq;
-  unsigned int max_links;
+  uint32 class;
+  uint32 ping_freq;
+  uint32 connect_freq;
+  uint32 max_links;
   struct SilcServerConfigSectionConnectionClassStruct *next;
   struct SilcServerConfigSectionConnectionClassStruct *prev;
 } SilcServerConfigSectionConnectionClass;
@@ -95,10 +95,11 @@ typedef struct SilcServerConfigSectionConnectionClassStruct {
 /* Holds all client authentication data from config file */
 typedef struct SilcServerConfigSectionClientConnectionStruct {
   char *host;
-  int auth_meth;
-  char *auth_data;
-  unsigned short port;
-  unsigned int class;
+  SilcAuthMethod auth_meth;
+  void *auth_data;
+  uint32 auth_data_len;
+  uint16 port;
+  uint32 class;
   struct SilcServerConfigSectionClientConnectionStruct *next;
   struct SilcServerConfigSectionClientConnectionStruct *prev;
 } SilcServerConfigSectionClientConnection;
@@ -106,10 +107,11 @@ typedef struct SilcServerConfigSectionClientConnectionStruct {
 /* Hols all server's administrators authentication data from config file */
 typedef struct SilcServerConfigSectionAdminConnectionStruct {
   char *host;
-  int auth_meth;
-  char *auth_data;
+  char *username;
   char *nickname;
-  unsigned int class;
+  SilcAuthMethod auth_meth;
+  void *auth_data;
+  uint32 auth_data_len;
   struct SilcServerConfigSectionAdminConnectionStruct *next;
   struct SilcServerConfigSectionAdminConnectionStruct *prev;
 } SilcServerConfigSectionAdminConnection;
@@ -117,11 +119,12 @@ typedef struct SilcServerConfigSectionAdminConnectionStruct {
 /* Holds all configured server/router connections from config file */
 typedef struct SilcServerConfigSectionServerConnectionStruct {
   char *host;
-  int auth_meth;
-  char *auth_data;
-  unsigned short port;
+  SilcAuthMethod auth_meth;
+  void *auth_data;
+  uint32 auth_data_len;
+  uint16 port;
   char *version;
-  unsigned int class;
+  uint32 class;
   int initiator;
   struct SilcServerConfigSectionServerConnectionStruct *next;
   struct SilcServerConfigSectionServerConnectionStruct *prev;
@@ -132,15 +135,9 @@ typedef struct {
   char *host;
   char *time;
   char *comment;
-  unsigned short port;
+  uint16 port;
 } SilcServerConfigSectionDenyConnection;
 
-/* Holds all client redirections from config file */
-typedef struct {
-  char *host;
-  unsigned short port;
-} SilcServerConfigSectionRedirectClient;
-
 /* Holds motd file */
 typedef struct {
   char *motd_file;
@@ -164,6 +161,7 @@ typedef struct {
   SilcServerConfigSectionAlg *cipher;
   SilcServerConfigSectionAlg *pkcs;
   SilcServerConfigSectionAlg *hash_func;
+  SilcServerConfigSectionAlg *hmac;
   SilcServerConfigSectionServerInfo *server_info;
   SilcServerConfigSectionAdminInfo *admin_info;
   SilcServerConfigSectionListenPort *listen_port;
@@ -175,7 +173,6 @@ typedef struct {
   SilcServerConfigSectionServerConnection *routers;
   SilcServerConfigSectionAdminConnection *admins;
   SilcServerConfigSectionDenyConnection *denied;
-  SilcServerConfigSectionRedirectClient *redirect;
   SilcServerConfigSectionMotd *motd;
 } SilcServerConfigObject;
 
@@ -187,6 +184,7 @@ typedef enum {
   SILC_CONFIG_SERVER_SECTION_TYPE_CIPHER,
   SILC_CONFIG_SERVER_SECTION_TYPE_PKCS,
   SILC_CONFIG_SERVER_SECTION_TYPE_HASH_FUNCTION,
+  SILC_CONFIG_SERVER_SECTION_TYPE_HMAC,
   SILC_CONFIG_SERVER_SECTION_TYPE_SERVER_INFO,
   SILC_CONFIG_SERVER_SECTION_TYPE_ADMIN_INFO,
   SILC_CONFIG_SERVER_SECTION_TYPE_LISTEN_PORT,
@@ -198,7 +196,6 @@ typedef enum {
   SILC_CONFIG_SERVER_SECTION_TYPE_ROUTER_CONNECTION,
   SILC_CONFIG_SERVER_SECTION_TYPE_ADMIN_CONNECTION,
   SILC_CONFIG_SERVER_SECTION_TYPE_DENY_CONNECTION,
-  SILC_CONFIG_SERVER_SECTION_TYPE_REDIRECT_CLIENT,
   SILC_CONFIG_SERVER_SECTION_TYPE_MOTD,
 } SilcServerConfigSectionType;
 
@@ -206,7 +203,7 @@ typedef enum {
 typedef struct {
   const char *section;
   SilcServerConfigSectionType type;
-  unsigned int maxfields;
+  int maxfields;
 } SilcServerConfigSection;
 
 /* LIst of all possible config sections in SILC server. */
@@ -216,7 +213,7 @@ extern SilcServerConfigSection silc_server_config_sections[];
    from a file to this structure before parsing it further. */
 typedef struct SilcServerConfigParseStruct {
   SilcBuffer line;
-  unsigned int linenum;
+  int linenum;
   SilcServerConfigSection *section;
   struct SilcServerConfigParseStruct *next;
   struct SilcServerConfigParseStruct *prev;
@@ -249,11 +246,12 @@ int silc_server_config_parse(SilcServerConfig config, SilcBuffer buffer,
                             SilcServerConfigParse *return_config);
 int silc_server_config_parse_lines(SilcServerConfig config, 
                                   SilcServerConfigParse parse_config);
-int silc_server_config_check_sections(unsigned int checkmask);
+int silc_server_config_check_sections(uint32 checkmask);
 void silc_server_config_setlogfiles(SilcServerConfig config);
 void silc_server_config_register_ciphers(SilcServerConfig config);
 void silc_server_config_register_pkcs(SilcServerConfig config);
 void silc_server_config_register_hashfuncs(SilcServerConfig config);
+void silc_server_config_register_hmacs(SilcServerConfig config);
 SilcServerConfigSectionClientConnection *
 silc_server_config_find_client_conn(SilcServerConfig config, 
                                    char *host, int port);
@@ -263,6 +261,9 @@ silc_server_config_find_server_conn(SilcServerConfig config,
 SilcServerConfigSectionServerConnection *
 silc_server_config_find_router_conn(SilcServerConfig config, 
                                    char *host, int port);
+SilcServerConfigSectionAdminConnection *
+silc_server_config_find_admin(SilcServerConfig config,
+                             char *host, char *username, char *nickname);
 void silc_server_config_print();
 
 #endif