diff --git a/Platform/user/configm/config-server/netconfig/ipconfig/ipconfig.c b/Platform/user/configm/config-server/netconfig/ipconfig/ipconfig.c index 054354c84..28f433ba0 100644 --- a/Platform/user/configm/config-server/netconfig/ipconfig/ipconfig.c +++ b/Platform/user/configm/config-server/netconfig/ipconfig/ipconfig.c @@ -327,7 +327,7 @@ ret_code if_get_prefix_all(pointer output, int *output_len, int *code) struct sockaddr_in *addr; struct ifreq netmask; ip_config_t *ip_conf; - struct ifconf ifc; + struct ifconf ifc; int if_count = 0; ret_code ret; int mask_ret; @@ -361,24 +361,18 @@ ret_code if_get_prefix_all(pointer output, int *output_len, int *code) ip_conf = rpc_new0(ip_config_t, MAX_IF_NUM); if(ip_conf == NULL) { - return RET_NOMEM; + return RET_NOMEM; } for(i = 0; i < if_count; i++) - { - rpc_log_info("get interface %s info\n", ifreq[i].ifr_name); - strncpy(ip_conf[i].ifname, ifreq[i].ifr_name, INTERFACE_NAMSIZ - 1); - ip_conf[i].family = AF_INET; - ip_conf[i].prefix = ((struct sockaddr_in *)&(ifreq[i].ifr_addr))->sin_addr; + { + rpc_log_info("get interface %s info\n", ifreq[i].ifr_name); - memset(&netmask, 0, sizeof(netmask)); - strncpy(netmask.ifr_name, ifreq[i].ifr_name, sizeof(netmask.ifr_name) - 1); - - ret = if_ioctl(SIOCGIFNETMASK, (caddr_t)&netmask, &mask_ret); - ASSERT_RET_NO(ret); + strncpy(ip_conf[i].ifname, ifreq[i].ifr_name, INTERFACE_NAMSIZ - 1); + ip_conf[i].family = AF_INET; + + if_get_prefix(&ip_conf[i], code); - addr = ( struct sockaddr_in * )&(netmask.ifr_netmask); - ip_conf[i].prefixlen = ip_masklen(addr->sin_addr); } ip_config_format_json_array(ip_conf, if_count, output, output_len);