updates.
[silc.git] / apps / silcd / serverid.c
index 89ea6b82a5807e40970eb343d62d7afabf138efa..12cebb6a57ec3d0ebe26ea4dbd73f36c28b651ec 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
   GNU General Public License for more details.
 
 */
-/*
- * $Id$
- * $Log$
- * Revision 1.2  2001/02/02 13:34:45  priikone
- *     updates.
- *
- * Revision 1.1.1.1  2000/06/27 11:36:56  priikone
- *     Importet from internal CVS/Added Log headers.
- *
- *
- */
+/* $Id$ */
 
 #include "serverincludes.h"
 
@@ -42,10 +32,6 @@ void silc_id_create_server_id(int sock, SilcRng rng, SilcServerID **new_id)
   SILC_LOG_DEBUG(("Creating new Server ID"));
 
   *new_id = silc_calloc(1, sizeof(**new_id));
-  if (*new_id == NULL) {
-    SILC_LOG_ERROR(("Could not allocate new Server ID"));
-    return;
-  }
 
   /* Get IP address */
   len = sizeof(server);
@@ -58,7 +44,9 @@ void silc_id_create_server_id(int sock, SilcRng rng, SilcServerID **new_id)
   }
 
   /* Create the ID */
-  (*new_id)->ip = server.sin_addr;
+  /* XXX Does not support IPv6 */
+  SILC_PUT32_MSB(server.sin_addr.s_addr, (*new_id)->ip.data);
+  (*new_id)->ip.data_len = 4;
   (*new_id)->port = server.sin_port;
   (*new_id)->rnd = silc_rng_get_rn16(rng);
 
@@ -76,16 +64,13 @@ void silc_id_create_client_id(SilcServerID *server_id, SilcRng rng,
   SILC_LOG_DEBUG(("Creating new Client ID"));
 
   *new_id = silc_calloc(1, sizeof(**new_id));
-  if (*new_id == NULL) {
-    SILC_LOG_ERROR(("Could not allocate new Client ID"));
-    return;
-  }
 
   /* Create hash of the nickanem */
   silc_hash_make(md5hash, nickname, strlen(nickname), hash);
 
   /* Create the ID */
-  (*new_id)->ip.s_addr = server_id->ip.s_addr;
+  memcpy((*new_id)->ip.data, server_id->ip.data, server_id->ip.data_len);
+  (*new_id)->ip.data_len = server_id->ip.data_len;
   (*new_id)->rnd = silc_rng_get_byte(rng);
   memcpy((*new_id)->hash, hash, CLIENTID_HASH_LEN);
 
@@ -100,13 +85,10 @@ void silc_id_create_channel_id(SilcServerID *router_id, SilcRng rng,
   SILC_LOG_DEBUG(("Creating new Channel ID"));
 
   *new_id = silc_calloc(1, sizeof(**new_id));
-  if (*new_id == NULL) {
-    SILC_LOG_ERROR(("Could not allocate new Channel ID"));
-    return;
-  }
 
   /* Create the ID */
-  (*new_id)->ip.s_addr = router_id->ip.s_addr;
+  memcpy((*new_id)->ip.data, router_id->ip.data, router_id->ip.data_len);
+  (*new_id)->ip.data_len = router_id->ip.data_len;
   (*new_id)->port = router_id->port;
   (*new_id)->rnd = silc_rng_get_rn16(rng);