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

📄 ftlib.h

📁 netflow,抓包
💻 H
📖 第 1 页 / 共 5 页
字号:
/* * Copyright (c) 2001 Mark Fullmer and The Ohio State University * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * *      $Id: ftlib.h,v 1.87 2003/04/03 15:06:25 maf Exp $ */#ifndef FTLIB_H#define FTLIB_H#include <sys/types.h>#include <sys/time.h>#include <sys/socket.h>#include <sys/uio.h>#include <netinet/in_systm.h>#include <netinet/in.h>#include <netinet/ip.h>#include <netinet/udp.h>#include <arpa/nameser.h>#include <sys/resource.h>#include <stdio.h>#include <zlib.h>#ifndef BIG_ENDIAN#define BIG_ENDIAN 4321#endif#ifndef LITTLE_ENDIAN#define LITTLE_ENDIAN 1234#endif#ifndef BYTE_ORDER  #define BYTE_ORDER BIG_ENDIAN#endif#define SWAPINT32(y) y = \((((y)&0xff)<<24) | (((y)&0xff00)<<8) | (((y)&0xff0000)>>8) | (((y)>>24)&0xff));#define SWAPINT16(y) y = \    ( (((y)&0xff)<<8) | (((y)&0xff00)>>8) );/* a 64 bit quantity */#define u_int64 unsigned long long#define int64 long long/* a 32 bit quantity */#define u_int32 unsigned int#define int32 int/* a 16 bit quantity */#define u_int16 unsigned short#define int16 short/* a 8 bit quantity */#define u_int8  unsigned char#define	int8 	char#define u_int unsigned int#define u_long unsigned long#define u_short unsigned short#include "ftqueue.h"#include "ftpaths.h"#include "radix.h"/* * compatability */struct mymsghdr {        void            *msg_name;             /* optional address */        int             msg_namelen;           /* size of address */        struct iovec    *msg_iov;              /* scatter/gather array */        int             msg_iovlen;            /* # elements in msg_iov */        void            *msg_control;          /* ancillary data, see below */        int             msg_controllen;        /* ancillary data buffer len */        int             msg_flags;             /* flags on received message */};/* * misc */#define FT_OPT_PERCENT 0x1#define FT_OPT_NAMES   0x2#define FT_OPT_NOBUF   0x4#define FT_OPT_TALLY   0x8#define FT_OPT_WIDE    0x10/* * stream header flags and options */#define FT_HEADER_LITTLE_ENDIAN     1      /* stream data is little endian */#define FT_HEADER_BIG_ENDIAN        2      /* stream data is big endian */#define FT_HEADER_FLAG_DONE         0x1    /* complete, safe to read */#define FT_HEADER_FLAG_COMPRESS     0x2    /* compression enabled */#define FT_HEADER_FLAG_MULT_PDU     0x4    /* multiple PDU's XXX not used */#define FT_HEADER_FLAG_STREAMING    0x8    /* stream ie flow-cat */#define FT_HEADER_FLAG_XLATE        0x10   /* stream translated from old fmt */#define FT_HEADER_FLAG_PRELOADED    0x20   /* streaming & preloaded header */#define FT_HEADER_D_VERSION_UNKNOWN 0xFFFF /* unknown export format */#define FT_HEADER_MAGIC1            0xCF   /* magic number of stream */#define FT_HEADER_MAGIC2            0x10#define FT_HEADER1_CMNT_LEN         256    /* length of comment buffer */#define FT_HEADER1_HN_LEN           68     /* length of hostname buffer */#define FT_HOSTNAME_LEN             256/* stream flags */#define FT_IO_FLAG_ZINIT       0x1    /* compression initialized */#define FT_IO_FLAG_NO_SWAP     0x2    /* do not swap on write */#define FT_IO_FLAG_READ        0x4    /* stream is open for reading */#define FT_IO_FLAG_WRITE       0x8    /* stream is open for writing */#define FT_IO_FLAG_HEADER_DONE 0x10   /* header written */#define FT_IO_FLAG_MMAP        0x20   /* use mmap() for reading */#define FT_PDU_V1_MAXFLOWS    24  /* max records in V1 packet */#define FT_PDU_V5_MAXFLOWS    30  /* max records in V5 packet */#define FT_PDU_V6_MAXFLOWS    27  /* max records in V6 packet */#define FT_PDU_V7_MAXFLOWS    27  /* max records in V7 packet */#define FT_PDU_V8_1_MAXFLOWS  51  /* max records in V8 AS packet */#define FT_PDU_V8_2_MAXFLOWS  51  /* max records in V8 PROTO PORT packet */#define FT_PDU_V8_3_MAXFLOWS  44  /* max records in V8 SRC PREFIX packet */#define FT_PDU_V8_4_MAXFLOWS  44  /* max records in V8 DST PREFIX packet */#define FT_PDU_V8_5_MAXFLOWS  35  /* max records in V8 PREFIX packet */#define FT_PDU_V8_6_MAXFLOWS  44  /* max records in V8 DESTONLY packet */#define FT_PDU_V8_7_MAXFLOWS  35  /* max records in V8 SRC_DEST packet */#define FT_PDU_V8_8_MAXFLOWS  32  /* max records in V8 FULL_FLOW packet */#define FT_PDU_V8_9_MAXFLOWS  44  /* max records in V8 AS_TOS packet */#define FT_PDU_V8_10_MAXFLOWS 44  /* max records in V8 PROT_PORT_TOS packet */#define FT_PDU_V8_11_MAXFLOWS 44  /* max records in V8 SRC_PREFIX_TOS packet */#define FT_PDU_V8_12_MAXFLOWS 44  /* max records in V8 DST_PREFIX_TOS packet */#define FT_PDU_V8_13_MAXFLOWS 35  /* max records in V8 PREFIX_TOS packet */#define FT_PDU_V8_14_MAXFLOWS 35  /* max records in V8 PREFIX_PORT_TOS packet */#define FT_PDU_V8_1_VERSION    2  /* version of AS packet */#define FT_PDU_V8_2_VERSION    2  /* version of PROTO PORT packet */#define FT_PDU_V8_3_VERSION    2  /* version of SRC PREFIX packet */#define FT_PDU_V8_4_VERSION    2  /* version of DST PREFIX packet */#define FT_PDU_V8_5_VERSION    2  /* version of PREFIX packet */#define FT_PDU_V8_6_VERSION    2  /* version of DESTONLY packet */#define FT_PDU_V8_7_VERSION    2  /* version of SRC_DEST packet */#define FT_PDU_V8_8_VERSION    2  /* version of FULL_FLOW packet */#define FT_PDU_V8_9_VERSION    2  /* version of AS_TOS packet */#define FT_PDU_V8_10_VERSION   2  /* version of PROT_PORT_TOS packet */#define FT_PDU_V8_11_VERSION   2  /* version of SRC_PREFIX_TOS packet */#define FT_PDU_V8_12_VERSION   2  /* version of DST_PREFIX_TOS packet */#define FT_PDU_V8_13_VERSION   2  /* version of PREFIX_TOS packet */#define FT_PDU_V8_14_VERSION   2  /* version of PREFIX_PORT_TOS packet */#define FT_PORT                9991  /* default listen port */#define FT_IO_NBUFS            256   /* buffers to read/write */#define FT_Z_BUFSIZE           16384 /* inflate/deflate buffer size */#define FT_D_BUFSIZE           32768 /* stream data buffer size */#define FT_RCV_BUFSIZE         2048  /* enough to handle largest export */#define FT_SO_SND_BUFSIZE      1500  /* UDP send socket buffer size */#define FT_SO_RCV_BUFSIZE      (4*1024*1024) /* UDP recv socket buffer size */#define FT_IO_SVERSION         3     /* stream version */#define FT_IO_MAXREC           512   /* >= max size of a flow record fts3_* */#define FT_IO_MAXDECODE        4096  /* must be >= max possible size a pdu                                      * could expand into stream records.  For                                      * example 27 v7 streams at 60 bytes                                      * is 1620 bytes                                     */#define FT_IO_MAXENCODE        4096  /* must be >= max possible size a pdu                                      * could be. really                                      * MAX(sizeof(ftpdu_*)) + size of                                      * ip+udp header (20+8)                                     */#define FT_IO_MAXHEADER        16384  /* max size of header */#define FT_SEQ_RESET           1000   /* maximum number of sequence numbers                                       * that will be counted as lost before                                       * assuming reset.                                       */#define FT_ENC_FLAGS_IPHDR     0x1    /* leave room for IP header */#define FT_ENC_IPHDR_LEN       28     /* IP + UDP header length */#define FT_FILE_SORT           0x1    /* sort entries */#define FT_FILE_INIT           0x2    /* initialize */#define FT_FILE_SKIPTMP        0x4    /* skip tmp files */#define FT_FILE_CHECKNAMES     0x8    /* check filenames for sanity *//* TLV_ - stream value * DEC_ - bit in internal header to indicate successful decode */#define FT_TLV_NULL               0x0     /* 0       : null */#define FT_TLV_VENDOR             0x1     /* u_int8  : vendor (1=cisco) */#define FT_FIELD_VENDOR           0x00000001L#define FT_TLV_EX_VER             0x2     /* u_int16 : export version */#define FT_FIELD_EX_VER           0x00000002L#define FT_TLV_AGG_VER            0x3     /* u_int8  : aggregation version */#define FT_FIELD_AGG_VER          0x00000004L#define FT_TLV_AGG_METHOD         0x4     /* u_int8  : aggregation method */#define FT_FIELD_AGG_METHOD       0x00000008L#define FT_TLV_EXPORTER_IP        0x5     /* u_int32 : IP of exporter */#define FT_FIELD_EXPORTER_IP      0x00000010L#define FT_TLV_CAP_START          0x6     /* u_int32 : capture start time */#define FT_FIELD_CAP_START        0x00000020L#define FT_TLV_CAP_END            0x7     /* u_int32 : capture end time */#define FT_FIELD_CAP_END          0x00000040L#define FT_TLV_HEADER_FLAGS       0x8     /* u_int32 : FT_HEADER_FLAG_* */#define FT_FIELD_HEADER_FLAGS     0x00000080L#define FT_TLV_ROT_SCHEDULE       0x9     /* u_int32 : rotation schedule */#define FT_FIELD_ROT_SCHEDULE     0x00000100L#define FT_TLV_FLOW_COUNT         0xA     /* u_int32 : num flows */#define FT_FIELD_FLOW_COUNT       0x00000200L#define FT_TLV_FLOW_LOST          0xB     /* u_int32 : lost flows */#define FT_FIELD_FLOW_LOST        0x00000400L#define FT_TLV_FLOW_MISORDERED    0xC     /* u_int32 : misordered flows */#define FT_FIELD_FLOW_MISORDERED  0x00000800L#define FT_TLV_PKT_CORRUPT        0xD     /* u_int32 : corrupt packets */#define FT_FIELD_PKT_CORRUPT      0x00001000L#define FT_TLV_SEQ_RESET          0xE     /* u_int32 : times sequence # was so                                           *           far off lost/misordered                                           *           state could not be                                           *           determined */#define FT_FIELD_SEQ_RESET        0x00002000L#define FT_TLV_CAP_HOSTNAME       0xF     /* string  : hostname of capture dev */#define FT_FIELD_CAP_HOSTNAME     0x00004000L#define FT_TLV_COMMENTS           0x10    /* string  : comments */#define FT_FIELD_COMMENTS         0x00008000L#define FT_TLV_IF_NAME            0x11    /* u_int32 u_int16 string                                            * IP address of device                                           * ifIndex of interface                                           * interface name */#define FT_FIELD_IF_NAME          0x00010000L#define FT_TLV_IF_ALIAS           0x12    /* u_int32 u_int16 u_int16 string                                            * IP address of device                                           * ifIndex count                                           * ifIndex of interface (count times)                                           * alias name */#define FT_FIELD_IF_ALIAS         0x00020000L#define FT_TLV_INTERRUPT          0x13     /* u_int8 : interrupt processing                                             * code for interrupt (0) */#define FT_FIELD_INTERRUPT        0x00040000L#define FT_VENDOR_CISCO           0x1      /* Cisco exporter */#define FT_CHASH_SORTED           0x1#define FT_CHASH_SORT_ASCENDING   0x2#define FT_CHASH_SORT_16          0x4#define FT_CHASH_SORT_32          0x8#define FT_CHASH_SORT_40          0x10#define FT_CHASH_SORT_64          0x20#define FT_CHASH_SORT_DOUBLE      0x40#define FT_CHASH_SORT_8           0x80/* possible fields in export */#define FT_XFIELD_UNIX_SECS       0x0000000000000001LL#define FT_XFIELD_UNIX_NSECS      0x0000000000000002LL#define FT_XFIELD_SYSUPTIME       0x0000000000000004LL#define FT_XFIELD_EXADDR          0x0000000000000008LL#define FT_XFIELD_DFLOWS          0x0000000000000010LL#define FT_XFIELD_DPKTS           0x0000000000000020LL#define FT_XFIELD_DOCTETS         0x0000000000000040LL#define FT_XFIELD_FIRST           0x0000000000000080LL#define FT_XFIELD_LAST            0x0000000000000100LL#define FT_XFIELD_ENGINE_TYPE     0x0000000000000200LL#define FT_XFIELD_ENGINE_ID       0x0000000000000400LL#define FT_XFIELD_SRCADDR         0x0000000000001000LL#define FT_XFIELD_DSTADDR         0x0000000000002000LL#define FT_XFIELD_NEXTHOP         0x0000000000010000LL#define FT_XFIELD_INPUT           0x0000000000020000LL#define FT_XFIELD_OUTPUT          0x0000000000040000LL#define FT_XFIELD_SRCPORT         0x0000000000080000LL#define FT_XFIELD_DSTPORT         0x0000000000100000LL#define FT_XFIELD_PROT            0x0000000000200000LL#define FT_XFIELD_TOS             0x0000000000400000LL#define FT_XFIELD_TCP_FLAGS       0x0000000000800000LL#define FT_XFIELD_SRC_MASK        0x0000000001000000LL#define FT_XFIELD_DST_MASK        0x0000000002000000LL#define FT_XFIELD_SRC_AS          0x0000000004000000LL

⌨️ 快捷键说明

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