1 static int
rdata_cmp(const void * e1,const void * e2)2 rdata_cmp(const void *e1, const void *e2)
3 {
4 	const wdns_rdata_t *r1 = *((wdns_rdata_t **) e1);
5 	const wdns_rdata_t *r2 = *((wdns_rdata_t **) e2);
6 
7 	if (r1->len < r2->len) {
8 		return (-1);
9 	} else if (r1->len > r2->len) {
10 		return (1);
11 	} else {
12 		return (memcmp(r1->data, r2->data, r1->len));
13 	}
14 }
15 
16 /**
17  * Sort the rdata set of an RRset.
18  *
19  * \return wdns_res_success
20  */
21 
22 wdns_res
wdns_sort_rrset(wdns_rrset_t * rrset)23 wdns_sort_rrset(wdns_rrset_t *rrset)
24 {
25 	if (rrset->n_rdatas > 1)
26 		qsort(&rrset->rdatas[0],
27 		      rrset->n_rdatas,
28 		      sizeof(rrset->rdatas[0]),
29 		      rdata_cmp);
30 	return (wdns_res_success);
31 }
32