summaryrefslogtreecommitdiffstats
path: root/stacks/lwip_stack/src
diff options
context:
space:
mode:
Diffstat (limited to 'stacks/lwip_stack/src')
-rw-r--r--stacks/lwip_stack/src/CMakeLists.txt62
-rw-r--r--stacks/lwip_stack/src/alarm/CMakeLists.txt34
-rw-r--r--stacks/lwip_stack/src/alarm/alarm.c861
-rw-r--r--stacks/lwip_stack/src/alarm/alarm.h80
-rw-r--r--stacks/lwip_stack/src/alarm/alarm_api.h107
-rw-r--r--stacks/lwip_stack/src/include/nsfw_msg.h203
-rw-r--r--stacks/lwip_stack/src/include/nsfw_msg_api.h309
-rw-r--r--stacks/lwip_stack/src/include/nsfw_mt_config.h292
-rw-r--r--stacks/lwip_stack/src/include/nsfw_rti.h66
-rw-r--r--stacks/lwip_stack/src/io_adpt/CMakeLists.txt31
-rw-r--r--stacks/lwip_stack/src/io_adpt/dpdk.c2476
-rw-r--r--stacks/lwip_stack/src/maintain/CMakeLists.txt44
-rw-r--r--stacks/lwip_stack/src/maintain/fw_mt_config.c807
-rw-r--r--stacks/lwip_stack/src/maintain/nsfw_msg.c23
-rw-r--r--stacks/lwip_stack/src/maintain/nsfw_rti.c92
-rw-r--r--stacks/lwip_stack/src/nStackMain/CMakeLists.txt60
-rw-r--r--stacks/lwip_stack/src/nStackMain/main.c429
-rw-r--r--stacks/lwip_stack/src/sbr/CMakeLists.txt30
-rw-r--r--stacks/lwip_stack/src/sbr/sbr_err.h191
-rw-r--r--stacks/lwip_stack/src/sbr/sbr_index_ring.c212
-rw-r--r--stacks/lwip_stack/src/sbr/sbr_index_ring.h61
-rw-r--r--stacks/lwip_stack/src/sbr/sbr_protocol_api.h103
-rw-r--r--stacks/lwip_stack/src/sbr/sbr_res_mgr.c88
-rw-r--r--stacks/lwip_stack/src/sbr/sbr_res_mgr.h159
-rw-r--r--stacks/lwip_stack/src/sbr/sbr_socket.c1274
-rw-r--r--stacks/lwip_stack/src/tools/CMakeLists.txt22
-rw-r--r--stacks/lwip_stack/src/tools/dump_tool.c622
-rw-r--r--stacks/lwip_stack/src/tools/dump_tool.h81
28 files changed, 0 insertions, 8819 deletions
diff --git a/stacks/lwip_stack/src/CMakeLists.txt b/stacks/lwip_stack/src/CMakeLists.txt
deleted file mode 100644
index 6aacf07..0000000
--- a/stacks/lwip_stack/src/CMakeLists.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-#########################################################################
-#
-# 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.
-#########################################################################
-
-SET(RTP_DIRECTORIES "${PROJECT_SOURCE_DIR}/src/include/")
-
-INCLUDE_DIRECTORIES(
- framework/log/
- framework/include/
- framework/common/include/
- framework/common/base/include/
- ${RTP_DIRECTORIES}
- ${RTP_DIRECTORIES}/generic
- ../../SecureC/include/
- ../../../thirdparty/glog/glog-0.3.4/src/
-)
-
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -g -fPIC -m64 -mssse3 -std=gnu89")
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror -Wshadow -Wfloat-equal -Wformat=2")
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector -fstack-protector-all")
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,-z,relro,-z,now -Wl,--disable-new-dtags,--rpath,../lib64")
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,-z,noexecstack -mcmodel=medium")
-
-if(WITH_HAL_LIB)
-SET(RTP_CONFIG ${PROJECT_SOURCE_DIR}/src/include/rtp_config.h)
-else()
- SET(RTP_CONFIG ${CMAKE_CURRENT_LIST_DIR}/../../../src/framework/common/base/include/common/common_sys_config.h)
-endif()
-SET(COMPLE_CONFIG ${PROJECT_SOURCE_DIR}/src/include/compile_config.h)
-ADD_DEFINITIONS(-include ${RTP_CONFIG})
-ADD_DEFINITIONS(-include ${COMPLE_CONFIG})
-ADD_DEFINITIONS(-D_GNU_SOURCE)
-ADD_DEFINITIONS(-DDPDK_MODULE=0)
-#ADD_DEFINITIONS(-DNSTACK_RSRDMA)
-LINK_DIRECTORIES(${LIB_PATH_SHARED} ${LIB_PATH_STATIC})
-
-if(WITH_SECUREC_LIB)
-LINK_LIBRARIES(pthread dl securec)
-else()
-LINK_LIBRARIES(pthread dl)
-endif()
-
-ADD_SUBDIRECTORY(maintain)
-ADD_SUBDIRECTORY(io_adpt)
-ADD_SUBDIRECTORY(sbr)
-#ADD_SUBDIRECTORY(nStackCtrl)
-ADD_SUBDIRECTORY(nStackMain)
-ADD_SUBDIRECTORY(tools)
-ADD_SUBDIRECTORY(alarm)
-#ADD_SUBDIRECTORY(nstackcmd)
diff --git a/stacks/lwip_stack/src/alarm/CMakeLists.txt b/stacks/lwip_stack/src/alarm/CMakeLists.txt
deleted file mode 100644
index 3de07b0..0000000
--- a/stacks/lwip_stack/src/alarm/CMakeLists.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-#########################################################################
-#
-# 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.
-#########################################################################
-
-FILE(GLOB_RECURSE ALARM *.c)
-
-LINK_LIBRARIES(m dl rt dmm_api)
-if(WITH_SECUREC_LIB)
-INCLUDE_DIRECTORIES(
- ./
- ${JSON_C_SRC}
- ${SECUREC_SRC}
- ${CMAKE_CURRENT_LIST_DIR}/../include/
-)
-else()
-INCLUDE_DIRECTORIES(
- ./
- ${JSON_C_SRC}
- ${CMAKE_CURRENT_LIST_DIR}/../include/
-)
-endif()
-ADD_LIBRARY(nStackAlarm STATIC ${ALARM})
diff --git a/stacks/lwip_stack/src/alarm/alarm.c b/stacks/lwip_stack/src/alarm/alarm.c
deleted file mode 100644
index c158144..0000000
--- a/stacks/lwip_stack/src/alarm/alarm.c
+++ /dev/null
@@ -1,861 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#include "types.h"
-#include "nsfw_mgr_com_api.h"
-#include "nsfw_fd_timer_api.h"
-#include "alarm.h"
-#include "alarm_api.h"
-#include<time.h>
-#include<sys/time.h>
-#include "nsfw_init.h"
-#include "nstack_log.h"
-#include "json.h"
-#include "nstack_securec.h"
-#include <stdlib.h>
-#include "nstack_dmm_adpt.h"
-
-char g_vmid[MAX_VMID_LEN + 1] = "agent-node-x";
-
-extern nsfw_timer_info *nsfw_timer_reg_timer (u32 timer_type, void *data,
- nsfw_timer_proc_fun fun,
- struct timespec time_left);
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C" {
-/* *INDENT-ON* */
-#endif /* __cplusplus */
-
-// note:the first element is reserved
-alarm_data g_alarm_data[ALARM_EVENT_MAX] = { };
-
-alarm_result
-ms_alarm_check_func (void *para)
-{
- alarm_result ret_alarm;
- int para_value = (long) para;
-
- ret_alarm.alarm_id_get = ALARM_EVENT_NSTACK_MAIN_ABNORMAL;
-
- if (para_value == ALARM_PRODUCT)
- {
- ret_alarm.alarm_flag_get = ALARM_PRODUCT;
- }
- else if (para_value == ALARM_CLEAN)
- {
- ret_alarm.alarm_flag_get = ALARM_CLEAN;
- }
- else
- {
- ret_alarm.alarm_id_get = ALARM_EVENT_MAX;
- }
-
- ret_alarm.alarm_reason_get = ALARM_REASON_NSMAIN;
-
- return ret_alarm;
-
-}
-
-/*******************************************************************
-* Copyright 2017, Huawei Tech. Co., Ltd.
-* ALL RIGHTS RESERVED
-*Description : period check alarm expire handle function
-********************************************************************/
-
-int
-ns_alarm_timer_resend_fun (u32 timer_type, void *argv)
-{
- int i;
- struct timespec time_left;
- alarm_data *alarm_value;
-
- for (i = ALARM_EVENT_BASE; i < ALARM_EVENT_MAX; i++)
- {
- alarm_value = &g_alarm_data[i];
-
- if ((alarm_value->valid_flag == 1)
- && (alarm_value->send_succ_flag == ALARM_SEND_FAIL))
- {
- /* nStack only send nsMain normal alarm */
- ns_send_alarm_inner (alarm_value->_alarm_id,
- (void *) (alarm_value->_alarm_flag), 1, 0);
- }
- }
-
- time_left.tv_sec = ALARM_RESEND_TIMER_LENGTH;
- time_left.tv_nsec = 0;
- nsfw_timer_info *timer_info =
- nsfw_timer_reg_timer (0, NULL, ns_alarm_timer_resend_fun, time_left);
- if (NULL == timer_info)
- {
- NSAM_LOGERR ("nsfw_timer_reg_timer fail");
- }
-
- return 0;
-}
-
-void
-ns_alarm_set_sendFlag (enum_alarm_id alarmId, int flag)
-{
- if ((alarmId <= 0) || (alarmId >= ALARM_EVENT_MAX)
- || (0 == g_alarm_data[alarmId].valid_flag) || ((flag != ALARM_SEND_FAIL)
- && (flag !=
- ALARM_SEND_SUCC)))
- {
- NSAM_LOGERR ("alarm_id is invalid or not reg or flag invalid");
- return;
- }
- g_alarm_data[alarmId].send_succ_flag = flag;
-}
-
-/*******************************************************************
-* Copyright 2017, Huawei Tech. Co., Ltd.
-* ALL RIGHTS RESERVED
-*Description : alarm module init
-********************************************************************/
-int
-ns_alarm_module_init (void *param)
-{
- u32 proc_type = (u32) ((long long) param);
- enum_alarm_id i = ALARM_EVENT_BASE;
- alarm_reason j = ALARM_REASON_BEGIN;
- const char *pst_vm_id = NULL;
- alarm_para tcp_alarm_para;
- struct timespec time_left;
-
- for (i = ALARM_EVENT_BASE; i < ALARM_EVENT_MAX; i++)
- {
- g_alarm_data[i]._alarm_type = ALARM_SEND_ONCE;
-
- for (j = ALARM_REASON_BEGIN; j < ALARM_REASON_MAX; j++)
- {
- g_alarm_data[i]._alarm_para.func_alarm_check[j] = NULL;
- g_alarm_data[i]._alarm_para.alarm_reason_set[j] = ALARM_REASON_MAX;
- g_alarm_data[i].alarm_time_laps[j] = 0;
- }
- g_alarm_data[i]._alarm_para.period_alarm.time_length = 0;
- g_alarm_data[i]._alarm_id = i;
- g_alarm_data[i].valid_flag = 0;
- g_alarm_data[i]._alarm_flag = ALARM_CLEAN;
- g_alarm_data[i].alarm_reason_cnt = 0;
- g_alarm_data[i].send_succ_flag = ALARM_SEND_SUCC;
- }
-
- switch (proc_type)
- {
- case NSFW_PROC_MAIN:
- case NSFW_PROC_CTRL:
-
- /* modify ip address to vm id */
- pst_vm_id = getenv ("VM_ID");
-
- if (INVALID_STR_LEN (pst_vm_id, MIN_VM_ID_LEN, MAX_VM_ID_LEN))
- {
- NSAM_LOGWAR
- ("invalid VM_ID,please check env VM_ID]vm_id=%s, proc_type=%u",
- pst_vm_id, proc_type);
- }
- else
- {
- int retVal = STRNCPY_S (g_vmid, MAX_VMID_LEN + 1, pst_vm_id,
- strlen (pst_vm_id));
-
- if (EOK != retVal)
- {
- NSAM_LOGERR ("STRNCPY_S failed]ret=%d", retVal);
- }
- }
-
- tcp_alarm_para.period_alarm.time_length = 0; /* 5 second period */
- tcp_alarm_para.alarm_reason_count = 1; /*both resource */
-
- tcp_alarm_para.func_alarm_check[0] = ms_alarm_check_func;
- tcp_alarm_para.alarm_reason_set[0] = ALARM_REASON_NSMAIN;
- (void) ns_reg_alarm (ALARM_EVENT_NSTACK_MAIN_ABNORMAL, ALARM_SEND_ONCE,
- &tcp_alarm_para);
-
- time_left.tv_sec = ALARM_INIT_RESEND_TIMER_LENGTH;
- time_left.tv_nsec = 0;
- nsfw_timer_info *timer_info =
- nsfw_timer_reg_timer (0, NULL, ns_alarm_timer_resend_fun, time_left);
- if (NULL == timer_info)
- {
- NSAM_LOGERR ("nsfw_timer_reg_timer fail");
- }
-
- break;
- default:
- break;
- }
-
- return 0;
-}
-
-#define JSON_NEW_OBJ(obj, cb, para1, para2)\
- {\
- obj = json_object_new_object();\
- if (obj == NULL)\
- {\
- (void)cb(para1);\
- (void)cb(para2);\
- return -1;\
- }\
- }
-
-#define JSON_NEW_STRING_OBJ(str, obj, cb, para1, para2)\
- {\
- obj = json_object_new_string((str));\
- if (obj == NULL)\
- {\
- (void)cb(para1);\
- (void)cb(para2);\
- return -1;\
- }\
- }
-
-#define JSON_NEW_STRING_OBJ_1(val, obj, cb, para1, para2,para3)\
- {\
- obj = json_object_new_string((val));\
- if (obj == NULL)\
- {\
- (void)cb(para1);\
- (void)cb(para2);\
- (void)cb(para3);\
- return -1;\
- }\
- }
-
-#define JSON_NEW_INT_OBJ(val, obj, cb, para1, para2)\
- {\
- obj = json_object_new_int((val));\
- if (obj == NULL)\
- {\
- (void)cb(para1);\
- (void)cb(para2);\
- return -1;\
- }\
- }
-
-/*****************************************************************************
-* Prototype : ns_get_alarm_body
-* Description : get body by alarm parameter
-* Input : char *buf
-* int buf_len
-* alarm_result alarm_res
-* Output : None
-* Return Value : int
-*****************************************************************************/
-int
-ns_get_alarm_body (char *buf, int buf_len, alarm_result alarm_res)
-{
-#define ALARM_NAME_LENGTH 100
-#define COMPONENT_NAME "nStack"
- int retVal;
- size_t str_len;
- int alarm_id = alarm_res.alarm_id_get + 27000;
- struct timeval t_val;
- struct tm now_time;
- char *alarm_string = NULL, *alarm_reason_info = NULL, *alarm_desc = NULL;
- json_object *temp_jso = NULL, *alarm_info = NULL;
- alarm_info_s_out *alarmpara_out = NULL;
- int perceivedSeverity_value = 0;
- char *action_string = NULL;
- if (buf == NULL || (buf_len < (int) sizeof (alarm_info_s_out)))
- {
- NSAM_LOGERR ("input para invalid");
- return -1;
- }
- alarmpara_out = (alarm_info_s_out *) buf;
-
- /*use sizeof(alarmpara_out->alarmId) instead of devil figure 16 */
- retVal =
- SPRINTF_S (alarmpara_out->alarmId, sizeof (alarmpara_out->alarmId), "%d",
- alarm_id);
- if (-1 == retVal)
- {
- NSAM_LOGERR ("SPRINTF_S failed]ret=%d", retVal);
- return -1;
- }
-
- (void) gettimeofday (&t_val, NULL);
- time_t t_sec = (time_t) t_val.tv_sec;
- /*return value check */
- if (NULL == localtime_r (&t_sec, &now_time))
- {
- NSAM_LOGERR ("localtime_r failed]");
- return -1;
- }
-
- /*use sizeof(alarmpara_out->alarmtime) instead of devil figure 32 */
- retVal =
- SPRINTF_S (alarmpara_out->alarmtime, sizeof (alarmpara_out->alarmtime),
- "%4d%02d%02d%02d%02d%02d%06ld", now_time.tm_year + 1900,
- now_time.tm_mon + 1, now_time.tm_mday, now_time.tm_hour,
- now_time.tm_min, now_time.tm_sec, (long) t_val.tv_usec);
- if (-1 == retVal)
- {
- NSAM_LOGERR ("SPRINTF_S failed]ret=%d", retVal);
- return -1;
- }
-
- retVal =
- STRNCPY_S (alarmpara_out->comptentname,
- sizeof (alarmpara_out->comptentname), COMPONENT_NAME,
- strlen (COMPONENT_NAME));
- if (EOK != retVal)
- {
- NSAM_LOGERR ("STRNCPY_S failed]ret=%d", retVal);
- return -1;
- }
-
- switch (alarm_res.alarm_reason_get)
- {
- case ALARM_REASON_SOCKET:
- /* alarmName and reason info is incorrect */
- alarm_reason_info = "socketResource";
- if (alarm_res.alarm_flag_get == ALARM_PRODUCT)
- {
- alarm_string = "networkResourceOverload";
- alarm_desc = "more than 80 percent used";
- perceivedSeverity_value = 2;
- action_string = "alarm";
- }
- else
- {
- alarm_string = "networkResourceNormal";
- alarm_desc = "less than 60 percent used";
- perceivedSeverity_value = 5;
- action_string = "clear";
- }
-
- break;
- case ALARM_REASON_MSG_BUF:
- alarm_reason_info = "SendBufResource";
- if (alarm_res.alarm_flag_get == ALARM_PRODUCT)
- {
- alarm_string = "networkResourceOverload";
- alarm_desc = "more than 80 percent used";
- perceivedSeverity_value = 2;
- action_string = "alarm";
- }
- else
- {
- alarm_string = "networkResourceNormal";
- alarm_desc = "less than 60 percent used";
- perceivedSeverity_value = 5;
- action_string = "clear";
- }
-
- break;
- case ALARM_REASON_NSMAIN:
- /* process status alarm change from event to alarm/clear */
- alarm_reason_info = "networkProcStatus";
- if (alarm_res.alarm_flag_get == ALARM_PRODUCT)
- {
- alarm_string = "network-data-down";
- alarm_desc = "networkProcDown";
- perceivedSeverity_value = 2;
- action_string = "alarm";
- }
- else
- {
- alarm_string = "network-data-up";
- alarm_desc = "networkProcUp";
- perceivedSeverity_value = 5;
- action_string = "clear";
- }
-
- break;
- default:
- NSAM_LOGERR ("alarm_reason incorrect]ret=%d",
- alarm_res.alarm_reason_get);
- return -1;
- }
-
- str_len = 0;
-
- json_object *alarmlist = json_object_new_object ();
- if (NULL == alarmlist)
- {
- NSAM_LOGERR ("alarmlist is NULL");
- return -1;
- }
-
- json_object *alarmItem = json_object_new_object ();
-
- if (NULL == alarmItem)
- {
- NSAM_LOGERR ("alarmItem is NULL");
- (void) json_object_put (alarmlist);
- return -1;
- }
-
- JSON_NEW_STRING_OBJ ("ICTS_BASE=1", temp_jso, json_object_put, alarmlist,
- alarmItem);
- json_object_object_add (alarmItem, "neDN", temp_jso);
- JSON_NEW_STRING_OBJ ("service", temp_jso, json_object_put, alarmlist,
- alarmItem);
- json_object_object_add (alarmItem, "neType", temp_jso);
- JSON_NEW_STRING_OBJ ("ICTS_BASE", temp_jso, json_object_put, alarmlist,
- alarmItem);
- json_object_object_add (alarmItem, "neName", temp_jso);
- JSON_NEW_STRING_OBJ ("service", temp_jso, json_object_put, alarmlist,
- alarmItem);
- json_object_object_add (alarmItem, "objectClass", temp_jso);
- JSON_NEW_STRING_OBJ ("nStack", temp_jso, json_object_put, alarmlist,
- alarmItem);
- json_object_object_add (alarmItem, "moDN", temp_jso);
- JSON_NEW_STRING_OBJ ("nStack", temp_jso, json_object_put, alarmlist,
- alarmItem);
- json_object_object_add (alarmItem, "moName", temp_jso);
- JSON_NEW_STRING_OBJ ("default", temp_jso, json_object_put, alarmlist,
- alarmItem);
- json_object_object_add (alarmItem, "userId", temp_jso);
-
- JSON_NEW_INT_OBJ (alarm_id, temp_jso, json_object_put, alarmlist,
- alarmItem);
- json_object_object_add (alarmItem, "alarmId", temp_jso);
-
- JSON_NEW_INT_OBJ (10001, temp_jso, json_object_put, alarmlist, alarmItem);
- json_object_object_add (alarmItem, "groupId", temp_jso);
-
- JSON_NEW_STRING_OBJ (g_vmid, temp_jso, json_object_put, alarmlist,
- alarmItem);
- json_object_object_add (alarmItem, "objectInstance", temp_jso);
- JSON_NEW_INT_OBJ (8, temp_jso, json_object_put, alarmlist, alarmItem);
- json_object_object_add (alarmItem, "eventType", temp_jso);
-
- JSON_NEW_STRING_OBJ (alarm_string, temp_jso, json_object_put, alarmlist,
- alarmItem);
- json_object_object_add (alarmItem, "alarmName", temp_jso);
-
- JSON_NEW_INT_OBJ (perceivedSeverity_value, temp_jso, json_object_put,
- alarmlist, alarmItem);
-
- json_object_object_add (alarmItem, "perceivedSeverity", temp_jso);
-
- JSON_NEW_OBJ (alarm_info, json_object_put, alarmlist, alarmItem);
- JSON_NEW_STRING_OBJ_1 (alarm_reason_info, temp_jso, json_object_put,
- alarmlist, alarmItem, alarm_info);
- json_object_object_add (alarm_info, "reason", temp_jso);
- JSON_NEW_STRING_OBJ_1 (alarm_desc, temp_jso, json_object_put, alarmlist,
- alarmItem, alarm_info);
- json_object_object_add (alarm_info, "desc", temp_jso);
- json_object_object_add (alarmItem, "alarmInfo", alarm_info);
-
- JSON_NEW_STRING_OBJ (action_string, temp_jso, json_object_put, alarmlist,
- alarmItem);
-
- json_object_object_add (alarmlist, "data", alarmItem);
-
- json_object_object_add (alarmlist, "action", temp_jso);
-
- const char *str = json_object_to_json_string (alarmlist);
- if (str == NULL)
- {
- NSMON_LOGERR ("json_object_to_json_string fail");
- (void) json_object_put (alarmlist);
- return -1;
- }
-
- str_len = strlen (str);
-
- if (str_len >= ALARM_PARA_LENGTH_OUTER)
- {
- NSAM_LOGERR ("str_len >= ALARM_PARA_LENGTH_OUTER");
- (void) json_object_put (alarmlist);
- return -1;
- }
-
- retVal =
- STRNCPY_S (alarmpara_out->alarmcontent, ALARM_PARA_LENGTH_OUTER, str,
- str_len + 1);
-
- if (EOK != retVal)
- {
- NSAM_LOGERR ("STRNCPY_S failed]ret=%d", retVal);
- (void) json_object_put (alarmlist);
- return -1;
- }
-
- (void) json_object_put (alarmlist);
-
- return 0;
-
-}
-
-/*******************************************************************
-* Copyright 2017, Huawei Tech. Co., Ltd.
-* ALL RIGHTS RESERVED
-*Description : send alarm to thirdparty alarm module, now only log
-********************************************************************/
-int
-ns_send_alarm_to_alarm_module (alarm_result alarm_res)
-{
- int retVal = -1;
-
- nsfw_mgr_msg *req_msg =
- nsfw_mgr_msg_alloc (MGR_MSG_LARGE_ALARM_RSP, NSFW_PROC_ALARM);
-
- if (NULL == req_msg)
- {
- NSAM_LOGERR ("mgr_msg_alloc fail]alarm_id=%d", alarm_res.alarm_id_get);
- return -1;
- }
-
- if (req_msg->msg_len < (NSFW_MGR_MSG_HDR_LEN + sizeof (alarm_info_s_out)))
- {
- NSAM_LOGERR ("mgr_msg_alloc length fail]alarm_id=%d",
- alarm_res.alarm_id_get);
- nsfw_mgr_msg_free (req_msg);
- return -1;
- }
- /* husky agent receive alarm info using fixed length */
- req_msg->msg_len = (NSFW_MGR_MSG_HDR_LEN + sizeof (alarm_info_s_out));
-
- retVal =
- ns_get_alarm_body ((char *) req_msg->msg_body,
- NSFW_MGR_LARGE_MSG_BODY_LEN, alarm_res);
-
- if (-1 == retVal)
- {
- NSAM_LOGERR ("ns_get_alarm_body fail]alarm_id=%d",
- alarm_res.alarm_id_get);
- nsfw_mgr_msg_free (req_msg);
- return -1;
- }
-
- u8 ret = nsfw_mgr_send_msg (req_msg);
-
- if (FALSE == ret)
- {
- NSAM_LOGERR ("nsfw_mgr_send_msg fail]alarm_id=%d,reason=%d,flag=%d",
- alarm_res.alarm_id_get, alarm_res.alarm_reason_get,
- alarm_res.alarm_flag_get);
- ns_alarm_set_sendFlag (alarm_res.alarm_id_get, ALARM_SEND_FAIL);
- nsfw_mgr_msg_free (req_msg);
- return -1;
- }
-
- NSAM_LOGINF ("nsfw_mgr_send_msg succ]alarm_id=%d,reason=%d,flag=%d",
- alarm_res.alarm_id_get, alarm_res.alarm_reason_get,
- alarm_res.alarm_flag_get);
- ns_alarm_set_sendFlag (alarm_res.alarm_id_get, ALARM_SEND_SUCC);
-
- nsfw_mgr_msg_free (req_msg);
-
- return 0;
-}
-
-/*******************************************************************
-* Copyright 2017, Huawei Tech. Co., Ltd.
-* ALL RIGHTS RESERVED
-*Description : alarm product common func
-********************************************************************/
-void
-ns_send_alarm_inner (enum_alarm_id alarm_id, void *para, int check_times,
- int check_state_flag)
-{
- alarm_data *alarm_value = NULL;
- alarm_result alarm_id_report;
- int alarm_idx;
- int alarm_loop;
- int temp_alarm_time_laps;
- int abnormal_alarm_flag = 0, normal_alarm_flag =
- 0, total_abnormal_alarm_flag = 0;
- int need_check_flag = check_state_flag;
- int ret = 0;
-
- if ((alarm_id <= 0) || (alarm_id >= ALARM_EVENT_MAX)
- || (0 == g_alarm_data[alarm_id].valid_flag))
- {
- NSAM_LOGERR ("alarm_id is invalid or not reg");
- return;
- }
-
- alarm_id_report.alarm_id_get = ALARM_EVENT_MAX;
-
- alarm_idx = alarm_id;
-
- alarm_value = &g_alarm_data[alarm_idx];
-
- for (alarm_loop = 0; alarm_loop < alarm_value->alarm_reason_cnt;
- alarm_loop++)
- {
- abnormal_alarm_flag = 0;
- if (ALARM_PERIOD_CHECK == alarm_value->_alarm_type)
- {
- if (NULL ==
- alarm_value->_alarm_para.func_alarm_check_period[alarm_loop])
- {
- NSAM_LOGERR ("alarm id func_alarm_check is invalid]alarm_id=%d",
- alarm_id);
- return;
- }
- alarm_id_report =
- alarm_value->_alarm_para.func_alarm_check_period[alarm_loop] ();
- }
- else if (ALARM_SEND_ONCE == alarm_value->_alarm_type)
- {
- if (NULL == alarm_value->_alarm_para.func_alarm_check[alarm_loop])
- {
- NSAM_LOGERR ("alarm id func_alarm_check is invalid]alarm_id=%d",
- alarm_id);
- return;
- }
- alarm_id_report =
- alarm_value->_alarm_para.func_alarm_check[alarm_loop] (para);
- }
-
- if ((alarm_id_report.alarm_id_get <= ALARM_EVENT_BASE)
- || alarm_id_report.alarm_id_get >= ALARM_EVENT_MAX)
- {
- NSAM_LOGDBG ("don't satisfy alarm condition");
- return;
- }
-
- alarm_idx = alarm_id_report.alarm_id_get;
-
- if (ALARM_EVENT_NSTACK_MAIN_ABNORMAL == alarm_idx)
- {
- need_check_flag = 0;
- }
- /* for send current status alarm, needn't check count also status. */
- /* for sending current state alarm, needn't check current state */
- if ((alarm_id_report.alarm_flag_get == ALARM_PRODUCT)
- && (((alarm_value->alarm_time_laps[alarm_loop] < check_times)
- && (alarm_value->_alarm_flag != ALARM_PRODUCT))
- || (need_check_flag == 0)))
- {
- if ((0 == check_state_flag)
- || ++(alarm_value->alarm_time_laps[alarm_loop]) >= check_times)
- {
- alarm_value->_alarm_flag = ALARM_PRODUCT;
- abnormal_alarm_flag = 1;
- total_abnormal_alarm_flag++;
- }
-
- }
- else if ((alarm_id_report.alarm_flag_get == ALARM_CLEAN)
- && ((alarm_value->_alarm_flag == ALARM_PRODUCT)
- || (need_check_flag == 0)))
- {
- if ((1 == check_state_flag)
- && (alarm_value->alarm_time_laps[alarm_loop] > 0))
- {
- --alarm_value->alarm_time_laps[alarm_loop];
- }
- if ((alarm_value->alarm_time_laps[alarm_loop] <= 0)
- || (0 == check_state_flag))
- {
- normal_alarm_flag++;
- }
- }
-
- temp_alarm_time_laps = alarm_value->alarm_time_laps[alarm_loop];
-
- /* can't product same alarm multi times */
- /* only overload alarm can send */
- if (abnormal_alarm_flag != 1)
- {
- NSAM_LOGDBG
- ("don't satisfy alarm condition]alarm_idx=%d,alarm_time_laps=%d",
- alarm_idx, temp_alarm_time_laps);
- continue;
- }
-
- ret = ns_send_alarm_to_alarm_module (alarm_id_report);
-
- if (-1 == ret)
- {
- ns_alarm_set_sendFlag (alarm_id, ALARM_SEND_FAIL);
- }
- else
- {
- ns_alarm_set_sendFlag (alarm_id, ALARM_SEND_SUCC);
- }
- /* for alarm current status, only can send one */
- /* if it have multi-scearo, only can send a overload alarm */
- if (0 == need_check_flag)
- {
- break;
- }
-
- }
-
- if ((total_abnormal_alarm_flag == 0)
- && (alarm_value->alarm_reason_cnt == normal_alarm_flag))
- {
- alarm_value->_alarm_flag = ALARM_CLEAN;
- ret = ns_send_alarm_to_alarm_module (alarm_id_report);
- if (-1 == ret)
- {
- ns_alarm_set_sendFlag (alarm_id, ALARM_SEND_FAIL);
- }
- else
- {
- ns_alarm_set_sendFlag (alarm_id, ALARM_SEND_SUCC);
- }
- }
-
- return;
-
-}
-
-/*******************************************************************
-* Copyright 2017, Huawei Tech. Co., Ltd.
-* ALL RIGHTS RESERVED
-*Description : API, any app want to product alarm,need call this function
-********************************************************************/
-void
-ns_send_alarm (enum_alarm_id alarm_id, void *para)
-{
- ns_send_alarm_inner (alarm_id, para, 1, 1);
-}
-
-/*******************************************************************
-* Copyright 2017, Huawei Tech. Co., Ltd.
-* ALL RIGHTS RESERVED
-*Description : period check alarm expire handle function
-********************************************************************/
-int
-ns_alarm_timer_proc_fun (u32 timer_type, void *argv)
-{
- struct timespec time_left;
- if (NULL == argv)
- {
- NSAM_LOGERR ("abnormal: argv is NULL ");
- return -1;
- }
-
- alarm_data *alarm_value = (alarm_data *) argv;
-
- if (alarm_value->_alarm_type == ALARM_PERIOD_CHECK)
- {
- ns_send_alarm_inner (alarm_value->_alarm_id, NULL,
- ALARM_PERIOD_CHECK_TIMES, 1);
- time_left.tv_sec = alarm_value->_alarm_para.period_alarm.time_length;
- time_left.tv_nsec = 0;
- nsfw_timer_info *timer_info =
- nsfw_timer_reg_timer (0, (void *) (u64) alarm_value,
- ns_alarm_timer_proc_fun, time_left);
- if (NULL == timer_info)
- {
- NSAM_LOGERR ("nsfw_timer_reg_timer fail");
- return -1;
- }
- }
- NSAM_LOGDBG ("abnormal: alarm is not period ");
-
- return 0;
-
-}
-
-/*******************************************************************
-* Copyright 2017, Huawei Tech. Co., Ltd.
-* ALL RIGHTS RESERVED
-*Description : app reg alarm info to alarm module
-********************************************************************/
-int
-ns_reg_alarm (enum_alarm_id alarm_id, alarm_type alarmType,
- alarm_para * alarmPara)
-{
- alarm_data *alarm_value = NULL;
- alarm_reason loop = ALARM_REASON_BEGIN;
- struct timespec time_left;
-
- if ((alarm_id <= ALARM_EVENT_BASE) || (alarm_id >= ALARM_EVENT_MAX)
- || (NULL == alarmPara)
- || (alarmPara->alarm_reason_count > ALARM_REASON_MAX))
- {
- NSAM_LOGERR ("para invalid]alarm_id=%d ", alarm_id);
- return -1;
- }
-
- for (loop = ALARM_REASON_BEGIN; loop < alarmPara->alarm_reason_count;
- loop++)
- {
- if (NULL == alarmPara->func_alarm_check[loop])
- {
- NSAM_LOGERR ("para invalid]func_alarm_check=NULL,loop=%d", loop);
- return -1;
- }
- }
-
- alarm_value = &g_alarm_data[alarm_id];
- alarm_value->_alarm_type = alarmType;
- alarm_value->_alarm_para.period_alarm.time_length =
- alarmPara->period_alarm.time_length;
- alarm_value->_alarm_id = alarm_id;
- alarm_value->alarm_reason_cnt = alarmPara->alarm_reason_count;
- alarm_value->_alarm_flag = ALARM_CLEAN;
-
- for (loop = ALARM_REASON_BEGIN; loop < alarmPara->alarm_reason_count;
- loop++)
- {
- alarm_value->alarm_time_laps[loop] = alarmPara->alarm_reason_set[loop];
- alarm_value->_alarm_para.func_alarm_check[loop] =
- alarmPara->func_alarm_check[loop];
- alarm_value->_alarm_para.func_alarm_check_period[loop] =
- alarmPara->func_alarm_check_period[loop];
- alarm_value->alarm_time_laps[loop] = 0;
- }
-
- alarm_value->valid_flag = 1;
-
- if (ALARM_PERIOD_CHECK == alarmType)
- {
- time_left.tv_sec = alarm_value->_alarm_para.period_alarm.time_length;
- time_left.tv_nsec = 0;
- nsfw_timer_info *timer_info =
- nsfw_timer_reg_timer (0, (void *) (u64) alarm_value,
- ns_alarm_timer_proc_fun, time_left);
- if (NULL == timer_info)
- {
- NSAM_LOGERR ("nsfw_timer_reg_timer fail");
- }
- }
-
- return 0;
-}
-
-/*******************************************************************
-* Copyright 2017, Huawei Tech. Co., Ltd.
-* ALL RIGHTS RESERVED
-*Description : send alarm as per current state
-********************************************************************/
-void
-ns_send_init_alarm (enum_alarm_id alarm_id)
-{
- if ((alarm_id <= 0) || (alarm_id >= ALARM_EVENT_MAX))
- {
- NSAM_LOGDBG ("alarm_id is invalid");
- return;
- }
- ns_send_alarm_inner (alarm_id,
- (void *) (g_alarm_data[alarm_id]._alarm_flag), 1, 0);
-}
-
-NSFW_MODULE_NAME (NSFW_ALARM_MODULE)
-NSFW_MODULE_PRIORITY (10)
-NSFW_MODULE_DEPENDS (NSTACK_DMM_MODULE)
-NSFW_MODULE_INIT (ns_alarm_module_init)
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif /* __cplusplus */
diff --git a/stacks/lwip_stack/src/alarm/alarm.h b/stacks/lwip_stack/src/alarm/alarm.h
deleted file mode 100644
index 4c5f692..0000000
--- a/stacks/lwip_stack/src/alarm/alarm.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
-*
-* 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 _ALARM_H_
-#define _ALARM_H_
-
-#include <stdint.h>
-#include "alarm_api.h"
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C" {
-/* *INDENT-ON* */
-#endif
-
-/* alarm clean time = 1*3 */
-
-#define ALARM_RESEND_TIMER_LENGTH 60
-#define ALARM_INIT_RESEND_TIMER_LENGTH 40
-
-#define ALARM_SEND_SUCC 1
-#define ALARM_SEND_FAIL 0
-
-#define ALARM_PARA_LENGTH_OUTER 2048
-
-#define ALARM_PERIOD_CHECK_TIMES 3
-
-#define MAX_VMID_LEN 256
-
-#define MIN_VM_ID_LEN 1
-#define MAX_VM_ID_LEN 256
-
-#define INVALID_STR_LEN(_str, _min_len, _maxlen) (NULL == _str || strlen(_str) < _min_len || strlen(_str) > _maxlen)
-
-typedef struct _alarm_data
-{
- alarm_para _alarm_para;
- alarm_type _alarm_type;
- enum_alarm_id _alarm_id;
- int alarm_time_laps[ALARM_REASON_MAX];
- alarm_flag _alarm_flag;
- int alarm_reason_cnt;
- int valid_flag;
- int send_succ_flag;
-
-} alarm_data;
-
-typedef struct _alarm_info_s_out
-{
- char alarmId[16];
- char comptentname[32];
- char alarmtime[32];
- char alarmcontent[ALARM_PARA_LENGTH_OUTER];
-} alarm_info_s_out;
-
-int ns_send_alarm_to_alarm_module (alarm_result alarm_res);
-
-void ns_send_alarm_inner (enum_alarm_id alarm_id, void *para, int check_times,
- int check_state_flag);
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif
-
-#endif
diff --git a/stacks/lwip_stack/src/alarm/alarm_api.h b/stacks/lwip_stack/src/alarm/alarm_api.h
deleted file mode 100644
index 8c7aca1..0000000
--- a/stacks/lwip_stack/src/alarm/alarm_api.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
-*
-* 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 _ALARM_API_H_
-#define _ALARM_API_H_
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C" {
-/* *INDENT-ON* */
-#endif
-
-#define NSFW_ALARM_MODULE "nstack_alarm"
-
-/* alarm ID for every event, when need add new alarm, here add a alarm_id define */
-typedef enum _alarm_id
-{
- ALARM_EVENT_BASE,
- ALARM_EVENT_NSTACK_RESOURCE_ALARM,
- ALARM_EVENT_NSTACK_NO_USE,
- ALARM_EVENT_NSTACK_MAIN_ABNORMAL,
- ALARM_EVENT_MAX
-} enum_alarm_id;
-
-/* support both type alarm:
- 1. support other module call func:ns_send_alarm to product alarm;
- 2. alarm module call function periodly to check whether need product alarm */
-typedef enum _alarm_type
-{
- ALARM_PERIOD_CHECK,
- ALARM_SEND_ONCE
-} alarm_type;
-
-typedef enum _alarm_flag
-{
- ALARM_PRODUCT,
- ALARM_CLEAN,
- ALARM_MAX
-} alarm_flag;
-
-typedef enum _alarm_reason
-{
- ALARM_REASON_BEGIN,
- ALARM_REASON_SOCKET = 0,
- ALARM_REASON_MSG_BUF,
- ALARM_REASON_NSMAIN,
- ALARM_REASON_MAX
-} alarm_reason;
-
-typedef struct _alarm_result
-{
- enum_alarm_id alarm_id_get;
- alarm_reason alarm_reason_get;
- alarm_flag alarm_flag_get;
-} alarm_result;
-
-/* check whether need product alarm,if return 0, then product alarm */
-typedef alarm_result (*alarm_check_func) (void *para);
-typedef alarm_result (*alarm_check_func_period) (void);
-
-typedef struct _alarm_para
-{
- union
- {
- int time_length;
- } period_alarm;
- union
- {
- alarm_check_func func_alarm_check[ALARM_REASON_MAX];
- alarm_check_func_period func_alarm_check_period[ALARM_REASON_MAX];
- };
-
- alarm_reason alarm_reason_set[ALARM_REASON_MAX];
- int alarm_reason_count;
-
-} alarm_para;
-
-/* for any alarm added, firstly call following function to reg */
-int ns_reg_alarm (enum_alarm_id alarm_id, alarm_type _alarm_type,
- alarm_para * _alarm_para);
-
-void ns_send_init_alarm (enum_alarm_id alarm_id);
-
-/* other module call this func to product alarm, here para is same as alarm_check_func's para */
-void ns_send_alarm (enum_alarm_id alarm_id, void *para);
-int ns_alarm_module_init (void *param);
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif
-
-#endif
diff --git a/stacks/lwip_stack/src/include/nsfw_msg.h b/stacks/lwip_stack/src/include/nsfw_msg.h
deleted file mode 100644
index e5254d3..0000000
--- a/stacks/lwip_stack/src/include/nsfw_msg.h
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
-*
-* 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 MSG_H
-#define MSG_H
-#include "types.h"
-#include "common_mem_api.h"
-#include "nsfw_rti.h"
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C" {
-/* *INDENT-ON* */
-#endif
-
-#define MAX_MSG_SIZE 512
-COMPAT_PROTECT (MAX_MSG_SIZE, 512);
-#define MAX_MSG_PARAM_SIZE 128
-COMPAT_PROTECT (MAX_MSG_PARAM_SIZE, 128);
-
-#define MSG_ASYN_POST 0
-#define MSG_SYN_POST 1
-
-typedef struct
-{
- u16 module_type;
- u16 major_type;
- u16 minor_type;
- u16 op_type; /* MSG_SYN_POST or MSG_ASYN_POST */
- sys_sem_st op_completed;
- i32 err;
- PRIMARY_ADDR void *msg_from; /* use it to free msg */
- i64 receiver;
- i64 comm_receiver;
- nsfw_res res_chk;
- u32 src_pid;
- u32 recycle_pid; /* use it in recycle */
- u64 span_pid;
- i64 extend_member_bit;
-} msg_param;
-
-typedef struct msg_t
-{
- msg_param param;
- i8 msg_param_pad[MAX_MSG_PARAM_SIZE - sizeof (msg_param)]; /* sizeof(msg_param) + sizeof(msg_param_pad) = MAX_MSG_PARAM_SIZE */
- i64 buffer[(MAX_MSG_SIZE - MAX_MSG_PARAM_SIZE) / 8];
-}
-data_com_msg;
-
-#define MAX_MODULE_TYPE 64
-#define MAX_MAJOR_TYPE 256
-#define MAX_MINOR_TYPE 256
-
-struct rti_queue
-{
- /* corresponding to enum spl_tcpip_msg_type */
- volatile u64 tcpip_msg_enq[MAX_MAJOR_TYPE];
- volatile u64 tcpip_msg_enq_fail[MAX_MAJOR_TYPE];
- u64 tcpip_msg_deq[MAX_MAJOR_TYPE];
-
- /* corresponding to enum api_msg_type, this is sub-type of SPL_TCPIP_NEW_MSG_API */
- volatile u64 api_msg_enq[MAX_MINOR_TYPE];
- volatile u64 api_msg_enq_fail[MAX_MINOR_TYPE];
- u64 api_msg_deq[MAX_MINOR_TYPE];
-
- u64 extend_member_bit;
-};
-
-enum MSG_MODULE_TYPE
-{
- MSG_MODULE_IP,
- MSG_MODULE_SBR,
- MSG_MODULE_HAL,
- MSG_MODULE_SPL,
- MSG_MODULE_TIMER,
- MSG_MODULE_MT,
- MSG_MODULE_DFX,
- MSG_MODULE_MAX = MAX_MODULE_TYPE
-};
-
-typedef int (*msg_fun) (data_com_msg * m);
-
-/* *INDENT-OFF* */
-extern msg_fun g_msg_module_fun_array[MAX_MODULE_TYPE];
-extern msg_fun g_msg_module_major_fun_array[MAX_MODULE_TYPE][MAX_MAJOR_TYPE];
-extern msg_fun g_msg_module_major_minor_fun_array[MAX_MODULE_TYPE][MAX_MAJOR_TYPE][MAX_MINOR_TYPE];
-extern msg_fun g_msg_unsupport_fun;
-/* *INDENT-ON* */
-
-#define REGIST_MSG_MODULE_FUN(module, fun) \
- static void regist_ ## module ## _function (void) \
- __attribute__((__constructor__)); \
- static void regist_ ## module ## _function (void) \
- { \
- g_msg_module_fun_array[module] = fun; \
- } \
-
-#define REGIST_MSG_MODULE_MAJOR_FUN(module, major, fun) \
- static void regist_ ## module ## major ## _function (void) \
- __attribute__((__constructor__)); \
- static void regist_ ## module ## major ## _function (void) \
- { \
- g_msg_module_major_fun_array[module][major] = fun; \
- } \
-
-#define REGIST_MSG_MODULE_MAJOR_MINOR_FUN(module, major, minor, fun) \
- static void regist_ ## module ## major ## minor ## _function (void) \
- __attribute__((__constructor__)); \
- static void regist_ ## module ## major ## minor ## _function (void) \
- { \
- g_msg_module_major_minor_fun_array[module][major][minor] = fun; \
- } \
-
-#define REGIST_MSG_UNSUPPORT_FUN(fun) \
- static void regist_msg_unsupport_function (void) \
- __attribute__((__constructor__)); \
- static void regist_msg_unsupport_function (void) \
- { \
- g_msg_unsupport_fun = fun; \
- }
-
-static inline int
-unsupport_msg (data_com_msg * m)
-{
- if (g_msg_unsupport_fun)
- {
- return g_msg_unsupport_fun (m);
- }
-
- return -1;
-}
-
-/*****************************************************************************
-* Prototype : call_msg_fun
-* Description : call msg fun
-* Input : data_com_msg* m
-* Output : None
-* Return Value : static inline int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-static inline int
-call_msg_fun (data_com_msg * m)
-{
- u16 module = m->param.module_type;
- u16 major = m->param.major_type;
- u16 minor = m->param.minor_type;
-
- if ((module >= MAX_MODULE_TYPE) || (major >= MAX_MAJOR_TYPE)
- || (minor >= MAX_MINOR_TYPE))
- {
- return unsupport_msg (m);
- }
-
- nsfw_rti_stat_macro (NSFW_STAT_PRIMARY_DEQ, m);
-
- if (g_msg_module_fun_array[module]
- && (g_msg_module_fun_array[module] (m) != 0))
- {
- return -1;
- }
-
- if (g_msg_module_major_fun_array[module][major]
- && (g_msg_module_major_fun_array[module][major] (m) != 0))
- {
- return -1;
- }
-
- if (g_msg_module_major_minor_fun_array[module][major][minor])
- {
- return g_msg_module_major_minor_fun_array[module][major][minor] (m);
- }
-
- if (!g_msg_module_fun_array[module]
- && !g_msg_module_major_fun_array[module][major]
- && !g_msg_module_major_minor_fun_array[module][major][minor])
- {
- return unsupport_msg (m);
- }
-
- return 0;
-}
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif
-
-#endif
diff --git a/stacks/lwip_stack/src/include/nsfw_msg_api.h b/stacks/lwip_stack/src/include/nsfw_msg_api.h
deleted file mode 100644
index 85dca49..0000000
--- a/stacks/lwip_stack/src/include/nsfw_msg_api.h
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
-*
-* 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 MSG_API_H
-#define MSG_API_H
-#include "nsfw_msg.h"
-#include "nsfw_mem_api.h"
-#include "nstack_log.h"
-#include "nsfw_rti.h"
-#include "common_mem_api.h"
-#include "nsfw_recycle_api.h"
-#include "common_pal_bitwide_adjust.h"
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C" {
-/* *INDENT-ON* */
-#endif
-
-#define SET_MSG_ERR(m, error) ((m)->param.err = (error))
-#define GET_MSG_ERR(m) ((m)->param.err)
-
-/* for sync message from sbr we should signal sem */
-#define SYNC_MSG_ACK(m) sys_sem_s_signal(&((m)->param.op_completed))
-
-/* for async message from sbr we should free the message */
-#define ASYNC_MSG_FREE(m) msg_free(m)
-
-#define MSG_ENTRY(_ptr, _type, _member) container_of((void *)_ptr, _type, _member)
-
-#ifndef NSTACK_STATIC_CHECK
-/*****************************************************************************
-* Prototype : msg_malloc
-* Description : malloc msg
-* Input : mring_handle mhandle
-* Output : None
-* Return Value : static inline data_com_msg*
-* Calls :
-* Called By :
-*****************************************************************************/
-static inline data_com_msg *
-msg_malloc (mring_handle mhandle)
-{
- if (!mhandle)
- {
- NSFW_LOGERR ("mhandle is null");
- return NULL;
- }
-
- data_com_msg *m = NULL;
- if (nsfw_mem_ring_dequeue (mhandle, (void **) &m) != 1)
- {
- return NULL;
- }
-
- m->param.recycle_pid = get_sys_pid ();
- res_alloc (&m->param.res_chk);
- return m;
-}
-
-/*****************************************************************************
-* Prototype : msg_free
-* Description : free msg
-* Input : data_com_msg* m
-* mring_handle mhandle
-* Output : None
-* Return Value : static inline void
-* Calls :
-* Called By :
-*****************************************************************************/
-static inline void
-msg_free (data_com_msg * m)
-{
- if (!m)
- {
- NSFW_LOGERR ("m is NULL");
- return;
- }
-
- mring_handle mhandle = ADDR_SHTOL (m->param.msg_from);
- if (!mhandle)
- {
- return;
- }
-
- if (res_free (&m->param.res_chk))
- {
- NSFW_LOGERR ("m refree!]m=%p", m);
- return;
- }
-
- m->param.recycle_pid = 0;
-
- if (nsfw_mem_ring_enqueue (mhandle, (void *) m) != 1)
- {
- NSFW_LOGERR ("nsfw_mem_ring_enqueue failed,this can not happen");
- }
-}
-
-/*****************************************************************************
-* Prototype : msg_post
-* Description : post msg
-* Input : data_com_msg* m
-* mring_handle mhandle
-* Output : None
-* Return Value : static inline int
-* Calls :
-* Called By :
-*****************************************************************************/
-static inline int
-msg_post (data_com_msg * m, mring_handle mhandle)
-{
- int ret;
- if (!m || !mhandle)
- {
- NSFW_LOGERR ("param is not ok]m=%p,mhandle=%p", m, mhandle);
- return -1;
- }
-
- while (1)
- {
- ret = nsfw_mem_ring_enqueue (mhandle, (void *) m);
- switch (ret)
- {
- case 1:
- if (MSG_SYN_POST == m->param.op_type)
- {
- sys_arch_sem_s_wait (&m->param.op_completed, 0);
- }
-
- return 0;
- case 0:
- continue;
- default:
- nsfw_rti_stat_macro (NSFW_STAT_PRIMARY_ENQ_FAIL, m);
- return -1;
- }
- }
-}
-
-#define MSG_POST_FAILED 50
-/*****************************************************************************
-* Prototype : msg_post_with_lock_rel
-* Description : post msg to tcpip thread in mgrcom thread
-* Input : data_com_msg* m
-* mring_handle mhandle
-* Output : None
-* Return Value : static inline int
-* Calls :
-* Called By :
-*****************************************************************************/
-static inline int
-msg_post_with_lock_rel (data_com_msg * m, mring_handle mhandle)
-{
- int ret;
- int try_count = 0;
- if (!m || !mhandle)
- {
- NSFW_LOGERR ("param is not ok]m=%p,mhandle=%p", m, mhandle);
- return -1;
- }
-
- while (1)
- {
- ret = nsfw_mem_ring_enqueue (mhandle, (void *) m);
- switch (ret)
- {
- case 1:
- if (MSG_SYN_POST == m->param.op_type)
- {
- sys_arch_sem_s_wait (&m->param.op_completed, 0);
- }
-
- return 0;
- case 0:
- try_count++;
- if (try_count > MSG_POST_FAILED)
- {
- try_count = 0;
- nsfw_recycle_rechk_lock ();
- }
- sys_sleep_ns (0, 1000000);
- continue;
- default:
- nsfw_rti_stat_macro (NSFW_STAT_PRIMARY_ENQ_FAIL, m);
- return -1;
- }
- }
-}
-
-/*****************************************************************************
-* Prototype : msg_try_post
-* Description : try post msg
-* Input : data_com_msg* m
-* mring_handle mhandle
-* Output : None
-* Return Value : static inline int
-* Calls :
-* Called By :
-*****************************************************************************/
-static inline int
-msg_try_post (data_com_msg * m, mring_handle mhandle)
-{
- if (!m || !mhandle)
- {
- NSFW_LOGERR ("param is not ok]m=%p,mhandle=%p", m, mhandle);
- return -1;
- }
-
- int ret = nsfw_mem_ring_enqueue (mhandle, (void *) m);
- if (1 == ret)
- {
- if (MSG_SYN_POST == m->param.op_type)
- {
- sys_arch_sem_s_wait (&m->param.op_completed, 0);
- }
-
- return 0;
- }
-
- return -1;
-}
-
-/*****************************************************************************
-* Prototype : msg_fetch
-* Description : fetch msg
-* Input : mring_handle mhandle
-* data_com_msg** m
-* u32 num
-* Output : None
-* Return Value : static inline int
-* Calls :
-* Called By :
-*****************************************************************************/
-static inline int
-msg_fetch (mring_handle mhandle, data_com_msg ** m, u32 num)
-{
- if (!m || !mhandle)
- {
- NSFW_LOGERR ("param is not ok]m=%p,mhandle=%p", m, mhandle);
- return -1;
- }
-
- int ret;
- while (1)
- {
- ret = nsfw_mem_ring_dequeuev (mhandle, (void *) m, num);
- if (ret > 0)
- {
- break;
- }
- }
-
- return ret;
-}
-
-/*****************************************************************************
-* Prototype : msg_try_fetch
-* Description : try fetch msg
-* Input : mring_handle mhandle
-* data_com_msg** m
-* u32 num
-* Output : None
-* Return Value : static inline int
-* Calls :
-* Called By :
-*****************************************************************************/
-static inline int
-msg_try_fetch (mring_handle mhandle, data_com_msg ** m, u32 num)
-{
- if (!m || !mhandle)
- {
- NSFW_LOGERR ("param is not ok]m=%p,mhandle=%p", m, mhandle);
- return -1;
- }
-
- return nsfw_mem_ring_dequeuev (mhandle, (void *) m, num);
-}
-
-#else
-data_com_msg *msg_malloc (mring_handle mhandle);
-void msg_free (data_com_msg * m);
-int msg_post (data_com_msg * m, mring_handle mhandle);
-int msg_try_post (data_com_msg * m, mring_handle mhandle);
-int msg_fetch (mring_handle mhandle, data_com_msg ** m, u32 num);
-int msg_try_fetch (mring_handle mhandle, data_com_msg ** m, u32 num);
-int msg_post_with_lock_rel (data_com_msg * m, mring_handle mhandle);
-#endif
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif
-
-#endif
diff --git a/stacks/lwip_stack/src/include/nsfw_mt_config.h b/stacks/lwip_stack/src/include/nsfw_mt_config.h
deleted file mode 100644
index e1a7899..0000000
--- a/stacks/lwip_stack/src/include/nsfw_mt_config.h
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
-*
-* 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 _FW_MT_CONFIG_H
-#define _FW_MT_CONFIG_H
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C" {
-/* *INDENT-ON* */
-#endif
-
-#define NSFW_CONFIG_MODULE "nsfw_config"
-#define NSTACK_SHARE_CONFIG "nstack_share_config"
-
-#define CFG_PATH "NSTACK_CONFIG_PATH"
-#define CFG_FILE_NAME "nStackConfig.json"
-#define MAX_FILE_NAME_LEN 512
-#define CFG_BUFFER_LEN 2048
-#define MAX_CFG_ITEM 128
-#define CFG_ITEM_LENGTH 64
-
-enum NSTACK_BASE_CFG
-{
- CFG_BASE_SOCKET_NUM = 0,
- CFG_BASE_RING_SIZE,
- CFG_BASE_HAL_PORT_NUM,
- CFG_BASE_ARP_STALE_TIME,
- CFG_BASE_ARP_BC_RETRANS_NUM,
- MAX_BASE_CFG
-};
-COMPAT_PROTECT (MAX_BASE_CFG, 5);
-
-enum NSTACK_CUSTOM_CFG
-{
- /* mBuf config */
- CFG_MBUF_DATA_SIZE,
- CFG_TX_MBUF_NUM,
- CFG_RX_MBUF_NUM,
-
- /* memory pool config */
- CFG_MP_TCPSEG_NUM,
- CFG_MP_MSG_NUM,
-
- /* RING config */
- CFG_HAL_TX_RING_SIZE,
- CFG_HAL_RX_RING_SIZE,
- CFG_MBOX_RING_SIZE,
- CFG_SPL_MAX_RING_SIZE,
-
- /* PCB config */
- CFG_TCP_PCB_NUM,
- CFG_UDP_PCB_NUM,
- CFG_RAW_PCB_NUM,
-
- CFG_ARP_QUEUE_NUM,
-
- MAX_CUSTOM_CFG
-};
-COMPAT_PROTECT (CFG_SPL_MAX_RING_SIZE, 8);
-
-enum EN_CFG_SEG
-{
- CFG_SEG_BASE = 0,
- CFG_SEG_LOG,
- CFG_SEG_PATH,
- CFG_SEG_PRI,
- CFG_SEG_MAX
-};
-
-enum EN_CFG_ITEM_TYPE
-{
- CFG_ITEM_TYPE_INT = 0,
- CFG_ITEM_TYPE_STRING
-};
-
-enum EN_SEG_BASE_ITEM
-{
- CFG_SEG_BASE_SOCKET_NUM = 0,
- CFG_SEG_BASE_ARP_STALE_TIME,
- CFG_SEG_BASE_ARP_BC_RETRANS_NUM,
- CFG_SEG_BASE_MAX
-};
-
-enum EN_SEG_THREAD_PRI_ITEM
-{
- CFG_SEG_THREAD_PRI_POLICY = 0,
- CFG_SEG_THREAD_PRI_PRI,
- CFG_SEG_THREAD_PRI_MAX
-};
-
-typedef void (*custom_check_fn) (void *pitem);
-
-// pack size?
-struct cfg_item_info
-{
- char *name;
- int type;
- int min_value;
- int max_value;
- int default_value;
- char *default_str;
- custom_check_fn custom_check;
- union
- {
- int value;
- char *pvalue;
- };
-};
-
-typedef struct _cfg_module_param
-{
- u32 proc_type;
- i32 argc;
- u8 **argv;
-} cfg_module_param;
-
-extern u32 g_custom_cfg_items[MAX_CUSTOM_CFG];
-extern u32 g_base_cfg_items[MAX_BASE_CFG];
-
-#define get_base_cfg(tag) g_base_cfg_items[(tag)]
-#define get_custom_cfg(tag) g_custom_cfg_items[(tag)]
-#define set_custom_cfg_item(tag, value) g_custom_cfg_items[(tag)] = (value)
-
-/* stackx config data definition */
-
-/* app socket num */
-#define DEF_APP_SOCKET_NUM 1024
-
-/* socket num config */
-#define SOCKET_NUM_PER_THREAD 1024 /* socket number per thread */
-COMPAT_PROTECT (SOCKET_NUM_PER_THREAD, 1024);
-
-/*
- MAX_SOCKET_NUM: max socket fd number one app can use, it should equal the max socket
- number nstack support(CUR_CFG_SOCKET_NUM)
-*/
-
-#define DEF_SOCKET_NUM 1024 /* default socket number */
-COMPAT_PROTECT (DEF_SOCKET_NUM, 1024);
-#define MIN_SOCKET_NUM 1024 /* min socket number */
-
-#define MAX_SOCKET_NUM 8192 /* default: 8K sockets */
-
-#define CUR_CFG_SOCKET_NUM get_base_cfg(CFG_BASE_SOCKET_NUM) /* max socket numbere nstack support */
-
-#define DEF_ARP_STACLE_TIME 300 /* default arp stale time: second */
-#define MIN_ARP_STACLE_TIME 30 /* min arp stale time: second */
-#define MAX_ARP_STACLE_TIME 1200 /* max arp stale time: second */
-#define ARP_STALE_TIME get_base_cfg(CFG_BASE_ARP_STALE_TIME)
-
-#define DEF_ARP_BC_RETRANS_NUM 5 /* default arp broadcast retransmission times */
-#define MIN_ARP_BC_RETRANS_NUM 1 /* min arp broadcast retransmission times */
-#define MAX_ARP_BC_RETRANS_NUM 20 /* max arp broadcast retransmission times */
-#define ARP_BC_RETRANS_NUM get_base_cfg(CFG_BASE_ARP_BC_RETRANS_NUM)
-
-/* application mumber config */
-#define APP_POOL_NUM 32 /* max application number */
-COMPAT_PROTECT (APP_POOL_NUM, 32);
-
-/* thread number config */
-#define DEF_THREAD_NUM 1 /* default stackx thread number */
-#define MIN_THREAD_NUM 1 /* min thread number */
-#define MAX_THREAD_NUM 1 /* max thread number */
-COMPAT_PROTECT (MAX_THREAD_NUM, 1);
-
-/* hash size */
-#define MAX_TCP_HASH_SIZE 4096
-
-/* hal port number config */
-#define DEF_HAL_PORT_NUM 20 /* port number */
-COMPAT_PROTECT (DEF_HAL_PORT_NUM, 20);
-#define MIN_HAL_PORT_NUM 1
-#define MAX_HAL_PORT_NUM 255
-#define CUR_CFG_HAL_PORT_NUM get_base_cfg(CFG_BASE_HAL_PORT_NUM)
-
-/* vm number config */
-#define MAX_VF_NUM 4 /* max vf number */
-COMPAT_PROTECT (MAX_VF_NUM, 4);
-
-/* base ring size config */
-#define DEF_RING_BASE_SIZE 2048 /* base ring size */
-COMPAT_PROTECT (DEF_RING_BASE_SIZE, 2048);
-#define MIN_RING_BASE_SIZE 1024
-#define MAX_RING_BASE_SIZE 4096
-#define POOL_RING_BASE_SIZE get_base_cfg(CFG_BASE_RING_SIZE)
-
-/* mbuf data size config */
-#define DEF_MBUF_DATA_SIZE 2048 /* mbuf data size */
-COMPAT_PROTECT (DEF_MBUF_DATA_SIZE, 2048);
-#define TX_MBUF_MAX_LEN get_custom_cfg(CFG_MBUF_DATA_SIZE)
-
-/* tx mbuf pool size config */
-#define DEF_TX_MBUF_POOL_SIZE (4*POOL_RING_BASE_SIZE) /* tx mbuf pool size */
-
-#define TX_MBUF_POOL_SIZE get_custom_cfg(CFG_TX_MBUF_NUM)
-
-/* rx mbuf pool size config */
-#define DEF_RX_MBUF_POOL_SIZE (8*POOL_RING_BASE_SIZE) /* rx mbuf pool size */
-
-#define RX_MBUF_POOL_SIZE get_custom_cfg(CFG_RX_MBUF_NUM)
-
-/* hal netif rx/tx ring size config */
-#define DEF_HAL_RX_RING_SIZE 2048 /* hal rx ring size */
-
-#define DEF_HAL_TX_RING_SIZE 2048 /* hal tx ring size */
-#define HAL_RX_RING_SIZE get_custom_cfg(CFG_HAL_RX_RING_SIZE)
-#define HAL_TX_RING_SIZE get_custom_cfg(CFG_HAL_TX_RING_SIZE)
-
-/* stackx recv ring size config */
-#define DEF_SPL_MAX_RING_SIZE 1024
-COMPAT_PROTECT (DEF_SPL_MAX_RING_SIZE, 1024);
-
-#define SPL_MAX_RING_SIZE get_custom_cfg(CFG_SPL_MAX_RING_SIZE) /* ring size config, used in recv ring(per socket) */
-
-/* pcb number config */
-#define DEF_TCP_PCB_NUM 4096 /* tcp pcb number, per thread */
-COMPAT_PROTECT (DEF_TCP_PCB_NUM, 4096);
-#define DEF_UDP_PCB_NUM 512 /* udp pcb number, per thread */
-COMPAT_PROTECT (DEF_UDP_PCB_NUM, 512);
-#define DEF_RAW_PCB_NUM 600 /* raw pcb number, per thread */
-COMPAT_PROTECT (DEF_RAW_PCB_NUM, 600);
-
-#define DEF_ARP_QUEUE_NUM 300
-#define LARGE_ARP_QUEUE_NUM (512*1024)
-
-#define SPL_MEMP_NUM_TCP_PCB get_custom_cfg(CFG_TCP_PCB_NUM)
-
-#define SPL_MEMP_NUM_UDP_PCB get_custom_cfg(CFG_UDP_PCB_NUM)
-#define SPL_MEMP_NUM_RAW_PCB get_custom_cfg(CFG_RAW_PCB_NUM)
-
-#define SPL_MEMP_NUM_ARP_QUEUE get_custom_cfg(CFG_ARP_QUEUE_NUM)
-
-/* tcp seg number config */
-#define DEF_MEMP_NUM_TCP_SEG (2*APP_POOL_NUM*DEF_TX_MBUF_POOL_SIZE)
-#define SPL_MEMP_NUM_TCP_SEG get_custom_cfg(CFG_MP_TCPSEG_NUM) /* tcp segment number, per thread */
-
-/* stackx internal msg number config */
-#define DEF_TX_MSG_POOL_SIZE (DEF_TX_MBUF_POOL_SIZE*APP_POOL_NUM + MAX_VF_NUM*DEF_RX_MBUF_POOL_SIZE + DEF_RING_BASE_SIZE)
-
-#define TX_MSG_POOL_SIZE get_custom_cfg(CFG_MP_MSG_NUM) /* msg number, used by stackx internal, per thread */
-
-/* mbox ring size config */
-#define DEF_MBOX_RING_SIZE (DEF_RING_BASE_SIZE/4)
-COMPAT_PROTECT (DEF_MBOX_RING_SIZE, 512);
-
-#define MBOX_RING_SIZE get_custom_cfg(CFG_MBOX_RING_SIZE) /* mbox ring size config, per thread */
-
-/*some probem if CUSOTM_RECV_RING_SIZE more than 4096*/
-#define CUSOTM_RECV_RING_SIZE 4096
-COMPAT_PROTECT (CUSOTM_RECV_RING_SIZE, 4096);
-
-/*==============================================*
- * constants or macros define *
- *----------------------------------------------*/
-#define set_cfg_info(tag, item, min, max, def) { \
- g_cfg_item_info[tag][item].min_value = (min); \
- g_cfg_item_info[tag][item].max_value = (max); \
- g_cfg_item_info[tag][item].default_value = (def);\
- g_cfg_item_info[tag][item].value = (def);\
-}
-
-#define get_cfg_info(tag, item) g_cfg_item_info[tag][item].value
-
-u32 get_cfg_share_mem_size ();
-
-int get_share_cfg_from_mem (void *mem);
-
-int set_share_cfg_to_mem (void *mem);
-
-void config_module_init (cfg_module_param * param);
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif
-
-#endif
diff --git a/stacks/lwip_stack/src/include/nsfw_rti.h b/stacks/lwip_stack/src/include/nsfw_rti.h
deleted file mode 100644
index 6b81942..0000000
--- a/stacks/lwip_stack/src/include/nsfw_rti.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-*
-* 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 RTI_H
-#define RTI_H
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C" {
-/* *INDENT-ON* */
-#endif
-
-#define nsfw_rti_stat_macro(type, m) if (1 == g_dfx_switch) { nsfw_rti_stat(type, m); }
-
-typedef enum nsfw_rti_stat_type
-{
- NSFW_STAT_PRIMARY_ENQ,
- NSFW_STAT_PRIMARY_ENQ_FAIL,
- NSFW_STAT_PRIMARY_DEQ,
-} nsfw_rti_stat_type_t;
-
-typedef struct nsfw_app_info
-{
- int nsocket_fd;
- int sbr_fd;
-
- int hostpid;
- int pid;
- int ppid;
-
- u64 reserve1;
- u64 reserve2;
- u64 reserve3;
- u64 reserve4;
-
- u64 extend_member_bit;
-} nsfw_app_info_t;
-
-struct rti_queue;
-struct msg_t;
-
-extern char g_dfx_switch;
-extern struct rti_queue *g_nsfw_rti_primary_stat;
-
-void nsfw_rti_stat (nsfw_rti_stat_type_t statType, const struct msg_t *m);
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif
-
-#endif
diff --git a/stacks/lwip_stack/src/io_adpt/CMakeLists.txt b/stacks/lwip_stack/src/io_adpt/CMakeLists.txt
deleted file mode 100644
index ae18116..0000000
--- a/stacks/lwip_stack/src/io_adpt/CMakeLists.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-#########################################################################
-#
-# 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.
-#########################################################################
-
-FILE(GLOB_RECURSE HAL *.c)
-
-if(WITH_HAL_LIB)
-else()
-endif()
-
-
-INCLUDE_DIRECTORIES(
- ./
- ${PROJECT_SOURCE_DIR}/src/include/
- ${PROJECT_SOURCE_DIR}/src/include/generic/
- /usr/include/dpdk/
-)
-LINK_LIBRARIES(m dl rt dmm_api)
-ADD_LIBRARY(nStackHal STATIC ${HAL})
diff --git a/stacks/lwip_stack/src/io_adpt/dpdk.c b/stacks/lwip_stack/src/io_adpt/dpdk.c
deleted file mode 100644
index 8518112..0000000
--- a/stacks/lwip_stack/src/io_adpt/dpdk.c
+++ /dev/null
@@ -1,2476 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#include <stdint.h>
-#include <sched.h>
-#include <dlfcn.h>
-#include <sys/socket.h>
-#include <arpa/inet.h>
-#include <net/if.h>
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <sys/file.h>
-#include <pwd.h>
-#include <dirent.h>
-#include <sys/stat.h>
-#include <fnmatch.h>
-#include <linux/ethtool.h>
-#include <linux/sockios.h>
-
-#include <rte_config.h>
-#include <rte_ethdev.h>
-#include <rte_mbuf.h>
-#include <rte_eth_bond.h>
-#include "nsfw_init.h"
-#include "common_mem_mbuf.h"
-#include "common_mem_mempool.h"
-#include "common_func.h"
-#include "hal.h"
-#include "nstack_securec.h"
-#include <rte_ethdev_driver.h>
-
-#define DPDK_NON_ROOT_USER_NAME "paas"
-#define DPDK_TOOL_ENV "DPDK_TOOL_DIR"
-#define DPDK_NIC_LIST_FILE "%s/ip_module/.nstack_dpdk_nic_list"
-#define SOCKET_ID_0 0
-
-NSTACK_STATIC struct passwd *dpdk_non_root_user;
-NSTACK_STATIC char dpdk_tool_path[HAL_MAX_PATH_LEN] = { 0 };
-
-/* Default configuration for rx and tx thresholds etc. */
-NSTACK_STATIC const struct rte_eth_rxconf rx_conf_default_igb = {
- .rx_thresh = {
- .pthresh = 8,
- .hthresh = 8,
- .wthresh = 1, //not bigger than 1
- },
-};
-
-/*
- * These default values are optimized for use with the Intel(R) 82576 1 GbE
- * Controller and the DPDK e1000 PMD. Consider using other values for other
- * network controllers and/or network drivers.
- */
-NSTACK_STATIC const struct rte_eth_txconf tx_conf_default_igb = {
- .tx_thresh = {
- .pthresh = 8,
- .hthresh = 1,
- .wthresh = 16,
- },
- .tx_free_thresh = 0, /* Use PMD default values */
- .tx_rs_thresh = 0, /* Use PMD default values */
-};
-
-/*
- * RX and TX Prefetch, Host, and Write-back threshold values should be
- * carefully set for optimal performance. Consult the network
- * controller's datasheet and supporting DPDK documentation for guidance
- * on how these parameters should be set.
- */
-
-/* Default configuration for rx and tx thresholds etc. */
-NSTACK_STATIC const struct rte_eth_rxconf rx_conf_default_ixgbe = {
- .rx_thresh = {
- .pthresh = 8,
- .hthresh = 8,
- .wthresh = 4,
- },
- .rx_free_thresh = 0,
-};
-
-/*
- * These default values are optimized for use with the Intel(R) 82599 10 GbE
- * Controller and the DPDK ixgbe PMD. Consider using other values for other
- * network controllers and/or network drivers.
- */
-NSTACK_STATIC const struct rte_eth_txconf tx_conf_default_ixgbe = {
- .tx_thresh = {
- .pthresh = 36,
- .hthresh = 0,
- .wthresh = 0,
- },
- .tx_free_thresh = 0, /* Use PMD default values */
- .tx_rs_thresh = 0, /* Use PMD default values */
- .txq_flags = 0,
-};
-
-/* the port configuration of normal port */
-NSTACK_STATIC struct rte_eth_conf port_conf_default_normal = {
- .rxmode = {
- .mq_mode = ETH_RSS,
- .max_rx_pkt_len = ETHER_MAX_LEN,
- .split_hdr_size = 0,
- .header_split = 0,
- .hw_ip_checksum = 1,
- .hw_vlan_filter = 1,
- .hw_vlan_strip = 1,
- .jumbo_frame = 0,
- .hw_strip_crc = 0,
- },
- .rx_adv_conf = {
- .rss_conf = {
- .rss_key = NULL,
- .rss_hf = (ETH_RSS_IPV4 | ETH_RSS_NONFRAG_IPV4_TCP | ETH_RSS_NONFRAG_IPV4_UDP), //rss hash key
- },
- },
- .txmode = {
- .mq_mode = ETH_DCB_NONE,
- },
- .intr_conf = {
- .lsc = 0,
- },
-};
-
-/* the port configuration of virtio port */
-NSTACK_STATIC struct rte_eth_conf port_conf_default_virtio = {
- .rxmode = {
- .mq_mode = ETH_RSS,
- .max_rx_pkt_len = ETHER_MAX_LEN,
- .split_hdr_size = 0,
- .header_split = 0,
- .hw_ip_checksum = 0, /* Virtio NIC doesn't support HW IP CheckSUM */
- .hw_vlan_filter = 1,
- .hw_vlan_strip = 1,
- .jumbo_frame = 0,
- .hw_strip_crc = 0,
- },
- .rx_adv_conf = {
- .rss_conf = {
- .rss_key = NULL,
- .rss_hf = (ETH_RSS_IPV4 | ETH_RSS_NONFRAG_IPV4_TCP | ETH_RSS_NONFRAG_IPV4_UDP), //rss hash key
- },
- },
- .txmode = {
- .mq_mode = ETH_DCB_NONE,
- },
- .intr_conf = {
- .lsc = 0,
- },
-};
-
-/* the port configuration of bond port */
-NSTACK_STATIC struct rte_eth_conf port_conf_default_bond = {
- .rxmode = {
- .mq_mode = ETH_MQ_RX_NONE,
- .max_rx_pkt_len = ETHER_MAX_LEN,
- .split_hdr_size = 0,
- .header_split = 0,
- /**< Header Split disabled */
- .hw_ip_checksum = 0,
- /**< IP checksum offload enabled */
- .hw_vlan_filter = 1,
- /**< VLAN filtering enabled */
- .hw_vlan_strip = 1,
- .jumbo_frame = 0,
- /**< Jumbo Frame Support disabled */
- .hw_strip_crc = 0,
- /**< CRC stripped by hardware */
- },
- .rx_adv_conf = {
- .rss_conf = {
- .rss_key = NULL,
- .rss_hf = ETH_RSS_IP,
- },
- },
- .txmode = {
- .mq_mode = ETH_MQ_TX_NONE,
- },
-};
-
-NSTACK_STATIC struct rte_eth_conf port_conf_default_vhost = {
- .rxmode = {
- .hw_ip_checksum = 0, /* vhost nic doesn't support hw_ip_checksum and hw_vlan_filter */
- .hw_vlan_filter = 0,
- }
-};
-
-/*****************************************************************************
-* Prototype : dpdk_mbuf_to_file
-* Description : write the packet data into a file
-* Input : uint16_t pkt_number
-* struct rte_mbuf **pkts
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-NSTACK_STATIC void
-dpdk_mbuf_to_file (uint16_t pkt_number, struct rte_mbuf **pkts)
-{
- char line[100] = { 0 };
- FILE *f = NULL;
- struct rte_mbuf *p = NULL;
- uint16_t len = 0, offset, i;
- uint16_t pktlen = 0;
- uint16_t start = 0;
- uint16_t number = 0;
- unsigned char *data = NULL;
-
- f = fopen ("/var/log/nStack/packet.txt", "a+");
- if (f == NULL)
- {
- NSHAL_LOGERR ("can not open the file:%s", "packet.txt");
- return;
- }
-
- for (i = 0; i < pkt_number; i++)
- {
- pktlen = 0;
- p = pkts[i];
- while (p)
- {
- len = 0;
- data = rte_pktmbuf_mtod (p, unsigned char *);
- while (len < p->data_len)
- {
- start = pktlen % 16; /* start of the line */
- if (start == 0)
- {
- number = SNPRINTF_S (line, sizeof (line), sizeof (line) - 1,
- "%08X", len);
- }
-
- for (offset = 0;
- ((offset + start) < 16) && ((len + offset) < p->data_len);
- offset++)
- {
- number +=
- SNPRINTF_S (line + number, sizeof (line),
- sizeof (line) - 1, " %02X",
- data[len + offset]);
- }
-
- fprintf (f, "%s", line);
- if ((offset + start) == 16)
- fprintf (f, "\n");
-
- len += offset;
- pktlen += offset;
- (void) MEMSET_S (line, sizeof (line), 0, sizeof (line));
- }
-
- p = p->next;
-
- }
- fprintf (f, "\n");
- }
-
- fclose (f);
- return;
-}
-
-/*****************************************************************************
-* Prototype : hal_rte_eth_rx_burst
-* Description : a copy of rte_eth_rx_burst, because this function invokes
- a global(rte_eth_devices), which cannt be access by dlsym
- symbols
-* Input : uint8_t port_id
-* uint16_t queue_id
-* struct rte_mbuf **rx_pkts
-* const uint16_t nb_pkts
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-NSTACK_STATIC inline uint16_t
-hal_rte_eth_rx_burst (uint8_t port_id, uint16_t queue_id,
- struct rte_mbuf ** rx_pkts, const uint16_t nb_pkts)
-{
-#ifdef RTE_ETHDEV_RXTX_CALLBACKS
- struct rte_eth_rxtx_callback *cb;
-#endif
- int16_t nb_rx;
- char *pst_capture_packet = NULL;
- struct rte_eth_dev *dev = &rte_eth_devices[port_id];
-
- if (NULL == dev->rx_pkt_burst)
- {
- NSHAL_LOGERR ("dev->rx_pkt_burst is NULL,dev=%p", dev);
- return 0;
- }
-
-#ifdef RTE_LIBRTE_ETHDEV_DEBUG
- RTE_ETH_VALID_PORTID_OR_ERR_RET (port_id, 0);
- RTE_FUNC_PTR_OR_ERR_RET (*dev->rx_pkt_burst, 0);
-
- if (queue_id >= dev->data->nb_rx_queues)
- {
- RTE_PMD_DEBUG_TRACE ("Invalid RX queue_id=%d\n", queue_id);
- return 0;
- }
-#endif
- nb_rx = (*dev->rx_pkt_burst) (dev->data->rx_queues[queue_id],
- rx_pkts, nb_pkts);
-
-#ifdef RTE_ETHDEV_RXTX_CALLBACKS
- cb = dev->post_rx_burst_cbs[queue_id];
-
- if (unlikely (cb != NULL))
- {
- do
- {
- nb_rx = cb->fn.rx (port_id, queue_id, rx_pkts, nb_rx,
- nb_pkts, cb->param);
- cb = cb->next;
- }
- while (cb != NULL);
- }
-#endif
-
- //pst_capture_packet = getenv ("NSTACK_CAPTURE_PACKET");
- if (pst_capture_packet && strcmp (pst_capture_packet, "1") == 0)
- {
- dpdk_mbuf_to_file (nb_rx, rx_pkts);
- }
- return (uint16_t) nb_rx;
-}
-
-/*****************************************************************************
-* Prototype : hal_rte_eth_tx_burst
-* Description : a copy of rte_eth_tx_burst, because this function invokes
-
-* Input : uint8_t port_id
-* uint16_t queue_id
-* struct rte_mbuf **tx_pkts
-* uint16_t nb_pkts
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-NSTACK_STATIC inline uint16_t
-hal_rte_eth_tx_burst (uint8_t port_id, uint16_t queue_id,
- struct rte_mbuf ** tx_pkts, uint16_t nb_pkts)
-{
-#ifdef RTE_ETHDEV_RXTX_CALLBACKS
- struct rte_eth_rxtx_callback *cb;
-#endif
- int16_t nb_tx = 0;
- char *pst_capture_packet = NULL;
- struct rte_eth_dev *dev = &rte_eth_devices[port_id];
-
- if (NULL == dev->tx_pkt_burst)
- {
- NSHAL_LOGERR ("dev->tx_pkt_burst is NULL");
- return 0;
- }
-
-#ifdef RTE_LIBRTE_ETHDEV_DEBUG
- RTE_ETH_VALID_PORTID_OR_ERR_RET (port_id, 0);
- RTE_FUNC_PTR_OR_ERR_RET (*dev->tx_pkt_burst, 0);
-
- if (queue_id >= dev->data->nb_tx_queues)
- {
- RTE_PMD_DEBUG_TRACE ("Invalid TX queue_id=%d\n", queue_id);
- return 0;
- }
-#endif
-
-#ifdef RTE_ETHDEV_RXTX_CALLBACKS
- cb = dev->pre_tx_burst_cbs[queue_id];
-
- if (unlikely (cb != NULL))
- {
- do
- {
- nb_pkts = cb->fn.tx (port_id, queue_id, tx_pkts, nb_pkts,
- cb->param);
- cb = cb->next;
- }
- while (cb != NULL);
- }
-#endif
-
- nb_tx = (*dev->tx_pkt_burst) (dev->data->tx_queues[queue_id], tx_pkts,
- nb_pkts);
-
- //pst_capture_packet = getenv ("NSTACK_CAPTURE_PACKET");
- if (pst_capture_packet && strcmp (pst_capture_packet, "1") == 0)
- {
- dpdk_mbuf_to_file (nb_tx, tx_pkts);
- }
-
- return nb_tx;
-}
-
-/*****************************************************************************
- Prototype : dpdk_get_hugepage_size
- Description : get the free hugepage size
- Input : the dir of the nstack hugepage
- Output : free hugepage size
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-int
-dpdk_read_hugepage_size (int *freehuge)
-{
- int fd_huge;
- int len;
- char buf[5] = { '\0' };
- fd_huge =
- open ("/sys/kernel/mm/hugepages/hugepages-1048576kB/free_hugepages",
- O_RDONLY);
- if (fd_huge < 0)
- {
- NSHAL_LOGERR ("errno=%d", errno);
- return -1;
- }
-
- len = read (fd_huge, buf, sizeof (buf));
- if (len < 0)
- {
- NSHAL_LOGERR ("errno=%d", errno);
- close (fd_huge); //fix codeDEX 124547
- return -1;
- }
- *freehuge = buf[0] - '0';
- NSHAL_LOGINF ("hugepage size=%d", *freehuge);
- close (fd_huge);
-
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_clear_hugedir
- Description : clear the hugepage which is used by dpdk
- Input : the dir of the nstack hugepage
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_clear_hugedir (const char *hugedir)
-{
- DIR *dir;
- struct dirent *dirent_dpdk;
- int dir_fd, fd, lck_result, lk_result;
- const char filter[] = "*mapns*"; /* matches hugepage files */
-
- /* open directory */
- dir = opendir (hugedir);
- if (!dir)
- {
- NSHAL_LOGERR ("the path %s is not exist, errno = %d", hugedir, errno);
- goto error;
- }
- dir_fd = dirfd (dir);
-
- dirent_dpdk = readdir (dir);
- if (!dirent_dpdk)
- {
- NSHAL_LOGERR ("the dir %s can not read, errno = %d", hugedir, errno);
- goto error;
- }
-
- while (dirent_dpdk != NULL)
- {
- /* skip files that don't match the hugepage pattern */
- if (fnmatch (filter, dirent_dpdk->d_name, 0) > 0)
- {
- NSHAL_LOGWAR ("the file name %s is not match mapns, errno = %d",
- dirent_dpdk->d_name, errno);
- dirent_dpdk = readdir (dir);
- continue;
- }
-
- /* try and lock the file */
- fd = openat (dir_fd, dirent_dpdk->d_name, O_RDONLY);
-
- /* skip to next file */
- if (fd == -1)
- {
- NSHAL_LOGERR ("the file name %s can not be lock, errno = %d",
- dirent_dpdk->d_name, errno);
- dirent_dpdk = readdir (dir);
- continue;
- }
-
- /* non-blocking lock */
- lck_result = flock (fd, LOCK_EX | LOCK_NB);
-
- /* if lock succeeds, unlock and remove the file */
- if (lck_result != -1)
- {
- NSHAL_LOGWAR
- ("the file name %s can be lock and will delete, errno = %d",
- dirent_dpdk->d_name, errno);
- lck_result = flock (fd, LOCK_UN);
- if (-1 == lck_result)
- NSHAL_LOGERR ("the file name %s unlock fail, errno = %d",
- dirent_dpdk->d_name, errno);
- lk_result = unlinkat (dir_fd, dirent_dpdk->d_name, 0);
- if (-1 == lk_result)
- NSHAL_LOGERR ("the file name %s is unlinkat fail, errno = %d",
- dirent_dpdk->d_name, errno);
- }
- close (fd);
- dirent_dpdk = readdir (dir);
- }
-
- (void) closedir (dir);
- return 0;
-
-error:
- if (dir)
- (void) closedir (dir);
-
- return -1;
-}
-
-/*****************************************************************************
- Prototype : dpdk_init_global
- Description : DPDK global init
- Input : int argc
- char** argv
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_init_global (int argc, char **argv)
-{
- //int ret;
- const char hugepath[] = "/mnt/nstackhuge";
- //int freeHuge = 0;
- //int retryCount = 10;
-
- if (-1 == dpdk_clear_hugedir (hugepath))
- {
- NSHAL_LOGERR ("clear hugedir fail, try again!");
- sys_sleep_ns (0, 100000000);
- (void) dpdk_clear_hugedir (hugepath);
- }
- NSHAL_LOGINF ("init global succ");
-
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_init_env
- Description : init dpdk run env
- Input : void
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_init_env (void)
-{
- int ret;
- size_t len_size;
- char *dpdk_env;
- char *dpdk_path;
-
- /* Get dpdk_tool_path */
- dpdk_env = getenv (DPDK_TOOL_ENV);
- if (NULL == dpdk_env)
- {
- NSHAL_LOGERR ("please set enviroment:%s before start this stack"
- "\nthe value of the %s must be the path of dpdk tools",
- DPDK_TOOL_ENV, DPDK_TOOL_ENV);
- return -1;
- }
-
- /* modify ugly len_size judgement and strcpy */
- /* check len_size for malloc */
- len_size = strlen (dpdk_env);
- if (0 == len_size || len_size >= HAL_MAX_PATH_LEN)
- {
- NSHAL_LOGERR ("fail to dpdk_env strlen(DPDK_TOOL_ENV)");
- return -1;
- }
-
- /* DPDK_TOOL_ENV's value will be use as popen's paramter,we need check's validity */
- dpdk_path = realpath (dpdk_env, NULL);
- if (NULL == dpdk_path)
- {
- NSHAL_LOGERR ("env:%s value incorrect]value=%s,errno=%d", DPDK_TOOL_ENV,
- dpdk_env, errno);
- return -1;
- }
-
- len_size = strlen (dpdk_path);
- if (0 == len_size || len_size >= HAL_MAX_PATH_LEN)
- {
- NSHAL_LOGERR ("fail to dpdk_path strlen(DPDK_TOOL_ENV)");
- return -1;
- }
-
- ret = STRCPY_S (dpdk_tool_path, HAL_MAX_PATH_LEN, dpdk_path);
- if (EOK != ret)
- {
- NSHAL_LOGERR ("STRCPY_S failed]ret=%d", ret);
- return -1;
- }
-
- if (!hal_is_script_valid (dpdk_tool_path))
- {
- NSHAL_LOGERR ("dpdk_tool_path is invalid]dpdk_tool_path=%s",
- dpdk_tool_path);
- return -1;
- }
-
- /* get non-root user's id */
- dpdk_non_root_user = getpwnam (DPDK_NON_ROOT_USER_NAME);
- if (dpdk_non_root_user)
- {
- NSHAL_LOGINF ("non-root]name=%s,uid=%u,gid=%u,errno=%d",
- dpdk_non_root_user->pw_name, dpdk_non_root_user->pw_uid,
- dpdk_non_root_user->pw_gid, errno);
- }
- else
- {
- NSHAL_LOGERR ("non-root]cannot find user %s", DPDK_NON_ROOT_USER_NAME);
- }
-
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_init_local
- Description : DPDK local init
- Input : void
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_init_local (void)
-{
- int ret;
-
- ret = dpdk_init_env ();
-
- if (ret < 0)
- {
- NSHAL_LOGERR ("dpdk_init_env failed");
- return -1;
- }
-
- NSHAL_LOGINF ("init local succ");
-
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_set_port
- Description : check and save the port num
- Input : netif_inst_t* inst
- int port
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_set_port (netif_inst_t * inst, uint8_t port)
-{
- if (port >= rte_eth_dev_count ())
- {
- NSHAL_LOGERR ("the number of port=%d is more than rte_eth_dev_count=%d",
- port, rte_eth_dev_count ());
- return -1;
- }
-
- inst->data.dpdk_if.port_id = port;
-
- return 0;
-
-}
-
-/*****************************************************************************
- Prototype : dpdk_set_nic_type
- Description : check and save nic type
- Input : netif_inst_t* inst
- const char* type
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_set_nic_type (netif_inst_t * inst, const char *type)
-{
- int ret;
-
- ret =
- STRCPY_S (inst->data.dpdk_if.nic_type,
- sizeof (inst->data.dpdk_if.nic_type), type);
- if (EOK != ret)
- {
- NSHAL_LOGERR ("strcpy_s set nic_type failed]ret=%d", ret);
- return -1;
- }
-
- /*
- * *nic_type is first checked at read_ipmoduleoperateadd_configuration,
- * *thus here we dont boring validating it once more and just return.
- * */
-
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_set_nic_name
- Description : check and save nic name
- Input : netif_inst_t* inst
- const char* name
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_set_nic_name (netif_inst_t * inst, const char *name)
-{
- int ret;
-
- /* sizeof(pointer) always = 8 in 64 bit system */
- ret =
- STRCPY_S (inst->data.dpdk_if.nic_name,
- sizeof (inst->data.dpdk_if.nic_name), name);
- if (EOK != ret)
- {
- NSHAL_LOGERR ("STRCPY_S set nic_name failed]ret=%d", ret);
- return -1;
- }
-
- if (!hal_is_script_valid (inst->data.dpdk_if.nic_name))
- {
- NSHAL_LOGERR ("nic_name is invalid");
- return -1;
- }
-
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_get_driver_name
- Description : get and save driver name
- Input : netif_inst_t* inst
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_get_driver_name (netif_inst_t * inst)
-{
- int ret_len, ret;
- char script_cmmd[HAL_SCRIPT_LENGTH];
- char driver_name[HAL_SCRIPT_LENGTH] = { 0 };
-
- ret = hal_snprintf (script_cmmd, sizeof (script_cmmd),
- "readlink -f /sys/class/net/" "%s"
- "/device/driver| awk -F'/' '{print $6}'",
- inst->data.dpdk_if.nic_name);
- if (-1 == ret)
- {
- NSHAL_LOGERR ("hal_snprintf failed");
- return -1;
- }
-
- ret_len =
- hal_run_script (script_cmmd, driver_name, sizeof (driver_name) - 1);
-
- if (ret_len > HAL_MAX_DRIVER_NAME_LEN)
- {
- ret_len = HAL_MAX_DRIVER_NAME_LEN;
- }
-
- if (ret_len <= 0)
- {
- NSHAL_LOGERR ("%s does't have a driver", driver_name);
-
- ret =
- STRNCPY_S (inst->data.dpdk_if.driver_name,
- sizeof (inst->data.dpdk_if.driver_name), "NULL",
- sizeof ("NULL"));
-
- if (EOK != ret)
- {
- NSHAL_LOGERR ("STRNCPY_S failed]ret=%d.", ret);
- return -1;
- }
-
- return -1;
- }
- else
- {
- ret =
- STRNCPY_S (inst->data.dpdk_if.driver_name,
- sizeof (inst->data.dpdk_if.driver_name), driver_name,
- ret_len);
-
- if (EOK != ret)
- {
- NSHAL_LOGERR ("STRNCPY_S failed]ret=%d.", ret);
- return -1;
- }
-
- inst->data.dpdk_if.driver_name[(ret_len - 1)] = '\0';
-
- return 0;
- }
-}
-
-/*****************************************************************************
- Prototype : dpdk_set_pci_permission
- Description : set pci permission
- Input : char *pci_addr
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_set_pci_permission (char *pci_addr)
-{
- DIR *dir_desc;
- char file_path[HAL_SCRIPT_LENGTH] = { 0 }, dir_path[HAL_SCRIPT_LENGTH] =
- {
- 0};
- struct dirent *ent;
- struct stat statbuf;
- int ret;
-
- ret =
- SNPRINTF_S (dir_path, sizeof (dir_path), sizeof (dir_path) - 1,
- "/sys/bus/pci/devices/%s", pci_addr);
- if (ret < 0)
- {
- NSHAL_LOGERR ("SNPRINTF_S fail");
- return -1;
- }
-
- if ((dir_desc = opendir (dir_path)) == NULL)
- {
- NSHAL_LOGERR ("opendir fail:errno=%d", errno);
- return -1;
- }
-
- while ((ent = readdir (dir_desc)) != NULL)
- {
- if (strstr (ent->d_name, "resource"))
- {
- ret =
- SNPRINTF_S (file_path, sizeof (file_path), sizeof (file_path) - 1,
- "%s/%s", dir_path, ent->d_name);
- if (ret < 0)
- {
- NSHAL_LOGERR ("SNPRINTF_S fail");
- (void) closedir (dir_desc);
- return -1;
- }
-
- if (!lstat (file_path, &statbuf) && !S_ISDIR (statbuf.st_mode))
- {
- ret =
- chown (file_path, dpdk_non_root_user->pw_uid,
- dpdk_non_root_user->pw_gid);
- if (ret < 0)
- {
- NSHAL_LOGERR ("chown fail]file_path=%s,ret=%d,errno=%d",
- file_path, ret, errno);
- (void) closedir (dir_desc);
- return -1;
- }
- NSHAL_LOGWAR ("chown succ]file_path=%s,ret=%d", file_path, ret);
- ret = chmod (file_path, 0640);
- if (ret < 0)
- {
- NSHAL_LOGERR ("chmod fail]file_path=%s,ret=%d,errno=%d",
- file_path, ret, errno);
- (void) closedir (dir_desc);
- return -1;
- }
- NSHAL_LOGWAR ("chmod succ]file_path=%s,ret=%d", file_path, ret);
- }
- }
- }
-
- (void) closedir (dir_desc);
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_get_pci_addr
- Description : get and save pci addr
- Input : netif_inst_t* inst
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_get_pci_addr (netif_inst_t * inst)
-{
- int ret, pci_len;
- struct ethtool_drvinfo edata = { 0 };
- struct ifreq ifr;
- int fd = -1;
-
- /* use ioctl to get pci address instead of call dpdk-devbind.py to reduce time cost */
- ret = MEMSET_S (&ifr, sizeof (ifr), 0, sizeof (ifr));
- if (EOK != ret)
- {
- NSHAL_LOGERR ("MEMSET_S fail");
- return -1;
- }
- edata.cmd = ETHTOOL_GDRVINFO;
- ret =
- STRCPY_S (ifr.ifr_name, sizeof (ifr.ifr_name),
- inst->data.dpdk_if.nic_name);
- if (EOK != ret)
- {
- NSHAL_LOGERR ("STRCPY_S fail");
- return -1;
- }
-
- ifr.ifr_data = (char *) (&edata);
- if ((fd = socket (AF_INET, SOCK_DGRAM, 0)) < 0)
- {
- NSHAL_LOGERR ("cannot init socket, errno=%d", errno);
- return -1;
- }
- if (ioctl (fd, SIOCETHTOOL, &ifr) < 0)
- {
- NSHAL_LOGERR ("ioctl to the device %s err, errno=%d",
- inst->data.dpdk_if.nic_name, errno);
- close (fd);
- return -1;
- }
- close (fd);
-
- pci_len = strlen (edata.bus_info);
- if (pci_len == 0
- || pci_len > (int) sizeof (inst->data.dpdk_if.pci_addr) - 1)
- {
- NSHAL_LOGERR ("does't have a pci_addr");
- inst->data.dpdk_if.pci_addr[0] = '\0';
- return -1;
- }
-
- NSHAL_LOGINF ("nic_name=%s,nic_pci_addr=%s", inst->data.dpdk_if.nic_name,
- edata.bus_info);
-
- ret =
- STRNCPY_S (inst->data.dpdk_if.pci_addr,
- sizeof (inst->data.dpdk_if.pci_addr), edata.bus_info, pci_len);
- if (EOK != ret)
- {
- NSHAL_LOGERR ("STRNCPY_S failed]ret=%d.", ret);
- return -1;
- }
-
- if (!hal_is_script_valid (inst->data.dpdk_if.pci_addr))
- {
- NSHAL_LOGERR ("pci_addr is invalid]pci_addr=%s",
- inst->data.dpdk_if.pci_addr);
- return -1;
- }
-
- if (dpdk_non_root_user && getuid ())
- {
- ret = dpdk_set_pci_permission (inst->data.dpdk_if.pci_addr);
- if (ret < 0)
- {
- NSHAL_LOGERR ("dpdk_set_pci_permission fail");
- return -1;
- }
- }
-
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_mlx_linkup
- Description : linkup the port for mlx
- In bonding mode, mlx4 NICs should be set up manually,
- in order to make bond port up
- Input : char* name
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_mlx_linkup (char *name)
-{
- struct ifreq st_ifreq;
- int sock;
- int retVal;
-
- if ((sock = socket (AF_INET, SOCK_STREAM, 0)) < 0)
- {
- NSHAL_LOGERR ("socket fail]errno=%d", errno);
- return 2;
- }
-
- retVal = STRCPY_S (st_ifreq.ifr_name, sizeof (st_ifreq.ifr_name), name);
-
- if (EOK != retVal)
- {
- NSHAL_LOGERR ("STRCPY_S fail]");
- close (sock);
- return 1;
- }
-
- if (ioctl (sock, (uint64_t) SIOCGIFFLAGS, &st_ifreq) < 0)
- {
- NSHAL_LOGERR ("ioctl SIOCGIFFLAGS fail]errno=%d", errno);
- close (sock);
- return 3;
- }
-
- st_ifreq.ifr_flags |= IFF_UP;
- st_ifreq.ifr_flags |= IFF_RUNNING;
-
- if (ioctl (sock, (uint64_t) SIOCSIFFLAGS, &st_ifreq) < 0)
- {
- NSHAL_LOGERR ("ioctl SIOCSIFFLAGS fail]errno=%d", errno);
- close (sock);
- return 3;
- }
-
- close (sock);
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_nonmlx_linkdown
- Description : linkdown the port for nonmlx
- Input : char* name
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_nonmlx_linkdown (char *name)
-{
- int ret, ret_len;
- char script_cmmd[HAL_SCRIPT_LENGTH];
- char result_buf[HAL_SCRIPT_LENGTH];
-
- ret =
- hal_snprintf (script_cmmd, sizeof (script_cmmd), "sudo ifconfig %s down",
- name);
- if (-1 == ret)
- {
- NSHAL_LOGERR ("spl_snprintf failed]");
- return -1;
- }
-
- ret_len = hal_run_script (script_cmmd, result_buf, sizeof (result_buf));
- NSHAL_LOGINF ("ifconfig]script_cmmd=%s,ret_len=%d", script_cmmd, ret_len);
- if (0 > ret_len)
- {
- NSHAL_LOGERR ("cannot able to ifconfig %s down", name);
- return -1;
- }
-
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_get_uio_by_pci_addr
- Description : get uio
- Input : char *pci_addr
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_get_uio_by_pci_addr (char *pci_addr)
-{
- int i, ret, ret_len;
- char script_cmmd[HAL_SCRIPT_LENGTH];
- char result_buf[HAL_SCRIPT_LENGTH];
-
- for (i = 0; i < RTE_MAX_ETHPORTS; i++)
- {
- ret = hal_snprintf (script_cmmd, sizeof (script_cmmd),
- "readlink ls /sys/class/uio/uio%d/device | awk -F '/' '{print $4}'",
- i);
- if (-1 == ret)
- {
- NSHAL_LOGERR ("hal_snprintf fail]pci=%s,i=%d", pci_addr, i);
- return -1;
- }
-
- ret_len = hal_run_script (script_cmmd, result_buf, sizeof (result_buf));
- if (0 > ret_len)
- {
- NSHAL_LOGERR ("hal_run_script fail]pci=%s,i=%d", pci_addr, i);
- return -1;
- }
- if (strcmp (result_buf, pci_addr) == 0)
- return i;
- }
-
- return -1;
-}
-
-/*****************************************************************************
- Prototype : dpdk_set_uio_permission
- Description : set uio permission
- Input : char *pci_addr
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_set_uio_permission (char *pci_addr)
-{
- int ret, uio_idx;
- char file_path[HAL_SCRIPT_LENGTH / 2] = { 0 };
-
- /* get /dev/uio by pci addr */
- uio_idx = dpdk_get_uio_by_pci_addr (pci_addr);
- if (uio_idx < 0)
- {
- NSHAL_LOGERR ("dpdk_get_uio_by_pci_addr fail]pci_addr=%s", pci_addr);
- return -1;
- }
-
- NSHAL_LOGINF ("uio_idx]pci=%s,uio%d", pci_addr, uio_idx);
-
- /* change /dev/uio%u permission */
- if (SNPRINTF_S
- (file_path, sizeof (file_path), sizeof (file_path) - 1, "/dev/uio%d",
- uio_idx) < 0)
- {
- NSHAL_LOGERR ("SNPRINTF_S failed]uio%d", uio_idx);
- return -1;
- }
- sys_sleep_ns (0, 500000000);
- ret =
- chown (file_path, dpdk_non_root_user->pw_uid, dpdk_non_root_user->pw_gid);
- if (ret < 0)
- {
- NSHAL_LOGERR ("chown fail]file_path=%s,ret=%d,errno=%d", file_path, ret,
- errno);
- return -1;
- }
- NSHAL_LOGWAR ("chown succ]file_path=%s,ret=%d", file_path, ret);
-
- ret = chmod (file_path, 0640);
- if (ret < 0)
- {
- NSHAL_LOGERR ("chmod fail]file_path=%s,ret=%d,errno=%d", file_path, ret,
- errno);
- return -1;
- }
- NSHAL_LOGWAR ("chmod succ]file_path=%s,ret=%d", file_path, ret);
-
- /* change /sys/class/uio/uio%u/device/config permission */
- if (SNPRINTF_S
- (file_path, sizeof (file_path), sizeof (file_path) - 1,
- "/sys/class/uio/uio%d/device/config", uio_idx) < 0)
- {
- NSHAL_LOGERR ("SNPRINTF_S failed]uio%d", uio_idx);
- return -1;
- }
-
- ret =
- chown (file_path, dpdk_non_root_user->pw_uid, dpdk_non_root_user->pw_gid);
- if (ret < 0)
- {
- NSHAL_LOGERR ("chown fail]file_path=%s,ret=%d,errno=%d", file_path, ret,
- errno);
- return -1;
- }
- NSHAL_LOGWAR ("chown succ]file_path=%s,ret=%d", file_path, ret);
-
- ret = chmod (file_path, 0640);
- if (ret < 0)
- {
- NSHAL_LOGERR ("chmod fail]file_path=%s,ret=%d,errno=%d", file_path, ret,
- errno);
- return -1;
- }
- NSHAL_LOGWAR ("chmod succ]file_path=%s,ret=%d", file_path, ret);
-
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_get_nic_list_file
- Description : get dpdk bind nic list file
- Input : void
- Output : char*
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC char *
-dpdk_get_nic_list_file (void)
-{
- int ret;
- static char buffer[HAL_MAX_PATH_LEN]; /* static so auto-zeroed */
- const char *directory = "/var/run";
- const char *home_dir = getenv ("HOME");
-
- if (getuid () != 0 && home_dir != NULL)
- directory = home_dir;
-
- ret =
- SNPRINTF_S (buffer, sizeof (buffer), sizeof (buffer) - 1,
- DPDK_NIC_LIST_FILE, directory);
- if (-1 == ret)
- {
- NSCOMM_LOGERR ("SNPRINTF_S failed]ret=%d", ret);
- return NULL;
- }
-
- return buffer;
-}
-
-/*****************************************************************************
- Prototype : dpdk_bind_uio
- Description : bind uio
- Input : netif_inst_t* inst
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_bind_uio (netif_inst_t * inst)
-{
- char script_cmmd[HAL_SCRIPT_LENGTH];
- char result_buf[HAL_SCRIPT_LENGTH];
- int ret, ret_len;
-
- result_buf[0] = '\0';
-
- if (strncmp ("mlx4_co", inst->data.dpdk_if.driver_name, (size_t) 7) == 0)
- {
- /*For MLX4: NIC should be set link up before rte_eth_dev_start() is called. */
- ret = dpdk_mlx_linkup (inst->data.dpdk_if.nic_name);
- if (0 != ret)
- {
- NSHAL_LOGERR ("set mlx linkup fail]nic_name=%s,ret=%d",
- inst->data.dpdk_if.nic_name, ret);
-
- return -1;
- }
- }
- else
- {
- /*For other drivers: NIC should be set link down before bind uio. */
- ret = dpdk_nonmlx_linkdown (inst->data.dpdk_if.nic_name);
- if (-1 == ret)
- {
- NSHAL_LOGERR ("dpdk_nonmlx_linkdown fail]nic_name=%s",
- inst->data.dpdk_if.nic_name);
- return -1;
- }
-
- /* save binded VF list to file /var/run/ip_module/.nstack_dpdk_nic_list */
- ret = hal_snprintf (script_cmmd, sizeof (script_cmmd),
- "sudo %s"
- "/dpdk-devbind.py -s | grep `ethtool -i %s| grep bus-info |awk '{print $2}'` >> %s 2>&1",
- dpdk_tool_path, inst->data.dpdk_if.nic_name,
- dpdk_get_nic_list_file ());
-
- if (-1 == ret)
- {
- NSHAL_LOGERR ("hal_snprintf fail]nic_name=%s",
- inst->data.dpdk_if.nic_name);
- return -1;
- }
-
- ret_len =
- hal_run_script (script_cmmd, result_buf, sizeof (result_buf) - 1);
- NSHAL_LOGINF ("bind]script_cmmd=%s,ret_len=%d", script_cmmd, ret_len);
- if (0 > ret_len)
- {
- NSHAL_LOGERR ("hal_run_script fail]script_cmmd=%s", script_cmmd);
- return -1;
- }
-
- if (strncmp ("virtio", inst->data.dpdk_if.driver_name, (size_t) 6) == 0)
- {
- /* For Virtio NIC, should call "./devbind.sh ethX" to bind the VF */
- ret = hal_snprintf (script_cmmd, sizeof (script_cmmd),
- "sudo %s"
- "/dpdk-devbind.py --bind=igb_uio `ethtool -i %s| grep bus-info |awk '{print $2}'`",
- dpdk_tool_path, inst->data.dpdk_if.nic_name);
- //"sudo %s" "/devbind.sh " "%s", dpdk_tool_path, inst->data.dpdk_if.nic_name);
-
- }
- else
- {
- ret = hal_snprintf (script_cmmd, sizeof (script_cmmd),
- "sudo %s" "/dpdk-devbind.py --bind=igb_uio "
- "%s", dpdk_tool_path,
- inst->data.dpdk_if.nic_name);
- }
-
- if (-1 == ret)
- {
- NSHAL_LOGERR ("hal_snprintf failed");
- return -1;
- }
-
- ret_len =
- hal_run_script (script_cmmd, result_buf, sizeof (result_buf) - 1);
- NSHAL_LOGINF ("bind]script_cmmd=%s,retlen=%d", script_cmmd, ret_len);
- if (0 > ret_len)
- {
- NSHAL_LOGERR ("hal_run_script fail]script_cmmd=%s", script_cmmd);
- return -1;
- }
-
- if (dpdk_non_root_user && getuid ())
- {
- ret = dpdk_set_uio_permission (inst->data.dpdk_if.pci_addr);
-
- if (ret < 0)
- {
- NSHAL_LOGERR ("set_uio_permission fail]nic_name=%s",
- inst->data.dpdk_if.nic_name);
- return -1;
- }
- }
- }
-
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_probe_pci
- Description : probe pci
- Input : netif_inst_t* inst
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_probe_pci (netif_inst_t * inst)
-{
- int ret;
- uint16_t port_id;
- struct rte_eth_dev *eth_dev;
- char *pci_addr = inst->data.dpdk_if.pci_addr;
-
- ret = rte_eal_iopl_init ();
- if (0 != ret)
- {
- NSHAL_LOGERR ("rte_eal_iopl_init fail]pci_addr=%s,ret=%d", pci_addr,
- ret);
- return -1;
- }
-
- ret = rte_eth_dev_attach (pci_addr, &port_id);
- if (0 != ret)
- {
- NSHAL_LOGWAR
- ("pci attach to DPDK fail, the pci may have attached, try to get port id]pci_addr=%s,ret=%d",
- pci_addr, ret);
-
- eth_dev = rte_eth_dev_allocated (inst->data.dpdk_if.nic_name);
- if (NULL != eth_dev && NULL != eth_dev->data)
- {
- port_id = eth_dev->data->port_id;
- ret = 0;
- }
- }
-
- if (!ret)
- {
- ret = dpdk_set_port (inst, port_id);
-
- if (0 == ret)
- {
- NSHAL_LOGINF ("set port success]pci_addr=%s,port_id=%u", pci_addr,
- port_id);
- }
- else
- {
- NSHAL_LOGERR ("set port fail]pci_addr=%s,port_id=%u", pci_addr,
- port_id);
- return -1;
- }
- }
- else
- {
- NSHAL_LOGERR ("get port fail]pci_addr=%s,ret=%d", pci_addr, ret);
- return -1;
- }
-
- /*[TA33635][2017-04-24][l00408818] Start: support bond mode */
- ret = rte_eal_devargs_add (RTE_DEVTYPE_WHITELISTED_PCI, pci_addr);
- if (!ret)
- {
- NSHAL_LOGINF ("pci attach to whitelist success]pci_addr=%s", pci_addr);
- }
- else
- {
- NSHAL_LOGERR ("pci attach to whitelist fail]pci_addr=%s", pci_addr);
- return -1;
- }
- /*[TA33635][2017-04-24][l00408818] End */
-
- return 0;
-}
-
-/*nic_name->driver_name->pci_addr->get port*/
-/*****************************************************************************
- Prototype : dpdk_open
- Description : open the port
- Input : netif_inst_t* inst
- const char* name
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_open (netif_inst_t * inst, const char *name, const char *type)
-{
- int ret;
-
- if ((inst == NULL) || (name == NULL) || (type == NULL))
- {
- NSHAL_LOGERR
- ("invaliad arguments]inst==NULL, nic_type==NULL or type==NULL");
- return -1;
- }
-
- ret = dpdk_set_nic_type (inst, type);
-
- if (0 != ret)
- {
- NSHAL_LOGERR ("dpdk_set_nic_type fail]nic_type=%s, ret=%d", type, ret);
- return -1;
- }
-
- ret = dpdk_set_nic_name (inst, name);
-
- if (0 != ret)
- {
- NSHAL_LOGERR ("dpdk_set_nic_name fail]nic_name=%s, ret=%d", name, ret);
- return -1;
- }
-
- if (!strncmp (type, "vhost", strlen ("vhost")))
- {
- /*for vhost-user device, the remaining steps is unnecessary, y0413485 */
- NSHAL_LOGERR ("initting vhost device]nic_name=%s type=%s", name, type);
- return 0;
- }
-
- ret = dpdk_get_driver_name (inst);
-
- if (0 != ret)
- {
- NSHAL_LOGERR ("dpdk_get_driver_name fail]nic_name=%s, ret=%d", name,
- ret);
- return -1;
- }
-
- ret = dpdk_get_pci_addr (inst);
-
- if (0 != ret)
- {
- NSHAL_LOGERR ("dpdk_get_pci_addr fail]nic_name=%s, ret=%d", name, ret);
- return -1;
- }
-
- ret = dpdk_bind_uio (inst);
-
- if (0 != ret)
- {
- NSHAL_LOGERR ("dpdk_bind_uio fail]nic_name=%s, ret=%d", name, ret);
- return -1;
- }
-
- ret = dpdk_probe_pci (inst);
-
- if (0 != ret)
- {
- NSHAL_LOGERR ("dpdk_probe_pci fail]nic_name=%s, ret=%d", name, ret);
- return -1;
- }
-
- NSHAL_LOGINF ("open port succ]port_id=%u, nic_name=%s",
- inst->data.dpdk_if.port_id, inst->data.dpdk_if.nic_name);
-
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_close
- Description : close the port
- Input : netif_inst_t* inst
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_close (netif_inst_t * inst)
-{
- int i;
-
- /* close slave NIC first */
- for (i = 0; i < inst->data.dpdk_if.slave_num; i++)
- {
- rte_eth_dev_close (inst->data.dpdk_if.slave_port[i]);
- NSHAL_LOGINF ("close slave port succ]port_id=%u, nic_name=%s",
- inst->data.dpdk_if.slave_port[i],
- inst->data.dpdk_if.nic_name);
- }
-
- rte_eth_dev_close (inst->data.dpdk_if.port_id);
- NSHAL_LOGINF ("close port succ]port_id=%u, nic_name=%s",
- inst->data.dpdk_if.port_id, inst->data.dpdk_if.nic_name);
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_get_queue_conf
- Description : get the port queue configure
- Input : netif_inst_t* inst
- struct rte_eth_rxconf** rx_conf
- struct rte_eth_txconf** tx_conf
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_get_queue_conf (netif_inst_t * inst,
- struct rte_eth_rxconf **rx_conf,
- struct rte_eth_txconf **tx_conf)
-{
- static struct rte_eth_dev_info slave_dev_info;
-
- if (strncmp ("igb", inst->data.dpdk_if.driver_name, (size_t) 3) == 0)
- {
- *rx_conf = (struct rte_eth_rxconf *) &rx_conf_default_igb;
- *tx_conf = (struct rte_eth_txconf *) &tx_conf_default_igb;
- NSHAL_LOGINF ("igb config is enable]port_id=%u",
- inst->data.dpdk_if.port_id);
- }
- else if (strncmp ("ixgbe", inst->data.dpdk_if.driver_name, (size_t) 5) == 0)
- {
- *rx_conf = (struct rte_eth_rxconf *) &rx_conf_default_ixgbe;
- *tx_conf = (struct rte_eth_txconf *) &tx_conf_default_ixgbe;
- NSHAL_LOGINF ("igxbe config is enable]port_id=%u",
- inst->data.dpdk_if.port_id);
- }
- else if (strncmp ("bond", inst->data.dpdk_if.driver_name, (size_t) 4) == 0)
- {
- *rx_conf = NULL;
- rte_eth_dev_info_get (inst->data.dpdk_if.slave_port[0],
- &slave_dev_info);
- *tx_conf = &(slave_dev_info.default_txconf);
- NSHAL_LOGINF ("bond config is enable]port_id=%u",
- inst->data.dpdk_if.port_id);
- }
- else
- {
- *rx_conf = NULL;
- *tx_conf = NULL;
- NSHAL_LOGINF ("default config is enable]port_id=%u",
- inst->data.dpdk_if.port_id);
- }
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_get_port_conf
- Description : get the port configure
- Input : netif_inst_t* inst
- struct rte_eth_conf** port_conf
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC void
-dpdk_get_port_conf (netif_inst_t * inst, struct rte_eth_conf **port_conf)
-{
- if (strncmp ("virtio", inst->data.dpdk_if.driver_name, (size_t) 6) == 0)
- {
- *port_conf = &port_conf_default_virtio;
- }
- else if (strncmp ("bond", inst->data.dpdk_if.driver_name, (size_t) 4) == 0)
- {
- *port_conf = &port_conf_default_bond;
- }
- else if (strncmp ("vhost", inst->data.dpdk_if.nic_type, (size_t) 5) == 0)
- {
- *port_conf = &port_conf_default_vhost;
- return;
- }
- else
- {
- *port_conf = &port_conf_default_normal;
- }
-
- (*port_conf)->rxmode.hw_vlan_filter = inst->data.dpdk_if.hw_vlan_filter;
- (*port_conf)->rxmode.hw_vlan_strip = inst->data.dpdk_if.hw_vlan_strip;
-}
-
-/*****************************************************************************
- Prototype : dpdk_setup_port
- Description : setup the port
- Input : netif_inst_t* inst
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_setup_port (netif_inst_t * inst)
-{
- int ret;
- uint32_t i;
- struct rte_eth_conf *port_conf;
- struct rte_eth_rxconf *rx_conf;
- struct rte_eth_txconf *tx_conf;
-
- uint8_t port_id = inst->data.dpdk_if.port_id;
- struct rte_mempool **mp =
- (struct rte_mempool **) inst->data.dpdk_if.rx_pool;
- uint32_t *rx_ring_size = inst->data.dpdk_if.rx_ring_size;
- uint32_t *tx_ring_size = inst->data.dpdk_if.tx_ring_size;
- uint32_t rx_queue_num = inst->data.dpdk_if.rx_queue_num;
- uint32_t tx_queue_num = inst->data.dpdk_if.tx_queue_num;
-
- dpdk_get_port_conf (inst, &port_conf);
-
- ret =
- rte_eth_dev_configure (port_id, rx_queue_num, tx_queue_num, port_conf);
- if (ret < 0)
- {
- NSHAL_LOGERR ("rte_eth_dev_configure]port_id=%u,ret=%d", port_id, ret);
- return ret;
- }
-
- if (dpdk_get_queue_conf (inst, &rx_conf, &tx_conf) < 0)
- {
- NSHAL_LOGERR ("dpdk_get_queue_conf failed]inst=%p,rx_conf=%p", inst,
- rx_conf);
- return -1;
- }
- /* fix "FORTIFY.Out-of-Bounds_Read" type codedex issue CID 33436 */
- if (rx_queue_num > HAL_ETH_MAX_QUEUE_NUM
- || tx_queue_num > HAL_ETH_MAX_QUEUE_NUM)
- {
- NSHAL_LOGERR
- ("queue num error]rx_queue_num=%u, tx_queue_num=%u, HAL_ETH_MAX_QUEUE_NUM=%d",
- rx_queue_num, tx_queue_num, HAL_ETH_MAX_QUEUE_NUM);
-
- return -1;
- }
-
- for (i = 0; i < rx_queue_num; i++)
- {
- ret =
- rte_eth_rx_queue_setup (port_id, i, rx_ring_size[i], SOCKET_ID_ANY,
- rx_conf, mp[i]);
- if (ret < 0)
- {
- NSHAL_LOGERR ("rx queue setup fail]index=%u,port_id=%u,ret=%d", i,
- port_id, ret);
- return ret;
- }
- }
-
- for (i = 0; i < tx_queue_num; i++)
- {
- ret =
- rte_eth_tx_queue_setup (port_id, i, tx_ring_size[i], SOCKET_ID_ANY,
- tx_conf);
-
- if (ret < 0)
- {
- NSHAL_LOGERR ("tx queue setup fail]q=%u,ret=%d", i, ret);
- return ret;
- }
- }
-
- rte_eth_promiscuous_enable (port_id);
-
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_start
- Description : start the port
- Input : netif_inst_t* inst
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_start (netif_inst_t * inst)
-{
- int ret;
- struct ether_addr eth_addr;
-
- ret = dpdk_setup_port (inst);
-
- if (ret < 0)
- {
- NSHAL_LOGERR ("call dpdk_setup_port fail]ret=%d", ret);
- return ret;
- }
-
- ret = rte_eth_dev_start (inst->data.dpdk_if.port_id);
- if (ret < 0)
- {
- NSHAL_LOGERR ("rte_eth_dev_start fail]ret=%d", ret);
- return ret;
- }
-
- rte_eth_macaddr_get (inst->data.dpdk_if.port_id, &eth_addr);
- NSHAL_LOGINF ("port_id=%u,nic_name=%s,mac=%02X:%02X:%02X:%02X:%02X:%02X",
- inst->data.dpdk_if.port_id,
- inst->data.dpdk_if.nic_name,
- eth_addr.addr_bytes[0],
- eth_addr.addr_bytes[1],
- eth_addr.addr_bytes[2],
- eth_addr.addr_bytes[3],
- eth_addr.addr_bytes[4], eth_addr.addr_bytes[5]);
-
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_stop
- Description : stop the port
- Input : netif_inst_t* inst
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_stop (netif_inst_t * inst)
-{
- int i;
-
- /* stop slave NIC first */
- for (i = 0; i < inst->data.dpdk_if.slave_num; i++)
- {
- rte_eth_dev_stop (inst->data.dpdk_if.slave_port[i]);
- NSHAL_LOGINF ("stop slave port succ]port_id=%u, nic_name=%s",
- inst->data.dpdk_if.slave_port[i],
- inst->data.dpdk_if.nic_name);
- }
- rte_eth_dev_stop (inst->data.dpdk_if.port_id);
-
- NSHAL_LOGINF ("stop port succ]port_id=%u, nic_name=%s",
- inst->data.dpdk_if.port_id, inst->data.dpdk_if.nic_name);
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_get_mtu
- Description : get the port mtu
- Input : netif_inst_t* inst
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC uint32_t
-dpdk_get_mtu (netif_inst_t * inst)
-{
- uint32_t mtu;
-
- if (rte_eth_dev_get_mtu (inst->data.dpdk_if.port_id, (uint16_t *) & mtu))
- {
- return 0;
- }
-
- return mtu;
-}
-
-/*****************************************************************************
- Prototype : dpdk_get_macaddr
- Description : get the port mac addr
- Input : netif_inst_t* inst
- void* mac_addr
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_get_macaddr (netif_inst_t * inst, void *mac_addr)
-{
- /*bond port */
- int primary_port = rte_eth_bond_primary_get (inst->data.dpdk_if.port_id);
- if (0 <= primary_port)
- {
- rte_eth_macaddr_get ((uint8_t) primary_port,
- (struct ether_addr *) mac_addr);
-
- NSHAL_LOGDBG
- ("primary_port_id=%u,nic_name=%s,mac=%02X:%02X:%02X:%02X:%02X:%02X",
- primary_port, inst->data.dpdk_if.nic_name,
- ((struct ether_addr *) mac_addr)->addr_bytes[0],
- ((struct ether_addr *) mac_addr)->addr_bytes[1],
- ((struct ether_addr *) mac_addr)->addr_bytes[2],
- ((struct ether_addr *) mac_addr)->addr_bytes[3],
- ((struct ether_addr *) mac_addr)->addr_bytes[4],
- ((struct ether_addr *) mac_addr)->addr_bytes[5]);
- }
- /*normal port */
- else
- {
- rte_eth_macaddr_get (inst->data.dpdk_if.port_id,
- (struct ether_addr *) mac_addr);
-
- NSHAL_LOGDBG
- ("normal_port_id=%u,nic_name=%s,mac=%02X:%02X:%02X:%02X:%02X:%02X",
- inst->data.dpdk_if.port_id, inst->data.dpdk_if.nic_name,
- ((struct ether_addr *) mac_addr)->addr_bytes[0],
- ((struct ether_addr *) mac_addr)->addr_bytes[1],
- ((struct ether_addr *) mac_addr)->addr_bytes[2],
- ((struct ether_addr *) mac_addr)->addr_bytes[3],
- ((struct ether_addr *) mac_addr)->addr_bytes[4],
- ((struct ether_addr *) mac_addr)->addr_bytes[5]);
- }
-
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_capa_convert
- Description : convert format from dpdk to hal
- Input : const struct rte_eth_dev_info* dev_info
- hal_netif_capa_t* capa
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC inline void
-dpdk_capa_convert (const struct rte_eth_dev_info *dev_info,
- hal_netif_capa_t * capa)
-{
- int retVal =
- MEMSET_S (capa, sizeof (hal_netif_capa_t), 0, sizeof (hal_netif_capa_t));
- if (EOK != retVal)
- {
- NSHAL_LOGERR ("MEMSET_S fail]retVal=%d", retVal);
- }
-
- capa->tx_offload_capa = dev_info->tx_offload_capa;
-}
-
-/*****************************************************************************
- Prototype : dpdk_get_capability
- Description : get the port capability
- Input : netif_inst_t* inst
- hal_netif_capa_t* capa
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_get_capability (netif_inst_t * inst, hal_netif_capa_t * capa)
-{
- struct rte_eth_dev_info dev_info;
-
- rte_eth_dev_info_get (inst->data.dpdk_if.port_id, &dev_info);
- dpdk_capa_convert (&dev_info, capa);
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_recv
- Description : recv packet from the port
- Input : netif_inst_t* inst
- uint16_t queue_id
- struct common_mem_mbuf** rx_pkts
- uint16_t nb_pkts
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC uint16_t
-dpdk_recv (netif_inst_t * inst, uint16_t queue_id,
- hal_mbuf_t ** rx_pkts, uint16_t nb_pkts)
-{
- return hal_rte_eth_rx_burst (inst->data.dpdk_if.port_id, queue_id,
- (struct rte_mbuf **) rx_pkts, nb_pkts);
-}
-
-/*****************************************************************************
- Prototype : dpdk_send
- Description : send packet to the port
- Input : netif_inst_t* inst
- uint16_t queue_id
- struct common_mem_mbuf** tx_pkts
- uint16_t nb_pkts
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC uint16_t
-dpdk_send (netif_inst_t * inst, uint16_t queue_id,
- hal_mbuf_t ** tx_pkts, uint16_t nb_pkts)
-{
- return hal_rte_eth_tx_burst (inst->data.dpdk_if.port_id, queue_id,
- (struct rte_mbuf **) tx_pkts, nb_pkts);
-}
-
-/*****************************************************************************
- Prototype : dpdk_link_status
- Description : get link status form the port
- Input : netif_inst_t* inst
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC uint32_t
-dpdk_link_status (netif_inst_t * inst)
-{
- struct rte_eth_link eth_link;
-
- /* add log output when failed */
- int retVal = MEMSET_S (&eth_link, sizeof (struct rte_eth_link), 0,
- sizeof (struct rte_eth_link));
- if (EOK != retVal)
- {
- NSHAL_LOGERR ("MEMSET_S fail]retVal=%d", retVal);
- }
-
- rte_eth_link_get (inst->data.dpdk_if.port_id, &eth_link);
-
- return eth_link.link_status;
-}
-
-/*****************************************************************************
- Prototype : dpdk_stats_convert
- Description : convert format from dpdk to hal
- Input : const struct rte_eth_stats* rte_stats
- hal_netif_stats_t* stats
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC inline void
-dpdk_stats_convert (const struct rte_eth_stats *rte_stats,
- hal_netif_stats_t * stats)
-{
- int i;
-
- /* give fail error number when failed */
- int retVal = MEMSET_S (stats, sizeof (hal_netif_stats_t), 0,
- sizeof (hal_netif_stats_t));
- if (EOK != retVal)
- {
- NSHAL_LOGERR ("MEMSET_S fail]retVal=%d", retVal);
- }
-
- stats->ipackets = rte_stats->ipackets;
- stats->opackets = rte_stats->opackets;
- stats->ibytes = rte_stats->ibytes;
- stats->obytes = rte_stats->obytes;
- stats->imissed = rte_stats->imissed;
- stats->ierrors = rte_stats->ierrors;
- stats->oerrors = rte_stats->oerrors;
- stats->rx_nombuf = rte_stats->rx_nombuf;
-
- for (i = 0; i < HAL_ETH_QUEUE_STAT_CNTRS; i++)
- {
- stats->q_ipackets[i] = rte_stats->q_ipackets[i];
- stats->q_opackets[i] = rte_stats->q_opackets[i];
- stats->q_ibytes[i] = rte_stats->q_ibytes[i];
- stats->q_obytes[i] = rte_stats->q_obytes[i];
- stats->q_errors[i] = rte_stats->q_errors[i];
- }
-}
-
-/*****************************************************************************
- Prototype : dpdk_stats
- Description : get stats form the port
- Input : netif_inst_t* inst
- hal_netif_stats_t* stats
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_stats (netif_inst_t * inst, hal_netif_stats_t * stats)
-{
- int ret;
- struct rte_eth_stats rte_stats;
-
- ret = rte_eth_stats_get (inst->data.dpdk_if.port_id, &rte_stats);
- if (ret == 0)
- {
- dpdk_stats_convert (&rte_stats, stats);
- return 0;
- }
-
- return -1;
-}
-
-/*****************************************************************************
- Prototype : dpdk_stats_reset
- Description : reset stats to the port
- Input : netif_inst_t* inst
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_stats_reset (netif_inst_t * inst)
-{
- rte_eth_stats_reset (inst->data.dpdk_if.port_id);
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_config
- Description : config the port queue and ring
- Input : netif_inst_t* inst
- hal_netif_config_t* conf
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_config (netif_inst_t * inst, hal_netif_config_t * conf)
-{
- uint32_t i;
-
- inst->data.dpdk_if.hw_vlan_filter = conf->bit.hw_vlan_filter;
- inst->data.dpdk_if.hw_vlan_strip = conf->bit.hw_vlan_strip;
-
- inst->data.dpdk_if.rx_queue_num = conf->rx.queue_num;
- /* fix Buffer Overflow type code-dex issue */
- if (inst->data.dpdk_if.rx_queue_num > HAL_ETH_MAX_QUEUE_NUM)
- {
- NSHAL_LOGERR
- ("rx queue num error]rx_queue_num=%u, HAL_ETH_MAX_QUEUE_NUM=%d",
- inst->data.dpdk_if.rx_queue_num, HAL_ETH_MAX_QUEUE_NUM);
-
- return -1;
- }
-
- for (i = 0; i < inst->data.dpdk_if.rx_queue_num; i++)
- {
- inst->data.dpdk_if.rx_ring_size[i] = conf->rx.ring_size[i];
- inst->data.dpdk_if.rx_pool[i] =
- (struct rte_mempool *) conf->rx.ring_pool[i];
- }
-
- inst->data.dpdk_if.tx_queue_num = conf->tx.queue_num;
- /* fix "FORTIFY.Out-of-Bounds_Read--Off-by-One" type codedex issue */
- if (inst->data.dpdk_if.tx_queue_num > HAL_ETH_MAX_QUEUE_NUM)
- {
- NSHAL_LOGERR
- ("tx queue num error]rx_queue_num=%u, HAL_ETH_MAX_QUEUE_NUM=%d",
- inst->data.dpdk_if.tx_queue_num, HAL_ETH_MAX_QUEUE_NUM);
-
- return -1;
- }
- for (i = 0; i < inst->data.dpdk_if.tx_queue_num; i++)
- {
- inst->data.dpdk_if.tx_ring_size[i] = conf->tx.ring_size[i];
- }
-
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_bond_config
- Description : config the port for bond mode
- Input : netif_inst_t* inst
- uint8_t slave_num
- netif_inst_t* slave_inst[]
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_bond_config (netif_inst_t * inst, uint8_t slave_num,
- netif_inst_t * slave_inst[])
-{
- int ret;
- uint32_t i, queue;
-
- inst->data.dpdk_if.slave_num = slave_num;
-
- for (i = 0; i < slave_num; i++)
- {
- inst->data.dpdk_if.slave_port[i] = slave_inst[i]->data.dpdk_if.port_id;
-
- if (0 == i)
- {
- inst->data.dpdk_if.hw_vlan_filter =
- slave_inst[i]->data.dpdk_if.hw_vlan_filter;
- inst->data.dpdk_if.hw_vlan_strip =
- slave_inst[i]->data.dpdk_if.hw_vlan_strip;
- inst->data.dpdk_if.rx_queue_num =
- slave_inst[i]->data.dpdk_if.rx_queue_num;
- inst->data.dpdk_if.tx_queue_num =
- slave_inst[i]->data.dpdk_if.tx_queue_num;
-
- /*will be used in function dpdk_get_queue_conf and dpdk_get_port_conf */
- ret =
- STRCPY_S (inst->data.dpdk_if.driver_name,
- sizeof (inst->data.dpdk_if.driver_name), "bond");
-
- if (EOK != ret)
- {
- NSHAL_LOGERR ("STRCPY_S failed]ret=%d.", ret);
- return -1;
- }
-
- for (queue = 0; queue < HAL_ETH_MAX_QUEUE_NUM; queue++)
- {
- inst->data.dpdk_if.rx_pool[queue] =
- slave_inst[i]->data.dpdk_if.rx_pool[queue];
- inst->data.dpdk_if.rx_ring_size[queue] =
- slave_inst[i]->data.dpdk_if.rx_ring_size[queue];
- inst->data.dpdk_if.tx_ring_size[queue] =
- slave_inst[i]->data.dpdk_if.tx_ring_size[queue];
- }
- }
- }
-
- return 0;
-
-}
-
-/*****************************************************************************
- Prototype : dpdk_bond
- Description : bond port
- Input : netif_inst_t* inst
- const char* bond_name
- uint8_t slave_num
- netif_inst_t* slave_inst[]
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_bond (netif_inst_t * inst, const char *bond_name, uint8_t slave_num,
- netif_inst_t * slave_inst[])
-{
- int i, ret;
- int port;
- struct ether_addr eth_addr;
-
- /* check if all the slaves' drivers are same, not support different drivers */
- for (i = 1; i < slave_num; i++)
- {
- if (strncmp
- (slave_inst[0]->data.dpdk_if.driver_name,
- slave_inst[i]->data.dpdk_if.driver_name,
- strlen (slave_inst[0]->data.dpdk_if.driver_name)))
- {
- NSHAL_LOGERR
- ("dpdk does not support different types of network card]slave[0]=%s, slave[%i]=%s",
- slave_inst[0]->data.dpdk_if.driver_name, i,
- slave_inst[i]->data.dpdk_if.driver_name);
- return -1;
- }
- }
-
- ret = dpdk_set_nic_name (inst, bond_name);
-
- if (0 != ret)
- {
- NSHAL_LOGERR ("dpdk_set_nic_name fail]ret=%d", ret);
- return -1;
- }
-
- port =
- rte_eth_bond_create (bond_name, BONDING_MODE_ACTIVE_BACKUP, SOCKET_ID_0);
- if (port < 0)
- {
- NSHAL_LOGERR ("rte_eth_bond_create fail]ret=%i", ret);
- return -1;
- }
-
- ret = dpdk_set_port (inst, (uint8_t) port);
-
- if (ret < 0)
- {
- NSHAL_LOGERR ("dpdk_set_port fail]ret=%i", ret);
- return ret;
- }
-
- ret = dpdk_bond_config (inst, slave_num, slave_inst);
-
- if (ret < 0)
- {
- NSHAL_LOGERR ("dpdk_bond_config fail]ret=%i", ret);
- return ret;
- }
-
- ret = dpdk_setup_port (inst);
-
- if (ret < 0)
- {
- NSHAL_LOGERR ("dpdk_setup_port fail]ret=%i", ret);
- return ret;
- }
-
- for (i = 0; i < slave_num; i++)
- {
- NSHAL_LOGINF ("add slave port_id=%u, nic_name=%s",
- slave_inst[i]->data.dpdk_if.port_id,
- slave_inst[i]->data.dpdk_if.nic_name);
-
- if (rte_eth_bond_slave_add
- ((uint8_t) port, slave_inst[i]->data.dpdk_if.port_id) == -1)
- {
- NSHAL_LOGERR ("adding slave (%u) to bond (%u) failed]",
- slave_inst[i]->data.dpdk_if.port_id, port);
- return -1;
- }
- }
-
- rte_eth_macaddr_get (slave_inst[0]->data.dpdk_if.port_id, &eth_addr);
-
- ret = rte_eth_bond_mac_address_set ((uint8_t) port, &eth_addr);
- if (ret < 0)
- {
- NSHAL_LOGERR ("rte_eth_bond_mac_address_set fail]ret=%i", ret);
- return ret;
- }
-
- ret = rte_eth_dev_start (inst->data.dpdk_if.port_id);
- if (ret < 0)
- {
- NSHAL_LOGERR ("rte_eth_dev_start fail]ret=%i, port_id=%d", ret,
- inst->data.dpdk_if.port_id);
- return ret;
- }
-
- NSHAL_LOGINF ("port_id=%d,nic_name=%s,mac=%02X:%02X:%02X:%02X:%02X:%02X",
- port,
- inst->data.dpdk_if.nic_name,
- eth_addr.addr_bytes[0],
- eth_addr.addr_bytes[1],
- eth_addr.addr_bytes[2],
- eth_addr.addr_bytes[3],
- eth_addr.addr_bytes[4], eth_addr.addr_bytes[5]);
- return 0;
-}
-
-/*****************************************************************************
- Prototype : dpdk_add_mcastaddr
- Description : add mcastaddr to the port
- Input : netif_inst_t* inst
- void* mc_addr_set
- void* mc_addr
- uint32_t nb_mc_addr
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_set_mcastaddr (netif_inst_t * inst, void *mc_addr_set,
- void *mc_addr, uint32_t nb_mc_addr)
-{
- uint8_t port = inst->data.dpdk_if.port_id;
- int iRetVal;
-
- NSHAL_LOGINF ("mc_addr_set number=%u", nb_mc_addr);
- iRetVal = rte_eth_dev_set_mc_addr_list (port, mc_addr_set, nb_mc_addr);
- if (iRetVal != 0)
- {
- NSHAL_LOGWAR ("fail to set_mc_addr_list]port=%u,ret=%d", port, iRetVal);
- }
-
- return iRetVal;
-}
-
-/*****************************************************************************
- Prototype : dpdk_add_mac_addr
- Description : add mcastaddr to the port
- Input : netif_inst_t* inst
- void* mc_addr
- Output : None
- Return Value : NSTACK_STATIC int
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_add_mac_addr (netif_inst_t * inst, void *mc_addr)
-{
- uint8_t port = inst->data.dpdk_if.port_id;
- int iRetVal;
-
- /* for MLX: set_mc_addr_list() is not callback, so call mac_addr_add() instead */
- iRetVal = rte_eth_dev_mac_addr_add (port, mc_addr, 0);
- if (0 != iRetVal)
- {
- NSHAL_LOGWAR ("fail to add_mac_addr]port=%u,ret=%d", port, iRetVal);
- }
-
- return iRetVal;
-}
-
-/*****************************************************************************
- Prototype : dpdk_rmv_mac_addr
- Description : remove mcastaddr to the port
- Input : netif_inst_t* inst
- void* mc_addr
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_rmv_mac_addr (netif_inst_t * inst, void *mc_addr)
-{
- uint8_t port = inst->data.dpdk_if.port_id;
- int iRetVal;
-
- /* for MLX: set_mc_addr_list() is not callback, so call mac_addr_remove() instead */
- iRetVal = rte_eth_dev_mac_addr_remove (port, mc_addr);
- if (0 != iRetVal)
- {
- NSHAL_LOGWAR ("fail to rmv_mac_addr]port=%u,ret=%d", port, iRetVal);
- }
-
- return iRetVal;
-}
-
-/*****************************************************************************
- Prototype : dpdk_allmcast
- Description : set allmcast mode to the port
- Input : netif_inst_t* inst
- uint8_t enable
- Output : None
- Return Value : NSTACK_STATIC
- Calls :
- Called By :
-
-*****************************************************************************/
-NSTACK_STATIC int
-dpdk_allmcast (netif_inst_t * inst, uint8_t enable)
-{
- if (enable)
- {
- rte_eth_allmulticast_enable (inst->data.dpdk_if.port_id);
- }
- else
- {
- rte_eth_allmulticast_disable (inst->data.dpdk_if.port_id);
- }
-
- return 0;
-}
-
-const netif_ops_t dpdk_netif_ops = {
- .name = "dpdk",
- .init_global = dpdk_init_global,
- .init_local = dpdk_init_local,
- .open = dpdk_open,
- .close = dpdk_close,
- .start = dpdk_start,
- .stop = dpdk_stop,
- .bond = dpdk_bond,
- .mtu = dpdk_get_mtu,
- .macaddr = dpdk_get_macaddr,
- .capability = dpdk_get_capability,
- .recv = dpdk_recv,
- .send = dpdk_send,
- .link_status = dpdk_link_status,
- .stats = dpdk_stats,
- .stats_reset = dpdk_stats_reset,
- .config = dpdk_config,
- .mcastaddr = dpdk_set_mcastaddr,
- .add_mac = dpdk_add_mac_addr,
- .rmv_mac = dpdk_rmv_mac_addr,
- .allmcast = dpdk_allmcast
-};
-
-HAL_IO_REGISTER (dpdk, &dpdk_netif_ops);
diff --git a/stacks/lwip_stack/src/maintain/CMakeLists.txt b/stacks/lwip_stack/src/maintain/CMakeLists.txt
deleted file mode 100644
index 05c5117..0000000
--- a/stacks/lwip_stack/src/maintain/CMakeLists.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-#########################################################################
-#
-# 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.
-#########################################################################
-
-if(WITH_HAL_LIB)
-else()
- SET(PAL_H_DIRECTORIES "/usr/include/dpdk/")
- SET(PAL_BITWIDE_ADJUST ${PROJECT_SOURCE_DIR}/../../src/framework/common/base/include/common_pal_bitwide_adjust.h)
- ADD_DEFINITIONS(-include ${PAL_BITWIDE_ADJUST})
- INCLUDE_DIRECTORIES(
- ${PAL_H_DIRECTORIES}
- )
-endif()
-
-FILE(GLOB_RECURSE NSTACKMAINTAIN *.c)
-
-LINK_LIBRARIES(m dl rt dmm_api)
-if(WITH_SECUREC_LIB)
-INCLUDE_DIRECTORIES(
- ./
- ${JSON_C_SRC}
- ${SECUREC_SRC}
- ${CMAKE_CURRENT_LIST_DIR}/../include/
-)
-else()
-INCLUDE_DIRECTORIES(
- ./
- ${JSON_C_SRC}
- ${CMAKE_CURRENT_LIST_DIR}/../include/
-)
-endif()
-ADD_LIBRARY(nStackMaintain STATIC ${NSTACKMAINTAIN})
diff --git a/stacks/lwip_stack/src/maintain/fw_mt_config.c b/stacks/lwip_stack/src/maintain/fw_mt_config.c
deleted file mode 100644
index 403a46e..0000000
--- a/stacks/lwip_stack/src/maintain/fw_mt_config.c
+++ /dev/null
@@ -1,807 +0,0 @@
-/*
-*
-* 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.
-*/
-
-/*==============================================*
- * include header files *
- *----------------------------------------------*/
-
-#include "types.h"
-#include "nsfw_mt_config.h"
-#include <stdlib.h>
-#include <pthread.h>
-#include "nstack_log.h"
-#include "nstack_securec.h"
-#include "json.h"
-#include "nsfw_init.h"
-#include "nsfw_mgr_com_api.h"
-
-/*==============================================*
- * project-wide global variables *
- *----------------------------------------------*/
-
-// can be read from config file
-u32 g_base_cfg_items[MAX_BASE_CFG] = { 0 };
-
-// calculated according to base config
-u32 g_custom_cfg_items[MAX_CUSTOM_CFG] = { 0 };
-
-// note: if seg number greater than 16, such buffer should use malloc
-// or it will be exceed 2K
-struct cfg_item_info g_cfg_item_info[CFG_SEG_MAX][MAX_CFG_ITEM];
-
-NSTACK_STATIC int g_cfg_item_count[CFG_SEG_MAX] = { 0 };
-
-NSTACK_STATIC char *g_cfg_seg_name[CFG_SEG_MAX];
-
-/*==============================================*
- * routines' or functions' implementations *
- *----------------------------------------------*/
-
-/* nStackCtrl cannot get the env path info, no start by shell script, need get
- the path info ,and legal check , add a input parameter proc_type*/
-
-NSTACK_STATIC int
-get_ctrl_dir_info (char *current_path, unsigned path_len)
-{
- char ctrl_dir[MAX_FILE_NAME_LEN] = { 0 };
- int count = 0;
- unsigned int dir_len = 0;
-
- //nStackCtrl cannot get the path from the env, so need get from current pwd.
- count = readlink ("/proc/self/exe", ctrl_dir, MAX_FILE_NAME_LEN);
- if ((count < 0) || (count >= MAX_FILE_NAME_LEN))
- {
- save_pre_init_log (NSLOG_ERR,
- "readlink get nStackCtrl path failed, write nothing!");
- return -1;
- }
- ctrl_dir[count] = '\0';
-
- dir_len = strlen (ctrl_dir);
- if ((dir_len > strlen ("nStackCtrl")) && (dir_len < MAX_FILE_NAME_LEN))
- {
- ctrl_dir[dir_len - strlen ("nStackCtrl")] = '\0';
- }
- else
- {
- save_pre_init_log (NSLOG_ERR, "path strlen is illegal, write nothing!");
- return -1;
- }
-
- if (NULL == strstr (ctrl_dir, "bin"))
- {
- /* Exit before nstack_log_init, use printf */
- printf
- ("the nStackServer content change, plz keep same with nStack release, exit!\n");
-#ifdef FOR_NSTACK_UT
- return -1;
-#else
- exit (1);
-#endif
- }
- if (EOK !=
- STRNCAT_S (ctrl_dir, sizeof (ctrl_dir), "/../configure",
- strlen ("/../configure")))
- {
- save_pre_init_log (NSLOG_ERR, "STRNCAT_S failed, current_dir = %s",
- ctrl_dir);
- return -1;
- }
-
- if (-1 == SNPRINTF_S (current_path, path_len, path_len - 1, "%s", ctrl_dir))
- {
- save_pre_init_log (NSLOG_ERR,
- "SNPRINTF_S path name failed, ctrl_dir %s.",
- ctrl_dir);
- return -1;
- }
-
- return 0;
-
-}
-
-NSTACK_STATIC int
-get_cfg_buf (u32 proc_type, char *cfg_buf, unsigned buf_size)
-{
- char current_dir[MAX_FILE_NAME_LEN] = { 0 };
- char cfg_file_name[MAX_FILE_NAME_LEN] = { 0 };
- char *cfg_resolved_path = NULL;
- char *cfg_path = NULL;
- FILE *fp = NULL;
- int cfg_buf_len = 0;
-
- cfg_path = getenv (CFG_PATH);
- if ((NULL == cfg_path) && (NSFW_PROC_CTRL == proc_type))
- {
- if (-1 == get_ctrl_dir_info (current_dir, sizeof (current_dir)))
- {
- save_pre_init_log (NSLOG_ERR, "get_ctrl_dir_info failed.");
- return -1;
- }
- cfg_path = current_dir;
- }
- else if ((NULL == cfg_path) && (NSFW_PROC_CTRL != proc_type))
- {
- save_pre_init_log (NSLOG_ERR,
- "main or master process get nstack config path failed, will use default config!");
- return -1;
- }
-
- if (-1 ==
- SPRINTF_S (cfg_file_name, sizeof (cfg_file_name), "%s/%s", cfg_path,
- CFG_FILE_NAME))
- {
- save_pre_init_log (NSLOG_ERR,
- "format config file name failed, path %s, name %s.",
- cfg_path, CFG_FILE_NAME);
- return -1;
- }
-
- cfg_resolved_path = realpath (cfg_file_name, NULL);
- if (NULL == cfg_resolved_path)
- {
- save_pre_init_log (NSLOG_ERR, "config file path invalid, cfg name %s.",
- cfg_file_name);
- return -1;
- }
-
- fp = fopen (cfg_resolved_path, "r");
- if (NULL == fp)
- {
- free (cfg_resolved_path);
- save_pre_init_log (NSLOG_ERR, "config file path invalid, cfg name %s.",
- cfg_file_name);
- return -1;
- }
-
- free (cfg_resolved_path);
- // read config file to json buffer
- cfg_buf_len = fread (cfg_buf, 1, buf_size, fp);
-
- fclose (fp);
-
- return cfg_buf_len;
-}
-
-NSTACK_STATIC inline int
-get_value_from_json_obj (struct json_object *obj, struct cfg_item_info *pitem)
-{
- switch (pitem->type)
- {
- case CFG_ITEM_TYPE_INT:
- pitem->value = json_object_get_int (obj);
- break;
- case CFG_ITEM_TYPE_STRING:
- pitem->pvalue = (char *) json_object_get_string (obj);
- break;
- default:
- // print log here?
- return -1;
- }
- return 0;
-}
-
-NSTACK_STATIC inline void
-get_cfg_item (struct json_object *obj, int seg_index)
-{
- struct json_object *cfg_seg_obj = NULL;
- struct json_object *cfg_seg = NULL;
- struct json_object *cfg_item_obj[MAX_CFG_ITEM] = { 0 };
- int i = 0;
- int cfg_num = 0;
-
- (void) json_object_object_get_ex (obj, g_cfg_seg_name[seg_index],
- &cfg_seg_obj);
- if (NULL == cfg_seg_obj)
- {
- save_pre_init_log (NSLOG_ERR, "get config segment obj failed, seg:%s.",
- g_cfg_seg_name[seg_index]);
- return;
- }
-
- cfg_num = json_object_array_length (cfg_seg_obj);
- if (cfg_num < 1)
- {
- save_pre_init_log (NSLOG_ERR,
- "config segment count invalid, config segment %s, count %d.",
- g_cfg_seg_name[seg_index], cfg_num);
- return;
- }
-
- // each config segment just has 1 array element
- cfg_seg = (struct json_object *) json_object_array_get_idx (cfg_seg_obj, 0);
- if (NULL == cfg_seg)
- {
- save_pre_init_log (NSLOG_ERR, "no config item in seg %s.",
- g_cfg_seg_name[seg_index]);
- return;
- }
-
- for (; i < g_cfg_item_count[seg_index]; i++)
- {
- (void) json_object_object_get_ex (cfg_seg,
- g_cfg_item_info[seg_index][i].name,
- &cfg_item_obj[i]);
-
- if (NULL == cfg_item_obj[i])
- {
- save_pre_init_log (NSLOG_ERR,
- "get config item failed, config item %s.",
- g_cfg_item_info[seg_index][i].name);
- return;
- }
-
- // note: should specify the config item type if not only int item exist
- if (get_value_from_json_obj
- (cfg_item_obj[i], &g_cfg_item_info[seg_index][i]) != 0)
- {
- return;
- }
- }
-
- return;
-}
-
-NSTACK_STATIC inline void
-parse_cfg (char *cfg_buf)
-{
- if (NULL == cfg_buf)
- {
- return;
- }
-
- struct json_object *obj =
- (struct json_object *) json_tokener_parse (cfg_buf);
- int i = 0;
-
- for (; i < CFG_SEG_MAX; i++)
- {
- if (0 == g_cfg_item_count[i])
- {
- continue;
- }
-
- get_cfg_item (obj, i);
- }
-}
-
-NSTACK_STATIC inline int
-is_valid (int value, int min_value, int max_value)
-{
- if ((value < min_value) || (value > max_value))
- {
- return 0;
- }
-
- return 1;
-}
-
-NSTACK_STATIC inline void
-check_cfg_item_int (struct cfg_item_info *pitem)
-{
- if (!is_valid (pitem->value, pitem->min_value, pitem->max_value))
- {
- pitem->value = pitem->default_value;
- }
-}
-
-NSTACK_STATIC inline void
-check_cfg_item_string (struct cfg_item_info *pitem)
-{
- if ((NULL == pitem->pvalue) || ((pitem->pvalue) && (0 == pitem->pvalue[0])))
- {
- pitem->pvalue = pitem->default_str;
- }
-}
-
-NSTACK_STATIC inline void
-check_cfg_item (struct cfg_item_info *pitem)
-{
- switch (pitem->type)
- {
- case CFG_ITEM_TYPE_INT:
- check_cfg_item_int (pitem);
- if (pitem->custom_check)
- pitem->custom_check (pitem);
- break;
- case CFG_ITEM_TYPE_STRING:
- check_cfg_item_string (pitem);
- if (pitem->custom_check)
- pitem->custom_check (pitem);
- break;
- default:
- break;
- }
-}
-
-NSTACK_STATIC inline void
-check_cfg ()
-{
- int i = 0;
- int j = 0;
- for (i = 0; i < CFG_SEG_MAX; i++)
- {
- for (j = 0; j < g_cfg_item_count[i]; j++)
- {
- check_cfg_item (&g_cfg_item_info[i][j]);
- }
- }
-}
-
-NSTACK_STATIC inline void
-print_item_info (char *seg_name, struct cfg_item_info *pitem)
-{
- switch (pitem->type)
- {
- case CFG_ITEM_TYPE_INT:
- save_pre_init_log (NSLOG_INF, "config read seg:%s, name:%s, value:%d.",
- seg_name, pitem->name, pitem->value);
- break;
- case CFG_ITEM_TYPE_STRING:
- save_pre_init_log (NSLOG_INF, "config read seg:%s, name:%s, pvalue:%s.",
- seg_name, pitem->name, pitem->pvalue);
- break;
- default:
- break;
- }
-}
-
-NSTACK_STATIC inline void
-print_config_item_info ()
-{
- int i = 0;
- int j = 0;
- for (; i < CFG_SEG_MAX; i++)
- {
- for (j = 0; j < g_cfg_item_count[i]; j++)
- {
- print_item_info (g_cfg_seg_name[i], &g_cfg_item_info[i][j]);
- }
- }
-}
-
-void
-check_socket_config (void *pitem)
-{
- struct cfg_item_info *item = (struct cfg_item_info *) pitem;
- if (item->value > 0 && !(item->value & (item->value - 1)))
- return;
- save_pre_init_log (NSLOG_WAR,
- "warning: config socket_num (%u) is not 2^n, will use the default value:%u",
- item->value, item->default_value);
- item->value = item->default_value;
-}
-
-/* thread schedule mode and thread priority should be matched */
-void
-check_thread_config (void *pitem)
-{
- struct cfg_item_info *pri_cfg = (struct cfg_item_info *) pitem;
- struct cfg_item_info *policy_cfg =
- &g_cfg_item_info[CFG_SEG_PRI][CFG_SEG_THREAD_PRI_POLICY];
-
- int max_pri = sched_get_priority_max (policy_cfg->value);
- int min_pri = sched_get_priority_min (policy_cfg->value);
- if ((pri_cfg->value > max_pri) || (pri_cfg->value < min_pri))
- {
- save_pre_init_log (NSLOG_INF,
- "detect invalid thread priority configuration, use default value] policy=%d, pri=%d, def policy=%d, def pri=%d",
- policy_cfg->value, pri_cfg->value,
- policy_cfg->default_value, pri_cfg->default_value);
-
- policy_cfg->value = policy_cfg->default_value;
- pri_cfg->value = pri_cfg->default_value;
- }
-}
-
-#define SET_CFG_ITEM(seg, item, field, value) g_cfg_item_info[seg][item].field = (value)
-#define SET_THREAD_CFG_ITEM(item, field, value) SET_CFG_ITEM(CFG_SEG_PRI, item, field, value)
-
-NSTACK_STATIC void
-init_main_def_config_items ()
-{
- /* base config */
- g_cfg_seg_name[CFG_SEG_BASE] = "cfg_seg_socket";
- g_cfg_item_count[CFG_SEG_BASE] = CFG_SEG_BASE_MAX;
- /* -- socket number */
- g_cfg_item_info[CFG_SEG_BASE][CFG_SEG_BASE_SOCKET_NUM].name = "socket_num";
- g_cfg_item_info[CFG_SEG_BASE][CFG_SEG_BASE_SOCKET_NUM].type =
- CFG_ITEM_TYPE_INT;
- g_cfg_item_info[CFG_SEG_BASE][CFG_SEG_BASE_SOCKET_NUM].custom_check =
- check_socket_config;
- set_cfg_info (CFG_SEG_BASE, CFG_SEG_BASE_SOCKET_NUM, MIN_SOCKET_NUM,
- MAX_SOCKET_NUM, DEF_SOCKET_NUM);
- /* -- arp stale time */
- g_cfg_item_info[CFG_SEG_BASE][CFG_SEG_BASE_ARP_STALE_TIME].name =
- "arp_stale_time";
- g_cfg_item_info[CFG_SEG_BASE][CFG_SEG_BASE_ARP_STALE_TIME].type =
- CFG_ITEM_TYPE_INT;
- g_cfg_item_info[CFG_SEG_BASE][CFG_SEG_BASE_ARP_STALE_TIME].custom_check =
- NULL;
- set_cfg_info (CFG_SEG_BASE, CFG_SEG_BASE_ARP_STALE_TIME,
- MIN_ARP_STACLE_TIME, MAX_ARP_STACLE_TIME,
- DEF_ARP_STACLE_TIME);
- /* -- arp braodcast retransmission times */
- g_cfg_item_info[CFG_SEG_BASE][CFG_SEG_BASE_ARP_BC_RETRANS_NUM].name =
- "arp_bc_retrans_num";
- g_cfg_item_info[CFG_SEG_BASE][CFG_SEG_BASE_ARP_BC_RETRANS_NUM].type =
- CFG_ITEM_TYPE_INT;
- g_cfg_item_info[CFG_SEG_BASE][CFG_SEG_BASE_ARP_BC_RETRANS_NUM].custom_check
- = NULL;
- set_cfg_info (CFG_SEG_BASE, CFG_SEG_BASE_ARP_BC_RETRANS_NUM,
- MIN_ARP_BC_RETRANS_NUM, MAX_ARP_BC_RETRANS_NUM,
- DEF_ARP_BC_RETRANS_NUM);
-
- /* support thread priority configuration */
- g_cfg_seg_name[CFG_SEG_PRI] = "cfg_seg_thread_pri";
- g_cfg_item_count[CFG_SEG_PRI] = CFG_SEG_THREAD_PRI_MAX;
- SET_THREAD_CFG_ITEM (CFG_SEG_THREAD_PRI_POLICY, name, "sched_policy");
- SET_THREAD_CFG_ITEM (CFG_SEG_THREAD_PRI_POLICY, type, CFG_ITEM_TYPE_INT);
- SET_THREAD_CFG_ITEM (CFG_SEG_THREAD_PRI_POLICY, custom_check, NULL);
- set_cfg_info (CFG_SEG_PRI, CFG_SEG_THREAD_PRI_POLICY, 0, 2, 0);
-
- SET_THREAD_CFG_ITEM (CFG_SEG_THREAD_PRI_PRI, name, "thread_pri");
- SET_THREAD_CFG_ITEM (CFG_SEG_THREAD_PRI_PRI, type, CFG_ITEM_TYPE_INT);
- SET_THREAD_CFG_ITEM (CFG_SEG_THREAD_PRI_PRI, custom_check,
- check_thread_config);
- set_cfg_info (CFG_SEG_PRI, CFG_SEG_THREAD_PRI_PRI, 0, 99, 0);
-
- /* remove unsed operation config set */
- /* log config */
- g_cfg_seg_name[CFG_SEG_LOG] = "cfg_seg_log";
- g_cfg_item_count[CFG_SEG_LOG] = 2;
- g_cfg_item_info[CFG_SEG_LOG][0].name = "run_log_size";
- g_cfg_item_info[CFG_SEG_LOG][0].type = CFG_ITEM_TYPE_INT;
- g_cfg_item_info[CFG_SEG_LOG][0].custom_check = NULL;
- g_cfg_item_info[CFG_SEG_LOG][1].name = "run_log_count";
- g_cfg_item_info[CFG_SEG_LOG][1].type = CFG_ITEM_TYPE_INT;
- g_cfg_item_info[CFG_SEG_LOG][1].custom_check = NULL;
- set_cfg_info (CFG_SEG_LOG, 0, 10, 100, 50);
- set_cfg_info (CFG_SEG_LOG, 1, 2, 20, 10);
-
- /* path config */
- /* set the path string and default str */
- g_cfg_seg_name[CFG_SEG_PATH] = "cfg_seg_path";
- g_cfg_item_count[CFG_SEG_PATH] = 1;
- g_cfg_item_info[CFG_SEG_PATH][0].name = "stackx_log_path";
- g_cfg_item_info[CFG_SEG_PATH][0].type = CFG_ITEM_TYPE_STRING;
- g_cfg_item_info[CFG_SEG_PATH][0].default_str = NSTACK_LOG_NAME;
- g_cfg_item_info[CFG_SEG_PATH][0].custom_check = NULL;
-}
-
-/* master and ctrl both use the function to reduce the redundancy,
-* as the parameter and operation all same.
-*/
-NSTACK_STATIC void
-init_master_def_config_items ()
-{
- int i = 0;
- for (; i < CFG_SEG_MAX; i++)
- {
- if (i != CFG_SEG_LOG)
- {
- g_cfg_item_count[i] = 0;
- }
- }
-
- g_cfg_seg_name[CFG_SEG_LOG] = "cfg_seg_log";
- g_cfg_item_count[CFG_SEG_LOG] = 2;
- g_cfg_item_info[CFG_SEG_LOG][0].name = "mon_log_size";
- g_cfg_item_info[CFG_SEG_LOG][0].type = CFG_ITEM_TYPE_INT;
- g_cfg_item_info[CFG_SEG_LOG][0].custom_check = NULL;
- g_cfg_item_info[CFG_SEG_LOG][1].name = "mon_log_count";
- g_cfg_item_info[CFG_SEG_LOG][1].type = CFG_ITEM_TYPE_INT;
- g_cfg_item_info[CFG_SEG_LOG][1].custom_check = NULL;
-
- set_cfg_info (CFG_SEG_LOG, 0, 2, 20, 10);
- set_cfg_info (CFG_SEG_LOG, 1, 2, 20, 10);
-
- g_cfg_seg_name[CFG_SEG_PATH] = "cfg_seg_path";
- g_cfg_item_count[CFG_SEG_PATH] = 1;
- g_cfg_item_info[CFG_SEG_PATH][0].name = "master_log_path";
- g_cfg_item_info[CFG_SEG_PATH][0].type = CFG_ITEM_TYPE_STRING;
- g_cfg_item_info[CFG_SEG_PATH][0].default_str = NSTACK_LOG_NAME;
- g_cfg_item_info[CFG_SEG_PATH][0].custom_check = NULL;
-}
-
-NSTACK_STATIC void
-read_init_config (u32 proc_type)
-{
- int cfg_buf_len = 0;
- char cfg_json_buf[CFG_BUFFER_LEN] = { 0 };
-
- cfg_buf_len = get_cfg_buf (proc_type, cfg_json_buf, sizeof (cfg_json_buf));
- if (cfg_buf_len < 0)
- {
- save_pre_init_log (NSLOG_WAR,
- "warning:file not exist, use default config.");
- return;
- }
- else
- {
- /* parse json buffer */
- parse_cfg (cfg_json_buf);
- }
- save_pre_init_log (NSLOG_INF, "read configuration finished.");
-}
-
-/* =========== set config items ========= */
-NSTACK_STATIC inline void
-set_base_config ()
-{
- g_base_cfg_items[CFG_BASE_RING_SIZE] = DEF_RING_BASE_SIZE;
- g_base_cfg_items[CFG_BASE_HAL_PORT_NUM] = DEF_HAL_PORT_NUM;
-
- g_base_cfg_items[CFG_BASE_SOCKET_NUM] =
- (u32) get_cfg_info (CFG_SEG_BASE, CFG_SEG_BASE_SOCKET_NUM);
- g_base_cfg_items[CFG_BASE_ARP_STALE_TIME] =
- (u32) get_cfg_info (CFG_SEG_BASE, CFG_SEG_BASE_ARP_STALE_TIME);
- g_base_cfg_items[CFG_BASE_ARP_BC_RETRANS_NUM] =
- (u32) get_cfg_info (CFG_SEG_BASE, CFG_SEG_BASE_ARP_BC_RETRANS_NUM);
-}
-
-NSTACK_STATIC void
-init_base_config (cfg_module_param * param)
-{
- /* initial default config */
- /* omc_ctrl single log file should be 10M */
- if (param->proc_type == NSFW_PROC_CTRL)
- {
- init_master_def_config_items ();
- }
- else
- {
- init_main_def_config_items ();
- }
-
- /* read base config from file */
- read_init_config (param->proc_type);
- /* check config and reset value */
- check_cfg ();
-
- /* print config info */
- print_config_item_info ();
-
- set_base_config ();
-}
-
-NSTACK_STATIC void
-init_stackx_config ()
-{
- u32 socket_num_per_thread = CUR_CFG_SOCKET_NUM;
- u32 factor = socket_num_per_thread / SOCKET_NUM_PER_THREAD;
-
- if (factor == 0 || socket_num_per_thread % SOCKET_NUM_PER_THREAD > 0)
- {
- factor += 1;
- }
-
- save_pre_init_log (NSLOG_INF, "socket num:%d, factor:%d",
- CUR_CFG_SOCKET_NUM, factor);
-
- /* MBUF config */
- set_custom_cfg_item (CFG_MBUF_DATA_SIZE, DEF_MBUF_DATA_SIZE);
- set_custom_cfg_item (CFG_TX_MBUF_NUM, DEF_TX_MBUF_POOL_SIZE);
- set_custom_cfg_item (CFG_RX_MBUF_NUM, DEF_RX_MBUF_POOL_SIZE);
- set_custom_cfg_item (CFG_MP_TCPSEG_NUM, DEF_MEMP_NUM_TCP_SEG); /* tcp segment number */
- set_custom_cfg_item (CFG_MP_MSG_NUM, DEF_TX_MSG_POOL_SIZE); /* msg number */
-
- /* ring config */
- set_custom_cfg_item (CFG_HAL_RX_RING_SIZE, DEF_HAL_RX_RING_SIZE); /* netif ring size not changed */
- set_custom_cfg_item (CFG_HAL_TX_RING_SIZE, DEF_HAL_TX_RING_SIZE); /* netif ring size not changed */
- set_custom_cfg_item (CFG_MBOX_RING_SIZE, DEF_MBOX_RING_SIZE);
- set_custom_cfg_item (CFG_SPL_MAX_RING_SIZE, DEF_SPL_MAX_RING_SIZE); /* stackx ring size */
-
- /* pcb config */
- set_custom_cfg_item (CFG_TCP_PCB_NUM, DEF_TCP_PCB_NUM * factor);
- set_custom_cfg_item (CFG_UDP_PCB_NUM, DEF_UDP_PCB_NUM * factor);
- set_custom_cfg_item (CFG_RAW_PCB_NUM, DEF_RAW_PCB_NUM * factor);
- set_custom_cfg_item (CFG_ARP_QUEUE_NUM,
- CUR_CFG_SOCKET_NUM >
- DEF_SOCKET_NUM ? LARGE_ARP_QUEUE_NUM :
- DEF_ARP_QUEUE_NUM);
-}
-
-void
-print_final_config_para ()
-{
- save_pre_init_log (NSLOG_INF, "socket_num :%u",
- get_base_cfg (CFG_BASE_SOCKET_NUM));
- save_pre_init_log (NSLOG_INF, "base_ring_size :%u",
- get_base_cfg (CFG_BASE_RING_SIZE));
- save_pre_init_log (NSLOG_INF, "hal_port_num :%u",
- get_base_cfg (CFG_BASE_HAL_PORT_NUM));
- save_pre_init_log (NSLOG_INF, "arp_stale_num :%u",
- get_base_cfg (CFG_BASE_ARP_STALE_TIME));
- save_pre_init_log (NSLOG_INF, "arp_bc_retrans_num :%u",
- get_base_cfg (CFG_BASE_ARP_BC_RETRANS_NUM));
-
- save_pre_init_log (NSLOG_INF, "mbuf_data_size :%u",
- get_custom_cfg (CFG_MBUF_DATA_SIZE));
- save_pre_init_log (NSLOG_INF, "tx_mbuf_num :%u",
- get_custom_cfg (CFG_TX_MBUF_NUM));
- save_pre_init_log (NSLOG_INF, "rx_mbuf_num :%u",
- get_custom_cfg (CFG_RX_MBUF_NUM));
- save_pre_init_log (NSLOG_INF, "tcp_seg_mp_num :%u",
- get_custom_cfg (CFG_MP_TCPSEG_NUM));
- save_pre_init_log (NSLOG_INF, "msg_mp_num :%u",
- get_custom_cfg (CFG_MP_MSG_NUM));
- save_pre_init_log (NSLOG_INF, "hal_tx_ring_size :%u",
- get_custom_cfg (CFG_HAL_TX_RING_SIZE));
- save_pre_init_log (NSLOG_INF, "hal_rx_ring_size :%u",
- get_custom_cfg (CFG_HAL_RX_RING_SIZE));
- save_pre_init_log (NSLOG_INF, "mbox_ring_size :%u",
- get_custom_cfg (CFG_MBOX_RING_SIZE));
- save_pre_init_log (NSLOG_INF, "spl_ring_size :%u",
- get_custom_cfg (CFG_SPL_MAX_RING_SIZE));
- save_pre_init_log (NSLOG_INF, "tcp_pcb_num :%u",
- get_custom_cfg (CFG_TCP_PCB_NUM));
- save_pre_init_log (NSLOG_INF, "udp_pcb_num :%u",
- get_custom_cfg (CFG_UDP_PCB_NUM));
- save_pre_init_log (NSLOG_INF, "raw_pcb_num :%u",
- get_custom_cfg (CFG_RAW_PCB_NUM));
-}
-
-NSTACK_STATIC void
-init_module_cfg_default ()
-{
- init_stackx_config ();
-
- print_final_config_para ();
-}
-
-NSTACK_STATIC void
-init_main_log_cfg_para ()
-{
- struct log_init_para log_para;
- log_para.run_log_size = g_cfg_item_info[CFG_SEG_LOG][0].value;
- log_para.run_log_count = g_cfg_item_info[CFG_SEG_LOG][1].value;
-
- /* log path valid check */
- if (0 == access (g_cfg_item_info[CFG_SEG_PATH][0].pvalue, W_OK))
- {
- log_para.run_log_path = g_cfg_item_info[CFG_SEG_PATH][0].pvalue;
- }
- else
- {
- log_para.run_log_path = g_cfg_item_info[CFG_SEG_PATH][0].default_str;
- }
-
- set_log_init_para (&log_para);
-}
-
-/* nStackCtrl is the diff process with main, cannot use main process info,
- need get the configure info respectively */
-/* omc_ctrl single log file should be 10M */
-NSTACK_STATIC void
-init_ctrl_log_cfg_para ()
-{
- struct log_init_para log_para;
- log_para.mon_log_size = g_cfg_item_info[CFG_SEG_LOG][0].value;
- log_para.mon_log_count = g_cfg_item_info[CFG_SEG_LOG][1].value;
-
- /* log path valid check */
- if (0 == access (g_cfg_item_info[CFG_SEG_PATH][0].pvalue, W_OK))
- {
- log_para.mon_log_path = g_cfg_item_info[CFG_SEG_PATH][0].pvalue;
- }
- else
- {
- log_para.mon_log_path = g_cfg_item_info[CFG_SEG_PATH][0].default_str;
- }
-
- set_log_init_para (&log_para);
-}
-
-/*===========config init for nstack main=============*/
-
-NSTACK_STATIC void
-init_module_cfg_nstackmain ()
-{
- /* init config data */
- init_module_cfg_default ();
-
- /* init log para */
- init_main_log_cfg_para ();
-}
-
-/*===========config init for nstack ctrl=============*/
-
-/* nStackCtrl is the diff process with main,
- cannot use main process info, need get the configure info respectively */
-
-NSTACK_STATIC void
-init_module_cfg_nstackctrl ()
-{
- init_ctrl_log_cfg_para ();
-}
-
-/*===========init config module=============*/
-void
-config_module_init (cfg_module_param * param)
-{
- save_pre_init_log (NSLOG_INF, "config module init begin] proc type=%d",
- param->proc_type);
-
- init_base_config (param);
-
- switch (param->proc_type)
- {
- case NSFW_PROC_MAIN:
- init_module_cfg_nstackmain ();
- break;
-
- case NSFW_PROC_CTRL:
- init_module_cfg_nstackctrl ();
- break;
-
- default:
- init_module_cfg_default ();
- break;
- }
-
- save_pre_init_log (NSLOG_INF, "config module init end.");
-}
-
-u32
-get_cfg_share_mem_size ()
-{
- return sizeof (g_base_cfg_items) + sizeof (g_custom_cfg_items);
-}
-
-int
-get_share_cfg_from_mem (void *mem)
-{
- if (EOK !=
- MEMCPY_S (g_base_cfg_items, sizeof (g_base_cfg_items), mem,
- sizeof (g_base_cfg_items)))
- {
- return -1;
- }
-
- char *custom_cfg_mem = (char *) mem + sizeof (g_base_cfg_items);
-
- if (EOK !=
- MEMCPY_S (g_custom_cfg_items, sizeof (g_custom_cfg_items),
- custom_cfg_mem, sizeof (g_custom_cfg_items)))
- {
- return -1;
- }
-
- return 0;
-}
-
-int
-set_share_cfg_to_mem (void *mem)
-{
- if (EOK !=
- MEMCPY_S (mem, sizeof (g_base_cfg_items), g_base_cfg_items,
- sizeof (g_base_cfg_items)))
- {
- return -1;
- }
-
- char *custom_cfg_mem = (char *) mem + sizeof (g_base_cfg_items);
-
- if (EOK !=
- MEMCPY_S (custom_cfg_mem, sizeof (g_custom_cfg_items),
- g_custom_cfg_items, sizeof (g_custom_cfg_items)))
- {
- return -1;
- }
-
- return 0;
-}
diff --git a/stacks/lwip_stack/src/maintain/nsfw_msg.c b/stacks/lwip_stack/src/maintain/nsfw_msg.c
deleted file mode 100644
index 338f803..0000000
--- a/stacks/lwip_stack/src/maintain/nsfw_msg.c
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#include "nsfw_msg.h"
-/* *INDENT-OFF* */
-msg_fun g_msg_module_fun_array[MAX_MODULE_TYPE] = {NULL};
-msg_fun g_msg_module_major_fun_array[MAX_MODULE_TYPE][MAX_MAJOR_TYPE] = {{NULL}};
-msg_fun g_msg_module_major_minor_fun_array[MAX_MODULE_TYPE][MAX_MAJOR_TYPE][MAX_MINOR_TYPE] = {{{NULL}}};
-msg_fun g_msg_unsupport_fun = NULL;
-/* *INDENT-ON* */
diff --git a/stacks/lwip_stack/src/maintain/nsfw_rti.c b/stacks/lwip_stack/src/maintain/nsfw_rti.c
deleted file mode 100644
index e5a1d3c..0000000
--- a/stacks/lwip_stack/src/maintain/nsfw_rti.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#include <stdlib.h>
-#include "types.h"
-#include "nstack_securec.h"
-#include "nsfw_init.h"
-#include "nstack_log.h"
-#include "nsfw_maintain_api.h"
-#include "nsfw_mem_api.h"
-#include "nsfw_rti.h"
-#include "nsfw_msg.h"
-#ifdef HAL_LIB
-#else
-#include "common_pal_bitwide_adjust.h"
-#endif
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C"{
-/* *INDENT-ON* */
-#endif /* __cplusplus */
-
-char g_dfx_switch = 1;
-
-struct rti_queue *g_nsfw_rti_primary_stat = NULL;
-
-void
-nsfw_rti_stat (nsfw_rti_stat_type_t statType, const data_com_msg * m)
-{
- if (!g_nsfw_rti_primary_stat || !m)
- {
- return;
- }
-
- struct rti_queue *primary_stat = ADDR_SHTOL (g_nsfw_rti_primary_stat);
-
- switch (statType)
- {
- case NSFW_STAT_PRIMARY_DEQ:
- if ((m->param.major_type >= MAX_MAJOR_TYPE)
- || (m->param.minor_type >= MAX_MINOR_TYPE))
- {
- return;
- }
- /*call_msg_fun() is only called in nStackMain, no reentrance risk, ++ operation is ok */
- primary_stat->tcpip_msg_deq[m->param.major_type]++;
- if (0 == m->param.major_type) //SPL_TCPIP_NEW_MSG_API
- {
- primary_stat->api_msg_deq[m->param.minor_type]++;
- }
- break;
- case NSFW_STAT_PRIMARY_ENQ_FAIL:
- if ((m->param.major_type >= MAX_MAJOR_TYPE)
- || (m->param.minor_type >= MAX_MINOR_TYPE))
- {
- return;
- }
- __sync_fetch_and_add (&primary_stat->tcpip_msg_enq_fail
- [m->param.major_type], 1);
- if (0 == m->param.major_type) //SPL_TCPIP_NEW_MSG_API
- {
- __sync_fetch_and_add (&primary_stat->api_msg_enq_fail
- [m->param.minor_type], 1);
- }
- break;
- case NSFW_STAT_PRIMARY_ENQ:
- //not use
- break;
- default:
- break;
- }
-}
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif /* __cplusplus */
diff --git a/stacks/lwip_stack/src/nStackMain/CMakeLists.txt b/stacks/lwip_stack/src/nStackMain/CMakeLists.txt
deleted file mode 100644
index 24f6c9d..0000000
--- a/stacks/lwip_stack/src/nStackMain/CMakeLists.txt
+++ /dev/null
@@ -1,60 +0,0 @@
-#########################################################################
-#
-# 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.
-#########################################################################
-
-FILE(GLOB_RECURSE MAIN *.c)
-
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIE -pie")
-
-ADD_DEFINITIONS(-rdynamic -D__NSTACK_MAIN__)
-ADD_EXECUTABLE(nStackMain ${MAIN})
-TARGET_LINK_LIBRARIES(
- nStackMain
- -Wl,--whole-archive
- ${LIB_PATH_STATIC}/libjson-c.a
- ${LIB_PATH_STATIC}/libglog.a
- dmm_api
- nStackMaintain
- stacklwip
- nStackHal
- nStackAlarm
- nTcpdump
- -Wl,--no-whole-archive,-lstdc++ -ldl
- -Wl,--no-as-needed
- rte_eal
- rte_ethdev
- rte_mempool
- rte_ring
- rte_mbuf
- rte_pmd_ixgbe
- rte_pmd_virtio
- rte_pmd_e1000
- rte_pmd_vmxnet3_uio
- rte_pmd_bond
- rte_kvargs
- rte_cmdline
-)
-
-if(WITH_SECUREC_LIB)
-ADD_DEPENDENCIES(nStackMain nStackHal nStackMaintain nStackAlarm stacklwip SECUREC)
-else()
-ADD_DEPENDENCIES(nStackMain nStackHal nStackMaintain nStackAlarm stacklwip)
-endif()
-
-INCLUDE_DIRECTORIES(
- ${CMAKE_CURRENT_LIST_DIR}/../alarm/
- ${CMAKE_CURRENT_LIST_DIR}/../maintain/
- ${CMAKE_CURRENT_LIST_DIR}/../include/
-)
diff --git a/stacks/lwip_stack/src/nStackMain/main.c b/stacks/lwip_stack/src/nStackMain/main.c
deleted file mode 100644
index 3bc0a3b..0000000
--- a/stacks/lwip_stack/src/nStackMain/main.c
+++ /dev/null
@@ -1,429 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#include <signal.h>
-#include <stdio.h>
-#include <pthread.h>
-#include <unistd.h>
-#include <sched.h>
-#include <fcntl.h>
-#include <malloc.h>
-#include "nstack_securec.h"
-#include "nstack_log.h"
-#include "types.h"
-#include "nsfw_init.h"
-#include "alarm_api.h"
-
-#include "nsfw_mgr_com_api.h"
-#include "nsfw_ps_mem_api.h"
-#include "nsfw_ps_api.h"
-#include "nsfw_recycle_api.h"
-#include "nsfw_fd_timer_api.h"
-#include "nsfw_maintain_api.h"
-#include "nstack_dmm_adpt.h"
-
-#include "nsfw_mem_api.h"
-#include "nsfw_mt_config.h"
-
-#define GLOBAL_Stack_ARG "stack"
-#define GlOBAL_HELP "--help"
-#define GLOBAL_Dpdk_ARG "dpdk"
-#define GLOBAL_STACK_PORT "-port"
-#define NSTACK_MAIN_MAX_PARA 32
-#define NSTACK_MAIN_MIN_PARA 1
-
-#define MAX_MASTER_OPEN_FD 1024
-
-extern int uStackArgIndex;
-extern void spl_tcpip_thread (void *arg);
-extern int globalArgc;
-extern char **gArgv;
-extern int g_dpdk_argc;
-extern char **g_dpdk_argv;
-extern void print_call_stack ();
-extern int adjust_mem_arg (int argc, char *argv[]);
-extern struct cfg_item_info g_cfg_item_info[CFG_SEG_MAX][MAX_CFG_ITEM];
-extern int get_network_json_data ();
-extern int get_ip_json_data ();
-
-#ifdef SYS_MEM_RES_STAT
-extern void get_resource_stat ();
-#endif
-
-extern alarm_result ms_alarm_check_func (void *para);
-int g_tcpip_thread_stat = 0; //this variable will be used at health check feature
-
-#if (DPDK_MODULE)
-extern void pal_common_usage (void);
-#endif
-
-typedef void (*pSignalFunc) (int);
-int app_init (void);
-
-void
-helpInfo ()
-{
- NSPOL_LOGERR
- ("-----------------------------------------------------------------"
- "\nThe format of arg" "\nbash:./nStackMain RTE-ARGS stack STACK-ARGS"
- "\n RTE-ARGS=-c COREMASK -n NUM [-b <domain:bus:devid.func>] [--socket-mem=MB,...] [-m MB] [-r NUM] [-v] [--file-prefix] [--proc-type <primary|secondary|auto>] [-- xen-dom0]"
- "\n STACK-ARGS=-port PORTMASK [-c COREMASK] [-thread NUM]"
- "\nUser examples:"
- "\nTo make the DPDK run on core mask:0xf,Number of memory channels per processor socket in DPDK is 3 "
- "\nTo make the stack run on eth coremask:f"
- "\nbash: ./nStackMain -c 0xf -n 3 stack -port f"
- "\nTo get more help info for stack:" "\n ./nStackMain --help stack"
- "\nTo get more help info for dpdk:" "\n ./nStackMain --help dpdk"
- "\n-----------------------------------------------------------------");
-
-#ifndef FOR_NSTACK_UT
- exit (0);
-#endif
-
-}
-
-#define SIG_PTRACE __SIGRTMIN + 5
-
-void
-signal_handler (int s)
-{
- NSPOL_LOGERR ("Received signal exiting.]s=%d", s);
- if (s == SIGSEGV) /* add for gdb attach work */
- {
- print_call_stack ();
- }
-
- nstack_segment_error (s);
- if ((SIG_PTRACE != s) && (SIG_PTRACE + 2 != s))
- {
-#ifndef FOR_NSTACK_UT
- exit (0);
-#endif
- }
-
- int i;
- for (i = 0; i < MAX_THREAD; i++)
- {
- if (g_all_thread[i] != pthread_self () && 0 != g_all_thread[i])
- {
- NSFW_LOGERR ("send sig thread %d", g_all_thread[i]);
- if (0 == pthread_kill (g_all_thread[i], SIG_PTRACE + 2))
- {
- return;
- }
- }
- g_all_thread[i] = 0;
- }
-
- for (i = 0; i < MAX_THREAD; i++)
- {
- if (0 != g_all_thread[i])
- {
- return;
- }
- }
-
-#ifndef FOR_NSTACK_UT
- exit (0);
-#endif
-
- //dpdk_signal_handler();
-}
-
-void
-register_signal_handler ()
-{
-/* donot catch SIGHUP SIGTERM */
- static const int s_need_handle_signals[] = {
- SIGABRT,
- SIGBUS,
- SIGFPE,
- SIGILL,
- SIGIOT,
- SIGQUIT,
- SIGSEGV,
- //SIGTRAP,
- SIGXCPU,
- SIGXFSZ,
- //SIGALRM,
- //SIGHUP,
- SIGINT,
- //SIGKILL,
- SIGPIPE,
- SIGPROF,
- SIGSYS,
- //SIGTERM,
- SIGUSR1,
- SIGUSR2,
- //SIGVTALRM,
- //SIGSTOP,
- //SIGTSTP,
- //SIGTTIN,
- //SIGTTOU
- };
-
- /* here mask signal that will use in sigwait() */
- sigset_t waitset, oset;
-
- if (0 != sigemptyset (&waitset))
- {
- NSPOL_LOGERR ("sigemptyset failed.");
- }
- sigaddset (&waitset, SIGRTMIN); /* for timer */
- sigaddset (&waitset, SIGRTMIN + 2);
- pthread_sigmask (SIG_BLOCK, &waitset, &oset);
- unsigned int i = 0;
-
- struct sigaction s;
- s.sa_handler = signal_handler;
- if (0 != sigemptyset (&s.sa_mask))
- {
- NSPOL_LOGERR ("sigemptyset failed.");
- }
-
- s.sa_flags = (int) SA_RESETHAND;
-
- /* register sig handler for more signals */
- for (i = 0; i < sizeof (s_need_handle_signals) / sizeof (int); i++)
- {
- if (sigaction (s_need_handle_signals[i], &s, NULL) != 0)
- {
- NSPOL_LOGERR ("Could not register %d signal handler.",
- s_need_handle_signals[i]);
- }
-
- }
-
-}
-
-void
-checkArgs (int argc, char **argv)
-{
- int uStackArg = 0; //mark the status whether need helpinfo and return
- int i;
- const unsigned int global_para_length = 5; //GLOBAL_Stack_ARG "stack" and GLOBAL_STACK_PORT "-port" string length, both are 5
- const unsigned int global_help_length = 6; //GlOBAL_HELP "--help" string length is 6
- const unsigned int global_dpdk_length = 4; //GLOBAL_Dpdk_ARG "dpdk" string length is 4
-
- for (i = 0; i < argc; i++)
- {
- if (argc > 1)
- {
- if (strncmp (argv[i], GLOBAL_Stack_ARG, global_para_length) == 0)
- {
- if (i < 5)
- {
- NSPOL_LOGERR ("Too less args");
- helpInfo ();
- return;
- }
-
- uStackArg = 1;
- uStackArgIndex = i;
- continue;
- }
-
- if (strncmp (argv[i], GLOBAL_STACK_PORT, global_para_length) == 0)
- {
- continue;
- }
-
- if (strncmp (argv[i], GlOBAL_HELP, global_help_length) == 0)
- {
- if (i == (argc - 1))
- {
- helpInfo ();
- return;
- }
- else if ((++i < argc)
- &&
- (strncmp (argv[i], GLOBAL_Dpdk_ARG, global_dpdk_length)
- == 0))
- {
-#if (DPDK_MODULE != 1)
- //eal_common_usage();
-#else
- pal_common_usage ();
-#endif
- return;
- }
- else
- {
- helpInfo ();
- return;
- }
- }
- }
- else
- {
- NSPOL_LOGERR ("Too less args");
- helpInfo ();
- return;
- }
- }
-
- if (!uStackArg)
- {
- helpInfo ();
- return;
- }
-}
-
-extern u64 timer_get_threadid ();
-
-#ifdef FOR_NSTACK_UT
-int
-nstack_main (void)
-{
- int argc;
-
- char *argv[NSTACK_MAIN_MAX_PARA];
- argv[0] = "nStackMain";
- argv[1] = "-c";;
- argv[2] = "0xffffffff";
- argv[3] = "-n";
- argv[4] = "3";
- argv[5] = "stack";
- argv[6] = "-port";
- argv[7] = "288";
- argv[8] = "-c";
- argv[9] = "2";
- argc = 10;
-
-#else
-int
-main (int argc, char *argv[])
-{
-#endif
- fw_poc_type proc_type = NSFW_PROC_MAIN;
-
- /* although nStackMaster has set close on exec, here can't be removed.
- * in upgrade senario, if Master is old which has not set close on exec, here,
- * if new version Main not close, problem will reappear. Add Begin*/
- int i;
- for (i = 4; i < MAX_MASTER_OPEN_FD; i++)
- {
- close (i);
- }
-
- cfg_module_param config_para;
- config_para.proc_type = proc_type;
- config_para.argc = argc;
- config_para.argv = (unsigned char **) argv;
- config_module_init (&config_para);
-
- set_log_proc_type (LOG_PRO_NSTACK);
- (void) nstack_log_init ();
-
-// nstack_tracing_enable();
- if (0 != nsfw_proc_start_with_lock (NSFW_PROC_MAIN))
- {
- NSFW_LOGERR ("another process is running!!");
- return 0;
- }
-
- if (1 != mallopt (M_ARENA_MAX, 1))
- {
- NSPOL_LOGERR ("Error: mallopt fail, continue init");
- }
-
- /* Set different mem args to PAL and EAL */
- INITPOL_LOGINF ("main_thread", "adjust_mem_arg init", NULL_STRING,
- LOG_INVALID_VALUE, MODULE_INIT_START);
- if (adjust_mem_arg (argc, argv))
- {
- INITPOL_LOGERR ("main_thread", "adjust_mem_arg init", NULL_STRING,
- LOG_INVALID_VALUE, MODULE_INIT_FAIL);
- return -1;
- }
- INITPOL_LOGINF ("main_thread", "adjust_mem_arg init", NULL_STRING,
- LOG_INVALID_VALUE, MODULE_INIT_SUCCESS);
-
- checkArgs (globalArgc, gArgv);
- register_signal_handler ();
-
- (void) signal (SIG_PTRACE, signal_handler);
- (void) signal (SIG_PTRACE + 2, signal_handler);
-
- if (nsfw_mgr_comm_fd_init (NSFW_PROC_MAIN) < 0)
- {
- NSFW_LOGERR ("nsfw_mgr_comm_fd_init failed");
- }
-
- (void) nsfw_reg_trace_thread (pthread_self ());
-
- (void) nstack_framework_setModuleParam (NSFW_ALARM_MODULE,
- (void *) ((u64) proc_type));
- (void) nstack_framework_setModuleParam (TCPDUMP_MODULE,
- (void *) ((u64) proc_type));
-
- nstack_dmm_para stpara;
- stpara.argc = uStackArgIndex;
- stpara.argv = gArgv;
- stpara.deploy_type = NSTACK_MODEL_TYPE3;
- stpara.proc_type = NSFW_PROC_MAIN;
- stpara.attr.policy = get_cfg_info (CFG_SEG_PRI, CFG_SEG_THREAD_PRI_POLICY);
- stpara.attr.pri = get_cfg_info (CFG_SEG_PRI, CFG_SEG_THREAD_PRI_PRI);
-
- if (nstack_adpt_init (&stpara) != 0)
- {
- NSFW_LOGERR ("nstack adpt init fail");
- return -1;
- }
-
- ns_send_init_alarm (ALARM_EVENT_NSTACK_MAIN_ABNORMAL);
-
- while (!timer_get_threadid ())
- {
- (void) nsfw_thread_chk ();
- sys_sleep_ns (0, 500000000);
- }
- (void) nsfw_thread_chk_unreg ();
- NSFW_LOGINF ("tcpip thread start!");
- (void) sleep (2);
-
- NSFW_LOGINF ("read configuration!");
- if (0 != get_network_json_data ())
- {
- NSFW_LOGINF ("get_network_json_data error");
- return -1;
- }
-
- if (0 != get_ip_json_data ())
- {
- NSFW_LOGINF ("get_ip_json_data error");
- return -1;
- }
-
- int ep_thread = 0;
- while (1)
- {
-#ifdef SYS_MEM_RES_STAT
- get_resource_stat ();
-#endif
- (void) sleep (3);
- ep_thread = nsfw_mgr_com_chk_hbt (1);
- if (ep_thread > 0)
- {
- NSFW_LOGINF ("force release lock");
- (void) nsfw_recycle_rechk_lock ();
- }
-#ifdef FOR_NSTACK_UT
- return 0;
-#endif
-
- }
-}
diff --git a/stacks/lwip_stack/src/sbr/CMakeLists.txt b/stacks/lwip_stack/src/sbr/CMakeLists.txt
deleted file mode 100644
index f324e5f..0000000
--- a/stacks/lwip_stack/src/sbr/CMakeLists.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-#########################################################################
-#
-# 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.
-#########################################################################
-
-if(WITH_HAL_LIB)
-else()
- SET(PAL_H_DIRECTORIES "/usr/include/dpdk/")
-endif()
-
-
-FILE(GLOB SBR *.c)
-ADD_LIBRARY(lwip_dpdk SHARED ${SBR})
-TARGET_LINK_LIBRARIES(lwip_dpdk -Wl,--whole-archive socket -Wl,--no-whole-archive dmm_api nStackMaintain)
-ADD_DEPENDENCIES(lwip_dpdk socket DPDK)
-INCLUDE_DIRECTORIES(
- ${CMAKE_CURRENT_LIST_DIR}/../include
- ${PAL_H_DIRECTORIES}
-)
diff --git a/stacks/lwip_stack/src/sbr/sbr_err.h b/stacks/lwip_stack/src/sbr/sbr_err.h
deleted file mode 100644
index be3bc3b..0000000
--- a/stacks/lwip_stack/src/sbr/sbr_err.h
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
-*
-* 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 SBR_ERR_H
-#define SBR_ERR_H
-#include <errno.h>
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C" {
-/* *INDENT-ON* */
-#endif
-
-#ifdef SBR_PROVIDE_ERRNO
-#define EPERM 1 /* Operation not permitted */
-#define ENOENT 2 /* No such file or directory */
-#define ESRCH 3 /* No such process */
-#define EINTR 4 /* Interrupted system call */
-#define EIO 5 /* I/O error */
-#define ENXIO 6 /* No such device or address */
-#define E2BIG 7 /* Arg list too long */
-#define ENOEXEC 8 /* Exec format error */
-#define EBADF 9 /* Bad file number */
-#define ECHILD 10 /* No child processes */
-#define EAGAIN 11 /* Try again */
-#define ENOMEM 12 /* Out of memory */
-#define EACCES 13 /* Permission denied */
-#define EFAULT 14 /* Bad address */
-#define ENOTBLK 15 /* Block device required */
-#define EBUSY 16 /* Device or resource busy */
-#define EEXIST 17 /* File exists */
-#define EXDEV 18 /* Cross-device link */
-#define ENODEV 19 /* No such device */
-#define ENOTDIR 20 /* Not a directory */
-#define EISDIR 21 /* Is a directory */
-#define EINVAL 22 /* Invalid argument */
-#define ENFILE 23 /* File table overflow */
-#define EMFILE 24 /* Too many open files */
-#define ENOTTY 25 /* Not a typewriter */
-#define ETXTBSY 26 /* Text file busy */
-#define EFBIG 27 /* File too large */
-#define ENOSPC 28 /* No space left on device */
-#define ESPIPE 29 /* Illegal seek */
-#define EROFS 30 /* Read-only file system */
-#define EMLINK 31 /* Too many links */
-#define EPIPE 32 /* Broken pipe */
-#define EDOM 33 /* Math argument out of domain of func */
-#define ERANGE 34 /* Math result not representable */
-#define EDEADLK 35 /* Resource deadlock would occur */
-#define ENAMETOOLONG 36 /* File name too long */
-#define ENOLCK 37 /* No stored locks available */
-#define ENOSYS 38 /* Function not implemented */
-#define ENOTEMPTY 39 /* Directory not empty */
-#define ELOOP 40 /* Too many symbolic links encountered */
-#define EWOULDBLOCK EAGAIN /* Operation would block */
-#define ENOMSG 42 /* No message of desired type */
-#define EIDRM 43 /* Identifier removed */
-#define ECHRNG 44 /* Channel number out of range */
-#define EL2NSYNC 45 /* Level 2 not synchronized */
-#define EL3HLT 46 /* Level 3 halted */
-#define EL3RST 47 /* Level 3 reset */
-#define ELNRNG 48 /* Link number out of range */
-#define EUNATCH 49 /* Protocol driver not attached */
-#define ENOCSI 50 /* No CSI structure available */
-#define EL2HLT 51 /* Level 2 halted */
-#define EBADE 52 /* Invalid exchange */
-#define EBADR 53 /* Invalid request descriptor */
-#define EXFULL 54 /* Exchange full */
-#define ENOANO 55 /* No anode */
-#define EBADRQC 56 /* Invalid request code */
-#define EBADSLT 57 /* Invalid slot */
-
-#define EDEADLOCK EDEADLK
-
-#define EBFONT 59 /* Bad font file format */
-#define ENOSTR 60 /* Device not a stream */
-#define ENODATA 61 /* No data available */
-#define ETIME 62 /* Timer expired */
-#define ENOSR 63 /* Out of streams resources */
-#define ENONET 64 /* Machine is not on the network */
-#define ENOPKG 65 /* Package not installed */
-#define EREMOTE 66 /* Object is remote */
-#define ENOLINK 67 /* Link has been severed */
-#define EADV 68 /* Advertise error */
-#define ESRMNT 69 /* Srmount error */
-#define ECOMM 70 /* Communication error on send */
-#define EPROTO 71 /* Protocol error */
-#define EMULTIHOP 72 /* Multihop attempted */
-#define EDOTDOT 73 /* RFS specific error */
-#define EBADMSG 74 /* Not a data message */
-#define EOVERFLOW 75 /* Value too large for defined data type */
-#define ENOTUNIQ 76 /* Name not unique on network */
-#define EBADFD 77 /* File descriptor in bad state */
-#define EREMCHG 78 /* Remote address changed */
-#define ELIBACC 79 /* Can not access a needed shared library */
-#define ELIBBAD 80 /* Accessing a corrupted shared library */
-#define ELIBSCN 81 /* .lib section in a.out corrupted */
-#define ELIBMAX 82 /* Attempting to link in too many shared libraries */
-#define ELIBEXEC 83 /* Cannot exec a shared library directly */
-#define EILSEQ 84 /* Illegal byte sequence */
-#define ERESTART 85 /* Interrupted system call should be restarted */
-#define ESTRPIPE 86 /* Streams pipe error */
-#define EUSERS 87 /* Too many users */
-#define ENOTSOCK 88 /* Socket operation on non-socket */
-#define EDESTADDRREQ 89 /* Destination address required */
-#define EMSGSIZE 90 /* Message too long */
-#define EPROTOTYPE 91 /* Protocol wrong type for socket */
-#define ENOPROTOOPT 92 /* Protocol not available */
-#define EPROTONOSUPPORT 93 /* Protocol not supported */
-#define ESOCKTNOSUPPORT 94 /* Socket type not supported */
-#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */
-#define EPFNOSUPPORT 96 /* Protocol family not supported */
-#define EAFNOSUPPORT 97 /* Address family not supported by protocol */
-#define EADDRINUSE 98 /* Address already in use */
-#define EADDRNOTAVAIL 99 /* Cannot assign requested address */
-#define ENETDOWN 100 /* Network is down */
-#define ENETUNREACH 101 /* Network is unreachable */
-#define ENETRESET 102 /* Network dropped connection because of reset */
-#define ECONNABORTED 103 /* Software caused connection abort */
-#define ECONNRESET 104 /* Connection reset by peer */
-#define ENOBUFS 105 /* No buffer space available */
-#define EISCONN 106 /* Transport endpoint is already connected */
-#define ENOTCONN 107 /* Transport endpoint is not connected */
-#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */
-#define ETOOMANYREFS 109 /* Too many references: cannot splice */
-#define ETIMEDOUT 110 /* Connection timed out */
-#define ECONNREFUSED 111 /* Connection refused */
-#define EHOSTDOWN 112 /* Host is down */
-#define EHOSTUNREACH 113 /* No route to host */
-#define EALREADY 114 /* Operation already in progress */
-#define EINPROGRESS 115 /* Operation now in progress */
-#define ESTALE 116 /* Stale NFS file handle */
-#define EUCLEAN 117 /* Structure needs cleaning */
-#define ENOTNAM 118 /* Not a XENIX named type file */
-#define ENAVAIL 119 /* No XENIX semaphores available */
-#define EISNAM 120 /* Is a named type file */
-#define EREMOTEIO 121 /* Remote I/O error */
-#define EDQUOT 122 /* Quota exceeded */
-
-#define ENOMEDIUM 123 /* No medium found */
-#define EMEDIUMTYPE 124 /* Wrong medium type */
-
-#define ENSROK 0
-#define ENSRNODATA 160
-#define ENSRFORMERR 161
-#define ENSRSERVFAIL 162
-#define ENSRNOTFOUND 163
-#define ENSRNOTIMP 164
-#define ENSRREFUSED 165
-#define ENSRBADQUERY 166
-#define ENSRBADNAME 167
-#define ENSRBADFAMILY 168
-#define ENSRBADRESP 169
-#define ENSRCONNREFUSED 170
-#define ENSRTIMEOUT 171
-#define ENSROF 172
-#define ENSRFILE 173
-#define ENSRNOMEM 174
-#define ENSRDESTRUCTION 175
-#define ENSRQUERYDOMAINTOOLONG 176
-#define ENSRCNAMELOOP 177
-#define OPTION_DEG 200
-
-#endif
-
-static inline void
-sbr_set_errno (int err)
-{
- errno = err;
-}
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif
-
-#endif
diff --git a/stacks/lwip_stack/src/sbr/sbr_index_ring.c b/stacks/lwip_stack/src/sbr/sbr_index_ring.c
deleted file mode 100644
index 0daa465..0000000
--- a/stacks/lwip_stack/src/sbr/sbr_index_ring.c
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#include <string.h>
-#include "sbr_index_ring.h"
-#include "nstack_securec.h"
-#include "common_mem_common.h"
-#include "common_func.h"
-
-/*****************************************************************************
-* Prototype : sbr_init_index_ring
-* Description : init index ring
-* Input : sbr_index_ring* ring
-* u32 num
-* Output : None
-* Return Value : static inline void
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-static inline void
-sbr_init_index_ring (sbr_index_ring * ring, u32 num)
-{
- u32 loop;
-
- ring->head = 0;
- ring->tail = 0;
- ring->num = num;
- ring->mask = num - 1;
-
- for (loop = 0; loop < num; loop++)
- {
- ring->nodes[loop].ver = (loop - num);
- ring->nodes[loop].val = 0;
- }
-}
-
-/*****************************************************************************
-* Prototype : sbr_create_index_ring
-* Description : create index ring
-* Input : u32 num
-* Output : None
-* Return Value : sbr_index_ring*
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-sbr_index_ring *
-sbr_create_index_ring (u32 num)
-{
- num = common_mem_align32pow2 (num + 1);
- sbr_index_ring *ring =
- (sbr_index_ring *) malloc (sizeof (sbr_index_ring) +
- num * sizeof (sbr_index_node));
- if (!ring)
- {
- return NULL;
- }
-
- sbr_init_index_ring (ring, num);
- return ring;
-}
-
-/*****************************************************************************
-* Prototype : sbr_index_ring_enqueue
-* Description : enqueue data,val != 0
-* Input : sbr_index_ring* ring
-* i32 val
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-int
-sbr_index_ring_enqueue (sbr_index_ring * ring, i32 val)
-{
- if (0 == val)
- {
- return -1;
- }
-
- sbr_index_node expect_node;
- sbr_index_node cur_node;
- u32 tmp_head;
- u32 tmp_tail;
- u32 cur_head = ring->head;
- u32 mask = ring->mask;
- u32 size = ring->num;
-
- do
- {
- tmp_tail = ring->tail;
- if (tmp_tail + size - cur_head == 0)
- {
- if (ring->nodes[tmp_tail & mask].val == 0)
- {
- (void) __sync_bool_compare_and_swap (&ring->tail, tmp_tail,
- tmp_tail + 1);
- }
- else
- {
- return 0;
- }
- }
-
- expect_node.ver = cur_head - size;
- expect_node.val = 0;
-
- cur_node.ver = cur_head;
- cur_node.val = val;
-
- if ((ring->nodes[cur_head & mask].ver == expect_node.ver)
- && __sync_bool_compare_and_swap (&ring->nodes[cur_head & mask].data,
- expect_node.data, cur_node.data))
- {
- tmp_head = ring->head;
- if ((tmp_head - cur_head > 0x80000000) && (0 == (cur_head & 0x11)))
- {
- (void) __sync_bool_compare_and_swap (&ring->head, tmp_head,
- cur_head);
- }
-
- break;
- }
-
- tmp_head = ring->head;
- cur_head = cur_head - tmp_head < mask - 1 ? cur_head + 1 : tmp_head;
- }
- while (1);
-
- return 1;
-}
-
-/*****************************************************************************
-* Prototype : sbr_index_ring_dequeue
-* Description : dequeue
-* Input : sbr_index_ring* ring
-* i32* val
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-int
-sbr_index_ring_dequeue (sbr_index_ring * ring, i32 * val)
-{
- u32 cur_tail;
- u32 tmp_tail;
- u32 tmp_head;
- u32 mask = ring->mask;
- sbr_index_node null_node;
- sbr_index_node expect_node;
-
- cur_tail = ring->tail;
- do
- {
- tmp_head = ring->head;
- if (cur_tail == tmp_head)
- {
- if (0 != (ring->nodes[tmp_head & mask].val))
- {
- (void) __sync_bool_compare_and_swap (&ring->head, tmp_head,
- tmp_head + 1);
- }
- else
- {
- return 0;
- }
- }
-
- null_node.ver = cur_tail;
- null_node.val = 0;
- expect_node = ring->nodes[cur_tail & mask];
-
- if ((null_node.ver == expect_node.ver) && (expect_node.val)
- && __sync_bool_compare_and_swap (&ring->nodes[cur_tail & mask].data,
- expect_node.data, null_node.data))
-
- {
- *val = expect_node.val;
- tmp_tail = ring->tail;
- if ((tmp_tail - cur_tail > 0x80000000) && (0 == (cur_tail & 0x11)))
- {
- (void) __sync_bool_compare_and_swap (&ring->tail, tmp_tail,
- cur_tail);
- }
-
- break;
- }
-
- tmp_tail = ring->tail;
- cur_tail = cur_tail - tmp_tail < mask - 1 ? cur_tail + 1 : tmp_tail;
- }
- while (1);
-
- return 1;
-}
diff --git a/stacks/lwip_stack/src/sbr/sbr_index_ring.h b/stacks/lwip_stack/src/sbr/sbr_index_ring.h
deleted file mode 100644
index 86e8345..0000000
--- a/stacks/lwip_stack/src/sbr/sbr_index_ring.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-*
-* 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 _SBR_INDEX_RING_H_
-#define _SBR_INDEX_RING_H_
-
-#include "types.h"
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C" {
-/* *INDENT-ON* */
-#endif
-
-typedef struct
-{
- union
- {
- struct
- {
- volatile u32 ver;
- volatile u32 val;
- };
- u64 data;
- };
-} sbr_index_node;
-
-typedef struct
-{
- volatile u32 head;
- i8 cache_space[124];
- volatile u32 tail;
- u32 num;
- u32 mask;
- sbr_index_node nodes[0];
-} sbr_index_ring;
-
-sbr_index_ring *sbr_create_index_ring (u32 num);
-int sbr_index_ring_enqueue (sbr_index_ring * ring, i32 val);
-int sbr_index_ring_dequeue (sbr_index_ring * ring, i32 * val);
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif
-
-#endif
diff --git a/stacks/lwip_stack/src/sbr/sbr_protocol_api.h b/stacks/lwip_stack/src/sbr/sbr_protocol_api.h
deleted file mode 100644
index 95ca565..0000000
--- a/stacks/lwip_stack/src/sbr/sbr_protocol_api.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
-*
-* 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 SBR_PROTOCOL_API_H
-#define SBR_PROTOCOL_API_H
-#include <sys/uio.h>
-#include <sys/epoll.h>
-#include <netinet/in.h>
-#include "sbr_err.h"
-#include "nsfw_msg_api.h"
-#include "nsfw_mt_config.h"
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C" {
-/* *INDENT-ON* */
-#endif
-
-#ifndef SBR_MAX_INTEGER
-#define SBR_MAX_INTEGER 0x7FFFFFFF
-#endif
-
-#ifndef socklen_t
-#define socklen_t u32
-#endif
-
-#define SBR_MAX_FD_NUM MAX_SOCKET_NUM
-
-typedef struct sbr_socket_s sbr_socket_t;
-typedef struct
-{
- int (*socket) (sbr_socket_t *, int, int, int);
- int (*bind) (sbr_socket_t *, const struct sockaddr *, socklen_t);
- int (*listen) (sbr_socket_t *, int);
- int (*accept) (sbr_socket_t *, sbr_socket_t *, struct sockaddr *,
- socklen_t *);
- int (*accept4) (sbr_socket_t *, sbr_socket_t *, struct sockaddr *,
- socklen_t *, int);
- int (*connect) (sbr_socket_t *, const struct sockaddr *, socklen_t);
- int (*shutdown) (sbr_socket_t *, int);
- int (*getsockname) (sbr_socket_t *, struct sockaddr *, socklen_t *);
- int (*getpeername) (sbr_socket_t *, struct sockaddr *, socklen_t *);
- int (*getsockopt) (sbr_socket_t *, int, int, void *, socklen_t *);
- int (*setsockopt) (sbr_socket_t *, int, int, const void *, socklen_t);
- int (*recvfrom) (sbr_socket_t *, void *, size_t, int, struct sockaddr *,
- socklen_t *);
- int (*readv) (sbr_socket_t *, const struct iovec *, int);
- int (*recvmsg) (sbr_socket_t *, struct msghdr *, int);
- int (*send) (sbr_socket_t *, const void *, size_t, int);
- int (*sendto) (sbr_socket_t *, const void *, size_t, int,
- const struct sockaddr *, socklen_t);
- int (*sendmsg) (sbr_socket_t *, const struct msghdr *, int);
- int (*writev) (sbr_socket_t *, const struct iovec *, int);
- int (*fcntl) (sbr_socket_t *, int, long);
- int (*ioctl) (sbr_socket_t *, unsigned long, void *);
- int (*close) (sbr_socket_t *);
- int (*peak) (sbr_socket_t *);
- void (*lock_common) (sbr_socket_t *);
- void (*unlock_common) (sbr_socket_t *);
- void (*fork_parent) (sbr_socket_t *, pid_t);
- void (*fork_child) (sbr_socket_t *, pid_t, pid_t);
- unsigned int (*ep_ctl) (sbr_socket_t *, int triggle_ops,
- struct epoll_event * event, void *pdata);
- unsigned int (*ep_getevt) (sbr_socket_t *, unsigned int events);
- void (*set_app_info) (sbr_socket_t *, void *appinfo);
- void (*set_close_stat) (sbr_socket_t *, int flag);
-} sbr_fdopt;
-
-struct sbr_socket_s
-{
- int fd;
- sbr_fdopt *fdopt;
- void *stack_obj;
- void *sk_obj;
-};
-
-int sbr_init_protocol ();
-int sbr_fork_protocol ();
-sbr_fdopt *sbr_get_fdopt (int domain, int type, int protocol);
-void sbr_app_touch_in (void); /*app send its version info to nStackMain */
-int lwip_try_select (int fdsize, fd_set * fdread, fd_set * fdwrite,
- fd_set * fderr, struct timeval *timeout);
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif
-
-#endif
diff --git a/stacks/lwip_stack/src/sbr/sbr_res_mgr.c b/stacks/lwip_stack/src/sbr/sbr_res_mgr.c
deleted file mode 100644
index f40f101..0000000
--- a/stacks/lwip_stack/src/sbr/sbr_res_mgr.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#include "nstack_securec.h"
-#include "sbr_res_mgr.h"
-
-sbr_res_group g_res_group = { };
-
-/*****************************************************************************
-* Prototype : sbr_init_sk
-* Description : init sock pool
-* Input : None
-* Output : None
-* Return Value : static int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-NSTACK_STATIC int
-sbr_init_sk ()
-{
- sbr_index_ring *ring = sbr_create_index_ring (SBR_MAX_FD_NUM - 1);
-
- if (!ring)
- {
- NSSBR_LOGERR ("init ring failed");
- return -1;
- }
-
- int i;
- /*the queue can't accept value=0, so i begin with 1 */
- for (i = 1; i <= SBR_MAX_FD_NUM; ++i)
- {
- g_res_group.sk[i].fd = i;
- if (sbr_index_ring_enqueue (ring, i) != 1)
- {
- NSSBR_LOGERR ("sbr_index_ring_enqueue failed, this can not happen");
- free (ring);
- return -1;
- }
- }
-
- g_res_group.sk_ring = ring;
- return 0;
-}
-
-/*****************************************************************************
-* Prototype : sbr_init_res
-* Description : init sbr res
-* Input : None
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-int
-sbr_init_res ()
-{
- if (sbr_init_sk () != 0)
- {
- return -1;
- }
-
- NSSBR_LOGDBG ("init socket ok");
-
- if (sbr_init_protocol () != 0)
- {
- return -1;
- }
-
- NSSBR_LOGDBG ("init protocol ok");
-
- return 0;
-}
diff --git a/stacks/lwip_stack/src/sbr/sbr_res_mgr.h b/stacks/lwip_stack/src/sbr/sbr_res_mgr.h
deleted file mode 100644
index e731314..0000000
--- a/stacks/lwip_stack/src/sbr/sbr_res_mgr.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
-*
-* 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 SBR_RES_MGR_H
-#define SBR_RES_MGR_H
-#include "sbr_protocol_api.h"
-#include "sbr_index_ring.h"
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-extern "C" {
-/* *INDENT-ON* */
-#endif
-
-typedef struct
-{
- sbr_index_ring *sk_ring;
- sbr_socket_t sk[SBR_MAX_FD_NUM + 1]; /* unuse index 0 */
-} sbr_res_group;
-
-extern sbr_res_group g_res_group;
-
-/*****************************************************************************
-* Prototype : sbr_malloc_sk
-* Description : malloc sock
-* Input : None
-* Output : None
-* Return Value : static inline sbr_socket_t *
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-static inline sbr_socket_t *
-sbr_malloc_sk ()
-{
- int fd;
-
- if (sbr_index_ring_dequeue (g_res_group.sk_ring, &fd) != 1)
- {
- NSSBR_LOGERR ("malloc sk failed]");
- sbr_set_errno (EMFILE);
- return NULL;
- }
-
- NSSBR_LOGDBG ("malloc sk ok]fd=%d", fd);
- return &g_res_group.sk[fd];
-}
-
-/*****************************************************************************
-* Prototype : sbr_free_sk
-* Description : free sock
-* Input : sbr_socket_t * sk
-* Output : None
-* Return Value : static inline void
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-static inline void
-sbr_free_sk (sbr_socket_t * sk)
-{
- sk->fdopt = NULL;
- sk->sk_obj = NULL;
- sk->stack_obj = NULL;
-
- if (sbr_index_ring_enqueue (g_res_group.sk_ring, sk->fd) != 1)
- {
- NSSBR_LOGERR ("sbr_index_ring_enqueue failed, this can not happen");
- }
-
- NSSBR_LOGDBG ("free sk ok]fd=%d", sk->fd);
-}
-
-/*****************************************************************************
-* Prototype : sbr_lookup_sk
-* Description : lookup socket
-* Input : int fd
-* Output : None
-* Return Value : static inline sbr_socket_t *
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-static inline sbr_socket_t *
-sbr_lookup_sk (int fd)
-{
- if ((fd < 1) || (fd > SBR_MAX_FD_NUM))
- {
- NSSBR_LOGERR ("fd is not ok]fd=%d", fd);
- sbr_set_errno (EBADF);
- return NULL;
- }
-
- sbr_socket_t *sk = &g_res_group.sk[fd];
- if (!sk->sk_obj || !sk->stack_obj)
- {
- NSSBR_LOGERR
- ("data in sk is error, this can not happen]fd=%d,sk_obj=%p,stack_obj=%p",
- fd, sk->sk_obj, sk->stack_obj);
- sbr_set_errno (EBADF);
- return NULL;
- }
-
- return sk;
-}
-
-/*****************************************************************************
-* Prototype : sbr_free_sk
-* Description : free sock
-* Input : sbr_socket_t * sk
-* Output : None
-* Return Value : static inline void
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-static inline void
-sbr_free_fd (int fd)
-{
- if ((fd < 1) || (fd > SBR_MAX_FD_NUM))
- {
- NSSBR_LOGERR ("fd is not ok]fd=%d", fd);
- sbr_set_errno (EBADF);
- return;
- }
-
- sbr_socket_t *sk = &g_res_group.sk[fd];
- if (!sk->fdopt && !sk->sk_obj && !sk->stack_obj)
- {
- NSSBR_LOGERR
- ("can't free empty fd] fd=%d, fdopt=%p, sk_obj=%p, stack_obj=%p", fd,
- sk->fdopt, sk->sk_obj, sk->stack_obj);
- return;
- }
- sbr_free_sk (sk);
-}
-
-int sbr_init_res ();
-
-#ifdef __cplusplus
-/* *INDENT-OFF* */
-}
-/* *INDENT-ON* */
-#endif
-
-#endif
diff --git a/stacks/lwip_stack/src/sbr/sbr_socket.c b/stacks/lwip_stack/src/sbr/sbr_socket.c
deleted file mode 100644
index 69481b5..0000000
--- a/stacks/lwip_stack/src/sbr/sbr_socket.c
+++ /dev/null
@@ -1,1274 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#include <dlfcn.h>
-#include "sbr_protocol_api.h"
-#include "sbr_res_mgr.h"
-#include "nstack_log.h"
-#include "nstack_dmm_api.h"
-
-#define SBR_INTERCEPT(ret, name, args) ret sbr_ ## name args
-#define CALL_SBR_INTERCEPT(name, args) sbr_ ## name args
-#define GET_SBR_INTERCEPT(name) sbr_ ## name
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : create socket
-* Input : int
-* socket
-* (int domain
-* int type
-* int protocol)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, socket, (int domain, int type, int protocol))
-{
- NSSBR_LOGDBG ("socket]domain=%d,type=%d,protocol=%d", domain, type,
- protocol);
- sbr_fdopt *fdopt = sbr_get_fdopt (domain, type, protocol);
-
- if (!fdopt)
- {
- return -1;
- }
-
- sbr_socket_t *sk = sbr_malloc_sk ();
-
- if (!sk)
- {
- return -1;
- }
-
- sk->fdopt = fdopt;
-
- int ret = sk->fdopt->socket (sk, domain, type, protocol);
-
- if (ret != 0)
- {
- sbr_free_sk (sk);
- return ret;
- }
-
- return sk->fd;
-}
-
-/*****************************************************************************
-* Prototype : sbr_check_addr
-* Description : check addr
-* Input : int s
-* struct sockaddr * addr
-* socklen_t * addrlen
-* Output : None
-* Return Value : static inline int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-static inline int
-sbr_check_addr (int s, struct sockaddr *addr, socklen_t * addrlen)
-{
- if (addr)
- {
- if (!addrlen)
- {
- NSSBR_LOGERR ("addrlen is null]fd=%d", s);
- sbr_set_errno (EFAULT);
- return -1;
- }
-
- if (0 > (int) (*addrlen))
- {
- NSSBR_LOGERR ("addrlen is negative]fd=%d,addrlen=%d", s, *addrlen);
- sbr_set_errno (EINVAL);
- return -1;
- }
- }
-
- return 0;
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : accept4
-* Input : int
-* accept4
-* (int s
-* struct sockaddr * addr
-* socklen_t * addrlen
-* int flags)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, accept4,
- (int s, struct sockaddr * addr, socklen_t * addrlen,
- int flags))
-{
- NSSBR_LOGDBG ("accept4]fd=%d,addr=%p,addrlen=%p,flags=%d", s, addr, addrlen,
- flags);
- int ret = sbr_check_addr (s, addr, addrlen);
-
- if (ret != 0)
- {
- return ret;
- }
-
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return -1;
- }
-
- sbr_socket_t *new_sk = sbr_malloc_sk ();
- if (!new_sk)
- {
- return -1;
- }
-
- new_sk->fdopt = sk->fdopt;
-
- ret = sk->fdopt->accept4 (sk, new_sk, addr, addrlen, flags);
- if (-1 == ret)
- {
- sbr_free_sk (new_sk);
- }
-
- return ret;
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : accept
-* Input : int
-* accept
-* (int s
-* struct sockaddr * addr
-* socklen_t * addrlen)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, accept,
- (int s, struct sockaddr * addr, socklen_t * addrlen))
-{
- NSSBR_LOGDBG ("accept]fd=%d,addr=%p,addrlen=%p", s, addr, addrlen);
- int ret = sbr_check_addr (s, addr, addrlen);
-
- if (ret != 0)
- {
- return ret;
- }
-
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return -1;
- }
-
- sbr_socket_t *new_sk = sbr_malloc_sk ();
- if (!new_sk)
- {
- return -1;
- }
-
- new_sk->fdopt = sk->fdopt;
-
- ret = sk->fdopt->accept (sk, new_sk, addr, addrlen);
- if (-1 == ret)
- {
- sbr_free_sk (new_sk);
- }
-
- return ret;
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : bind
-* Input : int
-* bind
-* (int s
-* const struct sockaddr * name
-* socklen_t namelen)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, bind,
- (int s, const struct sockaddr * name, socklen_t namelen))
-{
- NSSBR_LOGDBG ("bind]fd=%d,name=%p,namelen=%d", s, name, namelen);
- if (!name)
- {
- NSSBR_LOGERR ("name is not ok]fd=%d,name=%p", s, name);
- sbr_set_errno (EFAULT);
- return -1;
- }
-
- if ((name->sa_family) != AF_INET)
- {
- NSSBR_LOGERR ("domain is not AF_INET]fd=%d,name->sa_family=%u", s,
- name->sa_family);
- sbr_set_errno (EAFNOSUPPORT);
- return -1;
- }
-
- if (namelen != sizeof (struct sockaddr_in))
- {
- NSSBR_LOGERR ("namelen is invalid]fd=%d,namelen=%d", s, namelen);
- sbr_set_errno (EINVAL);
- return -1;
- }
-
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return -1;
- }
-
- return sk->fdopt->bind (sk, name, namelen);
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : listen
-* Input : int
-* listen
-* (int s
-* int backlog)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, listen, (int s, int backlog))
-{
- NSSBR_LOGDBG ("listen]fd=%d,backlog=%d", s, backlog);
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return -1;
- }
-
- /* limit the "backlog" parameter to fit in an u8_t */
- if (backlog < 0)
- {
- backlog = 0;
- }
-
- if (backlog > 0xff)
- {
- backlog = 0xff;
- }
-
- return sk->fdopt->listen (sk, backlog);
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : connect
-* Input : int
-* connect
-* (int s
-* const struct sockaddr * name
-* socklen_t namelen)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, connect,
- (int s, const struct sockaddr * name, socklen_t namelen))
-{
- NSSBR_LOGDBG ("connect]fd=%d,name=%p,namelen=%d", s, name, namelen);
- if (!name)
- {
- NSSBR_LOGERR ("name is null]fd=%d", s);
- sbr_set_errno (EFAULT);
- return -1;
- }
-
- if (!
- (namelen == sizeof (struct sockaddr_in)
- && (name->sa_family == AF_INET)))
- {
- NSSBR_LOGERR ("parameter invalid]fd=%d,domain=%u,namelen=%d", s,
- name->sa_family, namelen);
- sbr_set_errno (EINVAL);
- return -1;
- }
-
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- NSSBR_LOGERR ("get socket failed]fd=%d", s);
- return -1;
- }
-
- return sk->fdopt->connect (sk, name, namelen);
-}
-
-/*****************************************************************************
-* Prototype : sbr_check_sock_name
-* Description : check name
-* Input : int s
-* struct sockaddr * name
-* socklen_t * namelen
-* Output : None
-* Return Value : static inline int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-static inline int
-sbr_check_sock_name (int s, struct sockaddr *name, socklen_t * namelen)
-{
- if (!name || !namelen)
- {
- NSSBR_LOGERR ("name or namelen is null]fd=%d", s);
- sbr_set_errno (EINVAL);
- return -1;
- }
-
- if (*namelen & 0x80000000)
- {
- NSSBR_LOGERR ("namelen is not ok]fd=%d,namelen=%d", s, *namelen);
- sbr_set_errno (EINVAL);
- return -1;
- }
-
- return 0;
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : getpeername
-* Input : int
-* getpeername
-* (int s
-* struct sockaddr * name
-* socklen_t * namelen)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, getpeername,
- (int s, struct sockaddr * name, socklen_t * namelen))
-{
- NSSBR_LOGDBG ("getpeername]fd=%d", s);
- int ret = sbr_check_sock_name (s, name, namelen);
-
- if (ret != 0)
- {
- return ret;
- }
-
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return -1;
- }
-
- sk->fdopt->lock_common (sk);
- ret = sk->fdopt->getpeername (sk, name, namelen);
- sk->fdopt->unlock_common (sk);
- return ret;
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : getsockname
-* Input : int
-* getsockname
-* (int s
-* struct sockaddr * name
-* socklen_t * namelen)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, getsockname,
- (int s, struct sockaddr * name, socklen_t * namelen))
-{
- NSSBR_LOGDBG ("getsockname]fd=%d", s);
- int ret = sbr_check_sock_name (s, name, namelen);
-
- if (ret != 0)
- {
- return ret;
- }
-
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return -1;
- }
-
- sk->fdopt->lock_common (sk);
- ret = sk->fdopt->getsockname (sk, name, namelen);
- sk->fdopt->unlock_common (sk);
- return ret;
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : setsockopt
-* Input : int
-* setsockopt
-* (int s
-* int level
-* int optname
-* const void * optval
-* socklen_t optlen)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, setsockopt,
- (int s, int level, int optname, const void *optval,
- socklen_t optlen))
-{
- NSSBR_LOGDBG ("setsockopt]fd=%d,level=%d,optname=%d,optval=%p,optlen=%d", s,
- level, optname, optval, optlen);
- if (!optval)
- {
- NSSBR_LOGERR ("optval is null]fd=%d", s);
- sbr_set_errno (EFAULT);
- return -1;
- }
-
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return -1;
- }
-
- sk->fdopt->lock_common (sk);
- int ret = sk->fdopt->setsockopt (sk, level, optname, optval, optlen);
- sk->fdopt->unlock_common (sk);
- return ret;
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : getsockopt
-* Input : int
-* getsockopt
-* (int s
-* int level
-* int optname
-* void * optval
-* socklen_t * optlen)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, getsockopt,
- (int s, int level, int optname, void *optval,
- socklen_t * optlen))
-{
- NSSBR_LOGDBG ("getsockopt]fd=%d,level=%d,optname=%d,optval=%p,optlen=%p", s,
- level, optname, optval, optlen);
- if (!optval || !optlen)
- {
- NSSBR_LOGERR ("optval or optlen is NULL]fd=%d", s);
- sbr_set_errno (EFAULT);
- return -1;
- }
-
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return -1;
- }
-
- sk->fdopt->lock_common (sk);
- int ret = sk->fdopt->getsockopt (sk, level, optname, optval, optlen);
- sk->fdopt->unlock_common (sk);
- return ret;
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : ioctl
-* Input : int
-* ioctl
-* (int s
-* unsigned long cmd
-* ...)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, ioctl, (int s, unsigned long cmd, ...))
-{
- NSSBR_LOGDBG ("ioctl]fd=%d,cmd=%lu", s, cmd);
- va_list va;
- va_start (va, cmd);
- void *arg = va_arg (va, void *);
- va_end (va);
-
- if (!arg)
- {
- NSSBR_LOGERR ("parameter is not ok]fd=%d", s);
- sbr_set_errno (EINVAL);
- return -1;
- }
-
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return -1;
- }
-
- sk->fdopt->lock_common (sk);
- int ret = sk->fdopt->ioctl (sk, cmd, arg);
- sk->fdopt->unlock_common (sk);
- return ret;
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : fcntl
-* Input : int
-* fcntl
-* (int s
-* int cmd
-* ...)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, fcntl, (int s, int cmd, ...))
-{
- NSSBR_LOGDBG ("fcntl]fd=%d,cmd=%d", s, cmd);
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return -1;
- }
-
- va_list va;
- va_start (va, cmd);
- long arg = va_arg (va, long);
- va_end (va);
-
- sk->fdopt->lock_common (sk);
- int ret = sk->fdopt->fcntl (sk, cmd, arg);
- sk->fdopt->unlock_common (sk);
- return ret;
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : recvfrom
-* Input : int
-* recvfrom
-* (int s
-* void * mem
-* size_t len
-* int flags
-* struct sockaddr * from
-* socklen_t * fromlen)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, recvfrom,
- (int s, void *mem, size_t len, int flags,
- struct sockaddr * from, socklen_t * fromlen))
-{
- NSSBR_LOGDBG ("recvfrom]fd=%d,mem=%p,len=%d,flags=%d,from=%p,fromlen=%p", s,
- mem, len, flags, from, fromlen);
-
- if (0 == len)
- {
- NSSBR_LOGDBG ("len is zero]fd=%d,len=%u", s, (u32) len);
- return 0; //return directly, don't change the last errno.
- }
-
- if (!mem)
- {
- NSSBR_LOGERR ("mem is NULL]fd=%d", s);
- sbr_set_errno (EFAULT);
- return -1;
- }
-
- if (fromlen && (*((int *) fromlen) < 0))
- {
- NSSBR_LOGERR ("fromlen is not ok]fd=%d,fromlen=%d", s, *fromlen);
- sbr_set_errno (EINVAL);
- return -1;
- }
-
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return -1;
- }
-
- return sk->fdopt->recvfrom (sk, mem, len, flags, from, fromlen);
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : read
-* Input : int
-* read
-* (int s
-* void * mem
-* size_t len)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, read, (int s, void *mem, size_t len))
-{
- NSSBR_LOGDBG ("read]fd=%d,mem=%p,len=%d", s, mem, len);
- return CALL_SBR_INTERCEPT (recvfrom, (s, mem, len, 0, NULL, NULL));
-}
-
-/*****************************************************************************
-* Prototype : sbr_check_iov
-* Description : check iov
-* Input : int s
-* const struct iovec * iov
-* int iovcnt
-* Output : None
-* Return Value : static inline int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-static inline int
-sbr_check_iov (int s, const struct iovec *iov, int iovcnt)
-{
- if ((!iov) || (iovcnt <= 0))
- {
- NSSBR_LOGERR ("iov is NULL or iovcn <=0]fd=%d", s);
- sbr_set_errno (EFAULT);
- return -1;
- }
-
- int i;
- for (i = 0; i < iovcnt; ++i)
- {
- if (!iov[i].iov_base && (iov[i].iov_len != 0))
- {
- NSSBR_LOGERR ("iov is not ok]fd=%d,iov_base=%p,iov_len=%d", s,
- iov[i].iov_base, iov[i].iov_len);
- sbr_set_errno (EFAULT);
- return -1;
- }
- }
-
- return 0;
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : readv
-* Input : int
-* readv
-* (int s
-* const struct iovec * iov
-* int iovcnt)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, readv, (int s, const struct iovec * iov, int iovcnt))
-{
- NSSBR_LOGDBG ("readv]fd=%d,iov=%p,iovcnt=%d", s, iov, iovcnt);
-
- if (sbr_check_iov (s, iov, iovcnt) != 0)
- {
- return -1;
- }
-
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return -1;
- }
-
- return sk->fdopt->readv (sk, iov, iovcnt);
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : recv
-* Input : int
-* recv
-* (int s
-* void * mem
-* size_t len
-* int flags)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, recv, (int s, void *mem, size_t len, int flags))
-{
- NSSBR_LOGDBG ("recv]fd=%d,mem=%p,len=%d,flags=%d", s, mem, len, flags);
- return CALL_SBR_INTERCEPT (recvfrom, (s, mem, len, flags, NULL, NULL));
-}
-
-/*****************************************************************************
-* Prototype : sbr_check_msg
-* Description : check msg
-* Input : int s
-* const struct msghdr * msg
-* Output : None
-* Return Value : static inline int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-static inline int
-sbr_check_msg (int s, const struct msghdr *msg)
-{
- if (!msg)
- {
- NSSBR_LOGERR ("msg is NULL]fd=%d", s);
- sbr_set_errno (EFAULT);
- return -1;
- }
-
- if (msg->msg_name && ((int) msg->msg_namelen < 0))
- {
- NSSBR_LOGERR ("msg_namelen is not ok]fd=%d,msg_namelen=%d", s,
- msg->msg_namelen);
- sbr_set_errno (EINVAL);
- return -1;
- }
-
- return sbr_check_iov (s, msg->msg_iov, msg->msg_iovlen);
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : recvmsg
-* Input : int
-* recvmsg
-* (int s
-* struct msghdr * msg
-* int flags)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, recvmsg, (int s, struct msghdr * msg, int flags))
-{
- NSSBR_LOGDBG ("recvmsg]fd=%d,msg=%p,flags=%d", s, msg, flags);
-
- if (sbr_check_msg (s, msg) != 0)
- {
- return -1;
- }
-
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return -1;
- }
-
- return sk->fdopt->recvmsg (sk, msg, flags);
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : send
-* Input : int
-* send
-* (int s
-* const void * data
-* size_t size
-* int flags)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, send, (int s, const void *data, size_t size, int flags))
-{
- NSSBR_LOGDBG ("send]fd=%d,data=%p,size=%zu,flags=%d", s, data, size, flags);
- if (!data)
- {
- NSSBR_LOGERR ("data is NULL]fd=%d", s);
- sbr_set_errno (EFAULT);
- return -1;
- }
-
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return -1;
- }
-
- return sk->fdopt->send (sk, data, size, flags);
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : sendmsg
-* Input : int
-* sendmsg
-* (int s
-* const struct msghdr * msg
-* int flags)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, sendmsg, (int s, const struct msghdr * msg, int flags))
-{
- NSSBR_LOGDBG ("sendmsg]fd=%d,msg=%p,flags=%d", s, msg, flags);
-
- if (sbr_check_msg (s, msg) != 0)
- {
- return -1;
- }
-
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return -1;
- }
-
- return sk->fdopt->sendmsg (sk, msg, flags);
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : sendto
-* Input : int
-* sendto
-* (int s
-* const void * data
-* size_t size
-* int flags
-* const struct sockaddr * to
-* socklen_t tolen)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, sendto,
- (int s, const void *data, size_t size, int flags,
- const struct sockaddr * to, socklen_t tolen))
-{
- NSSBR_LOGDBG ("sendto]fd=%d,data=%p,size=%zu,flags=%d,to=%p,tolen=%d", s,
- data, size, flags, to, tolen);
- if ((data == NULL) || (flags < 0))
- {
- NSSBR_LOGERR ("parameter is not ok]fd=%d,data=%p,size=%zu,flags=%d", s,
- data, size, flags);
- sbr_set_errno (EINVAL);
- return -1;
- }
-
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return -1;
- }
-
- return sk->fdopt->sendto (sk, data, size, flags, to, tolen);
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : write
-* Input : int
-* write
-* (int s
-* const void * data
-* size_t size)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, write, (int s, const void *data, size_t size))
-{
- NSSBR_LOGDBG ("write]fd=%d,data=%p,size=%zu", s, data, size);
- return CALL_SBR_INTERCEPT (send, (s, data, size, 0));
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : writev
-* Input : int
-* writev
-* (int s
-* const struct iovec * iov
-* int iovcnt)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, writev, (int s, const struct iovec * iov, int iovcnt))
-{
- NSSBR_LOGDBG ("writev]fd=%d,iov=%p,iovcnt=%d", s, iov, iovcnt);
-
- if (sbr_check_iov (s, iov, iovcnt) != 0)
- {
- return -1;
- }
-
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return -1;
- }
-
- return sk->fdopt->writev (sk, iov, iovcnt);
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : shutdown
-* Input : int
-* shutdown
-* (int s
-* int how)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, shutdown, (int s, int how))
-{
- NSSBR_LOGDBG ("shutdown]fd=%d,how=%d", s, how);
- if ((how != SHUT_RD) && (how != SHUT_WR) && (how != SHUT_RDWR))
- {
- sbr_set_errno (EINVAL);
- return -1;
- }
-
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return -1;
- }
-
- sk->fdopt->lock_common (sk);
- int ret = sk->fdopt->shutdown (sk, how);
- sk->fdopt->unlock_common (sk);
- return ret;
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : close
-* Input : int
-* close
-* (int s)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (int, close, (int s))
-{
- NSSBR_LOGDBG ("close]fd=%d", s);
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return -1;
- }
-
- int ret = sk->fdopt->close (sk);
- sbr_free_sk (sk);
- return ret;
-}
-
-SBR_INTERCEPT (int, select,
- (int nfds, fd_set * readfd, fd_set * writefd,
- fd_set * exceptfd, struct timeval * timeout))
-{
- return lwip_try_select (nfds, readfd, writefd, exceptfd, timeout);
-}
-
-SBR_INTERCEPT (unsigned int, ep_getevt,
- (int epfd, int profd, unsigned int events))
-{
- NSSBR_LOGDBG ("epfd= %d, proFD=%d,epi=0x%x", epfd, profd, events);
- sbr_socket_t *sk = sbr_lookup_sk (profd);
-
- if (!sk)
- {
- return -1;
- }
-
- return sk->fdopt->ep_getevt (sk, events);
-}
-
-SBR_INTERCEPT (unsigned int, ep_ctl,
- (int epfd, int profd, int triggle_ops,
- struct epoll_event * event, void *pdata))
-{
- NSSBR_LOGDBG ("epfd = %d, proFD=%d,triggle_ops=%d,pdata=%p", epfd, profd,
- triggle_ops, pdata);
- sbr_socket_t *sk = sbr_lookup_sk (profd);
-
- if (!sk)
- {
- return -1;
- }
-
- return sk->fdopt->ep_ctl (sk, triggle_ops, event, pdata);
-}
-
-SBR_INTERCEPT (int, peak, (int s))
-{
- NSSBR_LOGDBG ("]fd=%d", s);
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return -1;
- }
-
- return sk->fdopt->peak (sk);
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : set_app_info
-* Input : int
-* set_app_info
-* (int s
-* void* app_info)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (void, set_app_info, (int s, void *app_info))
-{
- NSSBR_LOGDBG ("set_app_info]fd=%d", s);
-
- if (!app_info)
- {
- NSSBR_LOGERR ("invalid param, app_info is NULL]");
- return;
- }
-
- sbr_socket_t *sk = sbr_lookup_sk (s);
- if (!sk)
- {
- return;
- }
-
- sk->fdopt->set_app_info (sk, app_info);
-}
-
-/* app send its version info to nStackMain */
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : sbr_app_touch
-* Input : int
-* sbr_app_touch
-* ()
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (void, app_touch, (void))
-{
- NSSBR_LOGDBG ("sbr_app_touch() is called]");
-
- sbr_app_touch_in ();
-}
-
-/*****************************************************************************
-* Prototype : SBR_INTERCEPT
-* Description : set_close_status
-* Input : void
-* set_close_stat
-* (int s
-* int flag)
-* Output : None
-* Return Value :
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-SBR_INTERCEPT (void, set_close_stat, (int s, int flag))
-{
- NSSBR_LOGDBG ("]fd=%d", s);
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return;
- }
- if (sk->fdopt->set_close_stat)
- {
- sk->fdopt->set_close_stat (sk, flag);
- }
-
-}
-
-SBR_INTERCEPT (int, fd_alloc, ())
-{
- return sbr_socket (AF_INET, SOCK_STREAM, 0);
-}
-
-SBR_INTERCEPT (int, fork_init_child, (pid_t p, pid_t c))
-{
- NSSBR_LOGDBG ("fork_init_child() is called]");
- return sbr_fork_protocol ();
-}
-
-SBR_INTERCEPT (void, fork_parent_fd, (int s, pid_t p))
-{
- NSSBR_LOGDBG ("fork_parent_fd() is called]");
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return;
- }
-
- sk->fdopt->fork_parent (sk, p);
-}
-
-SBR_INTERCEPT (void, fork_child_fd, (int s, pid_t p, pid_t c))
-{
- NSSBR_LOGDBG ("fork_child_fd() is called]");
- sbr_socket_t *sk = sbr_lookup_sk (s);
-
- if (!sk)
- {
- return;
- }
-
- sk->fdopt->fork_child (sk, p, c);
-
-}
-
-SBR_INTERCEPT (void, fork_free_fd, (int s, pid_t p, pid_t c))
-{
- NSSBR_LOGDBG ("fork_free_fd() is called]");
- sbr_free_fd (s);
-}
-
-/*****************************************************************************
-* Prototype : nstack_stack_register
-* Description : reg api to nsocket
-* Input : nstack_socket_ops* ops
-* nstack_event_ops *val
-* nstack_proc_ops *deal
-* Output : None
-* Return Value : int
-* Calls :
-* Called By :
-*
-*****************************************************************************/
-int
-lwip_stack_register (nstack_proc_cb * ops, nstack_event_cb * val)
-{
- if (!ops || !val || !val->handle)
- {
- return -1;
- }
-
-#undef NSTACK_MK_DECL
-#define NSTACK_MK_DECL(ret, fn, args) \
- (ops->socket_ops).pf ## fn = (typeof(((nstack_socket_ops*)0)->pf ## fn))dlsym(val->handle, "sbr_" # fn);
-#include "declare_syscalls.h"
-
- (ops->extern_ops).module_init = sbr_init_res;
- (ops->extern_ops).ep_getevt = GET_SBR_INTERCEPT (ep_getevt);
- (ops->extern_ops).ep_ctl = GET_SBR_INTERCEPT (ep_ctl);
- (ops->extern_ops).peak = GET_SBR_INTERCEPT (peak);
- (ops->extern_ops).stack_alloc_fd = GET_SBR_INTERCEPT (fd_alloc); /*alloc a fd id for epoll */
- (ops->extern_ops).fork_init_child = GET_SBR_INTERCEPT (fork_init_child);
- (ops->extern_ops).fork_parent_fd = GET_SBR_INTERCEPT (fork_parent_fd);
- (ops->extern_ops).fork_child_fd = GET_SBR_INTERCEPT (fork_child_fd);
- (ops->extern_ops).fork_free_fd = GET_SBR_INTERCEPT (fork_free_fd);
- return 0;
-}
diff --git a/stacks/lwip_stack/src/tools/CMakeLists.txt b/stacks/lwip_stack/src/tools/CMakeLists.txt
deleted file mode 100644
index bd485b8..0000000
--- a/stacks/lwip_stack/src/tools/CMakeLists.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-#########################################################################
-#
-# 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.
-#########################################################################
-
-FILE(GLOB_RECURSE Tcpdump *.c)
-ADD_LIBRARY(nTcpdump STATIC ${Tcpdump})
-INCLUDE_DIRECTORIES(
- ${CMAKE_CURRENT_LIST_DIR}/../include
-)
-TARGET_LINK_LIBRARIES(nTcpdump dmm_api) \ No newline at end of file
diff --git a/stacks/lwip_stack/src/tools/dump_tool.c b/stacks/lwip_stack/src/tools/dump_tool.c
deleted file mode 100644
index 53f0e44..0000000
--- a/stacks/lwip_stack/src/tools/dump_tool.c
+++ /dev/null
@@ -1,622 +0,0 @@
-/*
-*
-* 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.
-*/
-
-#include <arpa/inet.h>
-
-#include "nsfw_init.h"
-#include "nsfw_maintain_api.h"
-#include "nsfw_mem_api.h"
-#include "nsfw_fd_timer_api.h"
-#include "nstack_log.h"
-#include "nstack_securec.h"
-
-#include "dump_tool.h"
-#include "nstack_dmm_adpt.h"
-
-NSTACK_STATIC u32 g_dump_task_mask = 0;
-NSTACK_STATIC dump_task_info g_dump_task[MAX_DUMP_TASK];
-static dump_timer_info g_dump_timer;
-
-static nsfw_mem_name g_dump_mem_ring_info =
- { NSFW_SHMEM, NSFW_PROC_MAIN, DUMP_SHMEM_RIGN_NAME };
-static nsfw_mem_name g_dump_mem_pool_info =
- { NSFW_SHMEM, NSFW_PROC_MAIN, DUMP_SHMEM_POOL_NAME };
-
-NSTACK_STATIC inline void
-dump_task_init (dump_task_info * task)
-{
- task->task_state = 0;
- task->task_id = -1;
- task->task_keep_time = 0;
- task->task_pool = NULL;
- task->task_queue = NULL;
-}
-
-NSTACK_STATIC inline void
-clear_dump_task ()
-{
- int i = 0;
- for (; i < MAX_DUMP_TASK; i++)
- {
- dump_task_init (&g_dump_task[i]);
- }
-}
-
-NSTACK_STATIC i16
-get_dump_task (nsfw_tool_dump_msg * req)
-{
- // base version just support 1 dump task
- if (req->task_keep_time > MAX_DUMP_TIME
- || req->task_keep_time < MIN_DUMP_TIME)
- {
- NSPOL_DUMP_LOGERR ("task keep time invalid] time=%u.",
- req->task_keep_time);
- return -1;
- }
-
- if (1 == g_dump_task[0].task_state)
- {
- NSPOL_DUMP_LOGERR
- ("start tcpdump task failed, task still in work state] task id=%d.",
- 0);
- return -1;
- }
-
- struct timespec cur_time;
- GET_CUR_TIME (&cur_time); /*do not need return value */
- g_dump_task[0].task_start_sec = cur_time.tv_sec;
- g_dump_task[0].last_hbt_sec = cur_time.tv_sec;
-
- g_dump_task[0].task_state = 1;
- g_dump_task[0].task_id = 0;
- g_dump_task[0].task_keep_time = req->task_keep_time;
-
- g_dump_task_mask |= (1 << g_dump_task[0].task_id);
- NSPOL_DUMP_LOGINF ("start tcpdump task success] task id=%d.", 0);
- return 0;
-}
-
-NSTACK_STATIC i16
-close_dump_task (i16 task_id)
-{
- if (task_id < 0 || task_id >= MAX_DUMP_TASK)
- {
- NSPOL_DUMP_LOGERR
- ("receive invalid task id in close dump task req] task id=%d.",
- task_id);
- return -1;
- }
-
- g_dump_task[task_id].task_state = 0;
-
- g_dump_task_mask &= ~(1 << task_id);
-
- NSPOL_DUMP_LOGINF ("stop tcpdump task success] task id=%d.", 0);
-
- return task_id;
-}
-
-NSTACK_STATIC void
-stop_expired_task (int idx, u32 now_sec)
-{
- dump_task_info *ptask = &g_dump_task[idx];
- if (0 == ptask->task_state)
- {
- return;
- }
-
- if (now_sec - ptask->task_start_sec > ptask->task_keep_time)
- {
- NSPOL_DUMP_LOGERR
- ("stop dump task because task time expired] task id=%d, now_sec=%u, task start time=%u, dump time=%u.",
- ptask->task_id, now_sec, ptask->task_start_sec,
- ptask->task_keep_time);
- close_dump_task (ptask->task_id);
- return;
- }
-
- if (now_sec - ptask->last_hbt_sec > DUMP_TASK_HBT_TIME_OUT)
- {
- NSPOL_DUMP_LOGERR
- ("stop dump task because heart beat time out] task id=%d, now_sec=%u, last hbt time=%u, hbt timeout=%u.",
- ptask->task_id, now_sec, ptask->last_hbt_sec,
- DUMP_TASK_HBT_TIME_OUT);
- close_dump_task (ptask->task_id);
- }
-
- return;
-}
-
-NSTACK_STATIC inline bool
-check_dump_alive (u32 timer_type, void *data)
-{
- dump_timer_info *ptimer_info = (dump_timer_info *) data;
-
- struct timespec cur_time;
- GET_CUR_TIME (&cur_time); /*do not need return value */
-
- int i = 0;
- for (; i < MAX_DUMP_TASK; i++)
- {
- stop_expired_task (i, cur_time.tv_sec);
- }
-
- ptimer_info->ptimer =
- nsfw_timer_reg_timer (1, ptimer_info, check_dump_alive,
- *(struct timespec *) (ptimer_info->interval));
-
- return true;
-}
-
-NSTACK_STATIC bool
-dump_init_timer (dump_timer_info * ptimer_info)
-{
- struct timespec *trigger_time =
- (struct timespec *) malloc (sizeof (struct timespec));
- if (NULL == trigger_time)
- {
- NSPOL_DUMP_LOGERR ("alloc memory for timer failed.");
- return false;
- }
-
- trigger_time->tv_sec = DUMP_HBT_CHK_INTERVAL;
- trigger_time->tv_nsec = 0;
-
- ptimer_info->interval = trigger_time;
- ptimer_info->ptimer =
- nsfw_timer_reg_timer (1, ptimer_info, check_dump_alive, *trigger_time);
- return true;
-}
-
-NSTACK_STATIC inline u32
-copy_limit_buf (char *dst_buf, int dst_buf_len, char *src_buf,
- u32 src_buf_len, u32 limit_len)
-{
- if (src_buf_len < limit_len)
- {
- NSPOL_DUMP_LOGERR ("message too short] len=%d", src_buf_len);
- return 0;
- }
-
- if (EOK != MEMCPY_S (dst_buf, dst_buf_len, src_buf, limit_len))
- {
- NSPOL_DUMP_LOGERR ("MEMCPY_S failed");
- return 0;
- }
-
- return limit_len;
-}
-
-NSTACK_STATIC inline u32
-get_packet_buf (char *dst_buf, int dst_buf_len, char *src_buf,
- u32 src_buf_len, u32 eth_head_len)
-{
-#define TCP_BUF_LEN (eth_head_len + IP_HEAD_LEN + TCP_HEAD_LEN)
-#define UDP_BUF_LEN (eth_head_len + IP_HEAD_LEN + UDP_HEAD_LEN)
-#define ICMP_BUF_LEN (eth_head_len + IP_HEAD_LEN + ICMP_HEAD_LEN)
-
- if (NULL == dst_buf || NULL == src_buf)
- {
- return 0;
- }
-
- struct ip_hdr *ip_head = (struct ip_hdr *) (src_buf + eth_head_len);
- if (ip_head->_proto == IP_PROTO_TCP)
- {
- return copy_limit_buf (dst_buf, dst_buf_len, src_buf, src_buf_len,
- TCP_BUF_LEN);
- }
-
- if (ip_head->_proto == IP_PROTO_UDP)
- {
- return copy_limit_buf (dst_buf, dst_buf_len, src_buf, src_buf_len,
- UDP_BUF_LEN);
- }
-
- if (ip_head->_proto == IP_PROTO_ICMP)
- {
- return copy_limit_buf (dst_buf, dst_buf_len, src_buf, src_buf_len,
- ICMP_BUF_LEN);
- }
-
- if (EOK != MEMCPY_S (dst_buf, dst_buf_len, src_buf, src_buf_len))
- {
- NSPOL_DUMP_LOGERR ("MEMCPY_S failed");
- return 0;
- }
-
- return src_buf_len;
-}
-
-NSTACK_STATIC int
-pack_msg_inout (void *dump_buf, char *msg_buf, u32 len, u16 direction,
- void *para)
-{
- (void) para;
- dump_msg_info *pmsg = (dump_msg_info *) dump_buf;
- if (!pmsg)
- {
- return 0;
- }
-
- pmsg->direction = direction;
- struct timeval cur_time;
- gettimeofday (&cur_time, NULL);
- pmsg->dump_sec = cur_time.tv_sec;
- pmsg->dump_usec = cur_time.tv_usec;
-
- /* msg content can not be captured */
- u32 real_len =
- get_packet_buf (pmsg->buf, DUMP_MSG_SIZE, msg_buf, len, ETH_HEAD_LEN);
- if (0 == real_len)
- {
- return 0;
- }
-
- pmsg->len = real_len;
-
- return 1;
-}
-
-NSTACK_STATIC int
-pack_msg_loop (void *dump_buf, char *msg_buf, u32 len, u16 direction,
- void *para)
-{
- dump_msg_info *pmsg = (dump_msg_info *) dump_buf;
- if (!pmsg)
- {
- return 0;
- }
- pmsg->direction = direction;
- struct timeval cur_time;
- gettimeofday (&cur_time, NULL);
- pmsg->dump_sec = cur_time.tv_sec;
- pmsg->dump_usec = cur_time.tv_usec;
-
- eth_head pack_eth_head;
- int retVal =
- MEMCPY_S (pack_eth_head.dest_mac, MAC_ADDR_LEN, para, MAC_ADDR_LEN);
- if (EOK != retVal)
- {
- NSPOL_DUMP_LOGERR ("MEMCPY_S failed]retVal=%d", retVal);
- return 0;
- }
- retVal = MEMCPY_S (pack_eth_head.src_mac, MAC_ADDR_LEN, para, MAC_ADDR_LEN);
- if (EOK != retVal)
- {
- NSPOL_DUMP_LOGERR ("MEMCPY_S failed]retVal=%d", retVal);
- return 0;
- }
- pack_eth_head.eth_type = htons (PROTOCOL_IP);
-
- retVal =
- MEMCPY_S (pmsg->buf, DUMP_MSG_SIZE, &pack_eth_head, sizeof (eth_head));
- if (EOK != retVal)
- {
- NSPOL_DUMP_LOGERR ("MEMCPY_S failed]retVal=%d", retVal);
- return 0;
- }
-
- u32 buf_len = DUMP_MSG_SIZE - ETH_HEAD_LEN;
-
- /* msg content can not be captured- Begin */
- u32 real_len =
- get_packet_buf (pmsg->buf + ETH_HEAD_LEN, buf_len, msg_buf, len, 0);
- if (0 == real_len)
- {
- return 0;
- }
-
- pmsg->len = real_len + ETH_HEAD_LEN;
-
- return 1;
-}
-
-NSTACK_STATIC void
-dump_enqueue (int task_idx, void *buf, u32 len, u16 direction,
- pack_msg_fun pack_msg, void *para)
-{
- mring_handle queue = (mring_handle *) g_dump_task[task_idx].task_queue;
- mring_handle pool = (mring_handle *) g_dump_task[task_idx].task_pool;
-
- void *msg = NULL;
-
- if (nsfw_mem_ring_dequeue (pool, &msg) <= 0)
- {
- // such log may be too much if queue is empty
- NSPOL_DUMP_LOGDBG ("get msg node from mem pool failed] pool=%p.", pool);
- return;
- }
-
- if (NULL == msg)
- {
- NSPOL_DUMP_LOGWAR ("get NULL msg node from mem pool] pool=%p.", pool);
- return;
- }
-
- if (!pack_msg (msg, buf, len, direction, para))
- {
- NSPOL_DUMP_LOGWAR ("get dump msg failed");
- return;
- }
-
- if (nsfw_mem_ring_enqueue (queue, msg) < 0)
- {
- NSPOL_DUMP_LOGWAR ("dump mem ring enqueue failed] ring=%p.", queue);
- }
-
- return;
-}
-
-NSTACK_STATIC inline bool
-dump_enabled ()
-{
- return (0 != g_dump_task_mask);
-}
-
-void
-ntcpdump (void *buf, u32 buf_len, u16 direction)
-{
- u32 i;
- if (!dump_enabled ())
- {
- return;
- }
-
- /* fix Dead-code type Codedex issue here */
- for (i = 0; i < MAX_DUMP_TASK; i++)
- {
- if (g_dump_task[i].task_state)
- {
- dump_enqueue (i, buf, buf_len, direction, pack_msg_inout, NULL);
- }
- }
-}
-
-void
-ntcpdump_loop (void *buf, u32 buf_len, u16 direction, void *eth_addr)
-{
- u32 i;
-
- if (!dump_enabled ())
- {
- return;
- }
-
- /* fix Dead-code type Codedex issue here */
- for (i = 0; i < MAX_DUMP_TASK; i++)
- {
- if (g_dump_task[i].task_state)
- {
- dump_enqueue (i, buf, buf_len, direction, pack_msg_loop, eth_addr);
- }
- }
-}
-
-// called by nStackMain
-bool
-dump_create_pool ()
-{
- nsfw_mem_sppool pool_info;
- if (EOK !=
- MEMCPY_S (&pool_info.stname, sizeof (nsfw_mem_name),
- &g_dump_mem_pool_info, sizeof (nsfw_mem_name)))
- {
- NSPOL_DUMP_LOGERR ("create dump mem pool failed, MEMCPY_S failed.");
- return false;
- }
-
- pool_info.usnum = DUMP_MSG_NUM;
- pool_info.useltsize = DUMP_MSG_SIZE + sizeof (dump_msg_info);
- pool_info.isocket_id = NSFW_SOCKET_ANY;
- pool_info.enmptype = NSFW_MRING_MPSC;
-
- mring_handle pool = nsfw_mem_sp_create (&pool_info);
- if (NULL == pool)
- {
- NSPOL_DUMP_LOGERR ("create dump mem pool failed, pool create failed.");
- return false;
- }
-
- g_dump_task[0].task_pool = pool;
-
- NSPOL_DUMP_LOGINF ("dump pool create success] pool=%p.", pool);
-
- return true;
-}
-
-bool
-dump_create_ring ()
-{
- nsfw_mem_mring ring_info;
- if (EOK !=
- MEMCPY_S (&ring_info.stname, sizeof (nsfw_mem_name),
- &g_dump_mem_ring_info, sizeof (nsfw_mem_name)))
- {
- NSPOL_DUMP_LOGERR ("create dump mem ring failed, MEMCPY_S failed.");
- return false;
- }
-
- ring_info.usnum = DUMP_MSG_NUM;
- ring_info.isocket_id = NSFW_SOCKET_ANY;
- ring_info.enmptype = NSFW_MRING_MPSC;
-
- mring_handle ring = nsfw_mem_ring_create (&ring_info);
- if (NULL == ring)
- {
- NSPOL_DUMP_LOGERR ("create dump mem ring failed, ring create failed.");
- return false;
- }
-
- g_dump_task[0].task_queue = ring;
-
- NSPOL_DUMP_LOGINF ("dump ring create success] ring=%p.", ring);
-
- return true;
-}
-
-NSTACK_STATIC int
-on_dump_tool_req (nsfw_mgr_msg * req)
-{
- i16 task_id = 0;
- if (!req)
- {
- return -1;
- }
- if (req->src_proc_type != NSFW_PROC_TOOLS)
- {
- NSPOL_DUMP_LOGDBG
- ("dump module receive invaild message] module type=%u.",
- req->src_proc_type);
- return -1;
- }
-
- if (req->msg_type != MGR_MSG_TOOL_TCPDUMP_REQ)
- {
- NSPOL_DUMP_LOGDBG ("dump module receive invaild message] msg type=%u.",
- req->msg_type);
- return -1;
- }
-
- nsfw_tool_dump_msg *dump_msg_req = GET_USER_MSG (nsfw_tool_dump_msg, req);
-
- switch (dump_msg_req->op_type)
- {
- case START_DUMP_REQ:
- task_id = get_dump_task (dump_msg_req);
- break;
-
- case STOP_DUMP_REQ:
- task_id = close_dump_task (dump_msg_req->task_id);
- break;
-
- default:
- task_id = -1;
- }
-
- nsfw_mgr_msg *rsp = nsfw_mgr_rsp_msg_alloc (req);
- if (NULL == rsp)
- {
- NSPOL_DUMP_LOGDBG ("alloc response for dump request failed.");
- return -1;
- }
-
- nsfw_tool_dump_msg *dump_msg_rsp = GET_USER_MSG (nsfw_tool_dump_msg, rsp);
- dump_msg_rsp->op_type = dump_msg_req->op_type + DUMP_MSG_TYPE_RSP;
- dump_msg_rsp->task_id = task_id;
-
- nsfw_mgr_send_msg (rsp);
- nsfw_mgr_msg_free (rsp);
- return 0;
-
-}
-
-NSTACK_STATIC int
-on_dump_hbt_req (nsfw_mgr_msg * req)
-{
- if (!req)
- {
- return -1;
- }
- if (req->src_proc_type != NSFW_PROC_TOOLS)
- {
- NSPOL_DUMP_LOGDBG
- ("dump module receive invaild message] module type=%u.",
- req->src_proc_type);
- return -1;
- }
-
- if (req->msg_type != MGR_MSG_TOOL_HEART_BEAT)
- {
- NSPOL_DUMP_LOGDBG ("dump module receive invaild message] msg type=%u.",
- req->msg_type);
- return -1;
- }
-
- nsfw_tool_hbt *dump_hbt_req = GET_USER_MSG (nsfw_tool_hbt, req);
-
- i16 task_id = dump_hbt_req->task_id;
- if (task_id < 0 || task_id >= MAX_DUMP_TASK)
- {
- NSPOL_DUMP_LOGERR ("dump heart beat with invalid task id] task id=%d.",
- task_id);
- return -1;
- }
-
- if (0 == g_dump_task[task_id].task_state)
- {
- NSPOL_DUMP_LOGDBG
- ("dump module receive heart beat but task not enabled] task id=%d.",
- task_id);
- return 0;
- }
-
- struct timespec cur_time;
- GET_CUR_TIME (&cur_time); /*no need return value */
-
- // update task alive time
- g_dump_task[task_id].last_hbt_seq = dump_hbt_req->seq;
- g_dump_task[task_id].last_hbt_sec = cur_time.tv_sec;
-
- return 0;
-}
-
-NSTACK_STATIC int dump_tool_init (void *param);
-NSTACK_STATIC int
-dump_tool_init (void *param)
-{
- u32 proc_type = (u32) ((long long) param);
- NSPOL_DUMP_LOGINF ("dump module init] proc type=%d", proc_type);
-
- switch (proc_type)
- {
- case NSFW_PROC_MAIN:
- nsfw_mgr_reg_msg_fun (MGR_MSG_TOOL_TCPDUMP_REQ, on_dump_tool_req);
- nsfw_mgr_reg_msg_fun (MGR_MSG_TOOL_HEART_BEAT, on_dump_hbt_req);
- break;
- default:
- NSPOL_DUMP_LOGERR ("dump init with unknow module] proc type=%d",
- proc_type);
- return -1;
- }
-
- clear_dump_task ();
-
- if (!dump_create_ring ())
- {
- return -1;
- }
-
- if (!dump_create_pool ())
- {
- return -1;
- }
-
- if (!dump_init_timer (&g_dump_timer))
- {
- return -1;
- }
-
- NSPOL_DUMP_LOGINF ("dump module init success.");
- return 0;
-}
-
-/* *INDENT-OFF* */
-NSFW_MODULE_NAME (TCPDUMP_MODULE)
-NSFW_MODULE_PRIORITY (10)
-NSFW_MODULE_DEPENDS (NSTACK_DMM_MODULE)
-NSFW_MODULE_INIT (dump_tool_init)
-/* *INDENT-ON* */
diff --git a/stacks/lwip_stack/src/tools/dump_tool.h b/stacks/lwip_stack/src/tools/dump_tool.h
deleted file mode 100644
index 8c32523..0000000
--- a/stacks/lwip_stack/src/tools/dump_tool.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
-*
-* 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 _DUMP_TOOL_H_
-#define _DUMP_TOOL_H_
-
-#define IP_PROTO_ICMP 1
-#define IP_PROTO_IGMP 2
-#define IP_PROTO_UDP 17
-#define IP_PROTO_UDPLITE 136
-#define IP_PROTO_TCP 6
-
-#ifndef MAC_ADDR_LEN
-#define MAC_ADDR_LEN 6
-#endif
-
-#ifndef IP_HEAD_LEN
-#define IP_HEAD_LEN 20
-#endif
-#ifndef TCP_HEAD_LEN
-#define TCP_HEAD_LEN 20
-#endif
-#ifndef UDP_HEAD_LEN
-#define UDP_HEAD_LEN 8
-#endif
-
-#ifndef ICMP_HEAD_LEN
-#define ICMP_HEAD_LEN 8
-#endif
-
-typedef struct _dump_task_info
-{
- u16 task_state; // 0:off, 1:on
- i16 task_id;
- u32 task_keep_time;
- u32 task_start_sec;
- u32 last_hbt_seq;
- u32 last_hbt_sec;
- void *task_queue;
- void *task_pool;
-} dump_task_info;
-
-typedef struct _dump_eth_head
-{
- u8 dest_mac[MAC_ADDR_LEN];
- u8 src_mac[MAC_ADDR_LEN];
- u16 eth_type;
-} eth_head;
-
-#define ETH_HEAD_LEN sizeof(eth_head)
-
-struct ip_hdr
-{
- u16 _v_hl_tos;
- u16 _len;
- u16 _id;
- u16 _offset;
- u8 _ttl;
- u8 _proto;
- u16 _chksum;
- u32 src;
- u32 dest;
-};
-
-typedef int (*pack_msg_fun) (void *dump_buf, char *msg_buf, u32 len,
- u16 direction, void *para);
-
-#endif