mirror of
				https://git.proxmox.com/git/mirror_frr
				synced 2025-11-04 06:38:04 +00:00 
			
		
		
		
	* memory.h: Fix prototype for memory_init(). * memory.c: Declare many functions and data structures static instead of global. Fix prototype for memory_init().
		
			
				
	
	
		
			274 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			274 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* Memory management routine
 | 
						|
   Copyright (C) 1998 Kunihiro Ishiguro
 | 
						|
 | 
						|
This file is part of GNU Zebra.
 | 
						|
 | 
						|
GNU Zebra is free software; you can redistribute it and/or modify it
 | 
						|
under the terms of the GNU General Public License as published by the
 | 
						|
Free Software Foundation; either version 2, or (at your option) any
 | 
						|
later version.
 | 
						|
 | 
						|
GNU Zebra is distributed in the hope that it will be useful, but
 | 
						|
WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
						|
General Public License for more details.
 | 
						|
 | 
						|
You should have received a copy of the GNU General Public License
 | 
						|
along with GNU Zebra; see the file COPYING.  If not, write to the Free
 | 
						|
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 | 
						|
02111-1307, USA.  */
 | 
						|
 | 
						|
#ifndef _ZEBRA_MEMORY_H
 | 
						|
#define _ZEBRA_MEMORY_H
 | 
						|
 | 
						|
/* #define MEMORY_LOG */
 | 
						|
 | 
						|
/* For tagging memory, below is the type of the memory. */
 | 
						|
