diff options
author | Ulrich Drepper <drepper@redhat.com> | 2006-05-06 08:03:24 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2006-05-06 08:03:24 +0000 |
commit | 697e162863c5e32a5de03688d47151851ab21eb9 (patch) | |
tree | ec41be6cad6a29041fcc56424352b7282815930f /include | |
parent | acf82eaf270b410e49dfe45fa836f1ba41b62bb6 (diff) |
* include/arpa/nameser.h: Add optimizations for NS_GET16 and NS_GET32.
* resolv/res_send.c (res_nameinquery): Use NS_GET16 directly
instead of ns_get16.
(res_queriesmatch): Likewise. Minor optimization.
Diffstat (limited to 'include')
-rw-r--r-- | include/arpa/nameser.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/include/arpa/nameser.h b/include/arpa/nameser.h index 944fe732a6..09bd504754 100644 --- a/include/arpa/nameser.h +++ b/include/arpa/nameser.h @@ -1 +1,28 @@ #include <resolv/arpa/nameser.h> + +/* If the machine allows unaligned access we can do better than using + the NS_GET16, NS_GET32, NS_PUT16, and NS_PUT32 macros from the + installed header. */ +#include <string.h> +#include <stdint.h> +#include <netinet/in.h> + +#if _STRING_ARCH_unaligned + +# undef NS_GET16 +# define NS_GET16(s, cp) \ + do { \ + uint16_t *t_cp = (uint16_t *) (cp); \ + (s) = ntohs (*t_cp); \ + (cp) += NS_INT16SZ; \ + } while (0) + +# undef NS_GET32 +# define NS_GET32(s, cp) \ + do { \ + uint32_t *t_cp = (uint32_t *) (cp); \ + (s) = ntohl (*t_cp); \ + (cp) += NS_INT32SZ; \ + } while (0) + +#endif |