4 Copyright (C) 2005 Michael Tokarev <mjt@corpit.ru>
5 This file is part of UDNS library, an async DNS stub resolver.
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Lesser General Public
9 License as published by the Free Software Foundation; either
10 version 2.1 of the License, or (at your option) any later version.
12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Lesser General Public License for more details.
17 You should have received a copy of the GNU Lesser General Public
18 License along with this library, in file named COPYING.LGPL; if not,
19 write to the Free Software Foundation, Inc., 59 Temple Place,
20 Suite 330, Boston, MA 02111-1307 USA
30 dns_submit_a4dnsbl(struct dns_ctx *ctx,
31 const struct in_addr *addr, const char *dnsbl,
32 dns_query_a4_fn *cbck, void *data) {
34 if (dns_a4ptodn(addr, dnsbl, dn, sizeof(dn)) <= 0) {
35 dns_setstatus(ctx, DNS_E_BADQUERY);
39 dns_submit_dn(ctx, dn, DNS_C_IN, DNS_T_A, DNS_NOSRCH,
40 dns_parse_a4, (dns_query_fn*)cbck, data);
44 dns_submit_a4dnsbl_txt(struct dns_ctx *ctx,
45 const struct in_addr *addr, const char *dnsbl,
46 dns_query_txt_fn *cbck, void *data) {
48 if (dns_a4ptodn(addr, dnsbl, dn, sizeof(dn)) <= 0) {
49 dns_setstatus(ctx, DNS_E_BADQUERY);
53 dns_submit_dn(ctx, dn, DNS_C_IN, DNS_T_TXT, DNS_NOSRCH,
54 dns_parse_txt, (dns_query_fn*)cbck, data);
58 dns_resolve_a4dnsbl(struct dns_ctx *ctx,
59 const struct in_addr *addr, const char *dnsbl) {
60 return (struct dns_rr_a4 *)
61 dns_resolve(ctx, dns_submit_a4dnsbl(ctx, addr, dnsbl, 0, 0));
65 dns_resolve_a4dnsbl_txt(struct dns_ctx *ctx,
66 const struct in_addr *addr, const char *dnsbl) {
67 return (struct dns_rr_txt *)
68 dns_resolve(ctx, dns_submit_a4dnsbl_txt(ctx, addr, dnsbl, 0, 0));
73 dns_submit_a6dnsbl(struct dns_ctx *ctx,
74 const struct in6_addr *addr, const char *dnsbl,
75 dns_query_a4_fn *cbck, void *data) {
77 if (dns_a6ptodn(addr, dnsbl, dn, sizeof(dn)) <= 0) {
78 dns_setstatus(ctx, DNS_E_BADQUERY);
82 dns_submit_dn(ctx, dn, DNS_C_IN, DNS_T_A, DNS_NOSRCH,
83 dns_parse_a4, (dns_query_fn*)cbck, data);
87 dns_submit_a6dnsbl_txt(struct dns_ctx *ctx,
88 const struct in6_addr *addr, const char *dnsbl,
89 dns_query_txt_fn *cbck, void *data) {
91 if (dns_a6ptodn(addr, dnsbl, dn, sizeof(dn)) <= 0) {
92 dns_setstatus(ctx, DNS_E_BADQUERY);
96 dns_submit_dn(ctx, dn, DNS_C_IN, DNS_T_TXT, DNS_NOSRCH,
97 dns_parse_txt, (dns_query_fn*)cbck, data);
101 dns_resolve_a6dnsbl(struct dns_ctx *ctx,
102 const struct in6_addr *addr, const char *dnsbl) {
103 return (struct dns_rr_a4 *)
104 dns_resolve(ctx, dns_submit_a6dnsbl(ctx, addr, dnsbl, 0, 0));
108 dns_resolve_a6dnsbl_txt(struct dns_ctx *ctx,
109 const struct in6_addr *addr, const char *dnsbl) {
110 return (struct dns_rr_txt *)
111 dns_resolve(ctx, dns_submit_a6dnsbl_txt(ctx, addr, dnsbl, 0, 0));
115 dns_rhsbltodn(const char *name, const char *rhsbl, dnsc_t dn[DNS_MAXDN])
117 int l = dns_sptodn(name, dn, DNS_MAXDN);
118 if (l <= 0) return 0;
119 l = dns_sptodn(rhsbl, dn+l-1, DNS_MAXDN-l+1);
120 if (l <= 0) return 0;
125 dns_submit_rhsbl(struct dns_ctx *ctx, const char *name, const char *rhsbl,
126 dns_query_a4_fn *cbck, void *data) {
127 dnsc_t dn[DNS_MAXDN];
128 if (!dns_rhsbltodn(name, rhsbl, dn)) {
129 dns_setstatus(ctx, DNS_E_BADQUERY);
133 dns_submit_dn(ctx, dn, DNS_C_IN, DNS_T_A, DNS_NOSRCH,
134 dns_parse_a4, (dns_query_fn*)cbck, data);
137 dns_submit_rhsbl_txt(struct dns_ctx *ctx, const char *name, const char *rhsbl,
138 dns_query_txt_fn *cbck, void *data) {
139 dnsc_t dn[DNS_MAXDN];
140 if (!dns_rhsbltodn(name, rhsbl, dn)) {
141 dns_setstatus(ctx, DNS_E_BADQUERY);
145 dns_submit_dn(ctx, dn, DNS_C_IN, DNS_T_TXT, DNS_NOSRCH,
146 dns_parse_txt, (dns_query_fn*)cbck, data);
150 dns_resolve_rhsbl(struct dns_ctx *ctx, const char *name, const char *rhsbl) {
151 return (struct dns_rr_a4*)
152 dns_resolve(ctx, dns_submit_rhsbl(ctx, name, rhsbl, 0, 0));
156 dns_resolve_rhsbl_txt(struct dns_ctx *ctx, const char *name, const char *rhsbl)
158 return (struct dns_rr_txt*)
159 dns_resolve(ctx, dns_submit_rhsbl_txt(ctx, name, rhsbl, 0, 0));