/* * Copyright (C) 1998-2012 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" #ifdef HAVE_LOCALE_H #include #endif #ifndef WIN32 #include #endif #ifdef PARM_USE_COLOR static short alternateColor=0; #endif /* Forward */ static void handleSingleWebConnection(fd_set *fdmask); /* **************************************** */ #if(defined(HAVE_DIRENT_H) && defined(HAVE_DLFCN_H)) || defined(WIN32) || defined(DARWIN) void showPluginsList(char* pluginName) { FlowFilterList *flows = myGlobals.flowsList; short doPrintHeader = 0, status_found = 0; char tmpBuf[LEN_GENERAL_WORK_BUFFER], *thePlugin, tmpBuf1[LEN_GENERAL_WORK_BUFFER]; int newPluginStatus = 0, rc=0; if(pluginName[0] != '\0') { int i; thePlugin = pluginName; for(i=0; pluginName[i] != '\0'; i++) if(pluginName[i] == '=') { pluginName[i] = '\0'; newPluginStatus = atoi(&pluginName[i+1]); status_found = 1; break; } } else thePlugin = NULL; while(flows != NULL) { if((flows->pluginStatus.pluginPtr != NULL) && (flows->pluginStatus.pluginPtr->pluginURLname != NULL)) { if(thePlugin && (strcmp(flows->pluginStatus.pluginPtr->pluginURLname, thePlugin) == 0) && (flows->pluginStatus.activePlugin != newPluginStatus)) { char key[64]; if(status_found) { if(newPluginStatus == 0 /* disabled */) { if(flows->pluginStatus.pluginPtr->termFunct != NULL) flows->pluginStatus.pluginPtr->termFunct(0 /* term plugin */); } else { if(flows->pluginStatus.pluginPtr->startFunct != NULL) rc = flows->pluginStatus.pluginPtr->startFunct(); if(rc || (flows->pluginStatus.pluginPtr->pluginStatusMessage != NULL)) newPluginStatus = 0 /* Disabled */; } flows->pluginStatus.activePlugin = newPluginStatus; safe_snprintf(__FILE__, __LINE__, key, sizeof(key), "pluginStatus.%s", flows->pluginStatus.pluginPtr->pluginName); storePrefsValue(key, newPluginStatus ? "1" : "0"); } } } if(!thePlugin || (strcmp(flows->pluginStatus.pluginPtr->pluginURLname, thePlugin) == 0)) { if(doPrintHeader == 0) { printHTMLheader(thePlugin == NULL ? "Available Plugins" : thePlugin, NULL, 0); sendString("
\n" ""TABLE_ON"\n" "\n" "\n" "\n" "" "\n"); doPrintHeader = 1; } safe_snprintf(__FILE__, __LINE__, tmpBuf1, sizeof(tmpBuf1), "%s", flows->pluginStatus.pluginPtr->pluginURLname, flows->pluginStatus.pluginPtr->pluginURLname); safe_snprintf(__FILE__, __LINE__, tmpBuf, sizeof(tmpBuf), "\n"); } else { safe_snprintf(__FILE__, __LINE__, tmpBuf, sizeof(tmpBuf), "%s\n", flows->pluginStatus.activePlugin ? tmpBuf1 : flows->pluginStatus.pluginPtr->pluginURLname); sendString(tmpBuf); } safe_snprintf(__FILE__, __LINE__, tmpBuf, sizeof(tmpBuf), "\n", tmpBuf1); sendString(tmpBuf); } else { sendString(" \n"); } if(flows->pluginStatus.pluginPtr->pluginStatusMessage != NULL) { safe_snprintf(__FILE__, __LINE__, tmpBuf, sizeof(tmpBuf), "\n\n", flows->pluginStatus.pluginPtr->pluginStatusMessage, getRowColor()); sendString(tmpBuf); } safe_snprintf(__FILE__, __LINE__, tmpBuf, sizeof(tmpBuf), "\n" "\n" "\n" "" "\n", flows->pluginStatus.pluginPtr->pluginDescr, flows->pluginStatus.pluginPtr->pluginVersion, flows->pluginStatus.pluginPtr->pluginAuthor, flows->pluginStatus.pluginPtr->pluginURLname, flows->pluginStatus.activePlugin ? 0: 1, flows->pluginStatus.activePlugin ? "Yes" : "No"); sendString(tmpBuf); } flows = flows->next; } /* while */ if(!doPrintHeader) { printHTMLheader("No Plugins available", NULL, 0); } else { sendString("
ViewConfigureDescriptionVersionAuthorActive
[click to toggle]
", getRowColor(), flows->pluginStatus.pluginPtr->pluginStatusMessage != NULL ? "rowspan=\"2\"" : ""); sendString(tmpBuf); if(flows->pluginStatus.pluginPtr->inactiveSetup) { sendString(" ", flows->pluginStatus.pluginPtr->pluginStatusMessage != NULL ? "rowspan=\"2\"" : ""); sendString(tmpBuf); if(flows->pluginStatus.pluginPtr->inactiveSetup) { safe_snprintf(__FILE__, __LINE__, tmpBuf, sizeof(tmpBuf), "%s%s
%s%s%s%s
"TABLE_OFF"

\n"); sendString("

\n"); } } #else /* defined(HAVE_DIRENT_H) && defined(HAVE_DLFCN_H) */ void showPluginsList(char* pluginName) { ; } void loadPlugins(void) { ; } void unloadPlugins(void) { ; } #endif /* defined(HAVE_DIRENT_H) && defined(HAVE_DLFCN_H) */ /* ******************************* */ char* makeHostAgeStyleSpec(HostTraffic *el, char *buf, int bufSize) { int age; /* return(""); */ if(myGlobals.actTime - el->firstSeen > 60*60) age = 60; else if(myGlobals.actTime - el->firstSeen > 30*60) age = 30; else if(myGlobals.actTime - el->firstSeen > 15*60) age = 15; else if(myGlobals.actTime - el->firstSeen > 5*60) age = 5; else age = 0; safe_snprintf(__FILE__, __LINE__, buf, bufSize, "class=\"age%dmin\"", age); return(buf); } /* ******************************* */ static void copyShortHostName(char* buf, u_int buf_len, char *name) { u_int max_len = 20, len = strlen(name); if(len > (max_len+4)) { safe_snprintf(__FILE__, __LINE__, buf, buf_len, "%c%c%c%c...%s", name[0], name[1], name[2], name[3], &name[len-max_len]); } else safe_snprintf(__FILE__, __LINE__, buf, buf_len, "%s", name); /* traceEvent(CONST_TRACE_WARNING, "--> [%s][%s]\n", name, buf); */ } /* ******************************* */ char* makeHostLink(HostTraffic *el, short mode, short cutName, short addCountryFlag, char *buf, int bufLen) { char symIp[256], linkName[256], flag[256], colorSpec[64], vlanStr[8], mapStr[1024]; char osBuf[128], titleBuf[256], noteBuf[256], noteBufAppend[64], tooltip[256], httpFavico[256]; char *dhcpBootpStr, *p2pStr, *multihomedStr, *multivlanedStr, *gwStr, *brStr, *dnsStr, *printStr, *smtpStr, *healthStr, *userStr, *httpStr, *ntpStr, *voipHostStr, custom_host_name[128]; short usedEthAddress=0; int i; if(el == NULL) return(" "); /* Read custom host name from cache */ safe_snprintf(__FILE__, __LINE__, symIp, sizeof(symIp), "hostname.%s", (el->hostNumIpAddress[0] != '\0') ? el->hostNumIpAddress : el->ethAddressString); if(fetchPrefsValue(symIp, custom_host_name, sizeof(custom_host_name)) == -1) custom_host_name[0] = '\0'; memset(&symIp, 0, sizeof(symIp)); memset(&linkName, 0, sizeof(linkName)); memset(&flag, 0, sizeof(flag)); memset(&colorSpec, 0, sizeof(colorSpec)); memset(&osBuf, 0, sizeof(osBuf)); memset(&titleBuf, 0, sizeof(titleBuf)); memset(¬eBuf, 0, sizeof(noteBuf)); memset(¬eBufAppend, 0, sizeof(noteBufAppend)); /* Critical - for sorting order - that this routine respect hostResolvedName * * Remember - if this is being referenced in a fork()ed child, i.e as part of * most reports on most systems, then setting flags in here is a waste. * * Further, the more of that you do, the more likely that ntop will * function differently if -K | --debug is set, or in single threaded * mode or under gdb (debugger)! */ if(el->hostResolvedNameType < FLAG_HOST_SYM_ADDR_TYPE_NONE) { /* %s%s"; else fmt = "%s%s"; if(broadcastHost(el)) { safe_snprintf(__FILE__, __LINE__, buf, bufLen, fmt, "", "broadcast"); } else if(el == myGlobals.otherHostEntry) { safe_snprintf(__FILE__, __LINE__, buf, bufLen, fmt, "", el->hostResolvedName); } else { safe_snprintf(__FILE__, __LINE__, commentBuf, sizeof(commentBuf), "", el->hostResolvedNameType); safe_snprintf(__FILE__, __LINE__, buf, bufLen, fmt, commentBuf, el->hostResolvedName); } return(buf); } if((el->hostResolvedNameType == FLAG_HOST_SYM_ADDR_TYPE_NONE) || (el->hostResolvedName[0] == '\0') /* Safety check */ ) { /* Let's search name in cache */ if(getHostNameFromCache(&el->hostIpAddress, el->hostResolvedName, sizeof(el->hostResolvedName)) != NULL) { el->hostResolvedNameType = FLAG_HOST_SYM_ADDR_TYPE_NAME; } } if((el->hostResolvedNameType == FLAG_HOST_SYM_ADDR_TYPE_NONE) || (el->hostResolvedName[0] == '\0') /* Safety check */ ) { /* It's not officially known, so let's do what we can */ if(addrnull(&el->hostIpAddress) && (el->ethAddressString[0] == '\0')) { FD_SET(FLAG_BROADCAST_HOST, &el->flags); /* Just to be safe */ if(mode == FLAG_HOSTLINK_HTML_FORMAT) return("<broadcast>"); else return("<broadcast>"); } if(cmpSerial(&el->serialHostIndex, &myGlobals.otherHostEntry->serialHostIndex)) { if(mode == FLAG_HOSTLINK_HTML_FORMAT) return("<other>"); else return("<other>"); } /* User other names if we have them, but follow (High->Low) the numerical * sequence of FLAG_HOST_SYM_ADDR_TYPE_xxx so it still sorts right */ if((el->hostNumIpAddress[0] != '\0') && (!((el->ethAddressString[0] == '\0') && subnetPseudoLocalHost(el)))) { /* We have the IP, so the DNS is probably still getting the entry name */ strncpy(symIp, el->hostNumIpAddress, sizeof(symIp)); #ifndef CMPFCTN_DEBUG if(myGlobals.runningPref.debugMode == 1) #endif safe_snprintf(__FILE__, __LINE__, noteBufAppend, sizeof(noteBufAppend), "", el->hostNumIpAddress); strncat(noteBuf, noteBufAppend, (sizeof(noteBuf) - strlen(noteBuf) - 1)); } else if(el->ethAddressString[0] != '\0') { /* Use the MAC address */ strncpy(symIp, el->ethAddressString, sizeof(symIp)); usedEthAddress = 1; #ifndef CMPFCTN_DEBUG if(myGlobals.runningPref.debugMode == 1) #endif safe_snprintf(__FILE__, __LINE__, noteBufAppend, sizeof(noteBufAppend), "", el->ethAddressString); strncat(noteBuf, noteBufAppend, (sizeof(noteBuf) - strlen(noteBuf) - 1)); #ifdef ENABLE_FC } else if(el->fcCounters->hostNumFcAddress[0] != '\0') { strncpy(symIp, el->fcCounters->hostNumFcAddress, sizeof(symIp)); #ifndef CMPFCTN_DEBUG if(myGlobals.runningPref.debugMode == 1) #endif safe_snprintf(__FILE__, __LINE__, noteBufAppend, sizeof(noteBufAppend), "", el->fcCounters->hostNumFcAddress); strncat(noteBuf, noteBufAppend, (sizeof(noteBuf) - strlen(noteBuf) - 1)); #endif } else if(el->nonIPTraffic) { if(el->nonIPTraffic->nbHostName != NULL) { strncpy(symIp, el->nonIPTraffic->nbHostName, sizeof(symIp)); strncat(noteBuf, " [NetBios]", (sizeof(noteBuf) - strlen(noteBuf) - 1)); } } else { if(mode == FLAG_HOSTLINK_HTML_FORMAT) return("<unknown>"); else return("<unknown>"); } } else { /* Got it? Use it! */ strncpy(symIp, el->hostResolvedName, sizeof(symIp)); copyShortHostName(symIp, sizeof(symIp), el->hostResolvedName); if((el->ethAddressString[0] != '\0') && subnetPseudoLocalHost(el) && hasWrongNetmask(el) ) { strncpy(linkName, el->ethAddressString, sizeof(linkName)); usedEthAddress = 1; } else strncpy(linkName, el->hostNumIpAddress, sizeof(linkName)); if(el->hostResolvedNameType == FLAG_HOST_SYM_ADDR_TYPE_NETBIOS) { strncat(noteBuf, " [NetBIOS]", (sizeof(noteBuf) - strlen(noteBuf) - 1)); } #ifndef CMPFCTN_DEBUG if(myGlobals.runningPref.debugMode == 1) #endif switch (el->hostResolvedNameType) { case FLAG_HOST_SYM_ADDR_TYPE_MAC: strncat(noteBuf, " [MAC]", (sizeof(noteBuf) - strlen(noteBuf) - 1)); break; case FLAG_HOST_SYM_ADDR_TYPE_IP: strncat(noteBuf, " [IP]", (sizeof(noteBuf) - strlen(noteBuf) - 1)); break; case FLAG_HOST_SYM_ADDR_TYPE_NETBIOS: /* Do nothing - handled in open code above */ break; case FLAG_HOST_SYM_ADDR_TYPE_NAME: break; } if((el->hostResolvedNameType == FLAG_HOST_SYM_ADDR_TYPE_NAME) && (el->ethAddressString[0] != '\0')) { strncpy(linkName, addrtostr(&(el->hostIpAddress)), sizeof(linkName)); } else if((el->hostResolvedNameType == FLAG_HOST_SYM_ADDR_TYPE_MAC) && (symIp[2] != ':') && (el->ethAddressString[0] != '\0')) { /* MAC address, one which has already been fixed up with the vendor string - set the alt tag */ if(el->hostResolvedName[0] != '\0') safe_snprintf(__FILE__, __LINE__, titleBuf, sizeof(titleBuf), "%s %s", titleBuf, el->hostResolvedName); else safe_snprintf(__FILE__, __LINE__, titleBuf, sizeof(titleBuf), "%s Actual MAC address is %s", titleBuf, el->ethAddressString); /* Un 'fix' the linkName so it goes back to the native page */ strncpy(linkName, el->ethAddressString, sizeof(linkName)); } } /* We know this is wasted effort if this is a fork()ed child, * so that routine will not do the update */ setHostFingerprint(el); /* From here on, we focus on setting a bunch of flags and add-ons to the * output (graphics, etc.) for the ultimate building of buf. * * These are: * * linkName - what do we link to * usedEthAddress - meaning it's a MAC address, show the NIC icon * symIp - what do we call it * dhcpBootpStr, multihomedStr, multivlanedStr, gwStr, brStr, dnsStr, printStr, * smtpStr, httpStr, ntpStr, healthStr, userStr, p2pStr -- these are all the addons */ if(symIp[strlen(symIp)-1] == ']') /* "... [MAC]" */ { usedEthAddress = 1; strncpy(symIp, el->ethAddressString, sizeof(symIp)); safe_snprintf(__FILE__, __LINE__, noteBuf, sizeof(noteBuf), "%s", noteBuf); } /* Do we add a 2nd column for the flag??? */ if(addCountryFlag == 0) flag[0] = '\0'; else { safe_snprintf(__FILE__, __LINE__, flag, sizeof(flag), "%s", getHostCountryIconURL(el)); } /* Set all the addon Str's */ if(isDHCPClient(el)) dhcpBootpStr = " " CONST_IMG_DHCP_CLIENT " "; else { if(isDHCPServer(el)) dhcpBootpStr = " " CONST_IMG_DHCP_SERVER " "; else dhcpBootpStr = ""; } if(isMultihomed(el)) multihomedStr = " " CONST_IMG_MULTIHOMED ; else multihomedStr = ""; if(isMultivlaned(el)) multivlanedStr = " " CONST_IMG_MULTIVLANED ; else multivlanedStr = ""; if(isBridgeHost(el)) brStr = " " CONST_IMG_BRIDGE ; else brStr = ""; if(gatewayHost(el)) gwStr = " " CONST_IMG_ROUTER ; else gwStr = ""; if(isVoIPHost(el)) voipHostStr = " " CONST_IMG_VOIP_HOST ; else voipHostStr = ""; if(nameServerHost(el)) dnsStr = " " CONST_IMG_DNS_SERVER ; else dnsStr = ""; if(isPrinter(el)) printStr = " " CONST_IMG_PRINTER ; else printStr = ""; if(isSMTPhost(el)) smtpStr = " " CONST_IMG_SMTP_SERVER ; else smtpStr = ""; if(isHTTPhost(el)) { httpStr = " " CONST_IMG_HTTP_SERVER ; httpSiteIcon(symIp, httpFavico, sizeof(httpFavico), 0); } else httpStr = "", httpFavico[0] = '\0'; if(isNtpServer(el)) ntpStr = " " CONST_IMG_NTP_SERVER ; else ntpStr = ""; if(el->protocolInfo != NULL) { if(el->protocolInfo->userList != NULL) userStr = " " CONST_IMG_HAS_USERS ; else userStr = ""; if(isP2P(el)) p2pStr = " " CONST_IMG_HAS_P2P ; else p2pStr = ""; } else { userStr = ""; p2pStr = ""; } switch(isHostHealthy(el)) { case 1: /* Minor */ healthStr = CONST_IMG_LOW_RISK; break; case 2: /* Warning */ healthStr = CONST_IMG_MEDIUM_RISK; break; case 3: /* Error */ healthStr = CONST_IMG_HIGH_RISK; break; default: /* OK, bad call */ healthStr = ""; break; } /* Flag set? Cutoff name at 1st . */ if(cutName && (symIp[0] != '*') && strcmp(symIp, el->hostNumIpAddress)) { for(i=0; symIp[i] != '\0'; i++) if(symIp[i] == '.') { symIp[i] = '\0'; break; } } /* If we haven't previously set linkName as part of an un-fixup, save off * symIP - before the remaining 'fixups' as the linkname */ if(linkName[0] == '\0') { strncpy(linkName, symIp, sizeof(linkName)); } if(linkName[0] == '\0') { safe_snprintf(__FILE__, __LINE__, noteBuf, sizeof(noteBuf), "%s", noteBuf); } /* Fixup ethernet addresses for RFC1945 compliance (: is bad, _ is good) */ for(i=0; linkName[i] != '\0'; i++) if(linkName[i] == ':') linkName[i] = '_'; /* Fixup display MAC address for vendor */ if(usedEthAddress) { char *vendorInfo; vendorInfo = getVendorInfo(el->ethAddress, 0); if(vendorInfo[0] != '\0') { safe_snprintf(__FILE__, __LINE__, symIp, sizeof(symIp), "%s%s", vendorInfo, &el->ethAddressString[8]); safe_snprintf(__FILE__, __LINE__, titleBuf, sizeof(titleBuf), "%s Actual MAC address is %s", titleBuf, el->ethAddressString); } } /* An Ethernet address is used - is it Special? */ if(symIp[2] == ':') { char *symEthName = getSpecialMacInfo(el, (short)(!myGlobals.separator[0])); if((symEthName != NULL) && (symEthName[0] != '\0')) safe_snprintf(__FILE__, __LINE__, symIp, sizeof(symIp), "%s%s", symEthName, &el->ethAddressString[8]); usedEthAddress = 1; } vlanStr[0] = '\0'; if(el->vlanId != NO_VLAN) { if(!isMultivlaned(el)) { char tmp[256], tmpBuf[64]; safe_snprintf(__FILE__, __LINE__, vlanStr, sizeof(vlanStr), "-%d", el->vlanId); safe_snprintf(__FILE__, __LINE__, tmp, sizeof(tmp), "%s (vlan %s)", symIp, vlan2name(el->vlanId, tmpBuf, sizeof(tmpBuf))); safe_snprintf(__FILE__, __LINE__, symIp, sizeof(symIp), "%s", tmp); } } if((el->hostNumIpAddress[0] != '\0') && (!subnetPseudoLocalHost(el)) && (!multicastHost(el)) && (!privateIPAddress(el)) && myGlobals.runningPref.mapperURL) { buildMapLink(el, mapStr, sizeof(mapStr)); } else mapStr[0] = '\0'; if(el->hwModel) snprintf(tooltip, sizeof(tooltip), "title=\"%s\" class=tooltip", el->hwModel); else if(el->description) snprintf(tooltip, sizeof(tooltip), "title=\"%s\" class=tooltip", el->description); else if(el->fingerprint) snprintf(tooltip, sizeof(tooltip), "title=\"%s\" class=tooltip", &el->fingerprint[1]); else snprintf(tooltip, sizeof(tooltip), " class=tooltip"); /* Make the hostlink */ if(mode == FLAG_HOSTLINK_HTML_FORMAT) { safe_snprintf(__FILE__, __LINE__, buf, bufLen, "\n" "%s%s%s\n" "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s   %s\n", tooltip, linkName, vlanStr, titleBuf[0] != '\0' ? "title=\"" : "", titleBuf, titleBuf[0] != '\0' ? "\"" : "", httpFavico, (custom_host_name[0] != '\0') ? custom_host_name : symIp, noteBuf, getOSFlag(el, NULL, 0, osBuf, sizeof(osBuf)), dhcpBootpStr, multihomedStr, multivlanedStr, usedEthAddress ? CONST_IMG_NIC_CARD : "", gwStr, voipHostStr, brStr, dnsStr, printStr, smtpStr, httpStr, ntpStr, healthStr, userStr, p2pStr, mapStr, flag); } else if(mode == FLAG_HOSTLINK_TEXT_LITE_FORMAT) { safe_snprintf(__FILE__, __LINE__, buf, bufLen, "/%s%s.html", linkName, vlanStr); } else { safe_snprintf(__FILE__, __LINE__, buf, bufLen, "%s%s%s\n" "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n", tooltip, linkName, vlanStr, makeHostAgeStyleSpec(el, colorSpec, sizeof(colorSpec)), titleBuf[0] != '\0' ? "title=\"" : "", titleBuf, titleBuf[0] != '\0' ? "\"" : "", httpFavico, (custom_host_name[0] != '\0') ? custom_host_name : symIp, noteBuf, dhcpBootpStr, multihomedStr, multivlanedStr, usedEthAddress ? CONST_IMG_NIC_CARD : "", gwStr, voipHostStr, brStr, dnsStr, printStr, smtpStr, httpStr, ntpStr, healthStr, userStr, p2pStr, mapStr, flag); } return(buf); } /* ******************************* */ char* getHostName(HostTraffic *el, short cutName, char *buf, int bufLen) { char *tmpStr; if(broadcastHost(el)) return("broadcast"); tmpStr = el->hostResolvedName; if(broadcastHost(el)) { strcpy (buf, "broadcast"); } else { tmpStr = el->hostResolvedName; if((tmpStr == NULL) || (tmpStr[0] == '\0')) { /* The DNS is still getting the entry name */ if(el->hostNumIpAddress[0] != '\0') strncpy(buf, el->hostNumIpAddress, 80); else strncpy(buf, el->ethAddressString, 80); } else if(tmpStr[0] != '\0') { strncpy(buf, tmpStr, 80); if(cutName) { int i; for(i=0; buf[i] != '\0'; i++) if((buf[i] == '.') && (!(isdigit(buf[i-1]) && isdigit(buf[i+1])) )) { buf[i] = '\0'; break; } } } else strncpy(buf, el->ethAddressString, 80); } return(buf); } /* ********************************** */ char* calculateCellColor(Counter actualValue, Counter avgTrafficLow, Counter avgTrafficHigh) { if(actualValue < avgTrafficLow) return("BGCOLOR=#AAAAAAFF"); /* light blue */ else if(actualValue < avgTrafficHigh) return("BGCOLOR=#00FF75"); /* light green */ else return("BGCOLOR=#FF7777"); /* light red */ } /* ************************ */ char* getHostCountryIconURL(HostTraffic *el) { char path[256], *img = NULL; static char flagBuf[384]; struct stat buf; int rc; fillDomainName(el); if(el->geo_ip == NULL) { #if 0 safe_snprintf(__FILE__, __LINE__, flagBuf, sizeof(flagBuf), "\"Local"); #endif return(" "); } if(el->geo_ip->country_code[0] == '\0') { safe_snprintf(__FILE__, __LINE__, flagBuf, sizeof(flagBuf), "\"Local"); } else { char c_buf[16] = { '\0'}; int i; safe_snprintf(__FILE__, __LINE__, c_buf, sizeof(c_buf)-1, "%s", el->geo_ip->country_code); for(i=0; c_buf[i] != '\0'; i++) c_buf[i] = tolower(c_buf[i]); safe_snprintf(__FILE__, __LINE__, path, sizeof(path), "./html/statsicons/flags/%s.gif", c_buf); revertSlashIfWIN32(path, 0); rc = stat(path, &buf); if(rc != 0) { safe_snprintf(__FILE__, __LINE__, path, sizeof(path), "%s/html/statsicons/flags/%s.gif", CFG_DATAFILE_DIR, c_buf); revertSlashIfWIN32(path, 0); rc = stat(path, &buf); } if(rc == 0) img = c_buf; /* traceEvent(CONST_TRACE_WARNING, "%s", path); */ } if(img == NULL) { /* Nothing worked... */ safe_snprintf(__FILE__, __LINE__, flagBuf, sizeof(flagBuf), " ", el->geo_ip->country_name, el->geo_ip->country_code); } else { safe_snprintf(__FILE__, __LINE__, flagBuf, sizeof(flagBuf), "\"Flag", el->geo_ip->country_name, el->geo_ip->country_code, el->geo_ip->country_name, el->geo_ip->country_code, img); } return(flagBuf); } /* ******************************* */ char* getRowColor(void) { #ifdef PARM_USE_COLOR if(alternateColor == 0) { alternateColor = 1; return("BGCOLOR=#C3C9D9"); /* EFEFEF */ } else { alternateColor = 0; return(""); } #else return(""); #endif } /* ******************************* */ char* getActualRowColor(void) { #ifdef PARM_USE_COLOR if(alternateColor == 1) { return("BGCOLOR=#EFEFEF"); } else return(""); #else return(""); #endif } /* ******************************* */ void printSwitchNwInterfaceHeader(void) { char buf[LEN_GENERAL_WORK_BUFFER]; printHTMLheader("Network Interface Switch", NULL, BITFLAG_HTML_NO_REFRESH); sendString("
\n"); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "

Note that " "the NetFlow and sFlow plugins - if enabled - force -M to be set (i.e. " "they disable interface merging).

\n"); sendString(buf); sendString("

\n\n"); } /* ******************************* */ void switchNwInterface(int _interface) { int i, mwInterface=_interface-1, found = 0; char buf[LEN_GENERAL_WORK_BUFFER], *selected; for(i=0; i= myGlobals.numDevices) || myGlobals.device[mwInterface].virtualDevice)) { printSwitchNwInterfaceHeader(); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "Sorry, invalid interface selected."); sendString(buf); } else if((myGlobals.numDevices == 1) || (!found)) { printSwitchNwInterfaceHeader(); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "Sorry, you are currently capturing traffic from only a " "single/dummy interface [%s].

" "
This interface switch feature is meaningful only when your ntop " "instance captures traffic from multiple interfaces.
You must specify " "additional interfaces via the -i command line switch at run time.", myGlobals.device[myGlobals.actualReportDeviceId].name); sendString(buf); } else if(mwInterface >= 0) { char value[8]; myGlobals.actualReportDeviceId = (mwInterface)%myGlobals.numDevices; storePrefsValue("actualReportDeviceId", value); printSwitchNwInterfaceHeader(); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "The current interface is now [%s].", myGlobals.device[myGlobals.actualReportDeviceId].name); sendString(buf); safe_snprintf(__FILE__, __LINE__, value, sizeof(value), "%d", myGlobals.actualReportDeviceId); } else { u_short do_enable; printSwitchNwInterfaceHeader(); sendString("Available Network Interfaces:

\n

\n"); if(((!myGlobals.device[myGlobals.actualReportDeviceId].virtualDevice) || (myGlobals.device[myGlobals.actualReportDeviceId].sflowGlobals) || (myGlobals.device[myGlobals.actualReportDeviceId].netflowGlobals)) && myGlobals.device[myGlobals.actualReportDeviceId].activeDevice) { do_enable = 0; } else do_enable = 1; for(i=0; i %s [id=%d]
\n", i+1, selected, myGlobals.device[i].humanFriendlyName, i); sendString(buf); } sendString("

 \n

\n"); sendString(""); } sendString(""); sendString("


\n"); } /* **************************************** */ void shutdownNtop(void) { char buf[LEN_GENERAL_WORK_BUFFER]; time_t theTime = time(NULL); memset(&buf, 0, sizeof(buf)); traceEvent(CONST_TRACE_ALWAYSDISPLAY, "WEB: shutdown.html - request has been received - processing"); sendHTTPHeader(FLAG_HTTP_TYPE_HTML, 0, 1); printHTMLheader("ntop is shutting down...", NULL, BITFLAG_HTML_NO_REFRESH); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "

Shutdown request received %s is being processed, and the " "ntop web server is closing down.

\n", ctime(&theTime)); sendString(buf); theTime = time(NULL) + 2*PARM_SLEEP_LIMIT + 5; safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "

Please allow up to %d seconds (until approximately %s) for all threads to terminate " "and the shutdown request to complete.

\n" "

You will not receive further messages.

\n", 2*PARM_SLEEP_LIMIT + 5, ctime(&theTime)); sendString(buf); sendString("\n" ""); /* Return and let the web page finish up */ } /* ******************************** */ /* WARNING WARNING WARNING * * Be very careful with closing tags in this section. The slightest screw-up will cause * browsers other than IE to handle these tables in ways you don't expect (usually making * each cell as wide as the widest, vs. respecting the WIDTH tags. * */ static void printInfoSectionTitle(int textPrintFlag, char* section) { sendString(texthtml("\n\n", "")); sendString(section); sendString(texthtml("\n\n", "\n")); } static void printInfoSectionNote(int textPrintFlag, char* note) { if(textPrintFlag != TRUE) { sendString("\n" "\n" "\n
NOTE:"); sendString(note); sendString("
\n\n"); } } static void printFeatureConfigNum(int textPrintFlag, char* feature, int value) { char tmpBuf[32]; sendString(texthtml("", "")); sendString(feature); sendString(texthtml(".....", "\n")); safe_snprintf(__FILE__, __LINE__, tmpBuf, sizeof(tmpBuf), "%d", value); sendString(tmpBuf); sendString(texthtml("\n", "\n")); } static void printFeatureConfigInfoHeader(int textPrintFlag, char *feature) { sendString(texthtml("", "")); sendString(feature); sendString(texthtml(".....", "\n")); } static void printFeatureConfigInfoFooter(int textPrintFlag) { sendString(texthtml("\n", "\n")); } static void printFeatureConfigInfo(int textPrintFlag, char* feature, char* status) { char *tmpStr, tmpBuf[LEN_GENERAL_WORK_BUFFER]; char *strtokState; printFeatureConfigInfoHeader(textPrintFlag, feature); if((status == NULL) || (status[0] == '\0')) { sendString("(nil)"); } else { safe_snprintf(__FILE__, __LINE__, tmpBuf, sizeof(tmpBuf), "%s", status); tmpStr = strtok_r(tmpBuf, "\n", &strtokState); while(tmpStr != NULL) { sendString(tmpStr); tmpStr = strtok_r(NULL, "\n", &strtokState); if(tmpStr != NULL) { sendString(texthtml("\n ", "
")); } } } printFeatureConfigInfoFooter(textPrintFlag); } static void printFeatureConfigTitle3Col(int textPrintFlag, char *textTitle, char *c1, char *c2, char *c3) { if(textPrintFlag == TRUE) { sendString(textTitle); } else { sendString(""); sendString(c1); sendString("\n"); sendString(c2); sendString("\n"); sendString(c3); sendString("\n\n"); } } static void printFeatureConfigInfo3ColInt(int textPrintFlag, char* feature, int flag1, int count1, int flag2, int count2, int mustShow) { char tmpBuf[LEN_GENERAL_WORK_BUFFER]; if((mustShow == FALSE) && (count1+count2 == 0)) { return; } sendString(texthtml("", "")); sendString(feature); sendString(texthtml(".....", "\n")); if (flag1) { safe_snprintf(__FILE__, __LINE__, tmpBuf, sizeof(tmpBuf), "%d", count1); sendString(tmpBuf); } else { sendString("-"); } sendString(texthtml(".....", "\n")); if (flag2) { safe_snprintf(__FILE__, __LINE__, tmpBuf, sizeof(tmpBuf), "%d", count2); sendString(tmpBuf); } else { sendString("-"); } sendString(texthtml("\n", "\n")); } #ifdef MAX_PROCESS_BUFFER static void printFeatureConfigInfo3ColFlt6(int textPrintFlag, char* feature, int flag1, float value1, int flag2, float value2, int mustShow) { char tmpBuf[LEN_GENERAL_WORK_BUFFER]; if((mustShow == FALSE) && (value1 == 0.0) && (value2 == 0.0)) { return; } sendString(texthtml("", "")); sendString(feature); sendString(texthtml(".....", "\n")); if (flag1) { safe_snprintf(__FILE__, __LINE__, tmpBuf, sizeof(tmpBuf), "%.6f", value1); sendString(tmpBuf); } else { sendString(texthtml(" ", " ")); } sendString(texthtml(".....", "\n")); if (flag2) { safe_snprintf(__FILE__, __LINE__, tmpBuf, sizeof(tmpBuf), "%.6f", value2); sendString(tmpBuf); } else { sendString(texthtml(" ", " ")); } sendString(texthtml("\n", "\n")); } #endif /* ******************************** */ static void printParameterConfigInfo(int textPrintFlag, char* feature, char* status, char* defaultValue) { sendString(texthtml("", "")); sendString(feature); sendString(texthtml(".....", "\n")); if(status == NULL) { if(defaultValue == NULL) { sendString(CONST_REPORT_ITS_DEFAULT); } } else if( (defaultValue != NULL) && (strcmp(status, defaultValue) == 0) ){ sendString(CONST_REPORT_ITS_DEFAULT); } if((status == NULL) ||(status[0] == '\0')) { sendString("(nil)"); } else { sendString(status); } sendString(texthtml("\n", "\n")); } /* ******************************** */ void printNtopConfigHInfo(int textPrintFlag) { #ifndef WIN32 char buf[LEN_GENERAL_WORK_BUFFER]; #endif printInfoSectionTitle(textPrintFlag, "Compile Time: Debug settings in globals-defines.h"); printFeatureConfigInfo(textPrintFlag, "DEBUG", #ifdef DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "ADDRESS_DEBUG", #ifdef ADDRESS_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "CHKVER_DEBUG", #ifdef CHKVER_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "CMPFCTN_DEBUG", #ifdef CMPFCTN_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "DNS_DEBUG", #ifdef DNS_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "DNS_SNIFF_DEBUG", #ifdef DNS_SNIFF_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "FC_DEBUG", #ifdef FC_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "FINGERPRINT_DEBUG", #ifdef FINGERPRINT_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "FRAGMENT_DEBUG", #ifdef FRAGMENT_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "FTP_DEBUG", #ifdef FTP_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "GDBM_DEBUG", #ifdef GDBM_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HASH_DEBUG", #ifdef HASH_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HOST_FREE_DEBUG", #ifdef HOST_FREE_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HTTP_DEBUG", #ifdef HTTP_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "IDLE_PURGE_DEBUG", #ifdef IDLE_PURGE_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "INITWEB_DEBUG", #ifdef INITWEB_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "LATENCY_DEBUG", #ifdef LATENCY_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "MEMORY_DEBUG", #ifdef MEMORY_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "MUTEX_DEBUG", #ifdef MUTEX_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "NETFLOW_DEBUG", #ifdef NETFLOW_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "P2P_DEBUG", #ifdef P2P_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "PACKET_DEBUG", #ifdef PACKET_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "PARAM_DEBUG", #ifdef PARAM_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "PLUGIN_DEBUG", #ifdef PLUGIN_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "PROBLEMREPORTID_DEBUG", #ifdef PROBLEMREPORTID_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "SESSION_TRACE_DEBUG", #ifdef SESSION_TRACE_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "STORAGE_DEBUG", #ifdef STORAGE_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "UNKNOWN_PACKET_DEBUG", #ifdef UNKNOWN_PACKET_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "URL_DEBUG", #ifdef URL_DEBUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "VENDOR_DEBUG", #ifdef VENDOR_DEBUG "yes" #else "no" #endif ); printInfoSectionTitle(textPrintFlag, "Compile Time: config.h"); /* * Drop the autogenerated lines (utils/config_h2.awk) in HERE */ /* B E G I N * * Autogenerated from config.h.in and inserted into webInterface.c * Tue Aug 09 16:25:26 CDT 2005 * */ printFeatureConfigInfo(textPrintFlag, "CFG_ETHER_HEADER_HAS_EA", #ifdef CFG_ETHER_HEADER_HAS_EA "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_ALARM", #ifdef HAVE_ALARM "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_ARPA_INET_H", #ifdef HAVE_ARPA_INET_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_ARPA_NAMESER_H", #ifdef HAVE_ARPA_NAMESER_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_BACKTRACE", #ifdef HAVE_BACKTRACE "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_CRYPT_H", #ifdef HAVE_CRYPT_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_DIRENT_H", #ifdef HAVE_DIRENT_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_DLADDR", #ifdef HAVE_DLADDR "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_DLFCN_H", #ifdef HAVE_DLFCN_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_DL_H", #ifdef HAVE_DL_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_DOPRNT", #ifdef HAVE_DOPRNT "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_ENDPWENT", #ifdef HAVE_ENDPWENT "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_ERRNO_H", #ifdef HAVE_ERRNO_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_FACILITYNAMES", #ifdef HAVE_FACILITYNAMES "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_FCNTL_H", #ifdef HAVE_FCNTL_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_FINITE", #ifdef HAVE_FINITE "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_FLOAT_H", #ifdef HAVE_FLOAT_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_FORK", #ifdef HAVE_FORK "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_GDBM_H", #ifdef HAVE_GDBM_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_GD_H", #ifdef HAVE_GD_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_GDOME_H", #ifdef HAVE_GDOME_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_GETHOSTBYNAME", #ifdef HAVE_GETHOSTBYNAME "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_GETHOSTNAME", #ifdef HAVE_GETHOSTNAME "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_GETOPT_H", #ifdef HAVE_GETOPT_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_GETPASS", #ifdef HAVE_GETPASS "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_GETTIMEOFDAY", #ifdef HAVE_GETTIMEOFDAY "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_GLIBCONFIG_H", #ifdef HAVE_GLIBCONFIG_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_GLIB_H", #ifdef HAVE_GLIB_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_ICMP6_H", #ifdef HAVE_ICMP6_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_IEEEFP_H", #ifdef HAVE_IEEEFP_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_IF_H", #ifdef HAVE_IF_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_IFLIST_SYSCTL", #ifdef HAVE_IFLIST_SYSCTL "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_IN6_ADDR", #ifdef HAVE_IN6_ADDR "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_INT16_T", #ifdef HAVE_INT16_T "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_INT32_T", #ifdef HAVE_INT32_T "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_INT64_T", #ifdef HAVE_INT64_T "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_INT8_T", #ifdef HAVE_INT8_T "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_INTTYPES_H", #ifdef HAVE_INTTYPES_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_IP6_H", #ifdef HAVE_IP6_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_ISFINITE", #ifdef HAVE_ISFINITE "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_ISINF", #ifdef HAVE_ISINF "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LANGINFO_H", #ifdef HAVE_LANGINFO_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LIBC", #ifdef HAVE_LIBC "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LIBC_R", #ifdef HAVE_LIBC_R "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LIBCRYPT", #ifdef HAVE_LIBCRYPT "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LIBCRYPTO", #ifdef HAVE_LIBCRYPTO "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LIBDL", #ifdef HAVE_LIBDL "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LIBGD", #ifdef HAVE_LIBGD "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LIBGDBM", #ifdef HAVE_LIBGDBM "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LIBGDOME", #ifdef HAVE_LIBGDOME "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LIBGLIB", #ifdef HAVE_LIBGLIB "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LIBM", #ifdef HAVE_LIBM "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LIBNSL", #ifdef HAVE_LIBNSL "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LIBPCAP", #ifdef HAVE_LIBPCAP "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LIBPOSIX4", #ifdef HAVE_LIBPOSIX4 "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LIBPTHREAD", #ifdef HAVE_LIBPTHREAD "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LIBPTHREADS", #ifdef HAVE_LIBPTHREADS "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LIBRESOLV", #ifdef HAVE_LIBRESOLV "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LIBSOCKET", #ifdef HAVE_LIBSOCKET "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LIBSSL", #ifdef HAVE_LIBSSL "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LIBXML2", #ifdef HAVE_LIBXML2 "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LIBXNET", #ifdef HAVE_LIBXNET "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LIBZ", #ifdef HAVE_LIBZ "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LIMITS_H", #ifdef HAVE_LIMITS_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LINUX_IF_PPPOX_H", #ifdef HAVE_LINUX_IF_PPPOX_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LOCALE_H", #ifdef HAVE_LOCALE_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LOCALTIME_R", #ifdef HAVE_LOCALTIME_R "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_LONG_DOUBLE", #ifdef HAVE_LONG_DOUBLE "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_MALLINFO_MALLOC_H", #ifdef HAVE_MALLINFO_MALLOC_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_MALLOC_H", #ifdef HAVE_MALLOC_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_MATH_H", #ifdef HAVE_MATH_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_MEMCHR", #ifdef HAVE_MEMCHR "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_MEMORY_H", #ifdef HAVE_MEMORY_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_MEMSET", #ifdef HAVE_MEMSET "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_NDIR_H", #ifdef HAVE_NDIR_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_NET_BPF_H", #ifdef HAVE_NET_BPF_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_NET_ETHERNET_H", #ifdef HAVE_NET_ETHERNET_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_NET_IF_DL_H", #ifdef HAVE_NET_IF_DL_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_NET_IF_H", #ifdef HAVE_NET_IF_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_NETINET_ICMP6_H", #ifdef HAVE_NETINET_ICMP6_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_NETINET_IF_ETHER_H", #ifdef HAVE_NETINET_IF_ETHER_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_NETINET_IN_H", #ifdef HAVE_NETINET_IN_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_NETINET_IN_SYSTM_H", #ifdef HAVE_NETINET_IN_SYSTM_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_NETINET_IP6_H", #ifdef HAVE_NETINET_IP6_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_NETINET_IP_H", #ifdef HAVE_NETINET_IP_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_NETINET_TCP_H", #ifdef HAVE_NETINET_TCP_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_NETINET_UDP_H", #ifdef HAVE_NETINET_UDP_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_NET_PPP_DEFS_H", #ifdef HAVE_NET_PPP_DEFS_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_NET_ROUTE_H", #ifdef HAVE_NET_ROUTE_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_NET_SNMP_NET_SNMP_CONFIG_H", #ifdef HAVE_NET_SNMP_NET_SNMP_CONFIG_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_OPENSSL", #ifdef HAVE_OPENSSL "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_OPENSSL_CRYPTO_H", #ifdef HAVE_OPENSSL_CRYPTO_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_OPENSSL_ERR_H", #ifdef HAVE_OPENSSL_ERR_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_OPENSSL_PEM_H", #ifdef HAVE_OPENSSL_PEM_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_OPENSSL_RSA_H", #ifdef HAVE_OPENSSL_RSA_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_OPENSSL_SSL_H", #ifdef HAVE_OPENSSL_SSL_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_OPENSSL_X509_H", #ifdef HAVE_OPENSSL_X509_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_PTHREAD_ATFORK", #ifdef HAVE_PTHREAD_ATFORK "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_PTHREAD_H", #ifdef HAVE_PTHREAD_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_PUTENV", #ifdef HAVE_PUTENV "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_PWD_H", #ifdef HAVE_PWD_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SCHED_H", #ifdef HAVE_SCHED_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SCTP", #ifdef HAVE_SCTP "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SECURITY_PAM_APPL_H", #ifdef HAVE_SECURITY_PAM_APPL_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SELECT", #ifdef HAVE_SELECT "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SETJMP_H", #ifdef HAVE_SETJMP_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SHADOW_H", #ifdef HAVE_SHADOW_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SIGNAL_H", #ifdef HAVE_SIGNAL_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SNMP", #ifdef HAVE_SNMP "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SNPRINTF", #ifdef HAVE_SNPRINTF "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SOCKET", #ifdef HAVE_SOCKET "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SQRT", #ifdef HAVE_SQRT "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STAT_EMPTY_STRING_BUG", #ifdef HAVE_STAT_EMPTY_STRING_BUG "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STDARG_H", #ifdef HAVE_STDARG_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STDDEF_H", #ifdef HAVE_STDDEF_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STDINT_H", #ifdef HAVE_STDINT_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STDIO_H", #ifdef HAVE_STDIO_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STDLIB_H", #ifdef HAVE_STDLIB_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STRCASECMP", #ifdef HAVE_STRCASECMP "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STRCHR", #ifdef HAVE_STRCHR "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STRCSPN", #ifdef HAVE_STRCSPN "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STRDUP", #ifdef HAVE_STRDUP "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STRERROR", #ifdef HAVE_STRERROR "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STRFTIME", #ifdef HAVE_STRFTIME "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STRING_H", #ifdef HAVE_STRING_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STRINGS_H", #ifdef HAVE_STRINGS_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STRNCASECMP", #ifdef HAVE_STRNCASECMP "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STRPBRK", #ifdef HAVE_STRPBRK "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STRRCHR", #ifdef HAVE_STRRCHR "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STRSIGNAL", #ifdef HAVE_STRSIGNAL "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STRSPN", #ifdef HAVE_STRSPN "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STRSTR", #ifdef HAVE_STRSTR "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STRTOK_R", #ifdef HAVE_STRTOK_R "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STRTOUL", #ifdef HAVE_STRTOUL "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_STRUCT_TM_TM_ZONE", #ifdef HAVE_STRUCT_TM_TM_ZONE "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SYSCTL", #ifdef HAVE_SYSCTL "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SYS_DIR_H", #ifdef HAVE_SYS_DIR_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SYS_IOCTL_H", #ifdef HAVE_SYS_IOCTL_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SYS_LDR_H", #ifdef HAVE_SYS_LDR_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SYSLOG_H", #ifdef HAVE_SYSLOG_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SYS_NDIR_H", #ifdef HAVE_SYS_NDIR_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SYS_PARAM_H", #ifdef HAVE_SYS_PARAM_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SYS_RESOURCE_H", #ifdef HAVE_SYS_RESOURCE_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SYS_SCHED_H", #ifdef HAVE_SYS_SCHED_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SYS_SELECT_H", #ifdef HAVE_SYS_SELECT_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SYS_SOCKET_H", #ifdef HAVE_SYS_SOCKET_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SYS_SOCKIO_H", #ifdef HAVE_SYS_SOCKIO_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SYS_STAT_H", #ifdef HAVE_SYS_STAT_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SYS_SYSCTL_H", #ifdef HAVE_SYS_SYSCTL_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SYS_SYSLOG_H", #ifdef HAVE_SYS_SYSLOG_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SYS_TIME_H", #ifdef HAVE_SYS_TIME_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SYS_TYPES_H", #ifdef HAVE_SYS_TYPES_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SYS_UN_H", #ifdef HAVE_SYS_UN_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SYS_UTSNAME_H", #ifdef HAVE_SYS_UTSNAME_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_SYS_WAIT_H", #ifdef HAVE_SYS_WAIT_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_TCPD_H", #ifdef HAVE_TCPD_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_TM_ZONE", #ifdef HAVE_TM_ZONE "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_TZNAME", #ifdef HAVE_TZNAME "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_U_INT16_T", #ifdef HAVE_U_INT16_T "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_U_INT32_T", #ifdef HAVE_U_INT32_T "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_U_INT64_T", #ifdef HAVE_U_INT64_T "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_u_int64_T", #ifdef HAVE_u_int64_T "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_U_INT8_T", #ifdef HAVE_U_INT8_T "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_UNAME", #ifdef HAVE_UNAME "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_UNISTD_H", #ifdef HAVE_UNISTD_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_VFORK", #ifdef HAVE_VFORK "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_VFORK_H", #ifdef HAVE_VFORK_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_VPRINTF", #ifdef HAVE_VPRINTF "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_WORKING_FORK", #ifdef HAVE_WORKING_FORK "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_WORKING_VFORK", #ifdef HAVE_WORKING_VFORK "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "HAVE_ZLIB_H", #ifdef HAVE_ZLIB_H "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "LSTAT_FOLLOWS_SLASHED_SYMLINK", #ifdef LSTAT_FOLLOWS_SLASHED_SYMLINK "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "MAKE_STATIC_PLUGIN", #ifdef MAKE_STATIC_PLUGIN "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "MAKE_WITH_JUMBO_FRAMES", #ifdef MAKE_WITH_JUMBO_FRAMES "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "MAKE_WITH_SNMP", #ifdef MAKE_WITH_SNMP "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "MAKE_WITH_ZLIB", #ifdef MAKE_WITH_ZLIB "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "SETVBUF_REVERSED", #ifdef SETVBUF_REVERSED "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "STDC_HEADERS", #ifdef STDC_HEADERS "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "TIME_WITH_SYS_TIME", #ifdef TIME_WITH_SYS_TIME "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "TM_IN_SYS_TIME", #ifdef TM_IN_SYS_TIME "yes" #else "no" #endif ); /* E N D * * Autogenerated from config.h.in and inserted into webInterface.c * */ /* Manual lines for special cases in config.h */ printFeatureConfigInfo(textPrintFlag, "CFG_CONFIGFILE_DIR - config file directory", CFG_CONFIGFILE_DIR); printFeatureConfigInfo(textPrintFlag, "CFG_DATAFILE_DIR - data file directory", CFG_DATAFILE_DIR); printFeatureConfigInfo(textPrintFlag, "CFG_DBFILE_DIR - database file directory", CFG_DBFILE_DIR); printFeatureConfigInfo(textPrintFlag, "CFG_PLUGIN_DIR - plugin file directory", CFG_PLUGIN_DIR); #ifdef CFG_RUN_DIR printFeatureConfigInfo(textPrintFlag, "CFG_RUN_DIR - run file directory", CFG_RUN_DIR); #endif printFeatureConfigInfo(textPrintFlag, "CFG_xxxxxx_ENDIAN (Hardware Endian)", #if defined(CFG_LITTLE_ENDIAN) "little" #elif defined(CFG_BIG_ENDIAN) "big" #else "unknown" #endif ); /* semi auto generated from globals-defines.h */ printInfoSectionTitle(textPrintFlag, "Compile Time: globals-defines.h"); /* B E G I N * * Autogenerated from globals-defines.h and inserted into webInterface.c * Tue Aug 09 16:25:26 CDT 2005 * */ #ifdef CONST_ABTNTOP_HTML printFeatureConfigInfo(textPrintFlag, "CONST_ABTNTOP_HTML", CONST_ABTNTOP_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_ABTNTOP_HTML", "undefined"); #endif #ifdef CONST_ADD_URLS_HTML printFeatureConfigInfo(textPrintFlag, "CONST_ADD_URLS_HTML", CONST_ADD_URLS_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_ADD_URLS_HTML", "undefined"); #endif #ifdef CONST_ADD_USERS_HTML printFeatureConfigInfo(textPrintFlag, "CONST_ADD_USERS_HTML", CONST_ADD_USERS_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_ADD_USERS_HTML", "undefined"); #endif #ifdef CONST_ADMINPW_QUESTION printFeatureConfigInfo(textPrintFlag, "CONST_ADMINPW_QUESTION", CONST_ADMINPW_QUESTION); #else printFeatureConfigInfo(textPrintFlag, "CONST_ADMINPW_QUESTION", "undefined"); #endif #ifdef CONST_APACHELOG_TIMESPEC printFeatureConfigInfo(textPrintFlag, "CONST_APACHELOG_TIMESPEC", CONST_APACHELOG_TIMESPEC); #else printFeatureConfigInfo(textPrintFlag, "CONST_APACHELOG_TIMESPEC", "undefined"); #endif #ifdef CONST_ASLIST_FILE printFeatureConfigInfo(textPrintFlag, "CONST_ASLIST_FILE", CONST_ASLIST_FILE); #else printFeatureConfigInfo(textPrintFlag, "CONST_ASLIST_FILE", "undefined"); #endif #ifdef CONST_AS_LIST_HTML printFeatureConfigInfo(textPrintFlag, "CONST_AS_LIST_HTML", CONST_AS_LIST_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_AS_LIST_HTML", "undefined"); #endif #ifdef CONST_BAR_ALLPROTO_DIST printFeatureConfigInfo(textPrintFlag, "CONST_BAR_ALLPROTO_DIST", CONST_BAR_ALLPROTO_DIST); #else printFeatureConfigInfo(textPrintFlag, "CONST_BAR_ALLPROTO_DIST", "undefined"); #endif #ifdef CONST_BAR_FC_PROTO_DIST printFeatureConfigInfo(textPrintFlag, "CONST_BAR_FC_PROTO_DIST", CONST_BAR_FC_PROTO_DIST); #else printFeatureConfigInfo(textPrintFlag, "CONST_BAR_FC_PROTO_DIST", "undefined"); #endif #ifdef CONST_BAR_HOST_DISTANCE printFeatureConfigInfo(textPrintFlag, "CONST_BAR_HOST_DISTANCE", CONST_BAR_HOST_DISTANCE); #else printFeatureConfigInfo(textPrintFlag, "CONST_BAR_HOST_DISTANCE", "undefined"); #endif #ifdef CONST_BAR_LUNSTATS_DIST printFeatureConfigInfo(textPrintFlag, "CONST_BAR_LUNSTATS_DIST", CONST_BAR_LUNSTATS_DIST); #else printFeatureConfigInfo(textPrintFlag, "CONST_BAR_LUNSTATS_DIST", "undefined"); #endif #ifdef CONST_BAR_VSAN_TRAF_DIST_RCVD printFeatureConfigInfo(textPrintFlag, "CONST_BAR_VSAN_TRAF_DIST_RCVD", CONST_BAR_VSAN_TRAF_DIST_RCVD); #else printFeatureConfigInfo(textPrintFlag, "CONST_BAR_VSAN_TRAF_DIST_RCVD", "undefined"); #endif #ifdef CONST_BAR_VSAN_TRAF_DIST_SENT printFeatureConfigInfo(textPrintFlag, "CONST_BAR_VSAN_TRAF_DIST_SENT", CONST_BAR_VSAN_TRAF_DIST_SENT); #else printFeatureConfigInfo(textPrintFlag, "CONST_BAR_VSAN_TRAF_DIST_SENT", "undefined"); #endif #ifdef CONST_BROADCAST_ENTRY printFeatureConfigNum(textPrintFlag, "CONST_BROADCAST_ENTRY", CONST_BROADCAST_ENTRY); #else printFeatureConfigInfo(textPrintFlag, "CONST_BROADCAST_ENTRY", "undefined"); #endif #ifdef CONST_CGI_HEADER printFeatureConfigInfo(textPrintFlag, "CONST_CGI_HEADER", CONST_CGI_HEADER); #else printFeatureConfigInfo(textPrintFlag, "CONST_CGI_HEADER", "undefined"); #endif #ifdef CONST_CHANGE_FILTER_HTML printFeatureConfigInfo(textPrintFlag, "CONST_CHANGE_FILTER_HTML", CONST_CHANGE_FILTER_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_CHANGE_FILTER_HTML", "undefined"); #endif #ifdef CONST_CLUSTER_STATS_HTML printFeatureConfigInfo(textPrintFlag, "CONST_CLUSTER_STATS_HTML", CONST_CLUSTER_STATS_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_CLUSTER_STATS_HTML", "undefined"); #endif #ifdef CONST_COLOR_1 printFeatureConfigInfo(textPrintFlag, "CONST_COLOR_1", CONST_COLOR_1); #else printFeatureConfigInfo(textPrintFlag, "CONST_COLOR_1", "undefined"); #endif #ifdef CONST_COLOR_2 printFeatureConfigInfo(textPrintFlag, "CONST_COLOR_2", CONST_COLOR_2); #else printFeatureConfigInfo(textPrintFlag, "CONST_COLOR_2", "undefined"); #endif #ifdef CONST_CONFIG_NTOP_HTML printFeatureConfigInfo(textPrintFlag, "CONST_CONFIG_NTOP_HTML", CONST_CONFIG_NTOP_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_CONFIG_NTOP_HTML", "undefined"); #endif #ifdef CONST_CONST_PCTG_LOW_COLOR printFeatureConfigInfo(textPrintFlag, "CONST_CONST_PCTG_LOW_COLOR", CONST_CONST_PCTG_LOW_COLOR); #else printFeatureConfigInfo(textPrintFlag, "CONST_CONST_PCTG_LOW_COLOR", "undefined"); #endif #ifdef CONST_CONST_PCTG_MID_COLOR printFeatureConfigInfo(textPrintFlag, "CONST_CONST_PCTG_MID_COLOR", CONST_CONST_PCTG_MID_COLOR); #else printFeatureConfigInfo(textPrintFlag, "CONST_CONST_PCTG_MID_COLOR", "undefined"); #endif #ifdef CONST_CREDITS_HTML printFeatureConfigInfo(textPrintFlag, "CONST_CREDITS_HTML", CONST_CREDITS_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_CREDITS_HTML", "undefined"); #endif #ifdef CONST_CRYPT_SALT printFeatureConfigInfo(textPrintFlag, "CONST_CRYPT_SALT", CONST_CRYPT_SALT); #else printFeatureConfigInfo(textPrintFlag, "CONST_CRYPT_SALT", "undefined"); #endif #ifdef CONST_DAEMONNAME printFeatureConfigInfo(textPrintFlag, "CONST_DAEMONNAME", CONST_DAEMONNAME); #else printFeatureConfigInfo(textPrintFlag, "CONST_DAEMONNAME", "undefined"); #endif #ifdef CONST_DELETE_URL printFeatureConfigInfo(textPrintFlag, "CONST_DELETE_URL", CONST_DELETE_URL); #else printFeatureConfigInfo(textPrintFlag, "CONST_DELETE_URL", "undefined"); #endif #ifdef CONST_DELETE_USER printFeatureConfigInfo(textPrintFlag, "CONST_DELETE_USER", CONST_DELETE_USER); #else printFeatureConfigInfo(textPrintFlag, "CONST_DELETE_USER", "undefined"); #endif #ifdef CONST_DNSCACHE_LIFETIME printFeatureConfigNum(textPrintFlag, "CONST_DNSCACHE_LIFETIME", CONST_DNSCACHE_LIFETIME); #else printFeatureConfigInfo(textPrintFlag, "CONST_DNSCACHE_LIFETIME", "undefined"); #endif #ifdef CONST_DNSCACHE_PERMITTED_AGE printFeatureConfigNum(textPrintFlag, "CONST_DNSCACHE_PERMITTED_AGE", CONST_DNSCACHE_PERMITTED_AGE); #else printFeatureConfigInfo(textPrintFlag, "CONST_DNSCACHE_PERMITTED_AGE", "undefined"); #endif #ifdef CONST_DO_ADD_URL printFeatureConfigInfo(textPrintFlag, "CONST_DO_ADD_URL", CONST_DO_ADD_URL); #else printFeatureConfigInfo(textPrintFlag, "CONST_DO_ADD_URL", "undefined"); #endif #ifdef CONST_DO_ADD_USER printFeatureConfigInfo(textPrintFlag, "CONST_DO_ADD_USER", CONST_DO_ADD_USER); #else printFeatureConfigInfo(textPrintFlag, "CONST_DO_ADD_USER", "undefined"); #endif #ifdef CONST_DO_CHANGE_FILTER printFeatureConfigInfo(textPrintFlag, "CONST_DO_CHANGE_FILTER", CONST_DO_CHANGE_FILTER); #else printFeatureConfigInfo(textPrintFlag, "CONST_DO_CHANGE_FILTER", "undefined"); #endif #ifdef CONST_DOMAIN_STATS_HTML printFeatureConfigInfo(textPrintFlag, "CONST_DOMAIN_STATS_HTML", CONST_DOMAIN_STATS_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_DOMAIN_STATS_HTML", "undefined"); #endif #ifdef CONST_DOUBLE_TWO_MSL_TIMEOUT printFeatureConfigNum(textPrintFlag, "CONST_DOUBLE_TWO_MSL_TIMEOUT", CONST_DOUBLE_TWO_MSL_TIMEOUT); #else printFeatureConfigInfo(textPrintFlag, "CONST_DOUBLE_TWO_MSL_TIMEOUT", "undefined"); #endif #ifdef CONST_DUMP_DATA_HTML printFeatureConfigInfo(textPrintFlag, "CONST_DUMP_DATA_HTML", CONST_DUMP_DATA_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_DUMP_DATA_HTML", "undefined"); #endif #ifdef CONST_DUMP_HOSTS_INDEXES_HTML printFeatureConfigInfo(textPrintFlag, "CONST_DUMP_HOSTS_INDEXES_HTML", CONST_DUMP_HOSTS_INDEXES_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_DUMP_HOSTS_INDEXES_HTML", "undefined"); #endif #ifdef CONST_DUMP_NTOP_FLOWS_HTML printFeatureConfigInfo(textPrintFlag, "CONST_DUMP_NTOP_FLOWS_HTML", CONST_DUMP_NTOP_FLOWS_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_DUMP_NTOP_FLOWS_HTML", "undefined"); #endif #ifdef CONST_DUMP_NTOP_HOSTS_MATRIX_HTML printFeatureConfigInfo(textPrintFlag, "CONST_DUMP_NTOP_HOSTS_MATRIX_HTML", CONST_DUMP_NTOP_HOSTS_MATRIX_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_DUMP_NTOP_HOSTS_MATRIX_HTML", "undefined"); #endif #ifdef CONST_DUMP_NTOP_XML printFeatureConfigInfo(textPrintFlag, "CONST_DUMP_NTOP_XML", CONST_DUMP_NTOP_XML); #else printFeatureConfigInfo(textPrintFlag, "CONST_DUMP_NTOP_XML", "undefined"); #endif #ifdef CONST_DUMP_TRAFFIC_DATA_HTML printFeatureConfigInfo(textPrintFlag, "CONST_DUMP_TRAFFIC_DATA_HTML", CONST_DUMP_TRAFFIC_DATA_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_DUMP_TRAFFIC_DATA_HTML", "undefined"); #endif #ifdef CONST_EDIT_PREFS printFeatureConfigInfo(textPrintFlag, "CONST_EDIT_PREFS", CONST_EDIT_PREFS); #else printFeatureConfigInfo(textPrintFlag, "CONST_EDIT_PREFS", "undefined"); #endif #ifdef CONST_ETTERCAP_FINGERPRINT printFeatureConfigInfo(textPrintFlag, "CONST_ETTERCAP_FINGERPRINT", CONST_ETTERCAP_FINGERPRINT); #else printFeatureConfigInfo(textPrintFlag, "CONST_ETTERCAP_FINGERPRINT", "undefined"); #endif #ifdef CONST_ETTERCAP_HOMEPAGE printFeatureConfigInfo(textPrintFlag, "CONST_ETTERCAP_HOMEPAGE", CONST_ETTERCAP_HOMEPAGE); #else printFeatureConfigInfo(textPrintFlag, "CONST_ETTERCAP_HOMEPAGE", "undefined"); #endif #ifdef CONST_FAVICON_ICO printFeatureConfigInfo(textPrintFlag, "CONST_FAVICON_ICO", CONST_FAVICON_ICO); #else printFeatureConfigInfo(textPrintFlag, "CONST_FAVICON_ICO", "undefined"); #endif #ifdef CONST_FC_ACTIVITY_HTML printFeatureConfigInfo(textPrintFlag, "CONST_FC_ACTIVITY_HTML", CONST_FC_ACTIVITY_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_FC_ACTIVITY_HTML", "undefined"); #endif #ifdef CONST_FC_DATA_HTML printFeatureConfigInfo(textPrintFlag, "CONST_FC_DATA_HTML", CONST_FC_DATA_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_FC_DATA_HTML", "undefined"); #endif #ifdef CONST_FC_HOSTS_INFO_HTML printFeatureConfigInfo(textPrintFlag, "CONST_FC_HOSTS_INFO_HTML", CONST_FC_HOSTS_INFO_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_FC_HOSTS_INFO_HTML", "undefined"); #endif #ifdef CONST_FC_SESSIONS_HTML printFeatureConfigInfo(textPrintFlag, "CONST_FC_SESSIONS_HTML", CONST_FC_SESSIONS_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_FC_SESSIONS_HTML", "undefined"); #endif #ifdef CONST_FC_THPT_HTML printFeatureConfigInfo(textPrintFlag, "CONST_FC_THPT_HTML", CONST_FC_THPT_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_FC_THPT_HTML", "undefined"); #endif #ifdef CONST_FC_TRAFFIC_HTML printFeatureConfigInfo(textPrintFlag, "CONST_FC_TRAFFIC_HTML", CONST_FC_TRAFFIC_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_FC_TRAFFIC_HTML", "undefined"); #endif #ifdef CONST_FILTER_INFO_HTML printFeatureConfigInfo(textPrintFlag, "CONST_FILTER_INFO_HTML", CONST_FILTER_INFO_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_FILTER_INFO_HTML", "undefined"); #endif #ifdef CONST_FINGERPRINT_LOOP_INTERVAL printFeatureConfigNum(textPrintFlag, "CONST_FINGERPRINT_LOOP_INTERVAL", CONST_FINGERPRINT_LOOP_INTERVAL); #else printFeatureConfigInfo(textPrintFlag, "CONST_FINGERPRINT_LOOP_INTERVAL", "undefined"); #endif #ifdef CONST_FTPDATA printFeatureConfigNum(textPrintFlag, "CONST_FTPDATA", CONST_FTPDATA); #else printFeatureConfigInfo(textPrintFlag, "CONST_FTPDATA", "undefined"); #endif #ifdef CONST_GRE_PROTOCOL_TYPE printFeatureConfigNum(textPrintFlag, "CONST_GRE_PROTOCOL_TYPE", CONST_GRE_PROTOCOL_TYPE); #else printFeatureConfigInfo(textPrintFlag, "CONST_GRE_PROTOCOL_TYPE", "undefined"); #endif #ifdef CONST_HANDLEADDRESSLISTS_CLUSTERS printFeatureConfigNum(textPrintFlag, "CONST_HANDLEADDRESSLISTS_CLUSTERS", CONST_HANDLEADDRESSLISTS_CLUSTERS); #else printFeatureConfigInfo(textPrintFlag, "CONST_HANDLEADDRESSLISTS_CLUSTERS", "undefined"); #endif #ifdef CONST_HANDLEADDRESSLISTS_MAIN printFeatureConfigNum(textPrintFlag, "CONST_HANDLEADDRESSLISTS_MAIN", CONST_HANDLEADDRESSLISTS_MAIN); #else printFeatureConfigInfo(textPrintFlag, "CONST_HANDLEADDRESSLISTS_MAIN", "undefined"); #endif #ifdef CONST_HANDLEADDRESSLISTS_NETFLOW printFeatureConfigNum(textPrintFlag, "CONST_HANDLEADDRESSLISTS_NETFLOW", CONST_HANDLEADDRESSLISTS_NETFLOW); #else printFeatureConfigInfo(textPrintFlag, "CONST_HANDLEADDRESSLISTS_NETFLOW", "undefined"); #endif printFeatureConfigInfo(textPrintFlag, "CONST_HANDLEADDRESSLISTS_RRD", #ifdef CONST_HANDLEADDRESSLISTS_RRD "yes" #else "no" #endif ); #ifdef CONST_HASH_INITIAL_SIZE printFeatureConfigNum(textPrintFlag, "CONST_HASH_INITIAL_SIZE", CONST_HASH_INITIAL_SIZE); #else printFeatureConfigInfo(textPrintFlag, "CONST_HASH_INITIAL_SIZE", "undefined"); #endif #ifdef CONST_HOME_HTML printFeatureConfigInfo(textPrintFlag, "CONST_HOME_HTML", CONST_HOME_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_HOME_HTML", "undefined"); #endif #ifdef CONST_HOME_UNDERSCORE_HTML printFeatureConfigInfo(textPrintFlag, "CONST_HOME_UNDERSCORE_HTML", CONST_HOME_UNDERSCORE_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_HOME_UNDERSCORE_HTML", "undefined"); #endif #ifdef CONST_HOST_HTML printFeatureConfigInfo(textPrintFlag, "CONST_HOST_HTML", CONST_HOST_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_HOST_HTML", "undefined"); #endif #ifdef CONST_HOSTS_INFO_HTML printFeatureConfigInfo(textPrintFlag, "CONST_HOSTS_INFO_HTML", CONST_HOSTS_INFO_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_HOSTS_INFO_HTML", "undefined"); #endif #ifdef CONST_HOSTS_LOCAL_CHARACT_HTML printFeatureConfigInfo(textPrintFlag, "CONST_HOSTS_LOCAL_CHARACT_HTML", CONST_HOSTS_LOCAL_CHARACT_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_HOSTS_LOCAL_CHARACT_HTML", "undefined"); #endif #ifdef CONST_HOSTS_LOCAL_FINGERPRINT_HTML printFeatureConfigInfo(textPrintFlag, "CONST_HOSTS_LOCAL_FINGERPRINT_HTML", CONST_HOSTS_LOCAL_FINGERPRINT_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_HOSTS_LOCAL_FINGERPRINT_HTML", "undefined"); #endif #ifdef CONST_HOST_SORT_NOTE_HTML printFeatureConfigInfo(textPrintFlag, "CONST_HOST_SORT_NOTE_HTML", CONST_HOST_SORT_NOTE_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_HOST_SORT_NOTE_HTML", "undefined"); #endif #ifdef CONST_HOSTS_REMOTE_FINGERPRINT_HTML printFeatureConfigInfo(textPrintFlag, "CONST_HOSTS_REMOTE_FINGERPRINT_HTML", CONST_HOSTS_REMOTE_FINGERPRINT_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_HOSTS_REMOTE_FINGERPRINT_HTML", "undefined"); #endif #ifdef CONST_HTTP_ACCEPT_ALL printFeatureConfigInfo(textPrintFlag, "CONST_HTTP_ACCEPT_ALL", CONST_HTTP_ACCEPT_ALL); #else printFeatureConfigInfo(textPrintFlag, "CONST_HTTP_ACCEPT_ALL", "undefined"); #endif #ifdef CONST_IMG_ARROW_DOWN printFeatureConfigInfo(textPrintFlag, "CONST_IMG_ARROW_DOWN", CONST_IMG_ARROW_DOWN); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_ARROW_DOWN", "undefined"); #endif #ifdef CONST_IMG_ARROW_UP printFeatureConfigInfo(textPrintFlag, "CONST_IMG_ARROW_UP", CONST_IMG_ARROW_UP); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_ARROW_UP", "undefined"); #endif #ifdef CONST_IMG_BRIDGE printFeatureConfigInfo(textPrintFlag, "CONST_IMG_BRIDGE", CONST_IMG_BRIDGE); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_BRIDGE", "undefined"); #endif #ifdef CONST_IMG_DHCP_CLIENT printFeatureConfigInfo(textPrintFlag, "CONST_IMG_DHCP_CLIENT", CONST_IMG_DHCP_CLIENT); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_DHCP_CLIENT", "undefined"); #endif #ifdef CONST_IMG_DHCP_SERVER printFeatureConfigInfo(textPrintFlag, "CONST_IMG_DHCP_SERVER", CONST_IMG_DHCP_SERVER); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_DHCP_SERVER", "undefined"); #endif #ifdef CONST_IMG_DIRECTORY_SERVER printFeatureConfigInfo(textPrintFlag, "CONST_IMG_DIRECTORY_SERVER", CONST_IMG_DIRECTORY_SERVER); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_DIRECTORY_SERVER", "undefined"); #endif #ifdef CONST_IMG_DNS_SERVER printFeatureConfigInfo(textPrintFlag, "CONST_IMG_DNS_SERVER", CONST_IMG_DNS_SERVER); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_DNS_SERVER", "undefined"); #endif #ifdef CONST_IMG_FC_VEN_BROCADE printFeatureConfigInfo(textPrintFlag, "CONST_IMG_FC_VEN_BROCADE", CONST_IMG_FC_VEN_BROCADE); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_FC_VEN_BROCADE", "undefined"); #endif #ifdef CONST_IMG_FC_VEN_EMULEX printFeatureConfigInfo(textPrintFlag, "CONST_IMG_FC_VEN_EMULEX", CONST_IMG_FC_VEN_EMULEX); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_FC_VEN_EMULEX", "undefined"); #endif #ifdef CONST_IMG_FC_VEN_SEAGATE printFeatureConfigInfo(textPrintFlag, "CONST_IMG_FC_VEN_SEAGATE", CONST_IMG_FC_VEN_SEAGATE); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_FC_VEN_SEAGATE", "undefined"); #endif #ifdef CONST_IMG_FIBRECHANNEL_SWITCH printFeatureConfigInfo(textPrintFlag, "CONST_IMG_FIBRECHANNEL_SWITCH", CONST_IMG_FIBRECHANNEL_SWITCH); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_FIBRECHANNEL_SWITCH", "undefined"); #endif #ifdef CONST_IMG_FTP_SERVER printFeatureConfigInfo(textPrintFlag, "CONST_IMG_FTP_SERVER", CONST_IMG_FTP_SERVER); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_FTP_SERVER", "undefined"); #endif #ifdef CONST_IMG_HAS_P2P printFeatureConfigInfo(textPrintFlag, "CONST_IMG_HAS_P2P", CONST_IMG_HAS_P2P); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_HAS_P2P", "undefined"); #endif #ifdef CONST_IMG_HAS_USERS printFeatureConfigInfo(textPrintFlag, "CONST_IMG_HAS_USERS", CONST_IMG_HAS_USERS); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_HAS_USERS", "undefined"); #endif #ifdef CONST_IMG_HIGH_RISK printFeatureConfigInfo(textPrintFlag, "CONST_IMG_HIGH_RISK", CONST_IMG_HIGH_RISK); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_HIGH_RISK", "undefined"); #endif #ifdef CONST_IMG_HTTP_SERVER printFeatureConfigInfo(textPrintFlag, "CONST_IMG_HTTP_SERVER", CONST_IMG_HTTP_SERVER); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_HTTP_SERVER", "undefined"); #endif #ifdef CONST_IMG_IMAP_SERVER printFeatureConfigInfo(textPrintFlag, "CONST_IMG_IMAP_SERVER", CONST_IMG_IMAP_SERVER); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_IMAP_SERVER", "undefined"); #endif #ifdef CONST_IMG_LOCK printFeatureConfigInfo(textPrintFlag, "CONST_IMG_LOCK", CONST_IMG_LOCK); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_LOCK", "undefined"); #endif #ifdef CONST_IMG_LOW_RISK printFeatureConfigInfo(textPrintFlag, "CONST_IMG_LOW_RISK", CONST_IMG_LOW_RISK); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_LOW_RISK", "undefined"); #endif #ifdef CONST_IMG_MEDIUM_RISK printFeatureConfigInfo(textPrintFlag, "CONST_IMG_MEDIUM_RISK", CONST_IMG_MEDIUM_RISK); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_MEDIUM_RISK", "undefined"); #endif #ifdef CONST_IMG_MULTIHOMED printFeatureConfigInfo(textPrintFlag, "CONST_IMG_MULTIHOMED", CONST_IMG_MULTIHOMED); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_MULTIHOMED", "undefined"); #endif #ifdef CONST_IMG_MULTIVLANED printFeatureConfigInfo(textPrintFlag, "CONST_IMG_MULTIVLANED", CONST_IMG_MULTIVLANED); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_MULTIVLANED", "undefined"); #endif #ifdef CONST_IMG_NIC_CARD printFeatureConfigInfo(textPrintFlag, "CONST_IMG_NIC_CARD", CONST_IMG_NIC_CARD); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_NIC_CARD", "undefined"); #endif #ifdef CONST_IMG_NTP_SERVER printFeatureConfigInfo(textPrintFlag, "CONST_IMG_NTP_SERVER", CONST_IMG_NTP_SERVER); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_NTP_SERVER", "undefined"); #endif #ifdef CONST_IMG_OS_AIX printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_AIX", CONST_IMG_OS_AIX); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_AIX", "undefined"); #endif #ifdef CONST_IMG_OS_BERKELEY printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_BERKELEY", CONST_IMG_OS_BERKELEY); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_BERKELEY", "undefined"); #endif #ifdef CONST_IMG_OS_BSD printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_BSD", CONST_IMG_OS_BSD); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_BSD", "undefined"); #endif #ifdef CONST_IMG_OS_CISCO printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_CISCO", CONST_IMG_OS_CISCO); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_CISCO", "undefined"); #endif #ifdef CONST_IMG_OS_HP_JETDIRET printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_HP_JETDIRET", CONST_IMG_OS_HP_JETDIRET); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_HP_JETDIRET", "undefined"); #endif #ifdef CONST_IMG_OS_HP_UX printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_HP_UX", CONST_IMG_OS_HP_UX); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_HP_UX", "undefined"); #endif #ifdef CONST_IMG_OS_IRIX printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_IRIX", CONST_IMG_OS_IRIX); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_IRIX", "undefined"); #endif #ifdef CONST_IMG_OS_LINUX printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_LINUX", CONST_IMG_OS_LINUX); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_LINUX", "undefined"); #endif #ifdef CONST_IMG_OS_MAC printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_MAC", CONST_IMG_OS_MAC); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_MAC", "undefined"); #endif #ifdef CONST_IMG_OS_NOVELL printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_NOVELL", CONST_IMG_OS_NOVELL); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_NOVELL", "undefined"); #endif #ifdef CONST_IMG_OS_SOLARIS printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_SOLARIS", CONST_IMG_OS_SOLARIS); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_SOLARIS", "undefined"); #endif #ifdef CONST_IMG_OS_SUNOS printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_SUNOS", CONST_IMG_OS_SUNOS); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_SUNOS", "undefined"); #endif #ifdef CONST_IMG_OS_UNIX printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_UNIX", CONST_IMG_OS_UNIX); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_UNIX", "undefined"); #endif #ifdef CONST_IMG_OS_WINDOWS printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_WINDOWS", CONST_IMG_OS_WINDOWS); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_OS_WINDOWS", "undefined"); #endif #ifdef CONST_IMG_POP_SERVER printFeatureConfigInfo(textPrintFlag, "CONST_IMG_POP_SERVER", CONST_IMG_POP_SERVER); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_POP_SERVER", "undefined"); #endif #ifdef CONST_IMG_PRINTER printFeatureConfigInfo(textPrintFlag, "CONST_IMG_PRINTER", CONST_IMG_PRINTER); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_PRINTER", "undefined"); #endif #ifdef CONST_IMG_ROUTER printFeatureConfigInfo(textPrintFlag, "CONST_IMG_ROUTER", CONST_IMG_ROUTER); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_ROUTER", "undefined"); #endif #ifdef CONST_IMG_SMTP_SERVER printFeatureConfigInfo(textPrintFlag, "CONST_IMG_SMTP_SERVER", CONST_IMG_SMTP_SERVER); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_SMTP_SERVER", "undefined"); #endif #ifdef CONST_IMG_VOIP_HOST printFeatureConfigInfo(textPrintFlag, "CONST_IMG_VOIP_HOST", CONST_IMG_VOIP_HOST); #else printFeatureConfigInfo(textPrintFlag, "CONST_IMG_VOIP_HOST", "undefined"); #endif #ifdef CONST_INDEX_HTML printFeatureConfigInfo(textPrintFlag, "CONST_INDEX_HTML", CONST_INDEX_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_INDEX_HTML", "undefined"); #endif #ifdef CONST_INDEX_INNER_HTML printFeatureConfigInfo(textPrintFlag, "CONST_INDEX_INNER_HTML", CONST_INDEX_INNER_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_INDEX_INNER_HTML", "undefined"); #endif #ifdef CONST_INFOHTML_COL1_WIDTH printFeatureConfigNum(textPrintFlag, "CONST_INFOHTML_COL1_WIDTH", CONST_INFOHTML_COL1_WIDTH); #else printFeatureConfigInfo(textPrintFlag, "CONST_INFOHTML_COL1_WIDTH", "undefined"); #endif #ifdef CONST_INFOHTML_COL23_WIDTH printFeatureConfigNum(textPrintFlag, "CONST_INFOHTML_COL23_WIDTH", CONST_INFOHTML_COL23_WIDTH); #else printFeatureConfigInfo(textPrintFlag, "CONST_INFOHTML_COL23_WIDTH", "undefined"); #endif #ifdef CONST_INFOHTML_COL2_WIDTH printFeatureConfigNum(textPrintFlag, "CONST_INFOHTML_COL2_WIDTH", CONST_INFOHTML_COL2_WIDTH); #else printFeatureConfigInfo(textPrintFlag, "CONST_INFOHTML_COL2_WIDTH", "undefined"); #endif #ifdef CONST_INFOHTML_COL3_WIDTH printFeatureConfigNum(textPrintFlag, "CONST_INFOHTML_COL3_WIDTH", CONST_INFOHTML_COL3_WIDTH); #else printFeatureConfigInfo(textPrintFlag, "CONST_INFOHTML_COL3_WIDTH", "undefined"); #endif #ifdef CONST_INFOHTML_WIDTH printFeatureConfigNum(textPrintFlag, "CONST_INFOHTML_WIDTH", CONST_INFOHTML_WIDTH); #else printFeatureConfigInfo(textPrintFlag, "CONST_INFOHTML_WIDTH", "undefined"); #endif #ifdef CONST_INFO_NTOP_HTML printFeatureConfigInfo(textPrintFlag, "CONST_INFO_NTOP_HTML", CONST_INFO_NTOP_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_INFO_NTOP_HTML", "undefined"); #endif #ifdef CONST_INVALIDNETMASK printFeatureConfigNum(textPrintFlag, "CONST_INVALIDNETMASK", CONST_INVALIDNETMASK); #else printFeatureConfigInfo(textPrintFlag, "CONST_INVALIDNETMASK", "undefined"); #endif #ifdef CONST_IP_L_2_L_HTML printFeatureConfigInfo(textPrintFlag, "CONST_IP_L_2_L_HTML", CONST_IP_L_2_L_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_IP_L_2_L_HTML", "undefined"); #endif #ifdef CONST_IP_L_2_R_HTML printFeatureConfigInfo(textPrintFlag, "CONST_IP_L_2_R_HTML", CONST_IP_L_2_R_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_IP_L_2_R_HTML", "undefined"); #endif #ifdef CONST_IP_PROTO_DISTRIB_HTML printFeatureConfigInfo(textPrintFlag, "CONST_IP_PROTO_DISTRIB_HTML", CONST_IP_PROTO_DISTRIB_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_IP_PROTO_DISTRIB_HTML", "undefined"); #endif #ifdef CONST_IP_PROTO_USAGE_HTML printFeatureConfigInfo(textPrintFlag, "CONST_IP_PROTO_USAGE_HTML", CONST_IP_PROTO_USAGE_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_IP_PROTO_USAGE_HTML", "undefined"); #endif #ifdef CONST_IP_R_2_L_HTML printFeatureConfigInfo(textPrintFlag, "CONST_IP_R_2_L_HTML", CONST_IP_R_2_L_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_IP_R_2_L_HTML", "undefined"); #endif #ifdef CONST_IP_R_2_R_HTML printFeatureConfigInfo(textPrintFlag, "CONST_IP_R_2_R_HTML", CONST_IP_R_2_R_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_IP_R_2_R_HTML", "undefined"); #endif #ifdef CONST_IP_TRAFFIC_MATRIX_HTML printFeatureConfigInfo(textPrintFlag, "CONST_IP_TRAFFIC_MATRIX_HTML", CONST_IP_TRAFFIC_MATRIX_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_IP_TRAFFIC_MATRIX_HTML", "undefined"); #endif #ifdef CONST_ISO8601_TIMESPEC printFeatureConfigInfo(textPrintFlag, "CONST_ISO8601_TIMESPEC", CONST_ISO8601_TIMESPEC); #else printFeatureConfigInfo(textPrintFlag, "CONST_ISO8601_TIMESPEC", "undefined"); #endif #ifdef CONST_LEFTMENU_HTML printFeatureConfigInfo(textPrintFlag, "CONST_LEFTMENU_HTML", CONST_LEFTMENU_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_LEFTMENU_HTML", "undefined"); #endif #ifdef CONST_LEFTMENU_NOJS_HTML printFeatureConfigInfo(textPrintFlag, "CONST_LEFTMENU_NOJS_HTML", CONST_LEFTMENU_NOJS_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_LEFTMENU_NOJS_HTML", "undefined"); #endif #ifdef CONST_LEGEND_BOX_SIZE printFeatureConfigNum(textPrintFlag, "CONST_LEGEND_BOX_SIZE", CONST_LEGEND_BOX_SIZE); #else printFeatureConfigInfo(textPrintFlag, "CONST_LEGEND_BOX_SIZE", "undefined"); #endif #ifdef CONST_LOCALE_TIMESPEC printFeatureConfigInfo(textPrintFlag, "CONST_LOCALE_TIMESPEC", CONST_LOCALE_TIMESPEC); #else printFeatureConfigInfo(textPrintFlag, "CONST_LOCALE_TIMESPEC", "undefined"); #endif #ifdef CONST_LOCAL_ROUTERS_LIST_HTML printFeatureConfigInfo(textPrintFlag, "CONST_LOCAL_ROUTERS_LIST_HTML", CONST_LOCAL_ROUTERS_LIST_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_LOCAL_ROUTERS_LIST_HTML", "undefined"); #endif #ifdef CONST_LOG_VIEW_BUFFER_SIZE printFeatureConfigNum(textPrintFlag, "CONST_LOG_VIEW_BUFFER_SIZE", CONST_LOG_VIEW_BUFFER_SIZE); #else printFeatureConfigInfo(textPrintFlag, "CONST_LOG_VIEW_BUFFER_SIZE", "undefined"); #endif #ifdef CONST_MAGIC_NUMBER printFeatureConfigNum(textPrintFlag, "CONST_MAGIC_NUMBER", CONST_MAGIC_NUMBER); #else printFeatureConfigInfo(textPrintFlag, "CONST_MAGIC_NUMBER", "undefined"); #endif #ifdef CONST_UNMAGIC_NUMBER printFeatureConfigNum(textPrintFlag, "CONST_UNMAGIC_NUMBER", CONST_UNMAGIC_NUMBER); #else printFeatureConfigInfo(textPrintFlag, "CONST_UNMAGIC_NUMBER", "undefined"); #endif #ifdef CONST_MAILTO_ABDELKADER printFeatureConfigInfo(textPrintFlag, "CONST_MAILTO_ABDELKADER", CONST_MAILTO_ABDELKADER); #else printFeatureConfigInfo(textPrintFlag, "CONST_MAILTO_ABDELKADER", "undefined"); #endif #ifdef CONST_MAILTO_BURTON printFeatureConfigInfo(textPrintFlag, "CONST_MAILTO_BURTON", CONST_MAILTO_BURTON); #else printFeatureConfigInfo(textPrintFlag, "CONST_MAILTO_BURTON", "undefined"); #endif #ifdef CONST_MAILTO_DINESH printFeatureConfigInfo(textPrintFlag, "CONST_MAILTO_DINESH", CONST_MAILTO_DINESH); #else printFeatureConfigInfo(textPrintFlag, "CONST_MAILTO_DINESH", "undefined"); #endif #ifdef CONST_MAILTO_LIST printFeatureConfigInfo(textPrintFlag, "CONST_MAILTO_LIST", CONST_MAILTO_LIST); #else printFeatureConfigInfo(textPrintFlag, "CONST_MAILTO_LIST", "undefined"); #endif #ifdef CONST_MAILTO_LUCA printFeatureConfigInfo(textPrintFlag, "CONST_MAILTO_LUCA", CONST_MAILTO_LUCA); #else printFeatureConfigInfo(textPrintFlag, "CONST_MAILTO_LUCA", "undefined"); #endif #ifdef CONST_MAILTO_OLIVIER printFeatureConfigInfo(textPrintFlag, "CONST_MAILTO_OLIVIER", CONST_MAILTO_OLIVIER); #else printFeatureConfigInfo(textPrintFlag, "CONST_MAILTO_OLIVIER", "undefined"); #endif #ifdef CONST_MAILTO_STEFANO printFeatureConfigInfo(textPrintFlag, "CONST_MAILTO_STEFANO", CONST_MAILTO_STEFANO); #else printFeatureConfigInfo(textPrintFlag, "CONST_MAILTO_STEFANO", "undefined"); #endif #ifdef CONST_MAN_NTOP_HTML printFeatureConfigInfo(textPrintFlag, "CONST_MAN_NTOP_HTML", CONST_MAN_NTOP_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_MAN_NTOP_HTML", "undefined"); #endif #ifdef CONST_MODIFY_URL printFeatureConfigInfo(textPrintFlag, "CONST_MODIFY_URL", CONST_MODIFY_URL); #else printFeatureConfigInfo(textPrintFlag, "CONST_MODIFY_URL", "undefined"); #endif #ifdef CONST_MODIFY_USERS printFeatureConfigInfo(textPrintFlag, "CONST_MODIFY_USERS", CONST_MODIFY_USERS); #else printFeatureConfigInfo(textPrintFlag, "CONST_MODIFY_USERS", "undefined"); #endif #ifdef CONST_MULTICAST_MASK printFeatureConfigNum(textPrintFlag, "CONST_MULTICAST_MASK", CONST_MULTICAST_MASK); #else printFeatureConfigInfo(textPrintFlag, "CONST_MULTICAST_MASK", "undefined"); #endif #ifdef CONST_MULTICAST_STATS_HTML printFeatureConfigInfo(textPrintFlag, "CONST_MULTICAST_STATS_HTML", CONST_MULTICAST_STATS_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_MULTICAST_STATS_HTML", "undefined"); #endif #ifdef CONST_NET_FLOWS_HTML printFeatureConfigInfo(textPrintFlag, "CONST_NET_FLOWS_HTML", CONST_NET_FLOWS_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_NET_FLOWS_HTML", "undefined"); #endif #ifdef CONST_NETMASK_ENTRY printFeatureConfigNum(textPrintFlag, "CONST_NETMASK_ENTRY", CONST_NETMASK_ENTRY); #else printFeatureConfigInfo(textPrintFlag, "CONST_NETMASK_ENTRY", "undefined"); #endif #ifdef CONST_NETWORK_ENTRY printFeatureConfigNum(textPrintFlag, "CONST_NETWORK_ENTRY", CONST_NETWORK_ENTRY); #else printFeatureConfigInfo(textPrintFlag, "CONST_NETWORK_ENTRY", "undefined"); #endif #ifdef CONST_NETWORK_IMAGE_MAP printFeatureConfigInfo(textPrintFlag, "CONST_NETWORK_IMAGE_MAP", CONST_NETWORK_IMAGE_MAP); #else printFeatureConfigInfo(textPrintFlag, "CONST_NETWORK_IMAGE_MAP", "undefined"); #endif #ifdef CONST_NETWORK_MAP_HTML printFeatureConfigInfo(textPrintFlag, "CONST_NETWORK_MAP_HTML", CONST_NETWORK_MAP_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_NETWORK_MAP_HTML", "undefined"); #endif #ifdef CONST_NTOP_HELP_HTML printFeatureConfigInfo(textPrintFlag, "CONST_NTOP_HELP_HTML", CONST_NTOP_HELP_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_NTOP_HELP_HTML", "undefined"); #endif #ifdef CONST_NTOP_LOGO printFeatureConfigInfo(textPrintFlag, "CONST_NTOP_LOGO", CONST_NTOP_LOGO); #else printFeatureConfigInfo(textPrintFlag, "CONST_NTOP_LOGO", "undefined"); #endif #ifdef CONST_NTOP_P3P printFeatureConfigInfo(textPrintFlag, "CONST_NTOP_P3P", CONST_NTOP_P3P); #else printFeatureConfigInfo(textPrintFlag, "CONST_NTOP_P3P", "undefined"); #endif #ifdef CONST_NULL_HDRLEN printFeatureConfigNum(textPrintFlag, "CONST_NULL_HDRLEN", CONST_NULL_HDRLEN); #else printFeatureConfigInfo(textPrintFlag, "CONST_NULL_HDRLEN", "undefined"); #endif #ifdef CONST_NUM_TABLE_ROWS_PER_PAGE printFeatureConfigNum(textPrintFlag, "CONST_NUM_TABLE_ROWS_PER_PAGE", CONST_NUM_TABLE_ROWS_PER_PAGE); #else printFeatureConfigInfo(textPrintFlag, "CONST_NUM_TABLE_ROWS_PER_PAGE", "undefined"); #endif #ifdef CONST_NUM_TRANSACTION_ENTRIES printFeatureConfigNum(textPrintFlag, "CONST_NUM_TRANSACTION_ENTRIES", CONST_NUM_TRANSACTION_ENTRIES); #else printFeatureConfigInfo(textPrintFlag, "CONST_NUM_TRANSACTION_ENTRIES", "undefined"); #endif #ifdef CONST_OSFINGERPRINT_FILE printFeatureConfigInfo(textPrintFlag, "CONST_OSFINGERPRINT_FILE", CONST_OSFINGERPRINT_FILE); #else printFeatureConfigInfo(textPrintFlag, "CONST_OSFINGERPRINT_FILE", "undefined"); #endif #ifdef CONST_P2C_FILE printFeatureConfigInfo(textPrintFlag, "CONST_P2C_FILE", CONST_P2C_FILE); #else printFeatureConfigInfo(textPrintFlag, "CONST_P2C_FILE", "undefined"); #endif #ifdef CONST_PACKET_QUEUE_LENGTH printFeatureConfigNum(textPrintFlag, "CONST_PACKET_QUEUE_LENGTH", CONST_PACKET_QUEUE_LENGTH); #else printFeatureConfigInfo(textPrintFlag, "CONST_PACKET_QUEUE_LENGTH", "undefined"); #endif #ifdef CONST_PATH_SEP printFeatureConfigNum(textPrintFlag, "CONST_PATH_SEP", CONST_PATH_SEP); #else printFeatureConfigInfo(textPrintFlag, "CONST_PATH_SEP", "undefined"); #endif #ifdef CONST_PCAP_NW_INTERFACE_FILE printFeatureConfigInfo(textPrintFlag, "CONST_PCAP_NW_INTERFACE_FILE", CONST_PCAP_NW_INTERFACE_FILE); #else printFeatureConfigInfo(textPrintFlag, "CONST_PCAP_NW_INTERFACE_FILE", "undefined"); #endif #ifdef CONST_PCTG_HIGH_COLOR printFeatureConfigInfo(textPrintFlag, "CONST_PCTG_HIGH_COLOR", CONST_PCTG_HIGH_COLOR); #else printFeatureConfigInfo(textPrintFlag, "CONST_PCTG_HIGH_COLOR", "undefined"); #endif #ifdef CONST_PCTG_LOW printFeatureConfigNum(textPrintFlag, "CONST_PCTG_LOW", CONST_PCTG_LOW); #else printFeatureConfigInfo(textPrintFlag, "CONST_PCTG_LOW", "undefined"); #endif #ifdef CONST_PCTG_MID printFeatureConfigNum(textPrintFlag, "CONST_PCTG_MID", CONST_PCTG_MID); #else printFeatureConfigInfo(textPrintFlag, "CONST_PCTG_MID", "undefined"); #endif #ifdef CONST_PIE_FC_PKT_SZ_DIST printFeatureConfigInfo(textPrintFlag, "CONST_PIE_FC_PKT_SZ_DIST", CONST_PIE_FC_PKT_SZ_DIST); #else printFeatureConfigInfo(textPrintFlag, "CONST_PIE_FC_PKT_SZ_DIST", "undefined"); #endif #ifdef CONST_PIE_INTERFACE_DIST printFeatureConfigInfo(textPrintFlag, "CONST_PIE_INTERFACE_DIST", CONST_PIE_INTERFACE_DIST); #else printFeatureConfigInfo(textPrintFlag, "CONST_PIE_INTERFACE_DIST", "undefined"); #endif #ifdef CONST_PIE_IP_TRAFFIC printFeatureConfigInfo(textPrintFlag, "CONST_PIE_IP_TRAFFIC", CONST_PIE_IP_TRAFFIC); #else printFeatureConfigInfo(textPrintFlag, "CONST_PIE_IP_TRAFFIC", "undefined"); #endif #ifdef CONST_PIE_PKT_CAST_DIST printFeatureConfigInfo(textPrintFlag, "CONST_PIE_PKT_CAST_DIST", CONST_PIE_PKT_CAST_DIST); #else printFeatureConfigInfo(textPrintFlag, "CONST_PIE_PKT_CAST_DIST", "undefined"); #endif #ifdef CONST_PIE_PKT_SIZE_DIST printFeatureConfigInfo(textPrintFlag, "CONST_PIE_PKT_SIZE_DIST", CONST_PIE_PKT_SIZE_DIST); #else printFeatureConfigInfo(textPrintFlag, "CONST_PIE_PKT_SIZE_DIST", "undefined"); #endif #ifdef CONST_PIE_TTL_DIST printFeatureConfigInfo(textPrintFlag, "CONST_PIE_TTL_DIST", CONST_PIE_TTL_DIST); #else printFeatureConfigInfo(textPrintFlag, "CONST_PIE_TTL_DIST", "undefined"); #endif #ifdef CONST_PIE_VSAN_CNTL_TRAF_DIST printFeatureConfigInfo(textPrintFlag, "CONST_PIE_VSAN_CNTL_TRAF_DIST", CONST_PIE_VSAN_CNTL_TRAF_DIST); #else printFeatureConfigInfo(textPrintFlag, "CONST_PIE_VSAN_CNTL_TRAF_DIST", "undefined"); #endif #ifdef CONST_PLUGIN_ENTRY_FCTN_NAME printFeatureConfigInfo(textPrintFlag, "CONST_PLUGIN_ENTRY_FCTN_NAME", CONST_PLUGIN_ENTRY_FCTN_NAME); #else printFeatureConfigInfo(textPrintFlag, "CONST_PLUGIN_ENTRY_FCTN_NAME", "undefined"); #endif #ifdef CONST_PLUGIN_EXTENSION printFeatureConfigInfo(textPrintFlag, "CONST_PLUGIN_EXTENSION", CONST_PLUGIN_EXTENSION); #else printFeatureConfigInfo(textPrintFlag, "CONST_PLUGIN_EXTENSION", "undefined"); #endif #ifdef CONST_PLUGINS_HEADER printFeatureConfigInfo(textPrintFlag, "CONST_PLUGINS_HEADER", CONST_PLUGINS_HEADER); #else printFeatureConfigInfo(textPrintFlag, "CONST_PLUGINS_HEADER", "undefined"); #endif #ifdef CONST_PPP_HDRLEN printFeatureConfigNum(textPrintFlag, "CONST_PPP_HDRLEN", CONST_PPP_HDRLEN); #else printFeatureConfigInfo(textPrintFlag, "CONST_PPP_HDRLEN", "undefined"); #endif #ifdef CONST_PPP_PROTOCOL_TYPE printFeatureConfigNum(textPrintFlag, "CONST_PPP_PROTOCOL_TYPE", CONST_PPP_PROTOCOL_TYPE); #else printFeatureConfigInfo(textPrintFlag, "CONST_PPP_PROTOCOL_TYPE", "undefined"); #endif #ifdef CONST_PRIVACYCLEAR_HTML printFeatureConfigInfo(textPrintFlag, "CONST_PRIVACYCLEAR_HTML", CONST_PRIVACYCLEAR_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_PRIVACYCLEAR_HTML", "undefined"); #endif #ifdef CONST_PRIVACYFORCE_HTML printFeatureConfigInfo(textPrintFlag, "CONST_PRIVACYFORCE_HTML", CONST_PRIVACYFORCE_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_PRIVACYFORCE_HTML", "undefined"); #endif #ifdef CONST_PRIVACYNOTICE_HTML printFeatureConfigInfo(textPrintFlag, "CONST_PRIVACYNOTICE_HTML", CONST_PRIVACYNOTICE_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_PRIVACYNOTICE_HTML", "undefined"); #endif #ifdef CONST_PROBLEMRPT_HTML printFeatureConfigInfo(textPrintFlag, "CONST_PROBLEMRPT_HTML", CONST_PROBLEMRPT_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_PROBLEMRPT_HTML", "undefined"); #endif #ifdef CONST_PURGE_HOST printFeatureConfigInfo(textPrintFlag, "CONST_PURGE_HOST", CONST_PURGE_HOST); #else printFeatureConfigInfo(textPrintFlag, "CONST_PURGE_HOST", "undefined"); #endif #ifdef CONST_REPORT_ITS_DEFAULT printFeatureConfigInfo(textPrintFlag, "CONST_REPORT_ITS_DEFAULT", CONST_REPORT_ITS_DEFAULT); #else printFeatureConfigInfo(textPrintFlag, "CONST_REPORT_ITS_DEFAULT", "undefined"); #endif #ifdef CONST_REPORT_ITS_EFFECTIVE printFeatureConfigInfo(textPrintFlag, "CONST_REPORT_ITS_EFFECTIVE", CONST_REPORT_ITS_EFFECTIVE); #else printFeatureConfigInfo(textPrintFlag, "CONST_REPORT_ITS_EFFECTIVE", "undefined"); #endif #ifdef CONST_RESET_STATS_HTML printFeatureConfigInfo(textPrintFlag, "CONST_RESET_STATS_HTML", CONST_RESET_STATS_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_RESET_STATS_HTML", "undefined"); #endif #ifdef CONST_RFC1945_TIMESPEC printFeatureConfigInfo(textPrintFlag, "CONST_RFC1945_TIMESPEC", CONST_RFC1945_TIMESPEC); #else printFeatureConfigInfo(textPrintFlag, "CONST_RFC1945_TIMESPEC", "undefined"); #endif #ifdef CONST_RRD_EXTENSION printFeatureConfigInfo(textPrintFlag, "CONST_RRD_EXTENSION", CONST_RRD_EXTENSION); #else printFeatureConfigInfo(textPrintFlag, "CONST_RRD_EXTENSION", "undefined"); #endif #ifdef CONST_SCSI_BYTES_HTML printFeatureConfigInfo(textPrintFlag, "CONST_SCSI_BYTES_HTML", CONST_SCSI_BYTES_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_SCSI_BYTES_HTML", "undefined"); #endif #ifdef CONST_SCSI_STATUS_HTML printFeatureConfigInfo(textPrintFlag, "CONST_SCSI_STATUS_HTML", CONST_SCSI_STATUS_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_SCSI_STATUS_HTML", "undefined"); #endif #ifdef CONST_SCSI_TIMES_HTML printFeatureConfigInfo(textPrintFlag, "CONST_SCSI_TIMES_HTML", CONST_SCSI_TIMES_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_SCSI_TIMES_HTML", "undefined"); #endif #ifdef CONST_SCSI_TM_HTML printFeatureConfigInfo(textPrintFlag, "CONST_SCSI_TM_HTML", CONST_SCSI_TM_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_SCSI_TM_HTML", "undefined"); #endif #ifdef CONST_SFLOW_TCPDUMP_MAGIC printFeatureConfigNum(textPrintFlag, "CONST_SFLOW_TCPDUMP_MAGIC", CONST_SFLOW_TCPDUMP_MAGIC); #else printFeatureConfigInfo(textPrintFlag, "CONST_SFLOW_TCPDUMP_MAGIC", "undefined"); #endif #ifdef CONST_SHOW_MUTEX_HTML printFeatureConfigInfo(textPrintFlag, "CONST_SHOW_MUTEX_HTML", CONST_SHOW_MUTEX_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_SHOW_MUTEX_HTML", "undefined"); #endif #ifdef CONST_SHOW_PLUGINS_HTML printFeatureConfigInfo(textPrintFlag, "CONST_SHOW_PLUGINS_HTML", CONST_SHOW_PLUGINS_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_SHOW_PLUGINS_HTML", "undefined"); #endif #ifdef CONST_SHOW_PORT_TRAFFIC_HTML printFeatureConfigInfo(textPrintFlag, "CONST_SHOW_PORT_TRAFFIC_HTML", CONST_SHOW_PORT_TRAFFIC_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_SHOW_PORT_TRAFFIC_HTML", "undefined"); #endif #ifdef CONST_SHOW_URLS_HTML printFeatureConfigInfo(textPrintFlag, "CONST_SHOW_URLS_HTML", CONST_SHOW_URLS_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_SHOW_URLS_HTML", "undefined"); #endif #ifdef CONST_SHOW_USERS_HTML printFeatureConfigInfo(textPrintFlag, "CONST_SHOW_USERS_HTML", CONST_SHOW_USERS_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_SHOW_USERS_HTML", "undefined"); #endif #ifdef CONST_SHUTDOWNNOW_NTOP_IMG printFeatureConfigInfo(textPrintFlag, "CONST_SHUTDOWNNOW_NTOP_IMG", CONST_SHUTDOWNNOW_NTOP_IMG); #else printFeatureConfigInfo(textPrintFlag, "CONST_SHUTDOWNNOW_NTOP_IMG", "undefined"); #endif #ifdef CONST_SHUTDOWN_NTOP_HTML printFeatureConfigInfo(textPrintFlag, "CONST_SHUTDOWN_NTOP_HTML", CONST_SHUTDOWN_NTOP_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_SHUTDOWN_NTOP_HTML", "undefined"); #endif #ifdef CONST_SIZE_PCAP_ERR_BUF printFeatureConfigNum(textPrintFlag, "CONST_SIZE_PCAP_ERR_BUF", CONST_SIZE_PCAP_ERR_BUF); #else printFeatureConfigInfo(textPrintFlag, "CONST_SIZE_PCAP_ERR_BUF", "undefined"); #endif #ifdef CONST_SORT_DATA_HOST_TRAFFIC_HTML printFeatureConfigInfo(textPrintFlag, "CONST_SORT_DATA_HOST_TRAFFIC_HTML", CONST_SORT_DATA_HOST_TRAFFIC_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_SORT_DATA_HOST_TRAFFIC_HTML", "undefined"); #endif #ifdef CONST_SORT_DATA_IP_HTML printFeatureConfigInfo(textPrintFlag, "CONST_SORT_DATA_IP_HTML", CONST_SORT_DATA_IP_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_SORT_DATA_IP_HTML", "undefined"); #endif #ifdef CONST_SORT_DATA_PROTOS_HTML printFeatureConfigInfo(textPrintFlag, "CONST_SORT_DATA_PROTOS_HTML", CONST_SORT_DATA_PROTOS_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_SORT_DATA_PROTOS_HTML", "undefined"); #endif #ifdef CONST_SORT_DATA_RCVD_HOST_TRAFFIC_HTML printFeatureConfigInfo(textPrintFlag, "CONST_SORT_DATA_RCVD_HOST_TRAFFIC_HTML", CONST_SORT_DATA_RCVD_HOST_TRAFFIC_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_SORT_DATA_RCVD_HOST_TRAFFIC_HTML", "undefined"); #endif #ifdef CONST_SORT_DATA_SENT_HOST_TRAFFIC_HTML printFeatureConfigInfo(textPrintFlag, "CONST_SORT_DATA_SENT_HOST_TRAFFIC_HTML", CONST_SORT_DATA_SENT_HOST_TRAFFIC_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_SORT_DATA_SENT_HOST_TRAFFIC_HTML", "undefined"); #endif #ifdef CONST_SORT_DATA_THPT_HTML printFeatureConfigInfo(textPrintFlag, "CONST_SORT_DATA_THPT_HTML", CONST_SORT_DATA_THPT_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_SORT_DATA_THPT_HTML", "undefined"); #endif #ifdef CONST_SORT_DATA_THPT_STATS_HTML printFeatureConfigInfo(textPrintFlag, "CONST_SORT_DATA_THPT_STATS_HTML", CONST_SORT_DATA_THPT_STATS_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_SORT_DATA_THPT_STATS_HTML", "undefined"); #endif #ifdef CONST_SSI_MENUBODY_HTML printFeatureConfigInfo(textPrintFlag, "CONST_SSI_MENUBODY_HTML", CONST_SSI_MENUBODY_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_SSI_MENUBODY_HTML", "undefined"); #endif #ifdef CONST_SSI_MENUHEAD_HTML printFeatureConfigInfo(textPrintFlag, "CONST_SSI_MENUHEAD_HTML", CONST_SSI_MENUHEAD_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_SSI_MENUHEAD_HTML", "undefined"); #endif #ifdef CONST_SSL_CERTF_FILENAME printFeatureConfigInfo(textPrintFlag, "CONST_SSL_CERTF_FILENAME", CONST_SSL_CERTF_FILENAME); #else printFeatureConfigInfo(textPrintFlag, "CONST_SSL_CERTF_FILENAME", "undefined"); #endif #ifdef CONST_SWITCH_NIC_HTML printFeatureConfigInfo(textPrintFlag, "CONST_SWITCH_NIC_HTML", CONST_SWITCH_NIC_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_SWITCH_NIC_HTML", "undefined"); #endif #ifdef CONST_TEXT_INFO_NTOP_HTML printFeatureConfigInfo(textPrintFlag, "CONST_TEXT_INFO_NTOP_HTML", CONST_TEXT_INFO_NTOP_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_TEXT_INFO_NTOP_HTML", "undefined"); #endif #ifdef CONST_THPTLABEL_TIMESPEC printFeatureConfigInfo(textPrintFlag, "CONST_THPTLABEL_TIMESPEC", CONST_THPTLABEL_TIMESPEC); #else printFeatureConfigInfo(textPrintFlag, "CONST_THPTLABEL_TIMESPEC", "undefined"); #endif #ifdef CONST_THPT_STATS_MATRIX_HTML printFeatureConfigInfo(textPrintFlag, "CONST_THPT_STATS_MATRIX_HTML", CONST_THPT_STATS_MATRIX_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_THPT_STATS_MATRIX_HTML", "undefined"); #endif #ifdef CONST_TOD_HOUR_TIMESPEC printFeatureConfigInfo(textPrintFlag, "CONST_TOD_HOUR_TIMESPEC", CONST_TOD_HOUR_TIMESPEC); #else printFeatureConfigInfo(textPrintFlag, "CONST_TOD_HOUR_TIMESPEC", "undefined"); #endif #ifdef CONST_TOD_NOSEC_TIMESPEC printFeatureConfigInfo(textPrintFlag, "CONST_TOD_NOSEC_TIMESPEC", CONST_TOD_NOSEC_TIMESPEC); #else printFeatureConfigInfo(textPrintFlag, "CONST_TOD_NOSEC_TIMESPEC", "undefined"); #endif #ifdef CONST_TOD_WSEC_TIMESPEC printFeatureConfigInfo(textPrintFlag, "CONST_TOD_WSEC_TIMESPEC", CONST_TOD_WSEC_TIMESPEC); #else printFeatureConfigInfo(textPrintFlag, "CONST_TOD_WSEC_TIMESPEC", "undefined"); #endif #ifdef CONST_TRAFFIC_STATS_HTML printFeatureConfigInfo(textPrintFlag, "CONST_TRAFFIC_STATS_HTML", CONST_TRAFFIC_STATS_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_TRAFFIC_STATS_HTML", "undefined"); #endif #ifdef CONST_TRAFFIC_SUMMARY_HTML printFeatureConfigInfo(textPrintFlag, "CONST_TRAFFIC_SUMMARY_HTML", CONST_TRAFFIC_SUMMARY_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_TRAFFIC_SUMMARY_HTML", "undefined"); #endif #ifdef CONST_TRMTU printFeatureConfigNum(textPrintFlag, "CONST_TRMTU", CONST_TRMTU); #else printFeatureConfigInfo(textPrintFlag, "CONST_TRMTU", "undefined"); #endif #ifdef CONST_TWO_MSL_TIMEOUT printFeatureConfigNum(textPrintFlag, "CONST_TWO_MSL_TIMEOUT", CONST_TWO_MSL_TIMEOUT); #else printFeatureConfigInfo(textPrintFlag, "CONST_TWO_MSL_TIMEOUT", "undefined"); #endif #ifdef CONST_UNKNOWN_MTU printFeatureConfigNum(textPrintFlag, "CONST_UNKNOWN_MTU", CONST_UNKNOWN_MTU); #else printFeatureConfigInfo(textPrintFlag, "CONST_UNKNOWN_MTU", "undefined"); #endif #ifdef CONST_VIEW_LOG_HTML printFeatureConfigInfo(textPrintFlag, "CONST_VIEW_LOG_HTML", CONST_VIEW_LOG_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_VIEW_LOG_HTML", "undefined"); #endif #ifdef CONST_VLAN_LIST_HTML printFeatureConfigInfo(textPrintFlag, "CONST_VLAN_LIST_HTML", CONST_VLAN_LIST_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_VLAN_LIST_HTML", "undefined"); #endif #ifdef CONST_VSAN_DETAIL_HTML printFeatureConfigInfo(textPrintFlag, "CONST_VSAN_DETAIL_HTML", CONST_VSAN_DETAIL_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_VSAN_DETAIL_HTML", "undefined"); #endif #ifdef CONST_VSAN_DISTRIB_HTML printFeatureConfigInfo(textPrintFlag, "CONST_VSAN_DISTRIB_HTML", CONST_VSAN_DISTRIB_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_VSAN_DISTRIB_HTML", "undefined"); #endif #ifdef CONST_VSAN_LIST_HTML printFeatureConfigInfo(textPrintFlag, "CONST_VSAN_LIST_HTML", CONST_VSAN_LIST_HTML); #else printFeatureConfigInfo(textPrintFlag, "CONST_VSAN_LIST_HTML", "undefined"); #endif #ifdef CONST_W3C_CHARTYPE_LINE printFeatureConfigInfo(textPrintFlag, "CONST_W3C_CHARTYPE_LINE", CONST_W3C_CHARTYPE_LINE); #else printFeatureConfigInfo(textPrintFlag, "CONST_W3C_CHARTYPE_LINE", "undefined"); #endif #ifdef CONST_W3C_DOCTYPE_LINE_32 printFeatureConfigInfo(textPrintFlag, "CONST_W3C_DOCTYPE_LINE_32", CONST_W3C_DOCTYPE_LINE_32); #else printFeatureConfigInfo(textPrintFlag, "CONST_W3C_DOCTYPE_LINE_32", "undefined"); #endif #ifdef CONST_W3C_DOCTYPE_LINE printFeatureConfigInfo(textPrintFlag, "CONST_W3C_DOCTYPE_LINE", CONST_W3C_DOCTYPE_LINE); #else printFeatureConfigInfo(textPrintFlag, "CONST_W3C_DOCTYPE_LINE", "undefined"); #endif #ifdef CONST_W3C_P3P_XML printFeatureConfigInfo(textPrintFlag, "CONST_W3C_P3P_XML", CONST_W3C_P3P_XML); #else printFeatureConfigInfo(textPrintFlag, "CONST_W3C_P3P_XML", "undefined"); #endif #ifdef CONST_WIN32_PATH_NETWORKS printFeatureConfigInfo(textPrintFlag, "CONST_WIN32_PATH_NETWORKS", CONST_WIN32_PATH_NETWORKS); #else printFeatureConfigInfo(textPrintFlag, "CONST_WIN32_PATH_NETWORKS", "undefined"); #endif #ifdef CONST_XML_DOCTYPE_NAME printFeatureConfigInfo(textPrintFlag, "CONST_XML_DOCTYPE_NAME", CONST_XML_DOCTYPE_NAME); #else printFeatureConfigInfo(textPrintFlag, "CONST_XML_DOCTYPE_NAME", "undefined"); #endif #ifdef CONST_XML_DTD_NAME printFeatureConfigInfo(textPrintFlag, "CONST_XML_DTD_NAME", CONST_XML_DTD_NAME); #else printFeatureConfigInfo(textPrintFlag, "CONST_XML_DTD_NAME", "undefined"); #endif #ifdef CONST_XMLDUMP_PLUGIN_NAME printFeatureConfigInfo(textPrintFlag, "CONST_XMLDUMP_PLUGIN_NAME", CONST_XMLDUMP_PLUGIN_NAME); #else printFeatureConfigInfo(textPrintFlag, "CONST_XMLDUMP_PLUGIN_NAME", "undefined"); #endif #ifdef CONST_XML_TMP_NAME printFeatureConfigInfo(textPrintFlag, "CONST_XML_TMP_NAME", CONST_XML_TMP_NAME); #else printFeatureConfigInfo(textPrintFlag, "CONST_XML_TMP_NAME", "undefined"); #endif #ifdef CONTACTED_PEERS_THRESHOLD printFeatureConfigNum(textPrintFlag, "CONTACTED_PEERS_THRESHOLD", CONTACTED_PEERS_THRESHOLD); #else printFeatureConfigInfo(textPrintFlag, "CONTACTED_PEERS_THRESHOLD", "undefined"); #endif #ifdef DEFAULT_NETFLOW_PORT_STR printFeatureConfigInfo(textPrintFlag, "DEFAULT_NETFLOW_PORT_STR", DEFAULT_NETFLOW_PORT_STR); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_NETFLOW_PORT_STR", "undefined"); #endif printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_ACCESS_LOG_FILE", "(null)"); #ifdef DEFAULT_NTOP_AUTOREFRESH_INTERVAL printFeatureConfigNum(textPrintFlag, "DEFAULT_NTOP_AUTOREFRESH_INTERVAL", DEFAULT_NTOP_AUTOREFRESH_INTERVAL); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_AUTOREFRESH_INTERVAL", "undefined"); #endif #ifdef DEFAULT_NTOP_DAEMON_MODE printFeatureConfigNum(textPrintFlag, "DEFAULT_NTOP_DAEMON_MODE", DEFAULT_NTOP_DAEMON_MODE); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_DAEMON_MODE", "undefined"); #endif #ifdef DEFAULT_NTOP_DEBUG printFeatureConfigNum(textPrintFlag, "DEFAULT_NTOP_DEBUG", DEFAULT_NTOP_DEBUG); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_DEBUG", "undefined"); #endif #ifdef DEFAULT_NTOP_DEBUG_MODE printFeatureConfigNum(textPrintFlag, "DEFAULT_NTOP_DEBUG_MODE", DEFAULT_NTOP_DEBUG_MODE); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_DEBUG_MODE", "undefined"); #endif printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_DEVICES", "(null)"); #ifdef DEFAULT_NTOP_DISABLE_PROMISCUOUS printFeatureConfigNum(textPrintFlag, "DEFAULT_NTOP_DISABLE_PROMISCUOUS", DEFAULT_NTOP_DISABLE_PROMISCUOUS); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_DISABLE_PROMISCUOUS", "undefined"); #endif #ifdef DEFAULT_NTOP_DOMAIN_NAME printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_DOMAIN_NAME", DEFAULT_NTOP_DOMAIN_NAME); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_DOMAIN_NAME", "undefined"); #endif #ifdef DEFAULT_NTOP_DONT_TRUST_MAC_ADDR printFeatureConfigNum(textPrintFlag, "DEFAULT_NTOP_DONT_TRUST_MAC_ADDR", DEFAULT_NTOP_DONT_TRUST_MAC_ADDR); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_DONT_TRUST_MAC_ADDR", "undefined"); #endif printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_ENABLE_SESSIONHANDLE", #ifdef DEFAULT_NTOP_ENABLE_SESSIONHANDLE "yes" #else "no" #endif ); #ifdef DEFAULT_NTOP_FAMILY printFeatureConfigNum(textPrintFlag, "DEFAULT_NTOP_FAMILY", DEFAULT_NTOP_FAMILY); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_FAMILY", "undefined"); #endif printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_FCNS_FILE", "(null)"); printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_FILTER_EXPRESSION", "(null)"); printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_FLOW_SPECS", "(null)"); printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_LOCAL_SUBNETS", "(null)"); #ifdef DEFAULT_NTOP_MAX_HASH_ENTRIES printFeatureConfigNum(textPrintFlag, "DEFAULT_NTOP_MAX_HASH_ENTRIES", DEFAULT_NTOP_MAX_HASH_ENTRIES); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_MAX_HASH_ENTRIES", "undefined"); #endif #ifdef DEFAULT_NTOP_MAX_NUM_SESSIONS printFeatureConfigNum(textPrintFlag, "DEFAULT_NTOP_MAX_NUM_SESSIONS", DEFAULT_NTOP_MAX_NUM_SESSIONS); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_MAX_NUM_SESSIONS", "undefined"); #endif printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_MERGE_INTERFACES", #ifdef DEFAULT_NTOP_MERGE_INTERFACES "yes" #else "no" #endif ); #ifdef DEFAULT_NTOP_NUMERIC_IP_ADDRESSES printFeatureConfigNum(textPrintFlag, "DEFAULT_NTOP_NUMERIC_IP_ADDRESSES", DEFAULT_NTOP_NUMERIC_IP_ADDRESSES); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_NUMERIC_IP_ADDRESSES", "undefined"); #endif #ifdef DEFAULT_NTOP_OTHER_PKT_DUMP printFeatureConfigNum(textPrintFlag, "DEFAULT_NTOP_OTHER_PKT_DUMP", DEFAULT_NTOP_OTHER_PKT_DUMP); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_OTHER_PKT_DUMP", "undefined"); #endif printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_P3PCP", "(null)"); printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_P3PURI", "(null)"); printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_PACKET_DECODING", #ifdef DEFAULT_NTOP_PACKET_DECODING "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_PCAP_LOG_FILENAME", "(null)"); #ifdef DEFAULT_NTOP_PID_DIRECTORY printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_PID_DIRECTORY", DEFAULT_NTOP_PID_DIRECTORY); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_PID_DIRECTORY", "undefined"); #endif #ifdef DEFAULT_NTOP_PIDFILE printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_PIDFILE", DEFAULT_NTOP_PIDFILE); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_PIDFILE", "undefined"); #endif printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_PROTO_SPECS", "(null)"); printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_SAMPLING", #ifdef DEFAULT_NTOP_SAMPLING "yes" #else "no" #endif ); #ifdef DEFAULT_NTOP_STICKY_HOSTS printFeatureConfigNum(textPrintFlag, "DEFAULT_NTOP_STICKY_HOSTS", DEFAULT_NTOP_STICKY_HOSTS); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_STICKY_HOSTS", "undefined"); #endif #ifdef DEFAULT_NTOP_SUSPICIOUS_PKT_DUMP printFeatureConfigNum(textPrintFlag, "DEFAULT_NTOP_SUSPICIOUS_PKT_DUMP", DEFAULT_NTOP_SUSPICIOUS_PKT_DUMP); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_SUSPICIOUS_PKT_DUMP", "undefined"); #endif #ifdef DEFAULT_NTOP_TRACK_ONLY_LOCAL printFeatureConfigNum(textPrintFlag, "DEFAULT_NTOP_TRACK_ONLY_LOCAL", DEFAULT_NTOP_TRACK_ONLY_LOCAL); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_TRACK_ONLY_LOCAL", "undefined"); #endif printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_TRAFFICDUMP_FILENAME", "(null)"); printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_WEB_ADDR", "(null)"); #ifdef DEFAULT_NTOP_WEB_PORT printFeatureConfigNum(textPrintFlag, "DEFAULT_NTOP_WEB_PORT", DEFAULT_NTOP_WEB_PORT); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_NTOP_WEB_PORT", "undefined"); #endif #ifdef DEFAULT_SFLOW_PORT_STR printFeatureConfigInfo(textPrintFlag, "DEFAULT_SFLOW_PORT_STR", DEFAULT_SFLOW_PORT_STR); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_SFLOW_PORT_STR", "undefined"); #endif #ifdef DEFAULT_SFLOW_SAMPLING_RATE printFeatureConfigInfo(textPrintFlag, "DEFAULT_SFLOW_SAMPLING_RATE", DEFAULT_SFLOW_SAMPLING_RATE); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_SFLOW_SAMPLING_RATE", "undefined"); #endif #ifdef DEFAULT_SNAPLEN printFeatureConfigNum(textPrintFlag, "DEFAULT_SNAPLEN", DEFAULT_SNAPLEN); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_SNAPLEN", "undefined"); #endif #ifdef DEFAULT_SYSLOG_FACILITY printFeatureConfigNum(textPrintFlag, "DEFAULT_SYSLOG_FACILITY", DEFAULT_SYSLOG_FACILITY); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_SYSLOG_FACILITY", "undefined"); #endif #ifdef DEFAULT_TCPWRAP_ALLOW printFeatureConfigNum(textPrintFlag, "DEFAULT_TCPWRAP_ALLOW", DEFAULT_TCPWRAP_ALLOW); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_TCPWRAP_ALLOW", "undefined"); #endif #ifdef DEFAULT_TCPWRAP_DENY printFeatureConfigNum(textPrintFlag, "DEFAULT_TCPWRAP_DENY", DEFAULT_TCPWRAP_DENY); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_TCPWRAP_DENY", "undefined"); #endif #ifdef DEFAULT_TRACE_LEVEL printFeatureConfigNum(textPrintFlag, "DEFAULT_TRACE_LEVEL", DEFAULT_TRACE_LEVEL); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_TRACE_LEVEL", "undefined"); #endif printFeatureConfigInfo(textPrintFlag, "DEFAULT_VSAN", #ifdef DEFAULT_VSAN "yes" #else "no" #endif ); #ifdef DEFAULT_WEBSERVER_REQUEST_QUEUE_LEN printFeatureConfigNum(textPrintFlag, "DEFAULT_WEBSERVER_REQUEST_QUEUE_LEN", DEFAULT_WEBSERVER_REQUEST_QUEUE_LEN); #else printFeatureConfigInfo(textPrintFlag, "DEFAULT_WEBSERVER_REQUEST_QUEUE_LEN", "undefined"); #endif #ifdef EMSGSIZE printFeatureConfigNum(textPrintFlag, "EMSGSIZE", EMSGSIZE); #else printFeatureConfigInfo(textPrintFlag, "EMSGSIZE", "undefined"); #endif #ifdef ETHERMTU printFeatureConfigNum(textPrintFlag, "ETHERMTU", ETHERMTU); #else printFeatureConfigInfo(textPrintFlag, "ETHERMTU", "undefined"); #endif #ifdef IP_L4_PORT_CHARGEN printFeatureConfigNum(textPrintFlag, "IP_L4_PORT_CHARGEN", IP_L4_PORT_CHARGEN); #else printFeatureConfigInfo(textPrintFlag, "IP_L4_PORT_CHARGEN", "undefined"); #endif #ifdef IP_L4_PORT_DAYTIME printFeatureConfigNum(textPrintFlag, "IP_L4_PORT_DAYTIME", IP_L4_PORT_DAYTIME); #else printFeatureConfigInfo(textPrintFlag, "IP_L4_PORT_DAYTIME", "undefined"); #endif #ifdef IP_L4_PORT_DISCARD printFeatureConfigNum(textPrintFlag, "IP_L4_PORT_DISCARD", IP_L4_PORT_DISCARD); #else printFeatureConfigInfo(textPrintFlag, "IP_L4_PORT_DISCARD", "undefined"); #endif #ifdef IP_L4_PORT_ECHO printFeatureConfigNum(textPrintFlag, "IP_L4_PORT_ECHO", IP_L4_PORT_ECHO); #else printFeatureConfigInfo(textPrintFlag, "IP_L4_PORT_ECHO", "undefined"); #endif #ifdef IP_TCP_PORT_FTP printFeatureConfigNum(textPrintFlag, "IP_TCP_PORT_FTP", IP_TCP_PORT_FTP); #else printFeatureConfigInfo(textPrintFlag, "IP_TCP_PORT_FTP", "undefined"); #endif #ifdef IP_TCP_PORT_GNUTELLA1 printFeatureConfigNum(textPrintFlag, "IP_TCP_PORT_GNUTELLA1", IP_TCP_PORT_GNUTELLA1); #else printFeatureConfigInfo(textPrintFlag, "IP_TCP_PORT_GNUTELLA1", "undefined"); #endif #ifdef IP_TCP_PORT_GNUTELLA2 printFeatureConfigNum(textPrintFlag, "IP_TCP_PORT_GNUTELLA2", IP_TCP_PORT_GNUTELLA2); #else printFeatureConfigInfo(textPrintFlag, "IP_TCP_PORT_GNUTELLA2", "undefined"); #endif #ifdef IP_TCP_PORT_GNUTELLA3 printFeatureConfigNum(textPrintFlag, "IP_TCP_PORT_GNUTELLA3", IP_TCP_PORT_GNUTELLA3); #else printFeatureConfigInfo(textPrintFlag, "IP_TCP_PORT_GNUTELLA3", "undefined"); #endif #ifdef IP_TCP_PORT_HTTP printFeatureConfigNum(textPrintFlag, "IP_TCP_PORT_HTTP", IP_TCP_PORT_HTTP); #else printFeatureConfigInfo(textPrintFlag, "IP_TCP_PORT_HTTP", "undefined"); #endif #ifdef IP_TCP_PORT_HTTPS printFeatureConfigNum(textPrintFlag, "IP_TCP_PORT_HTTPS", IP_TCP_PORT_HTTPS); #else printFeatureConfigInfo(textPrintFlag, "IP_TCP_PORT_HTTPS", "undefined"); #endif #ifdef IP_TCP_PORT_IMAP printFeatureConfigNum(textPrintFlag, "IP_TCP_PORT_IMAP", IP_TCP_PORT_IMAP); #else printFeatureConfigInfo(textPrintFlag, "IP_TCP_PORT_IMAP", "undefined"); #endif #ifdef IP_TCP_PORT_JETDIRECT printFeatureConfigNum(textPrintFlag, "IP_TCP_PORT_JETDIRECT", IP_TCP_PORT_JETDIRECT); #else printFeatureConfigInfo(textPrintFlag, "IP_TCP_PORT_JETDIRECT", "undefined"); #endif #ifdef IP_TCP_PORT_KAZAA printFeatureConfigNum(textPrintFlag, "IP_TCP_PORT_KAZAA", IP_TCP_PORT_KAZAA); #else printFeatureConfigInfo(textPrintFlag, "IP_TCP_PORT_KAZAA", "undefined"); #endif #ifdef IP_TCP_PORT_MSMSGR printFeatureConfigNum(textPrintFlag, "IP_TCP_PORT_MSMSGR", IP_TCP_PORT_MSMSGR); #else printFeatureConfigInfo(textPrintFlag, "IP_TCP_PORT_MSMSGR", "undefined"); #endif #ifdef IP_TCP_PORT_NTOP printFeatureConfigNum(textPrintFlag, "IP_TCP_PORT_NTOP", IP_TCP_PORT_NTOP); #else printFeatureConfigInfo(textPrintFlag, "IP_TCP_PORT_NTOP", "undefined"); #endif #ifdef IP_TCP_PORT_POP2 printFeatureConfigNum(textPrintFlag, "IP_TCP_PORT_POP2", IP_TCP_PORT_POP2); #else printFeatureConfigInfo(textPrintFlag, "IP_TCP_PORT_POP2", "undefined"); #endif #ifdef IP_TCP_PORT_POP3 printFeatureConfigNum(textPrintFlag, "IP_TCP_PORT_POP3", IP_TCP_PORT_POP3); #else printFeatureConfigInfo(textPrintFlag, "IP_TCP_PORT_POP3", "undefined"); #endif #ifdef IP_TCP_PORT_PRINTER printFeatureConfigNum(textPrintFlag, "IP_TCP_PORT_PRINTER", IP_TCP_PORT_PRINTER); #else printFeatureConfigInfo(textPrintFlag, "IP_TCP_PORT_PRINTER", "undefined"); #endif #ifdef IP_TCP_PORT_SCCP printFeatureConfigNum(textPrintFlag, "IP_TCP_PORT_SCCP", IP_TCP_PORT_SCCP); #else printFeatureConfigInfo(textPrintFlag, "IP_TCP_PORT_SCCP", "undefined"); #endif #ifdef IP_TCP_PORT_SKYPE printFeatureConfigNum(textPrintFlag, "IP_TCP_PORT_SKYPE", IP_TCP_PORT_SKYPE); #else printFeatureConfigInfo(textPrintFlag, "IP_TCP_PORT_SKYPE", "undefined"); #endif #ifdef IP_TCP_PORT_SMTP printFeatureConfigNum(textPrintFlag, "IP_TCP_PORT_SMTP", IP_TCP_PORT_SMTP); #else printFeatureConfigInfo(textPrintFlag, "IP_TCP_PORT_SMTP", "undefined"); #endif #ifdef IP_TCP_PORT_SQUID printFeatureConfigNum(textPrintFlag, "IP_TCP_PORT_SQUID", IP_TCP_PORT_SQUID); #else printFeatureConfigInfo(textPrintFlag, "IP_TCP_PORT_SQUID", "undefined"); #endif #ifdef IP_TCP_PORT_SSH printFeatureConfigNum(textPrintFlag, "IP_TCP_PORT_SSH", IP_TCP_PORT_SSH); #else printFeatureConfigInfo(textPrintFlag, "IP_TCP_PORT_SSH", "undefined"); #endif #ifdef IP_TCP_PORT_WINMX printFeatureConfigNum(textPrintFlag, "IP_TCP_PORT_WINMX", IP_TCP_PORT_WINMX); #else printFeatureConfigInfo(textPrintFlag, "IP_TCP_PORT_WINMX", "undefined"); #endif #ifdef IP_UDP_PORT_SIP printFeatureConfigNum(textPrintFlag, "IP_UDP_PORT_SIP", IP_UDP_PORT_SIP); #else printFeatureConfigInfo(textPrintFlag, "IP_UDP_PORT_SIP", "undefined"); #endif #ifdef LEN_ADDRESS_BUFFER printFeatureConfigNum(textPrintFlag, "LEN_ADDRESS_BUFFER", LEN_ADDRESS_BUFFER); #else printFeatureConfigInfo(textPrintFlag, "LEN_ADDRESS_BUFFER", "undefined"); #endif #ifdef LEN_CMDLINE_BUFFER printFeatureConfigNum(textPrintFlag, "LEN_CMDLINE_BUFFER", LEN_CMDLINE_BUFFER); #else printFeatureConfigInfo(textPrintFlag, "LEN_CMDLINE_BUFFER", "undefined"); #endif #ifdef LEN_ETHERNET_ADDRESS_DISPLAY printFeatureConfigNum(textPrintFlag, "LEN_ETHERNET_ADDRESS_DISPLAY", LEN_ETHERNET_ADDRESS_DISPLAY); #else printFeatureConfigInfo(textPrintFlag, "LEN_ETHERNET_ADDRESS_DISPLAY", "undefined"); #endif #ifdef LEN_ETHERNET_ADDRESS printFeatureConfigNum(textPrintFlag, "LEN_ETHERNET_ADDRESS", LEN_ETHERNET_ADDRESS); #else printFeatureConfigInfo(textPrintFlag, "LEN_ETHERNET_ADDRESS", "undefined"); #endif #ifdef LEN_ETHERNET_VENDOR_DISPLAY printFeatureConfigNum(textPrintFlag, "LEN_ETHERNET_VENDOR_DISPLAY", LEN_ETHERNET_VENDOR_DISPLAY); #else printFeatureConfigInfo(textPrintFlag, "LEN_ETHERNET_VENDOR_DISPLAY", "undefined"); #endif #ifdef LEN_ETHERNET_VENDOR printFeatureConfigNum(textPrintFlag, "LEN_ETHERNET_VENDOR", LEN_ETHERNET_VENDOR); #else printFeatureConfigInfo(textPrintFlag, "LEN_ETHERNET_VENDOR", "undefined"); #endif #ifdef LEN_FC_ADDRESS_DISPLAY printFeatureConfigNum(textPrintFlag, "LEN_FC_ADDRESS_DISPLAY", LEN_FC_ADDRESS_DISPLAY); #else printFeatureConfigInfo(textPrintFlag, "LEN_FC_ADDRESS_DISPLAY", "undefined"); #endif #ifdef LEN_FC_ADDRESS printFeatureConfigNum(textPrintFlag, "LEN_FC_ADDRESS", LEN_FC_ADDRESS); #else printFeatureConfigInfo(textPrintFlag, "LEN_FC_ADDRESS", "undefined"); #endif #ifdef LEN_FGETS_BUFFER printFeatureConfigNum(textPrintFlag, "LEN_FGETS_BUFFER", LEN_FGETS_BUFFER); #else printFeatureConfigInfo(textPrintFlag, "LEN_FGETS_BUFFER", "undefined"); #endif #ifdef LEN_GENERAL_WORK_BUFFER printFeatureConfigNum(textPrintFlag, "LEN_GENERAL_WORK_BUFFER", LEN_GENERAL_WORK_BUFFER); #else printFeatureConfigInfo(textPrintFlag, "LEN_GENERAL_WORK_BUFFER", "undefined"); #endif #ifdef LEN_HUGE_WORK_BUFFER printFeatureConfigNum(textPrintFlag, "LEN_HUGE_WORK_BUFFER", LEN_HUGE_WORK_BUFFER); #else printFeatureConfigInfo(textPrintFlag, "LEN_HUGE_WORK_BUFFER", "undefined"); #endif #ifdef LEN_MEDIUM_WORK_BUFFER printFeatureConfigNum(textPrintFlag, "LEN_MEDIUM_WORK_BUFFER", LEN_MEDIUM_WORK_BUFFER); #else printFeatureConfigInfo(textPrintFlag, "LEN_MEDIUM_WORK_BUFFER", "undefined"); #endif #ifdef LEN_SMALL_WORK_BUFFER printFeatureConfigNum(textPrintFlag, "LEN_SMALL_WORK_BUFFER", LEN_SMALL_WORK_BUFFER); #else printFeatureConfigInfo(textPrintFlag, "LEN_SMALL_WORK_BUFFER", "undefined"); #endif #ifdef LEN_TIMEFORMAT_BUFFER printFeatureConfigNum(textPrintFlag, "LEN_TIMEFORMAT_BUFFER", LEN_TIMEFORMAT_BUFFER); #else printFeatureConfigInfo(textPrintFlag, "LEN_TIMEFORMAT_BUFFER", "undefined"); #endif #ifdef LEN_WWN_ADDRESS_DISPLAY printFeatureConfigNum(textPrintFlag, "LEN_WWN_ADDRESS_DISPLAY", LEN_WWN_ADDRESS_DISPLAY); #else printFeatureConfigInfo(textPrintFlag, "LEN_WWN_ADDRESS_DISPLAY", "undefined"); #endif #ifdef LEN_WWN_ADDRESS printFeatureConfigNum(textPrintFlag, "LEN_WWN_ADDRESS", LEN_WWN_ADDRESS); #else printFeatureConfigInfo(textPrintFlag, "LEN_WWN_ADDRESS", "undefined"); #endif printFeatureConfigInfo(textPrintFlag, "MAKE_NTOP_PACKETSZ_DECLARATIONS", #ifdef MAKE_NTOP_PACKETSZ_DECLARATIONS "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "MAKE_WITH_FORK_COPYONWRITE", #ifdef MAKE_WITH_FORK_COPYONWRITE "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "MAKE_WITH_HTTPSIGTRAP", #ifdef MAKE_WITH_HTTPSIGTRAP "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "MAKE_WITH_LOG_XXXXXX", #ifdef MAKE_WITH_LOG_XXXXXX "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "MAKE_WITH_NETFLOWSIGTRAP", #ifdef MAKE_WITH_NETFLOWSIGTRAP "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "MAKE_WITH_SYSLOG", #ifdef MAKE_WITH_SYSLOG "yes" #else "no" #endif ); #ifdef MAX_ADDRESSES printFeatureConfigNum(textPrintFlag, "MAX_ADDRESSES", MAX_ADDRESSES); #else printFeatureConfigInfo(textPrintFlag, "MAX_ADDRESSES", "undefined"); #endif #ifdef MAX_ALIASES printFeatureConfigNum(textPrintFlag, "MAX_ALIASES", MAX_ALIASES); #else printFeatureConfigInfo(textPrintFlag, "MAX_ALIASES", "undefined"); #endif #ifdef MAX_ASSIGNED_IP_PORTS printFeatureConfigNum(textPrintFlag, "MAX_ASSIGNED_IP_PORTS", MAX_ASSIGNED_IP_PORTS); #else printFeatureConfigInfo(textPrintFlag, "MAX_ASSIGNED_IP_PORTS", "undefined"); #endif #ifdef MAXCDNAME printFeatureConfigNum(textPrintFlag, "MAXCDNAME", MAXCDNAME); #else printFeatureConfigInfo(textPrintFlag, "MAXCDNAME", "undefined"); #endif #ifdef MAX_DEVICE_NAME_LEN printFeatureConfigNum(textPrintFlag, "MAX_DEVICE_NAME_LEN", MAX_DEVICE_NAME_LEN); #else printFeatureConfigInfo(textPrintFlag, "MAX_DEVICE_NAME_LEN", "undefined"); #endif #ifdef MAX_DLT_ARRAY printFeatureConfigNum(textPrintFlag, "MAX_DLT_ARRAY", MAX_DLT_ARRAY); #else printFeatureConfigInfo(textPrintFlag, "MAX_DLT_ARRAY", "undefined"); #endif #ifdef MAXDNAME printFeatureConfigNum(textPrintFlag, "MAXDNAME", MAXDNAME); #else printFeatureConfigInfo(textPrintFlag, "MAXDNAME", "undefined"); #endif #ifdef MAX_ELEMENT_HASH printFeatureConfigNum(textPrintFlag, "MAX_ELEMENT_HASH", MAX_ELEMENT_HASH); #else printFeatureConfigInfo(textPrintFlag, "MAX_ELEMENT_HASH", "undefined"); #endif #ifdef MAX_FC_DOMAINS printFeatureConfigNum(textPrintFlag, "MAX_FC_DOMAINS", MAX_FC_DOMAINS); #else printFeatureConfigInfo(textPrintFlag, "MAX_FC_DOMAINS", "undefined"); #endif #ifdef MAX_HASHDUMP_ENTRY printFeatureConfigNum(textPrintFlag, "MAX_HASHDUMP_ENTRY", MAX_HASHDUMP_ENTRY); #else printFeatureConfigInfo(textPrintFlag, "MAX_HASHDUMP_ENTRY", "undefined"); #endif #ifdef MAXHOSTNAMELEN printFeatureConfigNum(textPrintFlag, "MAXHOSTNAMELEN", MAXHOSTNAMELEN); #else printFeatureConfigInfo(textPrintFlag, "MAXHOSTNAMELEN", "undefined"); #endif #ifdef MAX_HOSTS_CACHE_LEN printFeatureConfigNum(textPrintFlag, "MAX_HOSTS_CACHE_LEN", MAX_HOSTS_CACHE_LEN); #else printFeatureConfigInfo(textPrintFlag, "MAX_HOSTS_CACHE_LEN", "undefined"); #endif #ifdef MAX_HOSTS_PURGE_PER_CYCLE printFeatureConfigNum(textPrintFlag, "MAX_HOSTS_PURGE_PER_CYCLE", MAX_HOSTS_PURGE_PER_CYCLE); #else printFeatureConfigInfo(textPrintFlag, "MAX_HOSTS_PURGE_PER_CYCLE", "undefined"); #endif #ifdef MAX_IP_PORT printFeatureConfigNum(textPrintFlag, "MAX_IP_PORT", MAX_IP_PORT); #else printFeatureConfigInfo(textPrintFlag, "MAX_IP_PORT", "undefined"); #endif #ifdef MAXLABEL printFeatureConfigNum(textPrintFlag, "MAXLABEL", MAXLABEL); #else printFeatureConfigInfo(textPrintFlag, "MAXLABEL", "undefined"); #endif #ifdef MAX_LANGUAGES_REQUESTED printFeatureConfigNum(textPrintFlag, "MAX_LANGUAGES_REQUESTED", MAX_LANGUAGES_REQUESTED); #else printFeatureConfigInfo(textPrintFlag, "MAX_LANGUAGES_REQUESTED", "undefined"); #endif #ifdef MAX_LANGUAGES_SUPPORTED printFeatureConfigNum(textPrintFlag, "MAX_LANGUAGES_SUPPORTED", MAX_LANGUAGES_SUPPORTED); #else printFeatureConfigInfo(textPrintFlag, "MAX_LANGUAGES_SUPPORTED", "undefined"); #endif #ifdef MAX_LASTSEEN_TABLE_SIZE printFeatureConfigNum(textPrintFlag, "MAX_LASTSEEN_TABLE_SIZE", MAX_LASTSEEN_TABLE_SIZE); #else printFeatureConfigInfo(textPrintFlag, "MAX_LASTSEEN_TABLE_SIZE", "undefined"); #endif #ifdef MAX_LEN_SYM_HOST_NAME_HTML printFeatureConfigNum(textPrintFlag, "MAX_LEN_SYM_HOST_NAME_HTML", MAX_LEN_SYM_HOST_NAME_HTML); #else printFeatureConfigInfo(textPrintFlag, "MAX_LEN_SYM_HOST_NAME_HTML", "undefined"); #endif #ifdef MAX_LEN_SYM_HOST_NAME printFeatureConfigNum(textPrintFlag, "MAX_LEN_SYM_HOST_NAME", MAX_LEN_SYM_HOST_NAME); #else printFeatureConfigInfo(textPrintFlag, "MAX_LEN_SYM_HOST_NAME", "undefined"); #endif #ifdef MAX_LEN_URL printFeatureConfigNum(textPrintFlag, "MAX_LEN_URL", MAX_LEN_URL); #else printFeatureConfigInfo(textPrintFlag, "MAX_LEN_URL", "undefined"); #endif #ifdef MAX_LEN_VENDOR_NAME printFeatureConfigNum(textPrintFlag, "MAX_LEN_VENDOR_NAME", MAX_LEN_VENDOR_NAME); #else printFeatureConfigInfo(textPrintFlag, "MAX_LEN_VENDOR_NAME", "undefined"); #endif #ifdef MAX_MULTIPLE_VLAN_WARNINGS printFeatureConfigNum(textPrintFlag, "MAX_MULTIPLE_VLAN_WARNINGS", MAX_MULTIPLE_VLAN_WARNINGS); #else printFeatureConfigInfo(textPrintFlag, "MAX_MULTIPLE_VLAN_WARNINGS", "undefined"); #endif #ifdef MAX_NFS_NAME_HASH printFeatureConfigNum(textPrintFlag, "MAX_NFS_NAME_HASH", MAX_NFS_NAME_HASH); #else printFeatureConfigInfo(textPrintFlag, "MAX_NFS_NAME_HASH", "undefined"); #endif #ifdef MAX_NODE_TYPES printFeatureConfigNum(textPrintFlag, "MAX_NODE_TYPES", MAX_NODE_TYPES); #else printFeatureConfigInfo(textPrintFlag, "MAX_NODE_TYPES", "undefined"); #endif #ifdef MAX_NUM_BAD_IP_ADDRESSES printFeatureConfigNum(textPrintFlag, "MAX_NUM_BAD_IP_ADDRESSES", MAX_NUM_BAD_IP_ADDRESSES); #else printFeatureConfigInfo(textPrintFlag, "MAX_NUM_BAD_IP_ADDRESSES", "undefined"); #endif #ifdef MAX_NUM_CONTACTED_PEERS printFeatureConfigNum(textPrintFlag, "MAX_NUM_CONTACTED_PEERS", MAX_NUM_CONTACTED_PEERS); #else printFeatureConfigInfo(textPrintFlag, "MAX_NUM_CONTACTED_PEERS", "undefined"); #endif #ifdef MAX_NUM_DEQUEUE_THREADS printFeatureConfigNum(textPrintFlag, "MAX_NUM_DEQUEUE_THREADS", MAX_NUM_DEQUEUE_THREADS); #else printFeatureConfigInfo(textPrintFlag, "MAX_NUM_DEQUEUE_THREADS", "undefined"); #endif #ifdef MAX_NUM_DEVICES printFeatureConfigNum(textPrintFlag, "MAX_NUM_DEVICES", MAX_NUM_DEVICES); #else printFeatureConfigInfo(textPrintFlag, "MAX_NUM_DEVICES", "undefined"); #endif #ifdef MAX_NUM_DEVICES_VIRTUAL printFeatureConfigNum(textPrintFlag, "MAX_NUM_DEVICES_VIRTUAL", MAX_NUM_DEVICES_VIRTUAL); #else printFeatureConfigInfo(textPrintFlag, "MAX_NUM_DEVICES_VIRTUAL", "undefined"); #endif #ifdef MAX_NUM_DHCP_MSG printFeatureConfigNum(textPrintFlag, "MAX_NUM_DHCP_MSG", MAX_NUM_DHCP_MSG); #else printFeatureConfigInfo(textPrintFlag, "MAX_NUM_DHCP_MSG", "undefined"); #endif #ifdef MAX_NUM_FIN printFeatureConfigNum(textPrintFlag, "MAX_NUM_FIN", MAX_NUM_FIN); #else printFeatureConfigInfo(textPrintFlag, "MAX_NUM_FIN", "undefined"); #endif #ifdef MAX_NUM_IGNOREDFLOWS printFeatureConfigNum(textPrintFlag, "MAX_NUM_IGNOREDFLOWS", MAX_NUM_IGNOREDFLOWS); #else printFeatureConfigInfo(textPrintFlag, "MAX_NUM_IGNOREDFLOWS", "undefined"); #endif #ifdef MAX_NUM_LIST_ENTRIES printFeatureConfigNum(textPrintFlag, "MAX_NUM_LIST_ENTRIES", MAX_NUM_LIST_ENTRIES); #else printFeatureConfigInfo(textPrintFlag, "MAX_NUM_LIST_ENTRIES", "undefined"); #endif #ifdef MAX_NUM_NETWORKS printFeatureConfigNum(textPrintFlag, "MAX_NUM_NETWORKS", MAX_NUM_NETWORKS); #else printFeatureConfigInfo(textPrintFlag, "MAX_NUM_NETWORKS", "undefined"); #endif #ifdef MAX_NUM_OS printFeatureConfigNum(textPrintFlag, "MAX_NUM_OS", MAX_NUM_OS); #else printFeatureConfigInfo(textPrintFlag, "MAX_NUM_OS", "undefined"); #endif #ifdef MAX_NUM_PROBES printFeatureConfigNum(textPrintFlag, "MAX_NUM_PROBES", MAX_NUM_PROBES); #else printFeatureConfigInfo(textPrintFlag, "MAX_NUM_PROBES", "undefined"); #endif #ifdef MAX_NUM_PROTOS printFeatureConfigNum(textPrintFlag, "MAX_NUM_PROTOS", MAX_NUM_PROTOS); #else printFeatureConfigInfo(textPrintFlag, "MAX_NUM_PROTOS", "undefined"); #endif #ifdef MAX_NUM_PURGED_SESSIONS printFeatureConfigNum(textPrintFlag, "MAX_NUM_PURGED_SESSIONS", MAX_NUM_PURGED_SESSIONS); #else printFeatureConfigInfo(textPrintFlag, "MAX_NUM_PURGED_SESSIONS", "undefined"); #endif #ifdef MAX_NUM_PWFILE_ENTRIES printFeatureConfigNum(textPrintFlag, "MAX_NUM_PWFILE_ENTRIES", MAX_NUM_PWFILE_ENTRIES); #else printFeatureConfigInfo(textPrintFlag, "MAX_NUM_PWFILE_ENTRIES", "undefined"); #endif #ifdef MAX_NUM_QUEUED_ADDRESSES printFeatureConfigNum(textPrintFlag, "MAX_NUM_QUEUED_ADDRESSES", MAX_NUM_QUEUED_ADDRESSES); #else printFeatureConfigInfo(textPrintFlag, "MAX_NUM_QUEUED_ADDRESSES", "undefined"); #endif #ifdef MAX_NUM_RECENT_PORTS printFeatureConfigNum(textPrintFlag, "MAX_NUM_RECENT_PORTS", MAX_NUM_RECENT_PORTS); #else printFeatureConfigInfo(textPrintFlag, "MAX_NUM_RECENT_PORTS", "undefined"); #endif #ifdef MAX_NUM_ROUTERS printFeatureConfigNum(textPrintFlag, "MAX_NUM_ROUTERS", MAX_NUM_ROUTERS); #else printFeatureConfigInfo(textPrintFlag, "MAX_NUM_ROUTERS", "undefined"); #endif #ifdef MAX_NUM_STORED_FLAGS printFeatureConfigNum(textPrintFlag, "MAX_NUM_STORED_FLAGS", MAX_NUM_STORED_FLAGS); #else printFeatureConfigInfo(textPrintFlag, "MAX_NUM_STORED_FLAGS", "undefined"); #endif #ifdef MAX_NUM_UNKNOWN_PROTOS printFeatureConfigNum(textPrintFlag, "MAX_NUM_UNKNOWN_PROTOS", MAX_NUM_UNKNOWN_PROTOS); #else printFeatureConfigInfo(textPrintFlag, "MAX_NUM_UNKNOWN_PROTOS", "undefined"); #endif #ifdef MAX_PACKET_LEN printFeatureConfigNum(textPrintFlag, "MAX_PACKET_LEN", MAX_PACKET_LEN); #else printFeatureConfigInfo(textPrintFlag, "MAX_PACKET_LEN", "undefined"); #endif #ifdef MAX_PASSIVE_FTP_SESSION_TRACKER printFeatureConfigNum(textPrintFlag, "MAX_PASSIVE_FTP_SESSION_TRACKER", MAX_PASSIVE_FTP_SESSION_TRACKER); #else printFeatureConfigInfo(textPrintFlag, "MAX_PASSIVE_FTP_SESSION_TRACKER", "undefined"); #endif #ifdef MAX_PDA_HOST_TABLE printFeatureConfigNum(textPrintFlag, "MAX_PDA_HOST_TABLE", MAX_PDA_HOST_TABLE); #else printFeatureConfigInfo(textPrintFlag, "MAX_PDA_HOST_TABLE", "undefined"); #endif #ifdef MAX_PER_DEVICE_HASH_LIST printFeatureConfigNum(textPrintFlag, "MAX_PER_DEVICE_HASH_LIST", MAX_PER_DEVICE_HASH_LIST); #else printFeatureConfigInfo(textPrintFlag, "MAX_PER_DEVICE_HASH_LIST", "undefined"); #endif #ifdef MAX_PROCESS_BUFFER printFeatureConfigNum(textPrintFlag, "MAX_PROCESS_BUFFER", MAX_PROCESS_BUFFER); #else printFeatureConfigInfo(textPrintFlag, "MAX_PROCESS_BUFFER", "undefined"); #endif #ifdef MAX_NETFLOW_FLOW_BUFFER printFeatureConfigNum(textPrintFlag, "MAX_NETFLOW_FLOW_BUFFER", MAX_NETFLOW_FLOW_BUFFER); #else printFeatureConfigInfo(textPrintFlag, "MAX_NETFLOW_FLOW_BUFFER", "undefined"); #endif #ifdef MAX_NETFLOW_RECORD_BUFFER printFeatureConfigNum(textPrintFlag, "MAX_NETFLOW_RECORD_BUFFER", MAX_NETFLOW_RECORD_BUFFER); #else printFeatureConfigInfo(textPrintFlag, "MAX_NETFLOW_RECORD_BUFFER", "undefined"); #endif #ifdef MAX_RRD_CYCLE_BUFFER printFeatureConfigNum(textPrintFlag, "MAX_RRD_CYCLE_BUFFER", MAX_RRD_CYCLE_BUFFER); #else printFeatureConfigInfo(textPrintFlag, "MAX_RRD_CYCLE_BUFFER", "undefined"); #endif #ifdef MAX_RRD_PROCESS_BUFFER printFeatureConfigNum(textPrintFlag, "MAX_RRD_PROCESS_BUFFER", MAX_RRD_PROCESS_BUFFER); #else printFeatureConfigInfo(textPrintFlag, "MAX_RRD_PROCESS_BUFFER", "undefined"); #endif #ifdef MAX_SESSIONS_CACHE_LEN printFeatureConfigNum(textPrintFlag, "MAX_SESSIONS_CACHE_LEN", MAX_SESSIONS_CACHE_LEN); #else printFeatureConfigInfo(textPrintFlag, "MAX_SESSIONS_CACHE_LEN", "undefined"); #endif #ifdef MAX_SSL_CONNECTIONS printFeatureConfigNum(textPrintFlag, "MAX_SSL_CONNECTIONS", MAX_SSL_CONNECTIONS); #else printFeatureConfigInfo(textPrintFlag, "MAX_SSL_CONNECTIONS", "undefined"); #endif #ifdef MAX_SUBNET_HOSTS printFeatureConfigNum(textPrintFlag, "MAX_SUBNET_HOSTS", MAX_SUBNET_HOSTS); #else printFeatureConfigInfo(textPrintFlag, "MAX_SUBNET_HOSTS", "undefined"); #endif #ifdef MAX_TOT_NUM_SESSIONS printFeatureConfigNum(textPrintFlag, "MAX_TOT_NUM_SESSIONS", MAX_TOT_NUM_SESSIONS); #else printFeatureConfigInfo(textPrintFlag, "MAX_TOT_NUM_SESSIONS", "undefined"); #endif #ifdef MAX_USER_VSAN printFeatureConfigNum(textPrintFlag, "MAX_USER_VSAN", MAX_USER_VSAN); #else printFeatureConfigInfo(textPrintFlag, "MAX_USER_VSAN", "undefined"); #endif #ifdef MAX_VLAN printFeatureConfigNum(textPrintFlag, "MAX_VLAN", MAX_VLAN); #else printFeatureConfigInfo(textPrintFlag, "MAX_VLAN", "undefined"); #endif #ifdef MAX_VSANS_GRAPHED printFeatureConfigNum(textPrintFlag, "MAX_VSANS_GRAPHED", MAX_VSANS_GRAPHED); #else printFeatureConfigInfo(textPrintFlag, "MAX_VSANS_GRAPHED", "undefined"); #endif #ifdef MAX_VSANS printFeatureConfigNum(textPrintFlag, "MAX_VSANS", MAX_VSANS); #else printFeatureConfigInfo(textPrintFlag, "MAX_VSANS", "undefined"); #endif #ifdef MAX_WEBSERVER_REQUEST_QUEUE_LEN printFeatureConfigNum(textPrintFlag, "MAX_WEBSERVER_REQUEST_QUEUE_LEN", MAX_WEBSERVER_REQUEST_QUEUE_LEN); #else printFeatureConfigInfo(textPrintFlag, "MAX_WEBSERVER_REQUEST_QUEUE_LEN", "undefined"); #endif #ifdef MAX_WIN32_NET_ALIASES printFeatureConfigNum(textPrintFlag, "MAX_WIN32_NET_ALIASES", MAX_WIN32_NET_ALIASES); #else printFeatureConfigInfo(textPrintFlag, "MAX_WIN32_NET_ALIASES", "undefined"); #endif #ifdef MIN_SLICE_PERCENTAGE printFeatureConfigNum(textPrintFlag, "MIN_SLICE_PERCENTAGE", MIN_SLICE_PERCENTAGE); #else printFeatureConfigInfo(textPrintFlag, "MIN_SLICE_PERCENTAGE", "undefined"); #endif #ifdef MIN_WEBSERVER_REQUEST_QUEUE_LEN printFeatureConfigNum(textPrintFlag, "MIN_WEBSERVER_REQUEST_QUEUE_LEN", MIN_WEBSERVER_REQUEST_QUEUE_LEN); #else printFeatureConfigInfo(textPrintFlag, "MIN_WEBSERVER_REQUEST_QUEUE_LEN", "undefined"); #endif #ifdef NAME_MAX printFeatureConfigNum(textPrintFlag, "NAME_MAX", NAME_MAX); #else printFeatureConfigInfo(textPrintFlag, "NAME_MAX", "undefined"); #endif #ifdef NETFLOW_DEVICE_NAME printFeatureConfigInfo(textPrintFlag, "NETFLOW_DEVICE_NAME", NETFLOW_DEVICE_NAME); #else printFeatureConfigInfo(textPrintFlag, "NETFLOW_DEVICE_NAME", "undefined"); #endif #ifdef NS_CMPRSFLGS printFeatureConfigNum(textPrintFlag, "NS_CMPRSFLGS", NS_CMPRSFLGS); #else printFeatureConfigInfo(textPrintFlag, "NS_CMPRSFLGS", "undefined"); #endif #ifdef NS_MAXCDNAME printFeatureConfigNum(textPrintFlag, "NS_MAXCDNAME", NS_MAXCDNAME); #else printFeatureConfigInfo(textPrintFlag, "NS_MAXCDNAME", "undefined"); #endif #ifdef NTOP_PREF_ACCESS_LOG printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_ACCESS_LOG", NTOP_PREF_ACCESS_LOG); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_ACCESS_LOG", "undefined"); #endif #ifdef NTOP_PREF_DAEMON printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_DAEMON", NTOP_PREF_DAEMON); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_DAEMON", "undefined"); #endif #ifdef NTOP_PREF_DBG_MODE printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_DBG_MODE", NTOP_PREF_DBG_MODE); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_DBG_MODE", "undefined"); #endif #ifdef NTOP_PREF_DEVICES printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_DEVICES", NTOP_PREF_DEVICES); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_DEVICES", "undefined"); #endif #ifdef NTOP_PREF_DOMAINNAME printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_DOMAINNAME", NTOP_PREF_DOMAINNAME); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_DOMAINNAME", "undefined"); #endif #ifdef NTOP_PREF_DUMP_OTHER printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_DUMP_OTHER", NTOP_PREF_DUMP_OTHER); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_DUMP_OTHER", "undefined"); #endif #ifdef NTOP_PREF_DUMP_SUSP printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_DUMP_SUSP", NTOP_PREF_DUMP_SUSP); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_DUMP_SUSP", "undefined"); #endif #ifdef NTOP_PREF_EN_PROTO_DECODE printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_EN_PROTO_DECODE", NTOP_PREF_EN_PROTO_DECODE); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_EN_PROTO_DECODE", "undefined"); #endif #ifdef NTOP_PREF_EN_SESSION printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_EN_SESSION", NTOP_PREF_EN_SESSION); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_EN_SESSION", "undefined"); #endif #ifdef NTOP_PREF_FILTER printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_FILTER", NTOP_PREF_FILTER); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_FILTER", "undefined"); #endif #ifdef NTOP_PREF_FLOWSPECS printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_FLOWSPECS", NTOP_PREF_FLOWSPECS); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_FLOWSPECS", "undefined"); #endif #ifdef NTOP_PREF_IPV4 printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_IPV4", NTOP_PREF_IPV4); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_IPV4", "undefined"); #endif #ifdef NTOP_PREF_IPV4V6 printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_IPV4V6", NTOP_PREF_IPV4V6); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_IPV4V6", "undefined"); #endif #ifdef NTOP_PREF_IPV6 printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_IPV6", NTOP_PREF_IPV6); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_IPV6", "undefined"); #endif #ifdef NTOP_PREF_LOCALADDR printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_LOCALADDR", NTOP_PREF_LOCALADDR); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_LOCALADDR", "undefined"); #endif #ifdef NTOP_PREF_KNOWNADDR printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_KNOWNADDR", NTOP_PREF_KNOWNADDR); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_KNOWNADDR", "undefined"); #endif #ifdef NTOP_PREF_MAPPERURL printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_MAPPERURL", NTOP_PREF_MAPPERURL); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_MAPPERURL", "undefined"); #endif #ifdef NTOP_PREF_MAXHASH printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_MAXHASH", NTOP_PREF_MAXHASH); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_MAXHASH", "undefined"); #endif #ifdef NTOP_PREF_MAXLINES printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_MAXLINES", NTOP_PREF_MAXLINES); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_MAXLINES", "undefined"); #endif #ifdef NTOP_PREF_MAXSESSIONS printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_MAXSESSIONS", NTOP_PREF_MAXSESSIONS); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_MAXSESSIONS", "undefined"); #endif #ifdef NTOP_PREF_MERGEIF printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_MERGEIF", NTOP_PREF_MERGEIF); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_MERGEIF", "undefined"); #endif #ifdef NTOP_PREF_NOBLOCK printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_NOBLOCK", NTOP_PREF_NOBLOCK); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_NOBLOCK", "undefined"); #endif #ifdef NTOP_PREF_NO_INVLUN printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_NO_INVLUN", NTOP_PREF_NO_INVLUN); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_NO_INVLUN", "undefined"); #endif #ifdef NTOP_PREF_NO_ISESS_PURGE printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_NO_ISESS_PURGE", NTOP_PREF_NO_ISESS_PURGE); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_NO_ISESS_PURGE", "undefined"); #endif #ifdef NTOP_PREF_NO_MUTEX_EXTRA printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_NO_MUTEX_EXTRA", NTOP_PREF_NO_MUTEX_EXTRA); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_NO_MUTEX_EXTRA", "undefined"); #endif #ifdef NTOP_PREF_NO_PROMISC printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_NO_PROMISC", NTOP_PREF_NO_PROMISC); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_NO_PROMISC", "undefined"); #endif #ifdef NTOP_PREF_NO_SCHEDYLD printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_NO_SCHEDYLD", NTOP_PREF_NO_SCHEDYLD); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_NO_SCHEDYLD", "undefined"); #endif #ifdef NTOP_PREF_NO_STOPCAP printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_NO_STOPCAP", NTOP_PREF_NO_STOPCAP); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_NO_STOPCAP", "undefined"); #endif #ifdef NTOP_PREF_NO_TRUST_MAC printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_NO_TRUST_MAC", NTOP_PREF_NO_TRUST_MAC); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_NO_TRUST_MAC", "undefined"); #endif #ifdef NTOP_PREF_NUMERIC_IP printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_NUMERIC_IP", NTOP_PREF_NUMERIC_IP); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_NUMERIC_IP", "undefined"); #endif #ifdef NTOP_PREF_P3PCP printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_P3PCP", NTOP_PREF_P3PCP); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_P3PCP", "undefined"); #endif #ifdef NTOP_PREF_P3PURI printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_P3PURI", NTOP_PREF_P3PURI); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_P3PURI", "undefined"); #endif #ifdef NTOP_PREF_PCAP_LOGBASE printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_PCAP_LOGBASE", NTOP_PREF_PCAP_LOGBASE); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_PCAP_LOGBASE", "undefined"); #endif #ifdef NTOP_PREF_PCAP_LOG printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_PCAP_LOG", NTOP_PREF_PCAP_LOG); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_PCAP_LOG", "undefined"); #endif #ifdef NTOP_PREF_PRINT_FCORIP printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_PRINT_FCORIP", NTOP_PREF_PRINT_FCORIP); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_PRINT_FCORIP", "undefined"); #endif #ifdef NTOP_PREF_PROTOSPECS printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_PROTOSPECS", NTOP_PREF_PROTOSPECS); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_PROTOSPECS", "undefined"); #endif #ifdef NTOP_PREF_REFRESH_RATE printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_REFRESH_RATE", NTOP_PREF_REFRESH_RATE); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_REFRESH_RATE", "undefined"); #endif #ifdef NTOP_PREF_SAMPLING printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_SAMPLING", NTOP_PREF_SAMPLING); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_SAMPLING", "undefined"); #endif #ifdef NTOP_PREF_SPOOLPATH printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_SPOOLPATH", NTOP_PREF_SPOOLPATH); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_SPOOLPATH", "undefined"); #endif #ifdef NTOP_PREF_SSLPORT printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_SSLPORT", NTOP_PREF_SSLPORT); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_SSLPORT", "undefined"); #endif #ifdef NTOP_PREF_STICKY_HOSTS printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_STICKY_HOSTS", NTOP_PREF_STICKY_HOSTS); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_STICKY_HOSTS", "undefined"); #endif #ifdef NTOP_PREF_TRACE_LVL printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_TRACE_LVL", NTOP_PREF_TRACE_LVL); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_TRACE_LVL", "undefined"); #endif #ifdef NTOP_PREF_TRACK_LOCAL printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_TRACK_LOCAL", NTOP_PREF_TRACK_LOCAL); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_TRACK_LOCAL", "undefined"); #endif #ifdef NTOP_PREF_USE_SSLWATCH printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_USE_SSLWATCH", NTOP_PREF_USE_SSLWATCH); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_USE_SSLWATCH", "undefined"); #endif #ifdef NTOP_PREF_USE_SYSLOG printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_USE_SYSLOG", NTOP_PREF_USE_SYSLOG); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_USE_SYSLOG", "undefined"); #endif #ifdef NTOP_PREF_VALUE_AF_BOTH printFeatureConfigNum(textPrintFlag, "NTOP_PREF_VALUE_AF_BOTH", NTOP_PREF_VALUE_AF_BOTH); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_VALUE_AF_BOTH", "undefined"); #endif printFeatureConfigNum(textPrintFlag, "NTOP_PREF_VALUE_AF_INET6", NTOP_PREF_VALUE_AF_INET6); #ifdef NTOP_PREF_VALUE_AF_INET printFeatureConfigNum(textPrintFlag, "NTOP_PREF_VALUE_AF_INET", NTOP_PREF_VALUE_AF_INET); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_VALUE_AF_INET", "undefined"); #endif #ifdef NTOP_PREF_VALUE_PRINT_BOTH printFeatureConfigNum(textPrintFlag, "NTOP_PREF_VALUE_PRINT_BOTH", NTOP_PREF_VALUE_PRINT_BOTH); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_VALUE_PRINT_BOTH", "undefined"); #endif #ifdef NTOP_PREF_VALUE_PRINT_FCONLY printFeatureConfigNum(textPrintFlag, "NTOP_PREF_VALUE_PRINT_FCONLY", NTOP_PREF_VALUE_PRINT_FCONLY); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_VALUE_PRINT_FCONLY", "undefined"); #endif printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_VALUE_PRINT_IPONLY", #ifdef NTOP_PREF_VALUE_PRINT_IPONLY "yes" #else "no" #endif ); #ifdef NTOP_PREF_W3C printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_W3C", NTOP_PREF_W3C); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_W3C", "undefined"); #endif #ifdef NTOP_PREF_WEBPORT printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_WEBPORT", NTOP_PREF_WEBPORT); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_WEBPORT", "undefined"); #endif #ifdef NTOP_PREF_WWN_MAP printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_WWN_MAP", NTOP_PREF_WWN_MAP); #else printFeatureConfigInfo(textPrintFlag, "NTOP_PREF_WWN_MAP", "undefined"); #endif #ifdef NULL_VALUE printFeatureConfigInfo(textPrintFlag, "NULL_VALUE", NULL_VALUE); #else printFeatureConfigInfo(textPrintFlag, "NULL_VALUE", "undefined"); #endif #ifdef PACKETSZ printFeatureConfigNum(textPrintFlag, "PACKETSZ", PACKETSZ); #else printFeatureConfigInfo(textPrintFlag, "PACKETSZ", "undefined"); #endif printFeatureConfigInfo(textPrintFlag, "PARM_ENABLE_EXPERIMENTAL", #ifdef PARM_ENABLE_EXPERIMENTAL "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "PARM_FORK_CHILD_PROCESS", #ifdef PARM_FORK_CHILD_PROCESS "yes" #else "no" #endif ); #ifdef PARM_HOST_PURGE_INTERVAL printFeatureConfigNum(textPrintFlag, "PARM_HOST_PURGE_INTERVAL", PARM_HOST_PURGE_INTERVAL); #else printFeatureConfigInfo(textPrintFlag, "PARM_HOST_PURGE_INTERVAL", "undefined"); #endif #ifdef PARM_HOST_PURGE_MINIMUM_IDLE_ACTVSES printFeatureConfigNum(textPrintFlag, "PARM_HOST_PURGE_MINIMUM_IDLE_ACTVSES", PARM_HOST_PURGE_MINIMUM_IDLE_ACTVSES); #else printFeatureConfigInfo(textPrintFlag, "PARM_HOST_PURGE_MINIMUM_IDLE_ACTVSES", "undefined"); #endif #ifdef PARM_HOST_PURGE_MINIMUM_IDLE_NOACTVSES printFeatureConfigNum(textPrintFlag, "PARM_HOST_PURGE_MINIMUM_IDLE_NOACTVSES", PARM_HOST_PURGE_MINIMUM_IDLE_NOACTVSES); #else printFeatureConfigInfo(textPrintFlag, "PARM_HOST_PURGE_MINIMUM_IDLE_NOACTVSES", "undefined"); #endif #ifdef PARM_MIN_WEBPAGE_AUTOREFRESH_TIME printFeatureConfigNum(textPrintFlag, "PARM_MIN_WEBPAGE_AUTOREFRESH_TIME", PARM_MIN_WEBPAGE_AUTOREFRESH_TIME); #else printFeatureConfigInfo(textPrintFlag, "PARM_MIN_WEBPAGE_AUTOREFRESH_TIME", "undefined"); #endif #ifdef PARM_PASSIVE_SESSION_MINIMUM_IDLE printFeatureConfigNum(textPrintFlag, "PARM_PASSIVE_SESSION_MINIMUM_IDLE", PARM_PASSIVE_SESSION_MINIMUM_IDLE); #else printFeatureConfigInfo(textPrintFlag, "PARM_PASSIVE_SESSION_MINIMUM_IDLE", "undefined"); #endif printFeatureConfigInfo(textPrintFlag, "PARM_PRINT_ALL_SESSIONS", #ifdef PARM_PRINT_ALL_SESSIONS "yes" #else "no" #endif ); #ifdef PARM_SESSION_PURGE_MINIMUM_IDLE printFeatureConfigNum(textPrintFlag, "PARM_SESSION_PURGE_MINIMUM_IDLE", PARM_SESSION_PURGE_MINIMUM_IDLE); #else printFeatureConfigInfo(textPrintFlag, "PARM_SESSION_PURGE_MINIMUM_IDLE", "undefined"); #endif #ifdef PARM_SLEEP_LIMIT printFeatureConfigNum(textPrintFlag, "PARM_SLEEP_LIMIT", PARM_SLEEP_LIMIT); #else printFeatureConfigInfo(textPrintFlag, "PARM_SLEEP_LIMIT", "undefined"); #endif #ifdef PARM_THROUGHPUT_REFRESH_INTERVAL printFeatureConfigNum(textPrintFlag, "PARM_THROUGHPUT_REFRESH_INTERVAL", PARM_THROUGHPUT_REFRESH_INTERVAL); #else printFeatureConfigInfo(textPrintFlag, "PARM_THROUGHPUT_REFRESH_INTERVAL", "undefined"); #endif printFeatureConfigInfo(textPrintFlag, "PARM_USE_COLOR", #ifdef PARM_USE_COLOR "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "PARM_USE_HOST", #ifdef PARM_USE_HOST "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "PARM_USE_MACHASH_INVERT", #ifdef PARM_USE_MACHASH_INVERT "yes" #else "no" #endif ); printFeatureConfigInfo(textPrintFlag, "PARM_USE_SESSIONS_CACHE", #ifdef PARM_USE_SESSIONS_CACHE "yes" #else "no" #endif ); #ifdef PARM_WEDONTWANTTOTALKWITHYOU_INTERVAL printFeatureConfigNum(textPrintFlag, "PARM_WEDONTWANTTOTALKWITHYOU_INTERVAL", PARM_WEDONTWANTTOTALKWITHYOU_INTERVAL); #else printFeatureConfigInfo(textPrintFlag, "PARM_WEDONTWANTTOTALKWITHYOU_INTERVAL", "undefined"); #endif #ifdef SFLOW_DEVICE_NAME printFeatureConfigInfo(textPrintFlag, "SFLOW_DEVICE_NAME", SFLOW_DEVICE_NAME); #else printFeatureConfigInfo(textPrintFlag, "SFLOW_DEVICE_NAME", "undefined"); #endif #ifdef UNKNOWN_P2P_FILE printFeatureConfigInfo(textPrintFlag, "UNKNOWN_P2P_FILE", UNKNOWN_P2P_FILE); #else printFeatureConfigInfo(textPrintFlag, "UNKNOWN_P2P_FILE", "undefined"); #endif /* E N D * * Autogenerated from globals-defines.h and inserted into webInterface.c * */ printInfoSectionTitle(textPrintFlag, "Compile Time: globals-report.h"); /* B E G I N * * Autogenerated from globals-report.h and inserted into webInterface.c * Tue Aug 09 16:25:26 CDT 2005 * */ #ifdef BASE_PROTOS_IDX printFeatureConfigNum(textPrintFlag, "BASE_PROTOS_IDX", BASE_PROTOS_IDX); #else printFeatureConfigInfo(textPrintFlag, "BASE_PROTOS_IDX", "undefined"); #endif #ifdef CHART_FORMAT printFeatureConfigInfo(textPrintFlag, "CHART_FORMAT", CHART_FORMAT); #else printFeatureConfigInfo(textPrintFlag, "CHART_FORMAT", "undefined"); #endif #ifdef DARK_BG printFeatureConfigInfo(textPrintFlag, "DARK_BG", DARK_BG); #else printFeatureConfigInfo(textPrintFlag, "DARK_BG", "undefined"); #endif #ifdef DISPLAY_FC_ALIAS printFeatureConfigNum(textPrintFlag, "DISPLAY_FC_ALIAS", DISPLAY_FC_ALIAS); #else printFeatureConfigInfo(textPrintFlag, "DISPLAY_FC_ALIAS", "undefined"); #endif #ifdef DISPLAY_FC_DEFAULT printFeatureConfigNum(textPrintFlag, "DISPLAY_FC_DEFAULT", DISPLAY_FC_DEFAULT); #else printFeatureConfigInfo(textPrintFlag, "DISPLAY_FC_DEFAULT", "undefined"); #endif #ifdef DISPLAY_FC_FCID printFeatureConfigNum(textPrintFlag, "DISPLAY_FC_FCID", DISPLAY_FC_FCID); #else printFeatureConfigInfo(textPrintFlag, "DISPLAY_FC_FCID", "undefined"); #endif #ifdef DISPLAY_FC_WWN printFeatureConfigNum(textPrintFlag, "DISPLAY_FC_WWN", DISPLAY_FC_WWN); #else printFeatureConfigInfo(textPrintFlag, "DISPLAY_FC_WWN", "undefined"); #endif #ifdef SORT_DATA_HOST_TRAFFIC printFeatureConfigNum(textPrintFlag, "SORT_DATA_HOST_TRAFFIC", SORT_DATA_HOST_TRAFFIC); #else printFeatureConfigInfo(textPrintFlag, "SORT_DATA_HOST_TRAFFIC", "undefined"); #endif #ifdef SORT_DATA_IP printFeatureConfigNum(textPrintFlag, "SORT_DATA_IP", SORT_DATA_IP); #else printFeatureConfigInfo(textPrintFlag, "SORT_DATA_IP", "undefined"); #endif #ifdef SORT_DATA_PROTOS printFeatureConfigNum(textPrintFlag, "SORT_DATA_PROTOS", SORT_DATA_PROTOS); #else printFeatureConfigInfo(textPrintFlag, "SORT_DATA_PROTOS", "undefined"); #endif #ifdef SORT_DATA_RCVD_HOST_TRAFFIC printFeatureConfigNum(textPrintFlag, "SORT_DATA_RCVD_HOST_TRAFFIC", SORT_DATA_RCVD_HOST_TRAFFIC); #else printFeatureConfigInfo(textPrintFlag, "SORT_DATA_RCVD_HOST_TRAFFIC", "undefined"); #endif #ifdef SORT_DATA_RECEIVED_IP printFeatureConfigNum(textPrintFlag, "SORT_DATA_RECEIVED_IP", SORT_DATA_RECEIVED_IP); #else printFeatureConfigInfo(textPrintFlag, "SORT_DATA_RECEIVED_IP", "undefined"); #endif #ifdef SORT_DATA_RECEIVED_PROTOS printFeatureConfigNum(textPrintFlag, "SORT_DATA_RECEIVED_PROTOS", SORT_DATA_RECEIVED_PROTOS); #else printFeatureConfigInfo(textPrintFlag, "SORT_DATA_RECEIVED_PROTOS", "undefined"); #endif #ifdef SORT_DATA_RECEIVED_THPT printFeatureConfigNum(textPrintFlag, "SORT_DATA_RECEIVED_THPT", SORT_DATA_RECEIVED_THPT); #else printFeatureConfigInfo(textPrintFlag, "SORT_DATA_RECEIVED_THPT", "undefined"); #endif #ifdef SORT_DATA_SENT_HOST_TRAFFIC printFeatureConfigNum(textPrintFlag, "SORT_DATA_SENT_HOST_TRAFFIC", SORT_DATA_SENT_HOST_TRAFFIC); #else printFeatureConfigInfo(textPrintFlag, "SORT_DATA_SENT_HOST_TRAFFIC", "undefined"); #endif #ifdef SORT_DATA_SENT_IP printFeatureConfigNum(textPrintFlag, "SORT_DATA_SENT_IP", SORT_DATA_SENT_IP); #else printFeatureConfigInfo(textPrintFlag, "SORT_DATA_SENT_IP", "undefined"); #endif #ifdef SORT_DATA_SENT_PROTOS printFeatureConfigNum(textPrintFlag, "SORT_DATA_SENT_PROTOS", SORT_DATA_SENT_PROTOS); #else printFeatureConfigInfo(textPrintFlag, "SORT_DATA_SENT_PROTOS", "undefined"); #endif #ifdef SORT_DATA_SENT_THPT printFeatureConfigNum(textPrintFlag, "SORT_DATA_SENT_THPT", SORT_DATA_SENT_THPT); #else printFeatureConfigInfo(textPrintFlag, "SORT_DATA_SENT_THPT", "undefined"); #endif #ifdef SORT_DATA_THPT printFeatureConfigNum(textPrintFlag, "SORT_DATA_THPT", SORT_DATA_THPT); #else printFeatureConfigInfo(textPrintFlag, "SORT_DATA_THPT", "undefined"); #endif #ifdef SORT_FC_ACTIVITY printFeatureConfigNum(textPrintFlag, "SORT_FC_ACTIVITY", SORT_FC_ACTIVITY); #else printFeatureConfigInfo(textPrintFlag, "SORT_FC_ACTIVITY", "undefined"); #endif #ifdef SORT_FC_DATA printFeatureConfigNum(textPrintFlag, "SORT_FC_DATA", SORT_FC_DATA); #else printFeatureConfigInfo(textPrintFlag, "SORT_FC_DATA", "undefined"); #endif #ifdef SORT_FC_THPT printFeatureConfigNum(textPrintFlag, "SORT_FC_THPT", SORT_FC_THPT); #else printFeatureConfigInfo(textPrintFlag, "SORT_FC_THPT", "undefined"); #endif #ifdef TABLE_DEFAULTS printFeatureConfigInfo(textPrintFlag, "TABLE_DEFAULTS", TABLE_DEFAULTS); #else printFeatureConfigInfo(textPrintFlag, "TABLE_DEFAULTS", "undefined"); #endif #ifdef TABLE_OFF printFeatureConfigInfo(textPrintFlag, "TABLE_OFF", TABLE_OFF); #else printFeatureConfigInfo(textPrintFlag, "TABLE_OFF", "undefined"); #endif #ifdef TABLE_ON printFeatureConfigInfo(textPrintFlag, "TABLE_ON", TABLE_ON); #else printFeatureConfigInfo(textPrintFlag, "TABLE_ON", "undefined"); #endif #ifdef TD_BG printFeatureConfigInfo(textPrintFlag, "TD_BG", TD_BG); #else printFeatureConfigInfo(textPrintFlag, "TD_BG", "undefined"); #endif #ifdef TH_BG printFeatureConfigInfo(textPrintFlag, "TH_BG", TH_BG); #else printFeatureConfigInfo(textPrintFlag, "TH_BG", "undefined"); #endif #ifdef TRAFFIC_STATS printFeatureConfigNum(textPrintFlag, "TRAFFIC_STATS", TRAFFIC_STATS); #else printFeatureConfigInfo(textPrintFlag, "TRAFFIC_STATS", "undefined"); #endif #ifdef TR_ON printFeatureConfigInfo(textPrintFlag, "TR_ON", TR_ON); #else printFeatureConfigInfo(textPrintFlag, "TR_ON", "undefined"); #endif #ifdef WHEAT_BG printFeatureConfigInfo(textPrintFlag, "WHEAT_BG", WHEAT_BG); #else printFeatureConfigInfo(textPrintFlag, "WHEAT_BG", "undefined"); #endif /* E N D * * Autogenerated from globals-report.h and inserted into webInterface.c * */ /* ***Plugins stuff************************ */ if(textPrintFlag == TRUE) { sendString("\n\nPLUGINS:\n\n"); sendString("RRD:\n"); printFeatureConfigInfo(textPrintFlag, "RRD path", myGlobals.rrdPath); #ifndef WIN32 safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%04o", myGlobals.rrdDirectoryPermissions); printFeatureConfigInfo(textPrintFlag, "New directory permissions", buf); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%04o", myGlobals.rrdUmask); printFeatureConfigInfo(textPrintFlag, "New file umask", buf); #endif } } /* ******************************** */ void printHostColorCode(int textPrintFlag, int isInfo) { if(textPrintFlag != TRUE) { sendString("
\n" "" "\n" "" "\n" "\n" "\n" "\n" "\n" "\n
The color of the host link"); if(isInfo == 1) sendString(" on many pages"); sendString(" indicates how recently the host was FIRST seen" "
  0 to 5 minutes    5 to 15 minutes    15 to 30 minutes    30 to 60 minutes    60+ minutes  
\n
\n"); } } /* ******************************** */ void printMutexStatusReport(int textPrintFlag) { #ifdef MUTEX_DEBUG int i; sendString(texthtml("\nMutexes:\n\n", "

"TABLE_ON"\n" "\n" "\n")); if(!myGlobals.runningPref.disableMutexExtraInfo) { sendString(texthtml("", "\n" "\n" "\n" "\n")); } sendString(texthtml("", "")); printMutexStatus(textPrintFlag, &myGlobals.gdbmMutex, "gdbmMutex"); for(i=0; i"TABLE_OFF"

\n")); #endif } /* ******************************** */ static char* numeric2str(DnsResolutionMode mode) { switch(mode) { case noDnsResolution: return("noDnsResolution"); case dnsResolutionForLocalHostsOnly: return("dnsResolutionForLocalHostsOnly"); case dnsResolutionForLocalRemoteOnly: return("dnsResolutionForLocalRemoteOnly"); case dnsResolutionForAll: default: return("dnsResolutionForAll"); } } /* ******************************** */ static void printNtopConfigInfoData(int textPrintFlag, UserPref *pref) { /* This prints either as text or html, but no header so it can be included in bug reports */ char buf[2*LEN_GENERAL_WORK_BUFFER], buf2[LEN_GENERAL_WORK_BUFFER]; #ifndef WIN32 char mainbuf[LEN_GENERAL_WORK_BUFFER]; #endif #ifndef WIN32 char lib[LEN_GENERAL_WORK_BUFFER], env[LEN_GENERAL_WORK_BUFFER]; #endif char formatBuf[96]; int i, bufLength, bufPosition, bufUsed; unsigned int idx, minLen, maxLen; unsigned long totBuckets=0, nonEmptyBuckets=0; #ifdef HAVE_SYS_UTSNAME_H struct utsname unameData; #endif sendString(texthtml("
",
                      "
\n

 

\n" "
Mutex NameStateAttemptLockUnLockMax Lock# Locks/Releases
\n")); printInfoSectionTitle(textPrintFlag, "Basic Information"); safe_snprintf(__FILE__, __LINE__, formatBuf, sizeof(formatBuf), "%s (%d bit)", osName, sizeof(long) == 8 ? 64 : 32); printFeatureConfigInfo(textPrintFlag, "ntop Version", formatBuf); #ifndef WIN32 { struct passwd *passwd; /* man getpwuid */ passwd = getpwuid (getuid()); /* Get the uid of the running processand use it to get a record from /etc/passwd */ printFeatureConfigInfo(textPrintFlag, "Running as user", passwd->pw_name); } #endif printFeatureConfigInfo(textPrintFlag, "Configured on", configureDate); printFeatureConfigInfo(textPrintFlag, "Built on", buildDate); safe_snprintf(__FILE__, __LINE__, formatBuf, sizeof(formatBuf), "%s", osName); printFeatureConfigInfo(textPrintFlag, "OS", formatBuf); if(myGlobals.checkVersionStatus != FLAG_CHECKVERSION_NOTCHECKED) { printFeatureConfigInfo(textPrintFlag, "This version of ntop is", reportNtopVersionCheck()); if(myGlobals.checkVersionStatusAgain > 0) { struct tm t; strftime(buf, sizeof(buf), CONST_LOCALE_TIMESPEC, localtime_r(&myGlobals.checkVersionStatusAgain, &t)); printFeatureConfigInfo(textPrintFlag, "Next version recheck is", buf); } } #ifdef HAVE_PCAP_LIB_VERSION printFeatureConfigInfo(textPrintFlag, "libpcap Version", (char*)pcap_lib_version()); #endif snprintf(buf, sizeof(buf), "%1.4f", rrd_version()); printFeatureConfigInfo(textPrintFlag, "RRD Version", buf); if(myGlobals.geo_ip_db != NULL) printFeatureConfigInfo(textPrintFlag, "GeoIP Version", GeoIP_database_info(myGlobals.geo_ip_db)); if(myGlobals.geo_ip_asn_db != NULL) printFeatureConfigInfo(textPrintFlag, "GeoIP AS Version", GeoIP_database_info(myGlobals.geo_ip_asn_db)); #ifndef WIN32 if(getDynamicLoadPaths(mainbuf, sizeof(mainbuf), lib, sizeof(lib), env, sizeof(env)) == 0) { printFeatureConfigInfo(textPrintFlag, "Running from", mainbuf); printFeatureConfigInfo(textPrintFlag, "Libraries in", lib); if(textPrintFlag == TRUE) printFeatureConfigInfo(textPrintFlag, "Library path", env); } #endif if(myGlobals.runningPref.instance != NULL) printFeatureConfigInfo(textPrintFlag, "Instance", myGlobals.runningPref.instance); #ifndef WIN32 { char pid[16]; if(pref->daemonMode == 1) { safe_snprintf(__FILE__, __LINE__, pid, sizeof(pid), "%d", myGlobals.basentoppid); printFeatureConfigInfo(textPrintFlag, "ntop Process Id", pid); safe_snprintf(__FILE__, __LINE__, pid, sizeof(pid), "%d", getppid()); printFeatureConfigInfo(textPrintFlag, "http Process Id", pid); } else { safe_snprintf(__FILE__, __LINE__, pid, sizeof(pid), "%d", getppid()); printFeatureConfigInfo(textPrintFlag, "Process Id", pid); } } #endif printFeatureConfigInfo(textPrintFlag, "Run State", ntopstate_text(myGlobals.ntopRunState)); /* *************************** */ printInfoSectionTitle(textPrintFlag, "Command Line"); strncpy(buf, myGlobals.startedAs, sizeof(buf)-1); printFeatureConfigInfo(textPrintFlag, "Started as....", buf); buf[0]='\0'; for(i=0; i0) strncat(buf, " ", (sizeof(buf) - strlen(buf) - 1)); strncat(buf, myGlobals.ntop_argv[i], (sizeof(buf) - strlen(buf) - 1)); } printFeatureConfigInfo(textPrintFlag, "Resolved to....", buf); printInfoSectionTitle(textPrintFlag, "Preferences Used"); printInfoSectionNote(textPrintFlag, CONST_REPORT_ITS_EFFECTIVE " means that " "this is the value after ntop has processed the parameter." CONST_REPORT_ITS_DEFAULT "means this is the default value, usually " "(but not always) set by a #define in globals-defines.h."); printParameterConfigInfo(textPrintFlag, "-a | --access-log-file", pref->accessLogFile, DEFAULT_NTOP_ACCESS_LOG_FILE); printParameterConfigInfo(textPrintFlag, "-b | --disable-decoders", pref->enablePacketDecoding == 1 ? "No" : "Yes", DEFAULT_NTOP_PACKET_DECODING == 1 ? "No" : "Yes"); printParameterConfigInfo(textPrintFlag, "-c | --sticky-hosts", pref->stickyHosts == 1 ? "Yes" : "No", DEFAULT_NTOP_STICKY_HOSTS == 1 ? "Yes" : "No"); #ifndef WIN32 printParameterConfigInfo(textPrintFlag, "-d | --daemon", pref->daemonMode == 1 ? "Yes" : "No", strcmp(myGlobals.program_name, "ntopd") == 0 ? "Yes" : DEFAULT_NTOP_DAEMON_MODE); #endif safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%s%d", pref->maxNumLines == CONST_NUM_TABLE_ROWS_PER_PAGE ? CONST_REPORT_ITS_DEFAULT : "", pref->maxNumLines); printFeatureConfigInfo(textPrintFlag, "-e | --max-table-rows", buf); printParameterConfigInfo(textPrintFlag, "-g | --track-local-hosts", pref->trackOnlyLocalHosts == 1 ? "Track local hosts only" : "Track all hosts", DEFAULT_NTOP_TRACK_ONLY_LOCAL == 1 ? "Track local hosts only" : "Track all hosts"); printParameterConfigInfo(textPrintFlag, "-i | --interface" CONST_REPORT_ITS_EFFECTIVE, pref->devices, DEFAULT_NTOP_DEVICES); if(pref->pcapLog == NULL) { printParameterConfigInfo(textPrintFlag, "-l | --pcap-log", pref->pcapLog, DEFAULT_NTOP_PCAP_LOG_FILENAME); } else { safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%s/%s.<device>.pcap", pref->pcapLogBasePath, pref->pcapLog); printParameterConfigInfo(textPrintFlag, "-l | --pcap-log" CONST_REPORT_ITS_EFFECTIVE, buf, DEFAULT_NTOP_PCAP_LOG_FILENAME); } printParameterConfigInfo(textPrintFlag, "-m | --local-subnets" CONST_REPORT_ITS_EFFECTIVE, pref->localAddresses, DEFAULT_NTOP_LOCAL_SUBNETS); printParameterConfigInfo(textPrintFlag, "-n | --numeric-ip-addresses", numeric2str(pref->numericFlag), numeric2str(DEFAULT_NTOP_NUMERIC_IP_ADDRESSES)); if(pref->protoSpecs == NULL) { printFeatureConfigInfo(textPrintFlag, "-p | --protocols", CONST_REPORT_ITS_DEFAULT "internal list"); } else { printFeatureConfigInfo(textPrintFlag, "-p | --protocols", pref->protoSpecs); } printParameterConfigInfo(textPrintFlag, "-q | --create-suspicious-packets", pref->enableSuspiciousPacketDump == 1 ? "Enabled" : "Disabled", DEFAULT_NTOP_SUSPICIOUS_PKT_DUMP == 1 ? "Enabled" : "Disabled"); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%s%d", pref->refreshRate == DEFAULT_NTOP_AUTOREFRESH_INTERVAL ? CONST_REPORT_ITS_DEFAULT : "", pref->refreshRate); printFeatureConfigInfo(textPrintFlag, "-r | --refresh-time", buf); printParameterConfigInfo(textPrintFlag, "-s | --no-promiscuous", pref->disablePromiscuousMode == 1 ? "Yes" : "No", DEFAULT_NTOP_DISABLE_PROMISCUOUS == 1 ? "Yes" : "No"); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%s%d", pref->traceLevel == DEFAULT_TRACE_LEVEL ? CONST_REPORT_ITS_DEFAULT : "", pref->traceLevel); printFeatureConfigInfo(textPrintFlag, "-t | --trace-level", buf); #ifndef WIN32 safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%s (uid=%d, gid=%d)", myGlobals.effectiveUserName, myGlobals.userId, myGlobals.groupId); printFeatureConfigInfo(textPrintFlag, "-u | --user", buf); #endif if(pref->webPort == 0) { strcpy(buf, "Inactive"); } else if(pref->webAddr != 0) { safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%sActive, address %s, port %d", ( (pref->webAddr == DEFAULT_NTOP_WEB_ADDR) && (pref->webPort == DEFAULT_NTOP_WEB_PORT) ) ? CONST_REPORT_ITS_DEFAULT : "", pref->webAddr, pref->webPort); } else { safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%sActive, all interfaces, port %d", ((pref->webAddr == DEFAULT_NTOP_WEB_ADDR) && (pref->webPort == DEFAULT_NTOP_WEB_PORT) ) ? CONST_REPORT_ITS_DEFAULT : "", pref->webPort); } printFeatureConfigInfo(textPrintFlag, "-w | --http-server", buf); if(pref->maxNumHashEntries != DEFAULT_NTOP_MAX_HASH_ENTRIES) { safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", pref->maxNumHashEntries); printFeatureConfigInfo(textPrintFlag, "-x", buf); } printParameterConfigInfo(textPrintFlag, "-z | --disable-sessions", pref->enableSessionHandling == 1 ? "No" : "Yes", DEFAULT_NTOP_ENABLE_SESSIONHANDLE == 1 ? "No" : "Yes"); printParameterConfigInfo(textPrintFlag, "-B | --filter-expression", ((pref->currentFilterExpression == NULL) || (pref->currentFilterExpression[0] == '\0')) ? "none" : pref->currentFilterExpression, DEFAULT_NTOP_FILTER_EXPRESSION == NULL ? "none" : DEFAULT_NTOP_FILTER_EXPRESSION); printParameterConfigInfo(textPrintFlag, "-D | --domain", ((pref->domainName == NULL) || (pref->domainName[0] == '\0')) ? "none" : pref->domainName, DEFAULT_NTOP_DOMAIN_NAME == NULL ? "none" : DEFAULT_NTOP_DOMAIN_NAME); printParameterConfigInfo(textPrintFlag, "-F | --flow-spec", pref->flowSpecs == NULL ? "none" : pref->flowSpecs, DEFAULT_NTOP_FLOW_SPECS == NULL ? "none" : DEFAULT_NTOP_FLOW_SPECS); #ifndef WIN32 printParameterConfigInfo(textPrintFlag, "-K | --enable-debug", pref->debugMode == 1 ? "Yes" : "No", DEFAULT_NTOP_DEBUG_MODE == 1 ? "Yes" : "No"); #ifdef MAKE_WITH_SYSLOG if(pref->useSyslog == FLAG_SYSLOG_NONE) { printFeatureConfigInfo(textPrintFlag, "-L | --use-syslog", "No"); } else { for(i=0; myFacilityNames[i].c_name != NULL; i++) { if(myFacilityNames[i].c_val == pref->useSyslog) { printFeatureConfigInfo(textPrintFlag, "-L | --use-syslog", myFacilityNames[i].c_name); break; } } if(myFacilityNames[i].c_name == NULL) { printFeatureConfigInfo(textPrintFlag, "-L | --use-syslog", "**UNKNOWN**"); } } #endif /* MAKE_WITH_SYSLOG */ #endif /* WIN32 */ printParameterConfigInfo(textPrintFlag, "-M | --no-interface-merge" CONST_REPORT_ITS_EFFECTIVE, pref->mergeInterfaces == 1 ? "(Merging Interfaces) Yes" : "(parameter -M set, Interfaces separate) No", DEFAULT_NTOP_MERGE_INTERFACES == 1 ? "(Merging Interfaces) Yes" : ""); #ifdef ENABLE_FC printParameterConfigInfo(textPrintFlag, "-N | --wwn-map", pref->fcNSCacheFile, NULL); #endif printParameterConfigInfo(textPrintFlag, "-O | --pcap-file-path", pref->pcapLogBasePath, CFG_DBFILE_DIR); printParameterConfigInfo(textPrintFlag, "-P | --db-file-path", myGlobals.dbPath, CFG_DBFILE_DIR); printParameterConfigInfo(textPrintFlag, "-Q | --spool-file-path", myGlobals.spoolPath, CFG_DBFILE_DIR); printParameterConfigInfo(textPrintFlag, "-U | --mapper", pref->mapperURL, DEFAULT_NTOP_MAPPER_URL); #ifdef HAVE_OPENSSL if(myGlobals.sslInitialized == 0) { strcpy(buf, "Uninitialized"); } else if(pref->sslPort == 0) { strcpy(buf, "Inactive"); } else if(pref->sslAddr != 0) { safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%sActive, address %s, port %d", ( (pref->sslAddr == DEFAULT_NTOP_WEB_ADDR) && (pref->sslPort == DEFAULT_NTOP_WEB_PORT) ) ? CONST_REPORT_ITS_DEFAULT : "", pref->sslAddr,pref->sslPort); } else { safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%sActive, all interfaces, port %d", ( (pref->sslAddr == DEFAULT_NTOP_WEB_ADDR) && (pref->sslPort == DEFAULT_NTOP_WEB_PORT) ) ? CONST_REPORT_ITS_DEFAULT : "", pref->sslPort); } printFeatureConfigInfo(textPrintFlag, "-W | --https-server", buf); #endif if(pref->maxNumHashEntries != DEFAULT_NTOP_MAX_NUM_SESSIONS) { safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", pref->maxNumSessions); printFeatureConfigInfo(textPrintFlag, "-X", buf); } printParameterConfigInfo(textPrintFlag, "--disable-mutexextrainfo", pref->disableMutexExtraInfo == TRUE ? "Yes" : "No", "No"); printParameterConfigInfo(textPrintFlag, "--disable-stopcap", pref->disableStopcap == TRUE ? "Yes" : "No", "No"); printParameterConfigInfo(textPrintFlag, "--instance", pref->instance, NULL); printParameterConfigInfo(textPrintFlag, "--p3p-cp", ((pref->P3Pcp == NULL) || (pref->P3Pcp[0] == '\0')) ? "none" : pref->P3Pcp, "none"); printParameterConfigInfo(textPrintFlag, "--p3p-uri", ((pref->P3Puri == NULL) || (pref->P3Puri[0] == '\0')) ? "none" : pref->P3Puri, "none"); printParameterConfigInfo(textPrintFlag, "--skip-version-check", pref->skipVersionCheck == 1 ? "Yes" : "No", "No"); printParameterConfigInfo(textPrintFlag, "--w3c", pref->w3c == TRUE ? "Yes" : "No", "No"); if(textPrintFlag == FALSE) { printInfoSectionNote(textPrintFlag, "The --w3c flag makes the generated html MORE compatible with the w3c " "recommendations, but it in no way addresses all of the compatibility " "and markup issues. We would like to make ntop more compatible, " "but some basic issues of looking decent on real-world browsers mean it " "will never be 100%. If you find any issues, please report them to " "ntop-dev.\n"); } /* *************************** */ printInfoSectionTitle(textPrintFlag, "Run time/Internal"); if(pref->webPort != 0) { if(pref->webAddr != 0) { safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "http://%s:%d", pref->webAddr, pref->webPort); } else { safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "http://any:%d", pref->webPort); } printFeatureConfigInfo(textPrintFlag, "Web server URL", buf); } else { printFeatureConfigInfo(textPrintFlag, "Web server (http://)", "Not Active"); } #ifdef HAVE_OPENSSL if(pref->sslPort != 0) { if(pref->sslAddr != 0) { safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "https://%s:%d", pref->sslAddr, pref->sslPort); } else { safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "https://any:%d", pref->sslPort); } printFeatureConfigInfo(textPrintFlag, "SSL Web server URL", buf); } else { printFeatureConfigInfo(textPrintFlag, "SSL Web server (https://)", "Not Active"); } #endif /* *************************** */ #if defined(WIN32) && defined(__GNUC__) /* on mingw, gdbm_version not exported by library */ #else printFeatureConfigInfo(textPrintFlag, "GDBM version", gdbm_version); #endif #ifdef HAVE_PYTHON safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%s", Py_GetVersion()); #endif printFeatureConfigInfo(textPrintFlag, "Embedded Python", #ifdef HAVE_PYTHON buf #else "Not present" #endif ); #if defined(WIN32) printFeatureConfigInfo(textPrintFlag, "WinPcap version", (char*)PacketGetVersion()); #endif #ifdef HAVE_OPENSSL printFeatureConfigInfo(textPrintFlag, "OpenSSL Version", (char*)SSLeay_version(0)); #endif #ifdef MAKE_WITH_ZLIB printFeatureConfigInfo(textPrintFlag, "zlib version", (char*)zlibVersion()); #else printFeatureConfigInfo(textPrintFlag, "zlib version", "disabled via --without-zlib"); #endif /* *************************** */ printFeatureConfigInfo(textPrintFlag, "Protocol Decoders", pref->enablePacketDecoding == 1 ? "Enabled" : "Disabled"); printFeatureConfigInfo(textPrintFlag, "Tracking only local hosts", pref->trackOnlyLocalHosts == 1 ? "Yes" : "No"); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", myGlobals.numIpProtosToMonitor); printFeatureConfigInfo(textPrintFlag, "# IP Protocols Being Monitored", buf); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", myGlobals.numActServices); printFeatureConfigInfo(textPrintFlag, "# Protocol slots", buf); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", myGlobals.ipPortMapper.numElements); printFeatureConfigInfo(textPrintFlag, "# IP Ports Being Monitored", buf); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", myGlobals.ipPortMapper.numSlots); printFeatureConfigInfo(textPrintFlag, "# IP Ports slots", buf); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", (int)myGlobals.webServerRequestQueueLength); printFeatureConfigInfo(textPrintFlag, "WebServer Request Queue", buf); if(!myGlobals.runningPref.numericFlag != noDnsResolution) { safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "[current: %d][max: %d][drops: %d]", (int)myGlobals.addressQueuedCurrent, (int)myGlobals.addressQueuedMax, (int)myGlobals.addressUnresolvedDrops); printFeatureConfigInfo(textPrintFlag, "DNS Resolution Request Queue", buf); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "[resolved: %u][failed: %u]", myGlobals.resolvedAddresses, myGlobals.failedResolvedAddresses); printFeatureConfigInfo(textPrintFlag, "DNS Resolved Addresses", buf); } safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", myGlobals.numDevices); printFeatureConfigInfo(textPrintFlag, "Devices (Network Interfaces)", buf); printFeatureConfigInfo(textPrintFlag, "Domain name (short)", myGlobals.shortDomainName); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", myGlobals.hashCollisionsLookup); printFeatureConfigInfo(textPrintFlag, "Total Hash Collisions (Vendor/Special) (lookup)", buf); /* *************************** */ if(myGlobals.numLocalNetworks > 0) { printFeatureConfigInfoHeader(textPrintFlag, "Local Networks"); for(i=0; i", _intoa(addr, addr_buf, sizeof(addr_buf)), myGlobals.localNetworks[i].address[CONST_NETMASK_V6_ENTRY]); sendString(buf); } printFeatureConfigInfoFooter(textPrintFlag); } /* *************************** */ printInfoSectionTitle(textPrintFlag, "Networks"); for(i=0; i 0) { printFeatureConfigInfoHeader(textPrintFlag, "Known Networks"); for(i=0; i", _intoa(addr, addr_buf, sizeof(addr_buf)), myGlobals.subnetStats[i].address[CONST_NETMASK_V6_ENTRY]); sendString(buf); } printFeatureConfigInfoFooter(textPrintFlag); } /* ******************** */ printInfoSectionTitle(textPrintFlag, "ntop Web Server"); printFeatureConfigTitle3Col(textPrintFlag, "Item..................http://...................https://", "Item", "http://", "https://"); printFeatureConfigInfo3ColInt(textPrintFlag, "# Handled Requests", pref->webPort, myGlobals.numHandledRequests[1], #ifdef HAVE_OPENSSL pref->sslPort, #else 0, #endif myGlobals.numHandledRequests[0], TRUE); printFeatureConfigInfo3ColInt(textPrintFlag, "# Successful requests (200)", pref->webPort, myGlobals.numSuccessfulRequests[1], #ifdef HAVE_OPENSSL pref->sslPort, #else 0, #endif myGlobals.numSuccessfulRequests[0], TRUE); printFeatureConfigInfo3ColInt(textPrintFlag, "# Bad (We don't want to talk with you) requests", pref->webPort, myGlobals.numHandledBadrequests[1], #ifdef HAVE_OPENSSL pref->sslPort, #else 0, #endif myGlobals.numHandledBadrequests[0], TRUE); printFeatureConfigInfo3ColInt(textPrintFlag, "# Invalid requests - 400 BAD REQUEST", pref->webPort, myGlobals.numUnsuccessfulInvalidrequests[1], #ifdef HAVE_OPENSSL pref->sslPort, #else 0, #endif myGlobals.numUnsuccessfulInvalidrequests[0], FALSE); printFeatureConfigInfo3ColInt(textPrintFlag, "# Invalid requests - 401 DENIED", pref->webPort, myGlobals.numUnsuccessfulDenied[1], #ifdef HAVE_OPENSSL pref->sslPort, #else 0, #endif myGlobals.numUnsuccessfulDenied[0], FALSE); printFeatureConfigInfo3ColInt(textPrintFlag, "# Invalid requests - 403 FORBIDDEN", pref->webPort, myGlobals.numUnsuccessfulForbidden[1], #ifdef HAVE_OPENSSL pref->sslPort, #else 0, #endif myGlobals.numUnsuccessfulForbidden[0], TRUE); printFeatureConfigInfo3ColInt(textPrintFlag, "# Invalid requests - 404 NOT FOUND", pref->webPort, myGlobals.numUnsuccessfulNotfound[1], #ifdef HAVE_OPENSSL pref->sslPort, #else 0, #endif myGlobals.numUnsuccessfulNotfound[0], TRUE); printFeatureConfigInfo3ColInt(textPrintFlag, "# Invalid requests - 408 TIMEOUT", pref->webPort, myGlobals.numUnsuccessfulTimeout[1], #ifdef HAVE_OPENSSL pref->sslPort, #else 0, #endif myGlobals.numUnsuccessfulTimeout[0], FALSE); printFeatureConfigInfo3ColInt(textPrintFlag, "# Invalid requests - 501 NOT IMPLEMENTED", pref->webPort, myGlobals.numUnsuccessfulInvalidmethod[1], #ifdef HAVE_OPENSSL pref->sslPort, #else 0, #endif myGlobals.numUnsuccessfulInvalidmethod[0], FALSE); printFeatureConfigInfo3ColInt(textPrintFlag, "# Invalid requests - 505 INVALID VERSION", pref->webPort, myGlobals.numUnsuccessfulInvalidversion[1], #ifdef HAVE_OPENSSL pref->sslPort, #else 0, #endif myGlobals.numUnsuccessfulInvalidversion[0], FALSE); if(textPrintFlag != TRUE) { printInfoSectionNote(textPrintFlag, "
    \n" "
  • Counts may not total because of in-process requests.
  • \n" "
  • Each request to the ntop web server - " "page, chart, etc. is counted separately
\n"); } safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", (int)myGlobals.numSSIRequests); printFeatureConfigInfo(textPrintFlag, "# SSI Requests", buf); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", (int)myGlobals.numBadSSIRequests); printFeatureConfigInfo(textPrintFlag, "# Bad SSI Requests", buf); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", (int)myGlobals.numHandledSSIRequests); printFeatureConfigInfo(textPrintFlag, "# Handled SSI Requests", buf); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", (int)myGlobals.numHandledSIGPIPEerrors); printFeatureConfigInfo(textPrintFlag, "# Handled SIGPIPE Errors", buf); printInfoSectionTitle(textPrintFlag, "Host Memory Cache"); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "#define MAX_HOSTS_CACHE_LEN %d", MAX_HOSTS_CACHE_LEN); printFeatureConfigInfo(textPrintFlag, "Limit", buf); /* **** */ printInfoSectionTitle(textPrintFlag, "Packets"); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%s", formatPkts(myGlobals.receivedPackets, formatBuf, sizeof(formatBuf))); printFeatureConfigInfo(textPrintFlag, "Received", buf); if(myGlobals.receivedPackets > 0) { safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%s (%.1f %%)", formatPkts(myGlobals.receivedPacketsProcessed, formatBuf, sizeof(formatBuf)), 100.0*myGlobals.receivedPacketsProcessed / myGlobals.receivedPackets); printFeatureConfigInfo(textPrintFlag, "Processed Immediately", buf); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%s (%.1f %%)", formatPkts(myGlobals.receivedPacketsQueued, formatBuf, sizeof(formatBuf)), 100.0*myGlobals.receivedPacketsQueued / myGlobals.receivedPackets); printFeatureConfigInfo(textPrintFlag, "Queued", buf); } if(myGlobals.receivedPacketsLostQ > 0) { safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", myGlobals.receivedPacketsLostQ); printFeatureConfigInfo(textPrintFlag, "Lost in ntop queue", buf); } for(i=0; i= MAX_PROCESS_BUFFER) { for(i=0; i qmaxDelay) qmaxDelay = myGlobals.queueBuffer[i]; if(myGlobals.queueBuffer[i] < qminDelay) qminDelay = myGlobals.queueBuffer[i]; if(myGlobals.processBuffer[i] > pmaxDelay) pmaxDelay = myGlobals.processBuffer[i]; if(myGlobals.processBuffer[i] < pminDelay) pminDelay = myGlobals.processBuffer[i]; if(i==0) { qM = myGlobals.queueBuffer[0]; qT = 0.0; pM = myGlobals.processBuffer[0]; pT = 0.0; } else { qQ = myGlobals.queueBuffer[i] - qM; qR = qQ / (float)(i+1); qM += qR; qT = qT + i * qQ * qR; pQ = myGlobals.processBuffer[i] - pM; pR = pQ / (float)(i+1); pM += pR; pT = pT + i * pQ * pR; } } qSD = sqrtf(qT / (MAX_PROCESS_BUFFER - 1)); qXBAR /*average*/ = qM; pSD = sqrtf(pT / (MAX_PROCESS_BUFFER - 1)); pXBAR /*average*/ = pM; printFeatureConfigTitle3Col(textPrintFlag, "Packet processing:....Queue (pre-process).......Processing\n", "Packet Processing", "Queue (pre-process)", "Processing"); printFeatureConfigInfo3ColFlt6(textPrintFlag, "Minimum", TRUE, qminDelay, TRUE, pminDelay, TRUE); printFeatureConfigInfo3ColFlt6(textPrintFlag, "Average", TRUE, qXBAR, TRUE, pXBAR, TRUE); printFeatureConfigInfo3ColFlt6(textPrintFlag, "Maximum", TRUE, qmaxDelay, TRUE, pmaxDelay, TRUE); printFeatureConfigInfo3ColFlt6(textPrintFlag, "Standard Deviation", TRUE, qSD, TRUE, pSD, TRUE); printFeatureConfigInfo3ColFlt6(textPrintFlag, "Maximum ever", TRUE, myGlobals.qmaxDelay, TRUE, myGlobals.pmaxDelay, TRUE); sendString(texthtml("", "
\n\n")); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "'Queue' time is the elapsed time between the packet arrival (libpcap) " "and the gettimeofday() value as the packet starts processPacket(). For a queued " "packet, this includes the time in queue. " "

'Processing' time is the elapsed time between starting and finishing " "processPacket(). Errors and/or unrecognized packets may cause processing to be " "abandoned and those packets are not counted in the 'processing' averages. This means " "that the %d packets for the 'queue' and 'processing' " "calculations are not necessarily the same physical packets, and may lead to over " "estimation of the per-packet 'processing' time." "

Small averages are good, especially if the standard deviation is small " "(standard deviation is a measurement of the variability of the actual values " "around the average). The computations are based only on the most recent " "%d packets processed." "

\"Maximum ever\" ignores the first 100 packets for each device - this lets " "ntop get over startup agony." "

What does this mean? Not much. Still, the 'Throughput' numbers give a very " "rough indication of the packet per second rate this instance of ntop can handle.", MAX_PROCESS_BUFFER, MAX_PROCESS_BUFFER); printInfoSectionNote(textPrintFlag, buf); } } #endif /* **** */ printInfoSectionTitle(textPrintFlag, "Host/Session counts - global"); formatPkts(myGlobals.numPurgedHosts, buf2, sizeof(buf2)); printFeatureConfigInfo(textPrintFlag, "Purged Hosts", buf2); #ifdef MAX_HOSTS_PURGE_PER_CYCLE if(textPrintFlag == TRUE) { safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", MAX_HOSTS_PURGE_PER_CYCLE); printFeatureConfigInfo(textPrintFlag, "MAX_HOSTS_PURGE_PER_CYCLE", buf); } #endif if(myGlobals.multipleVLANedHostCount > 0) { safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", myGlobals.multipleVLANedHostCount); printFeatureConfigInfo(textPrintFlag, "Multi-VLANed Hosts", buf); } if(pref->enableSessionHandling) { safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%s", formatPkts(myGlobals.numTerminatedSessions, buf2, sizeof(buf2))); printFeatureConfigInfo(textPrintFlag, "Terminated Sessions", buf); } /* **** */ for(i=0; inext) { totBuckets++, len++; } if(minLen > len) minLen = len; if(maxLen < len) maxLen = len; } } safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "[min %u][max %u][avg %.1f]", minLen, maxLen, (float)totBuckets/(float)nonEmptyBuckets); printFeatureConfigInfo(textPrintFlag, "Host Bucket List Length", buf); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", myGlobals.device[i].hosts.hashListMaxLookups); printFeatureConfigInfo(textPrintFlag, "Max host lookup", buf); if(pref->enableSessionHandling) { safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%s", formatBytes(sizeof(IPSession), 0, buf2, sizeof(buf2))); printFeatureConfigInfo(textPrintFlag, "Session Bucket Size", buf); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", MAX_TOT_NUM_SESSIONS); printFeatureConfigInfo(textPrintFlag, "Session Actual Hash Size", buf); if(myGlobals.device[i].sessions != NULL) { safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%s", formatPkts(myGlobals.device[i].numSessions, buf2, sizeof(buf2))); printFeatureConfigInfo(textPrintFlag, "Sessions", buf); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%s", formatPkts(myGlobals.device[i].maxNumSessions, buf2, sizeof(buf2))); printFeatureConfigInfo(textPrintFlag, "Max Num. Sessions", buf); minLen=-1, maxLen=0; for(idx=0; idxnext) { totBuckets++, len++; } if(minLen > len) minLen = len; if(maxLen < len) maxLen = len; } } safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "[min %u][max %u][avg %.1f]", minLen, maxLen, (float)totBuckets/(float)nonEmptyBuckets); printFeatureConfigInfo(textPrintFlag, "Session Bucket List Length", buf); } } } } /* **** */ printInfoSectionTitle(textPrintFlag, "----- Address Resolution -----"); printInfoSectionTitle(textPrintFlag, "DNS Sniffing (other hosts requests)"); printFeatureConfigNum(textPrintFlag, "DNS Packets sniffed", (int)myGlobals.dnsSniffCount); if(textPrintFlag == TRUE) { printFeatureConfigNum(textPrintFlag, " less 'requests'", (int)myGlobals.dnsSniffRequestCount); printFeatureConfigNum(textPrintFlag, " less 'failed'", (int)myGlobals.dnsSniffFailedCount); printFeatureConfigNum(textPrintFlag, " less 'reverse dns' (in-addr.arpa)", (int)myGlobals.dnsSniffARPACount); } printFeatureConfigNum(textPrintFlag, "DNS Packets processed", (int)(myGlobals.dnsSniffCount - myGlobals.dnsSniffRequestCount - myGlobals.dnsSniffFailedCount - myGlobals.dnsSniffARPACount)); printFeatureConfigNum(textPrintFlag, "Stored in cache (includes aliases)", (int)myGlobals.dnsSniffStoredInCache); /* **** */ if(textPrintFlag == TRUE) { printInfoSectionTitle(textPrintFlag, "Vendor Lookup Table"); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", (int)myGlobals.numVendorLookupRead); printFeatureConfigInfo(textPrintFlag, "Input lines read", buf); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", (int)myGlobals.numVendorLookupAdded); printFeatureConfigInfo(textPrintFlag, "Records added total", buf); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", myGlobals.numVendorLookupAddedSpecial); printFeatureConfigInfo(textPrintFlag, ".....includes special records", buf); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", myGlobals.numVendorLookupCalls); printFeatureConfigInfo(textPrintFlag, "getVendorInfo() calls", buf); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", myGlobals.numVendorLookupSpecialCalls); printFeatureConfigInfo(textPrintFlag, "getSpecialVendorInfo() calls", buf); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", myGlobals.numVendorLookupFound48bit); printFeatureConfigInfo(textPrintFlag, "Found 48bit (xx:xx:xx:xx:xx:xx) match", buf); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", myGlobals.numVendorLookupFound24bit); printFeatureConfigInfo(textPrintFlag, "Found 24bit (xx:xx:xx) match", buf); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", myGlobals.numVendorLookupFoundMulticast); printFeatureConfigInfo(textPrintFlag, "Found multicast bit set", buf); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", myGlobals.numVendorLookupFoundLAA); printFeatureConfigInfo(textPrintFlag, "Found LAA (Locally assigned address) bit set", buf); } /* **** */ printInfoSectionTitle(textPrintFlag, "Thread counts"); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", myGlobals.numThreads); printFeatureConfigInfo(textPrintFlag, "Active", buf); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", myGlobals.numChildren); printFeatureConfigInfo(textPrintFlag, "Children (active)", buf); /* **** */ #if defined(MAX_NUM_BAD_IP_ADDRESSES) && (MAX_NUM_BAD_IP_ADDRESSES > 0) { //TODO Fixup for new table structure... struct tm t; char buf3[64], buf4[64]; time_t lockoutExpires; int countBadGuys=0; for(i=0; i
" "\n")); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%d", PARM_WEDONTWANTTOTALKWITHYOU_INTERVAL); printFeatureConfigInfo(textPrintFlag, "Reject duration (seconds)", buf); strftime(buf, sizeof(buf), CONST_LOCALE_TIMESPEC, localtime_r(&myGlobals.actTime, &t)); printFeatureConfigInfo(textPrintFlag, "It is now", buf); } } #endif /* **** */ #if defined(MEMORY_DEBUG) && (MEMORY_DEBUG == 3) printFeatureConfigInfo(textPrintFlag, "Allocated Memory", formatBytes(myGlobals.allocatedMemory, 0, buf, sizeof(buf))); #endif /* **** */ printInfoSectionTitle(textPrintFlag, "Directory (search) order"); bufLength = sizeof(buf); bufPosition = 0; bufUsed = 0; for(i=0; myGlobals.dataFileDirs[i] != NULL; i++) { bufUsed = safe_snprintf(__FILE__, __LINE__, &buf[bufPosition], bufLength, "%s%s\n", i > 0 ? " " : "", myGlobals.dataFileDirs[i]); if(bufUsed == 0) bufUsed = strlen(&buf[bufPosition]); /* Win32 patch */ if(bufUsed > 0) { bufPosition += bufUsed; bufLength -= bufUsed; } } printFeatureConfigInfo(textPrintFlag, "Data Files", buf); bufLength = sizeof(buf); bufPosition = 0; bufUsed = 0; for(i=0; myGlobals.configFileDirs[i] != NULL; i++) { bufUsed = safe_snprintf(__FILE__, __LINE__, &buf[bufPosition], bufLength, "%s%s\n", i > 0 ? " " : "", myGlobals.configFileDirs[i]); if(bufUsed == 0) bufUsed = strlen(&buf[bufPosition]); /* Win32 patch */ if(bufUsed > 0) { bufPosition += bufUsed; bufLength -= bufUsed; } } printFeatureConfigInfo(textPrintFlag, "Config Files", buf); bufLength = sizeof(buf); bufPosition = 0; bufUsed = 0; for(i=0; myGlobals.pluginDirs[i] != NULL; i++) { bufUsed = safe_snprintf(__FILE__, __LINE__, &buf[bufPosition], bufLength, "%s%s\n", i > 0 ? " " : "", myGlobals.pluginDirs[i]); if(bufUsed == 0) bufUsed = strlen(&buf[bufPosition]); /* Win32 patch */ if(bufUsed > 0) { bufPosition += bufUsed; bufLength -= bufUsed; } } printFeatureConfigInfo(textPrintFlag, "Plugins", buf); printInfoSectionNote(textPrintFlag, "REMEMBER that the . (current working directory) value will be different " "when you run ntop from the command line vs. a cron job or startup script!"); /* *************************** *************************** */ #ifndef WIN32 printInfoSectionTitle(textPrintFlag, "Compile Time: ./configure"); printFeatureConfigInfo(textPrintFlag, "./configure parameters", configure_parameters[0] == '\0' ? " " : configure_parameters); printFeatureConfigInfo(textPrintFlag, "Built on (Host)", host_system_type); printFeatureConfigInfo(textPrintFlag, "Built for(Target)", target_system_type); printFeatureConfigInfo(textPrintFlag, "preprocessor (CPPFLAGS)", compiler_cppflags); printFeatureConfigInfo(textPrintFlag, "compiler (CFLAGS)", compiler_cflags); printFeatureConfigInfo(textPrintFlag, "include path", include_path); printFeatureConfigInfo(textPrintFlag, "system libraries", system_libs); printFeatureConfigInfo(textPrintFlag, "install path", install_path); #endif /* #ifdef MEMORY_DEBUG printFeatureConfigInfo(textPrintFlag, "Memory Debug option", memoryDebug); #if (MEMORY_DEBUG == 1) printFeatureConfigInfo(textPrintFlag, "Trace File", getenv("MALLOC_TRACE")); #endif #endif */ #if defined(__GNUC__) #if defined(__GNUC_PATCHLEVEL__) #define PATCHLEVEL __GNUC_PATCHLEVEL__ #else #define PATCHLEVEL 0 #endif safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%s (%d.%d.%d)", __VERSION__, __GNUC__, __GNUC_MINOR__, PATCHLEVEL); printFeatureConfigInfo(textPrintFlag, "GNU C (gcc) version", buf); #undef PATCHLEVEL #if defined(HAVE_SYS_UTSNAME_H) && defined(HAVE_UNAME) if (uname(&unameData) == 0) { safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "sysname(%s) release(%s) version(%s) machine(%s)", unameData.sysname, unameData.release, unameData.version, unameData.machine); printFeatureConfigInfo(textPrintFlag, "uname data", buf); } #endif printInfoSectionTitle(textPrintFlag, "Internationalization (i18n)"); #ifdef HAVE_LOCALE_H if(textPrintFlag == TRUE) { struct lconv* localeInfo; printFeatureConfigInfo(textPrintFlag, "Locale", setlocale(LC_ALL, NULL)); localeInfo = localeconv(); if (localeInfo != NULL) { safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "1%s000%s00", localeInfo->thousands_sep, localeInfo->decimal_point); printFeatureConfigInfo(textPrintFlag, "Numeric format", buf); } else { printFeatureConfigInfo(textPrintFlag, "Numeric format", "localeconv() returned null"); } } #endif /* LOCALE */ #endif /* MICRO_NTOP */ /* *************************** */ /* At Luca's request, we generate less information for the html version... so I've pushed all the config.h and #define stuff into a sub-function (Burton - 05-Jun-2002) (Unless we're in debug mode) */ #if defined(DEBUG) || \ defined(ADDRESS_DEBUG) || \ defined(DNS_DEBUG) || \ defined(DNS_SNIFF_DEBUG) || \ defined(FRAGMENT_DEBUG) || \ defined(FC_DEBUG) || \ defined(FINGERPRINT_DEBUG) || \ defined(FTP_DEBUG) || \ defined(GDBM_DEBUG) || \ defined(HASH_DEBUG) || \ defined(IDLE_PURGE_DEBUG) || \ defined(INITWEB_DEBUG) || \ defined(HOST_FREE_DEBUG) || \ defined(HTTP_DEBUG) || \ defined(MEMORY_DEBUG) || \ defined(MUTEX_DEBUG) || \ defined(NETFLOW_DEBUG) || \ defined(PACKET_DEBUG) || \ defined(PLUGIN_DEBUG) || \ defined(SESSION_TRACE_DEBUG) || \ defined(STORAGE_DEBUG) || \ defined(UNKNOWN_PACKET_DEBUG) || \ defined(URL_DEBUG) #else if(textPrintFlag == TRUE) #endif printNtopConfigHInfo(textPrintFlag); /* *************************** */ sendString(texthtml("\n\n", "
")); sendString("Throughput (pps) min/avg/max"); if(textPrintFlag == TRUE) { sendString("....."); } else { safe_snprintf(__FILE__, __LINE__, tmpBuf, sizeof(tmpBuf), "", CONST_INFOHTML_COL2_WIDTH + CONST_INFOHTML_COL3_WIDTH); sendString(tmpBuf); } /* Yes, confusing - maximum RATE is 1/minumum delay) */ if(qmaxDelay+pmaxDelay > 0.0) { safe_snprintf(__FILE__, __LINE__, tmpBuf, sizeof(tmpBuf), "%.1f", 1.0/(qmaxDelay+pmaxDelay)); sendString(tmpBuf); } else sendString("0"); sendString(texthtml("/", " / ")); if(qXBAR+pXBAR > 0.0) { safe_snprintf(__FILE__, __LINE__, tmpBuf, sizeof(tmpBuf), "%.1f", 1.0/(qXBAR+pXBAR)); sendString(tmpBuf); } else sendString("0"); sendString(texthtml("/", " / ")); if(qminDelay+pminDelay > 0.0) { safe_snprintf(__FILE__, __LINE__, tmpBuf, sizeof(tmpBuf), "%.1f", 1.0/(qminDelay+pminDelay)); sendString(tmpBuf); } else sendString("0"); sendString(texthtml("\n", "
Rejects" "" "")); } safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "%s", _addrtostr(&myGlobals.weDontWantToTalkWithYou[i].addr, buf3, sizeof(buf3))); safe_snprintf(__FILE__, __LINE__, buf2, sizeof(buf2), "%d", myGlobals.weDontWantToTalkWithYou[i].count); strftime(buf3, sizeof(buf3), CONST_LOCALE_TIMESPEC, localtime_r(&myGlobals.weDontWantToTalkWithYou[i].lastBadAccess, &t)); lockoutExpires = myGlobals.weDontWantToTalkWithYou[i].lastBadAccess + PARM_WEDONTWANTTOTALKWITHYOU_INTERVAL; strftime(buf4, sizeof(buf4), CONST_LOCALE_TIMESPEC, localtime_r(&lockoutExpires, &t)); if(textPrintFlag) { sendString(" "); sendString(buf); sendString("... "); sendString(buf2); sendString("... "); sendString(buf3); sendString("... "); sendString(buf4); sendString("\n"); } else { sendString("\n"); } } } if(countBadGuys > 0) { sendString(texthtml("\n", "
AddressCountLast Bad AccessLockout Expires
"); sendString(buf); sendString(""); sendString(buf2); sendString(""); sendString(buf3); sendString(""); sendString(buf4); sendString("
\n")); /* **************************** */ printMutexStatusReport(textPrintFlag); if(textPrintFlag != TRUE) { sendString("

