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