summaryrefslogtreecommitdiffstats
path: root/stacks/lwip_stack/src/nStackMain/main.c
diff options
context:
space:
mode:
authorcharan makkina <charan795m@gmail.com>2019-04-30 17:40:53 +0530
committercharan makkina <charan795m@gmail.com>2019-05-20 18:14:40 +0530
commita826fe833d3f2a8fe2673fa05811fe1a22baf045 (patch)
treeda11a17c46ca9b8a002a52a290628574fa3f5eda /stacks/lwip_stack/src/nStackMain/main.c
parent3e6bf7b64eea418c59959c18750261b815b2892c (diff)
Feature: 19.04 part 1
Change-Id: Ibba924b8deca1f246b9dcb12d89d085b6fd33046 Signed-off-by: charan makkina <charan795m@gmail.com>
Diffstat (limited to 'stacks/lwip_stack/src/nStackMain/main.c')
-rw-r--r--stacks/lwip_stack/src/nStackMain/main.c429
1 files changed, 0 insertions, 429 deletions
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
-
- }
-}