Added additional UFAFs, fixed gsprintconsole_ves to handle float measruement intervals
[com/gs-lite.git] / cfg / external_fcns.def
1  ///////////////////////////////////////////////////////////
2 //          Matching predicates
3 ///////////////////////////////////////////////////////////
4         PRED [LFTA_LEGAL, COST HIGH]str_exists_substr[string, string];
5         PRED [LFTA_LEGAL, COST HIGH]str_compare[string,string];
6         PRED [LFTA_LEGAL, COST LOW] str_match_offset [uint,string,string];
7         PRED [LFTA_LEGAL, COST LOW] byte_match_offset [uint,uint,string];
8     
9 ///////////////////////////////////////////////////////////
10 //          MIN/MAX functions
11 ///////////////////////////////////////////////////////////
12
13
14         ullong FUN [LFTA_LEGAL, COST FREE] LLMIN (ullong,ullong);
15         ullong FUN [LFTA_LEGAL, COST FREE] LLMAX (ullong,ullong); 
16         uint FUN [LFTA_LEGAL, COST FREE] UMIN (uint,uint);
17         uint FUN [LFTA_LEGAL, COST FREE] UMAX (uint,uint); 
18
19         IP FUN [LFTA_LEGAL, COST FREE] UMIN (IP,IP);
20         IP FUN [LFTA_LEGAL, COST FREE] UMAX (IP,IP);
21    
22 ///////////////////////////////////////////////////////////
23 //          conditional functions
24 ///////////////////////////////////////////////////////////
25
26         uint FUN [LFTA_LEGAL, COST FREE] EQ (uint, uint);
27         uint FUN [LFTA_LEGAL, COST FREE] EQ (ullong, ullong);
28         uint FUN [LFTA_LEGAL, COST FREE] GEQ (uint, uint);
29         uint FUN [LFTA_LEGAL, COST FREE] GEQ (ullong, ullong);
30         uint FUN [LFTA_LEGAL, COST FREE] LEQ (uint, uint);
31         uint FUN [LFTA_LEGAL, COST FREE] LEQ (ullong, ullong);
32
33
34 ///////////////////////////////////////////////////////////
35 //          Function for regex matching
36 ///////////////////////////////////////////////////////////
37
38
39 uint FUN [LFTA_LEGAL, COST EXPENSIVE]
40                 str_regex_match( string, string HANDLE);
41         uint FUN [LFTA_LEGAL, COST EXPENSIVE] 
42                 str_partial_regex_match( string, string HANDLE, uint);
43         string FUN [PARTIAL, COST EXPENSIVE] str_extract_regex( string, string HANDLE);
44   
45 ///////////////////////////////////////////////////////////
46 //         Truncating strings        
47 ///////////////////////////////////////////////////////////
48        
49         string FUN [LFTA_LEGAL,PARTIAL,COST FREE] str_truncate (string, uint);
50  
51 ///////////////////////////////////////////////////////////
52 //          Function for casting
53 ///////////////////////////////////////////////////////////
54
55     int FUN [LFTA_LEGAL,COST FREE] non_temporal(int);
56         uint FUN [LFTA_LEGAL,COST FREE] non_temporal(uint);
57         llong FUN [LFTA_LEGAL,COST FREE] non_temporal(llong);
58         ullong FUN [LFTA_LEGAL,COST FREE] non_temporal(ullong);
59
60         int FUN [LFTA_LEGAL,COST FREE]INT(uint);
61         int FUN [LFTA_LEGAL,COST FREE]INT(ullong);
62         int FUN [LFTA_LEGAL,COST FREE]INT(llong);
63  
64         uint FUN [LFTA_LEGAL,COST FREE]UINT(int);
65         uint FUN [LFTA_LEGAL,COST FREE]UINT(ullong);
66         uint FUN [LFTA_LEGAL,COST FREE]UINT(llong);
67         uint FUN [LFTA_LEGAL,COST FREE]UINT(IP);
68
69         float FUN [LFTA_LEGAL,COST FREE] FLOAT(llong);
70         float FUN [LFTA_LEGAL,COST FREE] FLOAT(ullong);
71         float FUN [LFTA_LEGAL,COST FREE] FLOAT(int);
72         float FUN [LFTA_LEGAL,COST FREE] FLOAT(uint);
73
74         ullong FUN [LFTA_LEGAL,COST FREE]ULLONG(uint);
75         ullong FUN [LFTA_LEGAL,COST FREE]ULLONG(int);
76
77 ///////////////////////////////////////////////////////////
78 //          Numeric functions
79 ///////////////////////////////////////////////////////////
80
81         float FUN [LFTA_LEGAL, COST LOW] sqrt(float); 
82
83
84 ///////////////////////////////////////////////////////////
85 //          Convert an IPv4 address 
86 ///////////////////////////////////////////////////////////
87
88
89     uint FUN [PARTIAL,COST HIGH] strtoi(string);
90         IP FUN [PARTIAL,COST HIGH] strtoip(string); 
91
92 //      for constant strings - faster at runtime
93         uint FUN [LFTA_LEGAL,COST LOW] strtoi_c(string HANDLE);
94         IP FUN [LFTA_LEGAL,COST LOW] strtoip_c(string HANDLE); 
95
96
97 ///////////////////////////////////////////////////////////
98 //          Compute running sum
99 ///////////////////////////////////////////////////////////
100
101
102
103     ullong UDAF [RUNNING, SUBAGGR moving_sum_lfta, SUPERAGGR super_moving_sum_udaf ] moving_sum_udaf fstring12 (uint, uint);
104
105         uint EXTR moving_sum moving_sum_udaf moving_sum_extract (uint,uint);
106         uint FUN  [COST LOW] moving_sum_extract(ullong);
107
108         float EXTR moving_sum_exp moving_sum_udaf moving_sum_extract_exp (uint,uint, float);
109         float FUN  [COST LOW]  moving_sum_extract_exp(ullong, float);
110
111         ullong UDAF [RUNNING] super_moving_sum_udaf fstring12 (ullong);
112         ullong UDAF moving_sum_lfta fstring8 (uint, uint);
113
114
115 ///////////////////////////////////////////////////////////
116 //               Compute the average of 
117 //              all positive numbers 
118 ///////////////////////////////////////////////////////////
119
120         float UDAF POSAVG fstring16(float);
121
122
123 ///////////////////////////////////////////////////////////
124 //               Simple average example 
125 ///////////////////////////////////////////////////////////
126
127         float EXTR extr_avg avg_udaf extr_avg_fcn (uint);
128         float FUN extr_avg_fcn (string);
129         string UDAF[SUBAGGR avg_udaf_lfta, SUPERAGGR avg_udaf_hfta] avg_udaf fstring12 (uint);
130         string UDAF avg_udaf_hfta fstring12 (string);
131         string UDAF avg_udaf_lfta fstring12 (uint);
132
133 ///////////////////////////////////////////////////////////
134 //               SAMPLING 
135 ///////////////////////////////////////////////////////////
136
137         fstring100 STATE smart_sampling_state;
138         int SFUN packet_count smart_sampling_state ();
139         float SFUN gamma smart_sampling_state ();
140         int SFUN do_clean_count smart_sampling_state ();
141         int SFUN init_threshold smart_sampling_state ();
142         int SFUN delay smart_sampling_state();
143         int SFUN newly_closed smart_sampling_state();
144
145 ///////////////////////////////////////////////////////////
146 //               Manku Heavy Hitter 
147 ///////////////////////////////////////////////////////////
148
149  
150         fstring20 STATE manku_hh_state;
151         BOOL SFUN local_count manku_hh_state (UINT);
152         int SFUN current_bucket manku_hh_state ();
153
154 ///////////////////////////////////////////////////////////
155 //         Flips approximate quantile
156 ///////////////////////////////////////////////////////////
157
158         uint EXTR quantile_of quant_udaf_hfta0 extr_quant_hfta0_fcn (uint, float);
159         uint  FUN [COST LOW] extr_quant_hfta0_fcn(string, float);
160         uint EXTR median_of quant_udaf_hfta0 extr_med_hfta0_fcn (uint);
161         uint  FUN [COST LOW] extr_med_hfta0_fcn(string);
162         uint EXTR qspace_of quant_udaf_hfta0 extr_quant_hfta0_space (uint);
163         uint  FUN [COST LOW] extr_quant_hfta0_space(string);
164         string UDAF [SUBAGGR quant_udaf_lfta3, SUPERAGGR quant_udaf_hfta3] quant_udaf_hfta0 fstring8 (uint);
165         string UDAF quant_udaf_hfta3 fstring16 (string);
166         string UDAF quant_udaf_lfta3 fstring6600 (uint);
167
168 ///////////////////////////////////////////////////////////
169 //               FIRST and LAST aggregation funciton
170 //      Should be replaced by builtins
171 ///////////////////////////////////////////////////////////
172
173         uint UDAF [RUNNING, SUBAGGR FIRST_lfta, SUPERAGGR FIRST_hfta] FIRST uint (uint);
174         uint UDAF [RUNNING] FIRST_hfta uint (uint);
175         uint UDAF [RUNNING] FIRST_lfta uint (uint);
176
177         ullong UDAF [RUNNING, SUBAGGR FIRST_ULL_lfta, SUPERAGGR FIRST_ULL_hfta] FIRST ullong (ullong);
178         ullong UDAF [RUNNING] FIRST_ULL_hfta ullong (ullong);
179         ullong UDAF [RUNNING] FIRST_ULL_lfta ullong (ullong);
180
181         IP UDAF [RUNNING, SUBAGGR FIRST_lfta, SUPERAGGR FIRST_hfta] FIRST IP (IP);
182         IP UDAF [RUNNING] FIRST_hfta IP (IP);
183         IP UDAF [RUNNING] FIRST_lfta IP (IP);
184
185         string UDAF [RUNNING, SUBAGGR FIRST_STR_lfta, SUPERAGGR FIRST_STR_hfta] FIRST string (string);
186         string UDAF [RUNNING] FIRST_STR_hfta string (string);
187         string UDAF [RUNNING] FIRST_STR_lfta string (string);
188
189         uint UDAF [RUNNING, SUBAGGR LAST_lfta, SUPERAGGR LAST_hfta] LAST uint (uint);
190         uint UDAF [RUNNING] LAST_hfta uint (uint);
191         uint UDAF [RUNNING] LAST_lfta uint (uint);
192
193         ullong UDAF [RUNNING, SUBAGGR LAST_ULL_lfta, SUPERAGGR LAST_ULL_hfta] LAST ullong (ullong);
194         ullong UDAF [RUNNING] LAST_ULL_hfta ullong (ullong);
195         ullong UDAF [RUNNING] LAST_ULL_lfta ullong (ullong);
196
197         IP UDAF [RUNNING, SUBAGGR LAST_lfta, SUPERAGGR LAST_hfta] LAST IP (IP);
198         IP UDAF [RUNNING] LAST_hfta IP (IP);
199         IP UDAF [RUNNING] LAST_lfta IP (IP);
200
201         string UDAF [RUNNING, SUBAGGR LAST_STR_lfta, SUPERAGGR LAST_STR_hfta] LAST string (string);
202         string UDAF [RUNNING] LAST_STR_hfta string (string);
203         string UDAF [RUNNING] LAST_STR_lfta string (string);
204
205 ///////////////////////////////////////////////////////////
206 //               integer array aggregation funciton
207 //      We are going to store 4 values in LFTA in fixed size buffer
208 //  plus one byte for array length (17 bytes total)
209 //  HFTA will combine partial aggregates
210 ///////////////////////////////////////////////////////////
211
212         string UDAF [RUNNING, SUBAGGR running_array_aggr_lfta, SUPERAGGR running_array_aggr_hfta] running_array_aggr string (uint);
213         string UDAF [RUNNING] running_array_aggr_hfta string (string);
214         string UDAF [RUNNING] running_array_aggr_lfta fstring17 (uint);
215