Move the kernel space content of some Newlib provided header files to
RTEMS and libbsd.  This allows to use the Newlib provided header files
with different FreeBSD baselines.

Update #3472.
---
 cpukit/headers.am                             |   3 +
 cpukit/include/machine/_kernel_in.h           |  60 +++++++++
 cpukit/include/machine/_kernel_in6.h          | 181 ++++++++++++++++++++++++++
 cpukit/include/machine/_kernel_uio.h          |  87 +++++++++++++
 cpukit/libnetworking/headers.am               |   2 +
 cpukit/libnetworking/machine/_kernel_if.h     |  44 +++++++
 cpukit/libnetworking/machine/_kernel_socket.h |  83 ++++++++++++
 7 files changed, 460 insertions(+)
 create mode 100644 cpukit/include/machine/_kernel_in.h
 create mode 100644 cpukit/include/machine/_kernel_in6.h
 create mode 100644 cpukit/include/machine/_kernel_uio.h
 create mode 100644 cpukit/libnetworking/machine/_kernel_if.h
 create mode 100644 cpukit/libnetworking/machine/_kernel_socket.h

diff --git a/cpukit/headers.am b/cpukit/headers.am
index fb6e1fc009..9c13fefe02 100644
--- a/cpukit/headers.am
+++ b/cpukit/headers.am
@@ -67,9 +67,12 @@ include_linux_spi_HEADERS += include/linux/spi/spidev.h
 include_machinedir = $(includedir)/machine
 include_machine_HEADERS =
 include_machine_HEADERS += include/machine/_kernel_cpuset.h
+include_machine_HEADERS += include/machine/_kernel_in.h
+include_machine_HEADERS += include/machine/_kernel_in6.h
 include_machine_HEADERS += include/machine/_kernel_param.h
 include_machine_HEADERS += include/machine/_kernel_time.h
 include_machine_HEADERS += include/machine/_kernel_types.h
+include_machine_HEADERS += include/machine/_kernel_uio.h
 include_machine_HEADERS += include/machine/_timecounter.h
 
 include_mghttpddir = $(includedir)/mghttpd
