]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Core: Add sockaddr access utility
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Sat, 19 Jan 2019 17:28:09 +0000 (17:28 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Sat, 19 Jan 2019 20:51:51 +0000 (20:51 +0000)
src/libutil/addr.c
src/libutil/addr.h

index 5cbc1c0447f8ef32bbad18e87ceb535ccfa585eb..73b72690e2e0eb4d5e599fc79a633617a72e06ee 100644 (file)
@@ -1659,6 +1659,22 @@ rspamd_inet_address_get_af (const rspamd_inet_addr_t *addr)
        return addr->af;
 }
 
+struct sockaddr*
+rspamd_inet_address_get_sa (const rspamd_inet_addr_t *addr,
+                                                       socklen_t *sz)
+{
+       g_assert (addr != NULL);
+
+       if (addr->af == AF_UNIX) {
+               *sz = addr->slen;
+               return (struct sockaddr *)&addr->u.un->addr;
+       }
+       else {
+               *sz = addr->slen;
+               return (struct sockaddr *)&addr->u.in.addr.sa;
+       }
+}
+
 
 guint
 rspamd_inet_address_hash (gconstpointer a)
index 389cd1e97e5c64907475da46e27090e956be66ec..3aa24bb1cc802da824782a31a587cb72fb6e84db 100644 (file)
@@ -140,6 +140,14 @@ uint16_t rspamd_inet_address_get_port (const rspamd_inet_addr_t *addr);
  */
 gint rspamd_inet_address_get_af (const rspamd_inet_addr_t *addr);
 
+/**
+ * Returns sockaddr and size for this address
+ * @param addr
+ * @param sz
+ * @return
+ */
+struct sockaddr* rspamd_inet_address_get_sa (const rspamd_inet_addr_t *addr,
+               socklen_t *sz);
 
 /**
  * Makes a radix key from inet address