[ Click " "here for a more extensive, text version of this page, suitable for " "inclusion into a bug report ]

\n"); } sendString(texthtml("", "\n")); } /* ******************************** */ void printNtopConfigInfo(int textPrintFlag, UserPref *pref) { /* This has the header */ printHTMLheader("ntop Configuration", NULL, 0); // sendString("

ntop Configuration

\n"); printNtopConfigInfoData(textPrintFlag, pref); } /* *************************** */ int printNtopLogReport(int printAsText) { int i, j, lines = 0; char buf[LEN_GENERAL_WORK_BUFFER]; if(myGlobals.logView == NULL) return(0); if(!printAsText) { printHTMLheader("ntop Log", NULL, BITFLAG_HTTP_NO_CACHE_CONTROL); sendString("
"); safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "

" "This is a rolling display of upto the last %d ntop log messages " "of priority INFO or higher. Click on the \"log\" option, above, to refresh." "

", CONST_LOG_VIEW_BUFFER_SIZE); sendString(buf); sendString("
"); sendString("
");
  }

#ifdef WIN32
  WaitForSingleObject(myGlobals.logViewMutex.mutex, INFINITE);
#else
  pthread_rwlock_wrlock(&myGlobals.logViewMutex.mutex);
#endif

  for (i=0; i");
  }

  return(lines);
}