enum
 | 
						|
{
 | 
						|
  MTYPE_TMP = 1,
 | 
						|
  MTYPE_STRVEC,
 | 
						|
  MTYPE_VECTOR,
 | 
						|
  MTYPE_VECTOR_INDEX,
 | 
						|
  MTYPE_LINK_LIST,
 | 
						|
  MTYPE_LINK_NODE,
 | 
						|
  MTYPE_THREAD,
 | 
						|
  MTYPE_THREAD_MASTER,
 | 
						|
  MTYPE_THREAD_STATS,
 | 
						|
  MTYPE_THREAD_FUNCNAME,
 | 
						|
  MTYPE_VTY,
 | 
						|
  MTYPE_VTY_HIST,
 | 
						|
  MTYPE_VTY_OUT_BUF,
 | 
						|
  MTYPE_IF,
 | 
						|
  MTYPE_IF_IRDP,
 | 
						|
  MTYPE_CONNECTED,
 | 
						|
  MTYPE_AS_SEG,
 | 
						|
  MTYPE_AS_STR,
 | 
						|
  MTYPE_AS_PATH,
 | 
						|
  MTYPE_CLUSTER,
 | 
						|
  MTYPE_CLUSTER_VAL,
 | 
						|
  MTYPE_ATTR,
 | 
						|
  MTYPE_TRANSIT,
 | 
						|
  MTYPE_TRANSIT_VAL,
 | 
						|
  MTYPE_BUFFER,
 | 
						|
  MTYPE_BUFFER_DATA,
 | 
						|
  MTYPE_STREAM,
 | 
						|
  MTYPE_STREAM_DATA,
 | 
						|
  MTYPE_STREAM_FIFO,
 | 
						|
  MTYPE_PREFIX,
 | 
						|
  MTYPE_PREFIX_IPV4,
 | 
						|
  MTYPE_PREFIX_IPV6,
 | 
						|
  MTYPE_HASH,
 | 
						|
  MTYPE_HASH_INDEX,
 | 
						|
  MTYPE_HASH_BACKET,
 | 
						|
  MTYPE_ROUTE_TABLE,
 | 
						|
  MTYPE_ROUTE_NODE,
 | 
						|
  MTYPE_ACCESS_LIST,
 | 
						|
  MTYPE_ACCESS_LIST_STR,
 | 
						|
  MTYPE_ACCESS_FILTER,
 | 
						|
  MTYPE_PREFIX_LIST,
 | 
						|
  MTYPE_PREFIX_LIST_STR,
 | 
						|
  MTYPE_PREFIX_LIST_ENTRY,
 | 
						|
  MTYPE_ROUTE_MAP,
 | 
						|
  MTYPE_ROUTE_MAP_NAME,
 | 
						|
  MTYPE_ROUTE_MAP_INDEX,
 | 
						|
  MTYPE_ROUTE_MAP_RULE,
 | 
						|
  MTYPE_ROUTE_MAP_RULE_STR,
 | 
						|
  MTYPE_ROUTE_MAP_COMPILED,
 | 
						|
 | 
						|
  MTYPE_RIB,
 | 
						|
  
 | 
						|
  MTYPE_DISTRIBUTE,
 | 
						|
  MTYPE_DISTRIBUTE_IFNAME,
 | 
						|
  MTYPE_ZLOG,
 | 
						|
  MTYPE_ZCLIENT,
 | 
						|
  MTYPE_NEXTHOP,
 | 
						|
  MTYPE_RTADV_PREFIX,
 | 
						|
  MTYPE_IF_RMAP,
 | 
						|
  MTYPE_SOCKUNION,
 | 
						|
  MTYPE_STATIC_IPV4,
 | 
						|
  MTYPE_STATIC_IPV6,
 | 
						|
 | 
						|
  MTYPE_DESC,
 | 
						|
  MTYPE_OSPF_TOP,
 | 
						|
  MTYPE_OSPF_AREA,
 | 
						|
  MTYPE_OSPF_AREA_RANGE,
 | 
						|
  MTYPE_OSPF_NETWORK,
 | 
						|
  MTYPE_OSPF_NEIGHBOR_STATIC,
 | 
						|
  MTYPE_OSPF_IF,
 | 
						|
  MTYPE_OSPF_NEIGHBOR,
 | 
						|
  MTYPE_OSPF_ROUTE,
 | 
						|
  MTYPE_OSPF_TMP,
 | 
						|
  MTYPE_OSPF_LSA,
 | 
						|
  MTYPE_OSPF_LSA_DATA,
 | 
						|
  MTYPE_OSPF_LSDB,
 | 
						|
  MTYPE_OSPF_PACKET,
 | 
						|
  MTYPE_OSPF_FIFO,
 | 
						|
  MTYPE_OSPF_VERTEX,
 | 
						|
  MTYPE_OSPF_NEXTHOP,
 | 
						|
  MTYPE_OSPF_PATH,
 | 
						|
  MTYPE_OSPF_VL_DATA,
 | 
						|
  MTYPE_OSPF_CRYPT_KEY,
 | 
						|
  MTYPE_OSPF_EXTERNAL_INFO,
 | 
						|
  MTYPE_OSPF_MESSAGE,
 | 
						|
  MTYPE_OSPF_DISTANCE,
 | 
						|
  MTYPE_OSPF_IF_INFO,
 | 
						|
  MTYPE_OSPF_IF_PARAMS,
 | 
						|
 | 
						|
  MTYPE_OSPF6_TOP,
 | 
						|
  MTYPE_OSPF6_AREA,
 | 
						|
  MTYPE_OSPF6_IF,
 | 
						|
  MTYPE_OSPF6_NEIGHBOR,
 | 
						|
  MTYPE_OSPF6_ROUTE,
 | 
						|
  MTYPE_OSPF6_PREFIX,
 | 
						|
  MTYPE_OSPF6_MESSAGE,
 | 
						|
  MTYPE_OSPF6_LSA,
 | 
						|
  MTYPE_OSPF6_LSA_SUMMARY,
 | 
						|
  MTYPE_OSPF6_LSDB,
 | 
						|
  MTYPE_OSPF6_VERTEX,
 | 
						|
  MTYPE_OSPF6_SPFTREE,
 | 
						|
  MTYPE_OSPF6_NEXTHOP,
 | 
						|
  MTYPE_OSPF6_EXTERNAL_INFO,
 | 
						|
  MTYPE_OSPF6_OTHER,
 | 
						|
 | 
						|
  
 | 
						|
  MTYPE_ISIS,
 | 
						|
  MTYPE_ISIS_TMP,
 | 
						|
  MTYPE_ISIS_CIRCUIT,
 | 
						|
  MTYPE_ISIS_LSP,
 | 
						|
  MTYPE_ISIS_ADJACENCY,
 | 
						|
  MTYPE_ISIS_AREA,
 | 
						|
  MTYPE_ISIS_AREA_ADDR,
 | 
						|
  MTYPE_ISIS_TLV,
 | 
						|
  MTYPE_ISIS_DYNHN,
 | 
						|
  MTYPE_ISIS_SPFTREE,
 | 
						|
  MTYPE_ISIS_VERTEX,
 | 
						|
  MTYPE_ISIS_ROUTE_INFO,
 | 
						|
  MTYPE_ISIS_NEXTHOP,
 | 
						|
  MTYPE_ISIS_NEXTHOP6,
 | 
						|
 | 
						|
  MTYPE_BGP,
 | 
						|
  MTYPE_BGP_PEER,
 | 
						|
  MTYPE_PEER_GROUP,
 | 
						|
  MTYPE_PEER_DESC,
 | 
						|
  MTYPE_PEER_UPDATE_SOURCE,
 | 
						|
  MTYPE_BGP_STATIC,
 | 
						|
  MTYPE_BGP_AGGREGATE,
 | 
						|
  MTYPE_BGP_CONFED_LIST,
 | 
						|
  MTYPE_BGP_NEXTHOP_CACHE,
 | 
						|
  MTYPE_BGP_DAMP_INFO,
 | 
						|
  MTYPE_BGP_DAMP_ARRAY,
 | 
						|
  MTYPE_BGP_ANNOUNCE,
 | 
						|
  MTYPE_BGP_ATTR_QUEUE,
 | 
						|
  MTYPE_BGP_ROUTE_QUEUE,
 | 
						|
  MTYPE_BGP_DISTANCE,
 | 
						|
  MTYPE_BGP_ROUTE,
 | 
						|
  MTYPE_BGP_TABLE,
 | 
						|
  MTYPE_BGP_NODE,
 | 
						|
  MTYPE_BGP_ADVERTISE_ATTR,
 | 
						|
  MTYPE_BGP_ADVERTISE,
 | 
						|
  MTYPE_BGP_ADJ_IN,
 | 
						|
  MTYPE_BGP_ADJ_OUT,
 | 
						|
  MTYPE_BGP_REGEXP,
 | 
						|
  MTYPE_AS_FILTER,
 | 
						|
  MTYPE_AS_FILTER_STR,
 | 
						|
  MTYPE_AS_LIST,
 | 
						|
 | 
						|
  MTYPE_COMMUNITY,
 | 
						|
  MTYPE_COMMUNITY_VAL,
 | 
						|
  MTYPE_COMMUNITY_STR,
 | 
						|
 | 
						|
  MTYPE_ECOMMUNITY,
 | 
						|
  MTYPE_ECOMMUNITY_VAL,
 | 
						|
  MTYPE_ECOMMUNITY_STR,
 | 
						|
 | 
						|
  /* community-list and extcommunity-list.  */
 | 
						|
  MTYPE_COMMUNITY_LIST_HANDLER,
 | 
						|
  MTYPE_COMMUNITY_LIST,
 | 
						|
  MTYPE_COMMUNITY_LIST_NAME,
 | 
						|
  MTYPE_COMMUNITY_LIST_ENTRY,
 | 
						|
  MTYPE_COMMUNITY_LIST_CONFIG,
 | 
						|
 | 
						|
  MTYPE_RIP,
 | 
						|
  MTYPE_RIP_INTERFACE,
 | 
						|
  MTYPE_RIP_DISTANCE,
 | 
						|
  MTYPE_RIP_OFFSET_LIST,
 | 
						|
  MTYPE_RIP_INFO,
 | 
						|
  MTYPE_RIP_PEER,
 | 
						|
  MTYPE_KEYCHAIN,
 | 
						|
  MTYPE_KEY,
 | 
						|
 | 
						|
  MTYPE_RIPNG,
 | 
						|
  MTYPE_RIPNG_ROUTE,
 | 
						|
  MTYPE_RIPNG_AGGREGATE,
 | 
						|
  MTYPE_RIPNG_PEER,
 | 
						|
  MTYPE_RIPNG_OFFSET_LIST,
 | 
						|
  MTYPE_RIPNG_RTE_DATA,
 | 
						|
 | 
						|
  MTYPE_VTYSH_CONFIG,
 | 
						|
  MTYPE_VTYSH_CONFIG_LINE,
 | 
						|
 | 
						|
  MTYPE_VRF,
 | 
						|
  MTYPE_VRF_NAME,
 | 
						|
  
 | 
						|
  MTYPE_PRIVS,
 | 
						|
 | 
						|
  MTYPE_MAX
 | 
						|
};
 | 
						|
 | 
						|
