MOD aaa-12 解决无法获取到所有接口的ip的问题

SOL   解决无法获取到所有接口的ip的问题
修改人:zhangliang
检视人:zhangliang
This commit is contained in:
zhanglianghy 2019-08-16 10:37:18 +08:00
parent cc3ee11af5
commit bd4ce0677b
1 changed files with 8 additions and 14 deletions

View File

@ -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);
strncpy(ip_conf[i].ifname, ifreq[i].ifr_name, INTERFACE_NAMSIZ - 1);
ip_conf[i].family = AF_INET;
ret = if_ioctl(SIOCGIFNETMASK, (caddr_t)&netmask, &mask_ret);
ASSERT_RET_NO(ret);
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);