[libc-commits] [libc] [libc] Define IFNAMSIZ in net/if.h (PR #232664)
Pavel Labath via libc-commits
libc-commits at lists.llvm.org
Fri Oct 16 03:10:17 PDT 2026
https://github.com/labath created https://github.com/llvm/llvm-project/pull/232664
Add the IFNAMSIZ macro (4.2BSD) as an alias for IF_NAMESIZE (POSIX) in net/if.h.
I'm also defining __UAPI_DEF_IF_IFNAMSIZ to 0 in our linux macro header to prevent <linux/if.h> from redefining the macro when included after <net/if.h>.
Assisted-by: Gemini
>From 908b4c637a95ff24dcf6f959d4e27555e8a70a92 Mon Sep 17 00:00:00 2001
From: Pavel Labath <pavel at labath.sk>
Date: Fri, 16 Oct 2026 10:03:06 +0000
Subject: [PATCH] [libc] Define IFNAMSIZ in net/if.h
Add the IFNAMSIZ macro (4.2BSD) as an alias for IF_NAMESIZE (POSIX)
in net/if.h.
I'm also defining __UAPI_DEF_IF_IFNAMSIZ to 0 in our linux macro header
to prevent <linux/if.h> from redefining the macro when included after
<net/if.h>.
Assisted-by: Gemini
---
libc/include/llvm-libc-macros/linux/net-if-macros.h | 4 ++++
libc/include/net/if.yaml | 4 ++++
libc/test/include/net/linux/linux_if_helper.cpp | 1 +
libc/test/include/net/linux/net_if_and_linux_if_test.cpp | 4 ++++
4 files changed, 13 insertions(+)
diff --git a/libc/include/llvm-libc-macros/linux/net-if-macros.h b/libc/include/llvm-libc-macros/linux/net-if-macros.h
index b5cd2c2ef144d7..c8ac72c0ebd3de 100644
--- a/libc/include/llvm-libc-macros/linux/net-if-macros.h
+++ b/libc/include/llvm-libc-macros/linux/net-if-macros.h
@@ -14,6 +14,10 @@
#ifndef LLVM_LIBC_MACROS_LINUX_NET_IF_MACROS_H
#define LLVM_LIBC_MACROS_LINUX_NET_IF_MACROS_H
+// Prevent the linux headers from defining this macro.
+#define __UAPI_DEF_IF_IFNAMSIZ 0
+
#define IF_NAMESIZE 16
+#define IFNAMSIZ IF_NAMESIZE
#endif // LLVM_LIBC_MACROS_LINUX_NET_IF_MACROS_H
diff --git a/libc/include/net/if.yaml b/libc/include/net/if.yaml
index 3b6d807e2fceba..2a8f33c0738fae 100644
--- a/libc/include/net/if.yaml
+++ b/libc/include/net/if.yaml
@@ -2,6 +2,10 @@ header: net/if.h
standards:
- posix
macros:
+ - macro_name: IFNAMSIZ
+ standards:
+ - bsd
+ macro_header: net-if-macros.h
- macro_name: IF_NAMESIZE
macro_header: net-if-macros.h
types:
diff --git a/libc/test/include/net/linux/linux_if_helper.cpp b/libc/test/include/net/linux/linux_if_helper.cpp
index 2878ab6d7cf735..fb8f2fa4d011e5 100644
--- a/libc/test/include/net/linux/linux_if_helper.cpp
+++ b/libc/test/include/net/linux/linux_if_helper.cpp
@@ -18,3 +18,4 @@ extern const size_t LINUX_IFMAP_SIZE = sizeof(struct ifmap);
extern const size_t LINUX_IFMAP_ALIGN = alignof(struct ifmap);
extern const size_t LINUX_IFREQ_SIZE = sizeof(struct ifreq);
extern const size_t LINUX_IFREQ_ALIGN = alignof(struct ifreq);
+extern const int LINUX_IFNAMSIZ = IFNAMSIZ;
diff --git a/libc/test/include/net/linux/net_if_and_linux_if_test.cpp b/libc/test/include/net/linux/net_if_and_linux_if_test.cpp
index 1e29ad07e9322e..92063a464af83d 100644
--- a/libc/test/include/net/linux/net_if_and_linux_if_test.cpp
+++ b/libc/test/include/net/linux/net_if_and_linux_if_test.cpp
@@ -26,6 +26,7 @@ extern const size_t LINUX_IFMAP_SIZE;
extern const size_t LINUX_IFMAP_ALIGN;
extern const size_t LINUX_IFREQ_SIZE;
extern const size_t LINUX_IFREQ_ALIGN;
+extern const int LINUX_IFNAMSIZ;
TEST(LlvmLibcNetIfAndLinuxIfTest, LinuxIfAfterNetIf) {
// Verify that our struct definitions match the size and alignment of the
@@ -34,4 +35,7 @@ TEST(LlvmLibcNetIfAndLinuxIfTest, LinuxIfAfterNetIf) {
EXPECT_EQ(alignof(struct ifmap), LINUX_IFMAP_ALIGN);
EXPECT_EQ(sizeof(struct ifreq), LINUX_IFREQ_SIZE);
EXPECT_EQ(alignof(struct ifreq), LINUX_IFREQ_ALIGN);
+
+ EXPECT_EQ(IFNAMSIZ, LINUX_IFNAMSIZ);
+ EXPECT_EQ(IFNAMSIZ, IF_NAMESIZE);
}
More information about the libc-commits
mailing list