#ifdef MEMORY_LOG
 | 
						|
#define XMALLOC(mtype, size) \
 | 
						|
  mtype_zmalloc (__FILE__, __LINE__, (mtype), (size))
 | 
						|
#define XCALLOC(mtype, size) \
 | 
						|
  mtype_zcalloc (__FILE__, __LINE__, (mtype), (size))
 | 
						|
#define XREALLOC(mtype, ptr, size)  \
 | 
						|
  mtype_zrealloc (__FILE__, __LINE__, (mtype), (ptr), (size))
 | 
						|
#define XFREE(mtype, ptr) \
 | 
						|
  mtype_zfree (__FILE__, __LINE__, (mtype), (ptr))
 | 
						|
#define XSTRDUP(mtype, str) \
 | 
						|
  mtype_zstrdup (__FILE__, __LINE__, (mtype), (str))
 | 
						|
#else
 | 
						|
#define XMALLOC(mtype, size)       zmalloc ((mtype), (size))
 | 
						|
#define XCALLOC(mtype, size)       zcalloc ((mtype), (size))
 | 
						|
#define XREALLOC(mtype, ptr, size) zrealloc ((mtype), (ptr), (size))
 | 
						|
#define XFREE(mtype, ptr)          zfree ((mtype), (ptr))
 | 
						|
