[PATCH] printf: add IPv6 address format tests

Shuvam Pandey posted 1 patch 2 weeks, 6 days ago
lib/tests/printf_kunit.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
[PATCH] printf: add IPv6 address format tests
Posted by Shuvam Pandey 2 weeks, 6 days ago
printf_kunit already covers IPv4 address formatting, but the ip6()
test case is empty even though printk-formats.rst documents %pI6,
%pi6, %pI6c, and generic %pIS variants.

Add focused IPv6 checks for raw and generic formatting, compressed
output, the single-zero %pI6c corner case, and bracketed port
formatting for sockaddr_in6.

Validated with the arm64 printf KUnit suite and a W=1 rebuild of
lib/tests/printf_kunit.o.

Signed-off-by: Shuvam Pandey <shuvampandey1@gmail.com>
---
 lib/tests/printf_kunit.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/lib/tests/printf_kunit.c b/lib/tests/printf_kunit.c
index c64bfe79652e..739c755dd1ab 100644
--- a/lib/tests/printf_kunit.c
+++ b/lib/tests/printf_kunit.c
@@ -17,6 +17,7 @@
 #include <linux/dcache.h>
 #include <linux/socket.h>
 #include <linux/in.h>
+#include <linux/in6.h>
 
 #include <linux/gfp.h>
 #include <linux/mm.h>
@@ -437,6 +438,27 @@ ip4(struct kunit *kunittest)
 static void
 ip6(struct kunit *kunittest)
 {
+	const struct in6_addr addr = {
+		.s6_addr = { 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04,
+			     0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08 }
+	};
+	const struct in6_addr single_zero = {
+		.s6_addr = { 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04,
+			     0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08 }
+	};
+	struct sockaddr_in6 sa = {
+		.sin6_family = AF_INET6,
+		.sin6_port = cpu_to_be16(12345),
+		.sin6_addr = addr,
+	};
+
+	test("00010002000300040005000600070008|0001:0002:0003:0004:0005:0006:0007:0008",
+	     "%pi6|%pI6", &addr, &addr);
+	test("00010002000300040005000600070008|0001:0002:0003:0004:0005:0006:0007:0008",
+	     "%piS|%pIS", &sa, &sa);
+	test("1:2:3:4:5:6:7:8", "%pI6c", &addr);
+	test("1:0:3:4:5:6:7:8", "%pI6c", &single_zero);
+	test("[1:2:3:4:5:6:7:8]:12345", "%pISpc", &sa);
 }
 
 static void
-- 
2.50.1 (Apple Git-155)
Re: [PATCH] printf: add IPv6 address format tests
Posted by Petr Mladek 1 week, 6 days ago
On Tue 2026-03-17 17:30:48, Shuvam Pandey wrote:
> printf_kunit already covers IPv4 address formatting, but the ip6()
> test case is empty even though printk-formats.rst documents %pI6,
> %pi6, %pI6c, and generic %pIS variants.
> 
> Add focused IPv6 checks for raw and generic formatting, compressed
> output, the single-zero %pI6c corner case, and bracketed port
> formatting for sockaddr_in6.
> 
> Validated with the arm64 printf KUnit suite and a W=1 rebuild of
> lib/tests/printf_kunit.o.
> 
> Signed-off-by: Shuvam Pandey <shuvampandey1@gmail.com>

JFYI, the patch has been comitted into printk/linux.git,
branch for-7.1.

Note that I have removed the last paragraph about validating
as suggested by Andy, see
https://git.kernel.org/pub/scm/linux/kernel/git/printk/linux.git/commit/?h=for-7.1&id=f4cf0992be37e6a8bc6cf9108f2c9628a6188381

Best Regards,
Petr
Re: [PATCH] printf: add IPv6 address format tests
Posted by Andy Shevchenko 2 weeks, 6 days ago
On Tue, Mar 17, 2026 at 05:30:48PM +0545, Shuvam Pandey wrote:
> printf_kunit already covers IPv4 address formatting, but the ip6()
> test case is empty even though printk-formats.rst documents %pI6,
> %pi6, %pI6c, and generic %pIS variants.
> 
> Add focused IPv6 checks for raw and generic formatting, compressed
> output, the single-zero %pI6c corner case, and bracketed port
> formatting for sockaddr_in6.

> Validated with the arm64 printf KUnit suite and a W=1 rebuild of
> lib/tests/printf_kunit.o.

No need to put this paragraph into the commit message, it's implied that
the author of the change has validated and tested it beforehand.

Otherwise, test cases are always warmly welcome!
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

-- 
With Best Regards,
Andy Shevchenko