Skip to content
Snippets Groups Projects
Commit e45e70c5 authored by Vladimír Čunát's avatar Vladimír Čunát Committed by Ondřej Surý
Browse files

utils: add union inaddr

It will be a useful idiom for IP address storage and correct conversion
of sockaddr* pointers.
parent 6aad8c0f
2 merge requests!2571.2 merge master,!2181.2.4 dev
...@@ -120,14 +120,8 @@ struct qr_task ...@@ -120,14 +120,8 @@ struct qr_task
worker_cb_t on_complete; worker_cb_t on_complete;
void *baton; void *baton;
struct { struct {
union { union inaddr addr;
struct sockaddr_in ip4; union inaddr dst_addr;
struct sockaddr_in6 ip6;
} addr;
union {
struct sockaddr_in ip4;
struct sockaddr_in6 ip6;
} dst_addr;
uv_handle_t *handle; uv_handle_t *handle;
} source; } source;
uint32_t refs; uint32_t refs;
......
...@@ -78,11 +78,7 @@ struct kr_nsrep ...@@ -78,11 +78,7 @@ struct kr_nsrep
unsigned reputation; /**< NS reputation */ unsigned reputation; /**< NS reputation */
const knot_dname_t *name; /**< NS name */ const knot_dname_t *name; /**< NS name */
struct kr_context *ctx; /**< Resolution context */ struct kr_context *ctx; /**< Resolution context */
union { union inaddr addr[KR_NSREP_MAXADDR]; /**< NS address(es) */
struct sockaddr ip;
struct sockaddr_in ip4;
struct sockaddr_in6 ip6;
} addr[KR_NSREP_MAXADDR]; /**< NS address(es) */
}; };
/** @internal Address bytes for given family. */ /** @internal Address bytes for given family. */
......
...@@ -137,6 +137,13 @@ KR_EXPORT ...@@ -137,6 +137,13 @@ KR_EXPORT
int kr_pkt_put(knot_pkt_t *pkt, const knot_dname_t *name, uint32_t ttl, 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); uint16_t rclass, uint16_t rtype, const uint8_t *rdata, uint16_t rdlen);
/** Simple storage for IPx address or AF_UNSPEC. */
union inaddr {
struct sockaddr ip;
struct sockaddr_in ip4;
struct sockaddr_in6 ip6;
};
/** Address bytes for given family. */ /** Address bytes for given family. */
KR_EXPORT KR_PURE KR_EXPORT KR_PURE
const char *kr_inaddr(const struct sockaddr *addr); const char *kr_inaddr(const struct sockaddr *addr);
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment