From e3ecf058662e57d235286048f4068acdc14803f6 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Thu, 7 Aug 2025 02:20:55 +0300 Subject: [PATCH] LibC: Add stubs for {get,free}ifaddrs These are needed for our libuv port --- userspace/libraries/LibC/CMakeLists.txt | 1 + userspace/libraries/LibC/ifaddrs.cpp | 15 ++++++++++ userspace/libraries/LibC/include/ifaddrs.h | 32 ++++++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 userspace/libraries/LibC/ifaddrs.cpp create mode 100644 userspace/libraries/LibC/include/ifaddrs.h diff --git a/userspace/libraries/LibC/CMakeLists.txt b/userspace/libraries/LibC/CMakeLists.txt index 8002b6ca..532819a7 100644 --- a/userspace/libraries/LibC/CMakeLists.txt +++ b/userspace/libraries/LibC/CMakeLists.txt @@ -12,6 +12,7 @@ set(LIBC_SOURCES fenv.cpp ftw.cpp grp.cpp + ifaddrs.cpp inttypes.cpp langinfo.cpp libgen.cpp diff --git a/userspace/libraries/LibC/ifaddrs.cpp b/userspace/libraries/LibC/ifaddrs.cpp new file mode 100644 index 00000000..d8905e9f --- /dev/null +++ b/userspace/libraries/LibC/ifaddrs.cpp @@ -0,0 +1,15 @@ +#include + +#include + +int getifaddrs(struct ifaddrs** ifap) +{ + (void)ifap; + ASSERT_NOT_REACHED(); +} + +void freeifaddrs(struct ifaddrs* ifa) +{ + (void)ifa; + ASSERT_NOT_REACHED(); +} diff --git a/userspace/libraries/LibC/include/ifaddrs.h b/userspace/libraries/LibC/include/ifaddrs.h new file mode 100644 index 00000000..9cebbc09 --- /dev/null +++ b/userspace/libraries/LibC/include/ifaddrs.h @@ -0,0 +1,32 @@ +#ifndef _IFADDRS_H +#define _IFADDRS_H 1 + +// https://man7.org/linux/man-pages/man3/getifaddrs.3.html + +#include + +__BEGIN_DECLS + +struct ifaddrs +{ + struct ifaddrs* ifa_next; /* Next item in list */ + char* ifa_name; /* Name of interface */ + unsigned int ifa_flags; /* Flags from SIOCGIFFLAGS */ + struct sockaddr* ifa_addr; /* Address of interface */ + struct sockaddr* ifa_netmask; /* Netmask of interface */ + union { + struct sockaddr* ifu_broadaddr; /* Broadcast address of interface */ + struct sockaddr* ifu_dstaddr; /* Point-to-point destination address */ + } ifa_ifu; + void* ifa_data; /* Address-specific data */ +}; + +#define ifa_broadaddr ifa_ifu.ifu_broadaddr +#define ifa_dstaddr ifa_ifu.ifu_dstaddr + +int getifaddrs(struct ifaddrs **ifap); +void freeifaddrs(struct ifaddrs *ifa); + +__END_DECLS + +#endif