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

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

?? trpr.cpp

?? trpr是可以分析tcpdump和mgen日志記錄
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
/********************************************************************* * * AUTHORIZATION TO USE AND DISTRIBUTE *  * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that:  * * (1) source code distributions retain this paragraph in its entirety,  *   * (2) distributions including binary code include this paragraph in *     its entirety in the documentation or other materials provided  *     with the distribution, and  * * (3) all advertising materials mentioning features or use of this  *     software display the following acknowledgment: *  *      "This product includes software written and developed  *       by Brian Adamson and Joe Macker of the Naval Research  *       Laboratory (NRL)."  *          *  The name of NRL, the name(s) of NRL  employee(s), or any entity *  of the United States Government may not be used to endorse or *  promote  products derived from this software, nor does the  *  inclusion of the NRL written and developed software  directly or *  indirectly suggest NRL or United States  Government endorsement *  of this product. *  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ********************************************************************/ #include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <errno.h>#include <limits.h>  // for PATH_MAX#include <string.h>#include <math.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>       #include <sys/time.h>  // for gettimeofday()#include <sys/types.h>#define VERSION "1.9b9"#ifndef MIN#define MIN(X,Y) ((X<Y)?X:Y)#define MAX(X,Y) ((X>Y)?X:Y)#endif // !MINconst int MAX_LINE = 256;enum TraceFormat {TCPDUMP, DREC, NS};enum PlotMode {RATE, INTERARRIVAL, LATENCY, DROPS, LOSS, LOSS2, VELOCITY};class FastReader{    public:        enum Result {OK, ERROR, DONE, TIMEOUT};        FastReader();        FastReader::Result Read(FILE* filePtr, char* buffer, unsigned int* len,                                 double timeout = -1.0);        FastReader::Result Readline(FILE* filePtr, char* buffer, unsigned int* len,                                    double timeout = -1.0);    private:        enum {BUFSIZE = 2048};        char         savebuf[BUFSIZE];        char*        saveptr;        unsigned int savecount;};  // end class FastReaderclass Waiter{    public:        Waiter();        void Reset();        bool Wait(double seconds);                    private:        struct timeval last_time;        double excess;    };  // end class WaiterWaiter::Waiter()  :  excess(0.0){    Reset();}void Waiter::Reset(){    struct timezone tz;    gettimeofday(&last_time, &tz);    excess = 0.0;   }  // end Waiter::Reset()bool Waiter::Wait(double delay){    delay -= excess;    struct timeval timeout;    if (delay >= (double)0.0)	{	    timeout.tv_sec = (unsigned long) delay;	    timeout.tv_usec = (unsigned long)(1000000.0 * (delay - timeout.tv_sec));        }	else	{	    timeout.tv_sec = timeout.tv_usec = 0;	}    fd_set fdSet;    FD_ZERO(&fdSet);    select(0, (fd_set*)NULL, (fd_set*)NULL, (fd_set*)NULL, &timeout);        struct timeval thisTime;    struct timezone tz;    gettimeofday(&thisTime, &tz);    double actual = thisTime.tv_sec - last_time.tv_sec;    if (thisTime.tv_usec < last_time.tv_usec)        actual -= ((double)(thisTime.tv_usec - last_time.tv_usec)) * 1.0e-06;    else        actual += ((double)(thisTime.tv_usec - last_time.tv_usec)) * 1.0e-06;    excess = actual - delay;    if (excess < -2.0)    {        fprintf(stderr, "Waiter::Wait() Warning! dropping behind real time ...\n");         excess = 0.0;    }    memcpy(&last_time, &thisTime, sizeof(struct timeval));    return true;}  // end Waiter::Wait()class FlowId{    public:        FlowId() : valid(false) {}        FlowId(unsigned long x) : valid(true), value(x) {}            bool IsValid() const {return valid;}        unsigned long Value() const {return value;}        void Invalidate() {valid = false;}        operator unsigned long() const {return value;}        bool Match(unsigned long x) const;    private:        bool          valid;        unsigned long value;};  // end class FlowIdbool FlowId::Match(unsigned long x) const{        if (!valid || (x == value))        return true;    else        return false;}  // end FlowId::Match()class Address{    public:        enum Domain {IPv4, IPv6, OTHER};        Address() {addr[0] = '\0';}        Address(unsigned long value, Domain domain) {Set(value, domain);}        Address(const char* string) {Set(string);}        void Set(const char* string)        {            strncpy(addr, string, 63);            addr[63] = '\0';           }        void Set(unsigned long value, Domain domain)        {            if (IPv4 == domain)            {                unsigned char* a = (unsigned char*)&value;                sprintf(addr, "%u.%u.%u.%u", a[0], a[1], a[2], a[3]);            }            else            {                sprintf(addr, "%lu", value);                }                    }        // buf is network order IPv6 address        void SetIPv6(unsigned long* buf)        {            addr[0] = '\0';            for (unsigned int i = 0; i < 4; i++)            {                unsigned short* a = (unsigned short*)(buf+i);                 char temp[16];                sprintf(temp, "%x:%x%s", ntohs(a[0]), ntohs(a[1]),                               (i < 3) ? ":" : "");                strcat(addr, temp);            }          }        void Invalidate() {addr[0] = '\0';}        bool IsValid() const {return ('\0' != addr[0]);}                bool operator==(const Address& x) const             {return (0 == strcmp(addr, x.addr));}        void PrintDescription(FILE* f) const {fprintf(f, "%s", addr);}            private:        char  addr[64]; };  // end class Address        class PacketEvent{    public:        enum EventType {INVALID, RECEPTION, TRANSMISSION, DROP, LOSS, TIMEOUT};            PacketEvent();        ~PacketEvent();                        // Generalized tracepoint node(a,[b]) NS        class TracePoint        {            public:                TracePoint() : src_port(-1), dst_port(-1) {}                TracePoint(const Address& sa) : src_addr(sa), src_port(-1), dst_port(-1) {}                TracePoint(const Address& sa, unsigned short sp) : src_addr(sa), src_port(sp), dst_port(-1) {}                TracePoint(const Address& sa, unsigned short sp, const Address& da, unsigned short dp)                  : src_addr(sa), src_port(sp), dst_addr(da), dst_port(dp) {}                bool Match(const TracePoint& p) const;                const Address& SrcAddr() const {return src_addr;}                unsigned short SrcPort() const {return src_port;}                const Address& DstAddr() const {return dst_addr;}                unsigned short DstPort() const {return dst_port;}                bool IsValid() const {return (src_addr.IsValid() || dst_addr.IsValid());}                void Invalidate()                {                    src_addr.Invalidate();                    src_port = -1;                    dst_addr.Invalidate();                    dst_port = -1;                }                void SetSrc(const Address& srcAddr)                 {                    src_addr = srcAddr;                     src_port = -1;                }                void SetSrc(const Address& srcAddr, unsigned short srcPort)                 {                    src_addr = srcAddr;                     src_port = srcPort;                }                void SetDst(const Address& dstAddr)                 {                    dst_addr = dstAddr;                     dst_port = -1;                }                void SetDst(const Address& dstAddr, unsigned short dstPort)                 {                    dst_addr = dstAddr;                     dst_port = -1;                }                void PrintDescription(FILE* f) const                {                    src_addr.PrintDescription(f);                    if (src_port >= 0) fprintf(f, ":%d", src_port);                    fprintf(f, ", ");                    dst_addr.PrintDescription(f);                    if (dst_port >= 0) fprintf(f, ":%d", dst_port);                }                                   private:                Address  src_addr;                int      src_port;  // -1 is invalid                Address  dst_addr;                int      dst_port;  // -1 is invalid        };  // end class TracePoint                EventType Type() {return type;}        void SetType(EventType theType) {type = theType;}        double Time() {return time;}        void SetTime(double theTime) {time = theTime;}                PacketEvent::TracePoint& Link() {return link;}        void LinkClear() {link.Invalidate();}        void SetLinkSrc(const Address& srcAddr)             {link.SetSrc(srcAddr);}          void SetLinkSrc(const Address& srcAddr, unsigned short srcPort)             {link.SetSrc(srcAddr,srcPort);}        void SetLinkDst(const Address& dstAddr)             {link.SetDst(dstAddr);}        void SetLinkDst(const Address& dstAddr, unsigned short dstPort)             {link.SetDst(dstAddr, dstPort);}                const Address& SrcAddr() {return src_addr;}        void SetSrcAddr(const Address& theAddr) {src_addr = theAddr;}        unsigned short SrcPort() {return src_port;}        void SetSrcPort(unsigned short thePort) {src_port = thePort;}        const Address& DstAddr() {return dst_addr;}        void SetDstAddr(const Address& theAddr) {dst_addr = theAddr;}        unsigned short DstPort() {return dst_port;}        void SetDstPort(unsigned short thePort) {dst_port = thePort;}        const char* Protocol() {return protocol;}        bool SetProtocol(const char* name);            unsigned int Size() {return size;}        void SetSize(unsigned int theSize) {size = theSize;}        double RxTime() {return rx_time;}        void SetRxTime(double theTime) {rx_time = theTime;}        double TxTime() {return tx_time;}        void SetTxTime(double theTime) {tx_time = theTime;}        unsigned long Sequence() {return sequence;}        void SetSequence(unsigned long theSequence) {sequence = theSequence;}            unsigned long FlowId() {return flow_id.Value();}        void SetFlowId(unsigned long id) {flow_id = id;}        void SetPosition(double x, double y) {pos_x = x; pos_y = y;}        double PosX() {return pos_x;}        double PosY() {return pos_y;}            private:                   EventType	    type;               double		    time;        TracePoint      link;        Address         src_addr;  // (TBD) Use NetworkAddress class here?        int             src_port;        Address         dst_addr;        int             dst_port;        unsigned int    size;        char*		    protocol;        double		    tx_time;        double		    rx_time;        unsigned long   sequence;        ::FlowId        flow_id;        double          pos_x;  // drec GPS only        double          pos_y;  // drec GPS only        };  // end class PacketEventPacketEvent::PacketEvent(): type(INVALID), time(-1.0), src_port(-1), dst_port(-1), size(0), protocol(NULL),  pos_x(999.0), pos_y(999.0){}PacketEvent::~PacketEvent(){    if (protocol) delete protocol;}bool PacketEvent::SetProtocol(const char* name){    if (protocol) delete protocol;    unsigned int len = name ? strlen(name) + 1 : 0;    if (len)    {        protocol = new char[len];        if (protocol)        {            strcpy(protocol, name);            return true;        }        else        {            perror("trpr: PacketEvent::SetProtocol() \"new()\" error");            return false;        }    }        else    {        protocol = NULL;        return true;    }}  // end PacketEvent::SetProtocol()bool PacketEvent::TracePoint::Match(const TracePoint& p) const{    if ((!src_addr.IsValid() || src_addr == p.SrcAddr()) &&        ((-1 == src_port) || (src_port == p.SrcPort())) &&        (!dst_addr.IsValid() || dst_addr == p.DstAddr()) &&        ((-1 == dst_port) || (dst_port == p.DstPort())))    {        fprintf(stderr, "");        return true;    }    else    {        return false;    }   }  // end PacketEvent::TracePoint::Match()class EventParser{    public:        virtual bool GetNextPacketEvent(FILE*           filePtr,                                         PacketEvent*    theEvent,                                         double          timeout = -1.0) = 0;            protected:        FastReader	reader;        };  // end class EventParserclass NsEventParser : public EventParser{    public:        enum NodeType {AGT, RTR, MAC};        bool GetNextPacketEvent(FILE*           filePtr,                                 PacketEvent*    theEvent,                                 double          timeout = -1.0);        };  // end class EventParserclass TcpdumpEventParser : public EventParser{    public:        bool GetNextPacketEvent(FILE*           filePtr,                                 PacketEvent*    theEvent,                                 double          timeout = -1.0);        unsigned int PackHexLine(char* text, char* buf, unsigned int buflen);        unsigned int Version(const char* hdr) const            {  return (((unsigned char)hdr[0] >> 4 ) & 0x0f);}        unsigned int HeaderLength(const char* hdr) const            {	            if(Version(hdr) == 4)	                return 4 * (((unsigned char)hdr[0]) & 0x0f);                else return 40;            }        unsigned int PayloadLength(const char* hdr)            {return (256 * (unsigned char)hdr[4] + (unsigned char)hdr[5]);}        unsigned  int TotalLength(const char* hdr)        {	      if(Version(hdr) == 4)                return (256*((unsigned char)hdr[2]) + ((unsigned char)hdr[3]));	      else		    return (PayloadLength(hdr) + 40);        }        unsigned char Protocol(char* hdr)        {            if(Version(hdr) == 4)                return ((unsigned char)hdr[9]);            else                return ((unsigned char)hdr[6]);	    }        

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩国产欧美在线视频| 久久蜜桃一区二区| 亚洲综合自拍偷拍| 欧美在线免费视屏| 午夜影院久久久| 制服丝袜激情欧洲亚洲| 久久精品免费观看| 欧美高清一级片在线观看| 99久久精品国产一区| 一区二区三区成人| 日韩一区二区高清| 成人综合在线视频| 一区二区三区中文字幕精品精品| 欧美精品在线观看一区二区| 久久精品国产澳门| 国产精品乱码一区二区三区软件| 色噜噜狠狠色综合中国| 五月天亚洲婷婷| 26uuu精品一区二区| 99精品欧美一区二区三区小说| 亚洲精品久久嫩草网站秘色| 日韩一区二区电影网| 大白屁股一区二区视频| 亚洲最新在线观看| 欧美精品一区二区三区在线 | 久久久一区二区三区捆绑**| 成人免费观看男女羞羞视频| 亚洲综合清纯丝袜自拍| 精品国产网站在线观看| 91麻豆国产香蕉久久精品| 免费欧美日韩国产三级电影| 欧美激情中文不卡| 欧美一卡二卡在线| www.日韩av| 久久av老司机精品网站导航| 亚洲精品视频在线观看免费| 欧美va在线播放| 色婷婷精品久久二区二区蜜臂av| 久久精品国产亚洲aⅴ| 亚洲人xxxx| 337p粉嫩大胆色噜噜噜噜亚洲| 91蜜桃婷婷狠狠久久综合9色| 精品一区二区三区在线播放| 夜夜夜精品看看| 中文成人综合网| 日韩欧美国产1| 在线观看一区日韩| 99久久99久久精品免费看蜜桃| 男人的j进女人的j一区| 一区二区国产视频| 一区精品在线播放| 久久青草欧美一区二区三区| 欧美精品自拍偷拍| 欧美亚洲综合另类| 91丝袜美女网| www.av精品| 成人妖精视频yjsp地址| 国内不卡的二区三区中文字幕| 亚洲bt欧美bt精品| 亚洲国产精品一区二区尤物区| 亚洲欧美色图小说| 国产精品久久久久影院老司| 国产亚洲精品超碰| ww久久中文字幕| 精品福利av导航| 亚洲精品一区在线观看| 欧美一级艳片视频免费观看| 欧美日韩一区二区不卡| 91麻豆视频网站| 91欧美激情一区二区三区成人| 成人黄色网址在线观看| 福利视频网站一区二区三区| 国产麻豆成人精品| 国产一区二区三区在线看麻豆| 免费高清不卡av| 美女视频一区二区| 久久精品久久99精品久久| 日韩和欧美一区二区| 香蕉影视欧美成人| 蜜桃视频在线观看一区二区| 日韩av电影免费观看高清完整版在线观看 | 欧美日韩一区二区在线观看| 欧美亚洲国产一区二区三区va | 三级欧美在线一区| 人禽交欧美网站| 久久精品99国产精品日本| 狠狠色综合播放一区二区| 狠狠色丁香婷综合久久| 国产在线精品一区二区三区不卡| 国产一区不卡在线| 国产精品系列在线播放| 成人激情黄色小说| 色综合咪咪久久| 欧洲国内综合视频| 欧美肥大bbwbbw高潮| 日韩欧美一区中文| 久久精品欧美一区二区三区麻豆| 亚洲国产精品t66y| 一区二区免费在线播放| 天堂蜜桃一区二区三区| 裸体健美xxxx欧美裸体表演| 国产精品一色哟哟哟| 成人黄色小视频在线观看| 在线免费观看日韩欧美| 91精品综合久久久久久| 久久久国产精华| 亚洲色图第一区| 午夜免费欧美电影| 国产精品91xxx| 色欧美日韩亚洲| 日韩精品专区在线| 亚洲男人的天堂网| 免费在线一区观看| 不卡一区二区中文字幕| 欧美伦理视频网站| 欧美精彩视频一区二区三区| 最好看的中文字幕久久| 日日噜噜夜夜狠狠视频欧美人 | 蜜臀av一区二区三区| 国产91丝袜在线18| 欧美日韩五月天| 久久精品视频一区二区| 亚洲成av人片在线| 成人午夜碰碰视频| 日韩欧美一级片| 亚洲视频图片小说| 激情五月播播久久久精品| 91福利在线观看| 久久精品视频免费观看| 首页亚洲欧美制服丝腿| 菠萝蜜视频在线观看一区| 欧美日韩极品在线观看一区| 337p日本欧洲亚洲大胆色噜噜| 一区二区三区日韩精品视频| 国产一区二区导航在线播放| 在线国产电影不卡| 国产精品入口麻豆原神| 久久精品国产秦先生| 欧美色图在线观看| 亚洲三级电影全部在线观看高清| 精品在线播放免费| 欧美日韩午夜影院| 亚洲精品日日夜夜| gogogo免费视频观看亚洲一| 精品国产91久久久久久久妲己| 天天影视网天天综合色在线播放 | 国产精品网站在线观看| 激情综合色丁香一区二区| 欧美精品日韩综合在线| 亚洲一区二区视频在线| 91色视频在线| 综合自拍亚洲综合图不卡区| 成人精品小蝌蚪| 国产午夜精品一区二区| 久久99精品国产| 日韩网站在线看片你懂的| 日韩激情在线观看| 欧美精品日韩一本| 五月综合激情网| 欧美亚洲一区二区三区四区| 一区二区三区在线免费播放| www.日韩精品| 亚洲色图欧洲色图| 91福利精品视频| 一区二区三区在线影院| 欧美系列日韩一区| 亚洲二区视频在线| 91麻豆精品国产自产在线| 爽爽淫人综合网网站| 欧美精品久久99久久在免费线| 亚洲不卡一区二区三区| 欧美久久一二区| 日韩电影一区二区三区四区| 欧美精品高清视频| 麻豆一区二区99久久久久| 精品动漫一区二区三区在线观看| 激情小说欧美图片| 欧美韩国日本一区| 99re视频精品| 一区二区三区毛片| 欧美狂野另类xxxxoooo| 久久精品国内一区二区三区| 精品1区2区在线观看| 成人一区二区三区视频在线观看 | 韩国视频一区二区| 亚洲国产高清不卡| 99re热视频这里只精品| 偷拍一区二区三区| 久久老女人爱爱| 色成年激情久久综合| 亚洲成人黄色影院| 欧美电影免费观看高清完整版| 国产精品一级片在线观看| 亚洲欧洲精品一区二区精品久久久| 色哟哟一区二区| 奇米综合一区二区三区精品视频 | 国产精品美女久久久久av爽李琼| 91视频.com| 青草国产精品久久久久久| 国产精品女主播在线观看|