114 ushort type, ushort
class,
115 unsigned int ttl,
unsigned pref,
116 const char *data,
size_t data_len)
128 if (data && data_len > 0)
129 memcpy(rr->
data, data, data_len);
152 ssize_t len =
sizeof(*src) + src->
data_len - 1;
159 memcpy((
void *) dst, (
void *) src, len);
187 if (a->
type == T_AAAA)
189 if (b->
type == T_AAAA)
204 if (a->
type == T_AAAA)
206 if (b->
type == T_AAAA)
232 static int dns_rr_sort_callback(
const void *a,
const void *b)
237 return (dns_rr_sort_user(aa, bb));
253 saved_user = dns_rr_sort_user;
254 dns_rr_sort_user = compar;
259 for (len = 0, rr = list; rr != 0; len++, rr = rr->
next)
262 for (len = 0, rr = list; rr != 0; len++, rr = rr->
next)
268 qsort((
void *) rr_array, len,
sizeof(*rr_array), dns_rr_sort_callback);
273 for (i = 0; i < len - 1; i++)
274 rr_array[i]->next = rr_array[i + 1];
275 rr_array[i]->
next = 0;
281 myfree((
void *) rr_array);
282 dns_rr_sort_user = saved_user;
299 for (len = 0, rr = list; rr != 0; len++, rr = rr->
next)
302 for (len = 0, rr = list; rr != 0; len++, rr = rr->
next)
310 for (i = 0; i < len - 1; i++) {
311 r = i + (
myrand() % (len - i));
313 rr_array[i] = rr_array[r];
320 for (i = 0; i < len - 1; i++)
321 rr_array[i]->next = rr_array[i + 1];
322 rr_array[i]->
next = 0;
328 myfree((
void *) rr_array);
337 msg_panic(
"dns_rr_remove: record not found");
339 if (list == record) {
int dns_rr_compare_pref_ipv6(DNS_RR *a, DNS_RR *b)
char * mystrdup(const char *str)
NORETURN msg_panic(const char *fmt,...)
DNS_RR * dns_rr_shuffle(DNS_RR *list)
void dns_rr_free(DNS_RR *rr)
DNS_RR * dns_rr_create(const char *qname, const char *rname, ushort type, ushort class, unsigned int ttl, unsigned pref, const char *data, size_t data_len)
DNS_RR * dns_rr_copy(DNS_RR *src)
DNS_RR * dns_rr_append(DNS_RR *list, DNS_RR *rr)
DNS_RR * dns_rr_sort(DNS_RR *list, int(*compar)(DNS_RR *, DNS_RR *))
int dns_rr_compare_pref_any(DNS_RR *a, DNS_RR *b)
unsigned int dnssec_valid
int dns_rr_compare_pref(DNS_RR *a, DNS_RR *b)
int dns_rr_compare_pref_ipv4(DNS_RR *a, DNS_RR *b)
DNS_RR * dns_rr_remove(DNS_RR *list, DNS_RR *record)
void * mymalloc(ssize_t len)