diff options
Diffstat (limited to 'src/resolv.h')
-rw-r--r-- | src/resolv.h | 137 |
1 files changed, 84 insertions, 53 deletions
diff --git a/src/resolv.h b/src/resolv.h index 71e4958..74fa03f 100644 --- a/src/resolv.h +++ b/src/resolv.h @@ -68,22 +68,30 @@ struct prne_resolv_rr { uint16_t rd_len; }; -#define PRNE_RESOLV_NS_IPV4_GOOGLE_A\ - 0x8, 0x8, 0x8, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 -#define PRNE_RESOLV_NS_IPV4_GOOGLE_B\ - 0x8, 0x8, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 -#define PRNE_RESOLV_NS_IPV4_CLOUDFLARE_A\ - 0x1, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 -#define PRNE_RESOLV_NS_IPV4_CLOUDFLARE_B\ - 0x1, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 -#define PRNE_RESOLV_NS_IPV4_QUAD9_A\ - 0x9, 0x9, 0x9, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 -#define PRNE_RESOLV_NS_IPV4_QUAD9_B\ - 0x95, 0x70, 0x70, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 -#define PRNE_RESOLV_NS_IPV4_CLEANBROWSING_A\ - 0xb9, 0xe4, 0xa8, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 -#define PRNE_RESOLV_NS_IPV4_CLEANBROWSING_B\ - 0xb9, 0xe4, 0xa9, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +#define PRNE_RESOLV_NS_IPV4_GOOGLE_A \ + 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,\ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +#define PRNE_RESOLV_NS_IPV4_GOOGLE_B \ + 0x08, 0x08, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00,\ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +#define PRNE_RESOLV_NS_IPV4_CLOUDFLARE_A \ + 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,\ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +#define PRNE_RESOLV_NS_IPV4_CLOUDFLARE_B \ + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,\ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +#define PRNE_RESOLV_NS_IPV4_QUAD9_A \ + 0x09, 0x09, 0x09, 0x0a, 0x00, 0x00, 0x00, 0x00,\ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +#define PRNE_RESOLV_NS_IPV4_QUAD9_B \ + 0x95, 0x70, 0x70, 0x0a, 0x00, 0x00, 0x00, 0x00,\ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +#define PRNE_RESOLV_NS_IPV4_CLEANBROWSING_A \ + 0xb9, 0xe4, 0xa8, 0x09, 0x00, 0x00, 0x00, 0x00,\ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +#define PRNE_RESOLV_NS_IPV4_CLEANBROWSING_B \ + 0xb9, 0xe4, 0xa9, 0x09, 0x00, 0x00, 0x00, 0x00,\ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 #define PRNE_RESOLV_NS_POOL_IPV4 {\ PRNE_RESOLV_NS_IPV4_GOOGLE_A,\ PRNE_RESOLV_NS_IPV4_GOOGLE_B,\ @@ -95,22 +103,30 @@ struct prne_resolv_rr { PRNE_RESOLV_NS_IPV4_CLEANBROWSING_B\ } -#define PRNE_RESOLV_NS_IPV6_GOOGLE_A\ - 0x20, 0x1, 0x48, 0x60, 0x48, 0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x88, 0x88 -#define PRNE_RESOLV_NS_IPV6_GOOGLE_B\ - 0x20, 0x1, 0x48, 0x60, 0x48, 0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x88, 0x44 -#define PRNE_RESOLV_NS_IPV6_CLOUDFLARE_A\ - 0x26, 0x6, 0x47, 0x0, 0x47, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11, 0x11 -#define PRNE_RESOLV_NS_IPV6_CLOUDFLARE_B\ - 0x26, 0x6, 0x47, 0x0, 0x47, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x1 -#define PRNE_RESOLV_NS_IPV6_QUAD9_A\ - 0x26, 0x20, 0x0, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe -#define PRNE_RESOLV_NS_IPV6_QUAD9_B\ - 0x26, 0x20, 0x0, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9 -#define PRNE_RESOLV_NS_IPV6_CLEANBROWSING_A\ - 0x2a, 0xd, 0x2a, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2 -#define PRNE_RESOLV_NS_IPV6_CLEANBROWSING_B\ - 0x2a, 0xd, 0x2a, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2 +#define PRNE_RESOLV_NS_IPV6_GOOGLE_A \ + 0x20, 0x01, 0x48, 0x60, 0x48, 0x60, 0x00, 0x00,\ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88 +#define PRNE_RESOLV_NS_IPV6_GOOGLE_B \ + 0x20, 0x01, 0x48, 0x60, 0x48, 0x60, 0x00, 0x00,\ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x44 +#define PRNE_RESOLV_NS_IPV6_CLOUDFLARE_A \ + 0x26, 0x06, 0x47, 0x00, 0x47, 0x00, 0x00, 0x00,\ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11 +#define PRNE_RESOLV_NS_IPV6_CLOUDFLARE_B \ + 0x26, 0x06, 0x47, 0x00, 0x47, 0x00, 0x00, 0x00,\ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01 +#define PRNE_RESOLV_NS_IPV6_QUAD9_A \ + 0x26, 0x20, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00,\ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe +#define PRNE_RESOLV_NS_IPV6_QUAD9_B \ + 0x26, 0x20, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00,\ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09 +#define PRNE_RESOLV_NS_IPV6_CLEANBROWSING_A \ + 0x2a, 0x0d, 0x2a, 0x00, 0x00, 0x01, 0x00, 0x00,\ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 +#define PRNE_RESOLV_NS_IPV6_CLEANBROWSING_B \ + 0x2a, 0x0d, 0x2a, 0x00, 0x00, 0x02, 0x00, 0x00,\ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 #define PRNE_RESOLV_NS_POOL_IPV6 {\ PRNE_RESOLV_NS_IPV6_GOOGLE_A,\ PRNE_RESOLV_NS_IPV6_GOOGLE_B,\ @@ -130,31 +146,46 @@ extern const prne_resolv_ns_pool_t PRNE_RESOLV_DEF_IPV4_POOL; extern const prne_resolv_ns_pool_t PRNE_RESOLV_DEF_IPV6_POOL; // honor bind-utils' choice of words -#define PRNE_RESOLV_RCODE_NOERROR 0 -#define PRNE_RESOLV_RCODE_FORMERR 1 -#define PRNE_RESOLV_RCODE_SERVFAIL 2 -#define PRNE_RESOLV_RCODE_NXDOMAIN 3 -#define PRNE_RESOLV_RCODE_NOTIMP 4 -#define PRNE_RESOLV_RCODE_REFUSED 5 - -#define PRNE_RESOLV_RTYPE_A 1 -#define PRNE_RESOLV_RTYPE_NS 2 -#define PRNE_RESOLV_RTYPE_CNAME 5 -#define PRNE_RESOLV_RTYPE_SOA 6 -#define PRNE_RESOLV_RTYPE_PTR 12 -#define PRNE_RESOLV_RTYPE_MX 15 -#define PRNE_RESOLV_RTYPE_TXT 16 -#define PRNE_RESOLV_RTYPE_AAAA 28 - - -prne_resolv_t *prne_alloc_resolv (prne_worker_t *wkr, mbedtls_ctr_drbg_context *ctr_drbg, const prne_resolv_ns_pool_t pool_v4, const prne_resolv_ns_pool_t pool_v6); -bool prne_resolv_prm_gethostbyname (prne_resolv_t *ctx, const char *name, const prne_ipv_t ipv, prne_pth_cv_t *cv, prne_resolv_prm_t *out); -bool prne_resolv_prm_gettxtrec (prne_resolv_t *ctx, const char *name, prne_pth_cv_t *cv, prne_resolv_prm_t *out); +#define PRNE_RESOLV_RCODE_NOERROR 0 +#define PRNE_RESOLV_RCODE_FORMERR 1 +#define PRNE_RESOLV_RCODE_SERVFAIL 2 +#define PRNE_RESOLV_RCODE_NXDOMAIN 3 +#define PRNE_RESOLV_RCODE_NOTIMP 4 +#define PRNE_RESOLV_RCODE_REFUSED 5 + +#define PRNE_RESOLV_RTYPE_A 1 +#define PRNE_RESOLV_RTYPE_NS 2 +#define PRNE_RESOLV_RTYPE_CNAME 5 +#define PRNE_RESOLV_RTYPE_SOA 6 +#define PRNE_RESOLV_RTYPE_PTR 12 +#define PRNE_RESOLV_RTYPE_MX 15 +#define PRNE_RESOLV_RTYPE_TXT 16 +#define PRNE_RESOLV_RTYPE_AAAA 28 + + +prne_resolv_t *prne_alloc_resolv ( + prne_worker_t *wkr, + mbedtls_ctr_drbg_context *ctr_drbg, + const prne_resolv_ns_pool_t pool_v4, + const prne_resolv_ns_pool_t pool_v6); +bool prne_resolv_prm_gethostbyname ( + prne_resolv_t *ctx, + const char *name, + const prne_ipv_t ipv, + prne_pth_cv_t *cv, + prne_resolv_prm_t *out); +bool prne_resolv_prm_gettxtrec ( + prne_resolv_t *ctx, + const char *name, + prne_pth_cv_t *cv, + prne_resolv_prm_t *out); void prne_resolv_init_ns_pool (prne_resolv_ns_pool_t *pool); void prne_resolv_free_ns_pool (prne_resolv_ns_pool_t *pool); bool prne_resolv_alloc_ns_pool (prne_resolv_ns_pool_t *pool, const size_t cnt); -prne_resolv_ns_pool_t prne_resolv_own_ns_pool(const prne_resolv_ns_pool_t *pool, const bool ownership); +prne_resolv_ns_pool_t prne_resolv_own_ns_pool( + const prne_resolv_ns_pool_t *pool, + const bool ownership); void prne_resolv_init_prm (prne_resolv_prm_t *prm); void prne_resolv_free_prm (prne_resolv_prm_t *prm); void prne_init_resolv_fut (prne_resolv_fut_t *fut); |