/* *************************** */

void printNtopProblemReport(void) {
  char buf[LEN_GENERAL_WORK_BUFFER];
#ifdef PROBLEMREPORTID_DEBUG
  char buf2[256];
#endif
  static char xvert[] = "JB6XF3PRQHNA7W5ECM8S9GLVY4TDKUZ2"; /* Scrambled just 'cause */
  time_t t;
  unsigned int v, scr, raw;
  int i, j;

#ifdef HAVE_SYS_UTSNAME_H
  struct utsname unameData;
#endif

#ifndef WIN32
  struct pcap_stat pcapStats;
  memset(&pcapStats, 0, sizeof(struct pcap_stat));
#endif

  t = time(NULL);

  printHTMLheader("ntop Problem Report", NULL, 0);

  sendString("

Instructions (delete this before you send)

\n"); sendString("\n\n\n
"); sendString("

Cut out this entire section and paste into an e-mail message. Fill in the\n"); sendString("various sections with as much detail as possible and email to the ntop lists.

\n"); sendString("
  • User-type questions (How do I?) and usage bugs should be directed to the ntop\n"); sendString("mailing list (see http://lists.ntop.org/mailman/listinfo/ntop).
  • \n"); sendString("
  • Code/development questions belong on the ntop-dev list (at\n"); sendString("http://lists.ntop.org/mailman/listinfo/ntop-dev.
\n"); sendString("

Remember: ONE problem per report!

\n"); sendString("

The summary should be 5-10 words that indicate the problem and which would have\n"); sendString("helped you to find a previous report of the same problem, e.g.:

\n"); sendString("
   2003-02-07 cvs compile error in util.c, #define NONOPTION_P...
\n"); sendString("

Use the SAME 'summary' as the subject of your message, with the addition\n"); sendString("of the PR_xxxxxx value.

\n"); sendString("

For the 'Log Extract', (Unix/Linux systems) cut and paste the last 10-15 system log\n"); sendString("messages. Try and make sure - even if it requires more than 15 messages that you show\n"); sendString("at least 5 or 6 messages (or a few minutes in time) BEFORE the first sign of failure.

\n"); sendString("

Assuming your system log is in /var/log/messages, the command is:

\n"); sendString("
   grep 'ntop' /var/log/messages | head -n 15
\n"); sendString("

but you may have to increase the 15 to get the right messages.

\n"); sendString("
"); sendString("

The generated id below should be unique. It's essentially a random 6\n"); sendString("or 7 character tracking tag for each problem report. Since it's\n"); sendString("generated on your machine, we can't just use an ever increasing global\n"); sendString("number. While it should be unique, it is not traceable back to a\n"); sendString("specific user or machine. If this makes you uncomfortable just delete it.

\n"); sendString("
"); sendString("

The shortcut keys for copying this entire section are usually:

\n"); sendString("
  1. Left click anywhere in this text (selects the frame)
  2. \n"); sendString("
  3. Type control-a (select all)
  4. \n"); sendString("
  5. Type control-c (copy)
  6. \n"); sendString("
  7. Open a new mail message, and
  8. \n"); sendString("
  9. Type control-v (paste)
  10. \n"); sendString("
  11. Edit the generated text to fill in the _____s and empty sections. Don't worry -\n"); sendString("giving us more information is usually better that giving less
  12. \n"); sendString("
  13. REMEMBER To delete the headers and instructions (i.e. from\n"); sendString("this line to the top) before sending...
\n"); sendString("
\n"); sendString("
\n"); sendString("
\n");
  sendString("  n t o p   v e r s i o n  '");
  sendString(version);
  sendString("'  p r o b l e m   r e p o r t\n\n");
  sendString("From:  ______________________________\n\n");
  sendString("EMail: ______________________________\n\n");
  sendString("Date:  ");
  strftime(buf, sizeof(buf)-1, CONST_LOCALE_TIMESPEC, gmtime(&t));
  buf[sizeof(buf)-1] = '\0';
  sendString(buf);
  sendString("\n\n");

  /*
   *  Generate a (hopefully) globally unique tag for each report. The goal is to create something
   *  unique (i.e. with a very small chance of the same tag being generated), yet not traceable
   *  to a specific user/machine (unless the user chooses to identify themselves) and - even then -
   *  which isn't traceable to a subsequent report by the same user.
   *
   *  We combine a variety of numbers which, while maintained by ntop, it has little control over
   *  and so which shouldn't produce a predictable pattern.
   *
   *    Heartbeat count (if one)
   *    epoch time in seconds
   *    Elapsed time for this ntop run.
   *
   *  So that the higher digits aren't just dependent on TOD, we add the total # of bytes seen
   *  by ntop, using bit ops to shift the volitile nibbles towards the bits where the TOD is
   *  less random.
   *
   *  Finally, we use a scrambled string of characters (xvert, above) to then convert
   *  the 32 bit integer into a character tag.  Using A-Z + 0-9, but dropping the
   *  0, 1 O and L gives us base 32 (5 bits per character).  We generate left-to-right, least
   *  significant to most significant because it's just easier to generate that way.
   *
   *  If you enable the flag in globals-defines.h:
   *   #define PROBLEMREPORTID_DEBUG
   *  The data being used will be printed out for you.
   *
   */
  v = 0;

#ifdef PROBLEMREPORTID_DEBUG
  safe_snprintf(__FILE__, __LINE__, buf2, sizeof(buf2),
		"%-12s %48s %8s %8s\n",
		"Item", "Raw value", "Hex", "v value");
  sendString(buf2);
#endif

  v += (unsigned int) t;
#ifdef PROBLEMREPORTID_DEBUG
  strftime(buf, sizeof(buf)-1, CONST_LOCALE_TIMESPEC, gmtime(&t));
  buf[sizeof(buf)-1] = '\0';
  safe_snprintf(__FILE__, __LINE__, buf2, sizeof(buf2), "%-12s %48s %08x %08x\n", "Date/Time", buf, t, v);
  sendString(buf2);
#endif

  v += myGlobals.actTime - myGlobals.initialSniffTime;
#ifdef PROBLEMREPORTID_DEBUG
  safe_snprintf(__FILE__, __LINE__, buf2, sizeof(buf2), "%-12s %48u %08x %08x\n", "Elapsed",
		(myGlobals.actTime - myGlobals.initialSniffTime),
		(myGlobals.actTime - myGlobals.initialSniffTime), v);
  sendString(buf2);
#endif

  raw = 0;
  for(i=0; i< myGlobals.numDevices; i++)
    raw += (unsigned int) (myGlobals.device[i].ethernetBytes.value);

#ifdef PROBLEMREPORTID_DEBUG
  safe_snprintf(__FILE__, __LINE__, buf2, sizeof(buf2), "%-12s %48u %08x\n", "Bytes", raw, raw);
  sendString(buf2);
#endif
  /* Scramble the nibbles so we have some data high and some low.
     Arbitrary: abcdefgh -> fhgdaecb */
  scr = (raw & 0xf0000000) >> 16 |
    (raw & 0x0f000000) >> 24 |
    (raw & 0x00f00000) >> 16 |
    (raw & 0x000f0000)       |
    (raw & 0x0000f000) >>  4 |
    (raw & 0x00000f00) << 20 |
    (raw & 0x000000f0) << 16 |
    (raw & 0x0000000f) << 24;
  v ^= scr;
#ifdef PROBLEMREPORTID_DEBUG
  safe_snprintf(__FILE__, __LINE__, buf2, sizeof(buf2), "%-12s %48u %08x %08x\n", "Bytes(scramble)",
		scr, scr, v);
  sendString(buf2);
#endif

  i=0;
  memset(buf, 0, sizeof(buf));
  while(v > 0) {
    j = v % (sizeof(xvert) - 1);
    v = v / (sizeof(xvert) - 1);
    buf[i] = xvert[j];
#ifdef PROBLEMREPORTID_DEBUG
    safe_snprintf(__FILE__, __LINE__, buf2, sizeof(buf2), "(%2d", j);
    sendString(buf2);
#endif
    i++;
  }
#ifdef PROBLEMREPORTID_DEBUG
  sendString("\n\n");
#endif

  sendString("Problem Report Id: PR_");
  sendString(buf);
  sendString("\n\n");
  sendString("----------------------------------------------------------------------------\n");
  sendString("Summary\n\n\n\n\n\n");
#if defined(HAVE_SYS_UTSNAME_H) && defined(HAVE_UNAME)
  if (uname(&unameData) == 0) {
    safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "sysname(%s) release(%s) version(%s) machine(%s)",
		  unameData.sysname,
		  unameData.release,
		  unameData.version,
		  unameData.machine);
    sendString("OS(uname): ");
    sendString(buf);
    sendString("\n\n");
  } else {
#endif
    sendString("OS: __________  version: __________\n\n");
#if defined(HAVE_SYS_UTSNAME_H) && defined(HAVE_UNAME)
  }
#endif

  sendString("ntop from: ______________________________ (rpm, source, ports, etc.)\n\n");
  sendString("Hardware:  CPU:           _____ (i86, SPARC, etc.)\n");
  sendString("           # Processors:  _____\n");
  sendString("           Memory:        _____ MB\n");

  sendString("\nPackets\n");

  safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "Received:  %10u\n", myGlobals.receivedPackets);
  sendString(buf);
  safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "Processed: %10u (immediately)\n",
		myGlobals.receivedPacketsProcessed);
  sendString(buf);
  safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "Queued:    %10u\n",
		myGlobals.receivedPacketsQueued);
  sendString(buf);
  safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "Lost:      %10u (queue full)\n",
		myGlobals.receivedPacketsLostQ);
  sendString(buf);

  for(i=0; i 0) {
      safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "     Received:  %10u\n",
		    myGlobals.device[0].receivedPkts.value);
      sendString(buf);
    }
    if(myGlobals.device[0].droppedPkts.value > 0) {
      safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "     Dropped:   %10u\n",
		    myGlobals.device[0].droppedPkts.value);
      sendString(buf);
    }
    if(myGlobals.device[0].ethernetPkts.value > 0) {
      safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "     Ethernet:  %10u\n",
		    myGlobals.device[0].ethernetPkts.value);
      sendString(buf);
    }
    if(myGlobals.device[0].broadcastPkts.value > 0) {
      safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "     Broadcast: %10u\n",
		    myGlobals.device[0].broadcastPkts.value);
      sendString(buf);
    }
    if(myGlobals.device[0].multicastPkts.value > 0) {
      safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "     Multicast: %10u\n",
		    myGlobals.device[0].multicastPkts.value);
      sendString(buf);
    }
    if(myGlobals.device[0].ipPkts.value > 0) {
      safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "     IP:        %10u\n",
		    myGlobals.device[0].ipPkts.value);
      sendString(buf);
    }
    sendString("\n");
  }

  for(i=0; i= 0)) {
      safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "     Received (pcap):%10u\n", pcapStats.ps_recv);
      sendString(buf);
      if(pcapStats.ps_ifdrop > 0) {
        safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "     Dropped (NIC):  %10u\n", pcapStats.ps_ifdrop);
        sendString(buf);
      }
      safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "     Dropped (pcap): %10u\n", pcapStats.ps_drop);
      sendString(buf);
    }
