Now gather sub-net information for the specified interface.

Signed-off-by: K. Y. Srinivasan <k...@microsoft.com>
Reviewed-by: Haiyang Zhang <haiya...@microsoft.com>
---
 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 f687fa5..07f6f7c 100644
--- a/tools/hv/hv_kvp_daemon.c
+++ b/tools/hv/hv_kvp_daemon.c
@@ -533,6 +533,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;
@@ -593,12 +594,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,
-- 
1.7.4.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to