worker_cb_t on_complete;
void *baton;
struct {
- union {
- struct sockaddr_in ip4;
- struct sockaddr_in6 ip6;
- } addr;
- union {
- struct sockaddr_in ip4;
- struct sockaddr_in6 ip6;
- } dst_addr;
+ union inaddr addr;
+ union inaddr dst_addr;
uv_handle_t *handle;
} source;
uint32_t refs;
unsigned reputation; /**< NS reputation */
const knot_dname_t *name; /**< NS name */
struct kr_context *ctx; /**< Resolution context */
- union {
- struct sockaddr ip;
- struct sockaddr_in ip4;
- struct sockaddr_in6 ip6;
- } addr[KR_NSREP_MAXADDR]; /**< NS address(es) */
+ union inaddr addr[KR_NSREP_MAXADDR]; /**< NS address(es) */
};
/** @internal Address bytes for given family. */
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);
+/** 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. */
KR_EXPORT KR_PURE
const char *kr_inaddr(const struct sockaddr *addr);