ifconfig: Display IPv6 addresses

This commit displays IPv6 addresses and netmasks of adapters if
present. Also adds a check to omit IPv4 addresses if e.g. a system
is running IPv6 only.
This commit is contained in:
famfo authored and Nico Weber committed 2024-09-08 18:27:55 -04:00
1 parent d6b37e40df
commit e7fe821f86
1 file changed
+12 -3
+12 -3
View File
@@ -45,7 +45,9 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto class_name = if_object.get_byte_string("class_name"sv).value_or({});
auto mac_address = if_object.get_byte_string("mac_address"sv).value_or({});
auto ipv4_address = if_object.get_byte_string("ipv4_address"sv).value_or({});
auto netmask = if_object.get_byte_string("ipv4_netmask"sv).value_or({});
auto ipv4_netmask = if_object.get_byte_string("ipv4_netmask"sv).value_or({});
auto ipv6_address = if_object.get_byte_string("ipv6_address"sv).value_or({});
auto ipv6_netmask = if_object.get_byte_string("ipv6_netmask"sv).value_or({});
auto packets_in = if_object.get_u32("packets_in"sv).value_or(0);
auto bytes_in = if_object.get_u32("bytes_in"sv).value_or(0);
auto packets_out = if_object.get_u32("packets_out"sv).value_or(0);
@@ -54,8 +56,15 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
outln("{}:", name);
outln("\tmac: {}", mac_address);
outln("\tipv4: {}", ipv4_address);
outln("\tnetmask: {}", netmask);
if (!ipv4_address.is_empty()) {
outln("\tipv4: {}", ipv4_address);
outln("\tnetmask: {}", ipv4_netmask);
}
if (!ipv6_address.is_empty()) {
outln("\tipv6: {}", ipv6_address);
// TODO: this should probably displayed as a CIDR instead for better readability
outln("\tnetmask: {}", ipv6_netmask);
}
outln("\tclass: {}", class_name);
outln("\tRX: {} packets {} bytes ({})", packets_in, bytes_in, human_readable_size(bytes_in));
outln("\tTX: {} packets {} bytes ({})", packets_out, bytes_out, human_readable_size(bytes_out));