MOD aaa-12 桥模型代码上传
SOL 桥模型代码上传 修改人:zhangliang 检视人:zhangliang
This commit is contained in:
parent
4605b9665c
commit
2c5869c627
|
@ -244,6 +244,43 @@ int br_if_bridge_num(char *br_name)
|
|||
return cnt;
|
||||
}
|
||||
|
||||
ret_code br_bridge_add(char * br_name, int *sys_err)
|
||||
{
|
||||
br_event_t event_arg = {br_name, NULL};
|
||||
int sys_ret = 0;
|
||||
|
||||
sys_ret = br_add_bridge(br_name);
|
||||
*sys_err = sys_ret;
|
||||
|
||||
if(sys_ret != 0)
|
||||
{
|
||||
return RET_SYSERR;
|
||||
}
|
||||
|
||||
br_invoke_event(BR_CREATE_EVENT, event_arg);
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
ret_code br_bridge_del(char * br_name, int *sys_err)
|
||||
{
|
||||
br_event_t event_arg = {br_name, NULL};
|
||||
int sys_ret = 0;
|
||||
|
||||
sys_ret = br_del_bridge(br_name);
|
||||
*sys_err = sys_ret;
|
||||
|
||||
if(sys_ret != 0)
|
||||
{
|
||||
return RET_SYSERR;
|
||||
}
|
||||
|
||||
br_invoke_event(BR_DELETE_EVENT, event_arg);
|
||||
|
||||
return RET_OK;
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -464,7 +501,6 @@ ret_code br_config_proc(uint source, uint config_type,
|
|||
pointer input, int input_len,
|
||||
pointer output, int *output_len)
|
||||
{
|
||||
BR_EVENT_TYPE event_type = BR_EVENT_INVALID;
|
||||
ret_code ret = RET_OK;
|
||||
int sys_ret = 0;
|
||||
char *br_name;
|
||||
|
@ -473,27 +509,15 @@ ret_code br_config_proc(uint source, uint config_type,
|
|||
|
||||
if(config_type == CM_CONFIG_ADD)
|
||||
{
|
||||
sys_ret = br_add_bridge(br_name);
|
||||
event_type = BR_CREATE_EVENT;
|
||||
ret = br_bridge_add(br_name, &sys_ret);
|
||||
}
|
||||
else if(config_type == CM_CONFIG_DEL)
|
||||
{
|
||||
sys_ret = br_del_bridge(br_name);
|
||||
event_type = BR_DELETE_EVENT;
|
||||
|
||||
ret = br_bridge_del(br_name, &sys_ret);
|
||||
}
|
||||
|
||||
if(sys_ret != 0)
|
||||
{
|
||||
ret = RET_SYSERR;
|
||||
RET_ERR_FORMART(ret, sys_ret, output, *output_len);
|
||||
return ret;
|
||||
}
|
||||
|
||||
if(event_type != BR_EVENT_INVALID)
|
||||
{
|
||||
br_event_t event_arg = {br_name, NULL};
|
||||
br_invoke_event(event_type, event_arg);
|
||||
}
|
||||
RET_ERR_FORMART(ret, sys_ret, output, *output_len);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -857,8 +881,8 @@ int br_fdb_to_json_string(br_fdb_status_t *fdb_status, char *output)
|
|||
|
||||
#ifndef DESC("桥FDB表配置钩子函数")
|
||||
ret_code br_fdb_config_chk(uint source,uint *config_type,
|
||||
pointer input, int *input_len,
|
||||
pointer output, int *output_len)
|
||||
pointer input, int *input_len,
|
||||
pointer output, int *output_len)
|
||||
{
|
||||
ret_code ret = RET_OK;
|
||||
br_fdb_config_t br_fdb = {0};
|
||||
|
@ -891,8 +915,8 @@ ret_code br_fdb_config_chk(uint source,uint *config_type,
|
|||
}
|
||||
|
||||
ret_code br_fdb_config_get(uint source,
|
||||
pointer input, int input_len,
|
||||
pointer output, int *output_len)
|
||||
pointer input, int input_len,
|
||||
pointer output, int *output_len)
|
||||
{
|
||||
br_fdb_status_t *fdb_status;
|
||||
br_fdb_config_t *br_fdb;
|
||||
|
|
|
@ -26,6 +26,132 @@ int conf_file_write(char *conf_path, char *sum_buf)
|
|||
return RET_OK;
|
||||
}
|
||||
|
||||
/* 设置指定配置块中的配置 */
|
||||
int conf_value_in_block_get(char *conf_path,
|
||||
char *start_str, char *end_str,
|
||||
char *conf_name, char *conf_buff)
|
||||
{
|
||||
char config_linebuf[IF_BUFF_LEN];
|
||||
boolean next_flag = FALSE;
|
||||
char *start_line = NULL;
|
||||
FILE *f;
|
||||
|
||||
f = fopen(conf_path,"r+");
|
||||
if(f == NULL)
|
||||
{
|
||||
rpc_log_error("OPEN CONFIG %s FALID\n", conf_path);
|
||||
return RET_ERR;
|
||||
}
|
||||
|
||||
fseek(f, 0, SEEK_SET);
|
||||
|
||||
memset(config_linebuf, 0, sizeof(config_linebuf));
|
||||
|
||||
while(fgets(config_linebuf, IF_BUFF_LEN, f) != NULL)
|
||||
{
|
||||
/* 该做的事情已经做完 */
|
||||
if(next_flag == TRUE)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
/* 判断是否是空行 */
|
||||
if(strlen(config_linebuf) < 3)
|
||||
{
|
||||
goto next_while;
|
||||
}
|
||||
|
||||
/* 没有找到配置块,则继续循环 */
|
||||
if(start_line == NULL)
|
||||
{
|
||||
start_line = strstr(config_linebuf, start_str);
|
||||
goto next_while;
|
||||
}
|
||||
|
||||
/* 配置块结束 */
|
||||
if(strstr(config_linebuf, end_str))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if(strstr(config_linebuf, conf_name))
|
||||
{
|
||||
next_flag = TRUE;
|
||||
strncpy(conf_buff, config_linebuf, IF_BUFF_LEN);
|
||||
break;
|
||||
}
|
||||
|
||||
next_while:
|
||||
if(fgetc(f)==EOF)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
fseek(f,-1,SEEK_CUR);
|
||||
|
||||
memset(config_linebuf, 0, sizeof(config_linebuf));
|
||||
}
|
||||
|
||||
|
||||
fclose(f);
|
||||
|
||||
|
||||
if(next_flag == TRUE)
|
||||
{
|
||||
rpc_log_dbg("---get_buf---->%s<----------\n",conf_buff);
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
|
||||
return RET_NOTFOUND;
|
||||
}
|
||||
|
||||
/* 设置指定配置块中的配置 */
|
||||
int conf_value_in_block_exist(char *conf_path, char *conf_buff)
|
||||
{
|
||||
char config_linebuf[IF_BUFF_LEN];
|
||||
boolean next_flag = FALSE;
|
||||
char *start_line = NULL;
|
||||
FILE *f;
|
||||
|
||||
f = fopen(conf_path,"r+");
|
||||
if(f == NULL)
|
||||
{
|
||||
rpc_log_error("OPEN CONFIG %s FALID\n", conf_path);
|
||||
return RET_ERR;
|
||||
}
|
||||
|
||||
fseek(f, 0, SEEK_SET);
|
||||
|
||||
memset(config_linebuf, 0, sizeof(config_linebuf));
|
||||
|
||||
while(fgets(config_linebuf, IF_BUFF_LEN, f) != NULL)
|
||||
{
|
||||
|
||||
if(strstr(config_linebuf, conf_buff))
|
||||
{
|
||||
next_flag = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
memset(config_linebuf, 0, sizeof(config_linebuf));
|
||||
}
|
||||
|
||||
|
||||
fclose(f);
|
||||
|
||||
|
||||
if(next_flag == TRUE)
|
||||
{
|
||||
rpc_log_dbg("---get_buf---->%s<----------\n",conf_buff);
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
|
||||
return RET_NOTFOUND;
|
||||
}
|
||||
|
||||
|
||||
/* 设置指定配置块中的配置 */
|
||||
int conf_value_in_block_set(char *conf_path,
|
||||
char *start_str, char *end_str,
|
||||
|
@ -236,6 +362,88 @@ int conf_value_in_block_del(char *conf_path, char *start_str,
|
|||
return conf_file_write(conf_path, sum_buf);
|
||||
}
|
||||
|
||||
/* 设置指定配置块中的配置 */
|
||||
int conf_value_block_add(char *conf_path, char *conf_buff)
|
||||
{
|
||||
char config_linebuf[IF_BUFF_LEN];
|
||||
int configbuf_lenth = strlen(conf_buff) + 5;
|
||||
long config_lenth = 0;
|
||||
boolean next_flag = FALSE;
|
||||
FILE *f;
|
||||
|
||||
f = fopen(conf_path,"r+");
|
||||
if(f == NULL)
|
||||
{
|
||||
rpc_log_error("OPEN CONFIG %s FALID\n", conf_path);
|
||||
return RET_ERR;
|
||||
}
|
||||
|
||||
fseek(f, 0, SEEK_END);
|
||||
|
||||
config_lenth = ftell(f);
|
||||
|
||||
char sum_buf[config_lenth + configbuf_lenth];
|
||||
|
||||
memset(sum_buf, 0, sizeof(sum_buf));
|
||||
|
||||
fseek(f, 0, SEEK_SET);
|
||||
|
||||
memset(config_linebuf, 0, sizeof(config_linebuf));
|
||||
|
||||
while(fgets(config_linebuf, IF_BUFF_LEN, f) != NULL)
|
||||
{
|
||||
/* 该做的事情已经做完 */
|
||||
if(next_flag == TRUE)
|
||||
{
|
||||
strcat(sum_buf, config_linebuf);
|
||||
goto next_while;
|
||||
}
|
||||
|
||||
/* 判断是否是空行 */
|
||||
if(strlen(config_linebuf) < 3)
|
||||
{
|
||||
strcat(sum_buf, config_linebuf);
|
||||
goto next_while;
|
||||
}
|
||||
|
||||
/* 找到配置块,则继续循环 */
|
||||
if(strstr(config_linebuf, conf_buff))
|
||||
{
|
||||
next_flag = TRUE;
|
||||
strcat(sum_buf, config_linebuf);
|
||||
break;
|
||||
}
|
||||
|
||||
strcat(sum_buf, config_linebuf);
|
||||
|
||||
next_while:
|
||||
if(fgetc(f)==EOF)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
fseek(f,-1,SEEK_CUR);
|
||||
|
||||
memset(config_linebuf, 0, sizeof(config_linebuf));
|
||||
}
|
||||
|
||||
fclose(f);
|
||||
|
||||
rpc_log_dbg("---sum_buf---->%s<----------\n",sum_buf);
|
||||
|
||||
/* 整个配置块都没有,则新创建该配置块 */
|
||||
if( next_flag == FALSE )
|
||||
{
|
||||
strcat(sum_buf, conf_buff);
|
||||
strcat(sum_buf, "\n\n");
|
||||
remove(conf_path);
|
||||
|
||||
return conf_file_write(conf_path, sum_buf);
|
||||
}
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
int conf_value_block_del(char *conf_path, char *start_str, char *end_str)
|
||||
{
|
||||
char config_linebuf[IF_BUFF_LEN];
|
||||
|
@ -321,6 +529,64 @@ int conf_value_block_del(char *conf_path, char *start_str, char *end_str)
|
|||
return conf_file_write(conf_path, sum_buf);
|
||||
}
|
||||
|
||||
/* 增加接口配置块 */
|
||||
void if_conf_file_add(char *if_name)
|
||||
{
|
||||
char auto_str[IF_BUFF_LEN] = {0};
|
||||
|
||||
sprintf(auto_str, "auto %s", if_name);
|
||||
|
||||
conf_value_block_add(IFCONFIG_PATH, auto_str);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/* 删除整个接口配置块 */
|
||||
void if_conf_file_del(char *if_name)
|
||||
{
|
||||
char auto_str[IF_BUFF_LEN] = {0};
|
||||
|
||||
sprintf(auto_str, "auto %s", if_name);
|
||||
|
||||
conf_value_block_del(IFCONFIG_PATH, auto_str, "auto");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/* 设置接口中的配置 */
|
||||
void if_conf_file_set(char *if_name, char *conf_name, char *conf_buff)
|
||||
{
|
||||
char auto_str[IF_BUFF_LEN] = {0};
|
||||
|
||||
sprintf(auto_str, "auto %s", if_name);
|
||||
|
||||
conf_value_in_block_set(IFCONFIG_PATH, auto_str, "auto", conf_name, conf_buff);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/* 获取接口中的配置 */
|
||||
void if_conf_file_get(char *if_name, char *conf_name, char *conf_buff)
|
||||
{
|
||||
char auto_str[IF_BUFF_LEN] = {0};
|
||||
|
||||
sprintf(auto_str, "auto %s", if_name);
|
||||
|
||||
conf_value_in_block_get(IFCONFIG_PATH, auto_str, "auto", conf_name, conf_buff);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
ret_code if_conf_file_exist(char *if_name, char *conf_buff)
|
||||
{
|
||||
char auto_str[IF_BUFF_LEN] = {0};
|
||||
|
||||
sprintf(auto_str, "auto %s", if_name);
|
||||
|
||||
return conf_value_in_block_exist(IFCONFIG_PATH, auto_str);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*添加修改文件(当配置文件中存在标记字段,则进行修改,若不存在则进行添加)
|
||||
*
|
||||
|
@ -362,4 +628,3 @@ void ip_conf_file_del(char *if_name, char *conf_buff)
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue