Some extensions to netinet/in.h adding some Linux compatible defintions. From Macs N.

This commit is contained in:
Gregory Nutt 2015-02-11 06:35:34 -06:00
parent 5bb723c2e1
commit 62aee62c3a
3 changed files with 81 additions and 2 deletions

View File

@ -87,6 +87,11 @@
#define MCAST_EXCLUDE 0 #define MCAST_EXCLUDE 0
#define MCAST_INCLUDE 1 #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 */ /* Special values of in_addr_t */
#define INADDR_ANY ((in_addr_t)0x00000000) /* Address to accept any incoming messages */ #define INADDR_ANY ((in_addr_t)0x00000000) /* Address to accept any incoming messages */
@ -113,6 +118,8 @@
* Public Type Definitions * Public Type Definitions
****************************************************************************/ ****************************************************************************/
typedef uint16_t in_port_t;
/* IPv4 Internet address */ /* IPv4 Internet address */
typedef uint32_t in_addr_t; typedef uint32_t in_addr_t;
@ -148,8 +155,30 @@ struct sockaddr_in6
struct in6_addr sin6_addr; /* IPv6 internet address */ 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 * Public Function Prototypes
****************************************************************************/ ****************************************************************************/
#undef EXTERN
#if defined(__cplusplus)
}
#endif
#endif /* __INCLUDE_NETINET_IN_H */ #endif /* __INCLUDE_NETINET_IN_H */

View File

@ -35,8 +35,8 @@
# Add the networking C files to the build # Add the networking C files to the build
CSRCS += lib_etherntoa.c lib_htons.c lib_htonl.c lib_inetaddr.c CSRCS += lib_addrconfig.c lib_etherntoa.c lib_htons.c lib_htonl.c
CSRCS += lib_inetntoa.c lib_inetntop.c lib_inetpton.c CSRCS += lib_inetaddr.c lib_inetntoa.c lib_inetntop.c lib_inetpton.c
# Routing table support # Routing table support

50
libc/net/lib_addrconfig.c Normal file
View File

@ -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;