X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=trunk%2Fsrc%2Fnetflow.h;fp=trunk%2Fsrc%2Fnetflow.h;h=e2ce3affc3c19d6e559cdb4fec805ae47c4d10d0;hb=85718e4dcaf5f34496f629e45a47ec91145c6f9e;hp=0000000000000000000000000000000000000000;hpb=abb2bffe08424d2d7e612f423815aeb7c79b42de;p=iptables.git diff --git a/trunk/src/netflow.h b/trunk/src/netflow.h new file mode 100644 index 0000000..e2ce3af --- /dev/null +++ b/trunk/src/netflow.h @@ -0,0 +1,245 @@ +/* + Copyright (C) Slava Astashonok + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License. + + $Id: netflow.h,v 1.3.2.5.2.1 2004/08/13 21:03:10 sla Exp $ +*/ + +#ifndef _NETFLOW_H_ +#define _NETFLOW_H_ + +#include + +#define NETFLOW_BYTES_32 1 +#define NETFLOW_BYTES_32_SIZE 4 + +#define NETFLOW_PKTS_32 2 +#define NETFLOW_PKTS_32_SIZE 4 + +#define NETFLOW_FLOWS 3 +#define NETFLOW_FLOWS_SIZE 4 + +#define NETFLOW_PROT 4 +#define NETFLOW_PROT_SIZE 1 + +#define NETFLOW_SRC_TOS 5 +#define NETFLOW_SRC_TOS_SIZE 1 + +#define NETFLOW_TCP_FLAGS 6 +#define NETFLOW_TCP_FLAGS_SIZE 1 + +#define NETFLOW_L4_SRC_PORT 7 +#define NETFLOW_L4_SRC_PORT_SIZE 2 + +#define NETFLOW_IPV4_SRC_ADDR 8 +#define NETFLOW_IPV4_SRC_ADDR_SIZE 4 + +#define NETFLOW_SRC_MASK 9 +#define NETFLOW_SRC_MASK_SIZE 1 + +#define NETFLOW_INPUT_SNMP 10 +#define NETFLOW_INPUT_SNMP_SIZE 2 + +#define NETFLOW_L4_DST_PORT 11 +#define NETFLOW_L4_DST_PORT_SIZE 2 + +#define NETFLOW_IPV4_DST_ADDR 12 +#define NETFLOW_IPV4_DST_ADDR_SIZE 4 + +#define NETFLOW_DST_MASK 13 +#define NETFLOW_DST_MASK_SIZE 1 + +#define NETFLOW_OUTPUT_SNMP 14 +#define NETFLOW_OUTPUT_SNMP_SIZE 2 + +#define NETFLOW_IPV4_NEXT_HOP 15 +#define NETFLOW_IPV4_NEXT_HOP_SIZE 4 + +#define NETFLOW_SRC_AS 16 +#define NETFLOW_SRC_AS_SIZE 2 + +#define NETFLOW_DST_AS 17 +#define NETFLOW_DST_AS_SIZE 2 + +#define NETFLOW_BGP_NEXT_HOP 18 +#define NETFLOW_BGP_NEXT_HOP_SIZE 4 + +#define NETFLOW_IPM_DPKTS 19 +#define NETFLOW_IPM_DPKTS_SIZE 4 + +#define NETFLOW_IPM_DOCTETS 20 +#define NETFLOW_IPM_DOCTETS_SIZE 4 + +#define NETFLOW_LAST_SWITCHED 21 +#define NETFLOW_LAST_SWITCHED_SIZE 4 + +#define NETFLOW_FIRST_SWITCHED 22 +#define NETFLOW_FIRST_SWITCHED_SIZE 4 + +#define NETFLOW_BYTES_64 23 +#define NETFLOW_BYTES_64_SIZE 8 + +#define NETFLOW_PKTS_64 24 +#define NETFLOW_PKTS_64_SIZE 8 + +#define NETFLOW_MAC_ADDR 25 +#define NETFLOW_MAC_ADDR_SIZE 6 + +#define NETFLOW_VLAN_ID 26 +#define NETFLOW_VLAN_ID_SIZE 2 + +#define NETFLOW_IPV6_SRC_ADDR 27 +#define NETFLOW_IPV6_SRC_ADDR_SIZE 16 + +#define NETFLOW_IPV6_DST_ADDR 28 +#define NETFLOW_IPV6_DST_ADDR_SIZE 16 + +#define NETFLOW_IPV6_SRC_MASK 29 +#define NETFLOW_IPV6_SRC_MASK_SIZE 1 + +#define NETFLOW_IPV6_DST_MASK 30 +#define NETFLOW_IPV6_DST_MASK_SIZE 1 + +#define NETFLOW_FLOW_LABEL 31 +#define NETFLOW_FLOW_LABEL_SZIE 3 + +#define NETFLOW_ICMP_TYPE 32 +#define NETFLOW_ICMP_TYPE_SIZE 1 + +#define NETFLOW_MUL_IGMP_TYPE 33 +#define NETFLOW_MUL_IGMP_TYPE_SIZE 1 + +#define NETFLOW_SAMPLING_INTERVAL 34 +#define NETFLOW_SAMPLING_INTERVAL_SIZE 4 + +#define NETFLOW_SAMPLING_ALGORITHM 35 +#define NETFLOW_SAMPLING_ALGORITHM_SIZE 1 + +#define NETFLOW_FLOW_ACTIVE_TIMEOUT 36 +#define NETFLOW_FLOW_ACTIVE_TIMEOUT_SIZE 2 + +#define NETFLOW_FLOW_INACTIVE_TIMEOUT 37 +#define NETFLOW_FLOW_INACTIVE_TIMEOUT_SIZE 2 + +#define NETFLOW_ENGINE_TYPE 38 +#define NETFLOW_ENGINE_TYPE_SIZE 1 + +#define NETFLOW_ENGINE_ID 39 +#define NETFLOW_ENGINE_ID_SIZE 1 + +#define NETFLOW_TOTAL_BYTES_EXPORTED 40 +#define NETFLOW_TOTAL_BYTES_EXPORTED_SIZE 4 + +#define NETFLOW_TOTAL_EXPORT_PKTS_SENT 41 +#define NETFLOW_TOTAL_EXPORT_PKTS_SENT_SIZE 4 + +#define NETFLOW_TOTAL_FLOWS_EXPORTED 42 +#define NETFLOW_TOTAL_FLOWS_EXPORTED_SIZE 4 + +#define NETFLOW_FLOW_SAMPLER_ID 48 +#define NETFLOW_FLOW_SAMPLER_ID_SIZE 1 + +#define NETFLOW_FLOW_SAMPLER_MODE 49 +#define NETFLOW_FLOW_SAMPLER_MODE_SIZE 1 + +#define NETFLOW_FLOW_SAMPLER_RANDOM_INTERVAL 50 +#define NETFLOW_FLOW_SAMPLER_RANDOM_INTERVAL_SIZE 4 + +#define NETFLOW_IP_PROTOCOL_VERSION 60 +#define NETFLOW_IP_PROTOCOL_VERSION_SIZE 1 + +#define NETFLOW_DIRECTION 61 +#define NETFLOW_DIRECTION_SIZE 1 + +#define NETFLOW_IPV6_NEXT_HOP 62 +#define NETFLOW_IPV6_NEXT_HOP_SIZE 16 + +#define NETFLOW_BGP_IPV6_NEXT_HOP 63 +#define NETFLOW_BGP_IPV6_NEXT_HOP_SIZE 16 + +#define NETFLOW_IPV6_OPTION_HEADERS 64 +#define NETFLOW_IPV6_OPTION_HEADERS_SIZE 4 + + +#define NETFLOW_VERSION 1001 +#define NETFLOW_VERSION_SIZE 2 + +#define NETFLOW_COUNT 1002 +#define NETFLOW_COUNT_SIZE 2 + +#define NETFLOW_UPTIME 1003 +#define NETFLOW_UPTIME_SIZE 4 + +#define NETFLOW_UNIX_SECS 1004 +#define NETFLOW_UNIX_SECS_SIZE 4 + +#define NETFLOW_UNIX_NSECS 1005 +#define NETFLOW_UNIX_NSECS_SIZE 4 + +#define NETFLOW_FLOW_SEQUENCE 1006 +#define NETFLOW_FLOW_SEQUENCE_SIZE 4 + +#define NETFLOW_HEADER_SAMPLING_INTERVAL 1009 /* ??? */ +#define NETFLOW_HEADER_SAMPLING_INTERVAL_SIZE 2 + +#define NETFLOW_FLAGS7_1 1010 +#define NETFLOW_FLAGS7_1_SIZE 1 + +#define NETFLOW_FLAGS7_2 1011 +#define NETFLOW_FLAGS7_2_SIZE 2 + +#define NETFLOW_ROUTER_SC 1012 +#define NETFLOW_ROUTER_SC_SIZE 4 + + +#define NETFLOW_PAD8 9001 +#define NETFLOW_PAD8_SIZE 1 + +#define NETFLOW_PAD16 9002 +#define NETFLOW_PAD16_SIZE 2 + +#define NETFLOW_PAD32 9003 +#define NETFLOW_PAD32_SIZE 4 + +#define NETFLOW_PAD64 9004 +#define NETFLOW_PAD64_SIZE 8 + + +#define NETFLOW_MAX_PACKET 1500 + +#define NETFLOW1_VERSION 1 +#define NETFLOW1_HEADER_SIZE 16 +#define NETFLOW1_MAX_FLOWS 24 +#define NETFLOW1_FLOW_SIZE 48 +#define NETFLOW1_SEQ_OFFSET 0 + +#define NETFLOW5_VERSION 5 +#define NETFLOW5_HEADER_SIZE 24 +#define NETFLOW5_MAX_FLOWS 30 +#define NETFLOW5_FLOW_SIZE 48 +#define NETFLOW5_SEQ_OFFSET 16 + +#define NETFLOW7_VERSION 7 +#define NETFLOW7_HEADER_SIZE 24 +#define NETFLOW7_MAX_FLOWS 27 +#define NETFLOW7_FLOW_SIZE 52 +#define NETFLOW7_SEQ_OFFSET 16 + +#define NETFLOW8_VERSION 8 +#define NETFLOW8_MAX_FLOWS 51 + +struct NetFlow { + unsigned Version; + unsigned HeaderSize; + unsigned MaxFlows; + unsigned FlowSize; + unsigned SeqOffset; + unsigned HeaderFields; + uint16_t *HeaderFormat; + unsigned FlowFields; + uint16_t *FlowFormat; +}; + +#endif