~ubuntu-branches/ubuntu/wily/ntop/wily-proposed

« back to all changes in this revision

Viewing changes to ntop/globals-core.h

  • Committer: Bazaar Package Importer
  • Author(s): Dennis Schoen
  • Date: 2002-04-12 11:38:47 UTC
  • Revision ID: james.westby@ubuntu.com-20020412113847-4k4yydw0pzybc6g8
Tags: upstream-2.0.0
ImportĀ upstreamĀ versionĀ 2.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 *  Copyright (C) 1998-2001 Luca Deri <deri@ntop.org>
 
3
 *                          Portions by Stefano Suin <stefano@ntop.org>
 
4
 *
 
5
 *                          http://www.ntop.org/
 
6
 *
 
7
 *  This program is free software; you can redistribute it and/or modify
 
8
 *  it under the terms of the GNU General Public License as published by
 
9
 *  the Free Software Foundation; either version 2 of the License, or
 
10
 *  (at your option) any later version.
 
11
 *
 
12
 *  This program is distributed in the hope that it will be useful,
 
13
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
14
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
15
 *  GNU General Public License for more details.
 
16
 *
 
17
 *  You should have received a copy of the GNU General Public License
 
18
 *  along with this program; if not, write to the Free Software
 
19
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
20
 */
 
21
 
 
22
 
 
23
 
 
24
/* General */
 
25
extern char *version, *osName, *author, *buildDate;
 
26
extern char *program_name;
 
27
extern char domainName[MAXHOSTNAMELEN], *shortDomainName;
 
28
extern HostTraffic *broadcastEntry, *otherHostEntry;
 
29
extern int ntop_argc;
 
30
extern char **ntop_argv;
 
31
 
 
32
/* command line options */
 
33
extern u_short traceLevel, debugMode, useSyslog, accuracyLevel;
 
34
extern u_char stickyHosts, enableSuspiciousPacketDump;
 
35
extern char dbPath[200];
 
36
extern char accessLogPath[200]; /* Apache-like access log */
 
37
extern char mapperURL[256];     /* URL of the mapper CGI */
 
38
extern u_int maxHashSize, topHashSize;
 
39
extern u_int enableNetFlowSupport;
 
40
extern short usePersistentStorage, grabSessionInformation;
 
41
extern char *rFileName, *pcapLog;
 
42
extern int numericFlag, logTimeout, daemonMode, mergeInterfaces;
 
43
 
 
44
/* Search Paths */
 
45
extern char *dataFileDirs[], *pluginDirs[], *configFileDirs[];
 
46
 
 
47
/* Debug */
 
48
extern size_t allocatedMemory;
 
49
 
 
50
/* Logging */
 
51
extern time_t nextLogTime;
 
52
 
 
53
/* Flags */
 
54
extern int isLsofPresent, isNepedPresent, isNmapPresent, filterExpressionInExtraFrame;
 
55
extern short capturePackets, endNtop;
 
56
 
 
57
 
 
58
/* Multithreading */
 
59
#ifdef MULTITHREADED
 
60
extern unsigned short numThreads;
 
61
extern PthreadMutex packetQueueMutex, hostsHashMutex, graphMutex;
 
62
extern PthreadMutex lsofMutex, addressResolutionMutex, hashResizeMutex;
 
63
extern pthread_t dequeueThreadId, handleWebConnectionsThreadId;
 
64
extern pthread_t thptUpdateThreadId, scanIdleThreadId, scanIdleSessionsThreadId;
 
65
extern pthread_t hostTrafficStatsThreadId, dbUpdateThreadId, lsofThreadId;
 
66
extern pthread_t purgeAddressThreadId;
 
67
#ifdef HAVE_GDBM_H
 
68
extern PthreadMutex gdbmMutex;
 
69
#endif
 
70
 
 
71
#ifdef USE_SEMAPHORES
 
72
extern sem_t queueSem;
 
73
#ifdef ASYNC_ADDRESS_RESOLUTION
 
