Mercurial > flash_v2
changeset 315:865310daf950
* include/dns_priv.h: Make dns_header structure endian dependent.
* include/dns_impl.inl: Don't use htons() for bitfields <= 8 bit.
Change the way setting the type and class fields in build_query()
to work with big-endian.
| author | asl |
|---|---|
| date | Thu, 29 Aug 2002 10:10:40 +0000 |
| parents | 8628bd7bd9bd |
| children | e17d1cf55283 |
| files | packages/net/ns/dns/current/ChangeLog packages/net/ns/dns/current/include/dns_impl.inl packages/net/ns/dns/current/include/dns_priv.h |
| diffstat | 3 files changed, 35 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/net/ns/dns/current/ChangeLog +++ b/packages/net/ns/dns/current/ChangeLog @@ -1,3 +1,11 @@ +2002-08-29 Roland Caßebohm <roland.cassebohm@visionsystems.de> + + * include/dns_priv.h: Make dns_header structure endian dependent. + + * include/dns_impl.inl: Don't use htons() for bitfields <= 8 bit. + Change the way setting the type and class fields in build_query() + to work with big-endian. + 2002-05-30 Jesper Skov <jskov@redhat.com> * src/dns.c: fixed index->ptdindex oversight.
--- a/packages/net/ns/dns/current/include/dns_impl.inl +++ b/packages/net/ns/dns/current/include/dns_impl.inl @@ -201,7 +201,7 @@ build_query(char * msg, const char * hos dns_hdr = (struct dns_header *) msg; dns_hdr->id = htons(id++); dns_hdr->rd = true; - dns_hdr->opcode = htons(DNS_QUERY); + dns_hdr->opcode = DNS_QUERY; dns_hdr->qdcount = htons(1); /* Now the question we want to ask */ @@ -216,10 +216,10 @@ build_query(char * msg, const char * hos ptr += len; /* Set the type and class fields */ - *ptr++ = htons(rr_type) & 0xff; - *ptr++ = htons(rr_type) >> 8; - *ptr++ = htons(DNS_CLASS_IN) & 0xff; - *ptr++ = htons(DNS_CLASS_IN) >> 8; + *ptr++ = (rr_type >> 8) & 0xff; + *ptr++ = rr_type & 0xff; + *ptr++ = (DNS_CLASS_IN >> 8) & 0xff; + *ptr++ = DNS_CLASS_IN & 0xff; len = ptr - msg; @@ -279,7 +279,7 @@ parse_answer(char * msg, short rr_type) } if ((dns_hdr->qr != 1) || - (dns_hdr->opcode != htons(DNS_QUERY)) || + (dns_hdr->opcode != DNS_QUERY) || (dns_hdr->rcode != DNS_REPLY_NOERR)) { h_errno = NO_RECOVERY; return NULL;
--- a/packages/net/ns/dns/current/include/dns_priv.h +++ b/packages/net/ns/dns/current/include/dns_priv.h @@ -51,6 +51,7 @@ //============================================================================= struct dns_header { +#if (CYG_BYTEORDER == CYG_LSBFIRST) unsigned id :16; /* query identification number */ /* fields in third byte */ unsigned rd :1; /* recursion desired */ @@ -69,6 +70,26 @@ struct dns_header { unsigned ancount :16; /* number of answer entries */ unsigned nscount :16; /* number of authority entries */ unsigned arcount :16; /* number of resource entries */ +#else + unsigned id :16; /* query identification number */ + /* fields in third byte */ + unsigned qr :1; /* response flag */ + unsigned opcode :4; /* purpose of message */ + unsigned aa :1; /* authoritive answer */ + unsigned tc :1; /* truncated message */ + unsigned rd :1; /* recursion desired */ + /* fields in fourth byte */ + unsigned ra :1; /* recursion available */ + unsigned unused :1; /* unused bits */ + unsigned ad: 1; /* authentic data from named */ + unsigned cd: 1; /* checking disabled by resolver */ + unsigned rcode :4; /* response code */ + /* remaining bytes */ + unsigned qdcount :16; /* number of question entries */ + unsigned ancount :16; /* number of answer entries */ + unsigned nscount :16; /* number of authority entries */ + unsigned arcount :16; /* number of resource entries */ +#endif }; struct resource_record {
