From d82d41387bfb0264a66652d10d9e8f78a69c71b2 Mon Sep 17 00:00:00 2001 From: patacongo Date: Sun, 2 Sep 2007 15:32:03 +0000 Subject: [PATCH] Add ntohs&l() and htons&l git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@324 42af7a65-404d-4744-a932-0658087f49c3 --- include/net/uip/uip.h | 32 +-------------------- include/netinet/in.h | 2 +- lib/Makefile | 37 +++++++++++------------- lib/lib_htonl.c | 67 +++++++++++++++++++++++++++++++++++++++++++ lib/lib_htons.c | 63 ++++++++++++++++++++++++++++++++++++++++ net/uip/uip.c | 5 ---- 6 files changed, 148 insertions(+), 58 deletions(-) create mode 100644 lib/lib_htonl.c create mode 100644 lib/lib_htons.c diff --git a/include/net/uip/uip.h b/include/net/uip/uip.h index d0ed0dd3fd..043d6d377b 100644 --- a/include/net/uip/uip.h +++ b/include/net/uip/uip.h @@ -50,6 +50,7 @@ #include #include +#include #include /**************************************************************************** @@ -1125,37 +1126,6 @@ struct uip_udp_conn *uip_udp_new(uip_ipaddr_t *ripaddr, uint16 rport); #define uip_ipaddr4(addr) (htons(((uint16 *)(addr))[1]) & 0xff) -/* Convert 16-bit quantity from host byte order to network byte order. - * - * This macro is primarily used for converting constants from host - * byte order to network byte order. For converting variables to - * network byte order, use the htons() function instead. - */ - -#ifndef HTONS -# if UIP_BYTE_ORDER == UIP_BIG_ENDIAN -# define HTONS(n) (n) -# else /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ -# define HTONS(n) (uint16)((((uint16) (n)) << 8) | (((uint16) (n)) >> 8)) -# endif /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ -#else -#error "HTONS already defined!" -#endif /* HTONS */ - -/* Convert 16-bit quantity from host byte order to network byte order. - * - * This function is primarily used for converting variables from host - * byte order to network byte order. For converting constants to - * network byte order, use the HTONS() macro instead. - */ - -#ifndef htons -uint16 htons(uint16 val); -#endif /* htons */ -#ifndef ntohs -#define ntohs htons -#endif - /* This function is called user code to set up the wait */ #define uip_event_wait(waitflags) uip_event_timedwait(waitflags,0) diff --git a/include/netinet/in.h b/include/netinet/in.h index ea6a6ab513..e2ed783639 100644 --- a/include/netinet/in.h +++ b/include/netinet/in.h @@ -40,7 +40,7 @@ * Included Files ****************************************************************************/ -#include +#include /**************************************************************************** * Public Type Definitions diff --git a/lib/Makefile b/lib/Makefile index 7c34c3d2d0..13621ed4d6 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -1,4 +1,4 @@ -############################################################ +############################################################################ # Makefile # # Copyright (C) 2007 Gregory Nutt. All rights reserved. @@ -14,7 +14,7 @@ # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. -# 3. Neither the name Gregory Nutt nor the names of its contributors may be +# 3. Neither the name NuttX nor the names of its contributors may be # used to endorse or promote products derived from this software # without specific prior written permission. # @@ -31,7 +31,7 @@ # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # -############################################################ +########################################################################### -include $(TOPDIR)/Make.defs @@ -45,29 +45,23 @@ ifneq ($(CONFIG_NFILE_STREAMS),0) MISC_SRCS += lib_streamsem.c endif -STRING_SRCS = lib_memset.c lib_memcpy.c lib_memcmp.c lib_memmove.c \ - lib_strcpy.c lib_strncpy.c lib_strcmp.c \ - lib_strlen.c lib_strdup.c lib_strtol.c lib_strchr.c lib_strrchr.c \ - lib_strspn.c lib_strcspn.c \ - lib_strtok.c lib_strtokr.c lib_strerror.c +STRING_SRCS = lib_memset.c lib_memcpy.c lib_memcmp.c lib_memmove.c lib_strcpy.c \ + lib_strncpy.c lib_strcmp.c lib_strlen.c lib_strdup.c lib_strtol.c lib_strchr.c \ + lib_strrchr.c lib_strspn.c lib_strcspn.c lib_strtok.c lib_strtokr.c \ + lib_strerror.c CTYPE_SRCS = -STDIO_SRCS = lib_printf.c lib_rawprintf.c lib_lowprintf.c \ - lib_sprintf.c lib_libsprintf.c lib_vsprintf.c lib_libvsprintf.c \ - lib_memstream.c lib_lowstream.c lib_nullstream.c \ +STDIO_SRCS = lib_printf.c lib_rawprintf.c lib_lowprintf.c lib_sprintf.c lib_libsprintf.c \ + lib_vsprintf.c lib_libvsprintf.c lib_memstream.c lib_lowstream.c lib_nullstream.c \ lib_sscanf.c ifneq ($(CONFIG_NFILE_DESCRIPTORS),0) STDIO_SRCS += lib_rawstream.c ifneq ($(CONFIG_NFILE_STREAMS),0) -STDIO_SRCS += lib_fopen.c lib_fclose.c \ - lib_fread.c lib_libfread.c lib_fgetc.c lib_fgets.c lib_gets.c \ - lib_fwrite.c lib_libfwrite.c lib_fflush.c \ - lib_fputc.c lib_puts.c lib_fputs.c \ - lib_ungetc.c \ - lib_vprintf.c lib_fprintf.c lib_vfprintf.c \ - lib_stdstream.c +STDIO_SRCS += lib_fopen.c lib_fclose.c lib_fread.c lib_libfread.c lib_fgetc.c lib_fgets.c \ + lib_gets.c lib_fwrite.c lib_libfwrite.c lib_fflush.c lib_fputc.c lib_puts.c \ + lib_fputs.c lib_ungetc.c lib_vprintf.c lib_fprintf.c lib_vfprintf.c lib_stdstream.c endif endif @@ -77,6 +71,8 @@ MATH_SRCS = lib_rint.c UNISTD_SRCS = lib_getopt.c +NET_SRCS = lib_htons.c lib_htonl.c + LIBGEN_SRCS = lib_basename.c lib_dirname.c SQ_SRCS = sq_addlast.c sq_addfirst.c sq_addafter.c \ @@ -85,9 +81,8 @@ SQ_SRCS = sq_addlast.c sq_addfirst.c sq_addafter.c \ DQ_SRCS = dq_addlast.c dq_addfirst.c dq_addafter.c dq_addbefore.c \ dq_rem.c dq_remlast.c dq_remfirst.c -CSRCS = $(MISC_SRCS) $(STRING_SRCS) $(CTYPE_SRCS) $(STDIO_SRCS) \ - $(STDLIB_SRCS) $(MATH_SRCS) $(UNISTD_SRCS) $(LIBGEN_SRCS) \ - $(SQ_SRCS) $(DQ_SRCS) +CSRCS = $(MISC_SRCS) $(STRING_SRCS) $(CTYPE_SRCS) $(STDIO_SRCS) $(STDLIB_SRCS) \ + $(MATH_SRCS) $(UNISTD_SRCS) $(NET_SRCS) $(LIBGEN_SRCS) $(SQ_SRCS) $(DQ_SRCS) COBJS = $(CSRCS:.c=$(OBJEXT)) SRCS = $(ASRCS) $(CSRCS) diff --git a/lib/lib_htonl.c b/lib/lib_htonl.c new file mode 100644 index 0000000000..1cc5b6bcf5 --- /dev/null +++ b/lib/lib_htonl.c @@ -0,0 +1,67 @@ +/************************************************************ + * lib_ntohl.c + * + * Copyright (C) 2007 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name Gregory Nutt nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ************************************************************/ + +/************************************************************ + * Compilation Switches + ************************************************************/ + +/************************************************************ + * Included Files + ************************************************************/ + +#include +#include + +/************************************************************ + * Global Functions + ************************************************************/ + +uint32 htonl(uint32 hl) +{ +#ifdef CONFIG_ENDIAN_BIG + return hl; +#else + return (uint32)htons((uint16)((hl) << 16)) | (uint32)htons((uint16)((hl) & 0xffff)); +#endif +} + +uint32 ntohl(uint32 nl) +{ +#ifdef CONFIG_ENDIAN_BIG + return nl; +#else + return htonl(nl); +#endif +} diff --git a/lib/lib_htons.c b/lib/lib_htons.c new file mode 100644 index 0000000000..7adf96f7d7 --- /dev/null +++ b/lib/lib_htons.c @@ -0,0 +1,63 @@ +/************************************************************ + * lib_htons.c + * + * Copyright (C) 2007 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name Gregory Nutt nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ************************************************************/ + +/************************************************************ + * Compilation Switches + ************************************************************/ + +/************************************************************ + * Included Files + ************************************************************/ + +#include +#include + +/************************************************************ + * Global Functions + ************************************************************/ + +uint16 htons(uint16 hs) +{ + return HTONS(hs); +} + +uint16 ntohs (uint16 ns) +{ +#ifdef CONFIG_ENDIAN_BIG + return ns +#else + return htons(ns); +#endif +} diff --git a/net/uip/uip.c b/net/uip/uip.c index f997072d95..7fa2e3b7ea 100644 --- a/net/uip/uip.c +++ b/net/uip/uip.c @@ -2157,11 +2157,6 @@ void uip_interrupt(uint8 flag) return; } -uint16 htons(uint16 val) -{ - return HTONS(val); -} - void uip_send(const void *data, int len) { if (len > 0)