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