74
extern sem_t queueAddressSem;
 
75
#endif
 
76
#else
 
77
extern ConditionalVariable queueCondvar;
 
78
#ifdef ASYNC_ADDRESS_RESOLUTION
 
79
extern ConditionalVariable queueAddressCondvar;
 
80
#endif
 
81
#endif
 
82
#ifdef ASYNC_ADDRESS_RESOLUTION
 
83
extern pthread_t dequeueAddressThreadId;
 
84
extern TrafficCounter droppedAddresses;
 
85
extern PthreadMutex addressQueueMutex;
 
86
#endif
 
87
#endif
 
88
extern u_long numResolvedWithDNSAddresses, numKeptNumericAddresses, 
 
89
  numResolvedOnCacheAddresses;
 
90
 
 
91
/* Database */
 
92
#ifdef HAVE_GDBM_H
 
93
extern GDBM_FILE gdbm_file, pwFile, eventFile, hostsInfoFile;
 
94
#endif
 
95
 
 
96
/* lsof support */
 
97
extern u_short updateLsof;
 
98
extern ProcessInfo **processes;
 
99
extern u_short numProcesses;
 
100
extern ProcessInfoList *localPorts[TOP_IP_PORT];
 
101
 
 
102
/* TCP Wrappers */
 
103
#ifdef HAVE_LIBWRAP
 
104
extern int allow_severity, deny_severity;
 
105
#endif /* HAVE_LIBWRAP */
 
106
 
 
107
 
 
108
/* Filter Chains */
 
109
extern u_short handleRules;
 
110
extern FlowFilterList *flowsList;
 
111
extern FilterRuleChain *tcpChain, *udpChain, *icmpChain;
 
112
extern u_short ruleSerialIdentifier;
 
113
extern FilterRule* filterRulesList[MAX_NUM_RULES];
 
114
 
 
115
/* Address Resolution */
 
116
#if defined(ASYNC_ADDRESS_RESOLUTION)
 
117
extern u_int addressQueueLen, maxAddressQueueLen;
 
118
extern u_int addressQueueHead, addressQueueTail;
 
119
extern struct in_addr addressQueue[ADDRESS_QUEUE_LENGTH+1];
 
120
#endif
 
121
 
 
122
/* Misc */
 
123
extern char *separator;
 
124
extern int32_t thisZone; /* seconds offset from gmt to local time */
 
125
extern u_long numPurgedHosts, numTerminatedSessions;
 
126
 
 
127
/* Time */
 
128
extern time_t actTime, initialSniffTime, lastRefreshTime;
 
129
extern time_t nextSessionTimeoutScan;
 
130
extern struct timeval lastPktTime;
 
131
 
 
132
/* NICs */
 
133
/* CHECK ME: if multiple Interfaces are handled by multiple
 
134
   threads deviceId is a bad idea */
 
135
extern int deviceId; /* Set by processPacket() */
 
136
extern int numDevices, actualDeviceId;
 
137
extern NtopInterface *device;
 
138
 
 
139
/* Monitored Protocols */
 
140
extern char **protoIPTrafficInfos;
 
141
extern u_short numIpProtosToMonitor, numIpPortsToHandle;
 
142
extern PortMapper *ipPortMapper;
 
143
extern int numActServices, numIpPortMapperSlots;
 
144
extern unsigned long numHandledHTTPrequests;
 
145
extern ServiceEntry **udpSvc, **tcpSvc;
 
146
 
 
147
/* Packet Capture */
 
148
#if defined(MULTITHREADED)
 
149
extern PacketInformation packetQueue[PACKET_QUEUE_LENGTH+1];
 
150
extern unsigned int packetQueueLen, maxPacketQueueLen, packetQueueHead, packetQueueTail;
 
151
#endif
 
152
 
 
153
extern TransactionTime transTimeHash[NUM_TRANSACTION_ENTRIES];
 
154
extern u_int broadcastEntryIdx, otherHostEntryIdx;
 
155
extern u_char dummyEthAddress[ETHERNET_ADDRESS_LEN];
 
