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 (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);
34 ///////////////////////////////////////////////////////////
35 // Function for regex matching
36 ///////////////////////////////////////////////////////////
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);
45 ///////////////////////////////////////////////////////////
47 ///////////////////////////////////////////////////////////
49 string FUN [LFTA_LEGAL,PARTIAL,COST FREE] str_truncate (string, uint);
51 ///////////////////////////////////////////////////////////
52 // Function for casting
53 ///////////////////////////////////////////////////////////
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);
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);
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);
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);
74 ullong FUN [LFTA_LEGAL,COST FREE]ULLONG(uint);
75 ullong FUN [LFTA_LEGAL,COST FREE]ULLONG(int);
77 ///////////////////////////////////////////////////////////
79 ///////////////////////////////////////////////////////////
81 float FUN [LFTA_LEGAL, COST LOW] sqrt(float);
84 ///////////////////////////////////////////////////////////
85 // Convert an IPv4 address
86 ///////////////////////////////////////////////////////////
89 uint FUN [PARTIAL,COST HIGH] strtoi(string);
90 IP FUN [PARTIAL,COST HIGH] strtoip(string);
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);
97 ///////////////////////////////////////////////////////////
98 // Compute running sum
99 ///////////////////////////////////////////////////////////
103 ullong UDAF [RUNNING, SUBAGGR moving_sum_lfta, SUPERAGGR super_moving_sum_udaf ] moving_sum_udaf fstring12 (uint, uint);
105 uint EXTR moving_sum moving_sum_udaf moving_sum_extract (uint,uint);
106 uint FUN [COST LOW] moving_sum_extract(ullong);
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);
111 ullong UDAF [RUNNING] super_moving_sum_udaf fstring12 (ullong);
112 ullong UDAF moving_sum_lfta fstring8 (uint, uint);
115 ///////////////////////////////////////////////////////////
116 // Compute the average of
117 // all positive numbers
118 ///////////////////////////////////////////////////////////
120 float UDAF POSAVG fstring16(float);
123 ///////////////////////////////////////////////////////////
124 // Simple average example
125 ///////////////////////////////////////////////////////////
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);
133 ///////////////////////////////////////////////////////////
135 ///////////////////////////////////////////////////////////
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();
145 ///////////////////////////////////////////////////////////
146 // Manku Heavy Hitter
147 ///////////////////////////////////////////////////////////
150 fstring20 STATE manku_hh_state;
151 BOOL SFUN local_count manku_hh_state (UINT);
152 int SFUN current_bucket manku_hh_state ();
154 ///////////////////////////////////////////////////////////
155 // Flips approximate quantile
156 ///////////////////////////////////////////////////////////
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);
168 ///////////////////////////////////////////////////////////
169 // FIRST and LAST aggregation funciton
170 // Should be replaced by builtins
171 ///////////////////////////////////////////////////////////
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);
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);
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);
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);
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);
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);
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);
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);
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 ///////////////////////////////////////////////////////////
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);