|
@@ -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,
|