summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2006-05-11 14:01:43 +0000
committerJakub Jelinek <jakub@redhat.com>2006-05-11 14:01:43 +0000
commit3ec0d26c76d6905501034692d05bddbabae64e76 (patch)
tree191efcdfd934a0369cdef723fe4f650fe2f3dcfc /include
parent262cf6b3df91d5bb7cbdcae2390333b21e8008d5 (diff)
Updated to fedora-glibc-20060511T1325cvs/fedora-glibc-2_4_90-7
Diffstat (limited to 'include')
-rw-r--r--include/arpa/nameser.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/include/arpa/nameser.h b/include/arpa/nameser.h
index 944fe732a6..449f5b452e 100644
--- a/include/arpa/nameser.h
+++ b/include/arpa/nameser.h
@@ -1 +1,44 @@
#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(l, cp) \
+ do { \
+ uint32_t *t_cp = (uint32_t *) (cp); \
+ (l) = ntohl (*t_cp); \
+ (cp) += NS_INT32SZ; \
+ } while (0)
+
+# undef NS_PUT16
+# define NS_PUT16(s, cp) \
+ do { \
+ uint16_t *t_cp = (uint16_t *) (cp); \
+ *t_cp = htons (s); \
+ (cp) += NS_INT16SZ; \
+ } while (0)
+
+# undef NS_PUT32
+# define NS_PUT32(l, cp) \
+ do { \
+ uint32_t *t_cp = (uint32_t *) (cp); \
+ *t_cp = htonl (l); \
+ (cp) += NS_INT32SZ; \
+ } while (0)
+
+#endif