Initial commit
[com/gs-lite.git] / include / hfta / hfta_sfun.h
1 /* ------------------------------------------------
2  Copyright 2014 AT&T Intellectual Property
3  Licensed under the Apache License, Version 2.0 (the "License");
4  you may not use this file except in compliance with the License.
5  You may obtain a copy of the License at
6  
7  http://www.apache.org/licenses/LICENSE-2.0
8  
9  Unless required by applicable law or agreed to in writing, software
10  distributed under the License is distributed on an "AS IS" BASIS,
11  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  See the License for the specific language governing permissions and
13  limitations under the License.
14  ------------------------------------------- */
15
16 #ifndef _HFTA_SFUN_H_INCLUDED_
17 #define _HFTA_SFUN_H_INCLUDED_
18
19 #include "vstring.h"
20 #include "host_tuple.h"
21
22 ////////////////////////////////////////////////////////////////
23 ///             Dummy state and functions, for testing
24 ////////////////////////////////////////////////////////////////////
25
26 void _sfun_state_destroy_Foo(char(*)[20] );
27 void _sfun_state_dirty_init_Foo(char(*)[20],char(*)[20], int);
28 void _sfun_state_final_init_Foo(char(*)[20], int);
29 void _sfun_state_clean_init_Foo(char(*)[20]);
30 unsigned int Bar(char(*)[20], int, unsigned int);
31
32 int packet_count(void *s, int curr_num_samples);
33 double gamma(void *s, int curr_num_samples);
34 int init_threshold(void *s, int curr_num_samples);
35 int do_clean_count(void *s, int curr_num_samples);
36 int delay(void *s, int curr_num_samples);
37 int newly_closed(void *s, int curr_num_samples);
38
39 ////////////////////////////////////////////////////
40 ///             Adaptive smart sampling
41 ////////////////////////////////////////////////////////////////////
42 void _sfun_state_clean_init_smart_sampling_state(void *s);
43 void _sfun_state_dirty_init_smart_sampling_state(void *s_new, void *s_old, int curr_num_samples);
44 void _sfun_state_final_init_smart_sampling_state(void *s, int curr_num_samples);
45 void _sfun_state_destroy_smart_sampling_state(void *s){};
46
47 int ssample(void *s,int curr_num_samples, unsigned long long int len, unsigned int sample_size);
48 int ssample(void *s,int curr_num_samples, int len, unsigned int sample_size){
49         return ssample(s,curr_num_samples,(unsigned long long int)len,sample_size);
50 }
51 int ssample(void *s,int curr_num_samples, unsigned int len, unsigned int sample_size){
52         return ssample(s,curr_num_samples,(unsigned long long int)len,sample_size);
53 }
54
55 int ssfinal_clean(void *s, int curr_num_sample, unsigned long long int glens);
56 int ssfinal_clean(void *s, int curr_num_samples, int glen){
57         return ssfinal_clean(s, curr_num_samples, (unsigned long long int)glen);
58 }
59 int ssfinal_clean(void *s, int curr_num_samples, unsigned int glen){
60         return ssfinal_clean(s, curr_num_samples, (unsigned long long int)glen);
61 }
62
63 int ssdo_clean(void *s, int curr_num_samples);
64
65 int ssclean_with(void *s,int curr_num_sample, unsigned long long int glens);
66 int ssclean_with(void *s,int curr_num_sample, unsigned int glens){
67         return ssclean_with(s, curr_num_sample, (unsigned long long int)glens);
68 }
69 int ssclean_with(void *s,int curr_num_sample, int glens){
70         return ssclean_with(s, curr_num_sample, (unsigned long long int)glens);
71 }
72
73 double ssthreshold(void *s, int curr_num_sample);
74 int count_distinct(void *s, int curr_num_samples);
75 int packet_count(void *s, int curr_num_samples);
76 double gamma(void *s, int curr_num_samples);
77 int init_threshold(void *s, int curr_num_samples);
78 int do_clean_count(void *s, int curr_num_samples);
79 int delay(void *s, int curr_num_samples);
80 int newly_closed(void *s, int curr_num_samples);
81
82 //flow sampling
83 int flow_ssdo_clean(void *s, int curr_num_samples,unsigned int maxtime);
84
85 int flow_ssample(void *s,int curr_num_samples, unsigned int sample_size);
86
87 int flow_ssclean_with(void *s,int curr_num_sample, unsigned int ccondition,  unsigned int delay,  unsigned int maxtime, unsigned long long int glens);
88 int flow_ssclean_with(void *s,int curr_num_sample, unsigned int ccondition, unsigned int delay, unsigned int maxtime, unsigned int glens){
89         return flow_ssclean_with(s, curr_num_sample, ccondition, delay, maxtime, (unsigned long long int)glens);
90 }
91 int flow_ssclean_with(void *s,int curr_num_sample, unsigned int ccondition, unsigned int delay, unsigned int maxtime, int glens){
92         return flow_ssclean_with(s, curr_num_sample, ccondition, delay, maxtime, (unsigned long long int)glens);
93 }
94
95 int flow_ssfinal_clean(void *s, int curr_num_sample, unsigned int ccondition, unsigned int delay, unsigned int maxtime, unsigned long long int glens);
96 int flow_ssfinal_clean(void *s, int curr_num_samples,unsigned int ccondition, unsigned int delay, unsigned int maxtime, int glen){
97         return flow_ssfinal_clean(s, curr_num_samples, ccondition, delay, maxtime, (unsigned long long int)glen);
98 }
99 int flow_ssfinal_clean(void *s, int curr_num_samples,unsigned int ccondition, unsigned int delay, unsigned int maxtime, unsigned int glen){
100         return flow_ssfinal_clean(s, curr_num_samples, ccondition, delay, maxtime, (unsigned long long int)glen);
101 }
102
103 ////////////////////////////////////////////////////////////////////
104 ///             Manku-Motwani Heavy Hitters
105 ////////////////////////////////////////////////////////////////////
106 void _sfun_state_clean_init_manku_hh_state(void *s);
107 void _sfun_state_dirty_init_manku_hh_state(void *s_new, void *s_old, int curr_num_samples);
108 void _sfun_state_final_init_manku_hh_state(void *s, int curr_num_samples);
109 void _sfun_state_destroy_manku_hh_state(void *s){};
110
111 /////////////////////////////////////////////////////////////////////
112
113 #endif