From 466f11015f44dd6be48bc0295196a83421bceea5 Mon Sep 17 00:00:00 2001 From: Daniel Mack Date: Wed, 13 Jul 2011 00:30:48 +0200 Subject: inet/resolv: add ns_{put,get}{16,32} This patch introduces a new config directive 'UCLIBC_HAS_RESOLVER_SUPPORT' and adds the new symbols conditionally. Signed-off-by: Daniel Mack --- 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(+) create mode 100644 libc/inet/ns_netint.c diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in index 8f250e04e..c14660d1d 100644 --- a/extra/Configs/Config.in +++ b/extra/Configs/Config.in @@ -1276,6 +1276,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 d58822074..6c2c576f8 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 000000000..acf88dc68 --- /dev/null +++ b/libc/inet/ns_netint.c @@ -0,0 +1,8 @@ +/* + * Copyright (C) 2000-2006 Erik Andersen + * + * 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 9f5d11853..a347ca5f6 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 */ -- cgit v1.2.3