|
|
|
@ -481,13 +481,13 @@ GString *li_counter_format(guint64 count, liCounterType t, GString *dest) {
|
|
|
|
|
|
|
|
|
|
gchar *li_ev_backend_string(guint backend) {
|
|
|
|
|
switch (backend) {
|
|
|
|
|
case EVBACKEND_SELECT: return "select";
|
|
|
|
|
case EVBACKEND_POLL: return "poll";
|
|
|
|
|
case EVBACKEND_EPOLL: return "epoll";
|
|
|
|
|
case EVBACKEND_KQUEUE: return "kqueue";
|
|
|
|
|
case EVBACKEND_DEVPOLL: return "devpoll";
|
|
|
|
|
case EVBACKEND_PORT: return "port";
|
|
|
|
|
default: return "unknown";
|
|
|
|
|
case EVBACKEND_SELECT: return "select";
|
|
|
|
|
case EVBACKEND_POLL: return "poll";
|
|
|
|
|
case EVBACKEND_EPOLL: return "epoll";
|
|
|
|
|
case EVBACKEND_KQUEUE: return "kqueue";
|
|
|
|
|
case EVBACKEND_DEVPOLL: return "devpoll";
|
|
|
|
|
case EVBACKEND_PORT: return "port";
|
|
|
|
|
default: return "unknown";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -496,16 +496,30 @@ void li_string_destroy_notify(gpointer str) {
|
|
|
|
|
g_string_free((GString*)str, TRUE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
guint li_hash_binary_len(gconstpointer data, gsize len) {
|
|
|
|
|
GString str = li_const_gstring(data, len);
|
|
|
|
|
return g_string_hash(&str);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
guint li_hash_ipv4(gconstpointer key) {
|
|
|
|
|
return *((guint*)key) * 2654435761;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
guint li_hash_ipv6(gconstpointer key) {
|
|
|
|
|
guint *i = ((guint*)key);
|
|
|
|
|
return (i[0] ^ i[1] ^ i[2] ^ i[3]) * 2654435761;
|
|
|
|
|
return li_hash_binary_len(key, 16);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
guint li_hash_sockaddr(gconstpointer key) {
|
|
|
|
|
const liSocketAddress *addr = key;
|
|
|
|
|
return li_hash_binary_len(addr->addr, addr->len);
|
|
|
|
|
}
|
|
|
|
|
gboolean li_equal_sockaddr(gconstpointer key1, gconstpointer key2) {
|
|
|
|
|
const liSocketAddress *addr1 = key1, *addr2 = key2;
|
|
|
|
|
if (addr1->len != addr2->len) return FALSE;
|
|
|
|
|
if (addr1->addr == addr2->addr) return TRUE;
|
|
|
|
|
if (!addr1->addr || !addr2->addr) return FALSE;
|
|
|
|
|
return 0 == memcmp(addr1->addr, addr2->addr, addr1->len);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GString *li_sockaddr_to_string(liSocketAddress addr, GString *dest, gboolean showport) {
|
|
|
|
|
gchar *p;
|
|
|
|
|