diff --git a/kernel/api/if.h b/kernel/api/if.h new file mode 100644 index 00000000..e2364cf5 --- /dev/null +++ b/kernel/api/if.h @@ -0,0 +1,29 @@ +/* SPDX-License-Identifier: GPL-3.0-or-later */ +/* Copyright © 2016-2024 Byteduck */ + +#pragma once + +#include "socket.h" +#include "net.h" + +__DECL_BEGIN + +struct ifreq { + char ifr_name[IFNAMSIZ]; + union { + struct sockaddr ifr_addr; + struct sockaddr ifr_dstaddr; + struct sockaddr ifr_broadaddr; + struct sockaddr ifr_netmask; + struct sockaddr ifr_hwaddr; + short ifr_flags; + int ifr_ifindex; + int ifr_metric; + int ifr_mtu; + char ifr_slave[IFNAMSIZ]; + char ifr_newname[IFNAMSIZ]; + char *ifr_data; + }; +}; + +__DECL_END \ No newline at end of file diff --git a/kernel/api/ioctl.h b/kernel/api/ioctl.h index 94b6038c..152df0d1 100644 --- a/kernel/api/ioctl.h +++ b/kernel/api/ioctl.h @@ -15,4 +15,8 @@ #define TIOCGWINSZ 10 #define TIOCNOTTY 11 #define TIOSGFX 12 -#define TIOSNOGFX 13 \ No newline at end of file +#define TIOSNOGFX 13 + +#define SIOCSIFADDR 14 +#define SIOCSIFNETMASK 15 +#define SIOCADDRT 16 \ No newline at end of file diff --git a/kernel/api/ipv4.h b/kernel/api/ipv4.h index 465449f7..05daf8f1 100644 --- a/kernel/api/ipv4.h +++ b/kernel/api/ipv4.h @@ -44,7 +44,7 @@ class __attribute__((packed)) IPv4Address { return m_data < other.m_data; } - inline sockaddr_in as_sockaddr(in_port_t port) { + inline sockaddr_in as_sockaddr(in_port_t port) const { sockaddr_in ret; ret.sin_family = AF_INET; ret.sin_port = as_big_endian(port); diff --git a/kernel/api/net.h b/kernel/api/net.h index 436ed26a..849e9ed7 100644 --- a/kernel/api/net.h +++ b/kernel/api/net.h @@ -6,6 +6,7 @@ #include "ipv4.h" #define IFNAMESIZ 16 +#define IFNAMSIZ IFNAMESIZ __DECL_BEGIN diff --git a/kernel/api/route.h b/kernel/api/route.h new file mode 100644 index 00000000..e55e79de --- /dev/null +++ b/kernel/api/route.h @@ -0,0 +1,26 @@ +/* SPDX-License-Identifier: GPL-3.0-or-later */ +/* Copyright © 2016-2024 Byteduck */ + +#pragma once + +#include "net.h" + +__DECL_BEGIN + +struct rtentry { + struct sockaddr rt_dst; + struct sockaddr rt_gateway; + struct sockaddr rt_genmask; + unsigned short rt_flags; + unsigned short rt_metric; + char* rt_dev; + long rt_mtu; + long rt_window; + long rt_irtt; +}; + +// Flags +#define RTF_UP 0x1 +#define RTF_GATEWAY 0x2 + +__DECL_END \ No newline at end of file diff --git a/libraries/libc/net/if.h b/libraries/libc/net/if.h new file mode 100644 index 00000000..d4f8cd79 --- /dev/null +++ b/libraries/libc/net/if.h @@ -0,0 +1,5 @@ +/* SPDX-License-Identifier: GPL-3.0-or-later */ +/* Copyright © 2016-2024 Byteduck */ + +#pragma once +#include \ No newline at end of file diff --git a/libraries/libc/net/route.h b/libraries/libc/net/route.h new file mode 100644 index 00000000..f40a7c05 --- /dev/null +++ b/libraries/libc/net/route.h @@ -0,0 +1,6 @@ +/* SPDX-License-Identifier: GPL-3.0-or-later */ +/* Copyright © 2016-2024 Byteduck */ + +#pragma once + +#include \ No newline at end of file