1 /*
2  * Argus Software
3  * Copyright (c) 2000-2016 QoSient, LLC
4  * All rights reserved.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2, or (at your option)
9  * any later version.
10 
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15 
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19  *
20  */
21 
22 /*
23  * $Id: //depot/argus/clients/include/argus_sort.h#39 $
24  * $DateTime: 2016/06/01 15:17:28 $
25  * $Change: 3148 $
26  */
27 
28 #ifndef ArgusSort_h
29 #define ArgusSort_h
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 #define ARGUS_MAX_SORT_ALG		75
36 #define MAX_SORT_ALG_TYPES		75
37 
38 struct ArgusSortRecord {
39    struct ArgusQueueHeader qhdr;
40    struct ArgusRecordStruct *record;
41 };
42 
43 struct ArgusSorterStruct {
44    int ArgusSortOptionIndex, ArgusReplaceMode;
45    struct ArgusQueueStruct *ArgusRecordQueue;
46    int (*ArgusSortAlgorithms[ARGUS_MAX_SORT_ALG])(struct ArgusRecordStruct *, struct ArgusRecordStruct *);
47    int (*ArgusSortAlgorithm)(struct ArgusRecordStruct *, struct ArgusRecordStruct *);
48    double (*ArgusFetchAlgorithms[ARGUS_MAX_SORT_ALG])(struct ArgusRecordStruct *);
49    int  ArgusFetchAlgNumber;
50    char *ArgusSOptionStrings[ARGUS_MAX_S_OPTIONS];
51    struct nff_program filter;
52    char ArgusSrcAddrCIDR, ArgusDstAddrCIDR;
53 };
54 
55 #define ARGUSSORTSTARTTIME		1
56 #define ARGUSSORTLASTTIME		2
57 #define ARGUSSORTTRANSACTIONS		3
58 #define ARGUSSORTDURATION		4
59 #define ARGUSSORTAVGDURATION		5
60 #define ARGUSSORTMINDURATION		6
61 #define ARGUSSORTMAXDURATION		7
62 #define ARGUSSORTSRCMAC			8
63 #define ARGUSSORTDSTMAC			9
64 #define ARGUSSORTSRCADDR		10
65 #define ARGUSSORTDSTADDR		11
66 #define ARGUSSORTPROTOCOL		12
67 #define ARGUSSORTSRCIPID		13
68 #define ARGUSSORTDSTIPID		14
69 #define ARGUSSORTSRCPORT		15
70 #define ARGUSSORTDSTPORT		16
71 #define ARGUSSORTSRCTOS			17
72 #define ARGUSSORTDSTTOS			18
73 #define ARGUSSORTSRCTTL			19
74 #define ARGUSSORTDSTTTL			20
75 #define ARGUSSORTBYTECOUNT		21
76 #define ARGUSSORTSRCBYTECOUNT		22
77 #define ARGUSSORTDSTBYTECOUNT		23
78 #define ARGUSSORTPKTSCOUNT		24
79 #define ARGUSSORTSRCPKTSCOUNT		25
80 #define ARGUSSORTDSTPKTSCOUNT		26
81 #define ARGUSSORTAPPBYTECOUNT		27
82 #define ARGUSSORTSRCAPPBYTECOUNT	28
83 #define ARGUSSORTDSTAPPBYTECOUNT	29
84 #define ARGUSSORTLOAD			30
85 #define ARGUSSORTSRCLOAD		31
86 #define ARGUSSORTDSTLOAD		32
87 #define ARGUSSORTLOSS			33
88 #define ARGUSSORTPERCETLOSS		34
89 #define ARGUSSORTRATE			35
90 #define ARGUSSORTSRCRATE		36
91 #define ARGUSSORTDSTRATE		37
92 #define ARGUSSORTTRANREF		38
93 #define ARGUSSORTSEQ			39
94 #define ARGUSSORTSRCMPLS		40
95 #define ARGUSSORTDSTMPLS		41
96 #define ARGUSSORTSRCVLAN		42
97 #define ARGUSSORTDSTVLAN		43
98 #define ARGUSSORTSRCID			44
99 #define ARGUSSORTSRCTCPBASE		45
100 #define ARGUSSORTDSTTCPBASE		46
101 #define ARGUSSORTTCPRTT			47
102 #define ARGUSSORTSRCLOSS		48
103 #define ARGUSSORTDSTLOSS		49
104 #define ARGUSSORTPERCENTSRCLOSS		50
105 #define ARGUSSORTPERCENTDSTLOSS		51
106 #define ARGUSSORTSRCMAXPKTSIZE		52
107 #define ARGUSSORTSRCMINPKTSIZE		53
108 #define ARGUSSORTDSTMAXPKTSIZE		54
109 #define ARGUSSORTDSTMINPKTSIZE		55
110 #define ARGUSSORTSRCDSBYTE    		56
111 #define ARGUSSORTDSTDSBYTE    		57
112 #define ARGUSSORTSRCCOCODE 		58
113 #define ARGUSSORTDSTCOCODE    		59
114 #define ARGUSSORTSRCAS	 		60
115 #define ARGUSSORTDSTAS    		61
116 #define ARGUSSORTSUM    		62
117 #define ARGUSSORTRUNTIME    		63
118 #define ARGUSSORTIDLETIME   		64
119 #define ARGUSSORTSRCOUI        		65
120 #define ARGUSSORTDSTOUI        		66
121 #define ARGUSSORTAPPBYTES        	67
122 #define ARGUSSORTSRCAPPBYTES        	68
123 #define ARGUSSORTDSTAPPBYTES        	69
124 #define ARGUSSORTAPPBYTERATIO        	70
125 #define ARGUSSORTINODE	        	71
126 
127 #define ARGUSSORTSRCGAP	        	72
128 #define ARGUSSORTDSTGAP	        	73
129 #define ARGUSSORTSRCDUP	        	74
130 #define ARGUSSORTDSTDUP	        	75
131 
132 #if defined(ArgusSort)
133 
134 struct ArgusSorterStruct *ArgusSorter = NULL;
135 int ArgusReverseSortDir = 0;
136 
137 struct ArgusSorterStruct *ArgusNewSorter (struct ArgusParserStruct *parser);
138 
139 void ArgusDeleteSorter (struct ArgusSorterStruct *);
140 void ArgusProcessSortOptions(void);
141 void ArgusSortQueue (struct ArgusSorterStruct *, struct ArgusQueueStruct *);
142 int ArgusSortRoutine (const void *, const void *);
143 
144 int ArgusSortSrcId (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
145 int ArgusSortTime (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
146 int ArgusSortIdleTime (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
147 int ArgusSortStartTime (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
148 int ArgusSortLastTime (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
149 int ArgusSortTransactions (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
150 int ArgusSortDuration (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
151 int ArgusSortMean (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
152 int ArgusSortMin (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
153 int ArgusSortMax (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
154 int ArgusSortSrcMac (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
155 int ArgusSortDstMac (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
156 int ArgusSortSrcAddr (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
157 int ArgusSortDstAddr (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
158 int ArgusSortInode (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
159 int ArgusSortProtocol (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
160 int ArgusSortSrcMpls (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
161 int ArgusSortDstMpls (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
162 int ArgusSortSrcVlan (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
163 int ArgusSortDstVlan (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
164 int ArgusSortSrcIpId (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
165 int ArgusSortDstIpId (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
166 int ArgusSortSrcPort (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
167 int ArgusSortDstPort (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
168 int ArgusSortSrcTos (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
169 int ArgusSortDstTos (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
170 int ArgusSortSrcDSByte (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
171 int ArgusSortDstDSByte (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
172 int ArgusSortSrcTtl (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
173 int ArgusSortDstTtl (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
174 int ArgusSortByteCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
175 int ArgusSortLoad (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
176 int ArgusSortSrcLoad (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
177 int ArgusSortDstLoad (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
178 int ArgusSortLoss (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
179 int ArgusSortPercentLoss (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
180 int ArgusSortRate (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
181 int ArgusSortSrcRate (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
182 int ArgusSortDstRate (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
183 int ArgusSortSrcMeanPktSize (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
184 int ArgusSortDstMeanPktSize (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
185 int ArgusSortTranRef (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
186 int ArgusSortSeq (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
187 int ArgusSortByteCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
188 int ArgusSortSrcByteCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
189 int ArgusSortDstByteCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
190 
191 int ArgusSortAppByteRatio (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
192 
193 int ArgusSortAppByteCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
194 int ArgusSortAppSrcByteCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
195 int ArgusSortAppDstByteCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
196 
197 int ArgusSortPktsCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
198 int ArgusSortSrcPktsCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
199 int ArgusSortDstPktsCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
200 int ArgusSortAppByteCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
201 int ArgusSortSrcAppByteCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
202 int ArgusSortDstAppByteCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
203 int ArgusSortSrcTcpBase (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
204 int ArgusSortDstTcpBase (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
205 int ArgusSortTcpRtt (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
206 int ArgusSortSrcLoss (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
207 int ArgusSortDstLoss (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
208 int ArgusSortPercentSrcLoss (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
209 int ArgusSortPercentDstLoss (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
210 int ArgusSortSrcMaxPktSize (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
211 int ArgusSortSrcMinPktSize (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
212 int ArgusSortDstMaxPktSize (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
213 int ArgusSortDstMinPktSize (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
214 int ArgusSortSrcCountryCode (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
215 int ArgusSortDstCountryCode (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
216 int ArgusSortSrcASNum (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
217 int ArgusSortDstASNum (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
218 int ArgusSortSum (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
219 int ArgusSortSrcOui (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
220 int ArgusSortDstOui (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
221 
222 int ArgusSortSrcGap (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
223 int ArgusSortDstGap (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
224 
225 /*
226 int ArgusSortSrcDup (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
227 int ArgusSortDstDup (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
228 */
229 
230 int (*ArgusSortAlgorithmTable[MAX_SORT_ALG_TYPES])(struct ArgusRecordStruct *, struct ArgusRecordStruct *) = {
231    ArgusSortStartTime,
232    ArgusSortStartTime,
233    ArgusSortLastTime,
234    ArgusSortTransactions,
235    ArgusSortDuration,
236    ArgusSortMean,
237    ArgusSortMin,
238    ArgusSortMax,
239    ArgusSortSrcMac,
240    ArgusSortDstMac,
241    ArgusSortSrcAddr,
242    ArgusSortDstAddr,
243    ArgusSortProtocol,
244    ArgusSortSrcIpId,
245    ArgusSortDstIpId,
246    ArgusSortSrcPort,
247    ArgusSortDstPort,
248    ArgusSortSrcTos,
249    ArgusSortDstTos,
250    ArgusSortSrcTtl,
251    ArgusSortDstTtl,
252 
253    ArgusSortByteCount,
254    ArgusSortSrcByteCount,
255    ArgusSortDstByteCount,
256 
257    ArgusSortPktsCount,
258    ArgusSortSrcPktsCount,
259    ArgusSortDstPktsCount,
260    ArgusSortAppByteCount,
261    ArgusSortSrcAppByteCount,
262    ArgusSortDstAppByteCount,
263    ArgusSortLoad,
264    ArgusSortSrcLoad,
265    ArgusSortDstLoad,
266    ArgusSortLoss,
267    ArgusSortPercentLoss,
268    ArgusSortRate,
269    ArgusSortSrcRate,
270    ArgusSortDstRate,
271    ArgusSortTranRef,
272    ArgusSortSeq,
273    ArgusSortSrcMpls,
274    ArgusSortDstMpls,
275    ArgusSortSrcVlan,
276    ArgusSortDstVlan,
277    ArgusSortSrcId,
278    ArgusSortSrcTcpBase,
279    ArgusSortDstTcpBase,
280    ArgusSortTcpRtt,
281    ArgusSortSrcLoss,
282    ArgusSortDstLoss,
283    ArgusSortPercentSrcLoss,
284    ArgusSortPercentDstLoss,
285    ArgusSortSrcMaxPktSize,
286    ArgusSortSrcMinPktSize,
287    ArgusSortDstMaxPktSize,
288    ArgusSortDstMinPktSize,
289    ArgusSortSrcDSByte,
290    ArgusSortDstDSByte,
291    ArgusSortSrcCountryCode,
292    ArgusSortDstCountryCode,
293    ArgusSortSrcASNum,
294    ArgusSortDstASNum,
295    ArgusSortSum,
296    ArgusSortSum,
297    ArgusSortIdleTime,
298    ArgusSortSrcOui,
299    ArgusSortDstOui,
300 
301    ArgusSortAppByteCount,
302    ArgusSortSrcAppByteCount,
303    ArgusSortDstAppByteCount,
304    ArgusSortAppByteRatio,
305    ArgusSortAppByteRatio,
306    ArgusSortInode,
307    ArgusSortSrcGap,
308    ArgusSortDstGap,
309 };
310 
311 char *ArgusSortKeyWords[MAX_SORT_ALG_TYPES] = {
312    "stime",
313    "stime",
314    "ltime",
315    "trans",
316    "dur",
317    "mean",
318    "min",
319    "max",
320    "smac",
321    "dmac",
322    "saddr",
323    "daddr",
324    "proto",
325    "sipid",
326    "dipid",
327    "sport",
328    "dport",
329    "stos",
330    "dtos",
331    "sttl",
332    "dttl",
333    "bytes",
334    "sbytes",
335    "dbytes",
336    "pkts",
337    "spkts",
338    "dpkts",
339    "appbytes",
340    "sappbytes",
341    "dappbytes",
342    "load",
343    "sload",
344    "dload",
345    "loss",
346    "ploss",
347    "rate",
348    "srate",
349    "drate",
350    "tranref",
351    "seq",
352    "smpls",
353    "dmpls",
354    "svlan",
355    "dvlan",
356    "srcid",
357    "stcpb",
358    "dtcpb",
359    "tcprtt",
360    "sloss",
361    "dloss",
362    "sploss",
363    "dploss",
364    "smaxsz",
365    "sminsz",
366    "dmaxsz",
367    "dminsz",
368    "sdsb",
369    "ddsb",
370    "sco",
371    "dco",
372    "sas",
373    "das",
374    "sum",
375    "runtime",
376    "idle",
377    "soui",
378    "doui",
379    "appbytes",
380    "sappbytes",
381    "dappbytes",
382    "abr",
383    "pcr",
384    "inode",
385    "sgap",
386    "dgap",
387 };
388 
389 #else
390 
391 
392 extern struct ArgusSorterStruct *ArgusSorter;
393 extern int ArgusReverseSortDir;
394 
395 extern struct ArgusSorterStruct *ArgusNewSorter (struct ArgusParserStruct *parser);
396 extern void ArgusDeleteSorter (struct ArgusSorterStruct *);
397 extern void ArgusProcessSortOptions(void);
398 extern void ArgusSortQueue (struct ArgusSorterStruct *, struct ArgusQueueStruct *);
399 extern int ArgusSortRoutine (const void *, const void *);
400 
401 extern int ArgusSortSrcId (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
402 extern int ArgusSortTime (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
403 extern int ArgusSortIdleTime (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
404 extern int ArgusSortStartTime (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
405 extern int ArgusSortLastTime (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
406 extern int ArgusSortTransactions (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
407 extern int ArgusSortDuration (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
408 extern int ArgusSortMean (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
409 extern int ArgusSortMin (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
410 extern int ArgusSortMax (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
411 extern int ArgusSortSrcAddr (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
412 extern int ArgusSortDstAddr (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
413 extern int ArgusSortInode (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
414 extern int ArgusSortProtocol (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
415 extern int ArgusSortIpId (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
416 extern int ArgusSortSrcPort (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
417 extern int ArgusSortDstPort (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
418 extern int ArgusSortSrcTos (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
419 extern int ArgusSortDstTos (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
420 extern int ArgusSortSrcDSByte (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
421 extern int ArgusSortDstDSByte (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
422 extern int ArgusSortSrcTtl (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
423 extern int ArgusSortDstTtl (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
424 extern int ArgusSortByteCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
425 extern int ArgusSortLoad (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
426 extern int ArgusSortLoss (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
427 extern int ArgusSortPercentLoss (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
428 extern int ArgusSortRate (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
429 extern int ArgusSortTranRef (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
430 extern int ArgusSortSeq (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
431 extern int ArgusSortByteCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
432 extern int ArgusSortSrcByteCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
433 extern int ArgusSortDstByteCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
434 extern int ArgusSortPktsCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
435 extern int ArgusSortSrcPktsCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
436 extern int ArgusSortDstPktsCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
437 extern int ArgusSortAppByteCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
438 extern int ArgusSortSrcAppByteCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
439 extern int ArgusSortDstAppByteCount (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
440 extern int ArgusSortSrcTcpBase (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
441 extern int ArgusSortDstTcpBase (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
442 extern int ArgusSortTcpRtt (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
443 extern int ArgusSortSrcOui (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
444 extern int ArgusSortDstOui (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
445 
446 extern int ArgusSortSrcGap (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
447 extern int ArgusSortDstGap (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
448 extern int ArgusSortSrcDup (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
449 extern int ArgusSortDstDup (struct ArgusRecordStruct *, struct ArgusRecordStruct *);
450 
451 extern int (*ArgusSortAlgorithmTable[MAX_SORT_ALG_TYPES])(struct ArgusRecordStruct *, struct ArgusRecordStruct *);
452 extern char *ArgusSortKeyWords[MAX_SORT_ALG_TYPES];
453 #endif
454 
455 #ifdef __cplusplus
456 }
457 #endif
458 #endif
459 
460