156
extern u_short mtuSize[], headerSize[];
 
157
extern char *currentFilterExpression;
 
158
 
 
159
/* function declaration ***************************************************** */
 
160
 
 
161
/* address.c */
 
162
 
 
163
extern void cleanupAddressQueue(void);
 
164
extern void* dequeueAddress(void* notUsed);
 
165
extern char* _intoa(struct in_addr addr, char* buf, u_short bufLen);
 
166
extern char* intoa(struct in_addr addr);
 
167
extern void ipaddr2str(struct in_addr hostIpAddress);
 
168
extern char* etheraddr_string(const u_char *ep);
 
169
extern char* llcsap_string(u_char sap);
 
170
extern void extract_fddi_addrs(struct fddi_header *fddip, char *fsrc,
 
171
                               char *fdst);
 
172
extern u_int16_t handleDNSpacket(const u_char *ipPtr, 
 
173
                                 DNSHostInfo *hostPtr, short length,
 
174
                                 short *isRequest, short *positiveReply);
 
175
extern void checkSpoofing(u_int idxToCheck);
 
176
extern void cleanupHostEntries();
 
177
 
 
178
/* admin.c */
 
179
extern void showUsers(void);
 
180
extern void addUser(char* user);
 
181
extern void deleteUser(char* user);
 
182
extern void doAddUser(int _len);
 
183
extern void showURLs(void);
 
184
extern void addURL(char* url);
 
185
extern void deleteURL(char* user);
 
186
extern void doAddURL(int _len);
 
187
extern int doChangeFilter(int len);
 
188
extern void changeFilter(void);
 
189
extern void addDefaultAdminUser(void);
 
190
 
 
191
/* dataFormat.c */
 
192
extern char* formatKBytes(float numKBytes);
 
193
extern char* formatBytes(TrafficCounter numBytes, short encodeString);
 
194
extern char* formatLatency(struct timeval tv, u_short sessionState);
 
195
extern char* formatSeconds(unsigned long sec);
 
196
extern char* formatMicroSeconds(unsigned long microsec);
 
197
extern char* formatThroughput(float numBytes);
 
198
extern char* formatTimeStamp(unsigned int ndays, unsigned int nhours,
 
199
                             unsigned int nminutes);
 
200
extern char* formatPkts(TrafficCounter pktNr);
 
201
 
 
202
/* emitter.c */
 
203
extern void dumpNtopHashes(char* options);
 
204
extern void dumpNtopTrafficInfo(char* options);
 
205
 
 
206
/* event.c */
 
207
extern void emitEvent(FilterRule *rule, HostTraffic *srcHost,
 
208
                      u_int srcHostIdx, HostTraffic *dstHost,
 
209
                      u_int dstHostIdx, short icmpType,
 
210
                      u_short sport, u_short dport);
 
211
extern void scanAllTcpExpiredRules(void);
 
212
extern void fireEvent(FilterRule *rule, HostTraffic *srcHost,
 
213
                      u_int srcHostIdx, HostTraffic *dstHost,
 
214
                      u_int dstHostIdx, short icmpType,
 
215
                      u_short sport, u_short dport,
 
216
                      u_int length);
 
217
extern void smurfAlert(u_int srcHostIdx, u_int dstHostIdx);
 
218
 
 
219
/* graph.c */
 
220
extern void hostTrafficDistrib(HostTraffic *theHost, short dataSent);
 
221
extern void hostIPTrafficDistrib(HostTraffic *theHost, short dataSent);
 
222
extern void hostFragmentDistrib(HostTraffic *theHost, short dataSent);
 
223
extern void hostTotalFragmentDistrib(HostTraffic *theHost, short dataSent);
 
224
extern void pktSizeDistribPie(void);
 
225
extern void ipProtoDistribPie(void);
 
226
extern void interfaceTrafficPie(void);
 
227
extern void pktCastDistribPie(void);
 
228
extern void drawTrafficPie(void);
 
