亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? spp_stream5.c

?? 著名的入侵檢測系統snort的最新版本的源碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* $Id$ *//**************************************************************************** * * Copyright (C) 2005-2007 Sourcefire, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License Version 2 as * published by the Free Software Foundation.  You may not use, modify or * distribute this program under any other version of the GNU General * Public License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ****************************************************************************//** * @file    spp_stream5.c * @author  Martin Roesch <roesch@sourcefire.com> *         Steven Sturges <ssturges@sourcefire.com> * @date    19 Apr 2005 * * @brief   You can never have too many stream reassemblers... *//* * Copyright (C) 2004-2005 Sourcefire, Inc. *//*  I N C L U D E S  ************************************************/#ifdef HAVE_CONFIG_H#include "config.h"#endif#include <stdio.h>#ifndef WIN32#include <sys/time.h>       /* struct timeval */#endif#include <sys/types.h>      /* u_int*_t */#include "snort.h"#include "bounds.h"#include "util.h"#include "debug.h"#include "plugbase.h"#include "spp_stream5.h"#include "stream_api.h"#include "stream5_common.h"#include "snort_stream5_session.h"#include "snort_stream5_tcp.h"#include "snort_stream5_udp.h"#include "snort_stream5_icmp.h"#include "checksum.h"#include "mstring.h"#include "parser/IpAddrSet.h"#include "decode.h"#include "detect.h"#include "generators.h"#include "event_queue.h"#include "stream_ignore.h"#include "stream_api.h"#include "perf.h"#include "ipv6_port.h"#ifdef TARGET_BASED#include "sftarget_protocol_reference.h"#include "sftarget_hostentry.h"#endif#include "profiler.h"#ifdef PERF_PROFILINGPreprocStats s5PerfStats;extern PreprocStats s5TcpPerfStats;extern PreprocStats s5UdpPerfStats;extern PreprocStats s5IcmpPerfStats;#endifextern OptTreeNode *otn_tmp;/*  M A C R O S  **************************************************//* default limits */#define S5_DEFAULT_PRUNE_QUANTA  30       /* seconds to timeout a session */#define S5_DEFAULT_MEMCAP        8388608  /* 8MB */#define S5_RIDICULOUS_HI_MEMCAP  1024*1024*1024 /* 1GB */#define S5_RIDICULOUS_LOW_MEMCAP 32768    /* 32k*/#define S5_DEFAULT_MIN_TTL       1        /* default for min TTL */#define S5_DEFAULT_TTL_LIMIT     5        /* default for TTL Limit */#define S5_RIDICULOUS_MAX_SESSIONS 1024*1028 /* 1 million sessions */#define S5_DEFAULT_MAX_TCP_SESSIONS 262144 /* 256k TCP sessions by default */#define S5_DEFAULT_MAX_UDP_SESSIONS 131072 /* 128k UDP sessions by default */#define S5_DEFAULT_MAX_ICMP_SESSIONS 65536 /* 64k ICMP sessions by default *//*  G L O B A L S  **************************************************/Stream5GlobalConfig s5_global_config;static char s5_global_config_complete = 0;static char s5_process_registered = 0;u_int32_t firstPacketTime = 0;Stream5Stats s5stats;MemPool s5FlowMempool;/* Define this locally when Flow preprocessor has actually been removed */#ifdef FLOWPP_IS_EIGHTYSIXEDunsigned int giFlowbitSize = 64;#elseextern unsigned int giFlowbitSize;//#include "flow.h"#endif/*  P R O T O T Y P E S  ********************************************/static void Stream5GlobalInit(char *);static void Stream5ParseGlobalArgs(char *);static void Stream5PolicyInitTcp(char *);static void Stream5PolicyInitUdp(char *);static void Stream5PolicyInitIcmp(char *);static void Stream5Restart(int, void *);static void Stream5CleanExit(int, void *);static void Stream5VerifyConfig(void);static void Stream5PrintGlobalConfig();static void Stream5PrintStats(int);static void Stream5Process(Packet *p, void *context);static INLINE int IsEligible(Packet *p);/*  S T R E A M  A P I **********************************************/static int Stream5MidStreamDropAlert() { return s5_global_config.flags & STREAM5_CONFIG_MIDSTREAM_DROP_NOALERT; }static void Stream5UpdateDirection(                    void * ssnptr,                    char dir,                    ip_p ip,                    u_int16_t port);static u_int32_t Stream5GetPacketDirection(                    Packet *p);static void Stream5StopInspection(                    void * ssnptr,                    Packet *p,                    char dir,                    int32_t bytes,                    int response);static int Stream5IgnoreChannel(                    ip_p srcIP,                    u_int16_t srcPort,                    ip_p dstIP,                    u_int16_t dstPort,                    char protocol,                    char direction,                    char flags);static void Stream5ResumeInspection(                    void *ssnptr,                    char dir);static void Stream5DropTraffic(                    void *ssnptr,                    char dir);static void Stream5DropPacket(                    Packet *p);static void Stream5SetApplicationData(                    void *ssnptr,                    u_int32_t protocol,                    void *data,                    StreamAppDataFree free_func);static void *Stream5GetApplicationData(                    void *ssnptr,                    u_int32_t protocol);static u_int32_t Stream5SetSessionFlags(                    void *ssnptr,                    u_int32_t flags);static u_int32_t Stream5GetSessionFlags(void *ssnptr);static int Stream5AlertFlushStream(Packet *p);static int Stream5ResponseFlushStream(Packet *p);static int Stream5AddSessionAlert(void *ssnptr,                                   Packet *p,                                  u_int32_t gid,                                  u_int32_t sid);static int Stream5CheckSessionAlert(void *ssnptr,                                    Packet *p,                                    u_int32_t gid,                                    u_int32_t sid);static char Stream5SetReassembly(void *ssnptr,                                    u_int8_t flush_policy,                                    char dir,                                    char flags);static char Stream5GetReassemblyDirection(void *ssnptr);static char Stream5GetReassemblyFlushPolicy(void *ssnptr, char dir);static char Stream5IsStreamSequenced(void *ssnptr, char dir);static int Stream5GetRebuiltPackets(                            Packet *p,                            PacketIterator callback,                            void *userdata);static StreamFlowData *Stream5GetFlowData(Packet *p);#ifdef TARGET_BASEDstatic int16_t Stream5GetApplicationProtocolId(void *ssnptr);static int16_t Stream5SetApplicationProtocolId(void *ssnptr, int16_t id);#endifStreamAPI s5api = {    STREAM_API_VERSION5,    Stream5MidStreamDropAlert,    Stream5UpdateDirection,    Stream5GetPacketDirection,    Stream5StopInspection,    Stream5IgnoreChannel,    Stream5ResumeInspection,    Stream5DropTraffic,    Stream5DropPacket,    Stream5SetApplicationData,    Stream5GetApplicationData,    Stream5SetSessionFlags,    Stream5GetSessionFlags,    Stream5AlertFlushStream,    Stream5ResponseFlushStream,    Stream5GetRebuiltPackets,    Stream5AddSessionAlert,    Stream5CheckSessionAlert,    Stream5GetFlowData,    Stream5SetReassembly,    Stream5GetReassemblyDirection,    Stream5GetReassemblyFlushPolicy,    Stream5IsStreamSequenced#ifdef TARGET_BASED    ,    Stream5GetApplicationProtocolId,    Stream5SetApplicationProtocolId#endif            /* More to follow */};void SetupStream5(){    RegisterPreprocessor("stream5_global", Stream5GlobalInit);    RegisterPreprocessor("stream5_tcp", Stream5PolicyInitTcp);    RegisterPreprocessor("stream5_udp", Stream5PolicyInitUdp);    RegisterPreprocessor("stream5_icmp", Stream5PolicyInitIcmp);    DEBUG_WRAP(DebugMessage(DEBUG_STREAM, "Preprocessor stream5 is setup\n"););}void Stream5GlobalInit(char *args){    if (s5_global_config_complete)    {        FatalError("%s(%d) ==> Cannot duplicate Stream5 global "                   "configuration\n", file_name, file_line);    }    if (stream_api == NULL)        stream_api = &s5api;    else        FatalError("Cannot use both Stream4 & Stream5 simultaneously\n");    s5_global_config.track_tcp_sessions = S5_TRACK_YES;    s5_global_config.max_tcp_sessions = S5_DEFAULT_MAX_TCP_SESSIONS;    s5_global_config.track_udp_sessions = S5_TRACK_YES;    s5_global_config.max_udp_sessions = S5_DEFAULT_MAX_UDP_SESSIONS;    s5_global_config.track_icmp_sessions = S5_TRACK_NO;    s5_global_config.max_icmp_sessions = S5_DEFAULT_MAX_ICMP_SESSIONS;    s5_global_config.memcap = S5_DEFAULT_MEMCAP;    s5_global_config.mem_in_use = 0;    Stream5ParseGlobalArgs(args);#ifdef PERF_PROFILING    RegisterPreprocessorProfile("s5", &s5PerfStats, 0, &totalPerfStats);    RegisterPreprocessorProfile("s5tcp", &s5TcpPerfStats, 1, &s5PerfStats);    RegisterPreprocessorProfile("s5udp", &s5UdpPerfStats, 1, &s5PerfStats);    RegisterPreprocessorProfile("s5icmp", &s5IcmpPerfStats, 1, &s5PerfStats);#endif    Stream5InitTcp();    Stream5InitUdp();    Stream5InitIcmp();    snort_runtime.capabilities.stateful_inspection = 1;    Stream5PrintGlobalConfig();    AddFuncToPreprocCleanExitList(Stream5CleanExit, NULL, PRIORITY_FIRST, PP_STREAM5);    AddFuncToPreprocRestartList(Stream5Restart, NULL, PRIORITY_FIRST, PP_STREAM5);    AddFuncToConfigCheckList(Stream5VerifyConfig);    RegisterPreprocStats("stream5", Stream5PrintStats);    s5_global_config_complete = 1;    pv.stateful = 1;    return;}static void Stream5ParseGlobalArgs(char *args){    char **toks;    int num_toks;    int i;    char *index;    char **stoks;    int s_toks;    char *endPtr = NULL;#define MAX_TCP 0x01#define MAX_UDP 0x02#define MAX_ICMP 0x04    char max_set = 0;    if(args != NULL && strlen(args) != 0)    {        toks = mSplit(args, ",", 12, &num_toks, 0);        i = 0;        while(i < num_toks)        {            index = toks[i];            while(isspace((int)*index)) index++;            stoks = mSplit(index, " ", 4, &s_toks, 0);            if (s_toks == 0)            {                FatalError("%s(%d) => Missing parameter in Stream5 Global config.\n",                    file_name, file_line);            }            if(!strcasecmp(stoks[0], "memcap"))            {                if (stoks[1])                {                    s5_global_config.memcap = strtoul(stoks[1], &endPtr, 10);                }                if (!stoks[1] || (endPtr == &stoks[1][0]))                {                    FatalError("%s(%d) => Invalid memcap in config file.  Requires integer parameter.\n",                                file_name, file_line);                }                if ((s5_global_config.memcap > S5_RIDICULOUS_HI_MEMCAP) ||                    (s5_global_config.memcap < S5_RIDICULOUS_LOW_MEMCAP))                {                    FatalError("%s(%d) => 'memcap %s' invalid: value must be "                            "between %d and %d bytes\n",                            file_name, file_line,                            stoks[1], S5_RIDICULOUS_LOW_MEMCAP,                            S5_RIDICULOUS_HI_MEMCAP);                }            }            else if(!strcasecmp(stoks[0], "max_tcp"))            {                if (stoks[1])                {                    s5_global_config.max_tcp_sessions = strtoul(stoks[1], &endPtr, 10);                    if (s5_global_config.track_tcp_sessions == S5_TRACK_NO)                    {                        if (s5_global_config.max_tcp_sessions != 0)                        {                            FatalError("%s(%d) => max_tcp conflict: not "                                    "tracking TCP sessions\n",                                    file_name, file_line);                        }                    }                    else                    {                        if ((s5_global_config.max_tcp_sessions > S5_RIDICULOUS_MAX_SESSIONS) ||                            (s5_global_config.max_tcp_sessions == 0))                        {                            FatalError("%s(%d) => 'max_tcp %d' invalid: value must be "                                    "between 1 and %d sessions\n",                                    file_name, file_line,                                    s5_global_config.max_tcp_sessions,                                    S5_RIDICULOUS_MAX_SESSIONS);                        }                    }                }                if (!stoks[1] || (endPtr == &stoks[1][0]))                {                    FatalError("%s(%d) => Invalid max_tcp in config file.  Requires integer parameter.\n",                                file_name, file_line);                }                max_set |= MAX_TCP;            }            else if(!strcasecmp(stoks[0], "track_tcp"))            {                if (stoks[1])                {                    if(!strcasecmp(stoks[1], "no"))                        s5_global_config.track_tcp_sessions = S5_TRACK_NO;                    else                        s5_global_config.track_tcp_sessions = S5_TRACK_YES;                }                else                {                    FatalError("%s(%d) => 'track_udp' missing option\n",                        file_name, file_line);                }                if ((max_set & MAX_TCP) &&                     (s5_global_config.track_tcp_sessions == S5_TRACK_NO))                {                    FatalError("%s(%d) => max_tcp/track_tcp conflict: not "                                    "tracking TCP sessions\n",                                    file_name, file_line);                }            }            else if(!strcasecmp(stoks[0], "max_udp"))            {                if (stoks[1])                {                    s5_global_config.max_udp_sessions = strtoul(stoks[1], &endPtr, 10);                    if (s5_global_config.track_udp_sessions == S5_TRACK_NO)                    {                        if (s5_global_config.max_udp_sessions != 0)                        {                            FatalError("%s(%d) => max_udp conflict: not "                                    "tracking UDP sessions\n",                                    file_name, file_line);                        }                    }                    else                    {                        if ((s5_global_config.max_udp_sessions > S5_RIDICULOUS_MAX_SESSIONS) ||                            (s5_global_config.max_udp_sessions == 0))                        {                            FatalError("%s(%d) => 'max_udp %d' invalid: value must be "                                    "between 1 and %d sessions\n",                                    file_name, file_line,                                    s5_global_config.max_udp_sessions,                                    S5_RIDICULOUS_MAX_SESSIONS);                        }                    }                }                if (!stoks[1] || (endPtr == &stoks[1][0]))                {                    FatalError("%s(%d) => Invalid max_udp in config file.  Requires integer parameter.\n",                                file_name, file_line);                }                max_set |= MAX_UDP;            }            else if(!strcasecmp(stoks[0], "track_udp"))            {                if (stoks[1])                {                    if(!strcasecmp(stoks[1], "no"))                        s5_global_config.track_udp_sessions = S5_TRACK_NO;                    else                        s5_global_config.track_udp_sessions = S5_TRACK_YES;                }                else                {                    FatalError("%s(%d) => 'track_udp' missing option\n",                        file_name, file_line);                }                if ((max_set & MAX_UDP) &&                     (s5_global_config.track_udp_sessions == S5_TRACK_NO))                {                    FatalError("%s(%d) => max_udp/track_udp conflict: not "                                    "tracking UDP sessions\n",                                    file_name, file_line);                }            }            else if(!strcasecmp(stoks[0], "max_icmp"))            {                if (stoks[1])                {                    s5_global_config.max_icmp_sessions = strtoul(stoks[1], &endPtr, 10);                    if (s5_global_config.track_icmp_sessions == S5_TRACK_NO)                    {                        if (s5_global_config.max_icmp_sessions != 0)                        {                            FatalError("%s(%d) => max_icmp conflict: not "                                    "tracking ICMP sessions\n",                                    file_name, file_line);                        }                    }                    else                    {                        if ((s5_global_config.max_icmp_sessions > S5_RIDICULOUS_MAX_SESSIONS) ||                            (s5_global_config.max_icmp_sessions == 0))                        {                            FatalError("%s(%d) => 'max_icmp %d' invalid: value must be "                                    "between 1 and %d sessions\n",

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国欧美国产一区| 夜夜嗨av一区二区三区四季av| 亚洲国产成人精品视频| 91首页免费视频| 亚洲欧美日韩国产另类专区 | 欧美一区二区三区系列电影| 亚洲五码中文字幕| 日韩欧美在线影院| 理论电影国产精品| 88在线观看91蜜桃国自产| 日韩福利电影在线| 久久久久久久久伊人| 99久久99久久久精品齐齐| 亚洲综合999| 欧美tk—视频vk| 色婷婷久久久综合中文字幕| 日本va欧美va瓶| 欧美国产亚洲另类动漫| 一本大道久久a久久综合| 青青草国产成人99久久| 久久精品男人天堂av| 欧美色综合天天久久综合精品| 美女一区二区视频| 亚洲一区二区av在线| 中文欧美字幕免费| 欧美不卡123| 欧美久久免费观看| 色94色欧美sute亚洲线路一久| 经典一区二区三区| 美女性感视频久久| 亚洲成人av电影在线| 亚洲欧美欧美一区二区三区| 国产精品美女一区二区在线观看| 欧美一区午夜视频在线观看| 欧美在线观看视频一区二区| 99久久免费国产| 91美女在线视频| 91在线精品一区二区| 成人一区二区视频| eeuss鲁片一区二区三区在线观看| 国模套图日韩精品一区二区| 精品一区二区在线视频| 久久99精品久久久久久国产越南| 五月天一区二区三区| 一区二区三区影院| 婷婷综合五月天| 国产精品入口麻豆原神| 久久伊人中文字幕| 国产视频一区二区在线观看| 国产精品久久福利| 亚洲少妇中出一区| 中文字幕佐山爱一区二区免费| 欧美三日本三级三级在线播放| 成人综合婷婷国产精品久久 | 日韩不卡免费视频| 久久99日本精品| 91免费精品国自产拍在线不卡| 91亚洲精品久久久蜜桃网站| 欧美日韩国产影片| 国产午夜精品理论片a级大结局 | 久久综合精品国产一区二区三区| www国产成人免费观看视频 深夜成人网| 欧美一区二区三区爱爱| 中文av一区二区| 国产一区二区三区久久久| 在线观看中文字幕不卡| 精品国产不卡一区二区三区| 亚洲影院理伦片| 成av人片一区二区| 久久色.com| 日本中文一区二区三区| 韩国av一区二区三区| 337p亚洲精品色噜噜狠狠| 亚洲欧美激情一区二区| 成人av影院在线| 中文字幕免费在线观看视频一区| 极品少妇一区二区三区精品视频| 欧美色爱综合网| 亚洲最快最全在线视频| 91国偷自产一区二区三区观看| 国产精品国产三级国产专播品爱网| 精品一区二区影视| 久久久综合精品| 成人黄色网址在线观看| 国产精品第13页| 日本精品视频一区二区| 午夜精品久久久久| 日韩美女视频一区二区在线观看| 五月天一区二区| 久久久久久久久岛国免费| 国产毛片精品视频| 亚洲欧美一区二区久久| 欧美日韩综合不卡| 精品一区二区av| 亚洲三级在线观看| 欧美精品18+| 国产一区二区主播在线| 国产亚洲va综合人人澡精品| 色婷婷亚洲综合| 韩国精品免费视频| 一区二区三区国产豹纹内裤在线| 欧美日韩精品电影| 成人网男人的天堂| 麻豆91在线播放免费| 国产亚洲精品超碰| 欧美肥妇free| 色先锋aa成人| 不卡电影免费在线播放一区| 久久丁香综合五月国产三级网站| 一区二区三区四区高清精品免费观看 | 秋霞午夜鲁丝一区二区老狼| 丰满放荡岳乱妇91ww| 中文无字幕一区二区三区| 国产精品18久久久久久vr| 日韩高清国产一区在线| 亚洲日本中文字幕区| 久久婷婷色综合| 3d成人动漫网站| 色欧美乱欧美15图片| 韩国三级电影一区二区| 久久精品国产亚洲aⅴ| 亚洲自拍偷拍av| 亚洲视频在线一区观看| 久久免费视频色| 日韩欧美123| 欧美日韩精品电影| 欧美老人xxxx18| 欧美日韩一区二区三区不卡| 一本大道综合伊人精品热热| av动漫一区二区| 国产精品66部| 久久精品国产免费| 国产精品原创巨作av| 激情成人综合网| 免费成人在线网站| 亚洲国产精品久久人人爱| 亚洲人成影院在线观看| 国产精品理论片| 亚洲欧美在线aaa| 日韩欧美国产一区在线观看| 5566中文字幕一区二区电影| 欧美r级电影在线观看| 精品国产乱码久久久久久夜甘婷婷| 777奇米成人网| 久久久久国产精品厨房| 国产精品久久久久久久第一福利| 久久精品人人做人人综合 | 欧美日韩精品一区二区三区| 91国在线观看| 精品日韩欧美一区二区| 久久综合资源网| 亚洲免费大片在线观看| 一级女性全黄久久生活片免费| 日韩影院精彩在线| 亚洲与欧洲av电影| 狠狠色综合日日| 色综合久久久久久久久| 欧美四级电影网| 久久久久久99精品| 国产欧美精品一区| 无码av中文一区二区三区桃花岛| 日本欧美加勒比视频| 成人激情动漫在线观看| 99久久精品情趣| 日韩一区二区三区在线| 国产精品伦理在线| 亚洲精品久久久蜜桃| 午夜欧美在线一二页| 成人综合婷婷国产精品久久| 91国偷自产一区二区开放时间 | 在线观看亚洲a| 日韩一区二区不卡| 亚洲免费毛片网站| 亚洲成av人**亚洲成av**| 风流少妇一区二区| 欧美一区二区三区在线| 中文字幕不卡三区| 久久99精品国产麻豆不卡| 99久久精品久久久久久清纯| 精品日韩99亚洲| 亚洲综合丝袜美腿| 99久久综合色| 精品国产免费人成电影在线观看四季 | 中文字幕精品综合| 奇米精品一区二区三区四区| 不卡影院免费观看| 久久九九国产精品| 午夜欧美视频在线观看| 日本精品一级二级| 国产三级一区二区三区| 韩国中文字幕2020精品| 欧美精品一二三| 一区二区三区在线观看动漫| av在线播放不卡| 久久久久久夜精品精品免费| 免费观看91视频大全| 欧美性猛片aaaaaaa做受| 一区二区在线观看不卡| 夜夜嗨av一区二区三区网页| 91日韩精品一区|