diff options
Diffstat (limited to 'src/framework/include/nsfw_maintain_api.h')
-rw-r--r-- | src/framework/include/nsfw_maintain_api.h | 320 |
1 files changed, 320 insertions, 0 deletions
diff --git a/src/framework/include/nsfw_maintain_api.h b/src/framework/include/nsfw_maintain_api.h new file mode 100644 index 0000000..74cedf6 --- /dev/null +++ b/src/framework/include/nsfw_maintain_api.h @@ -0,0 +1,320 @@ +/* +* +* Copyright (c) 2018 Huawei Technologies Co.,Ltd. +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at: +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#ifndef _NSFW_MEM_STAT_API_H +#define _NSFW_MEM_STAT_API_H + +#include "types.h" +#include "nsfw_mgr_com_api.h" +#include "compiling_check.h" + +#ifdef __cplusplus +/* *INDENT-OFF* */ +extern "C"{ +/* *INDENT-ON* */ +#endif /* __cplusplus */ + +/*################MEM_STAT######################*/ +#define NSFW_MEM_MODULE_LEN 32 +#define NSFW_MEM_NAME_LEN 64 + +#define OMC_PROC_MM "omc_proc_maintain" + +#define MEM_STAT(module, mem_name, mem_type, mem_size)\ + nsfw_mem_stat(module, mem_name, mem_type, mem_size) + +extern void nsfw_mem_stat (char *module, char *mem_name, u8 mem_type, + u32 mem_size); +extern void nsfw_mem_stat_print (); +/*##############################################*/ + +/*################SRV_CTRL######################*/ +typedef enum _nsfw_srv_ctrl_state +{ + NSFW_SRV_CTRL_RESUME = 1, + NSFW_SRV_CTRL_SUSPEND = 2 +} nsfw_srv_ctrl_state; + +typedef struct _nsfw_srv_ctrl_msg +{ + nsfw_srv_ctrl_state srv_state; + u16 rsp_code; +} nsfw_srv_ctrl_msg; +extern u8 nsfw_srv_ctrl_send (nsfw_srv_ctrl_state state, u8 rsp_flag); +/*#############################################*/ + +/*#################RES_MGR######################*/ +#define NSFW_RES_MGR_MODULE "nsfw_res_mgr" + +typedef enum _nsfw_res_scan_type +{ + NSFW_RES_SCAN_ARRAY = 0, + NSFW_RES_SCAN_SPOOL, + NSFW_RES_SCAN_MBUF, + NSFW_RES_SCAN_MAX +} nsfw_res_scan_type; + +typedef int (*nsfw_res_free_fun) (void *pdata); + +typedef struct _nsfw_res_scn_cfg +{ + u8 type; /*nsfw_res_scan_type */ + u8 force_free_percent; /*if the resource free percent below this vlaue, begin to force free the element */ + u16 force_free_chk_num; /*if the check count beyone this vlaue, call free fun release this element */ + u16 alloc_speed_factor; /*alloc fast with higher value */ + + u32 num_per_cyc; /*define the element number in one scan cycle process and increase chk_count of every element */ + u32 total_num; /*total number of elements */ + u32 elm_size; /*element size */ + u32 res_mem_offset; /*the nsfw_res offset from the element start */ + + void *data; /*the array addr or spool addr */ + void *mgr_ring; + + nsfw_res_free_fun free_fun; +} nsfw_res_scn_cfg; + +typedef struct _nsfw_res_mgr_item_cfg +{ + nsfw_res_scn_cfg scn_cfg; + u32 cons_head; + u32 prod_head; + u32 free_percent; + u32 last_scn_idx; + u64 force_count; +} nsfw_res_mgr_item_cfg; + +#define NSFW_MAX_RES_SCAN_COUNT 256 + +extern u8 nsfw_res_mgr_reg (nsfw_res_scn_cfg * cfg); +extern i32 nsfw_proc_start_with_lock (u8 proc_type); +/*#############################################*/ + +typedef enum _nsfw_exit_code +{ + NSFW_EXIT_SUCCESS = 0, + NSFW_EXIT_FAILED = 1, + NSFW_EXIT_DST_ERROR = 2, + NSFW_EXIT_TIME_OUT = 3, + + NSFW_EXIT_MAX_COM_ERR = 31, +} nsfw_exit_code; + +/*#############################################*/ + +/*#################SOFT_PARAM##################*/ +#define NSFW_SOFT_PARAM_MODULE "nsfw_soft_param" + +typedef struct _nsfw_soft_param_msg +{ + u32 param_name; + u32 rsp_code; + u8 param_value[NSFW_MGR_MSG_BODY_LEN - sizeof (u32) - sizeof (u32)]; +} +nsfw_soft_param_msg; + +typedef enum _nsfw_soft_param +{ + NSFW_DBG_MODE_PARAM = 1, + NSFW_HBT_TIMER = 2, + NSFW_HBT_COUNT_PARAM = 3, + NSFW_APP_EXIT_TIMER = 4, + NSFW_SRV_RESTORE_TIMER = 5, + NSFW_APP_RESEND_TIMER = 6, + NSFW_APP_SEND_PER_TIME = 7, + + NSFW_MAX_SOFT_PARAM = 1024 +} nsfw_soft_param; + +typedef int (*nsfw_set_soft_fun) (u32 param, char *buf, u32 buf_len); +extern u8 nsfw_soft_param_reg_fun (u32 param_name, nsfw_set_soft_fun fun); +extern u8 nsfw_soft_param_reg_int (u32 param_name, u32 size, u32 min, + u32 max, u64 * data); + +extern void nsfw_set_soft_para (fw_poc_type proc_type, u32 para_name, + void *value, u32 size); + +extern int nsfw_isdigitstr (const char *str); +#define NSFW_REG_SOFT_INT(_param,_data,_min, _max) nsfw_soft_param_reg_int(_param,sizeof(_data),_min,_max,(u64*)&_data) +/*#############################################*/ + +/*#################LOG_CONFIG##################*/ +#define NSFW_LOG_CFG_MODULE "nsfw_log_cfg" + +#define NSFW_MODULE_NAME_LEN 20 +#define NSFW_LOG_LEVEL_LEN 10 +#define NSFW_LOG_VALUE_LEN 256 + +typedef struct _nsfw_set_log_msg +{ + u16 rsp_code; + char module[NSFW_MODULE_NAME_LEN]; + char log_level[NSFW_LOG_VALUE_LEN]; +} nsfw_set_log_msg; +/*#############################################*/ + +/*################## DFX ######################*/ +#define MAX_DFX_QRY_RES_LEN 28 + +#define SPL_DFX_RES_ALL "all" +#define SPL_DFX_RES_QUEUE "queue" +#define SPL_DFX_RES_CONN "conn" +#define SPL_DFX_RES_L2TO4 "l2to4" +#define SPL_DFX_RES_UNMATCH "version" +#define SPL_DFX_RES_SOCKT_CB "socketcb" +#define SPL_DFX_RES_COMM_MEMPOOL "mbufpool" +#define SPL_DFX_RES_PCBLIST "pcblist" +#define SPL_DFX_RES_ARPLIST "arplist" + +typedef enum +{ + DFX_ACTION_SNAPSHOT, + DFX_ACTION_RST_STATS, + DFX_ACTION_SWITCH, + DFX_ACTION_MAX +} dfx_module_action; + +typedef struct _nsfw_dfx_qry_msg +{ + dfx_module_action action; + char resource[MAX_DFX_QRY_RES_LEN]; + char flag; //for snapshot print "all" +} nsfw_dfx_qry_msg; + +typedef enum +{ + QUERY_ACTION_GET, + QUERY_ACTION_MAX +} query_action; + +typedef struct _nsfw_qry_msg +{ + query_action action; + char resource[MAX_DFX_QRY_RES_LEN]; +} nsfw_get_qry_msg; + +/*##################DFX#########################*/ + +/*#################for tcpdump#####################*/ + +#ifndef nstack_min +#define nstack_min(a, b) (a) < (b) ? (a) : (b) +#endif + +#define GET_CUR_TIME(ptime) \ + (void)clock_gettime(CLOCK_MONOTONIC, ptime); + +#define TCPDUMP_MODULE "tcpdump_tool" + +#define DUMP_MSG_NUM (64 * 1024) +COMPAT_PROTECT (DUMP_MSG_NUM, 64 * 1024); +#define DUMP_MSG_SIZE 128 // can not be less than 14 +COMPAT_PROTECT (DUMP_MSG_SIZE, 128); + +#define DEFAULT_DUMP_TIME 600 +#define MAX_DUMP_TIME 86400 +#define MIN_DUMP_TIME 1 + +#define MAX_DUMP_TASK 16 +#define DUMP_HBT_INTERVAL 2 +#define DUMP_HBT_CHK_INTERVAL 4 +#define DUMP_TASK_HBT_TIME_OUT 30 + +#define DUMP_SHMEM_RIGN_NAME "tcpdump_ring" +#define DUMP_SHMEM_POOL_NAME "tcpdump_pool" + +enum L2_PROTOCOL +{ + PROTOCOL_IP = 0x0800, + PROTOCOL_ARP = 0x0806, + PROTOCOL_RARP = 0x8035, + PROTOCOL_OAM_LACP = 0x8809, + INVALID_L2_PROTOCOL = 0xFFFF +}; + +enum L3_PROTOCOL +{ + PROTOCOL_ICMP = 1, + PROTOCOL_TCP = 6, + PROTOCOL_UDP = 17, + INVALID_L3_PROTOCOL = 0xFF +}; + +enum DUMP_MSG_DIRECTION +{ + DUMP_SEND = 1, + DUMP_RECV = 2, + DUMP_SEND_RECV = 3 +}; + +enum DUMP_MSG_TYPE +{ + START_DUMP_REQ, + STOP_DUMP_REQ, + TOOL_COM_HBT_REQ, + + DUMP_MSG_TYPE_RSP = 0x00010000, + + START_DUMP_RSP = START_DUMP_REQ + DUMP_MSG_TYPE_RSP, + STOP_DUMP_RSP = STOP_DUMP_REQ + DUMP_MSG_TYPE_RSP, + + DUMP_MSG_TYPE_INVALID +}; + +typedef struct _nsfw_tool_hbt +{ + u32 seq; + i16 task_id; +} nsfw_tool_hbt; + +typedef struct _nsfw_tool_dump_msg +{ + u16 op_type; + i16 task_id; + u32 task_keep_time; +} nsfw_tool_dump_msg; + +typedef struct _dump_msg_info +{ + u32 len; + u16 direction; // 1:SEND, 2:RECV + u32 dump_sec; + u32 dump_usec; + nsfw_res res_chk; + char buf[1]; +} dump_msg_info; + +typedef struct _dump_timer_info +{ + u32 seq; + i16 task_id; + void *interval; + void *ptimer; +} dump_timer_info; + +extern void ntcpdump_loop (void *buf, u32 buf_len, u16 direction, + void *eth_addr); +extern void ntcpdump (void *buf, u32 buf_len, u16 direction); + +/*##############for tcpdump######################*/ + +#ifdef __cplusplus +/* *INDENT-OFF* */ +} +/* *INDENT-ON* */ +#endif /* __cplusplus */ + +#endif /* _NSFW_MEM_STAT_API_H */ |