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