diff --git a/cpukit/include/machine/_kernel_in.h 
b/cpukit/include/machine/_kernel_in.h
new file mode 100644
index 0000000000..0dad7f534e
--- /dev/null
+++ b/cpukit/include/machine/_kernel_in.h
@@ -0,0 +1,60 @@
+/*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1982, 1986, 1990, 1993
+ *     The Regents of the University of California.  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 University 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 REGENTS 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 REGENTS 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.
+ *
+ *     @(#)in.h        8.3 (Berkeley) 1/3/94
+ * $FreeBSD: head/sys/netinet/in.h 326023 2017-11-20 19:43:44Z pfg $
+ */
+
+#if !defined(_NETINET_IN_H_) || !defined(_KERNEL)
+#error "must be included via <netinet/in.h> in kernel space"
+#endif
+
+struct ifnet; struct mbuf;     /* forward declarations for Standard C */
+struct in_ifaddr;
+
+int     in_broadcast(struct in_addr, struct ifnet *);
+int     in_ifaddr_broadcast(struct in_addr, struct in_ifaddr *);
+int     in_canforward(struct in_addr);
+int     in_localaddr(struct in_addr);
+int     in_localip(struct in_addr);
+int     in_ifhasaddr(struct ifnet *, struct in_addr);
+int     inet_aton(const char *, struct in_addr *); /* in libkern */
+char   *inet_ntoa_r(struct in_addr ina, char *buf); /* in libkern */
+char   *inet_ntop(int, const void *, char *, socklen_t); /* in libkern */
+int     inet_pton(int af, const char *, void *); /* in libkern */
+void    in_ifdetach(struct ifnet *);
+
+#define        in_hosteq(s, t) ((s).s_addr == (t).s_addr)
+#define        in_nullhost(x)  ((x).s_addr == INADDR_ANY)
+#define        in_allhosts(x)  ((x).s_addr == htonl(INADDR_ALLHOSTS_GROUP))
+
+#define        satosin(sa)     ((struct sockaddr_in *)(sa))
+#define        sintosa(sin)    ((struct sockaddr *)(sin))
+#define        ifatoia(ifa)    ((struct in_ifaddr *)(ifa))
diff --git a/cpukit/include/machine/_kernel_in6.h 
b/cpukit/include/machine/_kernel_in6.h
new file mode 100644
index 0000000000..78f4a02970
--- /dev/null
+++ b/cpukit/include/machine/_kernel_in6.h
@@ -0,0 +1,181 @@
+/*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
+ * 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 project 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 PROJECT 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 PROJECT 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.
+ *
+ *     $KAME: in6.h,v 1.89 2001/05/27 13:28:35 itojun Exp $
+ */
+
+#if !defined(_NETINET6_IN6_H_) || !defined(_KERNEL)
+#error "must be included via <netinet6/in6.h> in kernel space"
+#endif
+
+/* XXX nonstandard */
+#define s6_addr8  __u6_addr.__u6_addr8
+#define s6_addr16 __u6_addr.__u6_addr16
+#define s6_addr32 __u6_addr.__u6_addr32
+
+/*
+ * Local definition for masks
+ */
+/* XXX nonstandard */
+#define IN6MASK0       {{{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }}}
+#define IN6MASK32      {{{ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, \
+                           0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}}
+#define IN6MASK64      {{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \
+                           0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}}
+#define IN6MASK96      {{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \
+                           0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }}}
+#define IN6MASK128     {{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \
+                           0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }}}
+
+extern const struct sockaddr_in6 sa6_any;
+
+extern const struct in6_addr in6mask0;
+extern const struct in6_addr in6mask32;
+extern const struct in6_addr in6mask64;
+extern const struct in6_addr in6mask96;
+extern const struct in6_addr in6mask128;
+
+/*
+ * Macros started with IPV6_ADDR is KAME local
+ */
+/* XXX nonstandard */
+#if _BYTE_ORDER == _BIG_ENDIAN
+#define IPV6_ADDR_INT32_ONE    1
+#define IPV6_ADDR_INT32_TWO    2
+#define IPV6_ADDR_INT32_MNL    0xff010000
+#define IPV6_ADDR_INT32_MLL    0xff020000
+#define IPV6_ADDR_INT32_SMP    0x0000ffff
+#define IPV6_ADDR_INT16_ULL    0xfe80
+#define IPV6_ADDR_INT16_USL    0xfec0
+#define IPV6_ADDR_INT16_MLL    0xff02
+#elif _BYTE_ORDER == _LITTLE_ENDIAN
+#define IPV6_ADDR_INT32_ONE    0x01000000
+#define IPV6_ADDR_INT32_TWO    0x02000000
+#define IPV6_ADDR_INT32_MNL    0x000001ff
+#define IPV6_ADDR_INT32_MLL    0x000002ff
+#define IPV6_ADDR_INT32_SMP    0xffff0000
+#define IPV6_ADDR_INT16_ULL    0x80fe
+#define IPV6_ADDR_INT16_USL    0xc0fe
+#define IPV6_ADDR_INT16_MLL    0x02ff
+#endif
+
+/* XXX nonstandard */
+#define IPV6_ADDR_SCOPE_NODELOCAL      0x01
+#define IPV6_ADDR_SCOPE_INTFACELOCAL   0x01
+#define IPV6_ADDR_SCOPE_LINKLOCAL      0x02
+#define IPV6_ADDR_SCOPE_SITELOCAL      0x05
+#define IPV6_ADDR_SCOPE_ORGLOCAL       0x08    /* just used in this file */
+#define IPV6_ADDR_SCOPE_GLOBAL         0x0e
+
+#define IPV6_ADDR_MC_SCOPE(a)          ((a)->s6_addr[1] & 0x0f)
+
+/* refers nonstandard items */
+#define IN6_IS_ADDR_MC_NODELOCAL(a)    \
+       (IN6_IS_ADDR_MULTICAST(a) &&    \
+        (IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_NODELOCAL))
+#define IN6_IS_ADDR_MC_INTFACELOCAL(a) \
+       (IN6_IS_ADDR_MULTICAST(a) &&    \
+        (IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_INTFACELOCAL))
+#define IN6_IS_ADDR_MC_LINKLOCAL(a)    \
+       (IN6_IS_ADDR_MULTICAST(a) &&    \
+        (IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_LINKLOCAL))
+#define IN6_IS_ADDR_MC_SITELOCAL(a)    \
+       (IN6_IS_ADDR_MULTICAST(a) &&    \
+        (IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_SITELOCAL))
+#define IN6_IS_ADDR_MC_ORGLOCAL(a)     \
+       (IN6_IS_ADDR_MULTICAST(a) &&    \
+        (IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_ORGLOCAL))
+#define IN6_IS_ADDR_MC_GLOBAL(a)       \
+       (IN6_IS_ADDR_MULTICAST(a) &&    \
+        (IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_GLOBAL))
+
+/* nonstandard */
+/*
+ * KAME Scope
+ */
+#define IN6_IS_SCOPE_LINKLOCAL(a)      \
+       ((IN6_IS_ADDR_LINKLOCAL(a)) ||  \
+        (IN6_IS_ADDR_MC_LINKLOCAL(a)))
+#define        IN6_IS_SCOPE_EMBED(a)                   \
+       ((IN6_IS_ADDR_LINKLOCAL(a)) ||          \
+        (IN6_IS_ADDR_MC_LINKLOCAL(a)) ||       \
+        (IN6_IS_ADDR_MC_INTFACELOCAL(a)))
+
+#define IFA6_IS_DEPRECATED(a) \
+       ((a)->ia6_lifetime.ia6t_pltime != ND6_INFINITE_LIFETIME && \
+        (u_int32_t)((time_uptime - (a)->ia6_updatetime)) > \
+        (a)->ia6_lifetime.ia6t_pltime)
+#define IFA6_IS_INVALID(a) \
+       ((a)->ia6_lifetime.ia6t_vltime != ND6_INFINITE_LIFETIME && \
+        (u_int32_t)((time_uptime - (a)->ia6_updatetime)) > \
+        (a)->ia6_lifetime.ia6t_vltime)
+
+#define MTAG_ABI_IPV6          1444287380      /* IPv6 ABI */
+#define IPV6_TAG_DIRECT                0               /* direct-dispatch IPv6 
*/
+
+/* RFC2292 options */
+#define IPV6_2292PKTINFO       19 /* bool; send/recv if, src/dst addr */
+#define IPV6_2292HOPLIMIT      20 /* bool; hop limit */
+#define IPV6_2292NEXTHOP       21 /* bool; next hop addr */
+#define IPV6_2292HOPOPTS       22 /* bool; hop-by-hop option */
+#define IPV6_2292DSTOPTS       23 /* bool; destinaion option */
+#define IPV6_2292RTHDR         24 /* bool; routing header */
+#define IPV6_2292PKTOPTIONS    25 /* buf/cmsghdr; set/get IPv6 options */
+
+#define IPV6_RECVRTHDRDSTOPTS  41 /* bool; recv dst option before rthdr */
+
+struct cmsghdr;
+struct ip6_hdr;
+
+int    in6_cksum_pseudo(struct ip6_hdr *, uint32_t, uint8_t, uint16_t);
+int    in6_cksum(struct mbuf *, u_int8_t, u_int32_t, u_int32_t);
+int    in6_cksum_partial(struct mbuf *, u_int8_t, u_int32_t, u_int32_t,
+                         u_int32_t);
+int    in6_localaddr(struct in6_addr *);
+int    in6_localip(struct in6_addr *);
+int    in6_ifhasaddr(struct ifnet *, struct in6_addr *);
+int    in6_addrscope(const struct in6_addr *);
+char   *ip6_sprintf(char *, const struct in6_addr *);
+struct in6_ifaddr *in6_ifawithifp(struct ifnet *, struct in6_addr *);
+extern void in6_if_up(struct ifnet *);
+struct sockaddr;
+extern u_char  ip6_protox[];
+
+void   in6_sin6_2_sin(struct sockaddr_in *sin,
+                           struct sockaddr_in6 *sin6);
+void   in6_sin_2_v4mapsin6(struct sockaddr_in *sin,
+                                struct sockaddr_in6 *sin6);
+void   in6_sin6_2_sin_in_sock(struct sockaddr *nam);
+void   in6_sin_2_v4mapsin6_in_sock(struct sockaddr **nam);
+extern void addrsel_policy_init(void);
+
+#define        satosin6(sa)    ((struct sockaddr_in6 *)(sa))
+#define        sin6tosa(sin6)  ((struct sockaddr *)(sin6))
+#define        ifatoia6(ifa)   ((struct in6_ifaddr *)(ifa))
diff --git a/cpukit/include/machine/_kernel_uio.h 
b/cpukit/include/machine/_kernel_uio.h
new file mode 100644
index 0000000000..c73fa6d299
--- /dev/null
+++ b/cpukit/include/machine/_kernel_uio.h
@@ -0,0 +1,87 @@
+/*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1982, 1986, 1993, 1994
+ *     The Regents of the University of California.  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 University 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 REGENTS 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 REGENTS 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.
+ *
+ *     @(#)uio.h       8.5 (Berkeley) 2/22/94
+ * $FreeBSD: head/sys/sys/uio.h 331621 2018-03-27 15:20:03Z brooks $
+ */
+
+#if !defined(_SYS_UIO_H_) || !defined(_KERNEL)
+#error "must be included via <sys/uio.h> in kernel space"
+#endif
+
+struct uio {
+       struct  iovec *uio_iov;         /* scatter/gather list */
+       int     uio_iovcnt;             /* length of scatter/gather list */
+       off_t   uio_offset;             /* offset in target object */
+       ssize_t uio_resid;              /* remaining bytes to process */
+       enum    uio_seg uio_segflg;     /* address space */
+       enum    uio_rw uio_rw;          /* operation */
+       struct  thread *uio_td;         /* owner */
+};
+
+/*
+ * Limits
+ *
+ * N.B.: UIO_MAXIOV must be no less than IOV_MAX from <sys/syslimits.h>
+ * which in turn must be no less than _XOPEN_IOV_MAX from <limits.h>.  If
+ * we ever make this tunable (probably pointless), then IOV_MAX should be
+ * removed from <sys/syslimits.h> and applications would be expected to use
+ * sysconf(3) to find out the correct value, or else assume the worst
+ * (_XOPEN_IOV_MAX).  Perhaps UIO_MAXIOV should be simply defined as
+ * IOV_MAX.
+ */
+#define UIO_MAXIOV     1024            /* max 1K of iov's */
+
+struct vm_object;
+struct vm_page;
+struct bus_dma_segment;
+
+struct uio *cloneuio(struct uio *uiop);
+int    copyinfrom(const void * __restrict src, void * __restrict dst,
+           size_t len, int seg);
+int    copyiniov(const struct iovec *iovp, u_int iovcnt, struct iovec **iov,
+           int error);
+int    copyinstrfrom(const void * __restrict src, void * __restrict dst,
+           size_t len, size_t * __restrict copied, int seg);
+int    copyinuio(const struct iovec *iovp, u_int iovcnt, struct uio **uiop);
+int    copyout_map(struct thread *td, vm_offset_t *addr, size_t sz);
+int    copyout_unmap(struct thread *td, vm_offset_t addr, size_t sz);
+int    physcopyin(void *src, vm_paddr_t dst, size_t len);
+int    physcopyout(vm_paddr_t src, void *dst, size_t len);
+int    physcopyin_vlist(struct bus_dma_segment *src, off_t offset,
+           vm_paddr_t dst, size_t len);
+int    physcopyout_vlist(vm_paddr_t src, struct bus_dma_segment *dst,
+           off_t offset, size_t len);
+int    uiomove(void *cp, int n, struct uio *uio);
+int    uiomove_frombuf(void *buf, int buflen, struct uio *uio);
+int    uiomove_fromphys(struct vm_page *ma[], vm_offset_t offset, int n,
+           struct uio *uio);
+int    uiomove_nofault(void *cp, int n, struct uio *uio);
+int    uiomove_object(struct vm_object *obj, off_t obj_size, struct uio *uio);
diff --git a/cpukit/libnetworking/headers.am b/cpukit/libnetworking/headers.am
index b558d4b416..69fbbb9021 100644
--- a/cpukit/libnetworking/headers.am
+++ b/cpukit/libnetworking/headers.am
@@ -20,7 +20,9 @@ include_dev_mii_HEADERS += dev/mii/mii.h
 include_machinedir = $(includedir)/machine
 include_machine_HEADERS =
 include_machine_HEADERS += machine/_align.h
