diff options
author | Andreas Kling <kling@serenityos.org> | 2021-08-14 18:06:44 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-08-14 19:58:11 +0200 |
commit | 661bd992b0bb0efc5f5871e48a09019639ff073c (patch) | |
tree | ed28bfc3d612b6cd883d931a5964334723ce8fa0 /Kernel/API/POSIX/net | |
parent | ff50122dc514717e4b5d8924e21d3eaef59ca402 (diff) | |
download | serenity-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.h | 61 | ||||
-rw-r--r-- | Kernel/API/POSIX/net/if_arp.h | 26 | ||||
-rw-r--r-- | Kernel/API/POSIX/net/route.h | 29 |
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 |