/* * Copyright (C) 2002-04 Luca Deri * * http://www.ntop.org/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "ntop.h" #include "globals-report.h" #include /* * Extra pages */ #define CONST_RRD_STATISTICS_HTML "statistics.html" #define CONST_RRD_ARBGRAPH_HTML "arbgraph.html" /* * Flags for rrd plugin settings... */ #define FLAG_RRD_DETAIL_LOW 0 #define FLAG_RRD_DETAIL_MEDIUM 1 #define FLAG_RRD_DETAIL_HIGH 2 #define CONST_RRD_DETAIL_DEFAULT FLAG_RRD_DETAIL_HIGH #define FLAG_RRD_ACTION_NONE 0 #define FLAG_RRD_ACTION_GRAPH 1 #define FLAG_RRD_ACTION_LIST 2 #define FLAG_RRD_ACTION_GRAPH_SUMMARY 3 #define FLAG_RRD_ACTION_NF_SUMMARY 4 #define FLAG_RRD_ACTION_NF_IF_SUMMARY 5 #define FLAG_RRD_ACTION_IF_SUMMARY 6 #define FLAG_RRD_ACTION_ARBITRARY 7 #define CONST_RRD_PERMISSIONS_PRIVATE 0 #define CONST_RRD_PERMISSIONS_GROUP 1 #define CONST_RRD_PERMISSIONS_EVERYONE 2 #define DEFAULT_RRD_PERMISSIONS CONST_RRD_PERMISSIONS_PRIVATE /* Remember these are OCTAL constants and MUST have a leading 0 - * see man chmod but tricky because the apply to both files * and directories - and rrd_create uses 0666 */ #define CONST_RRD_D_PERMISSIONS_PRIVATE 0700 #define CONST_RRD_D_PERMISSIONS_GROUP 0750 #define CONST_RRD_D_PERMISSIONS_EVERYONE 0755 #define CONST_RRD_UMASK_PRIVATE 0066 #define CONST_RRD_UMASK_GROUP 0026 #define CONST_RRD_UMASK_EVERYONE 0022 /* * How often should we update rrd statistics? Overridden in rrd plugin */ #define DEFAULT_RRD_INTERVAL 300 /* seconds - rrd counter (default) interval */ #define DEFAULT_RRD_SHORT_INTERVAL 10 /* seconds - short rrd counter (default) interval */ #define DEFAULT_RRD_HOURS 72 /* hours of interval by interval data (default) */ #define DEFAULT_RRD_DAYS 90 /* days of hour by hour data (default) */ #define DEFAULT_RRD_MONTHS 36 /* months of day by day data (default) */ #define DEFAULT_RRD_DUMP_DELAY 10 /* ms (default) */ #define AS_RRD_DUMP_PKTS_THRESHOLD 10 /* packets */ /* ****************************************************** */ /* * Names for the arbitrary graph creation * - remember to keep the RRDREQUEST_ values unique in their 1st character */ #define CONST_ARBITRARY_RRDREQUEST "arbreq" #define CONST_ARBITRARY_RRDREQUEST_GRAPHME "graph" #define CONST_ARBITRARY_RRDREQUEST_SHOWME "show" #define CONST_ARBITRARY_RRDREQUEST_FETCHME "fetch" #define CONST_ARBITRARY_RRDREQUEST_FETCHMECSV "cvsfetch" #define CONST_ARBITRARY_INTERFACE "arbiface" #define CONST_ARBITRARY_IP "arbip" #define CONST_ARBITRARY_FILE "arbfile" /* If you add a new major rrd file, it should be added to this list */ static char *rrdNames[] = { "arpRarpBytes", "atalkBytes", "badChecksumPkts", "broadcastPkts", "bytes", "bytesBroadcastRcvd", "bytesBroadcastSent", "bytesRcvd", "bytesRcvdFromRem", "bytesRcvdLoc", "bytesSent", "bytesSentLoc", "bytesSentRem", "decnetBytes", "dlcBytes", "droppedPkts", "egpBytes", "ethernetBytes", "ethernetPkts", "fragmentedIpBytes", "icmp6Rcvd", "icmp6Sent", "icmpBytes", "icmpRcvd", "icmpSent", "ifInBroadcastPkts", "ifInDiscards", "ifInErrors", "ifInMulticastPkts", "ifInOctets", "ifInUcastPkts", "ifInUnknownProtos", "ifOutBroadcastPkts", "ifOutDiscards", "ifOutErrors", "ifOutMulticastPkts", "ifOutOctets", "ifOutUcastPkts", "ipBytes", "ipv6Bytes", "ipxBytes", "multicastPkts", "netbiosBytes", "NF_numDiscardedFlows", "NF_numFlowPkts", "NF_numFlows", "osiBytes", "otherBytes", "otherIpBytes", "packets", "pktBroadcastRcvd", "pktBroadcastSent", "pkts", "pktRcvd", "pktSent", "stpBytes", "tcpBytes", "tcpRcvd", "tcpRcvdFromRem", "tcpRcvdLoc", "tcpSent", "tcpSentLoc", "tcpSentRem", "tooLongPkts", "totContactedRcvdPeers", "totContactedSentPeers", "udpBytes", "udpRcvd", "udpRcvdFromRem", "udpRcvdLoc", "udpSent", "udpSentLoc", "udpSentRem", "upTo1024Pkts", "upTo128Pkts", "upTo1518Pkts", "upTo256Pkts", "upTo512Pkts", "upTo64Pkts", NULL }; /* ****************************************************** */ /* * This flag turns on a signal trap in rrdPlugin.c. If you're seeing * rrd simply and silently die, this might catch the signal and log * it for analysis. */ /* #define MAKE_WITH_RRDSIGTRAP */ /* RRD_DEBUG controls debug messages in rrdPlugin.c. See the definition in globals-defines.h, * where you really should set it, so the util.c calls get enabled. */ #define RRD_DEBUG 3 /* * Optional: Set a default font for the rrd generated graphs * Courtesy of Chris Turbeville */ /* #define CONST_RRD_DEFAULT_FONT_SIZE "8" #define CONST_RRD_DEFAULT_FONT_PATH "/usr/openwin/lib/X11/fonts/TrueType/" #define CONST_RRD_DEFAULT_FONT_NAME "ArialNarrow-Bold.ttf" */ static const char *rrd_subdirs[] = { "graphics", /* graphics sub directory - must be first */ "flows", "interfaces", }; static const char *rrd_colors[] = { "#EE0000", "#00DD00", "#1E90FF", "#FFFF00", "#0000FF", "#00FFFF", "#FF00FF", "#aa00aa", "#00aa00", "#550055", "#669999", "#ccff99", "#333333", "#0066ff", "#ff6633", "#999900", "#102255", "#208352", "#FF1493", "#FFD700", "#d5aad5", "#99ff33", "#ffcc99", "#0033cc", "#ffcc00", "#33cccc", "#339966", "#ff3333", "#ff0066", "#cc3333", "#9900ff", "#006666" }; #define CONST_NUM_BAR_COLORS (sizeof(rrd_colors)/sizeof(rrd_colors[0])) static const char *rrd_summary_packets[] = { "ethernetPkts", "broadcastPkts", "multicastPkts", "badChecksumPkts", NULL }; static const char *rrd_summary_new_flows[] = { "NF_numFlows", "NF_numDiscardedFlows", NULL }; static const char *rrd_summary_new_nf_flows[] = { "NF_newTcpNetFlows", "NF_newUdpNetFlows", "NF_newIcmpNetFlows", "NF_newOtherNetFlows", NULL }; static const char *rrd_summary_new_nf_flows_size[] = { "NF_avgTcpNewFlowSize", "NF_avgUdpNewFlowSize", "NF_avgICMPNewFlowSize", "NF_avgOtherNewFlowSize", NULL }; static const char *rrd_summary_proto_bytes[] = { "arpRarpBytes", "atalkBytes", "fragmentedIpBytes", "ipBytes", "ipv6Bytes", "ipxBytes", "osiBytes", "otherBytes", "stpBytes", NULL }; static const char *rrd_summary_ipproto_bytes[] = { "tcpBytes", "udpBytes", "icmpBytes", "otherIpBytes", NULL }; static const char *rrd_summary_packet_sizes[] = { "upTo1518Pkts", "upTo1024Pkts", "upTo512Pkts", "upTo256Pkts", "upTo128Pkts", "upTo64Pkts", NULL }; static const char *rrd_summary_local_remote_ip_bytes[] = { "ipLocalToLocalBytes", "ipLocalToRemoteBytes", "ipRemoteToLocalBytes", "ipRemoteToRemoteBytes", NULL }; static const char *rrd_summary_host_sentRcvd_packets[] = { "pktSent", "pktRcvd", NULL }; static const char *rrd_summary_host_sentRcvd_bytes[] = { "bytesSent", "bytesRcvd", NULL }; static const char *rrd_summary_nf_if_octets[] = { "ifInOctets", "ifOutOctets", "ifSelfOctets", NULL }; static const char *rrd_summary_nf_if_pkts[] = { "ifInPkts", "ifOutPkts", "ifSelfPkts", NULL }; #ifdef MAX_RRD_PROCESS_BUFFER static float rrdprocessBuffer[MAX_RRD_PROCESS_BUFFER]; static int rrdprocessBufferInit, rrdprocessBufferCount; static float rrdpmaxDelay; #endif #ifdef MAX_RRD_CYCLE_BUFFER static float rrdcycleBuffer[MAX_RRD_CYCLE_BUFFER]; static int rrdcycleBufferInit, rrdcycleBufferCount; static float rrdcmaxLength; #endif