Переглянути джерело

Kernel+LibC: Stub out getifaddrs() and freeifaddrs()

These are required for some ports.
Idan Horowitz 3 роки тому
батько
коміт
7b24fc6fb8

+ 30 - 0
Kernel/API/POSIX/ifaddrs.h

@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2021, Idan Horowitz <idan.horowitz@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct ifaddrs {
+    struct ifaddrs* ifa_next;
+    char* ifa_name;
+    unsigned int ifa_flags;
+    struct sockaddr* ifa_addr;
+    struct sockaddr* ifa_netmask;
+    union {
+        struct sockaddr* ifu_broadaddr;
+        struct sockaddr* ifu_dstaddr;
+    } ifa_ifu;
+#define ifa_broadaddr ifa_ifu.ifu_broadaddr
+#define ifa_dstaddr ifa_ifu.ifu_dstaddr
+    void* ifa_data;
+};
+
+#ifdef __cplusplus
+}
+#endif

+ 1 - 0
Userland/Libraries/LibC/CMakeLists.txt

@@ -8,6 +8,7 @@ set(LIBC_SOURCES
     fcntl.cpp
     fenv.cpp
     fnmatch.cpp
+    ifaddrs.cpp
     getopt.cpp
     grp.cpp
     inttypes.cpp

+ 18 - 0
Userland/Libraries/LibC/ifaddrs.cpp

@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) 2021, Idan Horowitz <idan.horowitz@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include <LibC/errno.h>
+#include <LibC/ifaddrs.h>
+
+int getifaddrs(struct ifaddrs**)
+{
+    errno = ENOSYS;
+    return -1;
+}
+
+void freeifaddrs(struct ifaddrs*)
+{
+}

+ 17 - 0
Userland/Libraries/LibC/ifaddrs.h

@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2021, Idan Horowitz <idan.horowitz@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <Kernel/API/POSIX/ifaddrs.h>
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+int getifaddrs(struct ifaddrs** ifap);
+void freeifaddrs(struct ifaddrs* ifa);
+
+__END_DECLS