summaryrefslogtreecommitdiffstats
path: root/src/libutil/addr.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2016-02-16 16:22:55 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2016-02-16 16:22:55 +0000
commit947bd90138c8e5a5288a76708cf59349b79ebfe4 (patch)
treebbe3b19d074098ae29297b27b8934ce5c7f3fee1 /src/libutil/addr.c
parent3256178a2433f242f69c55f6eaee36ea314b2f1a (diff)
downloadrspamd-947bd90138c8e5a5288a76708cf59349b79ebfe4.tar.gz
rspamd-947bd90138c8e5a5288a76708cf59349b79ebfe4.zip
Add routine to create inet address from the rdns reply
Diffstat (limited to 'src/libutil/addr.c')
-rw-r--r--src/libutil/addr.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/libutil/addr.c b/src/libutil/addr.c
index e95ac4c64..414c48538 100644
--- a/src/libutil/addr.c
+++ b/src/libutil/addr.c
@@ -1214,6 +1214,27 @@ rspamd_inet_address_from_sa (const struct sockaddr *sa, socklen_t slen)
return addr;
}
+rspamd_inet_addr_t *
+rspamd_inet_address_from_rnds (const struct rdns_reply_entry *rep)
+{
+ rspamd_inet_addr_t *addr = NULL;
+
+ g_assert (rep != NULL);
+
+ if (rep->type == RDNS_REQUEST_A) {
+ addr = rspamd_inet_addr_create (AF_INET);
+ memcpy (&addr->u.in.addr.s4.sin_addr, &rep->content.a.addr,
+ sizeof (struct in_addr));
+ }
+ else if (rep->type == RDNS_REQUEST_AAAA) {
+ addr = rspamd_inet_addr_create (AF_INET6);
+ memcpy (&addr->u.in.addr.s6.sin6_addr, &rep->content.aaa.addr,
+ sizeof (struct in6_addr));
+ }
+
+ return addr;
+}
+
void
rspamd_inet_address_apply_mask (rspamd_inet_addr_t *addr, guint mask)
{