229
extern void drawThptGraph(int sortedColumn);
 
230
extern void drawGlobalProtoDistribution(void);
 
231
extern void drawGlobalIpProtoDistribution(void);
 
232
 
 
233
/* hash.c */
 
234
extern u_int computeInitialHashIdx(struct in_addr *hostIpAddress,
 
235
                                   u_char *ether_addr,
 
236
                                   short* useIPAddressForSearching);
 
237
extern void resizeHostHash(int deviceToExtend, short action);
 
238
extern void freeHostInfo(int theDevice, u_int hostIdx, u_short refreshHash);
 
239
extern void freeHostInstances(void);
 
240
extern void purgeIdleHosts(int ignoreIdleTime, int devId);
 
241
extern int extendTcpSessionsHash();
 
242
 
 
243
/* http.c */
 
244
extern void sendStringLen(char *theString, unsigned int len);
 
245
extern void sendString(char *theString);
 
246
extern void printHTTPheader(void);
 
247
extern void printHTTPtrailer(void);
 
248
extern void initAccessLog(void);
 
249
extern void termAccessLog(void);
 
250
extern void sendHTTPHeaderType(void);
 
251
extern void sendGIFHeaderType(void);
 
252
extern void sendHTTPProtoHeader(void);
 
253
extern void handleHTTPrequest(struct in_addr from);
 
254
extern void printHTMLheader(char *title, int  headerFlags);
 
255
 
 
256
/* initialize.c */
 
257
extern void initIPServices(void);
 
258
extern void initCounters(int _mergeInterfaces);
 
259
extern void resetStats(void);
 
260
extern int initGlobalValues(void);
 
261
extern void postCommandLineArgumentsInitialization(time_t *lastTime);
 
262
extern void initGdbm(void);
 
263
extern void initThreads(int enableThUpdate, int enableIdleHosts, int enableDBsupport);
 
264
extern void initApps(void);
 
265
extern void initDevices(char* devices);
 
266
extern void initLibpcap(char* rulesFile, int numDevices);
 
267
extern void initDeviceDatalink(void);
 
268
extern void parseTrafficFilter(char *argv[], int optind);
 
269
extern void initSignals(void);
 
270
extern void startSniffer(void);
 
271
extern void deviceSanityCheck(char* string);
 
272
 
 
273
/* leaks.c */
 
274
extern void initLeaks(void);
 
275
extern void termLeaks(void);
 
276
extern void resetLeaks(void);
 
277
#ifdef MEMORY_DEBUG 
 
278
#define malloc(a)     ntop_malloc((unsigned int)a, __FILE__, __LINE__)
 
279
#define calloc(a, b)  ntop_calloc((unsigned int)a, (unsigned int)b, __FILE__, __LINE__)
 
280
#define realloc(p, a) ntop_realloc((void*)p, (unsigned int)a,  __FILE__, __LINE__)
 
281
#define strdup(a)     ntop_strdup((char*)a, __FILE__, __LINE__)
 
282
#define free(a)       ntop_free((void*)&(a), __FILE__, __LINE__)
 
283
extern void*          ntop_malloc(unsigned int sz, char* file, int line);
 
284
extern void*          ntop_calloc(unsigned int c, unsigned int sz, char* file, int line);
 
285
extern void*          ntop_realloc(void* ptr, unsigned int sz, char* file, int line);
 
286
extern char*          ntop_strdup(char *str, char* file, int line);
 
287
extern void           ntop_free(void **ptr, char* file, int line);
 
288
#else
 
289
#define free(a)       ntop_safefree((void*)&(a), __FILE__, __LINE__)
 
290
extern void           ntop_safefree(void **ptr, char* file, int line);
 
291
#define malloc(sz)    ntop_safemalloc(sz, __FILE__, __LINE__)
 
292
extern void*          ntop_safemalloc(unsigned int sz, char* file, int line);
 
293
#define calloc(c,sz)  ntop_safecalloc(c, sz, __FILE__, __LINE__)
 
