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