MiniDLNA update: 1.0.19.1 to 1.0.20
[tomato.git] / release / src / router / zebra / lib / memory.h
blobd490c4556bc6d228ed89eaaef0a34ed72e5f6efb
1 /* Memory management routine
2 Copyright (C) 1998 Kunihiro Ishiguro
4 This file is part of GNU Zebra.
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.
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.
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. */
21 #ifndef _ZEBRA_MEMORY_H
22 #define _ZEBRA_MEMORY_H
24 /* #define MEMORY_LOG */
26 /* For tagging memory, below is the type of the memory. */
27 enum
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_IF_IRDP,
42 MTYPE_CONNECTED,
43 MTYPE_AS_SEG,
44 MTYPE_AS_STR,
45 MTYPE_AS_PATH,
46 MTYPE_CLUSTER,
47 MTYPE_CLUSTER_VAL,
48 MTYPE_ATTR,
49 MTYPE_TRANSIT,
50 MTYPE_TRANSIT_VAL,
51 MTYPE_BUFFER,
52 MTYPE_BUFFER_DATA,
53 MTYPE_STREAM,
54 MTYPE_STREAM_DATA,
55 MTYPE_STREAM_FIFO,
56 MTYPE_PREFIX,
57 MTYPE_PREFIX_IPV4,
58 MTYPE_PREFIX_IPV6,
59 MTYPE_HASH,
60 MTYPE_HASH_INDEX,
61 MTYPE_HASH_BACKET,
62 MTYPE_RIPNG_ROUTE,
63 MTYPE_RIPNG_AGGREGATE,
64 MTYPE_ROUTE_TABLE,
65 MTYPE_ROUTE_NODE,
66 MTYPE_ACCESS_LIST,
67 MTYPE_ACCESS_LIST_STR,
68 MTYPE_ACCESS_FILTER,
69 MTYPE_PREFIX_LIST,
70 MTYPE_PREFIX_LIST_STR,
71 MTYPE_PREFIX_LIST_ENTRY,
72 MTYPE_ROUTE_MAP,
73 MTYPE_ROUTE_MAP_NAME,
74 MTYPE_ROUTE_MAP_INDEX,
75 MTYPE_ROUTE_MAP_RULE,
76 MTYPE_ROUTE_MAP_RULE_STR,
77 MTYPE_ROUTE_MAP_COMPILED,
79 MTYPE_RIB,
80 MTYPE_DISTRIBUTE,
81 MTYPE_ZLOG,
82 MTYPE_ZCLIENT,
83 MTYPE_NEXTHOP,
84 MTYPE_RTADV_PREFIX,
85 MTYPE_IF_RMAP,
86 MTYPE_SOCKUNION,
87 MTYPE_STATIC_IPV4,
88 MTYPE_STATIC_IPV6,
90 MTYPE_DESC,
91 MTYPE_OSPF_TOP,
92 MTYPE_OSPF_AREA,
93 MTYPE_OSPF_AREA_RANGE,
94 MTYPE_OSPF_NETWORK,
95 MTYPE_OSPF_NEIGHBOR_STATIC,
96 MTYPE_OSPF_IF,
97 MTYPE_OSPF_NEIGHBOR,
98 MTYPE_OSPF_ROUTE,
99 MTYPE_OSPF_TMP,
100 MTYPE_OSPF_LSA,
101 MTYPE_OSPF_LSA_DATA,
102 MTYPE_OSPF_LSDB,
103 MTYPE_OSPF_PACKET,
104 MTYPE_OSPF_FIFO,
105 MTYPE_OSPF_VERTEX,
106 MTYPE_OSPF_NEXTHOP,
107 MTYPE_OSPF_PATH,
108 MTYPE_OSPF_VL_DATA,
109 MTYPE_OSPF_CRYPT_KEY,
110 MTYPE_OSPF_EXTERNAL_INFO,
111 MTYPE_OSPF_MESSAGE,
112 MTYPE_OSPF_DISTANCE,
113 MTYPE_OSPF_IF_INFO,
114 MTYPE_OSPF_IF_PARAMS,
116 MTYPE_OSPF6_TOP,
117 MTYPE_OSPF6_AREA,
118 MTYPE_OSPF6_IF,
119 MTYPE_OSPF6_NEIGHBOR,
120 MTYPE_OSPF6_ROUTE,
121 MTYPE_OSPF6_PREFIX,
122 MTYPE_OSPF6_MESSAGE,
123 MTYPE_OSPF6_LSA,
124 MTYPE_OSPF6_LSA_SUMMARY,
125 MTYPE_OSPF6_LSDB,
126 MTYPE_OSPF6_VERTEX,
127 MTYPE_OSPF6_SPFTREE,
128 MTYPE_OSPF6_NEXTHOP,
129 MTYPE_OSPF6_EXTERNAL_INFO,
130 MTYPE_OSPF6_OTHER,
132 MTYPE_BGP,
133 MTYPE_BGP_PEER,
134 MTYPE_PEER_GROUP,
135 MTYPE_PEER_DESC,
136 MTYPE_PEER_UPDATE_SOURCE,
137 MTYPE_BGP_STATIC,
138 MTYPE_BGP_AGGREGATE,
139 MTYPE_BGP_CONFED_LIST,
140 MTYPE_BGP_NEXTHOP_CACHE,
141 MTYPE_BGP_DAMP_INFO,
142 MTYPE_BGP_DAMP_ARRAY,
143 MTYPE_BGP_ANNOUNCE,
144 MTYPE_BGP_ATTR_QUEUE,
145 MTYPE_BGP_ROUTE_QUEUE,
146 MTYPE_BGP_DISTANCE,
147 MTYPE_BGP_ROUTE,
148 MTYPE_BGP_TABLE,
149 MTYPE_BGP_NODE,
150 MTYPE_BGP_ADVERTISE_ATTR,
151 MTYPE_BGP_ADVERTISE,
152 MTYPE_BGP_ADJ_IN,
153 MTYPE_BGP_ADJ_OUT,
154 MTYPE_BGP_REGEXP,
155 MTYPE_AS_FILTER,
156 MTYPE_AS_FILTER_STR,
157 MTYPE_AS_LIST,
159 MTYPE_COMMUNITY,
160 MTYPE_COMMUNITY_VAL,
161 MTYPE_COMMUNITY_STR,
163 MTYPE_ECOMMUNITY,
164 MTYPE_ECOMMUNITY_VAL,
165 MTYPE_ECOMMUNITY_STR,
167 /* community-list and extcommunity-list. */
168 MTYPE_COMMUNITY_LIST_HANDLER,
169 MTYPE_COMMUNITY_LIST,
170 MTYPE_COMMUNITY_LIST_NAME,
171 MTYPE_COMMUNITY_LIST_ENTRY,
172 MTYPE_COMMUNITY_LIST_CONFIG,
174 MTYPE_RIP,
175 MTYPE_RIP_INTERFACE,
176 MTYPE_RIP_DISTANCE,
177 MTYPE_RIP_OFFSET_LIST,
178 MTYPE_RIP_INFO,
179 MTYPE_RIP_PEER,
180 MTYPE_KEYCHAIN,
181 MTYPE_KEY,
183 MTYPE_VTYSH_CONFIG,
184 MTYPE_VTYSH_CONFIG_LINE,
186 MTYPE_VRF,
187 MTYPE_VRF_NAME,
189 MTYPE_MAX
192 #ifdef MEMORY_LOG
193 #define XMALLOC(mtype, size) \
194 mtype_zmalloc (__FILE__, __LINE__, (mtype), (size))
195 #define XCALLOC(mtype, size) \
196 mtype_zcalloc (__FILE__, __LINE__, (mtype), (size))
197 #define XREALLOC(mtype, ptr, size) \
198 mtype_zrealloc (__FILE__, __LINE__, (mtype), (ptr), (size))
199 #define XFREE(mtype, ptr) \
200 mtype_zfree (__FILE__, __LINE__, (mtype), (ptr))
201 #define XSTRDUP(mtype, str) \
202 mtype_zstrdup (__FILE__, __LINE__, (mtype), (str))
203 #else
204 #define XMALLOC(mtype, size) zmalloc ((mtype), (size))
205 #define XCALLOC(mtype, size) zcalloc ((mtype), (size))
206 #define XREALLOC(mtype, ptr, size) zrealloc ((mtype), (ptr), (size))
207 #define XFREE(mtype, ptr) zfree ((mtype), (ptr))
208 #define XSTRDUP(mtype, str) zstrdup ((mtype), (str))
209 #endif /* MEMORY_LOG */
211 /* Prototypes of memory function. */
212 void *zmalloc (int type, size_t size);
213 void *zcalloc (int type, size_t size);
214 void *zrealloc (int type, void *ptr, size_t size);
215 void zfree (int type, void *ptr);
216 char *zstrdup (int type, char *str);
218 void *mtype_zmalloc (const char *file,
219 int line,
220 int type,
221 size_t size);
223 void *mtype_zcalloc (const char *file,
224 int line,
225 int type,
226 size_t num,
227 size_t size);
229 void *mtype_zrealloc (const char *file,
230 int line,
231 int type,
232 void *ptr,
233 size_t size);
235 void mtype_zfree (const char *file,
236 int line,
237 int type,
238 void *ptr);
240 char *mtype_zstrdup (const char *file,
241 int line,
242 int type,
243 char *str);
244 void memory_init ();
246 #endif /* _ZEBRA_MEMORY_H */