294
extern void*          ntop_safecalloc(unsigned int c, unsigned int sz, char* file, int line);
 
295
#define realloc(p,sz) ntop_saferealloc(p, sz, __FILE__, __LINE__)
 
296
extern void*          ntop_saferealloc(void* ptr, unsigned int sz, char* file, int line);
 
297
#endif
 
298
 
 
299
 
 
300
/* logger.c */
 
301
extern void initLogger(void);
 
302
extern void termLogger(void);
 
303
extern void logMessage(char* message, u_short severity);
 
304
extern void LogStatsToFile(void);
 
305
extern void* logFileLoop(void* notUsed);
 
306
 
 
307
 
 
308
/* ntop.c */
 
309
extern int numChildren;
 
310
extern void handleSigHup(int signalId);
 
311
extern void *pcapDispatch(void *_i);
 
312
extern RETSIGTYPE handleDiedChild(int signal);
 
313
extern RETSIGTYPE dontFreeze(int signo);
 
314
extern void daemonize(void);
 
315
extern void detachFromTerminal(void);
 
316
extern void handleProtocols(char *protos);
 
317
extern void addDefaultProtocols(void);
 
318
extern int mapGlobalToLocalIdx(int port);
 
319
extern void *updateThptLoop(void *notUsed);
 
320
extern void* updateHostTrafficStatsThptLoop(void* notUsed);
 
321
extern void *updateDBHostsTrafficLoop(void* notUsed);
 
322
extern void *scanIdleLoop(void *notUsed);
 
323
extern void *scanIdleSessionsLoop(void *notUsed);
 
324
extern void *periodicLsofLoop(void *notUsed);
 
325
extern void packetCaptureLoop(time_t *lastTime, int refreshRate);
 
326
extern RETSIGTYPE cleanup(int signo);
 
327
extern void* cleanupExpiredHostEntriesLoop(void*);
 
328
 
 
329
/* pbuf.c */
 
330
#define checkSessionIdx(a) _checkSessionIdx(a, __FILE__, __LINE__)
 
331
extern u_int _checkSessionIdx(u_int idx, char* file, int line);
 
332
extern u_int findHostIdxByNumIP(struct in_addr hostIpAddress);
 
333
extern u_int findHostInfo(struct in_addr *hostIpAddress);
 
334
extern u_int getHostInfo(struct in_addr *hostIpAddress, u_char *ether_addr, 
 
335
                         u_char checkForMultihoming,
 
336
                         u_char forceUsingIPaddress);
 
337
extern char *getNamedPort(int port);
 
338
extern void scanTimedoutTCPSessions(void);
 
339
extern void deleteFragment(IpFragment *fragment);
 
340
extern void purgeOldFragmentEntries(void);
 
341
extern void queuePacket(u_char * _deviceId, const struct pcap_pkthdr *h,
 
342
                        const u_char *p);
 
343
extern void cleanupPacketQueue(void);
 
344
extern void *dequeuePacket(void* notUsed);
 
345
extern void dumpSuspiciousPacket();
 
346
extern void processPacket(u_char *_deviceId, const struct pcap_pkthdr *h,
 
347
                          const u_char *p);
 
348
extern void updateOSName(HostTraffic *el);
 
349
extern void updateHostName(HostTraffic *el);
 
350
extern void _incrementUsageCounter(UsageCounter *counter,
 
351
                                   u_int peerIdx, int deviceId,
 
352
                                   char* file, int line);
 
353
 
 
354
/* protocols.c */
 
355
extern void handleBootp(HostTraffic *srcHost, HostTraffic *dstHost,
 
356
                        u_short sport, u_short dport,
 
357
                        u_int packetDataLength, u_char* packetData);
 
358
extern u_int16_t processDNSPacket(const u_char *bp, u_int length,
 
359
                                  short *isRequest, short *positiveReply);
 
360
#ifdef ENABLE_NAPSTER
 
