.TH dns_mx 3 .SH NAME dns_mx \- look up MX records for a FQDN .SH SYNTAX .B #include void \fBdns_mx\fP(&\fIout\fR,&\fIfqdn\fR); .br void \fBdns_mx_packet\fP(&\fIout\fR,char *\fIbuf\fR,unsigned int \fIlen\fR); stralloc \fIout\fR = {0}; .br stralloc \fIfqdn\fR = {0}; .SH DESCRIPTION .B dns_mx looks up MX records for the fully-qualified domain name in \fIfqdn\fR. It puts the MX records into \fIout\fR and returns 0. Each MX record is a two-byte MX distance followed by a \0-terminated dot-encoded domain name. If the domain does not exist in DNS, or has no MX records, \fIout\fR will be empty. If \fBdns_mx\fR has trouble with the DNS lookup or runs out of memory, it returns -1, setting \fIerrno\fR appropriately. It may or may not change \fIout\fR. .B dns_mx_packet is a low-level component of \fBdns_mx\fR, designed to support asynchronous DNS lookups. It reads a DNS packet of length \fIlen\fR from \fIbuf\fR, extracts the MX records from the answer section of the packet, puts the results into \fIout\fR, and returns 0 or -1 the same way as \fIdns_mx\fR. .SH "SEE ALSO" dns_ip4_qualify(3), dns_ip6_qualify(3), dns_name4(3)