diff options
author | K. Y. Srinivasan <kys@microsoft.com> | 2012-08-16 18:32:16 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-08-17 08:23:58 -0700 |
commit | 04405784591117539eac4f5348c86d66dc0dd4f1 (patch) | |
tree | 2e7db1336724a5fe0cd79ed233dc192077b551b7 /tools/hv/hv_kvp_daemon.c | |
parent | 0d5b6b197f9b9a58ead8ac5e68e38c068c31ba4c (diff) |
Tools: hv: Gather subnet information
Now, gather sub-net information for the specified interface.
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'tools/hv/hv_kvp_daemon.c')
-rw-r--r-- | tools/hv/hv_kvp_daemon.c | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/tools/hv/hv_kvp_daemon.c b/tools/hv/hv_kvp_daemon.c index 13ae098a0114..de1724cbaf59 100644 --- a/tools/hv/hv_kvp_daemon.c +++ b/tools/hv/hv_kvp_daemon.c @@ -534,6 +534,7 @@ kvp_get_ip_address(int family, char *if_name, int op, struct ifaddrs *ifap; struct ifaddrs *curp; int offset = 0; + int sn_offset = 0; const char *str; int error = 0; char *buffer; @@ -594,12 +595,38 @@ kvp_get_ip_address(int family, char *if_name, int op, * Gather info other than the IP address. * IP address info will be gathered later. */ - if (curp->ifa_addr->sa_family == AF_INET) + if (curp->ifa_addr->sa_family == AF_INET) { ip_buffer->addr_family |= ADDR_FAMILY_IPV4; - else + /* + * Get subnet info. + */ + error = kvp_process_ip_address( + curp->ifa_netmask, + AF_INET, + (char *) + ip_buffer->sub_net, + length, + &sn_offset); + if (error) + goto gather_ipaddr; + } else { ip_buffer->addr_family |= ADDR_FAMILY_IPV6; + /* + * Get subnet info. + */ + error = kvp_process_ip_address( + curp->ifa_netmask, + AF_INET6, + (char *) + ip_buffer->sub_net, + length, + &sn_offset); + if (error) + goto gather_ipaddr; + } } +gather_ipaddr: error = kvp_process_ip_address(curp->ifa_addr, curp->ifa_addr->sa_family, buffer, |