From c7764197c9ec8ce230dfda2ae24f70e4696f87d2 Mon Sep 17 00:00:00 2001 From: Red Bear OS Date: Fri, 10 Jul 2026 08:36:38 +0300 Subject: [PATCH] relibc: add Linux struct ifreq and ifconf to net/if.h Qt 6.11.1 qtbase/qnetworkinterface_unix.cpp needs struct ifreq and struct ifconf for SIOCGIFMTU/SIOCGIFINDEX/SIOCGIFCONF ioctls. Define them in the cbindgen-generated net/if.h with sys/socket.h included. --- src/header/net_if/cbindgen.toml | 43 +++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/header/net_if/cbindgen.toml b/src/header/net_if/cbindgen.toml index a434e2f0dc..d524d2f4c1 100644 --- a/src/header/net_if/cbindgen.toml +++ b/src/header/net_if/cbindgen.toml @@ -8,5 +8,48 @@ style = "Tag" no_includes = true cpp_compat = true +after_includes = """ +#include + +/* Nonstandard Linux netdevice structures used by ioctl (SIOCGIFMTU, etc.). + See https://man7.org/linux/man-pages/man7/netdevice.7.html. */ + +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[16]; + 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; + struct ifmap ifr_map; + char ifr_slave[16]; + char ifr_newname[16]; + char *ifr_data; + }; +}; + +struct ifconf { + int ifc_len; + union { + char *ifc_buf; + struct ifreq *ifreq; + }; +}; +""" + [enum] prefix_with_name = true