parent
a266a1b4b0
commit
dff4a537f2
|
@ -25,6 +25,14 @@
|
||||||
#define IPV6_VERSION 6
|
#define IPV6_VERSION 6
|
||||||
#define ACTION_LENGTH 10
|
#define ACTION_LENGTH 10
|
||||||
|
|
||||||
|
#define BOTH_GW_AND_DEV 1
|
||||||
|
#define ONLY_GW 2
|
||||||
|
#define ONLY_DEV 3
|
||||||
|
#define IPV4_MIN_NETMASK 0
|
||||||
|
#define IPV4_MAX_NETMASK 32
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define STATIC_ROUTING_PATH "/etc/network/static_routing"
|
#define STATIC_ROUTING_PATH "/etc/network/static_routing"
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -48,6 +48,7 @@ ret_code routing_to_json(int count, routing_t *buff_total, pointer output, int *
|
||||||
if(json_array == NULL)
|
if(json_array == NULL)
|
||||||
{
|
{
|
||||||
cJSON_Delete(json_array);
|
cJSON_Delete(json_array);
|
||||||
|
cJSON_Delete(ret_root);
|
||||||
return RET_EMPTY_STRING;
|
return RET_EMPTY_STRING;
|
||||||
}
|
}
|
||||||
if(count > 0)
|
if(count > 0)
|
||||||
|
@ -81,6 +82,8 @@ ret_code routing_to_json(int count, routing_t *buff_total, pointer output, int *
|
||||||
|
|
||||||
cJSON_AddItemToObject(ret_root,"route",json_array);
|
cJSON_AddItemToObject(ret_root,"route",json_array);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
rpc_json_print(ret_root);
|
rpc_json_print(ret_root);
|
||||||
|
|
||||||
json_routing = cJSON_PrintUnformatted(ret_root);
|
json_routing = cJSON_PrintUnformatted(ret_root);
|
||||||
|
@ -98,12 +101,16 @@ ret_code routing_json_parse(pointer input, uint *conf_type, routing_t *conf_buff
|
||||||
{
|
{
|
||||||
cJSON *json_obj, *operate, *route, *version, *destip, *netmask, *gateway, *dev, *metric;
|
cJSON *json_obj, *operate, *route, *version, *destip, *netmask, *gateway, *dev, *metric;
|
||||||
|
|
||||||
json_obj = cJSON_Parse(input);
|
if (NULL == input)
|
||||||
|
{
|
||||||
|
return RET_EMPTY_STRING;
|
||||||
|
}
|
||||||
|
|
||||||
|
json_obj = cJSON_Parse(input);
|
||||||
|
|
||||||
if(NULL == json_obj)
|
if(NULL == json_obj)
|
||||||
{
|
{
|
||||||
rpc_log_info("json obj is NULL \n");
|
rpc_log_info("json obj is NULL \n");
|
||||||
cJSON_Delete(json_obj);
|
|
||||||
return RET_EMPTY_STRING;
|
return RET_EMPTY_STRING;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,7 +118,7 @@ ret_code routing_json_parse(pointer input, uint *conf_type, routing_t *conf_buff
|
||||||
|
|
||||||
operate = cJSON_GetObjectItem(json_obj,"operate");
|
operate = cJSON_GetObjectItem(json_obj,"operate");
|
||||||
|
|
||||||
if(NULL == operate)
|
if((NULL == operate) || (NULL == (operate->valuestring)))
|
||||||
{
|
{
|
||||||
cJSON_Delete(json_obj);
|
cJSON_Delete(json_obj);
|
||||||
return RET_EMPTY_STRING;
|
return RET_EMPTY_STRING;
|
||||||
|
@ -129,10 +136,12 @@ ret_code routing_json_parse(pointer input, uint *conf_type, routing_t *conf_buff
|
||||||
else if (strcmp(operate->valuestring,"getall") == 0)
|
else if (strcmp(operate->valuestring,"getall") == 0)
|
||||||
{
|
{
|
||||||
*conf_type = CM_CONFIG_GET_ALL;
|
*conf_type = CM_CONFIG_GET_ALL;
|
||||||
|
cJSON_Delete(json_obj);
|
||||||
return RET_OK;
|
return RET_OK;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
cJSON_Delete(json_obj);
|
||||||
return RET_WRONG_TYPE;
|
return RET_WRONG_TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,6 +156,7 @@ ret_code routing_json_parse(pointer input, uint *conf_type, routing_t *conf_buff
|
||||||
version = cJSON_GetObjectItem(route,"version");
|
version = cJSON_GetObjectItem(route,"version");
|
||||||
if(!version)
|
if(!version)
|
||||||
{
|
{
|
||||||
|
cJSON_Delete(json_obj);
|
||||||
return RET_VERSION_ERR;
|
return RET_VERSION_ERR;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -157,8 +167,9 @@ ret_code routing_json_parse(pointer input, uint *conf_type, routing_t *conf_buff
|
||||||
rpc_log_info("version:%d \n", conf_buff->version);
|
rpc_log_info("version:%d \n", conf_buff->version);
|
||||||
|
|
||||||
destip = cJSON_GetObjectItem(route,"destip");
|
destip = cJSON_GetObjectItem(route,"destip");
|
||||||
if(!destip)
|
if((!destip) || (NULL == (destip->valuestring)))
|
||||||
{
|
{
|
||||||
|
cJSON_Delete(json_obj);
|
||||||
return RET_DESTIP_ERR;
|
return RET_DESTIP_ERR;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -170,6 +181,7 @@ ret_code routing_json_parse(pointer input, uint *conf_type, routing_t *conf_buff
|
||||||
netmask = cJSON_GetObjectItem(route,"netmask");
|
netmask = cJSON_GetObjectItem(route,"netmask");
|
||||||
if((!netmask) || (netmask->valueint < 0) || (netmask->valueint > 128))
|
if((!netmask) || (netmask->valueint < 0) || (netmask->valueint > 128))
|
||||||
{
|
{
|
||||||
|
cJSON_Delete(json_obj);
|
||||||
return RET_NETMASK_ERR;
|
return RET_NETMASK_ERR;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -179,9 +191,8 @@ ret_code routing_json_parse(pointer input, uint *conf_type, routing_t *conf_buff
|
||||||
rpc_log_info("netmask:%d \n", conf_buff->netmask);
|
rpc_log_info("netmask:%d \n", conf_buff->netmask);
|
||||||
|
|
||||||
gateway = cJSON_GetObjectItem(route,"gateway");
|
gateway = cJSON_GetObjectItem(route,"gateway");
|
||||||
if(!gateway)
|
if((!gateway) || (NULL == (gateway->valuestring)))
|
||||||
{
|
{
|
||||||
//memset(conf_buff->gateway,'\0',sizeof(conf_buff->gateway));
|
|
||||||
strcpy(conf_buff->gateway,"");
|
strcpy(conf_buff->gateway,"");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -191,7 +202,7 @@ ret_code routing_json_parse(pointer input, uint *conf_type, routing_t *conf_buff
|
||||||
rpc_log_info("gateway:%s \n", conf_buff->gateway);
|
rpc_log_info("gateway:%s \n", conf_buff->gateway);
|
||||||
|
|
||||||
dev = cJSON_GetObjectItem(route,"dev");
|
dev = cJSON_GetObjectItem(route,"dev");
|
||||||
if(!dev)
|
if((!dev) || (NULL == (dev->valuestring)))
|
||||||
{
|
{
|
||||||
strcpy(conf_buff->dev,"");
|
strcpy(conf_buff->dev,"");
|
||||||
}
|
}
|
||||||
|
@ -205,6 +216,7 @@ ret_code routing_json_parse(pointer input, uint *conf_type, routing_t *conf_buff
|
||||||
if((!metric) || (metric->valueint) < 0 || (metric->valueint)
|
if((!metric) || (metric->valueint) < 0 || (metric->valueint)
|
||||||
> 10000)
|
> 10000)
|
||||||
{
|
{
|
||||||
|
cJSON_Delete(json_obj);
|
||||||
return RET_METRIC_ERR;
|
return RET_METRIC_ERR;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -214,7 +226,6 @@ ret_code routing_json_parse(pointer input, uint *conf_type, routing_t *conf_buff
|
||||||
rpc_log_info("metric:%d \n", conf_buff->metric);
|
rpc_log_info("metric:%d \n", conf_buff->metric);
|
||||||
|
|
||||||
cJSON_Delete(json_obj);
|
cJSON_Delete(json_obj);
|
||||||
|
|
||||||
return RET_OK;
|
return RET_OK;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -226,9 +237,14 @@ ret_code insert_into_file(char *string)
|
||||||
{
|
{
|
||||||
FILE *f;
|
FILE *f;
|
||||||
ret_code ret = RET_OK;
|
ret_code ret = RET_OK;
|
||||||
char temp_buff[LINE_MAX_LENGTH];
|
char temp_buff[LINE_MAX_LENGTH] = {0};
|
||||||
int flag = 0;
|
int flag = 0;
|
||||||
|
|
||||||
|
if (NULL == string)
|
||||||
|
{
|
||||||
|
return RET_EMPTY_STRING;
|
||||||
|
}
|
||||||
|
|
||||||
rpc_log_info("string: %s\n",string);
|
rpc_log_info("string: %s\n",string);
|
||||||
|
|
||||||
f = fopen (STATIC_ROUTING_PATH,"at+");
|
f = fopen (STATIC_ROUTING_PATH,"at+");
|
||||||
|
@ -269,10 +285,14 @@ ret_code insert_into_file(char *string)
|
||||||
/*从配置文件中删除*/
|
/*从配置文件中删除*/
|
||||||
ret_code delete_from_file(char *string)
|
ret_code delete_from_file(char *string)
|
||||||
{
|
{
|
||||||
|
if (NULL == string)
|
||||||
|
{
|
||||||
|
return RET_EMPTY_STRING;
|
||||||
|
}
|
||||||
|
|
||||||
FILE *f;
|
FILE *f;
|
||||||
ret_code ret = RET_ERR;
|
ret_code ret = RET_ERR;
|
||||||
int length;
|
char buff_line[LINE_MAX_LENGTH] = {0};
|
||||||
char buff_line[LINE_MAX_LENGTH];
|
|
||||||
int flag =0;
|
int flag =0;
|
||||||
int string_length = strlen(string);
|
int string_length = strlen(string);
|
||||||
rpc_log_info("string length:%d\n",string_length);
|
rpc_log_info("string length:%d\n",string_length);
|
||||||
|
@ -285,12 +305,10 @@ ret_code delete_from_file(char *string)
|
||||||
}
|
}
|
||||||
|
|
||||||
fseek(f,0,SEEK_END);
|
fseek(f,0,SEEK_END);
|
||||||
length = ftell(f);
|
int length = ftell(f);
|
||||||
|
|
||||||
char buff[length];
|
char buff[length];
|
||||||
|
|
||||||
memset(buff,0,sizeof(buff));
|
memset(buff,0,sizeof(buff));
|
||||||
memset(buff_line,0,sizeof(buff_line));
|
|
||||||
|
|
||||||
fseek(f,0,SEEK_SET);
|
fseek(f,0,SEEK_SET);
|
||||||
|
|
||||||
|
@ -338,13 +356,13 @@ ret_code add_routing_exe (char *string)
|
||||||
int status;
|
int status;
|
||||||
ret_code ret = RET_OK;
|
ret_code ret = RET_OK;
|
||||||
|
|
||||||
rpc_log_info("string:%s\n",string);
|
|
||||||
|
|
||||||
if(NULL == string)
|
if(NULL == string)
|
||||||
{
|
{
|
||||||
return RET_EMPTY_STRING;
|
return RET_EMPTY_STRING;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rpc_log_info("string:%s\n",string);
|
||||||
|
|
||||||
status = system(string);
|
status = system(string);
|
||||||
if (-1 == status)
|
if (-1 == status)
|
||||||
{
|
{
|
||||||
|
@ -426,22 +444,26 @@ ret_code del_routing_exe (char *string, char *string_del)
|
||||||
/*判断gateway,dev是否为空*/
|
/*判断gateway,dev是否为空*/
|
||||||
void judge_para(int *flag, char *gateway, char *dev)
|
void judge_para(int *flag, char *gateway, char *dev)
|
||||||
{
|
{
|
||||||
|
if((NULL == flag) || (NULL == gateway) || (NULL == dev))
|
||||||
|
{
|
||||||
|
return RET_EMPTY_STRING;
|
||||||
|
}
|
||||||
if (strcmp(gateway,"") != 0)
|
if (strcmp(gateway,"") != 0)
|
||||||
{
|
{
|
||||||
if (strcmp(dev,"") != 0)
|
if (strcmp(dev,"") != 0)
|
||||||
{
|
{
|
||||||
*flag = 1;
|
*flag = BOTH_GW_AND_DEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*flag = 2;
|
*flag = ONLY_GW;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*flag = 3;
|
*flag = ONLY_DEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -449,21 +471,26 @@ void judge_para(int *flag, char *gateway, char *dev)
|
||||||
/*用flag来标志是否需要解析gw和dev*/
|
/*用flag来标志是否需要解析gw和dev*/
|
||||||
void judge_buff(int *flag, char *buff)
|
void judge_buff(int *flag, char *buff)
|
||||||
{
|
{
|
||||||
|
if((NULL == flag) || (NULL == buff))
|
||||||
|
{
|
||||||
|
return RET_EMPTY_STRING;
|
||||||
|
}
|
||||||
|
|
||||||
if (strstr(buff,"gw") != NULL)
|
if (strstr(buff,"gw") != NULL)
|
||||||
{
|
{
|
||||||
if (strstr(buff,"dev") != NULL)
|
if (strstr(buff,"dev") != NULL)
|
||||||
{
|
{
|
||||||
*flag = 1;
|
*flag = BOTH_GW_AND_DEV;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*flag = 2;
|
*flag = ONLY_GW;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*flag = 3;
|
*flag = ONLY_DEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -471,24 +498,21 @@ void judge_buff(int *flag, char *buff)
|
||||||
/*配置默认路由*/
|
/*配置默认路由*/
|
||||||
ret_code default_routing_proc(routing_t *conf_buff, uint config_type){
|
ret_code default_routing_proc(routing_t *conf_buff, uint config_type){
|
||||||
|
|
||||||
char string[STRING_LENGTH];
|
|
||||||
char string_del[STRING_LENGTH];
|
|
||||||
//uint config_type = conf_buff->conf_type;
|
|
||||||
char *gw_t = conf_buff->gateway;
|
|
||||||
char *dev_t = conf_buff->dev;
|
|
||||||
int metric_t = conf_buff->metric;
|
|
||||||
ret_code ret = RET_OK;
|
|
||||||
int flag = 0;
|
|
||||||
|
|
||||||
if (conf_buff == NULL)
|
if (conf_buff == NULL)
|
||||||
{
|
{
|
||||||
return RET_EMPTY_STRING;
|
return RET_EMPTY_STRING;
|
||||||
}
|
}
|
||||||
|
|
||||||
judge_para(&flag,gw_t,dev_t);
|
char string[STRING_LENGTH] = {0};
|
||||||
|
char string_del[STRING_LENGTH] = {0};
|
||||||
|
char *gw_t = conf_buff->gateway;
|
||||||
|
char *dev_t = conf_buff->dev;
|
||||||
|
int metric_t = conf_buff->metric;
|
||||||
|
ret_code ret = RET_OK;
|
||||||
|
int flag = 0;
|
||||||
|
|
||||||
memset(string, 0, sizeof(string));
|
judge_para(&flag,gw_t,dev_t);
|
||||||
memset(string_del, 0, sizeof(string_del));
|
|
||||||
|
|
||||||
/*根据config_type判断添加还是删除,
|
/*根据config_type判断添加还是删除,
|
||||||
根据version判断是IPV4还是IPV6,
|
根据version判断是IPV4还是IPV6,
|
||||||
|
@ -496,19 +520,25 @@ ret_code default_routing_proc(routing_t *conf_buff, uint config_type){
|
||||||
|
|
||||||
if (config_type == CM_CONFIG_ADD)
|
if (config_type == CM_CONFIG_ADD)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if (metric_t < 1)
|
||||||
|
{
|
||||||
|
return RET_METRIC_ERR;
|
||||||
|
}
|
||||||
|
|
||||||
if(conf_buff->version == IPV4_VERSION)
|
if(conf_buff->version == IPV4_VERSION)
|
||||||
{
|
{
|
||||||
switch (flag) {
|
switch (flag) {
|
||||||
case 1:
|
case BOTH_GW_AND_DEV:
|
||||||
sprintf(string,"route add default gw %s dev %s metric %d\n",
|
sprintf(string,"route add default gw %s dev %s metric %d\n",
|
||||||
gw_t,dev_t,metric_t);
|
gw_t,dev_t,metric_t);
|
||||||
ret = add_routing_exe(string);
|
ret = add_routing_exe(string);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case ONLY_GW:
|
||||||
sprintf(string,"route add default gw %s metric %d\n",gw_t,metric_t);
|
sprintf(string,"route add default gw %s metric %d\n",gw_t,metric_t);
|
||||||
ret = add_routing_exe(string);
|
ret = add_routing_exe(string);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case ONLY_DEV:
|
||||||
sprintf(string,"route add default dev %s metric %d\n",dev_t,metric_t);
|
sprintf(string,"route add default dev %s metric %d\n",dev_t,metric_t);
|
||||||
ret = add_routing_exe(string);
|
ret = add_routing_exe(string);
|
||||||
break;
|
break;
|
||||||
|
@ -520,16 +550,16 @@ ret_code default_routing_proc(routing_t *conf_buff, uint config_type){
|
||||||
else if (conf_buff->version == IPV6_VERSION)
|
else if (conf_buff->version == IPV6_VERSION)
|
||||||
{
|
{
|
||||||
switch (flag) {
|
switch (flag) {
|
||||||
case 1:
|
case BOTH_GW_AND_DEV:
|
||||||
sprintf(string,"route -A inet6 add default gw %s dev %s metric %d\n",
|
sprintf(string,"route -A inet6 add default gw %s dev %s metric %d\n",
|
||||||
gw_t,dev_t,metric_t);
|
gw_t,dev_t,metric_t);
|
||||||
ret = add_routing_exe(string);
|
ret = add_routing_exe(string);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case ONLY_GW:
|
||||||
sprintf(string,"route -A inet6 add default gw %s metric %d\n",gw_t,metric_t);
|
sprintf(string,"route -A inet6 add default gw %s metric %d\n",gw_t,metric_t);
|
||||||
ret = add_routing_exe(string);
|
ret = add_routing_exe(string);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case ONLY_DEV:
|
||||||
sprintf(string,"route -A inet6 add default dev %s metric %d\n",dev_t,metric_t);
|
sprintf(string,"route -A inet6 add default dev %s metric %d\n",dev_t,metric_t);
|
||||||
ret = add_routing_exe(string);
|
ret = add_routing_exe(string);
|
||||||
break;
|
break;
|
||||||
|
@ -549,19 +579,19 @@ ret_code default_routing_proc(routing_t *conf_buff, uint config_type){
|
||||||
if(conf_buff->version == IPV4_VERSION)
|
if(conf_buff->version == IPV4_VERSION)
|
||||||
{
|
{
|
||||||
switch (flag) {
|
switch (flag) {
|
||||||
case 1:
|
case BOTH_GW_AND_DEV:
|
||||||
sprintf(string,"route del default gw %s dev %s metric %d",
|
sprintf(string,"route del default gw %s dev %s metric %d",
|
||||||
gw_t,dev_t,metric_t);
|
gw_t,dev_t,metric_t);
|
||||||
sprintf(string_del,"route add default gw %s dev %s metric %d",
|
sprintf(string_del,"route add default gw %s dev %s metric %d",
|
||||||
gw_t,dev_t,metric_t);
|
gw_t,dev_t,metric_t);
|
||||||
ret = del_routing_exe(string,string_del);
|
ret = del_routing_exe(string,string_del);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case ONLY_GW:
|
||||||
sprintf(string,"route del default gw %s metric %d",gw_t,metric_t);
|
sprintf(string,"route del default gw %s metric %d",gw_t,metric_t);
|
||||||
sprintf(string_del,"route add default gw %s metric %d",gw_t,metric_t);
|
sprintf(string_del,"route add default gw %s metric %d",gw_t,metric_t);
|
||||||
ret = del_routing_exe(string,string_del);
|
ret = del_routing_exe(string,string_del);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case ONLY_DEV:
|
||||||
sprintf(string,"route del default dev %s metric %d",dev_t,metric_t);
|
sprintf(string,"route del default dev %s metric %d",dev_t,metric_t);
|
||||||
sprintf(string_del,"route add default dev %s metric %d",dev_t,metric_t);
|
sprintf(string_del,"route add default dev %s metric %d",dev_t,metric_t);
|
||||||
ret = del_routing_exe(string,string_del);
|
ret = del_routing_exe(string,string_del);
|
||||||
|
@ -573,20 +603,25 @@ ret_code default_routing_proc(routing_t *conf_buff, uint config_type){
|
||||||
|
|
||||||
else if(conf_buff->version == IPV6_VERSION)
|
else if(conf_buff->version == IPV6_VERSION)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if (metric_t < 1)
|
||||||
|
{
|
||||||
|
return RET_METRIC_ERR;
|
||||||
|
}
|
||||||
switch (flag) {
|
switch (flag) {
|
||||||
case 1:
|
case BOTH_GW_AND_DEV:
|
||||||
sprintf(string,"route -A inet6 del default gw %s dev %s metric %d",
|
sprintf(string,"route -A inet6 del default gw %s dev %s metric %d",
|
||||||
gw_t,dev_t,metric_t);
|
gw_t,dev_t,metric_t);
|
||||||
sprintf(string_del,"route -A inet6 add default gw %s dev %s metric %d",
|
sprintf(string_del,"route -A inet6 add default gw %s dev %s metric %d",
|
||||||
gw_t,dev_t,metric_t);
|
gw_t,dev_t,metric_t);
|
||||||
ret = del_routing_exe(string,string_del);
|
ret = del_routing_exe(string,string_del);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case ONLY_GW:
|
||||||
sprintf(string,"route -A inet6 del default gw %s metric %d",gw_t,metric_t);
|
sprintf(string,"route -A inet6 del default gw %s metric %d",gw_t,metric_t);
|
||||||
sprintf(string_del,"route -A inet6 add default gw %s metric %d",gw_t,metric_t);
|
sprintf(string_del,"route -A inet6 add default gw %s metric %d",gw_t,metric_t);
|
||||||
ret = del_routing_exe(string,string_del);
|
ret = del_routing_exe(string,string_del);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case ONLY_DEV:
|
||||||
sprintf(string,"route -A inet6 del default dev %s metric %d",dev_t,metric_t);
|
sprintf(string,"route -A inet6 del default dev %s metric %d",dev_t,metric_t);
|
||||||
sprintf(string_del,"route -A inet6 add default dev %s metric %d",dev_t,metric_t);
|
sprintf(string_del,"route -A inet6 add default dev %s metric %d",dev_t,metric_t);
|
||||||
ret = del_routing_exe(string,string_del);
|
ret = del_routing_exe(string,string_del);
|
||||||
|
@ -616,14 +651,20 @@ ret_code default_routing_proc(routing_t *conf_buff, uint config_type){
|
||||||
组装shell*/
|
组装shell*/
|
||||||
ret_code routing_add(routing_t *conf_buff)
|
ret_code routing_add(routing_t *conf_buff)
|
||||||
{
|
{
|
||||||
char string[STRING_LENGTH];
|
if(NULL == conf_buff)
|
||||||
|
{
|
||||||
|
return RET_EMPTY_STRING;
|
||||||
|
}
|
||||||
|
|
||||||
|
char string[STRING_LENGTH] = {0};
|
||||||
uint version_t = conf_buff->version;
|
uint version_t = conf_buff->version;
|
||||||
uint netmask_t = conf_buff->netmask;
|
uint netmask_t = conf_buff->netmask;
|
||||||
char route_type[10] = {0};
|
char route_type[10] = {0};
|
||||||
ret_code ret = RET_OK;
|
ret_code ret = RET_OK;
|
||||||
char *destip_t = conf_buff->destip;
|
char
*destip_t = conf_buff->destip;
|
||||||
char *gw_t = conf_buff->gateway;
|
char *gw_t = conf_buff->gateway;
|
||||||
char *dev_t = conf_buff->dev;
|
char *dev_t = conf_buff->dev;
|
||||||
|
|
||||||
int metric_t = conf_buff->metric;
|
int metric_t = conf_buff->metric;
|
||||||
int flag = 0;
|
int flag = 0;
|
||||||
|
|
||||||
|
@ -636,15 +677,13 @@ ret_code routing_add(routing_t *conf_buff)
|
||||||
|
|
||||||
rpc_log_info("flag: %d\n",flag);
|
rpc_log_info("flag: %d\n",flag);
|
||||||
|
|
||||||
memset(string, 0, sizeof(string));
|
|
||||||
|
|
||||||
if(version_t == IPV4_VERSION)
|
if(version_t == IPV4_VERSION)
|
||||||
{
|
{
|
||||||
if (netmask_t > 0 && netmask_t < 32)
|
if (netmask_t > IPV4_MIN_NETMASK && netmask_t < IPV4_MAX_NETMASK)
|
||||||
{
|
{
|
||||||
strcpy(route_type,"-net");
|
strcpy(route_type,"-net");
|
||||||
}
|
}
|
||||||
else if(netmask_t == 32)
|
else if(netmask_t == IPV4_MAX_NETMASK)
|
||||||
{
|
{
|
||||||
strcpy(route_type,"-host");
|
strcpy(route_type,"-host");
|
||||||
}
|
}
|
||||||
|
@ -655,15 +694,15 @@ ret_code routing_add(routing_t *conf_buff)
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (flag){
|
switch (flag){
|
||||||
case 1:
|
case BOTH_GW_AND_DEV:
|
||||||
sprintf(string,"route add %s %s/%d gw %s dev %s metric %d\n",route_type,destip_t,netmask_t,gw_t,dev_t,metric_t);
|
sprintf(string,"route add %s %s/%d gw %s dev %s metric %d\n",route_type,destip_t,netmask_t,gw_t,dev_t,metric_t);
|
||||||
ret = add_routing_exe(string);
|
ret = add_routing_exe(string);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case ONLY_GW:
|
||||||
sprintf(string,"route add %s %s/%d gw %s metric %d\n",route_type,destip_t,netmask_t,gw_t,metric_t);
|
sprintf(string,"route add %s %s/%d gw %s metric %d\n",route_type,destip_t,netmask_t,gw_t,metric_t);
|
||||||
ret = add_routing_exe(string);
|
ret = add_routing_exe(string);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case ONLY_DEV:
|
||||||
sprintf(string,"route add %s %s/%d dev %s metric %d\n",route_type,destip_t,netmask_t,dev_t,metric_t);
|
sprintf(string,"route add %s %s/%d dev %s metric %d\n",route_type,destip_t,netmask_t,dev_t,metric_t);
|
||||||
ret = add_routing_exe(string);
|
ret = add_routing_exe(string);
|
||||||
break;
|
break;
|
||||||
|
@ -675,15 +714,15 @@ ret_code routing_add(routing_t *conf_buff)
|
||||||
else if (version_t == IPV6_VERSION)
|
else if (version_t == IPV6_VERSION)
|
||||||
{
|
{
|
||||||
switch(flag){
|
switch(flag){
|
||||||
case 1:
|
case BOTH_GW_AND_DEV:
|
||||||
sprintf(string,"route -A inet6 add %s/%d gw %s dev %s metric %d\n",destip_t,netmask_t,gw_t,dev_t,metric_t);
|
sprintf(string,"route -A inet6 add %s/%d gw %s dev %s metric %d\n",destip_t,netmask_t,gw_t,dev_t,metric_t);
|
||||||
ret = add_routing_exe(string);
|
ret = add_routing_exe(string);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case ONLY_GW:
|
||||||
sprintf(string,"route -A inet6 add %s/%d gw %s metric %d\n",destip_t,netmask_t,gw_t,metric_t);
|
sprintf(string,"route -A inet6 add %s/%d gw %s metric %d\n",destip_t,netmask_t,gw_t,metric_t);
|
||||||
ret = add_routing_exe(string);
|
ret = add_routing_exe(string);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case ONLY_DEV:
|
||||||
sprintf(string,"route -A inet6 add %s/%d dev %s metric %d\n",destip_t,netmask_t,dev_t,metric_t);
|
sprintf(string,"route -A inet6 add %s/%d dev %s metric %d\n",destip_t,netmask_t,dev_t,metric_t);
|
||||||
ret = add_routing_exe(string);
|
ret = add_routing_exe(string);
|
||||||
break;
|
break;
|
||||||
|
@ -699,8 +738,13 @@ ret_code routing_add(routing_t *conf_buff)
|
||||||
|
|
||||||
ret_code routing_del(routing_t *conf_buff)
|
ret_code routing_del(routing_t *conf_buff)
|
||||||
{
|
{
|
||||||
char string[STRING_LENGTH];
|
if(NULL == conf_buff)
|
||||||
char string_del[STRING_LENGTH];
|
{
|
||||||
|
return RET_EMPTY_STRING;
|
||||||
|
}
|
||||||
|
|
||||||
|
char string[STRING_LENGTH] = {0};
|
||||||
|
char string_del[STRING_LENGTH] = {0};
|
||||||
uint version_t = conf_buff->version;
|
uint version_t = conf_buff->version;
|
||||||
uint netmask_t = conf_buff->netmask;
|
uint netmask_t = conf_buff->netmask;
|
||||||
char route_type[10] = {0};
|
char route_type[10] = {0};
|
||||||
|
@ -713,16 +757,13 @@ ret_code routing_del(routing_t *conf_buff)
|
||||||
|
|
||||||
judge_para(&flag,gw_t,dev_t);
|
judge_para(&flag,gw_t,dev_t);
|
||||||
|
|
||||||
memset(string, 0, sizeof(string));
|
|
||||||
memset(string_del, 0, sizeof(string_del));
|
|
||||||
|
|
||||||
if(version_t == IPV4_VERSION)
|
if(version_t == IPV4_VERSION)
|
||||||
{
|
{
|
||||||
if (netmask_t > 0 && netmask_t < 32)
|
if (netmask_t > IPV4_MIN_NETMASK && netmask_t < IPV4_MAX_NETMASK)
|
||||||
{
|
{
|
||||||
strcpy(route_type,"-net");
|
strcpy(route_type,"-net");
|
||||||
}
|
}
|
||||||
else if(netmask_t == 32)
|
else if(netmask_t == IPV4_MAX_NETMASK)
|
||||||
{
|
{
|
||||||
strcpy(route_type,"-host");
|
strcpy(route_type,"-host");
|
||||||
}
|
}
|
||||||
|
@ -732,17 +773,17 @@ ret_code routing_del(routing_t *conf_buff)
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (flag){
|
switch (flag){
|
||||||
case 1:
|
case BOTH_GW_AND_DEV:
|
||||||
sprintf(string,"route del %s %s/%d gw %s dev %s metric %d",route_type,destip_t,netmask_t,gw_t,dev_t,metric_t);
|
sprintf(string,"route del %s %s/%d gw %s dev %s metric %d",route_type,destip_t,netmask_t,gw_t,dev_t,metric_t);
|
||||||
sprintf(string_del,"route add %s %s/%d gw %s dev %s metric %d",route_type,destip_t,netmask_t,gw_t,dev_t,metric_t);
|
sprintf(string_del,"route add %s %s/%d gw %s dev %s metric %d",route_type,destip_t,netmask_t,gw_t,dev_t,metric_t);
|
||||||
ret = del_routing_exe(string,string_del);
|
ret = del_routing_exe(string,string_del);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case ONLY_GW:
|
||||||
sprintf(string,"route del %s %s/%d gw %s metric %d",route_type,destip_t,netmask_t,gw_t,metric_t);
|
sprintf(string,"route del %s %s/%d gw %s metric %d",route_type,destip_t,netmask_t,gw_t,metric_t);
|
||||||
sprintf(string_del,"route add %s %s/%d gw %s metric %d",route_type,destip_t,netmask_t,gw_t,metric_t);
|
sprintf(string_del,"route add %s %s/%d gw %s metric %d",route_type,destip_t,netmask_t,gw_t,metric_t);
|
||||||
ret = del_routing_exe(string,string_del);
|
ret = del_routing_exe(string,string_del);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case ONLY_DEV:
|
||||||
sprintf(string,"route del %s %s/%d dev %s metric %d",route_type,destip_t,netmask_t,dev_t,metric_t);
|
sprintf(string,"route del %s %s/%d dev %s metric %d",route_type,destip_t,netmask_t,dev_t,metric_t);
|
||||||
sprintf(string_del,"route add %s %s/%d dev %s metric %d",route_type,destip_t,netmask_t,dev_t,metric_t);
|
sprintf(string_del,"route add %s %s/%d dev %s metric %d",route_type,destip_t,netmask_t,dev_t,metric_t);
|
||||||
ret = del_routing_exe(string,string_del);
|
ret = del_routing_exe(string,string_del);
|
||||||
|
@ -754,18 +795,23 @@ ret_code routing_del(routing_t *conf_buff)
|
||||||
|
|
||||||
else if (version_t == IPV6_VERSION)
|
else if (version_t == IPV6_VERSION)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if (metric_t < 1)
|
||||||
|
{
|
||||||
|
return RET_METRIC_ERR;
|
||||||
|
}
|
||||||
switch(flag){
|
switch(flag){
|
||||||
case 1:
|
case BOTH_GW_AND_DEV:
|
||||||
sprintf(string,"route -A inet6 del %s/%d gw %s dev %s metric %d",destip_t,netmask_t,gw_t,dev_t,metric_t);
|
sprintf(string,"route -A inet6 del %s/%d gw %s dev %s metric %d",destip_t,netmask_t,gw_t,dev_t,metric_t);
|
||||||
sprintf(string_del,"route -A inet6 add %s/%d gw %s dev %s metric %d",destip_t,netmask_t,gw_t,dev_t,metric_t);
|
sprintf(string_del,"route -A inet6 add %s/%d gw %s dev %s metric %d",destip_t,netmask_t,gw_t,dev_t,metric_t);
|
||||||
ret = del_routing_exe(string,string_del);
|
ret = del_routing_exe(string,string_del);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case ONLY_GW:
|
||||||
sprintf(string,"route -A inet6 del %s/%d gw %s metric %d",destip_t,netmask_t,gw_t,metric_t);
|
sprintf(string,"route -A inet6 del %s/%d gw %s metric %d",destip_t,netmask_t,gw_t,metric_t);
|
||||||
sprintf(string_del,"route -A inet6 add %s/%d gw %s metric %d",destip_t,netmask_t,gw_t,metric_t);
|
sprintf(string_del,"route -A inet6 add %s/%d gw %s metric %d",destip_t,netmask_t,gw_t,metric_t);
|
||||||
ret = del_routing_exe(string,string_del);
|
ret = del_routing_exe(string,string_del);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case ONLY_DEV:
|
||||||
sprintf(string,"route -A inet6 del %s/%d dev %s metric %d",destip_t,netmask_t,dev_t,metric_t);
|
sprintf(string,"route -A inet6 del %s/%d dev %s metric %d",destip_t,netmask_t,dev_t,metric_t);
|
||||||
sprintf(string_del,"route -A inet6 add %s/%d dev %s metric %d",destip_t,netmask_t,dev_t,metric_t);
|
sprintf(string_del,"route -A inet6 add %s/%d dev %s metric %d",destip_t,netmask_t,dev_t,metric_t);
|
||||||
ret = del_routing_exe(string,string_del);
|
ret = del_routing_exe(string,string_del);
|
||||||
|
@ -783,7 +829,7 @@ ret_code get_all_from_file (pointer output, int *output_len)
|
||||||
{
|
{
|
||||||
int ret = RET_OK;
|
int ret = RET_OK;
|
||||||
FILE *f;
|
FILE *f;
|
||||||
char buff[LINE_MAX_LENGTH];
|
char buff[LINE_MAX_LENGTH] = {0};
|
||||||
int ipv4_count = 0;
|
int ipv4_count = 0;
|
||||||
int ipv6_count = 0;
|
int ipv6_count = 0;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
@ -797,8 +843,6 @@ ret_code get_all_from_file (pointer output, int *output_len)
|
||||||
char dev[INTERFACE_MAX_LENGTH] = {0};
|
char dev[INTERFACE_MAX_LENGTH] = {0};
|
||||||
int metric = 100;
|
int metric = 100;
|
||||||
|
|
||||||
rpc_log_info("check1\n");
|
|
||||||
|
|
||||||
f = fopen(STATIC_ROUTING_PATH,"r");
|
f = fopen(STATIC_ROUTING_PATH,"r");
|
||||||
|
|
||||||
if(NULL == f)
|
if(NULL == f)
|
||||||
|
@ -811,10 +855,10 @@ ret_code get_all_from_file (pointer output, int *output_len)
|
||||||
//buff_total = (routing_t *)malloc(ROUTING_TABLE_MAX_NUMBER*sizeof(routing_t));
|
//buff_total = (routing_t *)malloc(ROUTING_TABLE_MAX_NUMBER*sizeof(routing_t));
|
||||||
if(buff_total == NULL)
|
if(buff_total == NULL)
|
||||||
{
|
{
|
||||||
|
fclose(f);
|
||||||
return RET_EMPTY_STRING;
|
return RET_EMPTY_STRING;
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(buff,0,sizeof(buff));
|
|
||||||
memset(buff_total,0,sizeof(buff_total));
|
memset(buff_total,0,sizeof(buff_total));
|
||||||
|
|
||||||
fseek(f,0,SEEK_SET);
|
fseek(f,0,SEEK_SET);
|
||||||
|
@ -834,17 +878,23 @@ ret_code get_all_from_file (pointer output, int *output_len)
|
||||||
{
|
{
|
||||||
|
|
||||||
switch(flag){
|
switch(flag){
|
||||||
case 1:
|
case BOTH_GW_AND_DEV:
|
||||||
sscanf(buff,"%*s%*s%*s%*s%*s%*s%s%*s%s%*s%d",gateway,dev, &metric);
|
sscanf(buff,"%*s%*s%*s%*s%*s%*s%s%*s%s%*s%d",gateway,dev, &metric);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case ONLY_GW:
|
||||||
sscanf(buff,"%*s%*s%*s%*s%*s%*s%s%*s%d",gateway, &metric);
|
sscanf(buff,"%*s%*s%*s%*s%*s%*s%s%*s%d",gateway, &metric);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case ONLY_DEV:
|
||||||
sscanf(buff,"%*s%*s%*s%*s%*s%*s%s%*s%d",dev, &metric);
|
sscanf(buff,"%*s%*s%*s%*s%*s%*s%s%*s%d",dev, &metric);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ret = RET_ERR;
|
if(buff_total)
|
||||||
|
{
|
||||||
|
rpc_free(buff_total);
|
||||||
|
buff_total = NULL;
|
||||||
|
}
|
||||||
|
fclose(f);
|
||||||
|
return RET_ERR;
|
||||||
}
|
}
|
||||||
netmask = 0;
|
netmask = 0;
|
||||||
strcpy(destip,"::");
|
strcpy(destip,"::");
|
||||||
|
@ -854,17 +904,23 @@ ret_code get_all_from_file (pointer output, int *output_len)
|
||||||
{
|
{
|
||||||
|
|
||||||
switch(flag){
|
switch(flag){
|
||||||
case 1:
|
case BOTH_GW_AND_DEV:
|
||||||
sscanf(buff,"%*s%*s%*s%*s %[^/]/%d%*s%s%*s%s%*s%d",destip,&netmask,gateway,dev, &metric);
|
sscanf(buff,"%*s%*s%*s%*s %[^/]/%d%*s%s%*s%s%*s%d",destip,&netmask,gateway,dev, &metric);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case ONLY_GW:
|
||||||
sscanf(buff,"%*s%*s%*s%*s %[^/]/%d%*s%s%*s%d",destip,&netmask,gateway,&metric);
|
sscanf(buff,"%*s%*s%*s%*s %[^/]/%d%*s%s%*s%d",destip,&netmask,gateway,&metric);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case ONLY_DEV:
|
||||||
sscanf(buff,"%*s%*s%*s%*s %[^/]/%d%*s%s%*s%d",destip,&netmask,dev,&metric);
|
sscanf(buff,"%*s%*s%*s%*s %[^/]/%d%*s%s%*s%d",destip,&netmask,dev,&metric);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ret = RET_ERR;
|
if(buff_total)
|
||||||
|
{
|
||||||
|
rpc_free(buff_total);
|
||||||
|
buff_total = NULL;
|
||||||
|
}
|
||||||
|
fclose(f);
|
||||||
|
return RET_ERR;
|
||||||
}
|
}
|
||||||
ipv6_count++;
|
ipv6_count++;
|
||||||
}
|
}
|
||||||
|
@ -873,17 +929,23 @@ ret_code get_all_from_file (pointer output, int *output_len)
|
||||||
{
|
{
|
||||||
version = IPV4_VERSION;
|
version = IPV4_VERSION;
|
||||||
switch(flag){
|
switch(flag){
|
||||||
case 1:
|
case BOTH_GW_AND_DEV:
|
||||||
sscanf(buff,"%*s%*s%*s%*s%s%*s%s%*s%d",gateway,dev, &metric);
|
sscanf(buff,"%*s%*s%*s%*s%s%*s%s%*s%d",gateway,dev, &metric);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case ONLY_GW:
|
||||||
sscanf(buff,"%*s%*s%*s%*s%s%*s%d",gateway, &metric);
|
sscanf(buff,"%*s%*s%*s%*s%s%*s%d",gateway, &metric);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case ONLY_DEV:
|
||||||
sscanf(buff,"%*s%*s%*s%*s%s%*s%d",dev, &metric);
|
sscanf(buff,"%*s%*s%*s%*s%s%*s%d",dev, &metric);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ret = RET_ERR;
|
if(buff_total)
|
||||||
|
{
|
||||||
|
rpc_free(buff_total);
|
||||||
|
buff_total = NULL;
|
||||||
|
}
|
||||||
|
fclose(f);
|
||||||
|
return RET_ERR;
|
||||||
}
|
}
|
||||||
netmask = 0;
|
netmask = 0;
|
||||||
strcpy(destip,"0.0.0.0");
|
strcpy(destip,"0.0.0.0");
|
||||||
|
@ -894,17 +956,23 @@ ret_code get_all_from_file (pointer output, int *output_len)
|
||||||
{
|
{
|
||||||
version = IPV4_VERSION;
|
version = IPV4_VERSION;
|
||||||
switch(flag){
|
switch(flag){
|
||||||
case 1:
|
case BOTH_GW_AND_DEV:
|
||||||
sscanf(buff,"%*s%*s%*s %[^/]/%d%*s%s%*s%s%*s%d",destip,&netmask,gateway,dev, &metric);
|
sscanf(buff,"%*s%*s%*s %[^/]/%d%*s%s%*s%s%*s%d",destip,&netmask,gateway,dev, &metric);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case ONLY_GW:
|
||||||
sscanf(buff,"%*s%*s%*s %[^/]/%d%*s%s%*s%d",destip,&netmask,gateway,&metric);
|
sscanf(buff,"%*s%*s%*s %[^/]/%d%*s%s%*s%d",destip,&netmask,gateway,&metric);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case ONLY_DEV:
|
||||||
sscanf(buff,"%*s%*s%*s %[^/]/%d%*s%s%*s%d",destip,&netmask,dev,&metric);
|
sscanf(buff,"%*s%*s%*s %[^/]/%d%*s%s%*s%d",destip,&netmask,dev,&metric);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ret = RET_ERR;
|
if(buff_total)
|
||||||
|
{
|
||||||
|
rpc_free(buff_total);
|
||||||
|
buff_total = NULL;
|
||||||
|
}
|
||||||
|
fclose(f);
|
||||||
|
return RET_ERR;
|
||||||
}
|
}
|
||||||
ipv4_count++;
|
ipv4_count++;
|
||||||
}
|
}
|
||||||
|
@ -938,7 +1006,11 @@ ret_code get_all_from_file (pointer output, int *output_len)
|
||||||
fclose(f);
|
fclose(f);
|
||||||
ret = routing_to_json (count, buff_total, output, output_len);
|
ret = routing_to_json (count, buff_total, output, output_len);
|
||||||
|
|
||||||
rpc_free(buff_total);
|
if(buff_total)
|
||||||
|
{
|
||||||
|
rpc_free(buff_total);
|
||||||
|
buff_total = NULL;
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -947,8 +1019,8 @@ ret_code config_recovery()
|
||||||
{
|
{
|
||||||
ret_code ret = RET_OK;
|
ret_code ret = RET_OK;
|
||||||
FILE *f;
|
FILE *f;
|
||||||
char buff[LINE_MAX_LENGTH];
|
char buff[LINE_MAX_LENGTH] = {0};
|
||||||
char buff_total[LINE_MAX_LENGTH*ROUTING_TABLE_MAX_NUMBER];
|
char buff_total[LINE_MAX_LENGTH*ROUTING_TABLE_MAX_NUMBER] = {0};
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
f= fopen(STATIC_ROUTING_PATH,"r");
|
f= fopen(STATIC_ROUTING_PATH,"r");
|
||||||
|
@ -959,9 +1031,6 @@ ret_code config_recovery()
|
||||||
return RET_OPEN_FILE_ERR;
|
return RET_OPEN_FILE_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(buff,0,sizeof(buff));
|
|
||||||
memset(buff_total,0,sizeof(buff_total));
|
|
||||||
|
|
||||||
fseek(f,0,SEEK_SET);
|
fseek(f,0,SEEK_SET);
|
||||||
|
|
||||||
while (fgets(buff,sizeof(buff),f) != NULL)
|
while (fgets(buff,sizeof(buff),f) != NULL)
|
||||||
|
@ -1000,6 +1069,8 @@ ret_code config_recovery()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
next_while:
|
next_while:
|
||||||
if(fgetc(f) == EOF)
|
if(fgetc(f) == EOF)
|
||||||
{
|
{
|
||||||
|
@ -1020,14 +1091,19 @@ next_while:
|
||||||
/*检查输入的json参数,并且赋值到结构体*/
|
/*检查输入的json参数,并且赋值到结构体*/
|
||||||
ret_code routing_config_chk(uint source, uint *config_type,
|
ret_code routing_config_chk(uint source, uint *config_type,
|
||||||
pointer input, int *input_len,
|
pointer input, int *input_len,
|
||||||
pointer output, int *output_len){
|
pointer output, int *output_len)
|
||||||
|
{
|
||||||
|
if((NULL == config_type) || (NULL == input) || (NULL == input_len) || (NULL == output_len))
|
||||||
|
{
|
||||||
|
return RET_INPUTERR;
|
||||||
|
}
|
||||||
|
|
||||||
if(source == CONFIG_FROM_RECOVER1)
|
if(source == CONFIG_FROM_RECOVER1)
|
||||||
{
|
{
|
||||||
return RET_OK;
|
return RET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(source == CONFIG_FROM_RECOVER2)
|
if(source == CONFIG_FROM_RECOVER2)
|
||||||
{
|
{
|
||||||
return RET_CHKERR;
|
return RET_CHKERR;
|
||||||
}
|
}
|
||||||
|
@ -1059,6 +1135,7 @@ ret_code routing_config_chk(uint source, uint *config_type,
|
||||||
return RET_GW_DEV_ERR;
|
return RET_GW_DEV_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*判断IP和网关格式是否正确*/
|
||||||
else if(conf_buff->version == IPV4_VERSION)
|
else if(conf_buff->version == IPV4_VERSION)
|
||||||
{
|
{
|
||||||
int a = -1,b = -1,c = -1,d = -1;
|
int a = -1,b = -1,c = -1,d = -1;
|
||||||
|
@ -1127,12 +1204,16 @@ ret_code routing_config_proc(uint source, uint config_type,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
char string[STRING_LENGTH];
|
|
||||||
uint conf_type = config_type;
|
uint conf_type = config_type;
|
||||||
routing_t conf_buff = {0};
|
routing_t conf_buff = {0};
|
||||||
routing_t *routing_conf = &conf_buff;
|
routing_t *routing_conf = &conf_buff;
|
||||||
int flag = 0;
|
int flag = 0;
|
||||||
|
|
||||||
|
if(NULL == input)
|
||||||
|
{
|
||||||
|
return RET_INPUTERR;
|
||||||
|
}
|
||||||
|
|
||||||
routing_conf = (routing_t *)input;
|
routing_conf = (routing_t *)input;
|
||||||
|
|
||||||
rpc_log_info("routing info: config_type %d, version %d, destip %s, netmask %d, gateway %s, dev %s, metric %d\n",
|
rpc_log_info("routing info: config_type %d, version %d, destip %s, netmask %d, gateway %s, dev %s, metric %d\n",
|
||||||
|
@ -1182,7 +1263,12 @@ ret_code routing_config_proc(uint source, uint config_type,
|
||||||
ret_code routing_config_get_all(uint source,
|
ret_code routing_config_get_all(uint source,
|
||||||
pointer output, int *output_len){
|
pointer output, int *output_len){
|
||||||
|
|
||||||
if (source == CONFIG_FROM_RECOVER1 || source == CONFIG_FROM_RECOVER2)
|
if((NULL == output) || (NULL == output_len))
|
||||||
|
{
|
||||||
|
return RET_INPUTERR;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (source == CONFIG_FROM_RECOVER1 || source == CONFIG_FROM_RECOVER2)
|
||||||
{
|
{
|
||||||
return RET_OK;
|
return RET_OK;
|
||||||
}
|
}
|
||||||
|
@ -1191,14 +1277,11 @@ ret_code routing_config_get_all(uint source,
|
||||||
|
|
||||||
int ret = RET_OK;
|
int ret = RET_OK;
|
||||||
*output_len = 0;
|
*output_len = 0;
|
||||||
//int code = 0;
|
|
||||||
ret = get_all_from_file(output,output_len);
|
ret = get_all_from_file(output,output_len);
|
||||||
|
|
||||||
rpc_log_info("routing_config_get_all: %s\n", (char *)output);
|
rpc_log_info("routing_config_get_all: %s\n", (char *)output);
|
||||||
|
|
||||||
//RET_ERR_FORMART(ret, code, output, *output_len);
|
|
||||||
ASSERT_RET(ret);
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1213,7 +1296,10 @@ ret_code all_routing_config_chk(uint source, uint * config_type,
|
||||||
pointer input, int * input_len,
|
pointer input, int * input_len,
|
||||||
pointer output, int * output_len)
|
pointer output, int * output_len)
|
||||||
{
|
{
|
||||||
rpc_log_info("test check\n");
|
if((NULL == config_type) || (NULL == input) || (NULL == output_len))
|
||||||
|
{
|
||||||
|
return RET_INPUTERR;
|
||||||
|
}
|
||||||
|
|
||||||
ret_code ret = RET_OK;
|
ret_code ret = RET_OK;
|
||||||
routing_t routing_buff = {0};
|
routing_t routing_buff = {0};
|
||||||
|
@ -1248,14 +1334,20 @@ ret_code all_routing_config_chk(uint source, uint * config_type,
|
||||||
ret_code all_routing_get_all(uint source,
|
ret_code all_routing_get_all(uint source,
|
||||||
pointer output, int *output_len)
|
pointer output, int *output_len)
|
||||||
{
|
{
|
||||||
FILE *f;
|
|
||||||
|
if((NULL == output) || (NULL == output_len))
|
||||||
|
{
|
||||||
|
return RET_INPUTERR;
|
||||||
|
}
|
||||||
|
|
||||||
|
FILE *f;
|
||||||
ret_code ret = RET_OK;
|
ret_code ret = RET_OK;
|
||||||
routing_t *conf_buff;
|
routing_t *conf_buff;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
int ipv4_number = 0;
|
int ipv4_number = 0;
|
||||||
int ipv6_number = 0;
|
int ipv6_number = 0;
|
||||||
int status;
|
int status;
|
||||||
char temp_buff[LINE_MAX_LENGTH];
|
char temp_buff[LINE_MAX_LENGTH] = {0};
|
||||||
char destip[IP_MAX_LENGTH] = {0};
|
char destip[IP_MAX_LENGTH] = {0};
|
||||||
char gateway[IP_MAX_LENGTH] = {0};
|
char gateway[IP_MAX_LENGTH] = {0};
|
||||||
char gateway_new[IP_MAX_LENGTH] = {0};
|
char gateway_new[IP_MAX_LENGTH] = {0};
|
||||||
|
@ -1274,7 +1366,6 @@ ret_code all_routing_get_all(uint source,
|
||||||
|
|
||||||
conf_buff = rpc_new0(routing_t,ROUTING_TABLE_MAX_NUMBER);
|
conf_buff = rpc_new0(routing_t,ROUTING_TABLE_MAX_NUMBER);
|
||||||
memset(conf_buff,0,sizeof(conf_buff));
|
memset(conf_buff,0,sizeof(conf_buff));
|
||||||
memset(temp_buff,0,LINE_MAX_LENGTH);
|
|
||||||
|
|
||||||
fseek(f,0,SEEK_SET);
|
fseek(f,0,SEEK_SET);
|
||||||
|
|
||||||
|
@ -1325,6 +1416,8 @@ next_while:
|
||||||
|
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
f = popen(IPV6_GET_STATIC_ROUTING,"r");
|
f = popen(IPV6_GET_STATIC_ROUTING,"r");
|
||||||
if (NULL == f)
|
if (NULL == f)
|
||||||
{
|
{
|
||||||
|
@ -1353,7 +1446,8 @@ next_while:
|
||||||
sscanf(temp_buff,"%[^/]/%d %s %*s %d %*s %*s %s",destip,&netmask_int,gateway,&metric,dev);
|
sscanf(temp_buff,"%[^/]/%d %s %*s %d %*s %*s %s",destip,&netmask_int,gateway,&metric,dev);
|
||||||
rpc_log_info("check 5 after sscanf\n");
|
rpc_log_info("check 5 after sscanf\n");
|
||||||
rpc_log_info("check 6: destip %s gateway %s netmask %d metric %d dev %s\n",destip,gateway,netmask_int,metric,dev);
|
rpc_log_info("check 6: destip %s gateway %s netmask %d metric %d dev %s\n",destip,gateway,netmask_int,metric,dev);
|
||||||
if(metric > 0)
|
|
||||||
|
if(metric > 0)
|
||||||
{
|
{
|
||||||
sscanf(gateway,"[%[^]]",gateway_new);
|
sscanf(gateway,"[%[^]]",gateway_new);
|
||||||
conf_buff[count].version = 6;
|
conf_buff[count].version = 6;
|
||||||
|
@ -1403,11 +1497,11 @@ next_while:
|
||||||
|
|
||||||
rpc_log_info("routing_config_get_all: %s\n", (char *)output);
|
rpc_log_info("routing_config_get_all: %s\n", (char *)output);
|
||||||
|
|
||||||
|
if(conf_buff)
|
||||||
|
{
|
||||||
rpc_free(conf_buff);
|
rpc_free(conf_buff);
|
||||||
|
conf_buff = NULL;
|
||||||
//RET_ERR_FORMART(ret, code, output, *output_len);
|
}
|
||||||
ASSERT_RET(ret);
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue