diff options
author | Leandro Pereira <leandro@hardinfo.org> | 2010-01-01 21:14:55 -0200 |
---|---|---|
committer | Leandro Pereira <leandro@hardinfo.org> | 2010-01-01 21:14:55 -0200 |
commit | 7cafbe8a39e1342f024d5818b67a6541133bc3ca (patch) | |
tree | 8fe84fce1af11c69aaac220e3bc0bfe4a3e0f4ce /hardinfo2 | |
parent | f6109b6006ec2a6bb1d854bf555b143c9e2380ef (diff) |
Do a reverse NS lookup for all DNS servers
Diffstat (limited to 'hardinfo2')
-rw-r--r-- | hardinfo2/network.c | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/hardinfo2/network.c b/hardinfo2/network.c index 593225ae..3d5732b5 100644 --- a/hardinfo2/network.c +++ b/hardinfo2/network.c @@ -26,6 +26,9 @@ #include <sys/utsname.h> #include <sys/stat.h> +#include <sys/socket.h> +#include <netdb.h> + #include <hardinfo.h> #include <iconcache.h> #include <shell.h> @@ -143,9 +146,25 @@ void scan_dns(gboolean reload) if ((resolv = fopen("/etc/resolv.conf", "r"))) { while (fgets(buffer, 256, resolv)) { if (g_str_has_prefix(buffer, "nameserver")) { - __nameservers = h_strdup_cprintf("%s=\n", - __nameservers, - g_strstrip(buffer + sizeof("nameserver"))); + gchar *ip; + struct sockaddr_in sa; + char hbuf[NI_MAXHOST]; + + ip = g_strstrip(buffer + sizeof("nameserver")); + + sa.sin_family = AF_INET; + sa.sin_addr.s_addr = inet_addr(ip); + + if (getnameinfo((struct sockaddr *)&sa, sizeof(sa), hbuf, sizeof(hbuf), NULL, 0, NI_NAMEREQD)) { + __nameservers = h_strdup_cprintf("%s=\n", + __nameservers, + ip); + } else { + __nameservers = h_strdup_cprintf("%s=%s\n", + __nameservers, + ip, hbuf); + + } } } fclose(resolv); @@ -302,7 +321,11 @@ gchar *callback_shares() gchar *callback_dns() { return g_strdup_printf("[Name servers]\n" - "%s\n", __nameservers); + "%s\n" + "[$ShellParam$]\n" + "ColumnTitle$TextValue=IP Address\n" + "ColumnTitle$Value=Name\n" + "ShowColumnHeaders=true\n", __nameservers); } gchar *callback_connections() |