summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2015-02-11 06:35:34 -0600
committerGregory Nutt <gnutt@nuttx.org>2015-02-11 06:35:34 -0600
commitdf682c6c14aeab3843c545cce6d91501bc4d6f10 (patch)
tree47d560fb5959c3955239da0f94da0270cc8df5c0
parent3116daedcaa8422e75e3aec6741eccf1db5107af (diff)
downloadnuttx-df682c6c14aeab3843c545cce6d91501bc4d6f10.tar.gz
nuttx-df682c6c14aeab3843c545cce6d91501bc4d6f10.tar.bz2
nuttx-df682c6c14aeab3843c545cce6d91501bc4d6f10.zip
Some extensions to netinet/in.h adding some Linux compatible defintions. From Macs N.
-rw-r--r--nuttx/include/netinet/in.h29
-rw-r--r--nuttx/libc/net/Make.defs4
-rw-r--r--nuttx/libc/net/lib_addrconfig.c50
3 files changed, 81 insertions, 2 deletions
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;
@@ -149,7 +156,29 @@ struct sockaddr_in6
};
/****************************************************************************
+ * 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 <macscomp@gmail.com>
+ * 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 <nuttx/config.h>
+
+#include <nuttx/net/ip.h>
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Data
+ ****************************************************************************/
+
+const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;