diff --git a/include/uapi/ioctls.h b/include/uapi/ioctls.h index 6dad4a6..b0c4e66 100644 --- a/include/uapi/ioctls.h +++ b/include/uapi/ioctls.h @@ -26,6 +26,7 @@ #define __TIOCGWINSZ 0x5413 #define __TIOCSWINSZ 0x5414 #define __FIONREAD 0x541B +#define __TIOCCONS 0x541D #define __TIOCPKT 0x5420 #define __FIONBIO 0x5421 #define __TIOCNOTTY 0x5422 diff --git a/include/uapi/net.h b/include/uapi/net.h new file mode 100644 index 0000000..cc0d190 --- /dev/null +++ b/include/uapi/net.h @@ -0,0 +1,101 @@ +/* SPDX-License-Identifier: Unlicense */ +#ifndef __ZINNIA_UAPI_NET_H +#define __ZINNIA_UAPI_NET_H + +#include +#include + +#define __IFNAMSIZ 16 + +#define __SIOCADDRT 0x890B +#define __SIOCDELRT 0x890C +#define __SIOCGIFCONF 0x8912 +#define __SIOCGIFFLAGS 0x8913 +#define __SIOCSIFFLAGS 0x8914 +#define __SIOCGIFADDR 0x8915 +#define __SIOCSIFADDR 0x8916 +#define __SIOCGIFBRDADDR 0x8919 +#define __SIOCSIFBRDADDR 0x891A +#define __SIOCGIFNETMASK 0x891B +#define __SIOCSIFNETMASK 0x891C +#define __SIOCGIFMTU 0x8921 +#define __SIOCSIFMTU 0x8922 +#define __SIOCGIFHWADDR 0x8927 +#define __SIOCGIFINDEX 0x8933 + +#define __IFF_UP 0x1 +#define __IFF_BROADCAST 0x2 +#define __IFF_LOOPBACK 0x8 +#define __IFF_RUNNING 0x40 +#define __IFF_MULTICAST 0x1000 + +#define __ARPHRD_ETHER 1 + +#define __RTF_UP 0x0001 +#define __RTF_GATEWAY 0x0002 +#define __RTF_HOST 0x0004 + +#define __ETH_P_ALL 0x0003 +#define __ETH_P_IP 0x0800 +#define __ETH_P_ARP 0x0806 +#define __ETH_P_IPV6 0x86DD + +#define __PACKET_HOST 0 +#define __PACKET_BROADCAST 1 +#define __PACKET_MULTICAST 2 +#define __PACKET_OTHERHOST 3 +#define __PACKET_OUTGOING 4 + +#define __PACKET_AUXDATA 8 + +struct __ifmap { + unsigned long mem_start; + unsigned long mem_end; + unsigned short base_addr; + unsigned char irq; + unsigned char dma; + unsigned char port; +}; + +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_mtu; + struct __ifmap ifr_map; + char ifr_slave[__IFNAMSIZ]; + char ifr_newname[__IFNAMSIZ]; + uintptr_t ifr_data; + }; +}; + +struct __ifconf { + int ifc_len; + uintptr_t ifc_buf; +}; + +struct __rtentry { + unsigned long rt_pad1; + struct __sockaddr rt_dst; + struct __sockaddr rt_gateway; + struct __sockaddr rt_genmask; + unsigned short rt_flags; + short rt_pad2; + unsigned long rt_pad3; + unsigned char rt_tos; + unsigned char rt_class; + short rt_pad4[3]; + short rt_metric; + uintptr_t rt_dev; + unsigned long rt_mtu; + unsigned long rt_window; + unsigned short rt_irtt; +}; + +#endif diff --git a/include/uapi/socket.h b/include/uapi/socket.h index b28286c..e1c3ffb 100644 --- a/include/uapi/socket.h +++ b/include/uapi/socket.h @@ -40,6 +40,42 @@ struct __sockaddr_un { char sun_path[108]; }; +typedef uint32_t __in_addr_t; +typedef uint16_t __in_port_t; + +struct __in_addr { + __in_addr_t s_addr; +}; + +struct __sockaddr_in { + __sa_family_t sin_family; + __in_port_t sin_port; + struct __in_addr sin_addr; + uint8_t sin_zero[8]; +}; + +struct __in6_addr { + uint8_t s6_addr[16]; +}; + +struct __sockaddr_in6 { + __sa_family_t sin6_family; + __in_port_t sin6_port; + uint32_t sin6_flowinfo; + struct __in6_addr sin6_addr; + uint32_t sin6_scope_id; +}; + +struct __sockaddr_ll { + __sa_family_t sll_family; + uint16_t sll_protocol; + int32_t sll_ifindex; + uint16_t sll_hatype; + uint8_t sll_pkttype; + uint8_t sll_halen; + uint8_t sll_addr[8]; +}; + struct __ucred { __pid_t pid; __uid_t uid; @@ -57,31 +93,36 @@ struct __ucred { #define __SOCK_CLOEXEC (1 << 16) #define __SOCK_CLOFORK (1 << 17) +#define __SOL_IP 0 #define __SOL_SOCKET 1 +#define __SOL_PACKET 263 -#define __SO_ACCEPTCONN 1 -#define __SO_BROADCAST 2 -#define __SO_DEBUG 3 -#define __SO_DONTROUTE 4 -#define __SO_ERROR 5 -#define __SO_KEEPALIVE 6 -#define __SO_LINGER 7 -#define __SO_OOBINLINE 8 -#define __SO_RCVBUF 9 -#define __SO_RCVLOWAT 10 -#define __SO_RCVTIMEO 11 -#define __SO_REUSEADDR 12 -#define __SO_SNDBUF 13 -#define __SO_SNDLOWAT 14 -#define __SO_SNDTIMEO 15 -#define __SO_TYPE 16 -#define __SO_SNDBUFFORCE 17 -#define __SO_PEERCRED 18 -#define __SO_PASSCRED 20 -#define __SO_RCVBUFFORCE 21 -#define __SO_PROTOCOL 23 -#define __SO_REUSEPORT 24 -#define __SO_DOMAIN 28 +#define __SO_ACCEPTCONN 1 +#define __SO_BROADCAST 2 +#define __SO_DEBUG 3 +#define __SO_DONTROUTE 4 +#define __SO_ERROR 5 +#define __SO_KEEPALIVE 6 +#define __SO_LINGER 7 +#define __SO_OOBINLINE 8 +#define __SO_RCVBUF 9 +#define __SO_RCVLOWAT 10 +#define __SO_RCVTIMEO 11 +#define __SO_REUSEADDR 12 +#define __SO_SNDBUF 13 +#define __SO_SNDLOWAT 14 +#define __SO_SNDTIMEO 15 +#define __SO_TYPE 16 +#define __SO_SNDBUFFORCE 17 +#define __SO_PEERCRED 18 +#define __SO_ATTACH_FILTER 19 +#define __SO_PASSCRED 20 +#define __SO_RCVBUFFORCE 21 +#define __SO_DETACH_FILTER 22 +#define __SO_PROTOCOL 23 +#define __SO_REUSEPORT 24 +#define __SO_BINDTODEVICE 27 +#define __SO_DOMAIN 28 #define __SOMAXCONN 128 @@ -105,6 +146,12 @@ struct __ucred { #define __AF_UNIX 3 #define __AF_PACKET 11 +#define __IPPROTO_IP 0 +#define __IPPROTO_ICMP 1 +#define __IPPROTO_TCP 6 +#define __IPPROTO_UDP 17 +#define __IPPROTO_RAW 255 + #define __SHUT_RD 1 #define __SHUT_WR 2 #define __SHUT_RDWR (__SHUT_RD | __SHUT_WR)