+include_machine_HEADERS += machine/_kernel_if.h
 include_machine_HEADERS += machine/_kernel_lock.h
+include_machine_HEADERS += machine/_kernel_socket.h
 include_machine_HEADERS += machine/cpu.h
 include_machine_HEADERS += machine/cpufunc.h
 include_machine_HEADERS += machine/in_cksum.h
diff --git a/cpukit/libnetworking/machine/_kernel_if.h 
b/cpukit/libnetworking/machine/_kernel_if.h
new file mode 100644
index 0000000000..b360a41b27
--- /dev/null
+++ b/cpukit/libnetworking/machine/_kernel_if.h
@@ -0,0 +1,44 @@
+/*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1982, 1986, 1989, 1993
+ *     The Regents of the University of California.  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 University 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 REGENTS 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 REGENTS 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.
+ *
+ *     @(#)if.h        8.1 (Berkeley) 6/10/93
+ * $FreeBSD: head/sys/net/if.h 333502 2018-05-11 20:08:28Z mmacy $
+ */
+
+#if !defined(_NET_IF_H_) || !defined(_KERNEL)
+#error "must be included via <net/if.h> in kernel space"
+#endif
+
+#ifdef MALLOC_DECLARE
+MALLOC_DECLARE(M_IFADDR);
+MALLOC_DECLARE(M_IFMADDR);
+#endif
+
+#define        ifr_data        ifr_ifru.ifru_data      /* for use by interface 
*/
diff --git a/cpukit/libnetworking/machine/_kernel_socket.h 
b/cpukit/libnetworking/machine/_kernel_socket.h
new file mode 100644
index 0000000000..e9acc744f3
--- /dev/null
+++ b/cpukit/libnetworking/machine/_kernel_socket.h
@@ -0,0 +1,83 @@
+/*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1982, 1985, 1986, 1988, 1993, 1994
+ *     The Regents of the University of California.  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 University 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 REGENTS 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 REGENTS 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.
+ *
+ *     @(#)socket.h    8.4 (Berkeley) 2/21/94
+ * $FreeBSD: head/sys/sys/socket.h 334719 2018-06-06 15:45:57Z sbruno $
+ */
+
+#if !defined(_SYS_SOCKET_H_) || !defined(_KERNEL)
+#error "must be included via <sys/socket.h> in kernel space"
+#endif
+
+/*
+ * Flags for accept1(), kern_accept4() and solisten_dequeue, in addition
+ * to SOCK_CLOEXEC and SOCK_NONBLOCK.
+ */
+#define ACCEPT4_INHERIT 0x1
+#define ACCEPT4_COMPAT  0x2
+
+#define        MSG_SOCALLBCK    0x00010000     /* for use by socket callbacks 
- soreceive (TCP) */
+
+#define        MSG_MORETOCOME   0x00100000     /* additional data pending */
+
+#define        CMSG_ALIGN(n)   _ALIGN(n)
+
+#define        SF_READAHEAD(flags)     ((flags) >> 16)
+
+struct socket;
+
+struct tcpcb *so_sototcpcb(struct socket *so);
+struct inpcb *so_sotoinpcb(struct socket *so);
+struct sockbuf *so_sockbuf_snd(struct socket *);
+struct sockbuf *so_sockbuf_rcv(struct socket *);
+
+int so_state_get(const struct socket *);
+void so_state_set(struct socket *, int);
+
+int so_options_get(const struct socket *);
+void so_options_set(struct socket *, int);
+
+int so_error_get(const struct socket *);
+void so_error_set(struct socket *, int);
+
+int so_linger_get(const struct socket *);
+void so_linger_set(struct socket *, int);
+
+struct protosw *so_protosw_get(const struct socket *);
+void so_protosw_set(struct socket *, struct protosw *);
+
+void so_sorwakeup_locked(struct socket *so);
+void so_sowwakeup_locked(struct socket *so);
+
+void so_sorwakeup(struct socket *so);
+void so_sowwakeup(struct socket *so);
+
+void so_lock(struct socket *so);
+void so_unlock(struct socket *so);
-- 
2.13.7

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to