1 ///////////////////////////////////////////////////////////
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];
9 ///////////////////////////////////////////////////////////
11 ///////////////////////////////////////////////////////////
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);
19 IP FUN [LFTA_LEGAL, COST FREE] UMIN (IP,IP);
20 IP FUN [LFTA_LEGAL, COST FREE] UMAX (IP,IP);
22 ///////////////////////////////////////////////////////////
23 // conditional functions
24 ///////////////////////////////////////////////////////////
26 uint FUN [LFTA_LEGAL, COST FREE] EQ (uint, uint);
27 uint FUN [LFTA_LEGAL, COST FREE] EQ (int, int);
28 uint FUN [LFTA_LEGAL, COST FREE] EQ (ullong, ullong);
29 uint FUN [LFTA_LEGAL, COST FREE] GEQ (uint, uint);
30 uint FUN [LFTA_LEGAL, COST FREE] GEQ (int, int);
31 uint FUN [LFTA_LEGAL, COST FREE] GEQ (ullong, ullong);
32 uint FUN [LFTA_LEGAL, COST FREE] LEQ (uint, uint);
33 uint FUN [LFTA_LEGAL, COST FREE] LEQ (int, int);
34 uint FUN [LFTA_LEGAL, COST FREE] LEQ (ullong, ullong);
37 ///////////////////////////////////////////////////////////
38 // Function for regex matching
39 ///////////////////////////////////////////////////////////
42 uint FUN [LFTA_LEGAL, COST EXPENSIVE]
43 str_regex_match( string, string HANDLE);
44 uint FUN [LFTA_LEGAL, COST EXPENSIVE]
45 str_partial_regex_match( string, string HANDLE, uint);
46 string FUN [PARTIAL, COST EXPENSIVE] str_extract_regex( string, string HANDLE);
48 ///////////////////////////////////////////////////////////
50 ///////////////////////////////////////////////////////////
52 string FUN [LFTA_LEGAL,PARTIAL,COST FREE] str_truncate (string, uint);
54 ///////////////////////////////////////////////////////////
55 // Function for casting
56 ///////////////////////////////////////////////////////////
58 int FUN [LFTA_LEGAL,COST FREE] non_temporal(int);
59 uint FUN [LFTA_LEGAL,COST FREE] non_temporal(uint);
60 llong FUN [LFTA_LEGAL,COST FREE] non_temporal(llong);
61 ullong FUN [LFTA_LEGAL,COST FREE] non_temporal(ullong);
63 int FUN [LFTA_LEGAL,COST FREE]INT(uint);
64 int FUN [LFTA_LEGAL,COST FREE]INT(ullong);
65 int FUN [LFTA_LEGAL,COST FREE]INT(llong);
67 uint FUN [LFTA_LEGAL,COST FREE]UINT(int);
68 uint FUN [LFTA_LEGAL,COST FREE]UINT(ullong);
69 uint FUN [LFTA_LEGAL,COST FREE]UINT(llong);
70 uint FUN [LFTA_LEGAL,COST FREE]UINT(IP);
72 float FUN [LFTA_LEGAL,COST FREE] FLOAT(llong);
73 float FUN [LFTA_LEGAL,COST FREE] FLOAT(ullong);
74 float FUN [LFTA_LEGAL,COST FREE] FLOAT(int);
75 float FUN [LFTA_LEGAL,COST FREE] FLOAT(uint);
77 ullong FUN [LFTA_LEGAL,COST FREE]ULLONG(uint);
78 ullong FUN [LFTA_LEGAL,COST FREE]ULLONG(int);
80 ///////////////////////////////////////////////////////////
82 ///////////////////////////////////////////////////////////
84 float FUN [LFTA_LEGAL, COST LOW] sqrt(float);
87 ///////////////////////////////////////////////////////////
88 // Convert an IPv4 address
89 ///////////////////////////////////////////////////////////
92 uint FUN [PARTIAL,COST HIGH] strtoi(string);
93 IP FUN [PARTIAL,COST HIGH] strtoip(string);
95 // for constant strings - faster at runtime
96 uint FUN [LFTA_LEGAL,COST LOW] strtoi_c(string HANDLE);
97 IP FUN [LFTA_LEGAL,COST LOW] strtoip_c(string HANDLE);
100 ///////////////////////////////////////////////////////////
101 // Compute running sum
102 ///////////////////////////////////////////////////////////
106 ullong UDAF [RUNNING, SUBAGGR moving_sum_lfta, SUPERAGGR super_moving_sum_udaf ] moving_sum_udaf fstring12 (uint, uint);
108 uint EXTR moving_sum moving_sum_udaf moving_sum_extract (uint,uint);
109 uint FUN [COST LOW] moving_sum_extract(ullong);
111 float EXTR moving_sum_exp moving_sum_udaf moving_sum_extract_exp (uint,uint, float);
112 float FUN [COST LOW] moving_sum_extract_exp(ullong, float);
114 ullong UDAF [RUNNING] super_moving_sum_udaf fstring12 (ullong);
115 ullong UDAF moving_sum_lfta fstring8 (uint, uint);
118 ///////////////////////////////////////////////////////////
119 // Compute the average of
120 // all positive numbers
121 ///////////////////////////////////////////////////////////
123 float UDAF POSAVG fstring16(float);
126 ///////////////////////////////////////////////////////////
127 // Simple average example
128 ///////////////////////////////////////////////////////////
130 float EXTR extr_avg avg_udaf extr_avg_fcn (uint);
131 float FUN extr_avg_fcn (string);
132 string UDAF[SUBAGGR avg_udaf_lfta, SUPERAGGR avg_udaf_hfta] avg_udaf fstring12 (uint);
133 string UDAF avg_udaf_hfta fstring12 (string);
134 string UDAF avg_udaf_lfta fstring12 (uint);
136 ///////////////////////////////////////////////////////////
138 ///////////////////////////////////////////////////////////
140 fstring100 STATE smart_sampling_state;
141 int SFUN packet_count smart_sampling_state ();
142 float SFUN gamma smart_sampling_state ();
143 int SFUN do_clean_count smart_sampling_state ();
144 int SFUN init_threshold smart_sampling_state ();
145 int SFUN delay smart_sampling_state();
146 int SFUN newly_closed smart_sampling_state();
148 ///////////////////////////////////////////////////////////
149 // Manku Heavy Hitter
150 ///////////////////////////////////////////////////////////
153 fstring20 STATE manku_hh_state;
154 BOOL SFUN local_count manku_hh_state (UINT);
155 int SFUN current_bucket manku_hh_state ();
157 ///////////////////////////////////////////////////////////
158 // Flips approximate quantile
159 ///////////////////////////////////////////////////////////
161 uint EXTR quantile_of quant_udaf_hfta0 extr_quant_hfta0_fcn (uint, float);
162 uint FUN [COST LOW] extr_quant_hfta0_fcn(string, float);
163 uint EXTR median_of quant_udaf_hfta0 extr_med_hfta0_fcn (uint);
164 uint FUN [COST LOW] extr_med_hfta0_fcn(string);
165 uint EXTR qspace_of quant_udaf_hfta0 extr_quant_hfta0_space (uint);
166 uint FUN [COST LOW] extr_quant_hfta0_space(string);
167 string UDAF [SUBAGGR quant_udaf_lfta3, SUPERAGGR quant_udaf_hfta3] quant_udaf_hfta0 fstring16 (uint);
168 string UDAF quant_udaf_hfta3 fstring16 (string);
169 string UDAF quant_udaf_lfta3 fstring6600 (uint);
171 ///////////////////////////////////////////////////////////
172 // FIRST and LAST aggregation funciton
173 // Should be replaced by builtins
174 ///////////////////////////////////////////////////////////
176 uint UDAF [RUNNING, SUBAGGR FIRST_lfta, SUPERAGGR FIRST_hfta] FIRST uint (uint);
177 uint UDAF [RUNNING] FIRST_hfta uint (uint);
178 uint UDAF [RUNNING] FIRST_lfta uint (uint);
180 ullong UDAF [RUNNING, SUBAGGR FIRST_ULL_lfta, SUPERAGGR FIRST_ULL_hfta] FIRST ullong (ullong);
181 ullong UDAF [RUNNING] FIRST_ULL_hfta ullong (ullong);
182 ullong UDAF [RUNNING] FIRST_ULL_lfta ullong (ullong);
184 IP UDAF [RUNNING, SUBAGGR FIRST_lfta, SUPERAGGR FIRST_hfta] FIRST IP (IP);
185 IP UDAF [RUNNING] FIRST_hfta IP (IP);
186 IP UDAF [RUNNING] FIRST_lfta IP (IP);
188 string UDAF [RUNNING, SUBAGGR FIRST_STR_lfta, SUPERAGGR FIRST_STR_hfta] FIRST string (string);
189 string UDAF [RUNNING] FIRST_STR_hfta string (string);
190 string UDAF [RUNNING] FIRST_STR_lfta string (string);
192 uint UDAF [RUNNING, SUBAGGR LAST_lfta, SUPERAGGR LAST_hfta] LAST uint (uint);
193 uint UDAF [RUNNING] LAST_hfta uint (uint);
194 uint UDAF [RUNNING] LAST_lfta uint (uint);
196 ullong UDAF [RUNNING, SUBAGGR LAST_ULL_lfta, SUPERAGGR LAST_ULL_hfta] LAST ullong (ullong);
197 ullong UDAF [RUNNING] LAST_ULL_hfta ullong (ullong);
198 ullong UDAF [RUNNING] LAST_ULL_lfta ullong (ullong);
200 IP UDAF [RUNNING, SUBAGGR LAST_lfta, SUPERAGGR LAST_hfta] LAST IP (IP);
201 IP UDAF [RUNNING] LAST_hfta IP (IP);
202 IP UDAF [RUNNING] LAST_lfta IP (IP);
204 string UDAF [RUNNING, SUBAGGR LAST_STR_lfta, SUPERAGGR LAST_STR_hfta] LAST string (string);
205 string UDAF [RUNNING] LAST_STR_hfta string (string);
206 string UDAF [RUNNING] LAST_STR_lfta string (string);
208 ///////////////////////////////////////////////////////////
209 // integer array aggregation funciton
210 // We are going to store 4 values in LFTA in fixed size buffer
211 // plus one byte for array length (17 bytes total)
212 // HFTA will combine partial aggregates
213 ///////////////////////////////////////////////////////////
215 string UDAF [RUNNING, SUBAGGR running_array_aggr_lfta, SUPERAGGR running_array_aggr_hfta] running_array_aggr string (uint);
216 string UDAF [RUNNING] running_array_aggr_hfta string (string);
217 string UDAF [RUNNING] running_array_aggr_lfta fstring17 (uint);