Lines Matching refs:rr
106 dns_free_rr(struct rk_resource_record *rr) in dns_free_rr() argument
108 if(rr->domain) in dns_free_rr()
109 free(rr->domain); in dns_free_rr()
110 if(rr->u.data) in dns_free_rr()
111 free(rr->u.data); in dns_free_rr()
112 free(rr); in dns_free_rr()
118 struct rk_resource_record *rr; in rk_dns_free_data() local
121 for(rr = r->head; rr;){ in rk_dns_free_data()
122 struct rk_resource_record *tmp = rr; in rk_dns_free_data()
123 rr = rr->next; in rk_dns_free_data()
135 struct rk_resource_record *rr; in parse_record() local
163 rr = calloc(1, sizeof(*rr)); in parse_record()
164 if(rr == NULL) in parse_record()
166 rr->domain = strdup(host); in parse_record()
167 if(rr->domain == NULL) { in parse_record()
168 dns_free_rr(rr); in parse_record()
171 rr->type = type; in parse_record()
172 rr->class = class; in parse_record()
173 rr->ttl = ttl; in parse_record()
174 rr->size = size; in parse_record()
181 dns_free_rr(rr); in parse_record()
184 rr->u.txt = strdup(host); in parse_record()
185 if(rr->u.txt == NULL) { in parse_record()
186 dns_free_rr(rr); in parse_record()
196 dns_free_rr(rr); in parse_record()
200 dns_free_rr(rr); in parse_record()
205 rr->u.mx = (struct mx_record*)malloc(sizeof(struct mx_record) + in parse_record()
207 if(rr->u.mx == NULL) { in parse_record()
208 dns_free_rr(rr); in parse_record()
211 rr->u.mx->preference = (p[0] << 8) | p[1]; in parse_record()
212 strlcpy(rr->u.mx->domain, host, hostlen + 1); in parse_record()
219 dns_free_rr(rr); in parse_record()
223 dns_free_rr(rr); in parse_record()
228 rr->u.srv = in parse_record()
231 if(rr->u.srv == NULL) { in parse_record()
232 dns_free_rr(rr); in parse_record()
235 rr->u.srv->priority = (p[0] << 8) | p[1]; in parse_record()
236 rr->u.srv->weight = (p[2] << 8) | p[3]; in parse_record()
237 rr->u.srv->port = (p[4] << 8) | p[5]; in parse_record()
238 strlcpy(rr->u.srv->target, host, hostlen + 1); in parse_record()
243 dns_free_rr(rr); in parse_record()
246 rr->u.txt = (char*)malloc(*p + 1); in parse_record()
247 if(rr->u.txt == NULL) { in parse_record()
248 dns_free_rr(rr); in parse_record()
251 strncpy(rr->u.txt, (const char*)(p + 1), *p); in parse_record()
252 rr->u.txt[*p] = '\0'; in parse_record()
259 dns_free_rr(rr); in parse_record()
264 rr->u.key = malloc (sizeof(*rr->u.key) + key_len - 1); in parse_record()
265 if (rr->u.key == NULL) { in parse_record()
266 dns_free_rr(rr); in parse_record()
270 rr->u.key->flags = (p[0] << 8) | p[1]; in parse_record()
271 rr->u.key->protocol = p[2]; in parse_record()
272 rr->u.key->algorithm = p[3]; in parse_record()
273 rr->u.key->key_len = key_len; in parse_record()
274 memcpy (rr->u.key->key_data, p + 4, key_len); in parse_record()
281 dns_free_rr(rr); in parse_record()
286 dns_free_rr(rr); in parse_record()
290 dns_free_rr(rr); in parse_record()
301 rr->u.sig = malloc(sizeof(*rr->u.sig) in parse_record()
303 if (rr->u.sig == NULL) { in parse_record()
304 dns_free_rr(rr); in parse_record()
307 rr->u.sig->type = (p[0] << 8) | p[1]; in parse_record()
308 rr->u.sig->algorithm = p[2]; in parse_record()
309 rr->u.sig->labels = p[3]; in parse_record()
310 rr->u.sig->orig_ttl = (p[4] << 24) | (p[5] << 16) in parse_record()
312 rr->u.sig->sig_expiration = (p[8] << 24) | (p[9] << 16) in parse_record()
314 rr->u.sig->sig_inception = (p[12] << 24) | (p[13] << 16) in parse_record()
316 rr->u.sig->key_tag = (p[16] << 8) | p[17]; in parse_record()
317 rr->u.sig->sig_len = sig_len; in parse_record()
318 memcpy (rr->u.sig->sig_data, p + 18 + status, sig_len); in parse_record()
319 rr->u.sig->signer = &rr->u.sig->sig_data[sig_len]; in parse_record()
320 strlcpy(rr->u.sig->signer, host, hostlen + 1); in parse_record()
328 dns_free_rr(rr); in parse_record()
333 rr->u.cert = malloc (sizeof(*rr->u.cert) + cert_len - 1); in parse_record()
334 if (rr->u.cert == NULL) { in parse_record()
335 dns_free_rr(rr); in parse_record()
339 rr->u.cert->type = (p[0] << 8) | p[1]; in parse_record()
340 rr->u.cert->tag = (p[2] << 8) | p[3]; in parse_record()
341 rr->u.cert->algorithm = p[4]; in parse_record()
342 rr->u.cert->cert_len = cert_len; in parse_record()
343 memcpy (rr->u.cert->cert_data, p + 5, cert_len); in parse_record()
350 dns_free_rr(rr); in parse_record()
356 rr->u.sshfp = malloc (sizeof(*rr->u.sshfp) + sshfp_len - 1); in parse_record()
357 if (rr->u.sshfp == NULL) { in parse_record()
358 dns_free_rr(rr); in parse_record()
362 rr->u.sshfp->algorithm = p[0]; in parse_record()
363 rr->u.sshfp->type = p[1]; in parse_record()
364 rr->u.sshfp->sshfp_len = sshfp_len; in parse_record()
365 memcpy (rr->u.sshfp->sshfp_data, p + 2, sshfp_len); in parse_record()
372 dns_free_rr(rr); in parse_record()
378 rr->u.ds = malloc (sizeof(*rr->u.ds) + digest_len - 1); in parse_record()
379 if (rr->u.ds == NULL) { in parse_record()
380 dns_free_rr(rr); in parse_record()
384 rr->u.ds->key_tag = (p[0] << 8) | p[1]; in parse_record()
385 rr->u.ds->algorithm = p[2]; in parse_record()
386 rr->u.ds->digest_type = p[3]; in parse_record()
387 rr->u.ds->digest_len = digest_len; in parse_record()
388 memcpy (rr->u.ds->digest_data, p + 4, digest_len); in parse_record()
392 rr->u.data = (unsigned char*)malloc(size); in parse_record()
393 if(size != 0 && rr->u.data == NULL) { in parse_record()
394 dns_free_rr(rr); in parse_record()
398 memcpy(rr->u.data, p, size); in parse_record()
401 *ret_rr = rr; in parse_record()
418 struct rk_resource_record **rr; in parse_reply() local
475 rr = &r->head; in parse_reply()
477 if(parse_record(data, end_data, &p, rr) != 0) { in parse_reply()
481 rr = &(*rr)->next; in parse_reply()
484 if(parse_record(data, end_data, &p, rr) != 0) { in parse_reply()
488 rr = &(*rr)->next; in parse_reply()
491 if(parse_record(data, end_data, &p, rr) != 0) { in parse_reply()
495 rr = &(*rr)->next; in parse_reply()
497 *rr = NULL; in parse_reply()
632 struct rk_resource_record *rr; in rk_dns_srv_order() local
637 for(rr = r->head; rr; rr = rr->next) in rk_dns_srv_order()
638 if(rr->type == rk_ns_t_srv) in rk_dns_srv_order()
713 struct rk_resource_record * rr; in parse_dns_record() local
718 rr = calloc(1, sizeof(*rr)); in parse_dns_record()
720 rr->domain = strdup(pRec->pName); in parse_dns_record()
721 rr->type = pRec->wType; in parse_dns_record()
722 rr->class = 0; in parse_dns_record()
723 rr->ttl = pRec->dwTtl; in parse_dns_record()
724 rr->size = 0; in parse_dns_record()
726 switch (rr->type) { in parse_dns_record()
730 rr->u.txt = strdup(pRec->Data.NS.pNameHost); in parse_dns_record()
731 if(rr->u.txt == NULL) { in parse_dns_record()
732 dns_free_rr(rr); in parse_dns_record()
741 rr->u.mx = (struct mx_record *)malloc(sizeof(struct mx_record) + in parse_dns_record()
743 if (rr->u.mx == NULL) { in parse_dns_record()
744 dns_free_rr(rr); in parse_dns_record()
748 strcpy_s(rr->u.mx->domain, hostlen + 1, pRec->Data.MX.pNameExchange); in parse_dns_record()
749 rr->u.mx->preference = pRec->Data.MX.wPreference; in parse_dns_record()
756 rr->u.srv = in parse_dns_record()
759 if(rr->u.srv == NULL) { in parse_dns_record()
760 dns_free_rr(rr); in parse_dns_record()
764 rr->u.srv->priority = pRec->Data.SRV.wPriority; in parse_dns_record()
765 rr->u.srv->weight = pRec->Data.SRV.wWeight; in parse_dns_record()
766 rr->u.srv->port = pRec->Data.SRV.wPort; in parse_dns_record()
767 strcpy_s(rr->u.srv->target, hostlen + 1, pRec->Data.SRV.pNameTarget); in parse_dns_record()
776 rr->u.txt = strdup(""); in parse_dns_record()
782 rr->u.txt = (char *)malloc(len + 1); in parse_dns_record()
783 strcpy_s(rr->u.txt, len + 1, pRec->Data.TXT.pStringArray[0]); in parse_dns_record()
792 dns_free_rr(rr); in parse_dns_record()
797 rr->u.key = malloc (sizeof(*rr->u.key) + key_len - 1); in parse_dns_record()
798 if (rr->u.key == NULL) { in parse_dns_record()
799 dns_free_rr(rr); in parse_dns_record()
803 rr->u.key->flags = pRec->Data.KEY.wFlags; in parse_dns_record()
804 rr->u.key->protocol = pRec->Data.KEY.chProtocol; in parse_dns_record()
805 rr->u.key->algorithm = pRec->Data.KEY.chAlgorithm; in parse_dns_record()
806 rr->u.key->key_len = key_len; in parse_dns_record()
807 memcpy_s (rr->u.key->key_data, key_len, in parse_dns_record()
816 dns_free_rr(rr); in parse_dns_record()
824 rr->u.sig = malloc(sizeof(*rr->u.sig) in parse_dns_record()
826 if (rr->u.sig == NULL) { in parse_dns_record()
827 dns_free_rr(rr); in parse_dns_record()
830 rr->u.sig->type = pRec->Data.SIG.wTypeCovered; in parse_dns_record()
831 rr->u.sig->algorithm = pRec->Data.SIG.chAlgorithm; in parse_dns_record()
832 rr->u.sig->labels = pRec->Data.SIG.chLabelCount; in parse_dns_record()
833 rr->u.sig->orig_ttl = pRec->Data.SIG.dwOriginalTtl; in parse_dns_record()
834 rr->u.sig->sig_expiration = pRec->Data.SIG.dwExpiration; in parse_dns_record()
835 rr->u.sig->sig_inception = pRec->Data.SIG.dwTimeSigned; in parse_dns_record()
836 rr->u.sig->key_tag = pRec->Data.SIG.wKeyTag; in parse_dns_record()
837 rr->u.sig->sig_len = sig_len; in parse_dns_record()
838 memcpy_s (rr->u.sig->sig_data, sig_len, in parse_dns_record()
840 rr->u.sig->signer = &rr->u.sig->sig_data[sig_len]; in parse_dns_record()
841 strcpy_s(rr->u.sig->signer, hostlen + 1, pRec->Data.SIG.pNameSigner); in parse_dns_record()
847 rr->u.ds = malloc (sizeof(*rr->u.ds) + pRec->Data.DS.wDigestLength - 1); in parse_dns_record()
848 if (rr->u.ds == NULL) { in parse_dns_record()
849 dns_free_rr(rr); in parse_dns_record()
853 rr->u.ds->key_tag = pRec->Data.DS.wKeyTag; in parse_dns_record()
854 rr->u.ds->algorithm = pRec->Data.DS.chAlgorithm; in parse_dns_record()
855 rr->u.ds->digest_type = pRec->Data.DS.chDigestType; in parse_dns_record()
856 rr->u.ds->digest_len = pRec->Data.DS.wDigestLength; in parse_dns_record()
857 memcpy_s (rr->u.ds->digest_data, pRec->Data.DS.wDigestLength, in parse_dns_record()
864 dns_free_rr(rr); in parse_dns_record()
868 rr->next = parse_dns_record(pRec->pNext); in parse_dns_record()
869 return rr; in parse_dns_record()