/* 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.c,v 1.2.2.4 2004/02/02 08:06:24 sla Exp $ */ #include #include static uint16_t NetFlow1_Header[] = { NETFLOW_VERSION, NETFLOW_COUNT, NETFLOW_UPTIME, NETFLOW_UNIX_SECS, NETFLOW_UNIX_NSECS }; static uint16_t NetFlow1_Flow[] = { NETFLOW_IPV4_SRC_ADDR, NETFLOW_IPV4_DST_ADDR, NETFLOW_IPV4_NEXT_HOP, NETFLOW_INPUT_SNMP, NETFLOW_OUTPUT_SNMP, NETFLOW_PKTS_32, NETFLOW_BYTES_32, NETFLOW_FIRST_SWITCHED, NETFLOW_LAST_SWITCHED, NETFLOW_L4_SRC_PORT, NETFLOW_L4_DST_PORT, NETFLOW_PAD16, NETFLOW_PROT, NETFLOW_SRC_TOS, NETFLOW_TCP_FLAGS, NETFLOW_PAD8, NETFLOW_PAD8, NETFLOW_PAD8, NETFLOW_PAD32 }; static uint16_t NetFlow5_Header[] = { NETFLOW_VERSION, NETFLOW_COUNT, NETFLOW_UPTIME, NETFLOW_UNIX_SECS, NETFLOW_UNIX_NSECS, NETFLOW_FLOW_SEQUENCE, NETFLOW_ENGINE_TYPE, NETFLOW_ENGINE_ID, NETFLOW_PAD16 }; static uint16_t NetFlow5_Flow[] = { NETFLOW_IPV4_SRC_ADDR, NETFLOW_IPV4_DST_ADDR, NETFLOW_IPV4_NEXT_HOP, NETFLOW_INPUT_SNMP, NETFLOW_OUTPUT_SNMP, NETFLOW_PKTS_32, NETFLOW_BYTES_32, NETFLOW_FIRST_SWITCHED, NETFLOW_LAST_SWITCHED, NETFLOW_L4_SRC_PORT, NETFLOW_L4_DST_PORT, NETFLOW_PAD8, NETFLOW_TCP_FLAGS, NETFLOW_PROT, NETFLOW_SRC_TOS, NETFLOW_SRC_AS, NETFLOW_DST_AS, NETFLOW_SRC_MASK, NETFLOW_DST_MASK, NETFLOW_XID /* Whoo hoo! */ }; static uint16_t NetFlow7_Header[] = { NETFLOW_VERSION, NETFLOW_COUNT, NETFLOW_UPTIME, NETFLOW_UNIX_SECS, NETFLOW_UNIX_NSECS, NETFLOW_FLOW_SEQUENCE, NETFLOW_PAD32 }; static uint16_t NetFlow7_Flow[] = { NETFLOW_IPV4_SRC_ADDR, NETFLOW_IPV4_DST_ADDR, NETFLOW_IPV4_NEXT_HOP, NETFLOW_INPUT_SNMP, NETFLOW_OUTPUT_SNMP, NETFLOW_PKTS_32, NETFLOW_BYTES_32, NETFLOW_FIRST_SWITCHED, NETFLOW_LAST_SWITCHED, NETFLOW_L4_SRC_PORT, NETFLOW_L4_DST_PORT, NETFLOW_FLAGS7_1, NETFLOW_TCP_FLAGS, NETFLOW_PROT, NETFLOW_SRC_TOS, NETFLOW_SRC_AS, NETFLOW_DST_AS, NETFLOW_SRC_MASK, NETFLOW_DST_MASK, NETFLOW_FLAGS7_2, NETFLOW_ROUTER_SC }; struct NetFlow NetFlow1 = { NETFLOW1_VERSION, NETFLOW1_HEADER_SIZE, NETFLOW1_MAX_FLOWS, NETFLOW1_FLOW_SIZE, NETFLOW1_SEQ_OFFSET, sizeof(NetFlow1_Header) / sizeof(uint16_t), NetFlow1_Header, sizeof(NetFlow1_Flow) / sizeof(uint16_t), NetFlow1_Flow }; struct NetFlow NetFlow5 = { NETFLOW5_VERSION, NETFLOW5_HEADER_SIZE, NETFLOW5_MAX_FLOWS, NETFLOW5_FLOW_SIZE, NETFLOW5_SEQ_OFFSET, sizeof(NetFlow5_Header) / sizeof(uint16_t), NetFlow5_Header, sizeof(NetFlow5_Flow) / sizeof(uint16_t), NetFlow5_Flow }; struct NetFlow NetFlow7 = { NETFLOW7_VERSION, NETFLOW7_HEADER_SIZE, NETFLOW7_MAX_FLOWS, NETFLOW7_FLOW_SIZE, NETFLOW7_SEQ_OFFSET, sizeof(NetFlow7_Header) / sizeof(uint16_t), NetFlow7_Header, sizeof(NetFlow7_Flow) / sizeof(uint16_t), NetFlow7_Flow };