X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilccore%2Fsilcid.h;h=9f8c84e7dcb278484276968430248a3da91836ce;hb=833a982d981c3b6f058c6e7c2d405a5814c7c61b;hp=25cca44421ec87acc9c7ca970a428cdc2dcb8a1f;hpb=ca4f8ec5c7e4217cbf880823f2a792c26186d195;p=runtime.git diff --git a/lib/silccore/silcid.h b/lib/silccore/silcid.h index 25cca444..9f8c84e7 100644 --- a/lib/silccore/silcid.h +++ b/lib/silccore/silcid.h @@ -4,7 +4,7 @@ Author: Pekka Riikonen - Copyright (C) 1997 - 2007 Pekka Riikonen + Copyright (C) 1997 - 2008 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 @@ -82,7 +82,7 @@ typedef SilcUInt16 SilcIdType; * * 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; @@ -104,7 +104,7 @@ typedef struct { * * SOURCE */ -typedef struct { +typedef struct SilcServerIDStruct { SilcIDIP ip; /* n bit IP address */ SilcUInt16 port; /* 16 bit port */ SilcUInt16 rnd; /* 16 bit random number */ @@ -127,7 +127,7 @@ typedef struct { * * 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 */ @@ -150,7 +150,7 @@ typedef struct { * * SOURCE */ -typedef struct { +typedef struct SilcChannelIDStruct { SilcIDIP ip; /* n bit IP address */ SilcUInt16 port; /* 16 bit port */ SilcUInt16 rnd; /* 16 bit random number */ @@ -172,7 +172,7 @@ typedef struct { * * SOURCE */ -typedef struct { +typedef struct SilcIDStruct { union { SilcServerID server_id; SilcChannelID channel_id; @@ -535,4 +535,81 @@ SilcUInt32 silc_id_get_len(const void *id, SilcIdType type); ***/ void *silc_id_dup(const void *id, SilcIdType type); +/****f* silccore/SilcIDAPI/silc_hash_id + * + * SYNOPSIS + * + * SilcUInt32 silc_hash_id(void *key, void *user_context); + * + * DESCRIPTION + * + * Hash a ID. The `user_context' is the ID type. Can be used with + * SilcHashTable. + * + ***/ +SilcUInt32 silc_hash_id(void *key, void *user_context); + +/****f* silccore/SilcIDAPI/silc_hash_client_id_hash + * + * SYNOPSIS + * + * SilcUInt32 silc_hash_client_id_hash(void *key, void *user_context) + * + * DESCRIPTION + * + * Hash Client ID's hash. Can be used with SilcHashTable. + * + ***/ +SilcUInt32 silc_hash_client_id_hash(void *key, void *user_context); + +/****f* silccore/SilcIDAPI/silc_hash_id_compare + * + * SYNOPSIS + * + * SilcBool silc_hash_id_compare(void *key1, void *key2, + * void *user_context); + * + * DESCRIPTION + * + * Compares two ID's. May be used as SilcHashTable comparison function. + * The Client ID's compares only the hash of the Client ID not any other + * part of the Client ID. Other ID's are fully compared. Can be + * used with SilcHashTable. + * + ***/ +SilcBool silc_hash_id_compare(void *key1, void *key2, void *user_context); + +/****f* silccore/SilcIDAPI/silc_hash_id_compare_full + * + * SYNOPSIS + * + * SilcBool silc_hash_id_compare_full(void *key1, void *key2, + * void *user_context) + * + * DESCRIPTION + * + * Compares two ID's. May be used as SilcHashTable comparison function. + * To compare full ID's instead of only partial, like the + * silc_hash_id_compare does, use this function. Can be used with + * SilcHashTable. + * + ***/ +SilcBool silc_hash_id_compare_full(void *key1, void *key2, void *user_context); + +/****f* silccore/SilcIDAPI/silc_hash_client_id_compare + * + * SYNOPSIS + * + * SilcBool silc_hash_client_id_compare(void *key1, void *key2, + * void *user_context); + * + * DESCRIPTION + * + * Compare two Client ID's entirely and not just the hash from the ID. + * Can be used with SilcHashTable. + * + ***/ +SilcBool silc_hash_client_id_compare(void *key1, void *key2, + void *user_context); + #endif