美文网首页
suricata运行模式

suricata运行模式

作者: lx_jian | 来源:发表于2019-08-26 12:02 被阅读0次

1.与运行模式相关数据结构

typedef struct RunMode_ {

    /* the runmode type */

    int runmode;

    const char *name;

    const char *description;

    /* runmode function */

    int (*RunModeFunc)(void);

} RunMode;

typedef struct RunModes_ {

    int no_of_runmodes;

    RunMode *runmodes;

} RunModes;

static RunModes runmodes[RUNMODE_USER_MAX];

/* Run mode */

enum RunModes {

    RUNMODE_UNKNOWN = 0,

    RUNMODE_PCAP_DEV,

    RUNMODE_PCAP_FILE,

    RUNMODE_PFRING,

    RUNMODE_NFQ,

    RUNMODE_NFLOG,

    RUNMODE_IPFW,

    RUNMODE_ERF_FILE,

    RUNMODE_DAG,

    RUNMODE_AFP_DEV,

    RUNMODE_NETMAP,

    RUNMODE_TILERA_MPIPE,

    RUNMODE_UNITTEST,

    RUNMODE_NAPATECH,

    RUNMODE_UNIX_SOCKET,

    RUNMODE_WINDIVERT,

    RUNMODE_USER_MAX, /* Last standard running mode */

    RUNMODE_LIST_KEYWORDS,

    RUNMODE_LIST_APP_LAYERS,

    RUNMODE_LIST_RUNMODES,

    RUNMODE_PRINT_VERSION,

    RUNMODE_PRINT_BUILDINFO,

    RUNMODE_PRINT_USAGE,

    RUNMODE_DUMP_CONFIG, /*将从配置文件加载的配置转储到终端并退出*/

    RUNMODE_CONF_TEST,

    RUNMODE_LIST_UNITTEST,

    RUNMODE_ENGINE_ANALYSIS,

#ifdef OS_WIN32

    RUNMODE_INSTALL_SERVICE,

    RUNMODE_REMOVE_SERVICE,

    RUNMODE_CHANGE_SERVICE_PARAMS,

#endif

    RUNMODE_MAX,

};

2.运行模式注册

void RunModeRegisterRunModes(void)

{

    memset(runmodes, 0, sizeof(runmodes));

    RunModeIdsPcapRegister();

    RunModeFilePcapRegister();

    RunModeIdsPfringRegister();

    RunModeIpsNFQRegister();

    RunModeIpsIPFWRegister();

    RunModeErfFileRegister();

    RunModeErfDagRegister();

    RunModeNapatechRegister();

    RunModeIdsAFPRegister();

    RunModeIdsNetmapRegister();

    RunModeIdsNflogRegister();

    RunModeTileMpipeRegister();

    RunModeUnixSocketRegister();

    RunModeIpsWinDivertRegister();

#ifdef UNITTESTS

    UtRunModeRegister();

#endif

    return;

}

这里以RunModeIdsPcapRegister()注册为例进行说明:

void RunModeIdsPcapRegister(void)

{

    RunModeRegisterNewRunMode(RUNMODE_PCAP_DEV, "single",

                              "Single threaded pcap live mode",

                              RunModeIdsPcapSingle);

    default_mode = "autofp";

    RunModeRegisterNewRunMode(RUNMODE_PCAP_DEV, "autofp",

                              "Multi threaded pcap live mode.  Packets from "

                              "each flow are assigned to a single detect thread, "

                              "unlike \"pcap_live_auto\" where packets from "

                              "the same flow can be processed by any detect "

                              "thread",

                              RunModeIdsPcapAutoFp);

    RunModeRegisterNewRunMode(RUNMODE_PCAP_DEV, "workers",

                              "Workers pcap live mode, each thread does all"

                              " tasks from acquisition to logging",

                              RunModeIdsPcapWorkers);

    return;

}

主要注册函数为RunModeRegisterNewRunMode,该函数接收四个参数:

runmode :运行模式。

name :此特定运行模式类型的自定义模式。在每个运行模式类型中,每个自定义名称都是主键(single/autofp/worker)。

description: 此运行模式的说明。

RunModeFunc: 要为此运行模式运行的函数。

相关文章

网友评论

      本文标题:suricata运行模式

      本文链接:https://www.haomeiwen.com/subject/erdrectx.html