#define XSTRDUP(mtype, str)        zstrdup ((mtype), (str))
 | 
						|
#endif /* MEMORY_LOG */
 | 
						|
 | 
						|
/* Prototypes of memory function. */
 | 
						|
void *zmalloc (int type, size_t size);
 | 
						|
void *zcalloc (int type, size_t size);
 | 
						|
void *zrealloc (int type, void *ptr, size_t size);
 | 
						|
void  zfree (int type, void *ptr);
 | 
						|
char *zstrdup (int type, const char *str);
 | 
						|
 | 
						|
void *mtype_zmalloc (const char *file,
 | 
						|
		     int line,
 | 
						|
		     int type,
 | 
						|
		     size_t size);
 | 
						|
 | 
						|
void *mtype_zcalloc (const char *file,
 | 
						|
		     int line,
 | 
						|
		     int type,
 | 
						|
		     size_t num,
 | 
						|
		     size_t size);
 | 
						|
 | 
						|
void *mtype_zrealloc (const char *file,
 | 
						|
		     int line,
 | 
						|
		     int type, 
 | 
						|
		     void *ptr,
 | 
						|
		     size_t size);
 | 
						|
 | 
						|
void mtype_zfree (const char *file,
 | 
						|
		  int line,
 | 
						|
		  int type,
 | 
						|
		  void *ptr);
 | 
						|
 | 
						|
char *mtype_zstrdup (const char *file,
 | 
						|
		     int line,
 | 
						|
		     int type,
 | 
						|
		     const char *str);
 | 
						|
void memory_init (void);
 | 
						|
 | 
						|
#endif /* _ZEBRA_MEMORY_H */
 |