]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
lib/utils: added function for addr family
authorMarek Vavrusa <marek@vavrusa.com>
Mon, 11 Jan 2016 04:29:00 +0000 (20:29 -0800)
committerMarek Vavrusa <marek@vavrusa.com>
Mon, 11 Jan 2016 04:29:00 +0000 (20:29 -0800)
the field length is platform-dependent

daemon/lua/kres.lua
lib/utils.c
lib/utils.h

index 357c1a673bfa782f67d3e50d2300569ae7187887..a041c3b7008d6aa11be3743aea1193db7297b2be 100644 (file)
@@ -254,6 +254,7 @@ int kr_pkt_put(knot_pkt_t *pkt, const knot_dname_t *name, uint32_t ttl,
                uint16_t rclass, uint16_t rtype, const uint8_t *rdata, uint16_t rdlen);
 int kr_pkt_recycle(knot_pkt_t *pkt);
 const char *kr_inaddr(const struct sockaddr *addr);
+int kr_inaddr_family(const struct sockaddr *addr);
 int kr_inaddr_len(const struct sockaddr *addr);
 int kr_straddr_family(const char *addr);
 int kr_straddr_subnet(void *dst, const char *addr);
@@ -281,6 +282,7 @@ ffi.metatype( sockaddr_t, {
        __index = {
                len = function(sa) return C.kr_inaddr_len(sa) end,
                ip = function (sa) return C.kr_inaddr(sa) end,
+               family = function (sa) return C.kr_inaddr_family(sa) end,
        }
 })
 
@@ -435,4 +437,4 @@ local kres = {
        context = function () return ffi.cast('struct kr_context *', __engine) end,
 }
 
-return kres
\ No newline at end of file
+return kres
index ff824edcf896c6532deba3c62963b59cae458f4b..00e5d65fe86296529f60844fe64b04b3d86896cb 100644 (file)
@@ -239,6 +239,13 @@ const char *kr_inaddr(const struct sockaddr *addr)
        }
 }
 
+int kr_inaddr_family(const struct sockaddr *addr)
+{
+       if (!addr)
+               return AF_UNSPEC;
+       return addr->sa_family;
+}
+
 int kr_inaddr_len(const struct sockaddr *addr)
 {
        if (!addr) {
index 8690beadc0faf65780e553e54564a3d8cf1b33ff..698bd6e0772c1bb17b2376da9238690fe1879637 100644 (file)
@@ -111,6 +111,9 @@ int kr_pkt_put(knot_pkt_t *pkt, const knot_dname_t *name, uint32_t ttl,
 /** Address bytes for given family. */
 KR_EXPORT KR_PURE
 const char *kr_inaddr(const struct sockaddr *addr);
+/** Address family. */
+KR_EXPORT KR_PURE
+int kr_inaddr_family(const struct sockaddr *addr);
 /** Address length for given family. */
 KR_EXPORT KR_PURE
 int kr_inaddr_len(const struct sockaddr *addr);