Ipv4ParseError, why not Ipv6ParseError

Hello - Should there be a parsing error for std.net.Address.parseIp6 named Ipv6ParseError? If this fails, it returns a Ipv4ParseError.

test "net addresses" {
    const addr: []const u8 = "127.0.0.1";
    const port: u16 = 3000;
    // const addr_v4 = try std.net.Address.parseIp4(addr, port);
    const addr_v6 = try std.net.Address.parseIp6(addr, port);
    // std.debug.print("addr_v4: {}\n", .{addr_v4});
    std.debug.print("addr_v6: {}\n", .{addr_v6}); 
}
1/1 main.test.net addresses...FAIL (InvalidIpv4Mapping)
/usr/lib/zig/std/net.zig:445:21: 0x104a131 in parse (test)
                    return error.InvalidIpv4Mapping;
                    ^
/usr/lib/zig/std/net.zig:99:26: 0x10495c7 in parseIp6 (test)
        return .{ .in6 = try Ip6Address.parse(buf, port) };
                         ^
... /src/main.zig:71:21: 0x104950d in test.net addresses (test)
    const addr_v6 = try std.net.Address.parseIp6(addr, port);
                    ^
0 passed; 0 skipped; 1 failed.
error: the following test command failed with exit code 1:

Very new to Zig world, enjoying catching up on lower level programming. Not sure if I’m missing something here, and maybe help contribute to ziglang. :slight_smile:

1 Like

Hello, @ziggy_magnetar

The library detects that you used an IPv4 address (from the .), and returns InvalidIpv4Mapping because there is no IPv4 prefix ::ffff: in the address.

Welcome to ziggit :slight_smile:

2 Likes

Oh! Thanks. That makes sense now. Appreciate the insight!

1 Like