diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-02-16 16:22:55 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-02-16 16:22:55 +0000 |
commit | 947bd90138c8e5a5288a76708cf59349b79ebfe4 (patch) | |
tree | bbe3b19d074098ae29297b27b8934ce5c7f3fee1 /src/libutil/addr.c | |
parent | 3256178a2433f242f69c55f6eaee36ea314b2f1a (diff) | |
download | rspamd-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.c | 21 |
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) { |