Mod aaa-12 修改用户管理-配置文件的范围及输出格式

RCA:
SOL:
修改人:chenling
检视人:
This commit is contained in:
ChenLing 2019-09-09 20:01:48 +08:00
parent dc1adfece7
commit 341f77d29f
6 changed files with 273 additions and 23 deletions

View File

@ -35,7 +35,7 @@ int authparInit()
memset(auth_para, 0, sizeof(auth_parameters_t)); memset(auth_para, 0, sizeof(auth_parameters_t));
/*设置默认值*/ /*设置默认值*/
auth_para->port = 8080; auth_para->port = 8081;
auth_para->timehorizon = 1; auth_para->timehorizon = 1;
auth_para->failcount = 5; auth_para->failcount = 5;
auth_para->locktime = 10; auth_para->locktime = 10;
@ -303,6 +303,41 @@ ret_code authpara_config_mod_proc(uint source, uint config_type,
return RET_INPUTERR; return RET_INPUTERR;
} }
/*判断认证范围是否有效*/
if((auth_parameters->timehorizon < HORIZON_MIN_VALUE) || (auth_parameters->timehorizon > HORIZON_MAX_VALUE)) {
free(auth_parameters);
printf("timehorizon is not vaild\n");
return RET_INPUTERR;
}
/*判断认证失败次数是否有效*/
if((auth_parameters->failcount < FAIL_MIN_NUM) || (auth_parameters->timehorizon > FAIL_MAX_NUM)) {
free(auth_parameters);
printf("failcount is not vaild\n");
return RET_INPUTERR;
}
/*判断锁定次数是否有效*/
if((auth_parameters->locktime < LOCK_MIN_TIME) || (auth_parameters->locktime > LOCK_MAX_TIME)) {
free(auth_parameters);
printf("locktime is not vaild\n");
return RET_INPUTERR;
}
/*判断老化时间是否有效*/
if((auth_parameters->aging_time < AGINGTIME_MIN_NUM) || (auth_parameters->aging_time > AGINGTIME_MAX_NUM)) {
free(auth_parameters);
printf("aging_time is not vaild\n");
return RET_INPUTERR;
}
/*校验端口号*/
if((auth_parameters->port < PARA_DPORT_MIN_NUM) || (auth_parameters->port > PARA_DPORT_MAX_NUM)) {
free(auth_parameters);
printf("the port is error\n");
return RET_IPINVALID;
}
/*判断端口号是否占用*/ /*判断端口号是否占用*/
portresult = _valid_port(auth_parameters->port); portresult = _valid_port(auth_parameters->port);
printf("portresult:%d\n", portresult); printf("portresult:%d\n", portresult);

View File

@ -10,9 +10,16 @@
#include <net/if.h> #include <net/if.h>
#include "rpc_common.h" #include "rpc_common.h"
#define FAIL_MIN_NUM 0 /*失败次数的最小值*/ #define FAIL_MIN_NUM 1 /*失败次数的最小值*/
#define LOCK_MIN_TIME 0 /*锁定的最小时间 */ #define FAIL_MAX_NUM 10000 /*失败次数的最大值*/
#define HORIZON_MIN_VALUE 0 /*认证时间范围的最小值 */ #define LOCK_MIN_TIME 1 /*锁定的最小时间 */
#define LOCK_MAX_TIME 10000 /*锁定的最大时间 */
#define HORIZON_MIN_VALUE 1 /*认证时间范围的最小值 */
#define HORIZON_MAX_VALUE 10000 /*认证时间范围的最大值 */
#define AGINGTIME_MIN_NUM 1 /*老化时间的最小值*/
#define AGINGTIME_MAX_NUM 10000 /*老化时间的最大值*/
#define PARA_DPORT_MIN_NUM 1024
#define PARA_DPORT_MAX_NUM 65535
#define AUTHPARA_CONFIG_MOD 0 #define AUTHPARA_CONFIG_MOD 0
#define AUTHPARA_CONFIG_GET 1 #define AUTHPARA_CONFIG_GET 1

View File

