Annotation of embedaddon/trafshow/cisco_netflow.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  *     Copyright (c) 2003 Rinet Corp., Novosibirsk, Russia
                      3:  *
                      4:  * Redistribution and use in source forms, with and without modification,
                      5:  * are permitted provided that this entire comment appears intact.
                      6:  *
                      7:  * THIS SOURCE CODE IS PROVIDED ``AS IS'' WITHOUT ANY WARRANTIES OF ANY KIND.
                      8:  */
                      9: 
                     10: #ifndef        _CISCO_NETFLOW_H_
                     11: #define        _CISCO_NETFLOW_H_
                     12: 
                     13: #include <sys/types.h>
                     14: 
                     15: #define        CNF_PORT        9995    /* collector UDP port by default */
                     16: 
                     17: /*
                     18:  * Cisco Netflow packets format
                     19: 
                     20:  */
                     21: /*
                     22:  * Version 1 Header Format
                     23:  */
                     24: typedef        struct cnf_hdr_v1 {
                     25:        u_int16_t       version;        /* version number=1 */
                     26:        u_int16_t       counter;        /* number of exported flows (1-24) */
                     27:        u_int32_t       sysuptime;      /* milliseconds since router booted */
                     28:        u_int32_t       unix_secs;      /* current seconds since UTC */
                     29:        u_int32_t       unix_nsecs;     /* current nanoseconds since UTC */
                     30: } CNF_HDR_V1;
                     31: 
                     32: /*
                     33:  * Version 1 Flow Record Format
                     34:  */
                     35: typedef        struct cnf_data_v1 {
                     36:        u_int32_t       src_addr;       /* source IP address */
                     37:        u_int32_t       dst_addr;       /* destination IP address */
                     38:        u_int32_t       nexthop;        /* next hop router's IP address */
                     39:        u_int16_t       ifin;           /* input interface's SNMP index */
                     40:        u_int16_t       ifout;          /* output interface's SNMP index */
                     41:        u_int32_t       dpkts;          /* packets in the flow */
                     42:        u_int32_t       doctets;        /* total number of L3 bytes */
                     43:        u_int32_t       firsttime;      /* sysuptime at start of flow */
                     44:        u_int32_t       lasttime;       /* sysuptime at last packet of flow */
                     45:        u_int16_t       src_port;       /* source port number */
                     46:        u_int16_t       dst_port;       /* destination port number */
                     47:        u_int16_t       pad1;           /* unused (zero) bytes */
                     48:        u_int8_t        proto;          /* IP protocol */
                     49:        u_int8_t        tos;            /* type of service */
                     50:        u_int8_t        flags;          /* cumulative OR of TCP flags */
                     51:        u_int8_t        tcp_retx_cnt;   /* Number of mis-sequenced packets with delay >1sec */
                     52:        u_int8_t        tcp_retx_secs;  /* Cumulative seconds between mis-sequenced packets */
                     53:        u_int8_t        tcp_misseq_cnt; /* Number of mis-sequenced packets seen */
                     54:        u_int8_t        reserved[4];    /* unused (zero) bytes */
                     55: } CNF_DATA_V1;
                     56: 
                     57: /*
                     58:  * Version 5 Header Format
                     59:  */
                     60: typedef        struct cnf_hdr_v5 {
                     61:        u_int16_t       version;        /* version number=5 */
                     62:        u_int16_t       counter;        /* number of exported flows (1-30) */
                     63:        u_int32_t       sysuptime;      /* milliseconds since router booted */
                     64:        u_int32_t       unix_secs;      /* current seconds since UTC */
                     65:        u_int32_t       unix_nsecs;     /* current nanoseconds since UTC */
                     66:        u_int32_t       sequence;       /* sequence counter of total flows seen */
                     67:        u_int8_t        engine_type;    /* switching engine type (RP,VIP) */
                     68:        u_int8_t        engine_id;      /* switching engine slot number */
                     69:        u_int16_t       sampling_interval; /* see bellow */
                     70: /*
                     71:  * Sampling mode and the sampling interval information.
                     72:  * The first two bits of this field indicates the sampling mode:
                     73:  *   00 = No sampling mode is configured
                     74:  *   01 = `Packet Interval' sampling mode is configured.
                     75:  *        (One of every x packet is selected and placed in the NetFlow cache).
                     76:  *   10 = Reserved
                     77:  *   11 = Reserved
                     78:  * The remaining 14 bits hold the value of the sampling interval.
                     79:  * The sampling interval can have any value in the range of 10 to 16382
                     80:  * (for example, 0x000A to 0x3FFE).
                     81:  */
                     82: } CNF_HDR_V5;
                     83: 
                     84: /*
                     85:  * Version 5 Flow Record Format
                     86:  */
                     87: typedef        struct cnf_data_v5 {
                     88:        u_int32_t       src_addr;       /* source IP address */
                     89:        u_int32_t       dst_addr;       /* destination IP address */
                     90:        u_int32_t       nexthop;        /* next hop router's IP address */
                     91:        u_int16_t       ifin;           /* input interface's SNMP index */
                     92:        u_int16_t       ifout;          /* output interface's SNMP index */
                     93:        u_int32_t       dpkts;          /* packets in the flow */
                     94:        u_int32_t       doctets;        /* total number of L3 bytes */
                     95:        u_int32_t       firsttime;      /* sysuptime at start of flow */
                     96:        u_int32_t       lasttime;       /* sysuptime at last packet of flow */
                     97:        u_int16_t       src_port;       /* source port number */
                     98:        u_int16_t       dst_port;       /* destination port number */
                     99:        u_int8_t        pad1;           /* unused (zero) byte */
                    100:        u_int8_t        flags;          /* cumulative OR of TCP flags */
                    101:        u_int8_t        proto;          /* IP protocol */
                    102:        u_int8_t        tos;            /* type of service */
                    103:        u_int16_t       src_as;         /* AS of the source (origin or peer) */
                    104:        u_int16_t       dst_as;         /* AS of the destination */
                    105:        u_int8_t        src_mask;       /* source address prefix mask bits */
                    106:        u_int8_t        dst_mask;       /* dest address prefix mask bits */
                    107:        u_int16_t       pad2;           /* unused (zero) bytes */
                    108: } CNF_DATA_V5;
                    109: 
                    110: /*
                    111:  * Version 7 Header Format
                    112:  */
                    113: typedef        struct cnf_hdr_v7 {
                    114:        u_int16_t       version;        /* version number=7 */
                    115:        u_int16_t       counter;        /* number of exported flows (1-27) */
                    116:        u_int32_t       sysuptime;      /* milliseconds since router booted */
                    117:        u_int32_t       unix_secs;      /* current seconds since UTC */
                    118:        u_int32_t       unix_nsecs;     /* current nanoseconds since UTC */
                    119:        u_int32_t       sequence;       /* sequence counter of total flows */
                    120:        u_int32_t       reserved;       /* unused (zero) bytes */
                    121: } CNF_HDR_V7;
                    122: 
                    123: /*
                    124:  * Version 7 Flow Record Format
                    125:  */
                    126: typedef        struct cnf_data_v7 {
                    127:        u_int32_t       src_addr;       /* source IP address */
                    128:        u_int32_t       dst_addr;       /* destination IP address */
                    129:        u_int32_t       nexthop;        /* next hop router's IP address */
                    130:        u_int16_t       ifin;           /* input interface's SNMP index */
                    131:        u_int16_t       ifout;          /* output interface's SNMP index */
                    132:        u_int32_t       dpkts;          /* packets in the flow */
                    133:        u_int32_t       doctets;        /* total number of L3 bytes */
                    134:        u_int32_t       firsttime;      /* sysuptime at start of flow */
                    135:        u_int32_t       lasttime;       /* sysuptime at last packet of flow */
                    136:        u_int16_t       src_port;       /* source port number */
                    137:        u_int16_t       dst_port;       /* destination port number */
                    138:        u_int8_t        pad1;           /* unused (zero) byte */
                    139:        u_int8_t        flags;          /* cumulative OR of TCP flags */
                    140:        u_int8_t        proto;          /* IP protocol */
                    141:        u_int8_t        tos;            /* type of service */
                    142:        u_int32_t       src_as;         /* AS of the source (origin of peer) */
                    143:        u_int32_t       dst_as;         /* AS of the destination */
                    144:        u_int8_t        src_mask;       /* source address prefix mask bits */
                    145:        u_int8_t        dst_mask;       /* dest address prefix mask bits */
                    146:        u_int16_t       pad2;           /* unused (zero) bytes */
                    147:        u_int32_t       router_sc;      /* router which is shortcut by switch */
                    148: } CNF_DATA_V7;
                    149: 
                    150: struct pcap_handler;
                    151: int cisco_netflow_init(struct pcap_handler **ph_list, int port);
                    152: 
                    153: #endif /* !_CISCO_NETFLOW_H_ */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>