This patch introduces a new config directive
'UCLIBC_HAS_RESOLVER_SUPPORT' and adds the new symbols conditionally.

Signed-off-by: Daniel Mack <[email protected]>
---
 extra/Configs/Config.in |   10 ++++++++++
 libc/inet/Makefile.in   |    2 ++
 libc/inet/ns_netint.c   |    8 ++++++++
 libc/inet/resolv.c      |   26 ++++++++++++++++++++++++++
 4 files changed, 46 insertions(+), 0 deletions(-)
 create mode 100644 libc/inet/ns_netint.c

diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in
index eebd154..3e2042a 100644
--- a/extra/Configs/Config.in
+++ b/extra/Configs/Config.in
@@ -1264,6 +1264,16 @@ config UCLIBC_HAS_EXTRA_COMPAT_RES_STATE
          Answer Y if selecting UCLIBC_HAS_COMPAT_RES_STATE is not enough.
          As far as I can say, this should never be needed.
 
+config UCLIBC_HAS_RESOLVER_SUPPORT
+       bool "DNS resolver functions"
+       select UCLIBC_HAS_COMPAT_RES_STATE
+       help
+         Provide implementations for DNS resolver functions.
+         In particular, the following functions will be added to the
+         library:
+
+         ns_get16, ns_get32, ns_put16, ns_put32
+
 config UCLIBC_HAS_LIBRESOLV_STUB
        bool "Provide libresolv stub"
        help
diff --git a/libc/inet/Makefile.in b/libc/inet/Makefile.in
index d588220..6c2c576 100644
--- a/libc/inet/Makefile.in
+++ b/libc/inet/Makefile.in
@@ -40,6 +40,8 @@ CSRC-$(findstring y,$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6)) += \
 CSRC-$(findstring y,$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6)) += \
        res_init.c res_query.c res_comp.c ns_name.c \
        _res_state.c
+CSRC-$(findstring y,$(UCLIBC_HAS_RESOLVER_SUPPORT)) += \
+       ns_netint.c
 ## # unused ATM
 ## CSRC-y += encodep.c decodep.c formquery.c
 
diff --git a/libc/inet/ns_netint.c b/libc/inet/ns_netint.c
new file mode 100644
index 0000000..acf88dc
--- /dev/null
+++ b/libc/inet/ns_netint.c
@@ -0,0 +1,8 @@
+/*
+ * Copyright (C) 2000-2006 Erik Andersen <[email protected]>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_ns_netint
+#include RESOLVER
diff --git a/libc/inet/resolv.c b/libc/inet/resolv.c
index 9f5d118..a347ca5 100644
--- a/libc/inet/resolv.c
+++ b/libc/inet/resolv.c
@@ -3326,6 +3326,32 @@ int res_querydomain(const char *name, const char 
*domain, int class, int type,
 libc_hidden_def(res_querydomain)
 #endif /* L_res_query */
 
+#ifdef L_ns_netint
+unsigned int ns_get16(const unsigned char *src)
+{
+       unsigned int dst;
+       NS_GET16(dst, src);
+       return dst;
+}
+
+unsigned long ns_get32(const unsigned char *src)
+{
+       unsigned long dst;
+       NS_GET32(dst, src);
+       return dst;
+}
+
+void ns_put16(unsigned int src, unsigned char *dst)
+{
+       NS_PUT16(src, dst);
+}
+
+void ns_put32(unsigned long src, unsigned char *dst)
+{
+       NS_PUT32(src, dst);
+}
+#endif /* L_ns_netint */
+
 /* Unimplemented: */
 /* res_mkquery */
 /* res_send */
-- 
1.7.5.4

_______________________________________________
uClibc mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/uclibc

Reply via email to