@ -26,7 +26,7 @@ int rule_order[RULE_MAX_NUM] = {0};
#define CFG_FREEAUTH_ACK_COOKIES #define CFG_FREEAUTH_ACK_COOKIES
#endif #endif
#if 0
/* 判断IPv4格式是否正确*/ /* 判断IPv4格式是否正确*/
int isIpV4Addr(const char *ipAddr) int isIpV4Addr(const char *ipAddr)
{ {
@ -42,6 +42,34 @@ int isIpV4Addr(const char *ipAddr)
return -1; return -1;
} }
#endif
/* 判断IPv4格式是否正确*/
int isIpV4Addr(const char *ipAddr)
{
int ip_part_1 = 0;
int ip_part_2 = 0;
int ip_part_3 = 0;
int ip_part_4 = 0;
if((NULL == ipAddr) || (0 == strlen(ipAddr)))
{
return 1;
}
if(4 == sscanf(ipAddr,"%d.%d.%d.%d", &ip_part_1, &ip_part_2, &ip_part_3, &ip_part_4))
{
if((ip_part_1 >= 0) && (ip_part_1 < 255) &&
(ip_part_2 >= 0) && (ip_part_2 < 255) &&
(ip_part_3 >= 0) && (ip_part_3 < 255) &&
(ip_part_4 >= 0) && (ip_part_4 < 255))
{
return 0;
}
}
return 1;
}
/*下发配置到内核态 */ /*下发配置到内核态 */
int set_freeauthcfg_waitack(freeauth_configure_t *struct_freeauth) int set_freeauthcfg_waitack(freeauth_configure_t *struct_freeauth)
@ -215,7 +243,7 @@ ret_code freeauth_mov_json_parse(pointer input, uint *conf_type, rule_mod_t *rul
} }
/*json字符串转为结构体*/ /*json字符串转为结构体*/
/*iuput格式{"type": 0, "data": {"rule_priority": 1, "name": "armink","sip": 1027824,"dip": 103427824,"dport": 24, "flag":0}}*/ /*iuput格式{"type": 0, "data": {"rule_priority": 1, "name": "armink","sip": "192.168.1.1","dip": "192.168.2.100","dport": 24, "flag":0}}*/
ret_code freeauth_config_json_parse(pointer input, uint *conf_type, freeauth_configure_t *freeauth_buff) ret_code freeauth_config_json_parse(pointer input, uint *conf_type, freeauth_configure_t *freeauth_buff)
{ {
const char *pString = (char *)input; const char *pString = (char *)input;
@ -254,7 +282,7 @@ ret_code freeauth_config_json_parse(pointer input, uint *conf_type, freeauth_con
} }
/*创建freeauth_configure_t结构体对象 */ /*创建freeauth_configure_t结构体对象 */
s2j_create_struct_obj(struct_freeauth, freeauth_configure_t); s2j_create_struct_obj(struct_freeauth, freeauth_configure_json_t);
if(struct_freeauth == NULL) { if(struct_freeauth == NULL) {
cJSON_Delete(cjson); cJSON_Delete(cjson);
@ -264,8 +292,8 @@ ret_code freeauth_config_json_parse(pointer input, uint *conf_type, freeauth_con
/*反序列化数据到freeauth_configure_t结构体对象 */ /*反序列化数据到freeauth_configure_t结构体对象 */
s2j_struct_get_basic_element(struct_freeauth, data, int, rule_priority); s2j_struct_get_basic_element(struct_freeauth, data, int, rule_priority);
s2j_struct_get_basic_element(struct_freeauth, data, string, name); s2j_struct_get_basic_element(struct_freeauth, data, string, name);
s2j_struct_get_basic_element(struct_freeauth, data, int, sip); s2j_struct_get_basic_element(struct_freeauth, data, string, sip);
s2j_struct_get_basic_element(struct_freeauth, data, int, dip); s2j_struct_get_basic_element(struct_freeauth, data, string, dip);
s2j_struct_get_basic_element(struct_freeauth, data, int, dport); s2j_struct_get_basic_element(struct_freeauth, data, int, dport);
s2j_struct_get_basic_element(struct_freeauth, data, int, flag); s2j_struct_get_basic_element(struct_freeauth, data, int, flag);
@ -273,8 +301,8 @@ ret_code freeauth_config_json_parse(pointer input, uint *conf_type, freeauth_con
memset(freeauth_buff, 0, sizeof(freeauth_configure_t)); memset(freeauth_buff, 0, sizeof(freeauth_configure_t));
freeauth_buff->rule_priority = struct_freeauth->rule_priority; freeauth_buff->rule_priority = struct_freeauth->rule_priority;
strncpy(freeauth_buff->name, struct_freeauth->name, 31); strncpy(freeauth_buff->name, struct_freeauth->name, 31);
freeauth_buff->sip = struct_freeauth->sip; inet_pton(AF_INET, struct_freeauth->sip, &freeauth_buff->sip); /*点分十进制-十进制*/
freeauth_buff->dip = struct_freeauth->dip; inet_pton(AF_INET, struct_freeauth->dip, &freeauth_buff->dip);
freeauth_buff->dport = struct_freeauth->dport; freeauth_buff->dport = struct_freeauth->dport;
freeauth_buff->flag = struct_freeauth->flag; freeauth_buff->flag = struct_freeauth->flag;
} }
@ -291,9 +319,9 @@ ret_code freeauth_config_json_parse(pointer input, uint *conf_type, freeauth_con
{ {
"type": 0, "type": 0,
"data": [ "data": [
{"rule_priority": 1,"name": "cary","sip": 2323790,"dip": 13546465478,"dport": 120, "flag":0}, {"rule_priority": 1,"name": "cary","sip": "192.168.1.1","dip": "192.168.5.1","dport": 120, "flag":0},
{"rule_priority": 2,"name": "nicole","sip": 2323790,"dip": 13546465478,"dport": 130, "flag":0}, {"rule_priority": 2,"name": "nicole","sip": "192.168.1.1","dip": "192.168.5.1","dport": 130, "flag":0},
{"rule_priority": 3,"name": "arwrgmink","sip": 2323790,"dip": 13546465478,"dport": 90, "flag":0} {"rule_priority": 3,"name": "arwrgmink","sip": "192.168.1.1","dip": "192.168.5.1","dport": 90, "flag":0}
] ]
} }
*/ */
@ -361,14 +389,16 @@ ret_code authfree_config_json_parse_array(pointer input, uint *conf_type, freeau
sip = cJSON_GetObjectItem(pArrayItem, "sip"); sip = cJSON_GetObjectItem(pArrayItem, "sip");
if(sip) { if(sip) {
freeauth_buff->sip = sip->valueint; /*点分十进制转为十进制 192.168.1.1 12675138*/
inet_pton(AF_INET, sip->valuestring, &freeauth_buff->sip);
} }
/*目的IP地址*/ /*目的IP地址*/
dip = cJSON_GetObjectItem(pArrayItem, "dip"); dip = cJSON_GetObjectItem(pArrayItem, "dip");
if(dip) { if(dip) {
freeauth_buff->dip = dip->valueint; /*点分十进制转为十进制 192.168.1.1 12675138*/
inet_pton(AF_INET, dip->valuestring, &freeauth_buff->dip);
} }
/*目的端口号*/ /*目的端口号*/
@ -433,6 +463,8 @@ ret_code freeauth_config_add_proc(uint source, uint config_type,
char *ret_char = NULL; char *ret_char = NULL;
unsigned int ret_int = 0; unsigned int ret_int = 0;
authfree_result_t authfree_result; authfree_result_t authfree_result;
char str[INET_ADDRSTRLEN];
char dtr[INET_ADDRSTRLEN];
freeauth_configure = (freeauth_configure_t *)malloc(sizeof(freeauth_configure_t)); freeauth_configure = (freeauth_configure_t *)malloc(sizeof(freeauth_configure_t));
@ -450,7 +482,6 @@ ret_code freeauth_config_add_proc(uint source, uint config_type,
return RET_INPUTERR; return RET_INPUTERR;
} }
/* 校验用户名中不含特殊字符 */ /* 校验用户名中不含特殊字符 */
if(SPECHAR(freeauth_configure->name)) { if(SPECHAR(freeauth_configure->name)) {
free(freeauth_configure); free(freeauth_configure);
@ -458,11 +489,31 @@ ret_code freeauth_config_add_proc(uint source, uint config_type,
return RET_INPUTERR; return RET_INPUTERR;
} }
memset(str, 0, INET_ADDRSTRLEN);
inet_ntop(AF_INET,&freeauth_configure->sip, str, sizeof(str));
printf("%s\n", str);
/*校验源ip地址*/
if(1 == isIpV4Addr(str)) {
free(freeauth_configure);
printf("sip is not vaild\n");
return RET_INPUTERR;
}
memset(dtr, 0, INET_ADDRSTRLEN);
inet_ntop(AF_INET,&freeauth_configure->dip, dtr, sizeof(dtr));
/*校验目的ip地址*/
if(1 == isIpV4Addr(dtr)) {
free(freeauth_configure);
printf("dip is not vaild\n");
return RET_INPUTERR;
}
/*校验端口号*/ /*校验端口号*/
if((freeauth_configure->dport < DPORT_MIN_NUM) || (freeauth_configure->dport > DPORT_MAX_NUM)) { if((freeauth_configure->dport < DPORT_MIN_NUM) || (freeauth_configure->dport > DPORT_MAX_NUM)) {
free(freeauth_configure); free(freeauth_configure);
printf("the port is error\n"); printf("the port is not vaild\n");
return RET_IPINVALID; return RET_IPINVALID;
} }
@ -587,9 +638,30 @@ ret_code freeauth_config_mov_proc(uint source, uint config_type,
unsigned int ret_int = 0; unsigned int ret_int = 0;
cJSON *pJsonArry, *pJsonsub; cJSON *pJsonArry, *pJsonsub;
rule_mod = (rule_mod_t *)malloc(sizeof(rule_mod_t));
if(rule_mod == NULL) {
return RET_NOMEM;
}
freeauth_mov_json_parse(input, &conf_type, rule_mod); freeauth_mov_json_parse(input, &conf_type, rule_mod);
printf("%s %d\n", rule_mod->name, rule_mod->after); printf("%s %d\n", rule_mod->name, rule_mod->after);
/*判断一些目前全局变量存的数量 移动的数需要约束*/
for(i = 0; i < RULE_MAX_NUM; i++) {
printf("the name is :%s\n", freeauth_array[i].name);
if(0 == strlen(freeauth_array[i].name)) {
printf("[%d]\n", i);
if ((rule_mod->after > i) || (rule_mod->after < 0))
{
printf("mov number is not vaild");
return RET_ERR;
}
break;
}
}
if(input_len < sizeof(rule_mod_t)) { if(input_len < sizeof(rule_mod_t)) {
return RET_INPUTERR; return RET_INPUTERR;
} }
@ -645,6 +717,7 @@ ret_code freeauth_config_mov_proc(uint source, uint config_type,
} }
} }
/*单个删除、批量删除*/
ret_code freeauth_config_del_proc(uint source, uint config_type, ret_code freeauth_config_del_proc(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)
@ -868,13 +941,21 @@ ret_code freeauth_config_get_proc(uint source, uint config_type,
for(i = 0; i < RULE_MAX_NUM; i++) { for(i = 0; i < RULE_MAX_NUM; i++) {
if (0 != strlen(freeauth_array[i].name)) if (0 != strlen(freeauth_array[i].name))
{ {
char str[INET_ADDRSTRLEN];
printf("%s(%d) freeauth_array[%d] = %p\n", __FUNCTION__, __LINE__, i, &freeauth_array[i]); printf("%s(%d) freeauth_array[%d] = %p\n", __FUNCTION__, __LINE__, i, &freeauth_array[i]);
cJSON_AddItemToArray(pJsonArry, pJsonsub=cJSON_CreateObject()); /* 给创建的数组增加对象*/ cJSON_AddItemToArray(pJsonArry, pJsonsub=cJSON_CreateObject()); /* 给创建的数组增加对象*/
cJSON_AddNumberToObject(pJsonsub, "rule_priority", (i + 1)); cJSON_AddNumberToObject(pJsonsub, "rule_priority", (i + 1));
cJSON_AddStringToObject(pJsonsub, "name", freeauth_array[i].name); cJSON_AddStringToObject(pJsonsub, "name", freeauth_array[i].name);
cJSON_AddNumberToObject(pJsonsub, "sip", freeauth_array[i].sip);
cJSON_AddNumberToObject(pJsonsub, "dip", freeauth_array[i].dip); memset(str, 0, INET_ADDRSTRLEN);
inet_ntop(AF_INET,&freeauth_array[i].sip, str, sizeof(str));
cJSON_AddStringToObject(pJsonsub, "sip", str);
memset(str, 0, INET_ADDRSTRLEN);
inet_ntop(AF_INET,&freeauth_array[i].dip, str, sizeof(str));
cJSON_AddStringToObject(pJsonsub, "dip", str);
cJSON_AddNumberToObject(pJsonsub, "dport", freeauth_array[i].dport); cJSON_AddNumberToObject(pJsonsub, "dport", freeauth_array[i].dport);
cJSON_AddNumberToObject(pJsonsub, "flag", freeauth_array[i].flag); cJSON_AddNumberToObject(pJsonsub, "flag", freeauth_array[i].flag);
} }
@ -917,6 +998,72 @@ ret_code freeauth_config_get_proc(uint source, uint config_type,
} }
/*删除所有免认证规则*/
ret_code freeauth_config_del_all_proc(uint source, uint config_type,
pointer input, int input_len,
pointer output, int *output_len)
{
int i;
int cnt;
cJSON *res;
authfree_result_t authfree_result;
freeauth_configure_t *freeauth_configure = NULL;
uint conf_type = FREEAUTH_CONFIG_GET;
char *ret_char = NULL;
unsigned int ret_int = 0;
freeauth_configure = (freeauth_configure_t *)malloc(sizeof(freeauth_configure_t));
if(freeauth_configure == NULL) {
return RET_NOMEM;
}
freeauth_config_json_parse(input, &conf_type, freeauth_configure);
printf("打印全局数组内全部元素\n");
/*打印数组内全部元素*/
for(i = 0; i < RULE_MAX_NUM; i++)
{
printf("[%d %s %d %d %d %d %d]\n", freeauth_array[i].rule_priority, freeauth_array[i].name, freeauth_array[i].sip,
freeauth_array[i].dip, freeauth_array[i].dport, freeauth_array[i].flag, i);
}
/*删除所有未认证权限*/
del_all_authfree(freeauth_configure->name, &authfree_result);
/*创建json对象 */
res = cJSON_CreateObject();
if(!res) {
return RET_ERR;
}
/*将json对象转换成json字符串 返回处理结果*/
cJSON_AddNumberToObject(res, "resultcode", authfree_result.resultcode);
cJSON_AddStringToObject(res, "message", authfree_result.message);
cJSON_AddStringToObject(res, "data", "");
ret_char = cJSON_PrintUnformatted(res);
ret_int = strlen(ret_char);
if(output_len) {
*output_len = ret_int + 1;
}
/*超出2k的内存报错 */
if(ret_int >= 1024 * 2) {
free(ret_char);
cJSON_Delete(res);
return RET_NOMEM;
}
memcpy(output, ret_char, ret_int);
free(ret_char);
cJSON_Delete(res);
return RET_OK;
}
ret_code freeauth_config_proc(uint source, uint config_type, ret_code freeauth_config_proc(uint source, uint config_type,
pointer input, int input_len, pointer input, int input_len,
@ -966,6 +1113,13 @@ ret_code freeauth_config_proc(uint source, uint config_type,
output, output_len); output, output_len);
break; break;
case FREEAUTH_CONFIG_DEL_ALL:
ret = freeauth_config_del_all_proc(source, conf_type,
input, input_len,
output, output_len);
break;
default: default:
ret = RET_NOTSUPPORT; ret = RET_NOTSUPPORT;
} }

View File

@ -13,7 +13,7 @@
#include <net/if.h> #include <net/if.h>
#include "../../../../common/rpc/rpc_common.h" #include "../../../../common/rpc/rpc_common.h"
#define DPORT_MIN_NUM 0 #define DPORT_MIN_NUM 1
#define DPORT_MAX_NUM 65535 #define DPORT_MAX_NUM 65535
#define RULE_MAX_NUM 10 #define RULE_MAX_NUM 10
@ -22,6 +22,7 @@
#define FREEAUTH_CONFIG_DEL 2 #define FREEAUTH_CONFIG_DEL 2
#define FREEAUTH_CONFIG_MOD 3 #define FREEAUTH_CONFIG_MOD 3
#define FREEAUTH_CONFIG_GET 4 #define FREEAUTH_CONFIG_GET 4
#define FREEAUTH_CONFIG_DEL_ALL 5
/*配置消息 */ /*配置消息 */
@ -35,6 +36,18 @@ typedef struct {
}freeauth_configure_t; }freeauth_configure_t;
/*配置消息 */
typedef struct {
int rule_priority; /*未认证权限优先级*/
char name[32]; /*未认证权限名称*/
char sip[20]; /*未认证权限源IP地址*/
char dip[20]; /*未认证权限目的IP地址*/
int dport; /*未认证权限目的端口号*/
int flag; /*状态标志位0表示状态启动1表示状态禁用*/
}freeauth_configure_json_t;
/*修改权限消息*/ /*修改权限消息*/
typedef struct { typedef struct {
char name[32]; char name[32];
@ -110,6 +123,11 @@ ret_code freeauth_config_get_proc(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);
/*删除所有免认证规则*/
ret_code freeauth_config_del_all_proc(uint source, uint config_type,
pointer input, int input_len,
pointer output, int *output_len);
ret_code freeauth_config_proc(uint source, uint config_type, ret_code freeauth_config_proc(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);

View File

@ -12,7 +12,7 @@ extern void * auth_hdbc;
static char *authfreemes[] = {"addrule success", "addrule fail", "rule existed", "modrule success", static char *authfreemes[] = {"addrule success", "addrule fail", "rule existed", "modrule success",
"modrule failure", "rule not found", "delrule success", "delrule fail", "rulenum exceed maxnum", "modrule failure", "rule not found", "delrule success", "delrule fail", "rulenum exceed maxnum",
"rule full","mov success" , "get success", "rule full","mov success" , "get success","allrule del success"
}; };
static char *get_sql_ret_message(SQL_RET_CODE code) static char *get_sql_ret_message(SQL_RET_CODE code)
@ -434,3 +434,35 @@ void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
authfree_result->resultcode = MOD_RULE_OK; authfree_result->resultcode = MOD_RULE_OK;
authfree_result->message = get_sql_ret_message(authfree_result->resultcode); authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
} }
/*删除所有未认证权限*/
void del_all_authfree(char *name, authfree_result_t *authfree_result)
{
int i;
if(NULL == authfree_result) {
return;
}
/*删除所有未认证权限数数组*/
for(i = 0; i < RULE_MAX_NUM; i++) {
/*两个字符串相等 strcmp值为0*/
printf("%s(%d) freeauth_array[%d] = %p\n", __FUNCTION__, __LINE__, i, &freeauth_array[i]);
memset(&freeauth_array[i], 0, sizeof(freeauth_configure_t));
printf("[%d %s %d %d %d %d %d]\n", freeauth_array[i].rule_priority, freeauth_array[i].name, freeauth_array[i].sip,
freeauth_array[i].dip, freeauth_array[i].dport, freeauth_array[i].flag, i);
}
/*打印删除后的数组*/
printf("打印删除后的数据\n");
for(i = 0; i < RULE_MAX_NUM; i++) {
printf("[%d %s %d %d %d %d %d]\n", freeauth_array[i].rule_priority, freeauth_array[i].name, freeauth_array[i].sip,
freeauth_array[i].dip, freeauth_array[i].dport, freeauth_array[i].flag, i);
}
/*删除成功*/
authfree_result->resultcode = ALLRULE_DEL_SUCCESS;
authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
}

View File

@ -24,6 +24,7 @@ typedef enum {
RULE_FULL = 9, RULE_FULL = 9,
MOV_RULE_SUCCESS = 10, MOV_RULE_SUCCESS = 10,
GET_RELE_SUCCESS = 11, GET_RELE_SUCCESS = 11,
ALLRULE_DEL_SUCCESS = 12,
CODE_MAX, CODE_MAX,
} SQL_RET_CODE; } SQL_RET_CODE;
@ -46,4 +47,7 @@ void del_authfree(char *name, authfree_result_t *authfree_result);
/*修改未认证权限规则*/ /*修改未认证权限规则*/
void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int dport, int flag, authfree_result_t *authfree_result); void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int dport, int flag, authfree_result_t *authfree_result);
/*删除所有未认证权限*/
void del_all_authfree(char *name, authfree_result_t *authfree_result);
#endif #endif