resolv: Reformat resolv/res_mkquery.c to GNU style

This commit is contained in:
Florian Weimer 2017-06-30 11:31:12 +02:00
parent 7ab27b76d2
commit 74084febc4
2 changed files with 145 additions and 144 deletions

View File

@ -1,3 +1,8 @@
2017-06-30 Florian Weimer <fweimer@redhat.com>
* resolv/res_mkquery.c: Reformat to GNU style.
(T_OPT): Remove definition. It is present in the header file.
2017-06-30 Florian Weimer <fweimer@redhat.com> 2017-06-30 Florian Weimer <fweimer@redhat.com>
* resolv/res_mkquery.c (DEBUG): Remove macro and preprocessor * resolv/res_mkquery.c (DEBUG): Remove macro and preprocessor

View File

@ -97,41 +97,39 @@
# define RANDOM_BITS(Var) { uint64_t v64; HP_TIMING_NOW (v64); Var = v64; } # define RANDOM_BITS(Var) { uint64_t v64; HP_TIMING_NOW (v64); Var = v64; }
#endif #endif
/* /* Form all types of queries. Returns the size of the result or -1 on
* Form all types of queries. error.
* Returns the size of the result or -1.
*/ STATP points to an initialized resolver state. OP is the opcode of
the query. DNAME is the domain. CLASS and TYPE are the DNS query
class and type. DATA can be NULL; otherwise, it is a pointer to a
domain name which is included in the generated packet (if op ==
NS_NOTIFY_OP). BUF must point to the out buffer of BUFLEN bytes.
DATALEN and NEWRR_IN are currently ignored. */
int int
res_nmkquery(res_state statp, res_nmkquery (res_state statp, int op, const char *dname,
int op, /* opcode of query */ int class, int type,
const char *dname, /* domain name */ const unsigned char *data, int datalen,
int class, int type, /* class and type of query */ const unsigned char *newrr_in,
const u_char *data, /* resource record data */ unsigned char *buf, int buflen)
int datalen, /* length of data */
const u_char *newrr_in, /* new rr for modify or append */
u_char *buf, /* buffer to put query */
int buflen) /* size of buffer */
{ {
HEADER *hp; HEADER *hp;
u_char *cp; unsigned char *cp;
int n; int n;
u_char *dnptrs[20], **dpp, **lastdnptr; unsigned char *dnptrs[20], **dpp, **lastdnptr;
if (class < 0 || class > 65535 if (class < 0 || class > 65535 || type < 0 || type > 65535)
|| type < 0 || type > 65535)
return -1; return -1;
/* /* Initialize header fields. */
* Initialize header fields.
*/
if ((buf == NULL) || (buflen < HFIXEDSZ)) if ((buf == NULL) || (buflen < HFIXEDSZ))
return (-1); return -1;
memset(buf, 0, HFIXEDSZ); memset (buf, 0, HFIXEDSZ);
hp = (HEADER *) buf; hp = (HEADER *) buf;
/* We randomize the IDs every time. The old code just /* We randomize the IDs every time. The old code just incremented
incremented by one after the initial randomization which by one after the initial randomization which still predictable if
still predictable if the application does multiple the application does multiple requests. */
requests. */
int randombits; int randombits;
do do
{ {
@ -144,6 +142,7 @@ res_nmkquery(res_state statp,
#endif #endif
} }
while ((randombits & 0xffff) == 0); while ((randombits & 0xffff) == 0);
statp->id = (statp->id + randombits) & 0xffff; statp->id = (statp->id + randombits) & 0xffff;
hp->id = statp->id; hp->id = statp->id;
hp->opcode = op; hp->opcode = op;
@ -155,80 +154,78 @@ res_nmkquery(res_state statp,
*dpp++ = buf; *dpp++ = buf;
*dpp++ = NULL; *dpp++ = NULL;
lastdnptr = dnptrs + sizeof dnptrs / sizeof dnptrs[0]; lastdnptr = dnptrs + sizeof dnptrs / sizeof dnptrs[0];
/*
* perform opcode specific processing /* Perform opcode specific processing. */
*/ switch (op)
switch (op) { {
case NS_NOTIFY_OP: case NS_NOTIFY_OP:
if ((buflen -= QFIXEDSZ + (data == NULL ? 0 : RRFIXEDSZ)) < 0) if ((buflen -= QFIXEDSZ + (data == NULL ? 0 : RRFIXEDSZ)) < 0)
return (-1); return -1;
goto compose; goto compose;
case QUERY: case QUERY:
if ((buflen -= QFIXEDSZ) < 0) if ((buflen -= QFIXEDSZ) < 0)
return (-1); return -1;
compose: compose:
n = ns_name_compress(dname, cp, buflen, n = ns_name_compress (dname, cp, buflen,
(const u_char **) dnptrs, (const unsigned char **) dnptrs,
(const u_char **) lastdnptr); (const unsigned char **) lastdnptr);
if (n < 0) if (n < 0)
return (-1); return -1;
cp += n; cp += n;
buflen -= n; buflen -= n;
NS_PUT16 (type, cp); NS_PUT16 (type, cp);
NS_PUT16 (class, cp); NS_PUT16 (class, cp);
hp->qdcount = htons(1); hp->qdcount = htons (1);
if (op == QUERY || data == NULL) if (op == QUERY || data == NULL)
break; break;
/*
* Make an additional record for completion domain. /* Make an additional record for completion domain. */
*/ n = ns_name_compress ((char *)data, cp, buflen,
n = ns_name_compress((char *)data, cp, buflen, (const unsigned char **) dnptrs,
(const u_char **) dnptrs, (const unsigned char **) lastdnptr);
(const u_char **) lastdnptr);
if (__glibc_unlikely (n < 0)) if (__glibc_unlikely (n < 0))
return (-1); return -1;
cp += n; cp += n;
buflen -= n; buflen -= n;
NS_PUT16 (T_NULL, cp); NS_PUT16 (T_NULL, cp);
NS_PUT16 (class, cp); NS_PUT16 (class, cp);
NS_PUT32 (0, cp); NS_PUT32 (0, cp);
NS_PUT16 (0, cp); NS_PUT16 (0, cp);
hp->arcount = htons(1); hp->arcount = htons (1);
break; break;
default: default:
return (-1); return -1;
} }
return (cp - buf); return cp - buf;
} }
libresolv_hidden_def (res_nmkquery) libresolv_hidden_def (res_nmkquery)
/* Create an OPT resource record. Return the length of the final
packet, or -1 on error.
/* attach OPT pseudo-RR, as documented in RFC2671 (EDNS0). */ STATP must be an initialized resolver state. N0 is the current
#ifndef T_OPT number of bytes of the packet (already written to BUF by the
#define T_OPT 41 aller). BUF is the packet being constructed. The array it
#endif pointers to must be BUFLEN bytes long. ANSLEN is the advertised
EDNS buffer size (to be included in the OPT resource record). */
int int
__res_nopt(res_state statp, __res_nopt (res_state statp, int n0, unsigned char *buf, int buflen,
int n0, /* current offset in buffer */ int anslen)
u_char *buf, /* buffer to put query */
int buflen, /* size of buffer */
int anslen) /* UDP answer buffer size */
{ {
u_int16_t flags = 0; uint16_t flags = 0;
HEADER *hp = (HEADER *) buf; HEADER *hp = (HEADER *) buf;
u_char *cp = buf + n0; unsigned char *cp = buf + n0;
u_char *ep = buf + buflen; unsigned char *ep = buf + buflen;
if ((ep - cp) < 1 + RRFIXEDSZ) if ((ep - cp) < 1 + RRFIXEDSZ)
return -1; return -1;
*cp++ = 0; /* "." */ /* Add the root label. */
*cp++ = 0;
NS_PUT16(T_OPT, cp); /* TYPE */ NS_PUT16 (T_OPT, cp); /* Record type. */
/* Lowering the advertised buffer size based on the actual /* Lowering the advertised buffer size based on the actual
answer buffer size is desirable because the server will answer buffer size is desirable because the server will
@ -253,16 +250,15 @@ __res_nopt(res_state statp,
NS_PUT16 (buffer_size, cp); NS_PUT16 (buffer_size, cp);
} }
*cp++ = NOERROR; /* extended RCODE */ *cp++ = NOERROR; /* Extended RCODE. */
*cp++ = 0; /* EDNS version */ *cp++ = 0; /* EDNS version. */
if (statp->options & RES_USE_DNSSEC) { if (statp->options & RES_USE_DNSSEC)
flags |= NS_OPT_DNSSEC_OK; flags |= NS_OPT_DNSSEC_OK;
}
NS_PUT16(flags, cp); NS_PUT16 (flags, cp);
NS_PUT16(0, cp); /* RDLEN */ NS_PUT16 (0, cp); /* RDATA length (no options are preent). */
hp->arcount = htons(ntohs(hp->arcount) + 1); hp->arcount = htons (ntohs (hp->arcount) + 1);
return cp - buf; return cp - buf;
} }