mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-23 03:10:05 +00:00
resolv: Reformat resolv/res_mkquery.c to GNU style
This commit is contained in:
parent
7ab27b76d2
commit
74084febc4
@ -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
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user