#endif

    if(myGlobals.runningPref.mergeInterfaces == 0) {
      if(myGlobals.device[i].receivedPkts.value > 0) {
	safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "     Received:       %10u\n",
		      myGlobals.device[i].receivedPkts.value);
	sendString(buf);
      }
      if(myGlobals.device[i].droppedPkts.value > 0) {
	safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "     Dropped (ntop): %10u\n",
		      myGlobals.device[i].droppedPkts.value);
	sendString(buf);
      }
      if(myGlobals.device[i].ethernetPkts.value > 0) {
	safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "     Ethernet:       %10u\n",
		      myGlobals.device[i].ethernetPkts.value);
	sendString(buf);
      }
      if(myGlobals.device[i].broadcastPkts.value > 0) {
	safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "     Broadcast:      %10u\n",
		      myGlobals.device[i].broadcastPkts.value);
	sendString(buf);
      }
      if(myGlobals.device[i].multicastPkts.value > 0) {
	safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "     Multicast:      %10u\n",
		      myGlobals.device[i].multicastPkts.value);
	sendString(buf);
      }
      if(myGlobals.device[i].ipPkts.value > 0) {
	safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "     IP:             %10u\n",
		      myGlobals.device[i].ipPkts.value);
	sendString(buf);
      }

    }

    sendString("          Mfg: ____________________  Model: ____________________\n");
    sendString("          NIC Speed: 10/100/1000/Other  Bus: PCI ISA USB Firewire Other\n");
    sendString("          Location:  Public Internet / LAN / WAN\n");
    sendString("          Bandwidth: Dialup  DSL/CableModem  fT1  T1  10Mbps T3 100Mbps+\n");
    sendString("          # Hosts (machines): __________\n\n");
  }

  sendString("----------------------------------------------------------------------------\n");
  sendString("Log extract\n\n");
  if(myGlobals.runningPref.traceLevel >= CONST_NOISY_TRACE_LEVEL) {
    sendString("  (Please cut and paste actual log lines)\n");
  } else {
    if(printNtopLogReport(TRUE) == 0)
      sendString("  (automated extract unavailable - please cut and paste actual log lines)\n");
  }
  sendString("\n\n\n\n");
  sendString("----------------------------------------------------------------------------\n");
  sendString("Problem Description\n\n\n\n\n\n\n\n\n\n");
  sendString("----------------------------------------------------------------------------\n");
  printNtopConfigInfoData(TRUE, &myGlobals.runningPref);
  sendString("----------------------------------------------------------------------------\n");

  sendString("
\n"); } /* **************************************** */ #define sslOrNot (isSSL ? " ssl" : "") void initSocket(int isSSL, int ipv4or6, int *port, int *sock, char *addr) { int sockopt = 1, rc; #if !defined(WIN32) struct addrinfo hints, *ai = NULL, *aitop; char strport[32]; char ntop[1024]; #endif #ifdef INITWEB_DEBUG char value[LEN_SMALL_WORK_BUFFER]; #endif #if !(defined(INET6) && !defined(WIN32)) struct sockaddr_in sockIn; #endif if(*port <= 0) { *sock = 0; return; } traceEvent(CONST_TRACE_NOISY, "Initializing%s socket, port %d, address %s", sslOrNot, *port, addr == NULL ? "(any)" : addr); #if !defined(WIN32) memset(&hints,0,sizeof(hints)); hints.ai_family = ipv4or6; hints.ai_flags = AI_PASSIVE; hints.ai_socktype = SOCK_STREAM; safe_snprintf(__FILE__, __LINE__, strport,sizeof(strport),"%d",*port); if((rc = getaddrinfo(addr, strport, &hints, &aitop)) !=0) { traceEvent(CONST_TRACE_ERROR, "INITWEB: getaddrinfo() error %s(%d)", gai_strerror(rc), rc); traceEvent(CONST_TRACE_ERROR, "INITWEB: Unable to convert address '%s' - " "not binding to a particular interface", addr); } else { for (ai = aitop; ai; ai = ai->ai_next) { if(ai->ai_family != AF_INET && ai->ai_family != AF_INET6) continue; if(getnameinfo(ai->ai_addr, ai->ai_addrlen, ntop,sizeof(ntop), strport, sizeof(strport), NI_NUMERICHOST|NI_NUMERICSERV) != 0){ traceEvent(CONST_TRACE_ERROR, "INITWEB: getnameinfo() error %s(%d)", gai_strerror(errno), errno); traceEvent(CONST_TRACE_ERROR, "INITWEB: Unable to convert address '%s' - " "not binding to a particular interface", addr); } else break; } } #else memset(&sockIn, 0, sizeof(sockIn)); sockIn.sin_family = AF_INET; sockIn.sin_port = (int)htons((unsigned short int)(*port)); #ifndef WIN32 if(addr) { if(!inet_aton(addr, &sockIn.sin_addr)) { traceEvent(CONST_TRACE_ERROR, "INITWEB: Unable to convert address '%s' - " "not binding to a particular interface", addr); sockIn.sin_addr.s_addr = INADDR_ANY; } else { traceEvent(CONST_TRACE_INFO, "INITWEB: Converted address '%s' - " "binding to the specific interface", addr); } } else { sockIn.sin_addr.s_addr = INADDR_ANY; } #else sockIn.sin_addr.s_addr = INADDR_ANY; #endif #ifdef INITWEB_DEBUG safe_snprintf(__FILE__, __LINE__, value, sizeof(value), "%d.%d.%d.%d", \ (int) ((sockIn.sin_addr.s_addr >> 24) & 0xff), \ (int) ((sockIn.sin_addr.s_addr >> 16) & 0xff), \ (int) ((sockIn.sin_addr.s_addr >> 8) & 0xff), \ (int) ((sockIn.sin_addr.s_addr >> 0) & 0xff)); \ traceEvent(CONST_TRACE_INFO, "INITWEB_DEBUG: sockIn = %s:%d", value, ntohs(sockIn.sin_port)); #endif #endif /* INET6 */ errno = 0; #if !defined(WIN32) *sock = socket(ai->ai_family, SOCK_STREAM, 0); if((*sock < 0) || (errno != 0) ) { errno = 0; /* It might be that IPv6 is not supported by the running system */ *sock = socket(AF_INET, SOCK_STREAM, 0); } #else *sock = socket(AF_INET, SOCK_STREAM, 0); #endif if((*sock < 0) || (errno != 0)) { traceEvent(CONST_TRACE_FATALERROR, "INITWEB: Unable to create a new%s socket - returned %d, error is '%s'(%d)", sslOrNot, *sock, strerror(errno), errno); exit(37); /* Just in case */ } traceEvent(CONST_TRACE_NOISY, "INITWEB: Created a new%s socket (%d)", sslOrNot, *sock); #ifdef INITWEB_DEBUG traceEvent(CONST_TRACE_INFO, "INITWEB_DEBUG:%s setsockopt(%d, SOL_SOCKET, SO_REUSEADDR ...", sslOrNot, *sock); #endif errno = 0; rc = setsockopt(*sock, SOL_SOCKET, SO_REUSEADDR, (char *)&sockopt, sizeof(sockopt)); if((rc < 0) || (errno != 0)) { traceEvent(CONST_TRACE_FATALERROR, "INITWEB: Unable to set%s socket options - '%s'(%d)", sslOrNot, strerror(errno), errno); exit(38); /* Just in case */ } #ifdef INITWEB_DEBUG traceEvent(CONST_TRACE_INFO, "INITWEB_DEBUG:%s socket %d, options set", sslOrNot, *sock); #endif errno = 0; #if !defined(WIN32) rc = bind(*sock, ai->ai_addr, ai->ai_addrlen); if(aitop != NULL) freeaddrinfo(aitop); #else rc = bind(*sock, (struct sockaddr *)&sockIn, sizeof(sockIn)); #endif if((rc < 0) || (errno != 0)) { closeNwSocket(&myGlobals.sock); shutdown(myGlobals.sock, SHUT_RDWR); traceEvent(CONST_TRACE_ERROR, "INITWEB:%s binding problem - '%s'(%d)", sslOrNot, strerror(errno), errno); traceEvent(CONST_TRACE_INFO, "Check if another instance of ntop is running"); traceEvent(CONST_TRACE_INFO, "or if the current user (-u) can bind to the specified port"); traceEvent(CONST_TRACE_FATALERROR, "Binding problem, ntop shutting down..."); exit(39); /* Just in case */ } #ifdef INITWEB_DEBUG traceEvent(CONST_TRACE_INFO, "INITWEB_DEBUG:%s socket %d bound", sslOrNot, *sock); #endif errno = 0; rc = listen(*sock, myGlobals.webServerRequestQueueLength); if((rc < 0) || (errno != 0)) { closeNwSocket(&myGlobals.sock); shutdown(myGlobals.sock, SHUT_RDWR); traceEvent(CONST_TRACE_FATALERROR, "INITWEB:%s listen(%d, %d) error %s(%d)", sslOrNot, *sock, myGlobals.webServerRequestQueueLength, strerror(errno), errno); exit(40); /* Just in case */ } traceEvent(CONST_TRACE_INFO, "INITWEB: Initialized%s socket, port %d, address %s", sslOrNot, *port, addr == NULL ? "(any)" : addr); } #undef sslOrNot /* **************************************** */ /* SSL fixes courtesy of Curtis Doty Matthias Kattanek */ void initWeb(void) { traceEvent(CONST_TRACE_INFO, "INITWEB: Initializing web server"); myGlobals.columnSort = 0; addDefaultAdminUser(); initAccessLog(); traceEvent(CONST_TRACE_INFO, "INITWEB: Initializing TCP/IP socket connections for web server"); if(myGlobals.runningPref.webPort > 0) { initSocket(FALSE, myGlobals.runningPref.ipv4or6, &myGlobals.runningPref.webPort, &myGlobals.sock, myGlobals.runningPref.webAddr); /* Courtesy of Daniel Savard */ if(myGlobals.runningPref.webAddr) traceEvent(CONST_TRACE_ALWAYSDISPLAY, "INITWEB: Waiting for HTTP connections on %s port %d", myGlobals.runningPref.webAddr, myGlobals.runningPref.webPort); else traceEvent(CONST_TRACE_ALWAYSDISPLAY, "INITWEB: Waiting for HTTP connections on port %d", myGlobals.runningPref.webPort); } #ifdef HAVE_OPENSSL if((myGlobals.sslInitialized) && (myGlobals.runningPref.sslPort > 0)) { initSocket(TRUE, myGlobals.runningPref.ipv4or6, &myGlobals.runningPref.sslPort, &myGlobals.sock_ssl, myGlobals.runningPref.sslAddr); if(myGlobals.runningPref.sslAddr) traceEvent(CONST_TRACE_ALWAYSDISPLAY, "INITWEB: Waiting for HTTPS (SSL) connections on %s port %d", myGlobals.runningPref.sslAddr, myGlobals.runningPref.sslPort); else traceEvent(CONST_TRACE_ALWAYSDISPLAY, "INITWEB: Waiting for HTTPS (SSL) connections on port %d", myGlobals.runningPref.sslPort); } #endif traceEvent(CONST_TRACE_INFO, "INITWEB: Starting web server"); createThread(&myGlobals.handleWebConnectionsThreadId, handleWebConnections, NULL); traceEvent(CONST_TRACE_INFO, "THREADMGMT[t%lu]: INITWEB: Started thread for web server", (long unsigned int)myGlobals.handleWebConnectionsThreadId); traceEvent(CONST_TRACE_NOISY, "INITWEB: Server started... continuing with initialization"); } /* ************************************* */ void closeNwSocket(int *sockId) { #ifdef DEBUG traceEvent(CONST_TRACE_INFO, "DEBUG: Closing socket %d...", *sockId); #endif if(*sockId == FLAG_DUMMY_SOCKET) return; #ifdef HAVE_OPENSSL if(*sockId < 0) term_ssl_connection(-(*sockId)); else { closesocket(*sockId); } #else closesocket(*sockId); #endif *sockId = FLAG_DUMMY_SOCKET; } /* **************************************** */ #ifndef WIN32 static void PIPEhandler(int sig) { myGlobals.numHandledSIGPIPEerrors++; signal (SIGPIPE, PIPEhandler); } #endif /* ******************************************* */ #ifdef MAKE_WITH_HTTPSIGTRAP RETSIGTYPE webservercleanup(int signo) { static int msgSent = 0; int i; void *array[20]; size_t size; char **strings; if(msgSent<10) { traceEvent(CONST_TRACE_FATALERROR, "webserver: caught signal %d %s", signo, signo == SIGHUP ? "SIGHUP" : signo == SIGINT ? "SIGINT" : signo == SIGQUIT ? "SIGQUIT" : signo == SIGILL ? "SIGILL" : signo == SIGABRT ? "SIGABRT" : signo == SIGFPE ? "SIGFPE" : signo == SIGKILL ? "SIGKILL" : signo == SIGSEGV ? "SIGSEGV" : signo == SIGPIPE ? "SIGPIPE" : signo == SIGALRM ? "SIGALRM" : signo == SIGTERM ? "SIGTERM" : signo == SIGUSR1 ? "SIGUSR1" : signo == SIGUSR2 ? "SIGUSR2" : signo == SIGCHLD ? "SIGCHLD" : #ifdef SIGCONT signo == SIGCONT ? "SIGCONT" : #endif #ifdef SIGSTOP signo == SIGSTOP ? "SIGSTOP" : #endif #ifdef SIGBUS signo == SIGBUS ? "SIGBUS" : #endif #ifdef SIGSYS signo == SIGSYS ? "SIGSYS" #endif : "other"); msgSent++; } #ifdef HAVE_BACKTRACE size = backtrace(array, 20); strings = (char**)backtrace_symbols(array, size); traceEvent(CONST_TRACE_ERROR, "webserver: BACKTRACE: backtrace is:"); if(size < 2) traceEvent(CONST_TRACE_ERROR, "webserver: BACKTRACE: **unavailable!"); else /* Ignore the 0th entry, that's our cleanup() */ for (i=1; i * */ { sigset_t a_oset, a_nset; sigset_t *oset, *nset; /* First, build our mask - empty, except for "UNBLOCK" SIGPIPE... */ oset = &a_oset; nset = &a_nset; sigemptyset(nset); rc = sigemptyset(nset); if(rc != 0) traceEvent(CONST_TRACE_ERROR, "SIGPIPE mask, sigemptyset() = %d, gave %p", rc, nset); rc = sigaddset(nset, SIGPIPE); if(rc != 0) traceEvent(CONST_TRACE_ERROR, "SIGPIPE mask, sigaddset() = %d, gave %p", rc, nset); #ifndef DARWIN rc = pthread_sigmask(SIG_UNBLOCK, NULL, oset); #ifdef DEBUG traceEvent(CONST_TRACE_INFO, "DEBUG: SIGPIPE mask was pthread_setsigmask(-, NULL, %x) returned %d", oset, rc); #endif rc = pthread_sigmask(SIG_UNBLOCK, nset, oset); if(rc != 0) traceEvent(CONST_TRACE_ERROR, "SIGPIPE mask set, pthread_setsigmask(SIG_UNBLOCK, %p, %p) returned %d", nset, oset, rc); rc = pthread_sigmask(SIG_UNBLOCK, NULL, oset); #ifdef DEBUG traceEvent(CONST_TRACE_INFO, "DEBUG: SIGPIPE mask is pthread_setsigmask(-, NULL, %x) returned %d", oset, rc); #endif #endif /* DARWIN */ if(rc == 0) { signal(SIGPIPE, PIPEhandler); traceEvent(CONST_TRACE_INFO, "Note: SIGPIPE handler set (ignore)"); } } #endif /* WIN32 */ FD_ZERO(&mask); if(myGlobals.runningPref.webPort > 0) FD_SET((unsigned int)myGlobals.sock, &mask); #ifdef HAVE_OPENSSL if(myGlobals.sslInitialized) { FD_SET(myGlobals.sock_ssl, &mask); if(myGlobals.sock_ssl > topSock) topSock = myGlobals.sock_ssl; } #endif memcpy(&mask_copy, &mask, sizeof(fd_set)); #ifndef WIN32 traceEvent(CONST_TRACE_INFO, "THREADMGMT[t%lu]: WEB: Server connection thread running [p%d]", (long unsigned int)pthread_self(), getpid()); #endif traceEvent(CONST_TRACE_ALWAYSDISPLAY, "WEB: ntop's web server is now processing requests"); while(myGlobals.ntopRunState < FLAG_NTOPSTATE_SHUTDOWNREQ) { struct timeval wait_time; #ifdef DEBUG traceEvent(CONST_TRACE_INFO, "DEBUG: Select(ing) %d....", topSock); #endif memcpy(&mask, &mask_copy, sizeof(fd_set)); wait_time.tv_sec = PARM_SLEEP_LIMIT; wait_time.tv_usec = 0; rc = select(topSock+1, &mask, 0, 0, &wait_time); #ifdef DEBUG traceEvent(CONST_TRACE_INFO, "DEBUG: select returned: %d", rc); #endif if(rc > 0) { /* Now, handle the web connection ends up in SSL_Accept() */ handleSingleWebConnection(&mask); } } /* while myGlobals.ntopRunState < FLAG_NTOPSTATE_SHUTDOWNREQ */ myGlobals.handleWebConnectionsThreadId = 0; traceEvent(CONST_TRACE_INFO, "THREADMGMT[t%lu]: WEB: Server connection thread terminated [p%d]", (long unsigned int)pthread_self(), getpid()); if(myGlobals.ntopRunState == FLAG_NTOPSTATE_SHUTDOWNREQ) { traceEvent(CONST_TRACE_ALWAYSDISPLAY, "Terminating ntop based on user shutdown request"); sleep(1); raise(SIGINT); /* Returning from above is a bad thing */ } return(NULL); } /* ************************************* */ static void handleSingleWebConnection(fd_set *fdmask) { #if !defined(WIN32) struct sockaddr from; #else struct sockaddr_in from; #endif HostAddr remote_ipaddr; int from_len = sizeof(from); errno = 0; if(FD_ISSET(myGlobals.sock, fdmask)) { #ifdef DEBUG traceEvent(CONST_TRACE_INFO, "DEBUG: Accepting HTTP request..."); #endif myGlobals.newSock = accept(myGlobals.sock, (struct sockaddr*)&from, (socklen_t*)&from_len); } else { #if defined(DEBUG) && defined(HAVE_OPENSSL) if(myGlobals.sslInitialized) traceEvent(CONST_TRACE_INFO, "DEBUG: Accepting HTTPS request..."); #endif #ifdef HAVE_OPENSSL if(myGlobals.sslInitialized) myGlobals.newSock = accept(myGlobals.sock_ssl, (struct sockaddr*)&from, (socklen_t*)&from_len); #else ; #endif } if(myGlobals.newSock >= 0) { #if !defined(WIN32) if(from.sa_family == AF_INET) { addrput(AF_INET, &remote_ipaddr, &(((struct sockaddr_in *)&from)->sin_addr)); } else if(from.sa_family == AF_INET6) addrput(AF_INET6, &remote_ipaddr, &(((struct sockaddr_in6 *)&from)->sin6_addr)); #else addrput(AF_INET, &remote_ipaddr, &(((struct sockaddr_in *)&from)->sin_addr)); #endif } #ifdef DEBUG traceEvent(CONST_TRACE_INFO, "Request accepted (sock=%d) (errno=%d)", myGlobals.newSock, errno); #endif if(myGlobals.newSock >= 0) { #ifdef HAVE_OPENSSL if(myGlobals.sslInitialized) if(FD_ISSET(myGlobals.sock_ssl, fdmask)) { if(accept_ssl_connection(myGlobals.newSock) == -1) { traceEvent(CONST_TRACE_WARNING, "Unable to accept SSL connection"); closeNwSocket(&myGlobals.newSock); shutdown(myGlobals.newSock, SHUT_RDWR); return; } else { myGlobals.newSock = -myGlobals.newSock; } } #endif /* HAVE_OPENSSL */ handleHTTPrequest(remote_ipaddr); closeNwSocket(&myGlobals.newSock); shutdown(myGlobals.newSock, SHUT_RDWR); } else { traceEvent(CONST_TRACE_INFO, "Unable to accept HTTP(S) request (errno=%d: %s)", errno, strerror(errno)); } } /* ******************* */ int handlePluginHTTPRequest(char* url) { FlowFilterList *flows = myGlobals.flowsList; #ifdef DEBUG traceEvent(CONST_TRACE_INFO, "handlePluginHTTPRequest(%s)", url); #endif while(flows != NULL) if((flows->pluginStatus.pluginPtr != NULL) && (flows->pluginStatus.pluginPtr->pluginURLname != NULL) && (flows->pluginStatus.pluginPtr->httpFunct != NULL) && (strncmp(flows->pluginStatus.pluginPtr->pluginURLname, url, strlen(flows->pluginStatus.pluginPtr->pluginURLname)) == 0)) { char *arg; /* Courtesy of Roberto F. De Luca */ if((!flows->pluginStatus.activePlugin) /* || (!flows->pluginStatus.pluginPtr->inactiveSetup) */) { char buf[LEN_GENERAL_WORK_BUFFER], name[32]; sendHTTPHeader(FLAG_HTTP_TYPE_HTML, 0, 1); strncpy(name, flows->pluginStatus.pluginPtr->pluginURLname, sizeof(name)); name[sizeof(name)-1] = '\0'; /* just in case pluginURLname is too long... */ if((strlen(name) > 6) && (strcasecmp(&name[strlen(name)-6], "plugin") == 0)) name[strlen(name)-6] = '\0'; safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf),"Status for the \"%s\" Plugin", name); printHTMLheader(buf, NULL, BITFLAG_HTML_NO_REFRESH); printFlagedWarning("This plugin is currently inactive."); printHTMLtrailer(); return(1); } if(strlen(url) == strlen(flows->pluginStatus.pluginPtr->pluginURLname)) arg = ""; else arg = &url[strlen(flows->pluginStatus.pluginPtr->pluginURLname)+1]; /* traceEvent(CONST_TRACE_INFO, "Found %s [%s]", flows->pluginStatus.pluginPtr->pluginURLname, arg); */ flows->pluginStatus.pluginPtr->httpFunct(arg); return(1); } else flows = flows->next; return(0); /* Plugin not found */ } /* *******************************/ #define DEVICE_NAME "device.name." void edit_prefs(int postLen, char *db_key, char *db_val) { datum key, nextkey; int num_added = 0; char buf[1024]; char postData[256]; int idx; if(postLen > 0) { db_key = db_val = NULL; if((idx = readHTTPpostData(postLen, postData, sizeof(postData))) > 0) { char *tkn = strtok(postData, "&"); while(tkn != NULL) { if(strncmp(tkn, "key=", 4) == 0) { db_key = strdup(&tkn[4]); } else if(strncmp(tkn, "val=", 4) == 0) { u_int val = 0; if(db_val != NULL) { if(db_key && (!strcmp(db_key, EVENTS_MASK))) val = atoi(db_val); free(db_val); } if(db_key && (!strcmp(db_key, EVENTS_MASK))) { char str_val[16]; val = val | atoi(&tkn[4]); safe_snprintf(__FILE__, __LINE__, str_val, sizeof(str_val), "%d", val); db_val = strdup(str_val); } else db_val = strdup(&tkn[4]); } tkn = strtok(NULL, "&"); } } } printHTMLheader("Edit Preferences", NULL, 0); sendString("
\n" "" "" "\n"); if(db_key && (!strcmp(db_key, EVENTS_MASK))) { if(!db_val) db_val = strdup("0"); } if(db_key && db_val) { u_short len = strlen(DEVICE_NAME); unescape_url(db_key); unescape_url(db_val); if(db_val[0] == '\0') delPrefsValue(db_key); else storePrefsValue(db_key, db_val); if(strncmp(db_key, DEVICE_NAME, strlen(DEVICE_NAME)) == 0) { int i; sanitize_rrd_string(db_val); for(i=0; i" "" "\n"); } } nextkey = gdbm_nextkey (myGlobals.prefsFile, key); free (key.dptr); key = nextkey; } if(((db_key == NULL) && (num_added > 0)) || ((db_key != NULL) && (num_added == 0))) { /* Fix courtesy of Adrian Irving-Beer */ safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "
" "
" "" "\n", (db_key == NULL) ? "" : db_key); sendString(buf); } sendString("
PreferenceConfigured ValueAction
" "%s", key.dptr, key.dptr, key.dptr); sendString(buf); if(!strcmp(key.dptr, EVENTS_MASK)) { sendString(""); } else { safe_snprintf(__FILE__, __LINE__, buf, sizeof(buf), "", val); sendString(buf); } sendString("
\n"); sendString("

NOTE:

    \n"); sendString("
  • Set the value to \"\" (empty value) to delete an entry\n"); sendString("
  • You can define a community adding an entry of type community.<name>=<network list>. For instance community.ntop.org=131.114.21.22/32\n"); sendString("
  • You can map a numeric vlan id to a name adding an entry of type vlan.<vlan id>=<vlan name>. For instance vlan.10=Administration\n"); sendString("

\n"); if(db_key && ((!strcmp(db_key, EVENTS_MASK)) || (!strcmp(db_key, EVENTS_LOG)))) { init_events(); /* Reload events */ } if(db_key) free(db_key); if(db_val) free(db_val); }