361
extern void handleNapster(HostTraffic *srcHost, HostTraffic *dstHost,
 
362
                          u_short sport, u_short dport,
 
363
                          u_int packetDataLength, u_char* packetData,
 
364
                          IPSession *theSession);
 
365
#endif
 
366
extern void handleNetbios(HostTraffic *srcHost, HostTraffic *dstHost,
 
367
                          u_short sport, u_short dport,
 
368
                          u_int packetDataLength, const u_char* bp,
 
369
                          u_int length, u_int hlen);
 
370
 
 
371
/* plugin.c */
 
372
/* CHECK ME: THIS IS NOT CALLED YET! */
 
373
extern void notifyPluginsHashResize(int oldSize, int newSize,
 
374
                                    int* mappings);
 
375
extern int handlePluginHTTPRequest(char* url);
 
376
extern void loadPlugins(void);
 
377
extern void startPlugins(void);
 
378
extern void unloadPlugins(void);
 
379
 
 
380
/* qsort.c */
 
381
/* typedef int (*compare_function_t) (const void *p1, const void *p2); */
 
382
extern void quicksort(void *a, size_t n, size_t es,
 
383
                      int (*compare_function) (const void *p1, const void *p2));
 
384
 
 
385
/* rules.c */
 
386
extern void parseRules(char* path);
 
387
extern void checkFilterChain(HostTraffic *srcHost, u_int srcHostIdx, 
 
388
                             HostTraffic *dstHost, u_int dstHostIdx,
 
389
                             u_short sport, u_short dport, 
 
390
                             u_int length, u_int hlen, u_int8_t flags,     
 
391
                             u_char protocol, u_char isFragment,  
 
392
                             const u_char* bp, FilterRuleChain *selectedChain,
 
393
                             u_short packetType);
 
394
 
 
395
/* sql.c */
 
396
extern void handleDbSupport(char* addr /* host:port */, int* enableDBsupport);
 
397
extern void closeSQLsocket(void);
 
398
extern void updateHostNameInfo(unsigned long numeric, char* symbolic);
 
399
extern void updateHostTraffic(HostTraffic *el);
 
400
extern void notifyHostCreation(HostTraffic *el);
 
401
extern void notifyTCPSession(IPSession *session);
 
402
extern void updateDBOSname(HostTraffic *el);
 
403
 
 
404
/* ssl.c */
 
405
#ifdef HAVE_OPENSSL
 
406
extern int sslInitialized, sslPort;
 
407
extern int init_ssl(void);
 
408
extern int accept_ssl_connection(int fd);
 
409
extern SSL *getSSLsocket(int fd);
 
410
extern void term_ssl_connection(int fd);
 
411
/* CHECK ME: THIS IS NOT CALLED YET! */
 
412
extern void term_ssl(void);
 
413
#endif
 
414
 
 
415
/* term.c */
 
416
extern void termIPServices(void);
 
417
extern void termIPSessions(void);
 
418
 
 
419
/* traffic.c */
 
420
extern void updateThpt(void);
 
421
extern void updateTrafficMatrix(HostTraffic *srcHost, HostTraffic *dstHost,
 
422
                                TrafficCounter length);
 
423
extern void updateDbHostsTraffic(int deviceToUpdate);
 
424
extern void updateHostTrafficStatsThpt(int hourId);
 
425
extern int isInitialHttpData(char* packetData);
 
426
extern int isInitialSshData(char* packetData);
 
427
extern int isInitialFtpData(char* packetData);
 
428
 
 
429
/* util.c */
 
430
extern FILE *sec_popen(char *cmd, const char *type);
 
431
extern HostTraffic* findHostByNumIP(char* numIPaddr);
 
432
extern HostTraffic* findHostByMAC(char* macAddr);
 
433
extern char* copy_argv(register char **argv);
 
434
extern unsigned short isPrivateAddress(struct in_addr *addr);
 
435
extern unsigned short isBroadcastAddress(struct in_addr *addr);
 
436
extern unsigned short isMulticastAddress(struct in_addr *addr);
 
437
extern unsigned short isLocalAddress(struct in_addr *addr);
 
