summaryrefslogtreecommitdiff
path: root/Kernel/API/POSIX/net
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2021-08-14 18:06:44 +0200
committerAndreas Kling <kling@serenityos.org>2021-08-14 19:58:11 +0200
commit661bd992b0bb0efc5f5871e48a09019639ff073c (patch)
treeed28bfc3d612b6cd883d931a5964334723ce8fa0 /Kernel/API/POSIX/net
parentff50122dc514717e4b5d8924e21d3eaef59ca402 (diff)
downloadserenity-661bd992b0bb0efc5f5871e48a09019639ff073c.zip
Kernel+LibC: Share definitions for net/{if,if_arp,route}.h
Diffstat (limited to 'Kernel/API/POSIX/net')
-rw-r--r--Kernel/API/POSIX/net/if.h61
-rw-r--r--Kernel/API/POSIX/net/if_arp.h26
-rw-r--r--Kernel/API/POSIX/net/route.h29
3 files changed, 116 insertions, 0 deletions
diff --git a/Kernel/API/POSIX/net/if.h b/Kernel/API/POSIX/net/if.h
new file mode 100644
index 0000000000..fdc5896177
--- /dev/null
+++ b/Kernel/API/POSIX/net/if.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <Kernel/API/POSIX/sys/socket.h>
+#include <Kernel/API/POSIX/sys/types.h>
+
+struct ifconf {
+ int ifc_len;
+ union {
+ void* ifc_buf;
+ struct ifreq* ifc_req;
+ };
+};
+
+struct ifreq {
+#define IFNAMSIZ 16
+ char ifr_name[IFNAMSIZ];
+ union {
+ struct sockaddr ifru_addr;
+ struct sockaddr ifru_dstaddr;
+ struct sockaddr ifru_broadaddr;
+ struct sockaddr ifru_netmask;
+ struct sockaddr ifru_hwaddr;
+ short ifru_flags;
+ int ifru_metric;
+ int64_t ifru_vnetid;
+ uint64_t ifru_media;
+ void* ifru_data;
+ unsigned int ifru_index;
+ } ifr_ifru;
+
+#define ifr_addr ifr_ifru.ifru_addr // address
+#define ifr_dstaddr ifr_ifru.ifru_dstaddr // other end of p-to-p link
+#define ifr_broadaddr ifr_ifru.ifru_broadaddr // broadcast address
+#define ifr_netmask ifr_ifru.ifru_netmask // network mask
+#define ifr_flags ifr_ifru.ifru_flags // flags
+#define ifr_metric ifr_ifru.ifru_metric // metric
+#define ifr_mtu ifr_ifru.ifru_metric // mtu (overload)
+#define ifr_hardmtu ifr_ifru.ifru_metric // hardmtu (overload)
+#define ifr_media ifr_ifru.ifru_media // media options
+#define ifr_rdomainid ifr_ifru.ifru_metric // VRF instance (overload)
+#define ifr_vnetid ifr_ifru.ifru_vnetid // Virtual Net Id
+#define ifr_ttl ifr_ifru.ifru_metric // tunnel TTL (overload)
+#define ifr_data ifr_ifru.ifru_data // for use by interface
+#define ifr_index ifr_ifru.ifru_index // interface index
+#define ifr_llprio ifr_ifru.ifru_metric // link layer priority
+#define ifr_hwaddr ifr_ifru.ifru_hwaddr // MAC address
+};
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/Kernel/API/POSIX/net/if_arp.h b/Kernel/API/POSIX/net/if_arp.h
new file mode 100644
index 0000000000..ff5d08af73
--- /dev/null
+++ b/Kernel/API/POSIX/net/if_arp.h
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <Kernel/API/POSIX/sys/socket.h>
+#include <Kernel/API/POSIX/sys/types.h>
+
+struct arpreq {
+ struct sockaddr arp_pa; /* protocol address */
+ struct sockaddr arp_ha; /* hardware address */
+ struct sockaddr arp_netmask; /* netmask of protocol address */
+ int arp_flags; /* flags */
+ char arp_dev[16];
+};
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/Kernel/API/POSIX/net/route.h b/Kernel/API/POSIX/net/route.h
new file mode 100644
index 0000000000..0073e7e892
--- /dev/null
+++ b/Kernel/API/POSIX/net/route.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2020, Marios Prokopakis <mariosprokopakis@gmail.com>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <Kernel/API/POSIX/sys/socket.h>
+#include <Kernel/API/POSIX/sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct rtentry {
+ struct sockaddr rt_gateway; /* the gateway address */
+ struct sockaddr rt_genmask; /* the target network mask */
+ unsigned short int rt_flags;
+ char* rt_dev;
+ /* FIXME: complete the struct */
+};
+
+#define RTF_UP 0x1 /* do not delete the route */
+#define RTF_GATEWAY 0x2 /* the route is a gateway and not an end host */
+
+#ifdef __cplusplus
+}
+#endif