MOD aaa-12 解决ipv6掩码获取失败的问题 SOL 解决ipv6掩码获取失败的问题 修改人:zhangliang 检视人:zhangliang

This commit is contained in:
zhanglianghy 2019-09-29 17:55:38 +08:00
parent f185ac8efc
commit 9348a62d03
3 changed files with 26 additions and 23 deletions

View File

@ -91,7 +91,7 @@ typedef struct _if_v4addr_str v4addr_str;
struct _if_v6addr_str {
char addr[DOT_IPV6_STR];
int prefixlen;
char prefixlen[IF_INFO_STR];
};
typedef struct _if_v6addr_str v6addr_str;

View File

@ -134,13 +134,13 @@ ret_code if_get_v4proto(if_info_t *if_info)
if_conf_file_get(if_info->ifname, iface, protostr);
if(strstr(protostr, "static"))
if(strstr(protostr, "dhcp"))
{
strcpy(if_info->v4protocol, "static");
strcpy(if_info->v4protocol, "dhcp");
}
else
{
strcpy(if_info->v4protocol, "dhcp");
strcpy(if_info->v4protocol, "static");
}
return RET_OK;
@ -156,13 +156,13 @@ ret_code if_get_v6proto(if_info_t *if_info)
if_conf_file_get(if_info->ifname, iface, protostr);
if(strstr(protostr, "static"))
if(strstr(protostr, "dhcp"))
{
strcpy(if_info->v6protocol, "static");
strcpy(if_info->v6protocol, "dhcp");
}
else
{
strcpy(if_info->v6protocol, "dhcp");
strcpy(if_info->v6protocol, "static");
}
return RET_OK;
@ -401,7 +401,8 @@ ret_code if_del_oldin6(char *name, struct in6_ifreq *ifr6)
for(i = 0; i < addr_cnt; i++)
{
if(IPV6_ADDR_CMP(&(ifr6->ifr6_addr), &(ipv6_arr[i].addr)) == 0)
if(IPV6_ADDR_CMP(&(ifr6->ifr6_addr), &(ipv6_arr[i].addr)) == 0
&& ifr6->ifr6_prefixlen == ipv6_arr[i].prefixlen)
{
ret = RET_EXIST;
continue;
@ -508,11 +509,11 @@ int if_get_prefix6(if_info_t *if_conf)
for(i = 0; i < addr_cnt && i < IPV6_ADDR_NUM; i++)
{
inet_ntop(AF_INET6, &ipv6_arr[i].addr, if_conf->ipv6[addr_cnt].addr, DOT_IPV6_STR);
if_conf->ipv6[addr_cnt].prefixlen = ipv6_arr[i].prefixlen;
inet_ntop(AF_INET6, &ipv6_arr[i].addr, if_conf->ipv6[i].addr, DOT_IPV6_STR);
snprintf(if_conf->ipv6[i].prefixlen, IF_INFO_STR, "%d", ipv6_arr[i].prefixlen);
}
return addr_cnt;
return i;
}

View File

@ -194,7 +194,7 @@ cJSON *ipv6_format_json(if_info_t *config_buff, int v6_cnt)
s2j_create_json_obj(json_ipv6);
s2j_json_set_basic_element(json_ipv6, if_ipv6, string, addr);
s2j_json_set_basic_element(json_ipv6, if_ipv6, int, prefixlen);
s2j_json_set_basic_element(json_ipv6, if_ipv6, string, prefixlen);
cJSON_AddItemToArray(json_array, json_ipv6);
}
@ -249,35 +249,33 @@ ret_code if_get_info(if_info_t *if_info, int *v6_cnt)
ret_code ret = RET_OK;
ret = if_get_ipenable(if_info);
ASSERT_RET(ret);
ASSERT_RET_NO(ret);
ret = if_get_v4proto(if_info);
ASSERT_RET(ret);
ASSERT_RET_NO(ret);
ret = if_get_v6proto(if_info);
ASSERT_RET(ret);
ASSERT_RET_NO(ret);
ret = if_get_hwaddr(if_info);
ASSERT_RET(ret);
ASSERT_RET_NO(ret);
ret = if_get_maxspeed(if_info);
//ASSERT_RET(ret);
if_get_maxspeed(if_info);
ret = if_get_linkstat(if_info);
ASSERT_RET(ret);
ASSERT_RET_NO(ret);
ret = if_get_prefix(if_info);
ASSERT_RET(ret);
ASSERT_RET_NO(ret);
ret = if_read_stats_file(if_info);
ASSERT_RET(ret);
ASSERT_RET_NO(ret);
*v6_cnt = if_get_prefix6(if_info);
return ret;
return RET_OK;
}
ret_code ip_config_v4chk(uint config_type, ip_config_t *ip_conf)
{
ret_code ret = RET_OK;
@ -547,6 +545,10 @@ ret_code ip_config_get_all(uint source, pointer output, int *output_len)
for(i = 0; i < if_count; i++)
{
if(strcmp(ifreq[i].ifr_name, "lo") == 0)
{
continue;
}
rpc_log_info("get interface %s info\n", ifreq[i].ifr_name);
strncpy(if_info[i].ifname, ifreq[i].ifr_name, INTERFACE_NAMSIZ - 1);