Lines Matching refs:ds

85     struct krb5int_dns_state *ds;  in krb5int_dns_init()  local
90 *dsp = ds = malloc(sizeof(*ds)); in krb5int_dns_init()
91 if (ds == NULL) in krb5int_dns_init()
95 ds->nclass = nclass; in krb5int_dns_init()
96 ds->ntype = ntype; in krb5int_dns_init()
97 ds->ansp = NULL; in krb5int_dns_init()
98 ds->anslen = 0; in krb5int_dns_init()
99 ds->ansmax = 0; in krb5int_dns_init()
104 ds->cur_ans = 0; in krb5int_dns_init()
117 p = (ds->ansp == NULL) in krb5int_dns_init()
118 ? malloc(nextincr) : realloc(ds->ansp, nextincr); in krb5int_dns_init()
120 if (p == NULL && ds->ansp != NULL) { in krb5int_dns_init()
124 ds->ansp = p; in krb5int_dns_init()
125 ds->ansmax = nextincr; in krb5int_dns_init()
128 len = res_nsearch(&statbuf, host, ds->nclass, ds->ntype, in krb5int_dns_init()
129 ds->ansp, ds->ansmax); in krb5int_dns_init()
131 len = res_search(host, ds->nclass, ds->ntype, in krb5int_dns_init()
132 ds->ansp, ds->ansmax); in krb5int_dns_init()
144 } while (len > ds->ansmax); in krb5int_dns_init()
146 ds->anslen = len; in krb5int_dns_init()
148 ret = ns_initparse(ds->ansp, ds->anslen, &ds->msg); in krb5int_dns_init()
150 ret = initparse(ds); in krb5int_dns_init()
162 if (ds->ansp != NULL) { in krb5int_dns_init()
163 free(ds->ansp); in krb5int_dns_init()
164 ds->ansp = NULL; in krb5int_dns_init()
179 krb5int_dns_nextans(struct krb5int_dns_state *ds, in krb5int_dns_nextans() argument
187 while (ds->cur_ans < ns_msg_count(ds->msg, ns_s_an)) { in krb5int_dns_nextans()
188 len = ns_parserr(&ds->msg, ns_s_an, ds->cur_ans, &rr); in krb5int_dns_nextans()
191 ds->cur_ans++; in krb5int_dns_nextans()
192 if (ds->nclass == ns_rr_class(rr) in krb5int_dns_nextans()
193 && ds->ntype == ns_rr_type(rr)) { in krb5int_dns_nextans()
206 int krb5int_dns_expand(struct krb5int_dns_state *ds, in krb5int_dns_expand() argument
212 return ns_name_uncompress(ds->ansp, in krb5int_dns_expand()
213 (unsigned char *)ds->ansp + ds->anslen, in krb5int_dns_expand()
216 return dn_expand(ds->ansp, in krb5int_dns_expand()
217 (unsigned char *)ds->ansp + ds->anslen, in krb5int_dns_expand()
226 krb5int_dns_fini(struct krb5int_dns_state *ds) in krb5int_dns_fini() argument
228 if (ds == NULL) in krb5int_dns_fini()
230 if (ds->ansp != NULL) in krb5int_dns_fini()
231 free(ds->ansp); in krb5int_dns_fini()
232 free(ds); in krb5int_dns_fini()
248 initparse(struct krb5int_dns_state *ds) in initparse() argument
258 if (ds->anslen < sizeof(HEADER)) in initparse()
261 hdr = (HEADER *)ds->ansp; in initparse()
262 p = ds->ansp; in initparse()
272 len = dn_skipname(p, (unsigned char *)ds->ansp + ds->anslen); in initparse()
274 len = dn_expand(ds->ansp, (unsigned char *)ds->ansp + ds->anslen, in initparse()
277 if (len < 0 || !INCR_OK(ds->ansp, ds->anslen, p, len + 4)) in initparse()
281 ds->ptr = p; in initparse()
282 ds->nanswers = nanswers; in initparse()
292 krb5int_dns_nextans(struct krb5int_dns_state *ds, in krb5int_dns_nextans() argument
304 p = ds->ptr; in krb5int_dns_nextans()
306 while (ds->nanswers--) { in krb5int_dns_nextans()
308 len = dn_skipname(p, (unsigned char *)ds->ansp + ds->anslen); in krb5int_dns_nextans()
310 len = dn_expand(ds->ansp, (unsigned char *)ds->ansp + ds->anslen, in krb5int_dns_nextans()
313 if (len < 0 || !INCR_OK(ds->ansp, ds->anslen, p, len)) in krb5int_dns_nextans()
316 SAFE_GETUINT16(ds->ansp, ds->anslen, p, 2, ntype, out); in krb5int_dns_nextans()
318 SAFE_GETUINT16(ds->ansp, ds->anslen, p, 6, nclass, out); in krb5int_dns_nextans()
319 SAFE_GETUINT16(ds->ansp, ds->anslen, p, 2, rdlen, out); in krb5int_dns_nextans()
321 if (!INCR_OK(ds->ansp, ds->anslen, p, rdlen)) in krb5int_dns_nextans()
328 if (nclass == ds->nclass && ntype == ds->ntype) { in krb5int_dns_nextans()
331 ds->ptr = p + rdlen; in krb5int_dns_nextans()