Files
semi-libc/src/network/res_query.c
T
Rich Felker 8312f7f60f implement new dns backend, res_send and other legacy resolver functions
this is the second phase of the "resolver overhaul" project.

the key additions in this commit are the __res_msend and __res_mkquery
functions, which have been factored so as to provide a backend for
both the legacy res_* functions and the standard getaddrinfo and
getnameinfo functions. the latter however are still using the old
backend code; there is code duplication which still needs to be
removed, and this will be the next phase of the resolver overhaul.

__res_msend is derived from the old __dns_doqueries function, but
generalized to send arbitrary caller-provided packets in parallel
rather than producing the parallel queries itself. this allows it to
be used (completely trivially) as a backend for res_send. the
factored-out query generation code, with slightly more generality, is
now part of __res_mkquery.
2014-06-02 02:13:57 -04:00

18 lines
562 B
C

#include <resolv.h>
#include <netdb.h>
#include "libc.h"
int __res_mkquery(int, const char *, int, int, const unsigned char *, int, const unsigned char*, unsigned char *, int);
int __res_send(const unsigned char *, int, unsigned char *, int);
int __res_query(const char *name, int class, int type, unsigned char *dest, int len)
{
unsigned char q[280];
int ql = __res_mkquery(0, name, class, type, 0, 0, 0, q, sizeof q);
if (ql < 0) return ql;
return __res_send(q, ql, dest, len);
}
weak_alias(__res_query, res_query);
weak_alias(__res_query, res_search);