aboutsummaryrefslogtreecommitdiffstats
path: root/src/libutil/radix.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2014-10-01 14:55:49 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2014-10-01 14:55:49 +0100
commit9ae0493f954ac0186541aa567b55adbb436b33db (patch)
treeea9868cf9fac72f4b65aa88b3362118e86e9743f /src/libutil/radix.c
parentcae34de6089bbe596b6c1025103db9e47add431e (diff)
downloadrspamd-9ae0493f954ac0186541aa567b55adbb436b33db.tar.gz
rspamd-9ae0493f954ac0186541aa567b55adbb436b33db.zip
Add routine to find rspamd_inet_addr in radix trie.
Diffstat (limited to 'src/libutil/radix.c')
-rw-r--r--src/libutil/radix.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/libutil/radix.c b/src/libutil/radix.c
index 99e25d0ba..40cccb46b 100644
--- a/src/libutil/radix.c
+++ b/src/libutil/radix.c
@@ -868,6 +868,25 @@ radix_tree_destroy_compressed (radix_compressed_t *tree)
g_slice_free1 (sizeof (*tree), tree);
}
+uintptr_t
+radix_find_compressed_addr (radix_compressed_t *tree, rspamd_inet_addr_t *addr)
+{
+ if (addr == NULL) {
+ return RADIX_NO_VALUE;
+ }
+
+ if (addr->af == AF_INET) {
+ return radix_find_compressed (tree, (guint8 *)&addr->addr.s4.sin_addr,
+ sizeof (addr->addr.s4.sin_addr));
+ }
+ else if (addr->af == AF_INET6) {
+ return radix_find_compressed (tree, (guint8 *)&addr->addr.s6.sin6_addr,
+ sizeof (addr->addr.s6.sin6_addr));
+ }
+
+ return RADIX_NO_VALUE;
+}
+
/*
* vi:ts=4
*/