Lines Matching full:rr

104 dns_free_rr(struct rk_resource_record *rr)  in dns_free_rr()  argument
106 if(rr->domain) in dns_free_rr()
107 free(rr->domain); in dns_free_rr()
108 if(rr->u.data) in dns_free_rr()
109 free(rr->u.data); in dns_free_rr()
110 free(rr); in dns_free_rr()
116 struct rk_resource_record *rr; in rk_dns_free_data() local
119 for(rr = r->head; rr;){ in rk_dns_free_data()
120 struct rk_resource_record *tmp = rr; in rk_dns_free_data()
121 rr = rr->next; in rk_dns_free_data()
133 struct rk_resource_record *rr; in parse_record() local
161 rr = calloc(1, sizeof(*rr)); in parse_record()
162 if(rr == NULL) in parse_record()
164 rr->domain = strdup(host); in parse_record()
165 if(rr->domain == NULL) { in parse_record()
166 dns_free_rr(rr); in parse_record()
169 rr->type = type; in parse_record()
170 rr->class = class; in parse_record()
171 rr->ttl = ttl; in parse_record()
172 rr->size = size; in parse_record()
179 dns_free_rr(rr); in parse_record()
182 rr->u.txt = strdup(host); in parse_record()
183 if(rr->u.txt == NULL) { in parse_record()
184 dns_free_rr(rr); in parse_record()
194 dns_free_rr(rr); in parse_record()
198 dns_free_rr(rr); in parse_record()
203 rr->u.mx = (struct mx_record*)malloc(sizeof(struct mx_record) + in parse_record()
205 if(rr->u.mx == NULL) { in parse_record()
206 dns_free_rr(rr); in parse_record()
209 rr->u.mx->preference = (p[0] << 8) | p[1]; in parse_record()
210 strlcpy(rr->u.mx->domain, host, hostlen + 1); in parse_record()
217 dns_free_rr(rr); in parse_record()
221 dns_free_rr(rr); in parse_record()
226 rr->u.srv = in parse_record()
229 if(rr->u.srv == NULL) { in parse_record()
230 dns_free_rr(rr); in parse_record()
233 rr->u.srv->priority = (p[0] << 8) | p[1]; in parse_record()
234 rr->u.srv->weight = (p[2] << 8) | p[3]; in parse_record()
235 rr->u.srv->port = (p[4] << 8) | p[5]; in parse_record()
236 strlcpy(rr->u.srv->target, host, hostlen + 1); in parse_record()
241 dns_free_rr(rr); in parse_record()
244 rr->u.txt = (char*)malloc(*p + 1); in parse_record()
245 if(rr->u.txt == NULL) { in parse_record()
246 dns_free_rr(rr); in parse_record()
249 strncpy(rr->u.txt, (const char*)(p + 1), *p); in parse_record()
250 rr->u.txt[*p] = '\0'; in parse_record()
257 dns_free_rr(rr); in parse_record()
262 rr->u.key = malloc (sizeof(*rr->u.key) + key_len - 1); in parse_record()
263 if (rr->u.key == NULL) { in parse_record()
264 dns_free_rr(rr); in parse_record()
268 rr->u.key->flags = (p[0] << 8) | p[1]; in parse_record()
269 rr->u.key->protocol = p[2]; in parse_record()
270 rr->u.key->algorithm = p[3]; in parse_record()
271 rr->u.key->key_len = key_len; in parse_record()
272 memcpy (rr->u.key->key_data, p + 4, key_len); in parse_record()
279 dns_free_rr(rr); in parse_record()
284 dns_free_rr(rr); in parse_record()
288 dns_free_rr(rr); in parse_record()
299 rr->u.sig = malloc(sizeof(*rr->u.sig) in parse_record()
301 if (rr->u.sig == NULL) { in parse_record()
302 dns_free_rr(rr); in parse_record()
305 rr->u.sig->type = (p[0] << 8) | p[1]; in parse_record()
306 rr->u.sig->algorithm = p[2]; in parse_record()
307 rr->u.sig->labels = p[3]; in parse_record()
308 rr->u.sig->orig_ttl = (p[4] << 24) | (p[5] << 16) in parse_record()
310 rr->u.sig->sig_expiration = (p[8] << 24) | (p[9] << 16) in parse_record()
312 rr->u.sig->sig_inception = (p[12] << 24) | (p[13] << 16) in parse_record()
314 rr->u.sig->key_tag = (p[16] << 8) | p[17]; in parse_record()
315 rr->u.sig->sig_len = sig_len; in parse_record()
316 memcpy (rr->u.sig->sig_data, p + 18 + status, sig_len); in parse_record()
317 rr->u.sig->signer = &rr->u.sig->sig_data[sig_len]; in parse_record()
318 strlcpy(rr->u.sig->signer, host, hostlen + 1); in parse_record()
326 dns_free_rr(rr); in parse_record()
331 rr->u.cert = malloc (sizeof(*rr->u.cert) + cert_len - 1); in parse_record()
332 if (rr->u.cert == NULL) { in parse_record()
333 dns_free_rr(rr); in parse_record()
337 rr->u.cert->type = (p[0] << 8) | p[1]; in parse_record()
338 rr->u.cert->tag = (p[2] << 8) | p[3]; in parse_record()
339 rr->u.cert->algorithm = p[4]; in parse_record()
340 rr->u.cert->cert_len = cert_len; in parse_record()
341 memcpy (rr->u.cert->cert_data, p + 5, cert_len); in parse_record()
348 dns_free_rr(rr); in parse_record()
354 rr->u.sshfp = malloc (sizeof(*rr->u.sshfp) + sshfp_len - 1); in parse_record()
355 if (rr->u.sshfp == NULL) { in parse_record()
356 dns_free_rr(rr); in parse_record()
360 rr->u.sshfp->algorithm = p[0]; in parse_record()
361 rr->u.sshfp->type = p[1]; in parse_record()
362 rr->u.sshfp->sshfp_len = sshfp_len; in parse_record()
363 memcpy (rr->u.sshfp->sshfp_data, p + 2, sshfp_len); in parse_record()
370 dns_free_rr(rr); in parse_record()
376 rr->u.ds = malloc (sizeof(*rr->u.ds) + digest_len - 1); in parse_record()
377 if (rr->u.ds == NULL) { in parse_record()
378 dns_free_rr(rr); in parse_record()
382 rr->u.ds->key_tag = (p[0] << 8) | p[1]; in parse_record()
383 rr->u.ds->algorithm = p[2]; in parse_record()
384 rr->u.ds->digest_type = p[3]; in parse_record()
385 rr->u.ds->digest_len = digest_len; in parse_record()
386 memcpy (rr->u.ds->digest_data, p + 4, digest_len); in parse_record()
390 rr->u.data = (unsigned char*)malloc(size); in parse_record()
391 if(size != 0 && rr->u.data == NULL) { in parse_record()
392 dns_free_rr(rr); in parse_record()
396 memcpy(rr->u.data, p, size); in parse_record()
399 *ret_rr = rr; in parse_record()
416 struct rk_resource_record **rr; in parse_reply() local
473 rr = &r->head; in parse_reply()
475 if(parse_record(data, end_data, &p, rr) != 0) { in parse_reply()
479 rr = &(*rr)->next; in parse_reply()
482 if(parse_record(data, end_data, &p, rr) != 0) { in parse_reply()
486 rr = &(*rr)->next; in parse_reply()
489 if(parse_record(data, end_data, &p, rr) != 0) { in parse_reply()
493 rr = &(*rr)->next; in parse_reply()
495 *rr = NULL; in parse_reply()
630 struct rk_resource_record *rr; in rk_dns_srv_order() local
635 for(rr = r->head; rr; rr = rr->next) in rk_dns_srv_order()
636 if(rr->type == rk_ns_t_srv) in rk_dns_srv_order()
711 struct rk_resource_record * rr; in parse_dns_record() local
716 rr = calloc(1, sizeof(*rr)); in parse_dns_record()
718 rr->domain = strdup(pRec->pName); in parse_dns_record()
719 rr->type = pRec->wType; in parse_dns_record()
720 rr->class = 0; in parse_dns_record()
721 rr->ttl = pRec->dwTtl; in parse_dns_record()
722 rr->size = 0; in parse_dns_record()
724 switch (rr->type) { in parse_dns_record()
728 rr->u.txt = strdup(pRec->Data.NS.pNameHost); in parse_dns_record()
729 if(rr->u.txt == NULL) { in parse_dns_record()
730 dns_free_rr(rr); in parse_dns_record()
739 rr->u.mx = (struct mx_record *)malloc(sizeof(struct mx_record) + in parse_dns_record()
741 if (rr->u.mx == NULL) { in parse_dns_record()
742 dns_free_rr(rr); in parse_dns_record()
746 strcpy_s(rr->u.mx->domain, hostlen + 1, pRec->Data.MX.pNameExchange); in parse_dns_record()
747 rr->u.mx->preference = pRec->Data.MX.wPreference; in parse_dns_record()
754 rr->u.srv = in parse_dns_record()
757 if(rr->u.srv == NULL) { in parse_dns_record()
758 dns_free_rr(rr); in parse_dns_record()
762 rr->u.srv->priority = pRec->Data.SRV.wPriority; in parse_dns_record()
763 rr->u.srv->weight = pRec->Data.SRV.wWeight; in parse_dns_record()
764 rr->u.srv->port = pRec->Data.SRV.wPort; in parse_dns_record()
765 strcpy_s(rr->u.srv->target, hostlen + 1, pRec->Data.SRV.pNameTarget); in parse_dns_record()
774 rr->u.txt = strdup(""); in parse_dns_record()
780 rr->u.txt = (char *)malloc(len + 1); in parse_dns_record()
781 strcpy_s(rr->u.txt, len + 1, pRec->Data.TXT.pStringArray[0]); in parse_dns_record()
790 dns_free_rr(rr); in parse_dns_record()
795 rr->u.key = malloc (sizeof(*rr->u.key) + key_len - 1); in parse_dns_record()
796 if (rr->u.key == NULL) { in parse_dns_record()
797 dns_free_rr(rr); in parse_dns_record()
801 rr->u.key->flags = pRec->Data.KEY.wFlags; in parse_dns_record()
802 rr->u.key->protocol = pRec->Data.KEY.chProtocol; in parse_dns_record()
803 rr->u.key->algorithm = pRec->Data.KEY.chAlgorithm; in parse_dns_record()
804 rr->u.key->key_len = key_len; in parse_dns_record()
805 memcpy_s (rr->u.key->key_data, key_len, in parse_dns_record()
814 dns_free_rr(rr); in parse_dns_record()
822 rr->u.sig = malloc(sizeof(*rr->u.sig) in parse_dns_record()
824 if (rr->u.sig == NULL) { in parse_dns_record()
825 dns_free_rr(rr); in parse_dns_record()
828 rr->u.sig->type = pRec->Data.SIG.wTypeCovered; in parse_dns_record()
829 rr->u.sig->algorithm = pRec->Data.SIG.chAlgorithm; in parse_dns_record()
830 rr->u.sig->labels = pRec->Data.SIG.chLabelCount; in parse_dns_record()
831 rr->u.sig->orig_ttl = pRec->Data.SIG.dwOriginalTtl; in parse_dns_record()
832 rr->u.sig->sig_expiration = pRec->Data.SIG.dwExpiration; in parse_dns_record()
833 rr->u.sig->sig_inception = pRec->Data.SIG.dwTimeSigned; in parse_dns_record()
834 rr->u.sig->key_tag = pRec->Data.SIG.wKeyTag; in parse_dns_record()
835 rr->u.sig->sig_len = sig_len; in parse_dns_record()
836 memcpy_s (rr->u.sig->sig_data, sig_len, in parse_dns_record()
838 rr->u.sig->signer = &rr->u.sig->sig_data[sig_len]; in parse_dns_record()
839 strcpy_s(rr->u.sig->signer, hostlen + 1, pRec->Data.SIG.pNameSigner); in parse_dns_record()
845 rr->u.ds = malloc (sizeof(*rr->u.ds) + pRec->Data.DS.wDigestLength - 1); in parse_dns_record()
846 if (rr->u.ds == NULL) { in parse_dns_record()
847 dns_free_rr(rr); in parse_dns_record()
851 rr->u.ds->key_tag = pRec->Data.DS.wKeyTag; in parse_dns_record()
852 rr->u.ds->algorithm = pRec->Data.DS.chAlgorithm; in parse_dns_record()
853 rr->u.ds->digest_type = pRec->Data.DS.chDigestType; in parse_dns_record()
854 rr->u.ds->digest_len = pRec->Data.DS.wDigestLength; in parse_dns_record()
855 memcpy_s (rr->u.ds->digest_data, pRec->Data.DS.wDigestLength, in parse_dns_record()
862 dns_free_rr(rr); in parse_dns_record()
866 rr->next = parse_dns_record(pRec->pNext); in parse_dns_record()
867 return rr; in parse_dns_record()