438
extern int dotted2bits(char *mask);
 
439
extern void handleLocalAddresses(char* addresses);
 
440
extern unsigned short isPseudoLocalAddress(struct in_addr *addr);
 
441
extern unsigned short isPseudoBroadcastAddress(struct in_addr *addr);
 
442
extern void printLogTime(void);
 
443
extern int32_t gmt2local(time_t t);
 
444
extern void handleFlowsSpecs(char* flows);
 
445
extern int getLocalHostAddress(struct in_addr *hostAddress, char* device);
 
446
extern void fillDomainName(HostTraffic *el);
 
447
#ifdef MULTITHREADED
 
448
extern int createThread(pthread_t *threadId, void *(*__start_routine) (void *),
 
449
                        char* userParm);
 
450
extern void killThread(pthread_t *threadId);
 
451
extern int _createMutex(PthreadMutex *mutexId, char* fileName, int fileLine);
 
452
extern int _accessMutex(PthreadMutex *mutexId, char* where,
 
453
                        char* fileName, int fileLine);
 
454
extern void _deleteMutex(PthreadMutex *mutexId, char* fileName, int fileLine);
 
455
extern int _tryLockMutex(PthreadMutex *mutexId, char* where,
 
456
                         char* fileName, int fileLine);
 
457
extern int _isMutexLocked(PthreadMutex *mutexId,
 
458
                         char* fileName, int fileLine);
 
459
extern int _releaseMutex(PthreadMutex *mutexId,
 
460
                         char* fileName, int fileLine);
 
461
extern int createCondvar(ConditionalVariable *condvarId);
 
462
extern void deleteCondvar(ConditionalVariable *condvarId);
 
463
extern int waitCondvar(ConditionalVariable *condvarId);
 
464
extern int signalCondvar(ConditionalVariable *condvarId);
 
465
#define createMutex(a)     _createMutex(a, __FILE__, __LINE__)
 
466
#define accessMutex(a, b)  _accessMutex(a, b, __FILE__, __LINE__)
 
467
#define deleteMutex(a)     _deleteMutex(a, __FILE__, __LINE__)
 
468
#define tryLockMutex(a, b) _tryLockMutex(a, b, __FILE__, __LINE__)
 
469
#define isMutexLocked(a)   _isMutexLocked(a, __FILE__, __LINE__)
 
470
#define releaseMutex(a)    _releaseMutex(a, __FILE__, __LINE__)
 
471
#ifdef HAVE_SEMAPHORE_H
 
472
extern int createSem(sem_t *semId, int initialValue);
 
473
extern void waitSem(sem_t *semId);
 
474
extern int incrementSem(sem_t *semId);
 
475
extern int decrementSem(sem_t *semId);
 
476
extern int deleteSem(sem_t *semId);
 
477
#endif /* HAVE_SEMAPHORE_H */
 
478
#endif /* MULTITHREADED */
 
479
extern void setNBnodeNameType(HostTraffic *theHost, char nodeType, char* nbName);
 
480
extern void trimString(char*);
 
481
extern FILE* getNewRandomFile(char* fileName, int len);
 
482
extern void stringSanityCheck(char* string);
 
483
extern int checkCommand(char* commandName);
 
484
extern void readLsofInfo(void);
 
485
extern void readNepedInfo(void);
 
486
extern char *getHostOS(char* ipAddr, int port, char* additionalInfo);
 
487
extern char* decodeNBstring(char* theString, char *theBuffer);
 
488
extern void closeNwSocket(int *sockId);
 
489
extern char *savestr(const char *str);
 
490
extern int name_interpret(char *in, char *out, int in_len);
 
491
 
 
492
extern char *getNwInterfaceType(int i);
 
493
extern char *formatTime(time_t *theTime, short encodeString);
 
494
extern int getActualInterface(void);
 
495
extern void storeHostTrafficInstance(HostTraffic *el);
 
496
extern void resetHostsVariables(HostTraffic* el);
 
