summaryrefslogtreecommitdiff
path: root/rtemslwip/common/rtems_lwip_sysdefs.c
diff options
context:
space:
mode:
Diffstat (limited to 'rtemslwip/common/rtems_lwip_sysdefs.c')
-rw-r--r--rtemslwip/common/rtems_lwip_sysdefs.c185
1 files changed, 185 insertions, 0 deletions
diff --git a/rtemslwip/common/rtems_lwip_sysdefs.c b/rtemslwip/common/rtems_lwip_sysdefs.c
new file mode 100644
index 0000000..3877811
--- /dev/null
+++ b/rtemslwip/common/rtems_lwip_sysdefs.c
@@ -0,0 +1,185 @@
+/*
+ *
+ * RTEMS Project (https://www.rtems.org/)
+ *
+ * Copyright (c) 2021 Vijay Kumar Banerjee <vijay@rtems.org>.
+ * 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.
+ *
+ * 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.
+ */
+
+#include <stdint.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+
+#include "rtems_lwip_int.h"
+
+int rtems_lwip_sysdefs_AF_UNSPEC = AF_UNSPEC;
+int rtems_lwip_sysdefs_AF_UNIX = AF_UNIX;
+int rtems_lwip_sysdefs_AF_INET = AF_INET;
+int rtems_lwip_sysdefs_AF_INET6 = AF_INET6;
+int rtems_lwip_sysdefs_PF_UNSPEC = PF_UNSPEC;
+int rtems_lwip_sysdefs_PF_UNIX = PF_UNIX;
+int rtems_lwip_sysdefs_PF_INET = PF_INET;
+int rtems_lwip_sysdefs_PF_INET6 = PF_INET6;
+int rtems_lwip_sysdefs_SOCK_STREAM = SOCK_STREAM;
+int rtems_lwip_sysdefs_SOCK_DGRAM = SOCK_DGRAM;
+int rtems_lwip_sysdefs_SOCK_RAW = SOCK_RAW;
+int rtems_lwip_sysdefs_sockaddr_in_size = sizeof( struct sockaddr_in );
+int rtems_lwip_sysdefs_sockaddr_in6_size = sizeof( struct sockaddr_in6 );
+
+int rtems_lwip_sysdefs_sockaddr_get_len( const void *sockaddr )
+{
+ const struct sockaddr *so = sockaddr;
+
+ return so->sa_len;
+}
+
+int rtems_lwip_sysdefs_sockaddr_get_family( const void *sockaddr )
+{
+ const struct sockaddr *so = sockaddr;
+
+ return so->sa_family;
+}
+
+uint16_t rtems_lwip_sysdefs_sockaddr_in_get_sin_port( const void *sockaddr )
+{
+ const struct sockaddr_in *so = sockaddr;
+
+ return so->sin_port;
+}
+
+uint32_t rtems_lwip_sysdefs_sockaddr_in_get_sin_addr( const void *sockaddr )
+{
+ const struct sockaddr_in *so = sockaddr;
+
+ return so->sin_addr.s_addr;
+}
+
+uint16_t rtems_lwip_sysdefs_sockaddr_in6_get_sin6_port( const void *sockaddr )
+{
+ const struct sockaddr_in6 *so = sockaddr;
+
+ return so->sin6_port;
+}
+
+const uint8_t *rtems_lwip_sysdefs_sockaddr_in6_get_sin6_addr_ptr_const(
+ const void *sockaddr )
+{
+ const struct sockaddr_in6 *so = sockaddr;
+
+ return (uint8_t *) &so->sin6_addr;
+}
+
+uint8_t *rtems_lwip_sysdefs_sockaddr_in6_get_sin6_addr_ptr(
+ void *sockaddr )
+{
+ struct sockaddr_in6 *so = sockaddr;
+
+ return (uint8_t *) &so->sin6_addr;
+}
+
+uint32_t rtems_lwip_sysdefs_sockaddr_in6_get_sin6_flowinfo(
+ const void *sockaddr )
+{
+ const struct sockaddr_in6 *so = sockaddr;
+
+ return so->sin6_flowinfo;
+}
+
+uint32_t rtems_lwip_sysdefs_sockaddr_in6_get_sin6_scope_id(
+ const void *sockaddr )
+{
+ const struct sockaddr_in6 *so = sockaddr;
+
+ return so->sin6_scope_id;
+}
+
+void rtems_lwip_sysdefs_sockaddr_set_len(
+ void *sockaddr,
+ int len
+)
+{
+ struct sockaddr *so = sockaddr;
+
+ so->sa_len = len;
+}
+
+void rtems_lwip_sysdefs_sockaddr_set_family(
+ void *sockaddr,
+ int family
+)
+{
+ struct sockaddr *so = sockaddr;
+
+ so->sa_family = family;
+}
+
+void rtems_lwip_sysdefs_sockaddr_in_set_sin_port(
+ void *sockaddr,
+ uint16_t port
+)
+{
+ struct sockaddr_in *so = sockaddr;
+
+ so->sin_port = port;
+}
+
+void rtems_lwip_sysdefs_sockaddr_in_set_sin_addr(
+ void *sockaddr,
+ uint32_t addr
+)
+{
+ struct sockaddr_in *so = sockaddr;
+
+ so->sin_addr.s_addr = addr;
+}
+
+void rtems_lwip_sysdefs_sockaddr_in6_set_sin6_port(
+ void *sockaddr,
+ uint16_t port
+)
+{
+ struct sockaddr_in6 *so = sockaddr;
+
+ so->sin6_port = port;
+}
+
+void rtems_lwip_sysdefs_sockaddr_in6_set_sin6_flowinfo(
+ void *sockaddr,
+ uint32_t flowinfo
+)
+{
+ struct sockaddr_in6 *so = sockaddr;
+
+ so->sin6_flowinfo = flowinfo;
+}
+
+void rtems_lwip_sysdefs_sockaddr_in6_set_sin6_scope_id(
+ void *sockaddr,
+ uint32_t scope_id
+)
+{
+ struct sockaddr_in6 *so = sockaddr;
+
+ so->sin6_scope_id = scope_id;
+}