Message ID | 1343145701-3691-11-git-send-email-kys@microsoft.com |
---|---|
State | Not Applicable, archived |
Delegated to: | David Miller |
Headers | show |
On Tue, Jul 24, 2012 at 09:01:35AM -0700, K. Y. Srinivasan wrote: > Now gather DNS information. This information cannot be gathered in > a distro independent fashion. Invoke an external script (that can be > distro dependent) to gather the DNS information. [...] > + memset(cmd, 0, sizeof(cmd)); > + strcat(cmd, "/sbin/hv_get_dns_info "); > + strcat(cmd, if_name); [...] This is a weird way to build a string; why are you not using snprintf()? Not to mention that interface names can contain several characters that are special to the shell - in fact the only disallowed characters are / and whitespace. Also, the external script will not be useful to anything other than hv_kvp_daemon, so it probably belongs somewhere under /usr/share. Ben.
diff --git a/tools/hv/hv_kvp_daemon.c b/tools/hv/hv_kvp_daemon.c index b627236..9500cff 100644 --- a/tools/hv/hv_kvp_daemon.c +++ b/tools/hv/hv_kvp_daemon.c @@ -554,6 +554,33 @@ static void kvp_get_ipconfig_info(char *if_name, kvp_process_ipconfig_file(cmd, (char *)buffer->gate_way, (MAX_GATEWAY_SIZE * 2), INET6_ADDRSTRLEN, 1); + + /* + * Gather the DNS state. + * Since there is no standard way to get this information + * across various distributions of interest; we just invoke + * an external script that needs to be ported across distros + * of interest. + * Input to the script: + * 1) Interface name + * + * Following is the expected format of the information from the script: + * + * ipaddr1 (nameserver1) + * ipaddr2 (nameserver2) + * . + * . + */ + + memset(cmd, 0, sizeof(cmd)); + strcat(cmd, "/sbin/hv_get_dns_info "); + strcat(cmd, if_name); + + /* + * Execute the command to gather DNS info. + */ + kvp_process_ipconfig_file(cmd, (char *)buffer->dns_addr, + (MAX_IP_ADDR_SIZE * 2), INET_ADDRSTRLEN, 0); }