Lines Matching defs:ds

86     struct krb5int_dns_state *ds;
91 *dsp = ds = malloc(sizeof(*ds));
92 if (ds == NULL)
96 ds->nclass = nclass;
97 ds->ntype = ntype;
98 ds->ansp = NULL;
99 ds->anslen = 0;
100 ds->ansmax = 0;
105 ds->cur_ans = 0;
118 p = (ds->ansp == NULL)
119 ? malloc(nextincr) : realloc(ds->ansp, nextincr);
125 ds->ansp = p;
126 ds->ansmax = nextincr;
129 len = res_nsearch(&statbuf, host, ds->nclass, ds->ntype,
130 ds->ansp, ds->ansmax);
132 len = res_search(host, ds->nclass, ds->ntype,
133 ds->ansp, ds->ansmax);
145 } while (len > ds->ansmax);
147 ds->anslen = len;
149 ret = ns_initparse(ds->ansp, ds->anslen, &ds->msg);
151 ret = initparse(ds);
163 if (ds->ansp != NULL) {
164 free(ds->ansp);
165 ds->ansp = NULL;
180 krb5int_dns_nextans(struct krb5int_dns_state *ds,
188 while (ds->cur_ans < ns_msg_count(ds->msg, ns_s_an)) {
189 len = ns_parserr(&ds->msg, ns_s_an, ds->cur_ans, &rr);
192 ds->cur_ans++;
193 if (ds->nclass == ns_rr_class(rr)
194 && ds->ntype == ns_rr_type(rr)) {
208 krb5int_dns_expand(struct krb5int_dns_state *ds, const unsigned char *p,
213 return ns_name_uncompress(ds->ansp,
214 (unsigned char *)ds->ansp + ds->anslen,
217 return dn_expand(ds->ansp,
218 (unsigned char *)ds->ansp + ds->anslen,
227 krb5int_dns_fini(struct krb5int_dns_state *ds)
229 if (ds == NULL)
231 if (ds->ansp != NULL)
232 free(ds->ansp);
233 free(ds);
249 initparse(struct krb5int_dns_state *ds)
259 if ((size_t) ds->anslen < sizeof(HEADER))
262 hdr = (HEADER *)ds->ansp;
263 p = ds->ansp;
273 len = dn_skipname(p, (unsigned char *)ds->ansp + ds->anslen);
275 len = dn_expand(ds->ansp, (unsigned char *)ds->ansp + ds->anslen,
278 if (len < 0 || !INCR_OK(ds->ansp, ds->anslen, p, len + 4))
282 ds->ptr = p;
283 ds->nanswers = nanswers;
293 krb5int_dns_nextans(struct krb5int_dns_state *ds,
305 p = ds->ptr;
307 while (ds->nanswers--) {
309 len = dn_skipname(p, (unsigned char *)ds->ansp + ds->anslen);
311 len = dn_expand(ds->ansp, (unsigned char *)ds->ansp + ds->anslen,
314 if (len < 0 || !INCR_OK(ds->ansp, ds->anslen, p, len))
317 SAFE_GETUINT16(ds->ansp, ds->anslen, p, 2, ntype, out);
319 SAFE_GETUINT16(ds->ansp, ds->anslen, p, 6, nclass, out);
320 SAFE_GETUINT16(ds->ansp, ds->anslen, p, 2, rdlen, out);
322 if (!INCR_OK(ds->ansp, ds->anslen, p, rdlen))
329 if (nclass == ds->nclass && ntype == ds->ntype) {
332 ds->ptr = p + rdlen;
355 struct krb5int_dns_state *ds = NULL;
384 ret = krb5int_dns_init(&ds, host, C_IN, T_TXT);
388 ret = krb5int_dns_nextans(ds, &base, &rdlen);
409 if (ds != NULL) {
410 krb5int_dns_fini(ds);
411 ds = NULL;