From df682c6c14aeab3843c545cce6d91501bc4d6f10 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Wed, 11 Feb 2015 06:35:34 -0600 Subject: Some extensions to netinet/in.h adding some Linux compatible defintions. From Macs N. --- nuttx/include/netinet/in.h | 29 ++++++++++++++++++++++++ nuttx/libc/net/Make.defs | 4 ++-- nuttx/libc/net/lib_addrconfig.c | 50 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 nuttx/libc/net/lib_addrconfig.c diff --git a/nuttx/include/netinet/in.h b/nuttx/include/netinet/in.h index 9a5ae27b6..565ffbeb1 100644 --- a/nuttx/include/netinet/in.h +++ b/nuttx/include/netinet/in.h @@ -87,6 +87,11 @@ #define MCAST_EXCLUDE 0 #define MCAST_INCLUDE 1 +/* Test if an IPv4 address is a multicast address */ + +#define IN_CLASSD(i) (((uint32_t)(i) & 0xf0000000) == 0xe0000000) +#define IN_MULTICAST(i) IN_CLASSD(i) + /* Special values of in_addr_t */ #define INADDR_ANY ((in_addr_t)0x00000000) /* Address to accept any incoming messages */ @@ -113,6 +118,8 @@ * Public Type Definitions ****************************************************************************/ +typedef uint16_t in_port_t; + /* IPv4 Internet address */ typedef uint32_t in_addr_t; @@ -148,8 +155,30 @@ struct sockaddr_in6 struct in6_addr sin6_addr; /* IPv6 internet address */ }; +/**************************************************************************** + * Public Data + ****************************************************************************/ + +#undef EXTERN +#if defined(__cplusplus) +#define EXTERN extern "C" +extern "C" +{ +#else +#define EXTERN extern +#endif + +/* Global IPv6 in6addr_any */ + +EXTERN const struct in6_addr in6addr_any; + /**************************************************************************** * Public Function Prototypes ****************************************************************************/ +#undef EXTERN +#if defined(__cplusplus) +} +#endif + #endif /* __INCLUDE_NETINET_IN_H */ diff --git a/nuttx/libc/net/Make.defs b/nuttx/libc/net/Make.defs index 7cf402b96..6fe3cce9c 100644 --- a/nuttx/libc/net/Make.defs +++ b/nuttx/libc/net/Make.defs @@ -35,8 +35,8 @@ # Add the networking C files to the build -CSRCS += lib_etherntoa.c lib_htons.c lib_htonl.c lib_inetaddr.c -CSRCS += lib_inetntoa.c lib_inetntop.c lib_inetpton.c +CSRCS += lib_addrconfig.c lib_etherntoa.c lib_htons.c lib_htonl.c +CSRCS += lib_inetaddr.c lib_inetntoa.c lib_inetntop.c lib_inetpton.c # Routing table support diff --git a/nuttx/libc/net/lib_addrconfig.c b/nuttx/libc/net/lib_addrconfig.c new file mode 100644 index 000000000..46dc1cd60 --- /dev/null +++ b/nuttx/libc/net/lib_addrconfig.c @@ -0,0 +1,50 @@ +/**************************************************************************** + * libc/net/lib_addrconf.c + * + * Author: Max Nekludov + * Copyright (c) 2015, Max Nekludov. All rights reserved. + * + * 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 of the Institute 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 INSTITUTE 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 INSTITUTE 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. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT; -- cgit v1.2.3