497
extern HostTraffic *resurrectHostTrafficInstance(char *key);
 
498
extern u_short in_cksum(const u_short *addr, int len, u_short csum);
 
499
extern void addTimeMapping(u_int16_t transactionId, struct timeval theTime);
 
500
extern long delta_time (struct timeval * now, struct timeval * before);
 
501
extern time_t getTimeMapping(u_int16_t transactionId,
 
502
                             struct timeval theTime);
 
503
extern void traceEvent(int eventTraceLevel, char* file,
 
504
                       int line, char * format, ...)
 
505
     __attribute__ ((format (printf, 4, 5))); 
 
506
     extern char *_strncpy(char *dest, const char *src, size_t n);
 
507
#ifndef HAVE_LOCALTIME_R
 
508
extern struct tm *localtime_r(const time_t *t, struct tm *tp);
 
509
#endif
 
510
#ifndef HAVE_STRTOK_R
 
511
extern char *strtok_r(char *s, const char *delim, char **save_ptr);
 
512
#endif
 
513
extern int getSniffedDNSName(char *hostNumIpAddress, char *name, int maxNameLen);
 
514
extern int strOnlyDigits(const char *s);
 
515
extern void addPassiveSessionInfo(u_long theHost, u_short thePort);
 
516
extern int isPassiveSession(u_long theHost, u_short thePort);
 
517
extern void initPassiveSessions();
 
518
extern void termPassiveSessions();
 
519
extern int getPortByName(ServiceEntry **theSvc, char* portName);
 
520
extern char *getPortByNumber(ServiceEntry **theSvc, int port);
 
521
extern char *getPortByNum(int port, int type);
 
522
extern char *getAllPortByNum(int port);
 
523
extern int getAllPortByName(char* portName);
 
524
extern void addPortHashEntry(ServiceEntry **theSvc, int port, char* name);
 
525
extern void resetUsageCounter(UsageCounter *counter);
 
526
extern void resetSecurityHostTraffic(HostTraffic *el);
 
527
extern char* mapIcmpType(int icmpType);
 
528
 
 
529
/* vendor.c */
 
530
extern char* getVendorInfo(u_char* ethAddress, short encodeString);
 
531
extern char* getSAPInfo(u_int16_t sapInfo, short encodeString);
 
532
extern char* getSpecialMacInfo(HostTraffic* el, short encodeString);
 
533
extern void createVendorTable(void);
 
534
 
 
535
#if defined(AIX) || defined(WIN32)
 
536
extern int snprintf(char *str, size_t n, const char *fmt, ...);
 
537
#endif
 
538
 
 
539
 
 
540
/* mysql.c */
 
541
#ifdef HAVE_MYSQL
 
542
extern void handlemySQLSupport(char* addr /* host:port */, int* enableDBsupport);
 
543
extern void closemySQLsocket(void);
 
544
extern void mySQLupdateHostNameInfo(unsigned long numeric, char* symbolic);
 
545
extern void mySQLupdateHostTraffic(HostTraffic *el);
 
546
extern void mySQLnotifyHostCreation(HostTraffic *el);
 
547
extern void mySQLnotifyTCPSession(IPSession *session);
 
548
extern void mySQLupdateDBOSname(HostTraffic *el);
 
549
#endif /* HAVE_MYSQL */
 
550
 
 
551
#ifdef ENABLE_NAPSTER
 
552
extern NapsterServer napsterSvr[MAX_NUM_NAPSTER_SERVER];
 
553
#endif
 
554
 
 
555
/* netflow.c */
 
556
extern int handleNetFlowSupport(char* addr /* host:port */);
 
557
extern void termNetFlowExporter();
 
558
extern void sendICMPflow(HostTraffic *srcHost, HostTraffic *dstHost, u_int length);
 
559
extern void sendUDPflow(HostTraffic *srcHost, HostTraffic *dstHost, 
 
560
                        u_int sport, u_int dport, u_int length);
 
561
extern void sendTCPSessionFlow(IPSession *theSession);