guint addr_info_hash(gconstpointer k) { addr_info_t addr; memcpy(&addr, k, sizeof(addr_info_t)); /*forces a NULL's padding if the address if ipv4 */ if (addr.type == TADDR_V4) memset( ((guint8 *) & (addr.addr.v4)) + sizeof(addr.addr.v4), 0x00, sizeof(addr.addr.v6) - sizeof(addr.addr.v4)); return djb_hash_buf((guint8 *) &addr, sizeof(addr_info_t)); }
hashstr_t* hashstr_create_len(const gchar *s, gsize l) { if (unlikely(NULL == s)) return NULL; guint32 h = djb_hash_buf((guint8 *) s, l); hashstr_t *result = g_malloc0(HASHSTR_PREFIX + l + 1); result->hl.h = h; result->hl.l = l; memcpy(result->s0, s, l); return result; }
static guint hash_service_id(gconstpointer p) { return djb_hash_buf(p, sizeof(struct conscience_srvid_s)); }
static guint func_hash_prefix(gconstpointer k) { return djb_hash_buf(((meta0_info_t *) k)->prefixes, ((meta0_info_t *) k)->prefixes_size); }