/** * \brief Workers version of the AF_PACKET processing. * * Start N threads with each thread doing all the work. * */ int RunModeIdsAFPWorkers(DetectEngineCtx *de_ctx) { #ifdef HAVE_AF_PACKET int ret; char *live_dev = NULL; #endif SCEnter(); #ifdef HAVE_AF_PACKET RunModeInitialize(); TimeModeSetLive(); (void)ConfGet("af-packet.live-interface", &live_dev); ret = RunModeSetLiveCaptureWorkers(de_ctx, ParseAFPConfig, AFPConfigGeThreadsCount, "ReceiveAFP", "DecodeAFP", "AFPacket", live_dev); if (ret != 0) { SCLogError(SC_ERR_RUNMODE, "Unable to start runmode"); exit(EXIT_FAILURE); } SCLogInfo("RunModeIdsAFPSingle initialised"); #endif /* HAVE_AF_PACKET */ SCReturnInt(0); }
/** * \brief Workers version of the netmap processing. * * Start N threads with each thread doing all the work. * */ int RunModeIdsNetmapWorkers(void) { SCEnter(); #ifdef HAVE_NETMAP int ret; char *live_dev = NULL; RunModeInitialize(); TimeModeSetLive(); (void)ConfGet("netmap.live-interface", &live_dev); ret = RunModeSetLiveCaptureWorkers( ParseNetmapConfig, NetmapConfigGeThreadsCount, "ReceiveNetmap", "DecodeNetmap", thread_name_workers, live_dev); if (ret != 0) { SCLogError(SC_ERR_RUNMODE, "Unable to start runmode"); exit(EXIT_FAILURE); } SCLogInfo("RunModeIdsNetmapWorkers initialised"); #endif /* HAVE_NETMAP */ SCReturnInt(0); }
int RunModeIdsNflogWorkers(DetectEngineCtx *de_ctx) { SCEnter(); #ifdef HAVE_NFLOG int ret = 0; char *live_dev = NULL; RunModeInitialize(); TimeModeSetLive(); ret = RunModeSetLiveCaptureWorkers(de_ctx, ParseNflogConfig, NflogConfigGeThreadsCount, "ReceiveNFLOG", "DecodeNFLOG", "RecvNFLOG", live_dev); if (ret != 0) { SCLogError(SC_ERR_RUNMODE, "Unable to start runmode"); exit(EXIT_FAILURE); } SCLogInfo("RunModeIdsNflogWorkers initialised"); #endif /* HAVE_NFLOG */ SCReturnInt(0); }
/** * \brief Workers version of the PCAP LIVE processing. * * Start N threads with each thread doing all the work. * */ int RunModeIdsPcapWorkers(DetectEngineCtx *de_ctx) { int ret; char *live_dev = NULL; SCEnter(); RunModeInitialize(); TimeModeSetLive(); (void) ConfGet("pcap.single-pcap-dev", &live_dev); ret = RunModeSetLiveCaptureWorkers(de_ctx, ParsePcapConfig, PcapConfigGeThreadsCount, "ReceivePcap", "DecodePcap", "RxPcap", live_dev); if (ret != 0) { SCLogError(SC_ERR_RUNMODE, "Unable to start runmode"); exit(EXIT_FAILURE); } SCLogInfo("RunModeIdsPcapWorkers initialised"); SCReturnInt(0); }
/** * \brief Workers version of the AF_PACKET processing. * * Start N threads with each thread doing all the work. * */ int RunModeIdsAFPWorkers(DetectEngineCtx *de_ctx) { #ifdef HAVE_AF_PACKET int ret; char *live_dev = NULL; #endif SCEnter(); #ifdef HAVE_AF_PACKET RunModeInitialize(); TimeModeSetLive(); (void)ConfGet("af-packet.live-interface", &live_dev); if (AFPPeersListInit() != TM_ECODE_OK) { SCLogError(SC_ERR_RUNMODE, "Unable to init peers list."); exit(EXIT_FAILURE); } ret = RunModeSetLiveCaptureWorkers(de_ctx, ParseAFPConfig, AFPConfigGeThreadsCount, "ReceiveAFP", "DecodeAFP", "AFPacket", live_dev); if (ret != 0) { SCLogError(SC_ERR_RUNMODE, "Unable to start runmode"); exit(EXIT_FAILURE); } /* In IPS mode each threads must have a peer */ if (AFPPeersListCheck() != TM_ECODE_OK) { SCLogError(SC_ERR_RUNMODE, "Some IPS capture threads did not peer."); exit(EXIT_FAILURE); } SCLogInfo("RunModeIdsAFPWorkers initialised"); #endif /* HAVE_AF_PACKET */ SCReturnInt(0); }
int RunModeIdsPfringWorkers(DetectEngineCtx *de_ctx) { SCEnter(); /* We include only if pfring is enabled */ #ifdef HAVE_PFRING int ret; char *live_dev = NULL; ConfigIfaceParserFunc tparser; RunModeInitialize(); TimeModeSetLive(); ret = GetDevAndParser(&live_dev, &tparser); if (ret != 0) { SCLogError(SC_ERR_MISSING_CONFIG_PARAM, "Unable to get parser and interface params"); exit(EXIT_FAILURE); } ret = RunModeSetLiveCaptureWorkers(de_ctx, tparser, PfringConfigGeThreadsCount, "ReceivePfring", "DecodePfring", "RxPFR", live_dev); if (ret != 0) { SCLogError(SC_ERR_RUNMODE, "Runmode start failed"); exit(EXIT_FAILURE); } SCLogInfo("RunModeIdsPfringWorkers initialised"); #endif /* HAVE_PFRING */ return 0; }