⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 perf-base.c

📁 著名的入侵检测系统snort的最新版本的源码
💻 C
📖 第 1 页 / 共 4 页
字号:
*/int CloseStreamSession(SFBASE *sfBase, char flags){    if (flags & SESSION_CLOSED_NORMALLY)        sfBase->iClosedSessions++;    else if (flags & SESSION_CLOSED_TIMEDOUT)        sfBase->iStreamTimeouts++;    else if (flags & SESSION_CLOSED_PRUNED)        sfBase->iPrunedSessions++;    else if (flags & SESSION_CLOSED_ASYNC)        sfBase->iDroppedAsyncSessions++;    return 0;}/***  NAME**    RemoveStreamSession****  DESCRIPTION**    Add a session count****  FORMAL INPUTS**    SFBASE * - ptr to update.****  FORMAL OUTPUTS**    int - 0 is successful*/int RemoveStreamSession(SFBASE *sfBase){    sfBase->iTotalSessions--;    sfBase->iDeletedSessions++;    return 0;}/***  NAME**    AddUDPSession****  DESCRIPTION**    Add a session count****  FORMAL INPUTS**    SFBASE * - ptr to update.****  FORMAL OUTPUTS**    int - 0 is successful*/int AddUDPSession(SFBASE *sfBase){        sfBase->iTotalUDPSessions++;    sfBase->iNewUDPSessions++;    if(sfBase->iTotalUDPSessions > sfBase->iMaxUDPSessions)        sfBase->iMaxUDPSessions = sfBase->iTotalUDPSessions;    return 0;}/***  NAME**    RemoveUDPSession****  DESCRIPTION**    Add a session count****  FORMAL INPUTS**    SFBASE * - ptr to update.****  FORMAL OUTPUTS**    int - 0 is successful*/int RemoveUDPSession(SFBASE *sfBase){    sfBase->iTotalUDPSessions--;    sfBase->iDeletedUDPSessions++;    return 0;}/***  NAME**    ProcessBaseStats****  DESCRIPTION**    Main function to process Base Stats.****  FORMAL INPUTS**    SFBASE * - ptr to update.****  FORMAL OUTPUTS**    int - 0 is successful*/int ProcessBaseStats(SFBASE *sfBase, int console, int file, FILE * fh){    SFBASE_STATS sfBaseStats;    if( console || file )    {        if(CalculateBasePerfStats(sfBase, &sfBaseStats))            return -1;    }    if( console )        DisplayBasePerfStatsConsole(&sfBaseStats, sfBase->iFlags);        if( file )        LogBasePerfStats(&sfBaseStats, fh );    return 0;}int GetProcessingTime(SYSTIMES *Systimes, SFBASE *sfBase){    int todRet = -1;    struct timeval tvTime;#ifdef LINUX_SMP    if(sfProcessProcPidStats(&(sfBase->sfProcPidStats)))        return -1;    todRet = gettimeofday(&tvTime, NULL);#else    struct rusage  rusage;    int rusageRet;#ifndef WIN32    rusageRet = getrusage(RUSAGE_SELF, &rusage);#else    rusageRet = -1;#endif  /* !WIN32 */    todRet = gettimeofday(&tvTime, NULL);    if (rusageRet < 0)    {        rusage.ru_utime.tv_sec = 0;        rusage.ru_utime.tv_usec = 0;        rusage.ru_stime.tv_sec = 0;        rusage.ru_stime.tv_usec = 0;    }    Systimes->usertime   = ((double)rusage.ru_utime.tv_sec +                           ((double)rusage.ru_utime.tv_usec * 1.0e-6)) -                           sfBase->usertime_sec;    Systimes->systemtime = ((double)rusage.ru_stime.tv_sec +                           ((double)rusage.ru_stime.tv_usec * 1.0e-6)) -                           sfBase->systemtime_sec;    Systimes->totaltime  = Systimes->usertime + Systimes->systemtime;#endif  /* LINUX_SMP */    if (todRet < 0)    {        return todRet;    }    Systimes->realtime =  ((double)tvTime.tv_sec +                           ((double)tvTime.tv_usec * 1.0e-6)) -                          sfBase->realtime_sec;    return 0;}int GetEventsPerSecond(SFBASE *sfBase, SFBASE_STATS *sfBaseStats,                        SYSTIMES *Systimes){    sfBaseStats->alerts_per_second =         (double)(pc.alert_pkts - sfBase->iAlerts) / Systimes->realtime;    sfBase->iAlerts = pc.alert_pkts;    sfBaseStats->total_sessions = sfBase->iTotalSessions;    sfBaseStats->max_sessions = sfBase->iMaxSessions;    sfBaseStats->syns_per_second =         (double)(sfBase->iSyns) / Systimes->realtime;    sfBaseStats->synacks_per_second =         (double)(sfBase->iSynAcks) / Systimes->realtime;    sfBaseStats->deleted_sessions_per_second =         (double)(sfBase->iDeletedSessions) / Systimes->realtime;    sfBaseStats->new_sessions_per_second =         (double)(sfBase->iNewSessions) / Systimes->realtime;    sfBaseStats->tcp_sessions_midstream_per_second =         (double)(sfBase->iMidStreamSessions) / Systimes->realtime;    sfBaseStats->tcp_sessions_closed_per_second =         (double)(sfBase->iClosedSessions) / Systimes->realtime;    sfBaseStats->tcp_sessions_timedout_per_second =         (double)(sfBase->iStreamTimeouts) / Systimes->realtime;    sfBaseStats->tcp_sessions_pruned_per_second =         (double)(sfBase->iPrunedSessions) / Systimes->realtime;    sfBaseStats->tcp_sessions_dropped_async_per_second =         (double)(sfBase->iDroppedAsyncSessions) / Systimes->realtime;    sfBaseStats->max_tcp_sessions_interval = sfBase->iMaxSessionsInterval;    sfBaseStats->stream_flushes_per_second =         (double)sfBase->iStreamFlushes / Systimes->realtime;    sfBaseStats->stream_faults = sfBase->iStreamFaults;    sfBaseStats->stream_timeouts = sfBase->iStreamTimeouts;    sfBaseStats->curr_tcp_sessions_initializing = sfBase->iSessionsInitializing;    sfBaseStats->curr_tcp_sessions_established = sfBase->iSessionsEstablished;    sfBaseStats->curr_tcp_sessions_closing = sfBase->iSessionsClosing;        sfBaseStats->frag_creates_per_second =         (double)sfBase->iFragCreates / Systimes->realtime;        sfBaseStats->frag_completes_per_second =         (double)sfBase->iFragCompletes / Systimes->realtime;        sfBaseStats->frag_inserts_per_second =         (double)sfBase->iFragInserts / Systimes->realtime;        sfBaseStats->frag_deletes_per_second =         (double)sfBase->iFragDeletes / Systimes->realtime;        sfBaseStats->frag_autofrees_per_second =         (double)sfBase->iFragAutoFrees / Systimes->realtime;        sfBaseStats->frag_flushes_per_second =         (double)sfBase->iFragFlushes / Systimes->realtime;    sfBaseStats->max_frags = sfBase->iMaxFrags;    sfBaseStats->current_frags = sfBase->iCurrentFrags;    sfBaseStats->frag_timeouts = sfBase->iFragTimeouts;    sfBaseStats->frag_faults = sfBase->iFragFaults;    sfBase->iSyns = 0;    sfBase->iSynAcks = 0;    sfBase->iNewSessions = 0;    sfBase->iDeletedSessions = 0;    sfBase->iStreamFlushes = 0;    sfBase->iStreamFaults = 0;    sfBase->iStreamTimeouts = 0;        sfBase->iFragCreates = 0;    sfBase->iFragCompletes = 0;    sfBase->iFragInserts = 0;    sfBase->iFragDeletes = 0;    sfBase->iFragAutoFrees = 0;    sfBase->iFragFlushes = 0;    sfBase->iFragTimeouts = 0;    sfBase->iFragFaults = 0;    sfBaseStats->total_udp_sessions = sfBase->iTotalUDPSessions;    sfBaseStats->max_udp_sessions = sfBase->iMaxUDPSessions;    sfBaseStats->deleted_udp_sessions_per_second =         (double)(sfBase->iDeletedUDPSessions) / Systimes->realtime;    sfBaseStats->new_udp_sessions_per_second =         (double)(sfBase->iNewUDPSessions) / Systimes->realtime;    sfBase->iNewUDPSessions = 0;    sfBase->iDeletedUDPSessions = 0;        sfBase->iMaxSessionsInterval = sfBase->iTotalSessions;    sfBase->iMidStreamSessions = 0;    sfBase->iClosedSessions = 0;    sfBase->iPrunedSessions = 0;    sfBase->iDroppedAsyncSessions = 0;    return 0;}    int GetPacketsPerSecond(SFBASE *sfBase, SFBASE_STATS *sfBaseStats,                        SYSTIMES *Systimes){    sfBaseStats->kpackets_per_sec.realtime   =         (double)((double)sfBase->total_packets / 1000) / Systimes->realtime;    if(sfBase->iFlags & MAX_PERF_STATS)    {        sfBaseStats->kpackets_per_sec.usertime   =             (double)((double)sfBase->total_packets / 1000) /             Systimes->usertime;        sfBaseStats->kpackets_per_sec.systemtime =             (double)((double)sfBase->total_packets / 1000) /             Systimes->systemtime;        sfBaseStats->kpackets_per_sec.totaltime  =             (double)((double)sfBase->total_packets / 1000) /             Systimes->totaltime;    }    sfBaseStats->kpackets_wire_per_sec.realtime   =         (double)((double)sfBase->total_wire_packets / 1000) / Systimes->realtime;    if(sfBase->iFlags & MAX_PERF_STATS)    {        sfBaseStats->kpackets_wire_per_sec.usertime   =             (double)((double)sfBase->total_wire_packets / 1000) /             Systimes->usertime;        sfBaseStats->kpackets_wire_per_sec.systemtime =             (double)((double)sfBase->total_wire_packets / 1000) /             Systimes->systemtime;        sfBaseStats->kpackets_wire_per_sec.totaltime  =             (double)((double)sfBase->total_wire_packets / 1000) /             Systimes->totaltime;    }    sfBaseStats->kpackets_ipfrag_per_sec.realtime   =         (double)((double)sfBase->total_ipfragmented_packets / 1000) / Systimes->realtime;    if(sfBase->iFlags & MAX_PERF_STATS)    {        sfBaseStats->kpackets_ipfrag_per_sec.usertime   =             (double)((double)sfBase->total_ipfragmented_packets / 1000) /             Systimes->usertime;        sfBaseStats->kpackets_ipfrag_per_sec.systemtime =             (double)((double)sfBase->total_ipfragmented_packets / 1000) /             Systimes->systemtime;        sfBaseStats->kpackets_ipfrag_per_sec.totaltime  =             (double)((double)sfBase->total_ipfragmented_packets / 1000) /             Systimes->totaltime;    }    sfBaseStats->kpackets_ipreass_per_sec.realtime   =         (double)((double)sfBase->total_ipreassembled_packets / 1000) / Systimes->realtime;    if(sfBase->iFlags & MAX_PERF_STATS)    {        sfBaseStats->kpackets_ipreass_per_sec.usertime   =             (double)((double)sfBase->total_ipreassembled_packets / 1000) /             Systimes->usertime;        sfBaseStats->kpackets_ipreass_per_sec.systemtime =             (double)((double)sfBase->total_ipreassembled_packets / 1000) /             Systimes->systemtime;        sfBaseStats->kpackets_ipreass_per_sec.totaltime  =             (double)((double)sfBase->total_ipreassembled_packets / 1000) /             Systimes->totaltime;    }    sfBaseStats->kpackets_rebuilt_per_sec.realtime   =         (double)((double)sfBase->total_rebuilt_packets / 1000) / Systimes->realtime;    if(sfBase->iFlags & MAX_PERF_STATS)    {        sfBaseStats->kpackets_rebuilt_per_sec.usertime   =             (double)((double)sfBase->total_rebuilt_packets / 1000) /             Systimes->usertime;        sfBaseStats->kpackets_rebuilt_per_sec.systemtime =             (double)((double)sfBase->total_rebuilt_packets / 1000) /             Systimes->systemtime;        sfBaseStats->kpackets_rebuilt_per_sec.totaltime  =             (double)((double)sfBase->total_rebuilt_packets / 1000) /             Systimes->totaltime;    }        return 0;}int GetuSecondsPerPacket(SFBASE *sfBase, SFBASE_STATS *sfBaseStats,                          SYSTIMES *Systimes){    sfBaseStats->usecs_per_packet.usertime   = (Systimes->usertime * 1.0e6) /                                               (double)sfBase->total_packets;    sfBaseStats->usecs_per_packet.systemtime = (Systimes->systemtime * 1.0e6) /                                               (double)sfBase->total_packets;    sfBaseStats->usecs_per_packet.totaltime  = (Systimes->totaltime * 1.0e6) /                                               (double)sfBase->total_packets;    sfBaseStats->usecs_per_packet.realtime   = (Systimes->realtime * 1.0e6) /                                               (double)sfBase->total_packets;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -