]>
Commit | Line | Data |
---|---|---|
718e3744 | 1 | /* Memory management routine |
2 | Copyright (C) 1998 Kunihiro Ishiguro | |
3 | ||
4 | This file is part of GNU Zebra. | |
5 | ||
6 | GNU Zebra is free software; you can redistribute it and/or modify it | |
7 | under the terms of the GNU General Public License as published by the | |
8 | Free Software Foundation; either version 2, or (at your option) any | |
9 | later version. | |
10 | ||
11 | GNU Zebra is distributed in the hope that it will be useful, but | |
12 | WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 | General Public License for more details. | |
15 | ||
16 | You should have received a copy of the GNU General Public License | |
17 | along with GNU Zebra; see the file COPYING. If not, write to the Free | |
18 | Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | |
19 | 02111-1307, USA. */ | |
20 | ||
21 | #ifndef _ZEBRA_MEMORY_H | |
22 | #define _ZEBRA_MEMORY_H | |
23 | ||
24 | /* #define MEMORY_LOG */ | |
25 | ||
26 | /* For tagging memory, below is the type of the memory. */ | |
27 | enum | |
28 | { | |
29 | MTYPE_TMP = 1, | |
30 | MTYPE_STRVEC, | |
31 | MTYPE_VECTOR, | |
32 | MTYPE_VECTOR_INDEX, | |
33 | MTYPE_LINK_LIST, | |
34 | MTYPE_LINK_NODE, | |
35 | MTYPE_THREAD, | |
36 | MTYPE_THREAD_MASTER, | |
37 | MTYPE_VTY, | |
38 | MTYPE_VTY_HIST, | |
39 | MTYPE_VTY_OUT_BUF, | |
40 | MTYPE_IF, | |
41 | MTYPE_CONNECTED, | |
42 | MTYPE_AS_SEG, | |
43 | MTYPE_AS_STR, | |
44 | MTYPE_AS_PATH, | |
45 | MTYPE_CLUSTER, | |
46 | MTYPE_CLUSTER_VAL, | |
47 | MTYPE_ATTR, | |
48 | MTYPE_TRANSIT, | |
49 | MTYPE_TRANSIT_VAL, | |
50 | MTYPE_BUFFER, | |
51 | MTYPE_BUFFER_DATA, | |
52 | MTYPE_STREAM, | |
53 | MTYPE_STREAM_DATA, | |
54 | MTYPE_STREAM_FIFO, | |
55 | MTYPE_PREFIX, | |
56 | MTYPE_PREFIX_IPV4, | |
57 | MTYPE_PREFIX_IPV6, | |
58 | MTYPE_HASH, | |
59 | MTYPE_HASH_INDEX, | |
60 | MTYPE_HASH_BACKET, | |
718e3744 | 61 | MTYPE_ROUTE_TABLE, |
62 | MTYPE_ROUTE_NODE, | |
63 | MTYPE_ACCESS_LIST, | |
64 | MTYPE_ACCESS_LIST_STR, | |
65 | MTYPE_ACCESS_FILTER, | |
66 | MTYPE_PREFIX_LIST, | |
67 | MTYPE_PREFIX_LIST_STR, | |
68 | MTYPE_PREFIX_LIST_ENTRY, | |
69 | MTYPE_ROUTE_MAP, | |
70 | MTYPE_ROUTE_MAP_NAME, | |
71 | MTYPE_ROUTE_MAP_INDEX, | |
72 | MTYPE_ROUTE_MAP_RULE, | |
73 | MTYPE_ROUTE_MAP_RULE_STR, | |
74 | MTYPE_ROUTE_MAP_COMPILED, | |
75 | ||
76 | MTYPE_RIB, | |
77 | MTYPE_DISTRIBUTE, | |
78 | MTYPE_ZLOG, | |
79 | MTYPE_ZCLIENT, | |
80 | MTYPE_NEXTHOP, | |
81 | MTYPE_RTADV_PREFIX, | |
82 | MTYPE_IF_RMAP, | |
83 | MTYPE_SOCKUNION, | |
84 | MTYPE_STATIC_IPV4, | |
85 | MTYPE_STATIC_IPV6, | |
86 | ||
87 | MTYPE_DESC, | |
88 | MTYPE_OSPF_TOP, | |
89 | MTYPE_OSPF_AREA, | |
90 | MTYPE_OSPF_AREA_RANGE, | |
91 | MTYPE_OSPF_NETWORK, | |
92 | MTYPE_OSPF_NEIGHBOR_STATIC, | |
93 | MTYPE_OSPF_IF, | |
94 | MTYPE_OSPF_NEIGHBOR, | |
95 | MTYPE_OSPF_ROUTE, | |
96 | MTYPE_OSPF_TMP, | |
97 | MTYPE_OSPF_LSA, | |
98 | MTYPE_OSPF_LSA_DATA, | |
99 | MTYPE_OSPF_LSDB, | |
100 | MTYPE_OSPF_PACKET, | |
101 | MTYPE_OSPF_FIFO, | |
102 | MTYPE_OSPF_VERTEX, | |
103 | MTYPE_OSPF_NEXTHOP, | |
104 | MTYPE_OSPF_PATH, | |
105 | MTYPE_OSPF_VL_DATA, | |
106 | MTYPE_OSPF_CRYPT_KEY, | |
107 | MTYPE_OSPF_EXTERNAL_INFO, | |
108 | MTYPE_OSPF_MESSAGE, | |
109 | MTYPE_OSPF_DISTANCE, | |
110 | MTYPE_OSPF_IF_INFO, | |
111 | MTYPE_OSPF_IF_PARAMS, | |
112 | ||
113 | MTYPE_OSPF6_TOP, | |
114 | MTYPE_OSPF6_AREA, | |
115 | MTYPE_OSPF6_IF, | |
116 | MTYPE_OSPF6_NEIGHBOR, | |
117 | MTYPE_OSPF6_ROUTE, | |
118 | MTYPE_OSPF6_PREFIX, | |
119 | MTYPE_OSPF6_MESSAGE, | |
120 | MTYPE_OSPF6_LSA, | |
121 | MTYPE_OSPF6_LSA_SUMMARY, | |
122 | MTYPE_OSPF6_LSDB, | |
123 | MTYPE_OSPF6_VERTEX, | |
124 | MTYPE_OSPF6_SPFTREE, | |
125 | MTYPE_OSPF6_NEXTHOP, | |
126 | MTYPE_OSPF6_EXTERNAL_INFO, | |
127 | MTYPE_OSPF6_OTHER, | |
128 | ||
129 | MTYPE_BGP, | |
130 | MTYPE_BGP_PEER, | |
131 | MTYPE_PEER_GROUP, | |
132 | MTYPE_PEER_DESC, | |
133 | MTYPE_PEER_UPDATE_SOURCE, | |
134 | MTYPE_BGP_STATIC, | |
135 | MTYPE_BGP_AGGREGATE, | |
136 | MTYPE_BGP_CONFED_LIST, | |
137 | MTYPE_BGP_NEXTHOP_CACHE, | |
138 | MTYPE_BGP_DAMP_INFO, | |
139 | MTYPE_BGP_DAMP_ARRAY, | |
140 | MTYPE_BGP_ANNOUNCE, | |
141 | MTYPE_BGP_ATTR_QUEUE, | |
142 | MTYPE_BGP_ROUTE_QUEUE, | |
143 | MTYPE_BGP_DISTANCE, | |
144 | MTYPE_BGP_ROUTE, | |
145 | MTYPE_BGP_TABLE, | |
146 | MTYPE_BGP_NODE, | |
147 | MTYPE_BGP_ADVERTISE_ATTR, | |
148 | MTYPE_BGP_ADVERTISE, | |
149 | MTYPE_BGP_ADJ_IN, | |
150 | MTYPE_BGP_ADJ_OUT, | |
151 | MTYPE_BGP_REGEXP, | |
152 | MTYPE_AS_FILTER, | |
153 | MTYPE_AS_FILTER_STR, | |
154 | MTYPE_AS_LIST, | |
155 | ||
156 | MTYPE_COMMUNITY, | |
157 | MTYPE_COMMUNITY_VAL, | |
158 | MTYPE_COMMUNITY_STR, | |
159 | ||
160 | MTYPE_ECOMMUNITY, | |
161 | MTYPE_ECOMMUNITY_VAL, | |
162 | MTYPE_ECOMMUNITY_STR, | |
163 | ||
164 | /* community-list and extcommunity-list. */ | |
165 | MTYPE_COMMUNITY_LIST_HANDLER, | |
166 | MTYPE_COMMUNITY_LIST, | |
167 | MTYPE_COMMUNITY_LIST_NAME, | |
168 | MTYPE_COMMUNITY_LIST_ENTRY, | |
169 | MTYPE_COMMUNITY_LIST_CONFIG, | |
170 | ||
171 | MTYPE_RIP, | |
172 | MTYPE_RIP_INTERFACE, | |
173 | MTYPE_RIP_DISTANCE, | |
174 | MTYPE_RIP_OFFSET_LIST, | |
175 | MTYPE_RIP_INFO, | |
176 | MTYPE_RIP_PEER, | |
177 | MTYPE_KEYCHAIN, | |
178 | MTYPE_KEY, | |
179 | ||
a94434b6 | 180 | MTYPE_RIPNG, |
181 | MTYPE_RIPNG_ROUTE, | |
182 | MTYPE_RIPNG_AGGREGATE, | |
183 | MTYPE_RIPNG_PEER, | |
184 | MTYPE_RIPNG_OFFSET_LIST, | |
185 | MTYPE_RIPNG_RTE_DATA, | |
186 | ||
718e3744 | 187 | MTYPE_VTYSH_CONFIG, |
188 | MTYPE_VTYSH_CONFIG_LINE, | |
189 | ||
190 | MTYPE_VRF, | |
191 | MTYPE_VRF_NAME, | |
edd7c245 | 192 | |
193 | MTYPE_PRIVS, | |
718e3744 | 194 | |
195 | MTYPE_MAX | |
196 | }; | |
197 | ||
198 | #ifdef MEMORY_LOG | |
199 | #define XMALLOC(mtype, size) \ | |
200 | mtype_zmalloc (__FILE__, __LINE__, (mtype), (size)) | |
201 | #define XCALLOC(mtype, size) \ | |
202 | mtype_zcalloc (__FILE__, __LINE__, (mtype), (size)) | |
203 | #define XREALLOC(mtype, ptr, size) \ | |
204 | mtype_zrealloc (__FILE__, __LINE__, (mtype), (ptr), (size)) | |
205 | #define XFREE(mtype, ptr) \ | |
206 | mtype_zfree (__FILE__, __LINE__, (mtype), (ptr)) | |
207 | #define XSTRDUP(mtype, str) \ | |
208 | mtype_zstrdup (__FILE__, __LINE__, (mtype), (str)) | |
209 | #else | |
210 | #define XMALLOC(mtype, size) zmalloc ((mtype), (size)) | |
211 | #define XCALLOC(mtype, size) zcalloc ((mtype), (size)) | |
212 | #define XREALLOC(mtype, ptr, size) zrealloc ((mtype), (ptr), (size)) | |
213 | #define XFREE(mtype, ptr) zfree ((mtype), (ptr)) | |
214 | #define XSTRDUP(mtype, str) zstrdup ((mtype), (str)) | |
215 | #endif /* MEMORY_LOG */ | |
216 | ||
217 | /* Prototypes of memory function. */ | |
218 | void *zmalloc (int type, size_t size); | |
219 | void *zcalloc (int type, size_t size); | |
220 | void *zrealloc (int type, void *ptr, size_t size); | |
221 | void zfree (int type, void *ptr); | |
222 | char *zstrdup (int type, char *str); | |
223 | ||
224 | void *mtype_zmalloc (const char *file, | |
225 | int line, | |
226 | int type, | |
227 | size_t size); | |
228 | ||
229 | void *mtype_zcalloc (const char *file, | |
230 | int line, | |
231 | int type, | |
232 | size_t num, | |
233 | size_t size); | |
234 | ||
235 | void *mtype_zrealloc (const char *file, | |
236 | int line, | |
237 | int type, | |
238 | void *ptr, | |
239 | size_t size); | |
240 | ||
241 | void mtype_zfree (const char *file, | |
242 | int line, | |
243 | int type, | |
244 | void *ptr); | |
245 | ||
246 | char *mtype_zstrdup (const char *file, | |
247 | int line, | |
248 | int type, | |
249 | char *str); | |
250 | void memory_init (); | |
251 | ||
252 | #endif /* _ZEBRA_MEMORY_H */ |