summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lwip/src/include/lwip/def.h8
-rw-r--r--lwip/src/include/lwip/inet.h16
-rw-r--r--lwip/src/include/lwip/netdb.h69
-rw-r--r--lwip/src/include/lwip/sockets.h53
4 files changed, 72 insertions, 74 deletions
diff --git a/lwip/src/include/lwip/def.h b/lwip/src/include/lwip/def.h
index dfb266d..cafb4dd 100644
--- a/lwip/src/include/lwip/def.h
+++ b/lwip/src/include/lwip/def.h
@@ -58,6 +58,10 @@
#define PERF_STOP(x) /* null definition */
#endif /* LWIP_PERF */
+#ifdef __rtems__
+#include <netinet/in.h>
+#endif
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -115,6 +119,10 @@ u32_t lwip_htonl(u32_t x);
#endif /* BYTE_ORDER == BIG_ENDIAN */
/* Provide usual function names as macros for users, but this can be turned off */
+#ifdef __rtems__
+#define LWIP_DONT_PROVIDE_BYTEORDER_FUNCTIONS
+#endif
+
#ifndef LWIP_DONT_PROVIDE_BYTEORDER_FUNCTIONS
#define htons(x) lwip_htons(x)
#define ntohs(x) lwip_ntohs(x)
diff --git a/lwip/src/include/lwip/inet.h b/lwip/src/include/lwip/inet.h
index 2982a0f..b6fac46 100644
--- a/lwip/src/include/lwip/inet.h
+++ b/lwip/src/include/lwip/inet.h
@@ -55,6 +55,21 @@ extern "C" {
typedef u32_t in_addr_t;
#endif
+#ifdef __rtems__
+#include <netinet/in.h>
+#define inet_addr_from_ip4addr(target_inaddr, source_ipaddr) ((target_inaddr)->s_addr = ip4_addr_get_u32(source_ipaddr))
+#define inet_addr_to_ip4addr(target_ipaddr, source_inaddr) (ip4_addr_set_u32(target_ipaddr, (source_inaddr)->s_addr))
+#define inet6_addr_from_ip6addr(target_in6addr, source_ip6addr) {(target_in6addr)->__u6_addr.__u6_addr32[0] = (source_ip6addr)->addr[0]; \
+ (target_in6addr)->__u6_addr.__u6_addr32[1] = (source_ip6addr)->addr[1]; \
+ (target_in6addr)->__u6_addr.__u6_addr32[2] = (source_ip6addr)->addr[2]; \
+ (target_in6addr)->__u6_addr.__u6_addr32[3] = (source_ip6addr)->addr[3];}
+#define inet6_addr_to_ip6addr(target_ip6addr, source_in6addr) {(target_ip6addr)->addr[0] = (source_in6addr)->__u6_addr.__u6_addr32[0]; \
+ (target_ip6addr)->addr[1] = (source_in6addr)->__u6_addr.__u6_addr32[1]; \
+ (target_ip6addr)->addr[2] = (source_in6addr)->__u6_addr.__u6_addr32[2]; \
+ (target_ip6addr)->addr[3] = (source_in6addr)->__u6_addr.__u6_addr32[3]; \
+ ip6_addr_clear_zone(target_ip6addr);}
+
+#else
struct in_addr {
in_addr_t s_addr;
};
@@ -161,6 +176,7 @@ extern const struct in6_addr in6addr_any;
#endif /* LWIP_IPV6 */
+#endif /* __rtems__ */
#ifdef __cplusplus
}
diff --git a/lwip/src/include/lwip/netdb.h b/lwip/src/include/lwip/netdb.h
index ff33ec7..eaae285 100644
--- a/lwip/src/include/lwip/netdb.h
+++ b/lwip/src/include/lwip/netdb.h
@@ -46,6 +46,9 @@
extern "C" {
#endif
+#ifdef __rtems__
+#include <netdb.h>
+#else
/* some rarely used options */
#ifndef LWIP_DNS_API_DECLARE_H_ERRNO
#define LWIP_DNS_API_DECLARE_H_ERRNO 1
@@ -111,9 +114,15 @@ struct addrinfo {
struct addrinfo *ai_next; /* Pointer to next in list. */
};
#endif /* LWIP_DNS_API_DECLARE_STRUCTS */
+#endif /* __rtems__ */
#define NETDB_ELEM_SIZE (sizeof(struct addrinfo) + sizeof(struct sockaddr_storage) + DNS_MAX_NAME_LENGTH + 1)
+#if LWIP_DNS_API_DECLARE_H_ERRNO
+/* application accessible error code set by the DNS API functions */
+extern int h_errno;
+#endif /* LWIP_DNS_API_DECLARE_H_ERRNO*/
+
struct hostent *lwip_gethostbyname(const char *name);
int lwip_gethostbyname_r(const char *name, struct hostent *ret, char *buf,
size_t buflen, struct hostent **result, int *h_errnop);
@@ -123,64 +132,6 @@ int lwip_getaddrinfo(const char *nodename,
const struct addrinfo *hints,
struct addrinfo **res);
-const char *hstrerror(int err);
-
-#include "lwip/sockets.h"
-
-#define EAI_OVERFLOW 208
-
- struct servent {
- char *s_name; /* official service name */
- char **s_aliases; /* alias list */
- int s_port; /* port number */
- char *s_proto; /* protocol to use */
- };
-
-/*
- * Error return codes from getaddrinfo()
- */
- #define EAI_ADDRFAMILY 1 /* address family for hostname not supported */
- #define EAI_NODATA 7 /* no address associated with hostname */
- #define EAI_SOCKTYPE 10 /* ai_socktype not supported */
- #define EAI_SYSTEM 11 /* system 6rror returned in errno */
- #define EAI_BADHINTS 12
- #define EAI_PROTOCOL 13
- #define EAI_MAX 14
-
-/*
- * Constants for getnameinfo()
- */
-#define NI_MAXHOST 1025
-#define NI_MAXSERV 32
-
-/*
- * Flag values for getnameinfo()
- */
-#define NI_NOFQDN 0x00000001
-#define NI_NUMERICHOST 0x00000002
-#define NI_NAMEREQD 0x00000004
-#define NI_NUMERICSERV 0x00000008
-#define NI_DGRAM 0x00000010
-#define NI_WITHSCOPEID 0x00000020
-
-#ifndef AF_UNIX
-#define AF_UNIX 1
-#endif
-
-int
-getnameinfo(const struct sockaddr *sa, socklen_t salen,
- char *host, size_t hostlen,
- char *serv, size_t servlen, int flags);
-
-const char *gai_strerror(int ecode);
-
-struct servent *getservbyname(const char *name, const char *proto);
-
-#if LWIP_DNS_API_DECLARE_H_ERRNO
-/* application accessible error code set by the DNS API functions */
-extern int h_errno;
-#endif /* LWIP_DNS_API_DECLARE_H_ERRNO*/
-
#if LWIP_COMPAT_SOCKETS
/** @ingroup netdbapi */
#define gethostbyname(name) lwip_gethostbyname(name)
@@ -194,8 +145,6 @@ extern int h_errno;
lwip_getaddrinfo(nodname, servname, hints, res)
#endif /* LWIP_COMPAT_SOCKETS */
-
-
#ifdef __cplusplus
}
#endif
diff --git a/lwip/src/include/lwip/sockets.h b/lwip/src/include/lwip/sockets.h
index 2917041..be94852 100644
--- a/lwip/src/include/lwip/sockets.h
+++ b/lwip/src/include/lwip/sockets.h
@@ -39,6 +39,22 @@
#ifndef LWIP_HDR_SOCKETS_H
#define LWIP_HDR_SOCKETS_H
+#ifdef __rtems__
+
+#ifdef TCP_MSS
+#define TCP_MSS_DEFINED_EARLY
+#pragma push_macro("TCP_MSS")
+#endif
+
+#include <netinet/tcp.h>
+#pragma pop_macro("TCP_MSS")
+
+#ifndef TCP_MSS_DEFINED_EARLY
+#undef TCP_MSS
+#endif
+
+#endif /* __rtems__ */
+
#include "lwip/opt.h"
#if LWIP_SOCKET /* don't build if not configured for use in lwipopts.h */
@@ -67,6 +83,10 @@ typedef u8_t sa_family_t;
typedef u16_t in_port_t;
#endif
+#ifdef __rtems__
+#include <netinet/in.h>
+#define SIN_ZERO_LEN 8
+#else
#if LWIP_IPV4
/* members are in network byte order */
struct sockaddr_in {
@@ -90,7 +110,6 @@ struct sockaddr_in6 {
};
#endif /* LWIP_IPV6 */
-#ifndef __rtems__
struct sockaddr {
u8_t sa_len;
sa_family_t sa_family;
@@ -148,7 +167,6 @@ struct cmsghdr {
int cmsg_level; /* originating protocol */
int cmsg_type; /* protocol-specific type */
};
-#endif /* __rtems__ */
/* Data section follows header and possible padding, typically referred to as
unsigned char cmsg_data[]; */
@@ -160,7 +178,6 @@ will need to increase long long */
#define ALIGN_H(size) (((size) + sizeof(long) - 1U) & ~(sizeof(long)-1U))
#define ALIGN_D(size) ALIGN_H(size)
-#ifndef __rtems__
#define CMSG_FIRSTHDR(mhdr) \
((mhdr)->msg_controllen >= sizeof(struct cmsghdr) ? \
(struct cmsghdr *)(mhdr)->msg_control : \
@@ -255,7 +272,6 @@ struct linger {
#define PF_INET AF_INET
#define PF_INET6 AF_INET6
#define PF_UNSPEC AF_UNSPEC
-#endif /* __rtems__ */
#define IPPROTO_IP 0
#define IPPROTO_ICMP 1
@@ -268,7 +284,6 @@ struct linger {
#define IPPROTO_UDPLITE 136
#define IPPROTO_RAW 255
-#ifndef __rtems__
/* Flags we can use with send and recv. */
#define MSG_PEEK 0x01 /* Peeks at an incoming message */
#define MSG_WAITALL 0x02 /* Unimplemented: Requests that the function block until the full amount of data requested can be returned */
@@ -278,32 +293,39 @@ struct linger {
#define MSG_MORE 0x10 /* Sender will send more */
#ifndef __rtems__
#define MSG_NOSIGNAL 0x20 /* Uninmplemented: Requests not to send the SIGPIPE signal if an attempt to send is made on a stream-oriented socket that is no longer connected. */
-#endif /* __rtems__ */
+
/*
* Options for level IPPROTO_IP
*/
#define IP_TOS 1
#define IP_TTL 2
+#endif /* __rtems__ */
#define IP_PKTINFO 8
#if LWIP_TCP
+#ifndef __rtems__
/*
* Options for level IPPROTO_TCP
*/
#define TCP_NODELAY 0x01 /* don't delay send to coalesce packets */
+#endif
#define TCP_KEEPALIVE 0x02 /* send KEEPALIVE probes when idle for pcb->keep_idle milliseconds */
+#ifndef __rtems__
#define TCP_KEEPIDLE 0x03 /* set pcb->keep_idle - Same as TCP_KEEPALIVE, but use seconds for get/setsockopt */
#define TCP_KEEPINTVL 0x04 /* set pcb->keep_intvl - Use seconds for get/setsockopt */
#define TCP_KEEPCNT 0x05 /* set pcb->keep_cnt - Use number of probes sent for get/setsockopt */
+#endif
#endif /* LWIP_TCP */
#if LWIP_IPV6
/*
* Options for level IPPROTO_IPV6
*/
+#ifndef __rtems__
#define IPV6_CHECKSUM 7 /* RFC3542: calculate and insert the ICMPv6 checksum for raw sockets. */
#define IPV6_V6ONLY 27 /* RFC3493: boolean control to restrict AF_INET6 sockets to IPv6 communications only. */
+#endif
#endif /* LWIP_IPV6 */
#if LWIP_UDP && LWIP_UDPLITE
@@ -315,6 +337,7 @@ struct linger {
#endif /* LWIP_UDP && LWIP_UDPLITE*/
+#ifndef __rtems__
#if LWIP_MULTICAST_TX_OPTIONS
/*
* Options and types for UDP multicast traffic handling
@@ -336,6 +359,7 @@ typedef struct ip_mreq {
struct in_addr imr_interface; /* local IP address of interface */
} ip_mreq;
#endif /* LWIP_IGMP */
+#endif /* __rtems__ */
#if LWIP_IPV4
struct in_pktinfo {
@@ -348,6 +372,7 @@ struct in_pktinfo {
/*
* Options and types related to IPv6 multicast membership
*/
+#ifndef __rtems__
#define IPV6_JOIN_GROUP 12
#define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP
#define IPV6_LEAVE_GROUP 13
@@ -357,6 +382,7 @@ typedef struct ipv6_mreq {
struct in6_addr ipv6mr_multiaddr; /* IPv6 multicast addr */
unsigned int ipv6mr_interface; /* interface index, or 0 */
} ipv6_mreq;
+#endif
#endif /* LWIP_IPV6_MLD */
/*
@@ -414,16 +440,17 @@ typedef struct ipv6_mreq {
* to encode the in/out status of the parameter; for now
* we restrict parameters to at most 128 bytes.
*/
+#ifdef __rtems__
+#include <sys/fcntl.h>
+#include <sys/filio.h>
+#include <sys/select.h>
+#endif
+
#if !defined(FIONREAD) || !defined(FIONBIO)
-#undef IOCPARM_MASK
#define IOCPARM_MASK 0x7fU /* parameters must be < 128 bytes */
-#ifndef __rtems__
#define IOC_VOID 0x20000000UL /* no parameters */
#define IOC_OUT 0x40000000UL /* copy out parameters */
-#endif /* __rtems __ */
-#undef IOC_IN
#define IOC_IN 0x80000000UL /* copy in parameters */
-#ifndef __rtems__
#define IOC_INOUT (IOC_IN|IOC_OUT)
/* 0x20000000 distinguishes new &
old ioctl's */
@@ -431,8 +458,6 @@ typedef struct ipv6_mreq {
#define _IOR(x,y,t) ((long)(IOC_OUT|((sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)))
-#endif /* __rtems__ */
-#undef _IOW
#define _IOW(x,y,t) ((long)(IOC_IN|((sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)))
#endif /* !defined(FIONREAD) || !defined(FIONBIO) */
@@ -679,7 +704,7 @@ int lwip_inet_pton(int af, const char *src, void *dst);
#define poll(fds,nfds,timeout) lwip_poll(fds,nfds,timeout)
#endif
/** @ingroup socket */
-//#define ioctlsocket(s,cmd,argp) lwip_ioctl(s,cmd,argp)
+#define ioctlsocket(s,cmd,argp) lwip_ioctl(s,cmd,argp)
/** @ingroup socket */
#define inet_ntop(af,src,dst,size) lwip_inet_ntop(af,src,dst,size)
/** @ingroup socket */