]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
printf: add IPv6 address format tests
authorShuvam Pandey <shuvampandey1@gmail.com>
Tue, 17 Mar 2026 11:45:48 +0000 (17:30 +0545)
committerPetr Mladek <pmladek@suse.com>
Tue, 24 Mar 2026 13:20:19 +0000 (14:20 +0100)
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.

Signed-off-by: Shuvam Pandey <shuvampandey1@gmail.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Tested-by: Petr Mladek <pmladek@suse.com>
Link: https://patch.msgid.link/20260317114548.98919-1-shuvampandey1@gmail.com
[pmladek@suse.com: Removed non-necessary details from the commit message.]
Signed-off-by: Petr Mladek <pmladek@suse.com>
lib/tests/printf_kunit.c

index f6f21b445ece1a43c22f3c97c5835a42c1c61089..bb70b9cddadd8b9acc61aeb6a62a8f441266355f 100644 (file)
@@ -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