Author: Pekka Riikonen <priikone@silcnet.org>
- Copyright (C) 1997 - 2006 Pekka Riikonen
+ Copyright (C) 1997 - 2007 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
*
* SOURCE
*/
-typedef struct {
+typedef struct SilcIDIPStruct {
unsigned char data[16]; /* IP data (in MSB first order) */
SilcUInt8 data_len; /* Length of the data (4 or 16) */
} SilcIDIP;
*
* SOURCE
*/
-typedef struct {
+typedef struct SilcServerIDStruct {
SilcIDIP ip; /* n bit IP address */
SilcUInt16 port; /* 16 bit port */
SilcUInt16 rnd; /* 16 bit random number */
*
* SOURCE
*/
-typedef struct {
+typedef struct SilcClientIDStruct {
SilcIDIP ip; /* n bit IP address */
unsigned char rnd; /* 8 bit random number */
unsigned char hash[CLIENTID_HASH_LEN]; /* 88 bit MD5 hash */
*
* SOURCE
*/
-typedef struct {
+typedef struct SilcChannelIDStruct {
SilcIDIP ip; /* n bit IP address */
SilcUInt16 port; /* 16 bit port */
SilcUInt16 rnd; /* 16 bit random number */
*
* SOURCE
*/
-typedef struct {
+typedef struct SilcIDStruct {
union {
SilcServerID server_id;
SilcChannelID channel_id;
/* Macros */
+/****d* silccore/SilcIDAPI/SILC_ID_GET_ID
+ *
+ * NAME
+ *
+ * #define SILC_ID_GET_ID ...
+ *
+ * DESCRIPTION
+ *
+ * Returns the ID type specific pointer from the SilcID structure. As
+ * the SilcID is able to house all types of IDs this macro can be used
+ * to get the specific ID from the structure by its type.
+ *
+ * SOURCE
+ */
+#define SILC_ID_GET_ID(id) \
+ ((id).type == SILC_ID_CLIENT ? (void *)&(id).u.client_id : \
+ (id).type == SILC_ID_SERVER ? (void *)&(id).u.server_id : \
+ (void *)&(id).u.channel_id)
+/***/
+
/****d* silccore/SilcIDAPI/SILC_ID_COMPARE
*
* NAME
SilcBool silc_id_str2id(const unsigned char *id, SilcUInt32 id_len,
SilcIdType type, void *ret_id, SilcUInt32 ret_id_size);
+/****f* silccore/SilcIDAPI/silc_id_str2id2
+ *
+ * SYNOPSIS
+ *
+ * SilcBool silc_id_str2id2(const unsigned char *id, SilcUInt32 id_len,
+ * SilcIdType type, SilcID *ret_id);
+ *
+ * DESCRIPTION
+ *
+ * Same as silc_id_str2id but returns the ID into SilcID structure in
+ * `ret_id' pointer. This does not allocate any memory.
+ *
+ ***/
+SilcBool silc_id_str2id2(const unsigned char *id, SilcUInt32 id_len,
+ SilcIdType type, SilcID *ret_id);
+
/****f* silccore/SilcIDAPI/silc_id_get_len
*
* SYNOPSIS