1 
2 /*-------------------------------------------------------------*/
3 #if NETWIB_DEBUG_LEAK_NEEDED==1
4 netwib_err netwib_debug_leak_init(void);
5 netwib_err netwib_debug_leak_close(void);
6 
7 typedef enum {
8   NETWIB_DEBUG_LEAKTYPE_MEM = 1,
9   NETWIB_DEBUG_LEAKTYPE_FD,
10   NETWIB_DEBUG_LEAKTYPE_BUF,
11   NETWIB_DEBUG_LEAKTYPE_RING,
12   NETWIB_DEBUG_LEAKTYPE_RINGI,
13   NETWIB_DEBUG_LEAKTYPE_HASH,
14   NETWIB_DEBUG_LEAKTYPE_HASHI,
15   NETWIB_DEBUG_LEAKTYPE_ARRAY,
16   NETWIB_DEBUG_LEAKTYPE_DIR,
17   NETWIB_DEBUG_LEAKTYPE_IO,
18   NETWIB_DEBUG_LEAKTYPE_THREAD,
19   NETWIB_DEBUG_LEAKTYPE_THREAD_MUTEX,
20   NETWIB_DEBUG_LEAKTYPE_THREAD_RWLOCK,
21   NETWIB_DEBUG_LEAKTYPE_THREAD_COND,
22   NETWIB_DEBUG_LEAKTYPE_THREAD_TSD,
23   NETWIB_DEBUG_LEAKTYPE_WAIT,
24   NETWIB_DEBUG_LEAKTYPE_ETHS,
25   NETWIB_DEBUG_LEAKTYPE_IPS,
26   NETWIB_DEBUG_LEAKTYPE_PORTS,
27   NETWIB_DEBUG_LEAKTYPE_ETHS_INDEX,
28   NETWIB_DEBUG_LEAKTYPE_IPS_INDEX,
29   NETWIB_DEBUG_LEAKTYPE_PORTS_INDEX,
30   NETWIB_DEBUG_LEAKTYPE_CONF_DEVICES_INDEX,
31   NETWIB_DEBUG_LEAKTYPE_CONF_IP_INDEX,
32   NETWIB_DEBUG_LEAKTYPE_CONF_ARPCACHE_INDEX,
33   NETWIB_DEBUG_LEAKTYPE_CONF_ROUTES_INDEX,
34   NETWIB_DEBUG_LEAKTYPE_ENDENUM
35 } netwib_debug_leaktype;
36 netwib_err netwib_debug_leak_add(netwib_debug_leaktype type,
37                                  netwib_constptr infoptr,
38                                  netwib_uint32 infoint);
39 netwib_err netwib_debug_leak_del(netwib_debug_leaktype type,
40                                  netwib_bool useptr,
41                                  netwib_constptr infoptr,
42                                  netwib_bool useint,
43                                  netwib_uint32 infoint);
44 netwib_err netwib_debug_leak_valid(netwib_debug_leaktype type,
45                                    netwib_bool useptr,
46                                    netwib_constptr infoptr,
47                                    netwib_bool useint,
48                                    netwib_uint32 infoint);
49 
50 netwib_err netwib_debug_leak_report(void);
51 
52 #else
53  /*used in netwib without #if...*/
54  #define netwib_debug_leak_init() NETWIB_ERR_OK;
55  #define netwib_debug_leak_close() NETWIB_ERR_OK;
56  #define netwib_debug_leak_report() NETWIB_ERR_OK;
57 #endif
58 
59 /*-------------------------------------------------------------*/
60 #if NETWIB_DEBUG_LEAK_NEEDED==1
61 netwib_err netwib_debug_leak_add_generic(netwib_constptr ptr,
62                                          netwib_debug_leaktype leaktype);
63 netwib_err netwib_debug_leak_del_generic(netwib_constptr ptr,
64                                          netwib_debug_leaktype leaktype);
65 netwib_err netwib_debug_leak_valid_generic(netwib_constptr ptr,
66                                            netwib_debug_leaktype leaktype);
67 #endif
68 
69 /*-------------------------------------------------------------*/
70 #if NETWIB_DEBUG_LEAK_NEEDED==1
71 netwib_err netwib_debug_leak_add_mem(netwib_uint32 allocsize,
72                                      netwib_constptr ptr);
73 netwib_err netwib_debug_leak_del_mem(netwib_constptr ptr);
74 netwib_err netwib_debug_leak_valid_mem(netwib_constptr ptr);
75 #endif
76 
77 /*-------------------------------------------------------------*/
78 #if NETWIB_DEBUG_LEAK_NEEDED==1
79 netwib_err netwib_debug_leak_add_fd(netwib_uint32 fd);
80 netwib_err netwib_debug_leak_del_fd(netwib_uint32 fd);
81 netwib_err netwib_debug_leak_valid_fd(netwib_uint32 fd);
82 #endif
83 
84 /*-------------------------------------------------------------*/
85 #if NETWIB_DEBUG_LEAK_NEEDED==1
86 #define NETWIB_DEBUG_LEAK_ID_BUF_IGNORE 99
87 netwib_err netwib_debug_leak_id_buf(netwib_uint32 *pleakid);
88 netwib_err netwib_debug_leak_add_buf(netwib_constptr ptr,
89                                      netwib_uint32 leakid);
90 netwib_err netwib_debug_leak_del_buf(netwib_constptr ptr,
91                                      netwib_uint32 leakid);
92 netwib_err netwib_debug_leak_valid_buf(netwib_constptr ptr,
93                                        netwib_uint32 leakid);
94 #endif
95 
96 /*-------------------------------------------------------------*/
97 #if NETWIB_DEBUG_LEAK_NEEDED==1
98  #define netwib_debug_leak_add_ring(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_RING)
99  #define netwib_debug_leak_del_ring(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_RING)
100  #define netwib_debug_leak_valid_ring(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_RING)
101  #define netwib_debug_leak_add_ringi(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_RINGI)
102  #define netwib_debug_leak_del_ringi(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_RINGI)
103  #define netwib_debug_leak_valid_ringi(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_RINGI)
104 #endif
105 
106 /*-------------------------------------------------------------*/
107 #if NETWIB_DEBUG_LEAK_NEEDED==1
108  #define netwib_debug_leak_add_hash(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_HASH)
109  #define netwib_debug_leak_del_hash(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_HASH)
110  #define netwib_debug_leak_valid_hash(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_HASH)
111  #define netwib_debug_leak_add_hashi(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_HASHI)
112  #define netwib_debug_leak_del_hashi(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_HASHI)
113  #define netwib_debug_leak_valid_hashi(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_HASHI)
114 #endif
115 
116 /*-------------------------------------------------------------*/
117 #if NETWIB_DEBUG_LEAK_NEEDED==1
118  #define netwib_debug_leak_add_array(ptr) netwib_debug_leak_add_generic((ptr)->opaque,NETWIB_DEBUG_LEAKTYPE_ARRAY)
119  #define netwib_debug_leak_del_array(ptr) netwib_debug_leak_del_generic((ptr)->opaque,NETWIB_DEBUG_LEAKTYPE_ARRAY)
120  #define netwib_debug_leak_valid_array(ptr) netwib_debug_leak_valid_generic((ptr)->opaque,NETWIB_DEBUG_LEAKTYPE_ARRAY)
121 #endif
122 
123 /*-------------------------------------------------------------*/
124 #if NETWIB_DEBUG_LEAK_NEEDED==1
125  #define netwib_debug_leak_add_dir(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_DIR)
126  #define netwib_debug_leak_del_dir(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_DIR)
127  #define netwib_debug_leak_valid_dir(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_DIR)
128 #endif
129 
130 /*-------------------------------------------------------------*/
131 #if NETWIB_DEBUG_LEAK_NEEDED==1
132  #define netwib_debug_leak_add_io(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_IO)
133  #define netwib_debug_leak_del_io(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_IO)
134  #define netwib_debug_leak_valid_io(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_IO)
135 #endif
136 
137 /*-------------------------------------------------------------*/
138 #if NETWIB_DEBUG_LEAK_NEEDED==1
139  #define netwib_debug_leak_add_thread(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD)
140  #define netwib_debug_leak_del_thread(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD)
141  #define netwib_debug_leak_valid_thread(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD)
142 #endif
143 
144 /*-------------------------------------------------------------*/
145 #if NETWIB_DEBUG_LEAK_NEEDED==1
146  #define netwib_debug_leak_add_thread_mutex(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_MUTEX)
147  #define netwib_debug_leak_del_thread_mutex(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_MUTEX)
148  #define netwib_debug_leak_valid_thread_mutex(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_MUTEX)
149 #endif
150 
151 /*-------------------------------------------------------------*/
152 #if NETWIB_DEBUG_LEAK_NEEDED==1
153  #define netwib_debug_leak_add_thread_rwlock(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_RWLOCK)
154  #define netwib_debug_leak_del_thread_rwlock(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_RWLOCK)
155  #define netwib_debug_leak_valid_thread_rwlock(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_RWLOCK)
156 #endif
157 
158 /*-------------------------------------------------------------*/
159 #if NETWIB_DEBUG_LEAK_NEEDED==1
160  #define netwib_debug_leak_add_thread_cond(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_COND)
161  #define netwib_debug_leak_del_thread_cond(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_COND)
162  #define netwib_debug_leak_valid_thread_cond(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_COND)
163 #endif
164 
165 /*-------------------------------------------------------------*/
166 #if NETWIB_DEBUG_LEAK_NEEDED==1
167  #define netwib_debug_leak_add_thread_tsd(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_TSD)
168  #define netwib_debug_leak_del_thread_tsd(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_TSD)
169  #define netwib_debug_leak_valid_thread_tsd(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_TSD)
170 #endif
171 
172 /*-------------------------------------------------------------*/
173 #if NETWIB_DEBUG_LEAK_NEEDED==1
174  #define netwib_debug_leak_add_wait(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_WAIT)
175  #define netwib_debug_leak_del_wait(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_WAIT)
176  #define netwib_debug_leak_valid_wait(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_WAIT)
177 #endif
178 
179 /*-------------------------------------------------------------*/
180 #if NETWIB_DEBUG_LEAK_NEEDED==1
181  #define netwib_debug_leak_add_eths(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_ETHS)
182  #define netwib_debug_leak_del_eths(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_ETHS)
183  #define netwib_debug_leak_valid_eths(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_ETHS)
184 #endif
185 
186 /*-------------------------------------------------------------*/
187 #if NETWIB_DEBUG_LEAK_NEEDED==1
188  #define netwib_debug_leak_add_ips(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_IPS)
189  #define netwib_debug_leak_del_ips(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_IPS)
190  #define netwib_debug_leak_valid_ips(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_IPS)
191 #endif
192 
193 /*-------------------------------------------------------------*/
194 #if NETWIB_DEBUG_LEAK_NEEDED==1
195  #define netwib_debug_leak_add_ports(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_PORTS)
196  #define netwib_debug_leak_del_ports(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_PORTS)
197  #define netwib_debug_leak_valid_ports(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_PORTS)
198 #endif
199 
200 /*-------------------------------------------------------------*/
201 #if NETWIB_DEBUG_LEAK_NEEDED==1
202  #define netwib_debug_leak_add_eths_index(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_ETHS_INDEX)
203  #define netwib_debug_leak_del_eths_index(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_ETHS_INDEX)
204  #define netwib_debug_leak_valid_eths_index(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_ETHS_INDEX)
205 #endif
206 
207 /*-------------------------------------------------------------*/
208 #if NETWIB_DEBUG_LEAK_NEEDED==1
209  #define netwib_debug_leak_add_ips_index(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_IPS_INDEX)
210  #define netwib_debug_leak_del_ips_index(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_IPS_INDEX)
211  #define netwib_debug_leak_valid_ips_index(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_IPS_INDEX)
212 #endif
213 
214 /*-------------------------------------------------------------*/
215 #if NETWIB_DEBUG_LEAK_NEEDED==1
216  #define netwib_debug_leak_add_ports_index(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_PORTS_INDEX)
217  #define netwib_debug_leak_del_ports_index(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_PORTS_INDEX)
218  #define netwib_debug_leak_valid_ports_index(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_PORTS_INDEX)
219 #endif
220 
221 /*-------------------------------------------------------------*/
222 #if NETWIB_DEBUG_LEAK_NEEDED==1
223  #define netwib_debug_leak_add_conf_devices_index(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_DEVICES_INDEX)
224  #define netwib_debug_leak_del_conf_devices_index(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_DEVICES_INDEX)
225  #define netwib_debug_leak_valid_conf_devices_index(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_DEVICES_INDEX)
226 #endif
227 
228 /*-------------------------------------------------------------*/
229 #if NETWIB_DEBUG_LEAK_NEEDED==1
230  #define netwib_debug_leak_add_conf_ip_index(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_IP_INDEX)
231  #define netwib_debug_leak_del_conf_ip_index(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_IP_INDEX)
232  #define netwib_debug_leak_valid_conf_ip_index(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_IP_INDEX)
233 #endif
234 
235 /*-------------------------------------------------------------*/
236 #if NETWIB_DEBUG_LEAK_NEEDED==1
237  #define netwib_debug_leak_add_conf_arpcache_index(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_ARPCACHE_INDEX)
238  #define netwib_debug_leak_del_conf_arpcache_index(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_ARPCACHE_INDEX)
239  #define netwib_debug_leak_valid_conf_arpcache_index(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_ARPCACHE_INDEX)
240 #endif
241 
242 /*-------------------------------------------------------------*/
243 #if NETWIB_DEBUG_LEAK_NEEDED==1
244  #define netwib_debug_leak_add_conf_routes_index(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_ROUTES_INDEX)
245  #define netwib_debug_leak_del_conf_routes_index(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_ROUTES_INDEX)
246  #define netwib_debug_leak_valid_conf_routes_index(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_ROUTES_INDEX)
247 #endif
248