From 3e4e3d261f3cb5f292337a0ad481434001ec111a Mon Sep 17 00:00:00 2001 From: Kaspar Schleiser Date: Wed, 20 Sep 2017 22:11:04 +0200 Subject: [PATCH] sys/posix: factor inet_*to* from header into .c file --- Makefile.dep | 8 +++- makefiles/pseudomodules.inc.mk | 1 - sys/posix/Makefile | 1 + sys/posix/include/arpa/inet.h | 68 +++------------------------------ sys/posix/include/sys/bytes.h | 2 + sys/posix/inet.c | 69 ++++++++++++++++++++++++++++++++++ 6 files changed, 83 insertions(+), 66 deletions(-) create mode 100644 sys/posix/Makefile create mode 100644 sys/posix/inet.c diff --git a/Makefile.dep b/Makefile.dep index 6073e500ca06..88bd7cd85776 100644 --- a/Makefile.dep +++ b/Makefile.dep @@ -414,6 +414,8 @@ ifneq (,$(filter posix_sockets,$(USEMODULE))) USEMODULE += bitfield USEMODULE += random USEMODULE += vfs + USEMODULE += posix + USEMODULE += xtimer endif ifneq (,$(filter rtt_stdio,$(USEMODULE))) @@ -429,8 +431,10 @@ ifneq (,$(filter isrpipe,$(USEMODULE))) USEMODULE += tsrb endif -ifneq (,$(filter posix,$(USEMODULE))) - USEMODULE += xtimer +ifneq (,$(filter shell_commands,$(USEMODULE))) + ifneq (,$(filter fib,$(USEMODULE))) + USEMODULE += posix + endif endif ifneq (,$(filter posix_semaphore,$(USEMODULE))) diff --git a/makefiles/pseudomodules.inc.mk b/makefiles/pseudomodules.inc.mk index ef2d821c0763..9bf81c929c5a 100644 --- a/makefiles/pseudomodules.inc.mk +++ b/makefiles/pseudomodules.inc.mk @@ -57,7 +57,6 @@ PSEUDOMODULES += newlib_gnu_source PSEUDOMODULES += newlib_nano PSEUDOMODULES += openthread PSEUDOMODULES += pktqueue -PSEUDOMODULES += posix PSEUDOMODULES += printf_float PSEUDOMODULES += prng PSEUDOMODULES += prng_% diff --git a/sys/posix/Makefile b/sys/posix/Makefile new file mode 100644 index 000000000000..48422e909a47 --- /dev/null +++ b/sys/posix/Makefile @@ -0,0 +1 @@ +include $(RIOTBASE)/Makefile.base diff --git a/sys/posix/include/arpa/inet.h b/sys/posix/include/arpa/inet.h index 0692d19c11ad..bb10c61c9ee4 100644 --- a/sys/posix/include/arpa/inet.h +++ b/sys/posix/include/arpa/inet.h @@ -23,14 +23,7 @@ #ifndef ARPA_INET_H #define ARPA_INET_H -#include -#include -#include - -#include "byteorder.h" #include "net/af.h" -#include "net/ipv4/addr.h" -#include "net/ipv6/addr.h" #include "sys/bytes.h" #include "netinet/in.h" @@ -42,14 +35,14 @@ extern "C" { * @brief Size in byte of an IPv4 address */ #ifndef INADDRSZ -#define INADDRSZ (sizeof(ipv4_addr_t)) +#define INADDRSZ (4) #endif /** * @brief Size in byte of an IPv6 address */ #ifndef IN6ADDRSZ -#define IN6ADDRSZ (sizeof(ipv6_addr_t)) +#define IN6ADDRSZ (16) #endif /** @@ -66,35 +59,8 @@ extern "C" { * @return NULL, if @p size was smaller than needed * @return NULL, if @p src or @p dst was NULL */ -static inline const char *inet_ntop(int af, const void *restrict src, char *restrict dst, - socklen_t size) -{ - switch (af) { -#ifdef MODULE_IPV4_ADDR - case AF_INET: - if (ipv4_addr_to_str(dst, src, (size_t)size) == NULL) { - errno = ENOSPC; - return NULL; - } - break; -#endif -#ifdef MODULE_IPV6_ADDR - case AF_INET6: - if (ipv6_addr_to_str(dst, src, (size_t)size) == NULL) { - errno = ENOSPC; - return NULL; - } - break; -#endif - default: - (void)src; - (void)dst; - (void)size; - errno = EAFNOSUPPORT; - return NULL; - } - return dst; -} +const char *inet_ntop(int af, const void *restrict src, char *restrict dst, + socklen_t size); /** * @brief Converts an IP address string representation to a byte-represented @@ -110,31 +76,7 @@ static inline const char *inet_ntop(int af, const void *restrict src, char *rest * @return 0, if @p src was malformed or input pointers were NULL. * @return -1, if @p af is not supported. */ -static inline int inet_pton(int af, const char *src, void *dst) -{ - switch (af) { -#ifdef MODULE_IPV4_ADDR - case AF_INET: - if (ipv4_addr_from_str(dst, src) == NULL) { - return 0; - } - break; -#endif -#ifdef MODULE_IPV6_ADDR - case AF_INET6: - if (ipv6_addr_from_str(dst, src) == NULL) { - return 0; - } - break; -#endif - default: - (void)src; - (void)dst; - errno = EAFNOSUPPORT; - return -1; - } - return 1; -} +int inet_pton(int af, const char *src, void *dst); #ifdef __cplusplus } diff --git a/sys/posix/include/sys/bytes.h b/sys/posix/include/sys/bytes.h index 92c386d9baf1..fbdef4f495fe 100644 --- a/sys/posix/include/sys/bytes.h +++ b/sys/posix/include/sys/bytes.h @@ -20,6 +20,8 @@ #ifndef SYS_BYTES_H #define SYS_BYTES_H +#include + #include "byteorder.h" #ifdef __cplusplus diff --git a/sys/posix/inet.c b/sys/posix/inet.c new file mode 100644 index 000000000000..1fc02f953268 --- /dev/null +++ b/sys/posix/inet.c @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2013-15 Freie Universität Berlin + * + * This file is subject to the terms and conditions of the GNU Lesser + * General Public License v2.1. See the file LICENSE in the top level + * directory for more details. + */ + +#include +#include + +#include "net/ipv4/addr.h" +#include "net/ipv6/addr.h" + +const char *inet_ntop(int af, const void *restrict src, char *restrict dst, + socklen_t size) +{ + switch (af) { +#ifdef MODULE_IPV4_ADDR + case AF_INET: + if (ipv4_addr_to_str(dst, src, (size_t)size) == NULL) { + errno = ENOSPC; + return NULL; + } + break; +#endif +#ifdef MODULE_IPV6_ADDR + case AF_INET6: + if (ipv6_addr_to_str(dst, src, (size_t)size) == NULL) { + errno = ENOSPC; + return NULL; + } + break; +#endif + default: + (void)src; + (void)dst; + (void)size; + errno = EAFNOSUPPORT; + return NULL; + } + return dst; +} + +int inet_pton(int af, const char *src, void *dst) +{ + switch (af) { +#ifdef MODULE_IPV4_ADDR + case AF_INET: + if (ipv4_addr_from_str(dst, src) == NULL) { + return 0; + } + break; +#endif +#ifdef MODULE_IPV6_ADDR + case AF_INET6: + if (ipv6_addr_from_str(dst, src) == NULL) { + return 0; + } + break; +#endif + default: + (void)src; + (void)dst; + errno = EAFNOSUPPORT; + return -1; + } + return 1; +}