MOD aaa-12 解决无法获取到所有接口的ip的问题
SOL 解决无法获取到所有接口的ip的问题 修改人:zhangliang 检视人:zhangliang
This commit is contained in:
parent
cc3ee11af5
commit
bd4ce0677b
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue