I'm not a big fan of #if 0 or #if 1's introduced with this patch. Is there someway we can mitigate them?
thanks! donald On Wed, Feb 24, 2016 at 12:26 AM, David Lamparter < [email protected]> wrote: > Move over to the new allocation counting added in the previous commit. > > (This commit is mostly mechanical.) > > Signed-off-by: David Lamparter <[email protected]> > --- > bgpd/bgp_main.c | 1 + > bgpd/bgp_vty.c | 1 + > isisd/isis_main.c | 1 + > isisd/isis_redist.c | 1 - > lib/Makefile.am | 6 +- > lib/memory.h | 4 +- > lib/memory_vty.c | 268 +--------------------- > lib/memory_vty.h | 64 +----- > lib/memtypes.awk | 87 ------- > lib/memtypes.c | 542 > +++++++++++++++++++++----------------------- > lib/memtypes.pl | 6 + > ospf6d/ospf6_main.c | 1 + > ospfclient/ospf_apiclient.c | 2 + > ospfclient/ospf_apiclient.h | 2 - > ospfd/ospf_main.c | 1 + > ospfd/ospf_opaque.c | 9 +- > ospfd/ospf_te.c | 5 +- > pimd/pim_main.c | 1 + > ripd/rip_main.c | 1 + > ripngd/ripng_main.c | 1 + > tests/common-cli.c | 1 + > tests/main.c | 1 + > tests/test-buffer.c | 1 + > tests/test-privs.c | 1 + > vtysh/vtysh_main.c | 1 + > zebra/main.c | 1 + > zebra/test_main.c | 1 + > 27 files changed, 305 insertions(+), 706 deletions(-) > delete mode 100644 lib/memtypes.awk > create mode 100755 lib/memtypes.pl > > diff --git a/bgpd/bgp_main.c b/bgpd/bgp_main.c > index 11c73ce..25669a0 100644 > --- a/bgpd/bgp_main.c > +++ b/bgpd/bgp_main.c > @@ -27,6 +27,7 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, > Boston, MA > #include "thread.h" > #include <lib/version.h> > #include "memory.h" > +#include "memory_vty.h" > #include "prefix.h" > #include "log.h" > #include "privs.h" > diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c > index 6db3dcb..a2d72ff 100644 > --- a/bgpd/bgp_vty.c > +++ b/bgpd/bgp_vty.c > @@ -29,6 +29,7 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, > Boston, MA > #include "thread.h" > #include "log.h" > #include "memory.h" > +#include "memory_vty.h" > #include "hash.h" > #include "filter.h" > > diff --git a/isisd/isis_main.c b/isisd/isis_main.c > index 3a73087..1c3323e 100644 > --- a/isisd/isis_main.c > +++ b/isisd/isis_main.c > @@ -29,6 +29,7 @@ > #include "command.h" > #include "vty.h" > #include "memory.h" > +#include "memory_vty.h" > #include "stream.h" > #include "if.h" > #include "privs.h" > diff --git a/isisd/isis_redist.c b/isisd/isis_redist.c > index 552613a..4a84d51 100644 > --- a/isisd/isis_redist.c > +++ b/isisd/isis_redist.c > @@ -24,7 +24,6 @@ > #include "if.h" > #include "linklist.h" > #include "memory.h" > -#include "memtypes.h" > #include "prefix.h" > #include "routemap.h" > #include "stream.h" > diff --git a/lib/Makefile.am b/lib/Makefile.am > index f77b5a7..7456cc6 100644 > --- a/lib/Makefile.am > +++ b/lib/Makefile.am > @@ -39,12 +39,12 @@ noinst_HEADERS = \ > EXTRA_DIST = \ > regex.c regex-gnu.h \ > queue.h \ > - memtypes.awk \ > + memtypes.pl \ > route_types.pl route_types.txt \ > gitversion.pl > > -memtypes.h: $(srcdir)/memtypes.c $(srcdir)/memtypes.awk > - ($(GAWK) -f $(srcdir)/memtypes.awk $(srcdir)/memtypes.c > $@) > +memtypes.h: $(srcdir)/memtypes.c $(srcdir)/memtypes.pl > + @PERL@ $(srcdir)/memtypes.pl < $(srcdir)/memtypes.c > $@ > > route_types.h: $(srcdir)/route_types.txt $(srcdir)/route_types.pl > @PERL@ $(srcdir)/route_types.pl < $(srcdir)/route_types.txt > $@ > diff --git a/lib/memory.h b/lib/memory.h > index 1ef411f..56af4a4 100644 > --- a/lib/memory.h > +++ b/lib/memory.h > @@ -147,7 +147,7 @@ extern void *qstrdup (struct memtype *mt, const char > *str) > __attribute__ ((malloc, nonnull (1) _RET_NONNULL)); > extern void qfree (struct memtype *mt, void *ptr); > > -#if 0 > +#if 1 > #define XMALLOC(mtype, size) qmalloc(mtype, size) > #define XCALLOC(mtype, size) qcalloc(mtype, size) > #define XREALLOC(mtype, ptr, size) qrealloc(mtype, ptr, size) > @@ -198,4 +198,6 @@ extern int qmem_walk (qmem_walk_fn *func, void *arg); > > extern void memory_oom (size_t size, const char *name); > > +#include "memtypes.h" > + > #endif /* _QUAGGA_MEMORY_H */ > diff --git a/lib/memory_vty.c b/lib/memory_vty.c > index 5e0b8af..e1c08ce 100644 > --- a/lib/memory_vty.c > +++ b/lib/memory_vty.c > @@ -28,265 +28,17 @@ > > #include "log.h" > #include "memory.h" > - > -static void alloc_inc (int); > -static void alloc_dec (int); > -static void log_memstats(int log_priority); > - > -static const struct message mstr [] = > -{ > - { MTYPE_THREAD, "thread" }, > - { MTYPE_THREAD_MASTER, "thread_master" }, > - { MTYPE_VECTOR, "vector" }, > - { MTYPE_VECTOR_INDEX, "vector_index" }, > - { MTYPE_IF, "interface" }, > - { 0, NULL }, > -}; > - > -/* Fatal memory allocation error occured. */ > -static void __attribute__ ((noreturn)) > -zerror (const char *fname, int type, size_t size) > -{ > - zlog_err ("%s : can't allocate memory for `%s' size %d: %s\n", > - fname, lookup (mstr, type), (int) size, safe_strerror(errno)); > - log_memstats(LOG_WARNING); > - /* N.B. It might be preferable to call zlog_backtrace_sigsafe here, > since > - that function should definitely be safe in an OOM condition. But > - unfortunately zlog_backtrace_sigsafe does not support syslog logging > at > - this time... */ > - zlog_backtrace(LOG_WARNING); > - abort(); > -} > - > -/* > - * Allocate memory of a given size, to be tracked by a given type. > - * Effects: Returns a pointer to usable memory. If memory cannot > - * be allocated, aborts execution. > - */ > -void * > -zmalloc (int type, size_t size) > -{ > - void *memory; > - > - memory = malloc (size); > - > - if (memory == NULL) > - zerror ("malloc", type, size); > - > - alloc_inc (type); > - > - return memory; > -} > - > -/* > - * Allocate memory as in zmalloc, and also clear the memory. > - */ > -void * > -zcalloc (int type, size_t size) > -{ > - void *memory; > - > - memory = calloc (1, size); > - > - if (memory == NULL) > - zerror ("calloc", type, size); > - > - alloc_inc (type); > - > - return memory; > -} > - > -/* > - * Given a pointer returned by zmalloc or zcalloc, free it and > - * return a pointer to a new size, basically acting like realloc(). > - * Requires: ptr was returned by zmalloc, zcalloc, or zrealloc with the > - * same type. > - * Effects: Returns a pointer to the new memory, or aborts. > - */ > -void * > -zrealloc (int type, void *ptr, size_t size) > -{ > - void *memory; > - > - if (ptr == NULL) /* is really alloc */ > - return zcalloc(type, size); > - > - memory = realloc (ptr, size); > - if (memory == NULL) > - zerror ("realloc", type, size); > - if (ptr == NULL) > - alloc_inc (type); > - > - return memory; > -} > - > -/* > - * Free memory allocated by z*alloc or zstrdup. > - * Requires: ptr was returned by zmalloc, zcalloc, or zrealloc with the > - * same type. > - * Effects: The memory is freed and may no longer be referenced. > - */ > -void > -zfree (int type, void *ptr) > -{ > - if (ptr != NULL) > - { > - alloc_dec (type); > - free (ptr); > - } > -} > - > -/* > - * Duplicate a string, counting memory usage by type. > - * Effects: The string is duplicated, and the return value must > - * eventually be passed to zfree with the same type. The function will > - * succeed or abort. > - */ > -char * > -zstrdup (int type, const char *str) > -{ > - void *dup; > - > - dup = strdup (str); > - if (dup == NULL) > - zerror ("strdup", type, strlen (str)); > - alloc_inc (type); > - return dup; > -} > - > -#ifdef MEMORY_LOG > -static struct > -{ > - const char *name; > - long alloc; > - unsigned long t_malloc; > - unsigned long c_malloc; > - unsigned long t_calloc; > - unsigned long c_calloc; > - unsigned long t_realloc; > - unsigned long t_free; > - unsigned long c_strdup; > -} mstat [MTYPE_MAX]; > - > -static void > -mtype_log (char *func, void *memory, const char *file, int line, int type) > -{ > - zlog_debug ("%s: %s %p %s %d", func, lookup (mstr, type), memory, file, > line); > -} > - > -void * > -mtype_zmalloc (const char *file, int line, int type, size_t size) > -{ > - void *memory; > - > - mstat[type].c_malloc++; > - mstat[type].t_malloc++; > - > - memory = zmalloc (type, size); > - mtype_log ("zmalloc", memory, file, line, type); > - > - return memory; > -} > - > -void * > -mtype_zcalloc (const char *file, int line, int type, size_t size) > -{ > - void *memory; > - > - mstat[type].c_calloc++; > - mstat[type].t_calloc++; > - > - memory = zcalloc (type, size); > - mtype_log ("xcalloc", memory, file, line, type); > - > - return memory; > -} > - > -void * > -mtype_zrealloc (const char *file, int line, int type, void *ptr, size_t > size) > -{ > - void *memory; > - > - /* Realloc need before allocated pointer. */ > - mstat[type].t_realloc++; > - > - memory = zrealloc (type, ptr, size); > - > - mtype_log ("xrealloc", memory, file, line, type); > - > - return memory; > -} > - > -/* Important function. */ > -void > -mtype_zfree (const char *file, int line, int type, void *ptr) > -{ > - mstat[type].t_free++; > - > - mtype_log ("xfree", ptr, file, line, type); > - > - zfree (type, ptr); > -} > - > -char * > -mtype_zstrdup (const char *file, int line, int type, const char *str) > -{ > - char *memory; > - > - mstat[type].c_strdup++; > - > - memory = zstrdup (type, str); > - > - mtype_log ("xstrdup", memory, file, line, type); > - > - return memory; > -} > -#else > -static struct > -{ > - char *name; > - long alloc; > -} mstat [MTYPE_MAX]; > -#endif /* MEMORY_LOG */ > - > -/* Increment allocation counter. */ > -static void > -alloc_inc (int type) > -{ > - mstat[type].alloc++; > -} > - > -/* Decrement allocation counter. */ > -static void > -alloc_dec (int type) > -{ > - mstat[type].alloc--; > -} > +#include "memory_vty.h" > > /* Looking up memory status from vty interface. */ > #include "vector.h" > #include "vty.h" > #include "command.h" > > -static void > -log_memstats(int pri) > -{ > - struct mlist *ml; > - > - for (ml = mlists; ml->list; ml++) > - { > - struct memory_list *m; > - > - zlog (NULL, pri, "Memory utilization in module %s:", ml->name); > - for (m = ml->list; m->index >= 0; m++) > - if (m->index && mstat[m->index].alloc) > - zlog (NULL, pri, " %-30s: %10ld", m->format, > mstat[m->index].alloc); > - } > -} > - > void > log_memstats_stderr (const char *prefix) > { > +#if 0 > struct mlist *ml; > struct memory_list *m; > int i; > @@ -323,8 +75,10 @@ log_memstats_stderr (const char *prefix) > fprintf (stderr, > "%s: memstats: No remaining tracked memory utilization.\n", > prefix); > +#endif > } > > +#if 0 > static void > show_separator(struct vty *vty) > { > @@ -353,6 +107,7 @@ show_memory_vty (struct vty *vty, struct memory_list > *list) > } > return needsep; > } > +#endif > > #ifdef HAVE_MALLINFO > static int > @@ -419,19 +174,22 @@ DEFUN (show_memory, > "Show running system information\n" > "Memory statistics\n") > { > - struct mlist *ml; > int needsep = 0; > > #ifdef HAVE_MALLINFO > needsep = show_memory_mallinfo (vty); > #endif /* HAVE_MALLINFO */ > - > + > + (void) needsep; > +#if 0 > + struct mlist *ml; > for (ml = mlists; ml->list; ml++) > { > if (needsep) > show_separator (vty); > needsep = show_memory_vty (vty, ml->list); > } > +#endif > > qmem_walk(qmem_walker, vty); > return CMD_SUCCESS; > @@ -497,9 +255,3 @@ mtype_memstr (char *buf, size_t len, unsigned long > bytes) > > return buf; > } > - > -unsigned long > -mtype_stats_alloc (int type) > -{ > - return mstat[type].alloc; > -} > diff --git a/lib/memory_vty.h b/lib/memory_vty.h > index 81af411..d2410d7 100644 > --- a/lib/memory_vty.h > +++ b/lib/memory_vty.h > @@ -21,73 +21,11 @@ Software Foundation, Inc., 59 Temple Place - Suite > 330, Boston, MA > #ifndef _ZEBRA_MEMORY_CLI_H > #define _ZEBRA_MEMORY_CLI_H > > -/* For pretty printing of memory allocate information. */ > -struct memory_list > -{ > - int index; > - const char *format; > -}; > +#include "memory.h" > > -struct mlist { > - struct memory_list *list; > - const char *name; > -}; > - > -#include "lib/memtypes.h" > - > -extern struct mlist mlists[]; > - > -/* #define MEMORY_LOG */ > -#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) \ > - do { \ > - mtype_zfree (__FILE__, __LINE__, (mtype), (ptr)); \ > - ptr = NULL; } \ > - while (0) > -#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) do { \ > - zfree ((mtype), (ptr)); \ > - ptr = NULL; } \ > - while (0) > -#define XSTRDUP(mtype, str) zstrdup ((mtype), (str)) > -#endif /* MEMORY_LOG */ > - > -/* Prototypes of memory function. */ > -extern void *zmalloc (int type, size_t size); > -extern void *zcalloc (int type, size_t size); > -extern void *zrealloc (int type, void *ptr, size_t size); > -extern void zfree (int type, void *ptr); > -extern char *zstrdup (int type, const char *str); > - > -extern void *mtype_zmalloc (const char *file, int line, int type, size_t > size); > - > -extern void *mtype_zcalloc (const char *file, int line, int type, size_t > size); > - > -extern void *mtype_zrealloc (const char *file, int line, int type, void > *ptr, > - size_t size); > - > -extern void mtype_zfree (const char *file, int line, int type, > - void *ptr); > - > -extern char *mtype_zstrdup (const char *file, int line, int type, > - const char *str); > extern void memory_init (void); > extern void log_memstats_stderr (const char *); > > -/* return number of allocations outstanding for the type */ > -extern unsigned long mtype_stats_alloc (int); > - > /* Human friendly string for given byte count */ > #define MTYPE_MEMSTR_LEN 20 > extern const char *mtype_memstr (char *, size_t, unsigned long); > diff --git a/lib/memtypes.awk b/lib/memtypes.awk > deleted file mode 100644 > index bd13327..0000000 > --- a/lib/memtypes.awk > +++ /dev/null > @@ -1,87 +0,0 @@ > -### > -# Copyright (C) Paul Jakma 2005 > -# > -# This file is part of Quagga. > -# > -# Quagga 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. > -# > -# Quagga 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 Quagga; see the file COPYING. If not, write to the Free > -# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA > -# 02111-1307, USA. > -### > -# > -# Scan a file of memory definitions (see eg memtypes.c) and generate > -# a corresponding header file with an enum of the MTYPE's and declarations > -# for the struct memory_list arrays > -# > -# struct memory_list's must be declared as: > -# '\nstruct memory_list memory_list_<name>[] .....' > -# > -# Each MTYPE_ within the definition must the second token on the line, > -# tokens being delineated by whitespace. It may only consist of the set of > -# characters [[:upper:]_[:digit:]]. Eg: > -# > -# '\n { MTYPE_AWESOME_IPV8 , "Amazing new protocol, says genius" > {}..boo' > -# > -# We try to ignore lines whose first token is /* or *, ie C comment lines. > -# So the following should work fine: > -# > -# '/* This is the best memory_list ever! > -# ' * It's got all my MTYPE's */ > -# ' > -# 'struct memory_list memory_list_my_amazing_mlist[] = = > -# '{ > -# ' { MTYPE_DONGLE, "Dongle widget" } > -# ' { MTYPE_FROB, "Frobulator" }, > -# '{ MTYPE_WIPPLE, "Wipple combombulator"} > -# '}}} > -# > -# Even if it isn't quite a valid C declaration. > -# > - > -BEGIN { > - mlistregex = "memory_list_(.*)\\[\\]"; > - mtyperegex = "^(MTYPE_[[:upper:]_[:digit:]]+).*"; > - header = "/* Auto-generated from memtypes.c by " ARGV[0] ". */\n"; > - header = header "/* Do not edit! */\n"; > - header = header "\n#ifndef _QUAGGA_MEMTYPES_H\n"; > - header = header "#define _QUAGGA_MEMTYPES_H\n"; > - footer = "\n#endif /* _QUAGGA_MEMTYPES_H */\n\n"; > - mlistformat = "extern struct memory_list memory_list_%s[];"; > - printf ("%s\n", header); > -} > - > -# catch lines beginning with 'struct memory list ' and try snag the > -# memory_list name. Has to be 3rd field. > -($0 ~ /^struct memory_list /) && (NF >= 3) { > - mlists[lcount++] = gensub(mlistregex, "\\1", "g",$3); > -} > - > -# snag the MTYPE, it must self-standing and the second field, > -# though we do manage to tolerate the , C seperator being appended > -($1 !~ /^\/?\*/) && ($2 ~ /^MTYPE_/) { > - mtype[tcount++] = gensub(mtyperegex, "\\1", "g", $2); > -} > - > -END { > - printf("enum\n{\n MTYPE_TMP = 1,\n"); > - for (i = 0; i < tcount; i++) { > - if (mtype[i] != "" && mtype[i] != "MTYPE_TMP") > - printf (" %s,\n", mtype[i]); > - } > - printf (" MTYPE_MAX,\n};\n\n"); > - for (i = 0; i < lcount; i++) { > - if (mlists[i] != "") > - printf (mlistformat "\n", mlists[i]); > - } > - printf (footer); > -} > diff --git a/lib/memtypes.c b/lib/memtypes.c > index 6df1448..1e72ab6 100644 > --- a/lib/memtypes.c > +++ b/lib/memtypes.c > @@ -10,286 +10,262 @@ > #include "zebra.h" > #include "memory.h" > > -struct memory_list memory_list_lib[] = > -{ > - { MTYPE_TMP, "Temporary memory" }, > - { MTYPE_STRVEC, "String vector" }, > - { MTYPE_VECTOR, "Vector" }, > - { MTYPE_VECTOR_INDEX, "Vector index" }, > - { MTYPE_LINK_LIST, "Link List" }, > - { MTYPE_LINK_NODE, "Link Node" }, > - { MTYPE_THREAD, "Thread" }, > - { MTYPE_THREAD_MASTER, "Thread master" }, > - { MTYPE_THREAD_STATS, "Thread stats" }, > - { MTYPE_VTY, "VTY" }, > - { MTYPE_VTY_OUT_BUF, "VTY output buffer" }, > - { MTYPE_VTY_HIST, "VTY history" }, > - { MTYPE_IF, "Interface" }, > - { MTYPE_CONNECTED, "Connected" }, > - { MTYPE_CONNECTED_LABEL, "Connected interface label" }, > - { MTYPE_BUFFER, "Buffer" }, > - { MTYPE_BUFFER_DATA, "Buffer data" }, > - { MTYPE_STREAM, "Stream" }, > - { MTYPE_STREAM_DATA, "Stream data" }, > - { MTYPE_STREAM_FIFO, "Stream FIFO" }, > - { MTYPE_PREFIX, "Prefix" }, > - { MTYPE_PREFIX_IPV4, "Prefix IPv4" }, > - { MTYPE_PREFIX_IPV6, "Prefix IPv6" }, > - { MTYPE_HASH, "Hash" }, > - { MTYPE_HASH_BACKET, "Hash Bucket" }, > - { MTYPE_HASH_INDEX, "Hash Index" }, > - { MTYPE_ROUTE_TABLE, "Route table" }, > - { MTYPE_ROUTE_NODE, "Route node" }, > - { MTYPE_DISTRIBUTE, "Distribute list" }, > - { MTYPE_DISTRIBUTE_IFNAME, "Dist-list ifname" }, > - { MTYPE_ACCESS_LIST, "Access List" }, > - { MTYPE_ACCESS_LIST_STR, "Access List Str" }, > - { MTYPE_ACCESS_FILTER, "Access Filter" }, > - { MTYPE_PREFIX_LIST, "Prefix List" }, > - { MTYPE_PREFIX_LIST_ENTRY, "Prefix List Entry" }, > - { MTYPE_PREFIX_LIST_STR, "Prefix List Str" }, > - { MTYPE_ROUTE_MAP, "Route map" }, > - { MTYPE_ROUTE_MAP_NAME, "Route map name" }, > - { MTYPE_ROUTE_MAP_INDEX, "Route map index" }, > - { MTYPE_ROUTE_MAP_RULE, "Route map rule" }, > - { MTYPE_ROUTE_MAP_RULE_STR, "Route map rule str" }, > - { MTYPE_ROUTE_MAP_COMPILED, "Route map compiled" }, > - { MTYPE_CMD_TOKENS, "Command desc" }, > - { MTYPE_KEY, "Key" }, > - { MTYPE_KEYCHAIN, "Key chain" }, > - { MTYPE_IF_RMAP, "Interface route map" }, > - { MTYPE_IF_RMAP_NAME, "I.f. route map name", }, > - { MTYPE_SOCKUNION, "Socket union" }, > - { MTYPE_PRIVS, "Privilege information" }, > - { MTYPE_ZLOG, "Logging" }, > - { MTYPE_ZCLIENT, "Zclient" }, > - { MTYPE_WORK_QUEUE, "Work queue" }, > - { MTYPE_WORK_QUEUE_ITEM, "Work queue item" }, > - { MTYPE_WORK_QUEUE_NAME, "Work queue name string" }, > - { MTYPE_PQUEUE, "Priority queue" }, > - { MTYPE_PQUEUE_DATA, "Priority queue data" }, > - { MTYPE_HOST, "Host config" }, > - { MTYPE_VRF, "VRF" }, > - { MTYPE_VRF_NAME, "VRF name" }, > - { MTYPE_VRF_BITMAP, "VRF bit-map" }, > - { -1, NULL }, > -}; > - > -struct memory_list memory_list_zebra[] = > -{ > - { MTYPE_RTADV_PREFIX, "Router Advertisement Prefix" }, > - { MTYPE_ZEBRA_VRF, "ZEBRA VRF" }, > - { MTYPE_NEXTHOP, "Nexthop" }, > - { MTYPE_RIB, "RIB" }, > - { MTYPE_RIB_QUEUE, "RIB process work queue" }, > - { MTYPE_STATIC_ROUTE, "Static route" }, > - { MTYPE_RIB_DEST, "RIB destination" }, > - { MTYPE_RIB_TABLE_INFO, "RIB table info" }, > - { MTYPE_NETLINK_NAME, "Netlink name" }, > - { -1, NULL }, > -}; > - > -struct memory_list memory_list_bgp[] = > -{ > - { MTYPE_BGP, "BGP instance" }, > - { MTYPE_BGP_LISTENER, "BGP listen socket details" }, > - { MTYPE_BGP_PEER, "BGP peer" }, > - { MTYPE_BGP_PEER_HOST, "BGP peer hostname" }, > - { MTYPE_PEER_GROUP, "Peer group" }, > - { MTYPE_PEER_DESC, "Peer description" }, > - { MTYPE_PEER_PASSWORD, "Peer password string" }, > - { MTYPE_ATTR, "BGP attribute" }, > - { MTYPE_ATTR_EXTRA, "BGP extra attributes" }, > - { MTYPE_AS_PATH, "BGP aspath" }, > - { MTYPE_AS_SEG, "BGP aspath seg" }, > - { MTYPE_AS_SEG_DATA, "BGP aspath segment data" }, > - { MTYPE_AS_STR, "BGP aspath str" }, > - { 0, NULL }, > - { MTYPE_BGP_TABLE, "BGP table" }, > - { MTYPE_BGP_NODE, "BGP node" }, > - { MTYPE_BGP_ROUTE, "BGP route" }, > - { MTYPE_BGP_ROUTE_EXTRA, "BGP ancillary route info" }, > - { MTYPE_BGP_CONN, "BGP connected" }, > - { MTYPE_BGP_STATIC, "BGP static" }, > - { MTYPE_BGP_ADVERTISE_ATTR, "BGP adv attr" }, > - { MTYPE_BGP_ADVERTISE, "BGP adv" }, > - { MTYPE_BGP_SYNCHRONISE, "BGP synchronise" }, > - { MTYPE_BGP_ADJ_IN, "BGP adj in" }, > - { MTYPE_BGP_ADJ_OUT, "BGP adj out" }, > - { MTYPE_BGP_MPATH_INFO, "BGP multipath info" }, > - { 0, NULL }, > - { MTYPE_AS_LIST, "BGP AS list" }, > - { MTYPE_AS_FILTER, "BGP AS filter" }, > - { MTYPE_AS_FILTER_STR, "BGP AS filter str" }, > - { 0, NULL }, > - { MTYPE_COMMUNITY, "community" }, > - { MTYPE_COMMUNITY_VAL, "community val" }, > - { MTYPE_COMMUNITY_STR, "community str" }, > - { 0, NULL }, > - { MTYPE_ECOMMUNITY, "extcommunity" }, > - { MTYPE_ECOMMUNITY_VAL, "extcommunity val" }, > - { MTYPE_ECOMMUNITY_STR, "extcommunity str" }, > - { 0, NULL }, > - { MTYPE_COMMUNITY_LIST, "community-list" }, > - { MTYPE_COMMUNITY_LIST_NAME, "community-list name" }, > - { MTYPE_COMMUNITY_LIST_ENTRY, "community-list entry" }, > - { MTYPE_COMMUNITY_LIST_CONFIG, "community-list config" }, > - { MTYPE_COMMUNITY_LIST_HANDLER, "community-list handler" }, > - { 0, NULL }, > - { MTYPE_CLUSTER, "Cluster list" }, > - { MTYPE_CLUSTER_VAL, "Cluster list val" }, > - { 0, NULL }, > - { MTYPE_BGP_PROCESS_QUEUE, "BGP Process queue" }, > - { MTYPE_BGP_CLEAR_NODE_QUEUE, "BGP node clear queue" }, > - { 0, NULL }, > - { MTYPE_TRANSIT, "BGP transit attr" }, > - { MTYPE_TRANSIT_VAL, "BGP transit val" }, > - { 0, NULL }, > - { MTYPE_BGP_DISTANCE, "BGP distance" }, > - { MTYPE_BGP_NEXTHOP_CACHE, "BGP nexthop" }, > - { MTYPE_BGP_CONFED_LIST, "BGP confed list" }, > - { MTYPE_PEER_UPDATE_SOURCE, "BGP peer update interface" }, > - { MTYPE_BGP_DAMP_INFO, "Dampening info" }, > - { MTYPE_BGP_DAMP_ARRAY, "BGP Dampening array" }, > - { MTYPE_BGP_REGEXP, "BGP regexp" }, > - { MTYPE_BGP_AGGREGATE, "BGP aggregate" }, > - { MTYPE_BGP_ADDR, "BGP own address" }, > - { MTYPE_ENCAP_TLV, "ENCAP TLV", }, > - { -1, NULL } > -}; > - > -struct memory_list memory_list_rip[] = > -{ > - { MTYPE_RIP, "RIP structure" }, > - { MTYPE_RIP_INFO, "RIP route info" }, > - { MTYPE_RIP_INTERFACE, "RIP interface" }, > - { MTYPE_RIP_PEER, "RIP peer" }, > - { MTYPE_RIP_OFFSET_LIST, "RIP offset list" }, > - { MTYPE_RIP_DISTANCE, "RIP distance" }, > - { -1, NULL } > -}; > - > -struct memory_list memory_list_ripng[] = > -{ > - { MTYPE_RIPNG, "RIPng structure" }, > - { MTYPE_RIPNG_ROUTE, "RIPng route info" }, > - { MTYPE_RIPNG_AGGREGATE, "RIPng aggregate" }, > - { MTYPE_RIPNG_PEER, "RIPng peer" }, > - { MTYPE_RIPNG_OFFSET_LIST, "RIPng offset lst" }, > - { MTYPE_RIPNG_RTE_DATA, "RIPng rte data" }, > - { -1, NULL } > -}; > - > -struct memory_list memory_list_babel[] = > -{ > - { MTYPE_BABEL, "Babel structure" }, > - { MTYPE_BABEL_IF, "Babel interface" }, > - { -1, NULL } > -}; > - > -struct memory_list memory_list_ospf[] = > -{ > - { MTYPE_OSPF_TOP, "OSPF top" }, > - { MTYPE_OSPF_AREA, "OSPF area" }, > - { MTYPE_OSPF_AREA_RANGE, "OSPF area range" }, > - { MTYPE_OSPF_NETWORK, "OSPF network" }, > - { MTYPE_OSPF_NEIGHBOR_STATIC,"OSPF static nbr" }, > - { MTYPE_OSPF_IF, "OSPF interface" }, > - { MTYPE_OSPF_NEIGHBOR, "OSPF neighbor" }, > - { MTYPE_OSPF_ROUTE, "OSPF route" }, > - { MTYPE_OSPF_TMP, "OSPF tmp mem" }, > - { MTYPE_OSPF_LSA, "OSPF LSA" }, > - { MTYPE_OSPF_LSA_DATA, "OSPF LSA data" }, > - { MTYPE_OSPF_LSDB, "OSPF LSDB" }, > - { MTYPE_OSPF_PACKET, "OSPF packet" }, > - { MTYPE_OSPF_FIFO, "OSPF FIFO queue" }, > - { MTYPE_OSPF_VERTEX, "OSPF vertex" }, > - { MTYPE_OSPF_VERTEX_PARENT, "OSPF vertex parent", }, > - { MTYPE_OSPF_NEXTHOP, "OSPF nexthop" }, > - { MTYPE_OSPF_PATH, "OSPF path" }, > - { MTYPE_OSPF_VL_DATA, "OSPF VL data" }, > - { MTYPE_OSPF_CRYPT_KEY, "OSPF crypt key" }, > - { MTYPE_OSPF_EXTERNAL_INFO, "OSPF ext. info" }, > - { MTYPE_OSPF_DISTANCE, "OSPF distance" }, > - { MTYPE_OSPF_IF_INFO, "OSPF if info" }, > - { MTYPE_OSPF_IF_PARAMS, "OSPF if params" }, > - { MTYPE_OSPF_MESSAGE, "OSPF message" }, > - { -1, NULL }, > -}; > - > -struct memory_list memory_list_ospf6[] = > -{ > - { MTYPE_OSPF6_TOP, "OSPF6 top" }, > - { MTYPE_OSPF6_AREA, "OSPF6 area" }, > - { MTYPE_OSPF6_IF, "OSPF6 interface" }, > - { MTYPE_OSPF6_NEIGHBOR, "OSPF6 neighbor" }, > - { MTYPE_OSPF6_ROUTE, "OSPF6 route" }, > - { MTYPE_OSPF6_PREFIX, "OSPF6 prefix" }, > - { MTYPE_OSPF6_MESSAGE, "OSPF6 message" }, > - { MTYPE_OSPF6_LSA, "OSPF6 LSA" }, > - { MTYPE_OSPF6_LSA_SUMMARY, "OSPF6 LSA summary" }, > - { MTYPE_OSPF6_LSDB, "OSPF6 LSA database" }, > - { MTYPE_OSPF6_VERTEX, "OSPF6 vertex" }, > - { MTYPE_OSPF6_SPFTREE, "OSPF6 SPF tree" }, > - { MTYPE_OSPF6_NEXTHOP, "OSPF6 nexthop" }, > - { MTYPE_OSPF6_EXTERNAL_INFO,"OSPF6 ext. info" }, > - { MTYPE_OSPF6_OTHER, "OSPF6 other" }, > - { -1, NULL }, > -}; > - > -struct memory_list memory_list_isis[] = > -{ > - { MTYPE_ISIS, "ISIS" }, > - { MTYPE_ISIS_TMP, "ISIS TMP" }, > - { MTYPE_ISIS_CIRCUIT, "ISIS circuit" }, > - { MTYPE_ISIS_LSP, "ISIS LSP" }, > - { MTYPE_ISIS_ADJACENCY, "ISIS adjacency" }, > - { MTYPE_ISIS_AREA, "ISIS area" }, > - { MTYPE_ISIS_AREA_ADDR, "ISIS area address" }, > - { MTYPE_ISIS_TLV, "ISIS TLV" }, > - { MTYPE_ISIS_DYNHN, "ISIS dyn hostname" }, > - { MTYPE_ISIS_SPFTREE, "ISIS SPFtree" }, > - { MTYPE_ISIS_VERTEX, "ISIS vertex" }, > - { MTYPE_ISIS_ROUTE_INFO, "ISIS route info" }, > - { MTYPE_ISIS_NEXTHOP, "ISIS nexthop" }, > - { MTYPE_ISIS_NEXTHOP6, "ISIS nexthop6" }, > - { MTYPE_ISIS_DICT, "ISIS dictionary" }, > - { MTYPE_ISIS_DICT_NODE, "ISIS dictionary node" }, > - { -1, NULL }, > -}; > - > -struct memory_list memory_list_pim[] = > -{ > - { MTYPE_PIM_CHANNEL_OIL, "PIM SSM (S,G) channel OIL" }, > - { MTYPE_PIM_INTERFACE, "PIM interface" }, > - { MTYPE_PIM_IGMP_JOIN, "PIM interface IGMP static join" }, > - { MTYPE_PIM_IGMP_SOCKET, "PIM interface IGMP socket" }, > - { MTYPE_PIM_IGMP_GROUP, "PIM interface IGMP group" }, > - { MTYPE_PIM_IGMP_GROUP_SOURCE, "PIM interface IGMP source" }, > - { MTYPE_PIM_NEIGHBOR, "PIM interface neighbor" }, > - { MTYPE_PIM_IFCHANNEL, "PIM interface (S,G) state" }, > - { MTYPE_PIM_UPSTREAM, "PIM upstream (S,G) state" }, > - { MTYPE_PIM_SSMPINGD, "PIM sspimgd socket" }, > - { MTYPE_PIM_STATIC_ROUTE, "PIM Static Route" }, > - { -1, NULL }, > -}; > - > -struct memory_list memory_list_vtysh[] = > -{ > - { MTYPE_VTYSH_CONFIG, "Vtysh configuration", }, > - { MTYPE_VTYSH_CONFIG_LINE, "Vtysh configuration line" }, > - { -1, NULL }, > -}; > - > -struct mlist mlists[] __attribute__ ((unused)) = { > - { memory_list_lib, "LIB" }, > - { memory_list_zebra, "ZEBRA" }, > - { memory_list_rip, "RIP" }, > - { memory_list_ripng, "RIPNG" }, > - { memory_list_ospf, "OSPF" }, > - { memory_list_ospf6, "OSPF6" }, > - { memory_list_isis, "ISIS" }, > - { memory_list_bgp, "BGP" }, > - { memory_list_pim, "PIM" }, > - { NULL, NULL}, > -}; > + > +DEFINE_MGROUP(LIB, "libzebra") > +DEFINE_MTYPE(LIB, TMP, "Temporary memory") > +DEFINE_MTYPE(LIB, STRVEC, "String vector") > +DEFINE_MTYPE(LIB, VECTOR, "Vector") > +DEFINE_MTYPE(LIB, VECTOR_INDEX, "Vector index") > +DEFINE_MTYPE(LIB, LINK_LIST, "Link List") > +DEFINE_MTYPE(LIB, LINK_NODE, "Link Node") > +DEFINE_MTYPE(LIB, THREAD, "Thread") > +DEFINE_MTYPE(LIB, THREAD_MASTER, "Thread master") > +DEFINE_MTYPE(LIB, THREAD_STATS, "Thread stats") > +DEFINE_MTYPE(LIB, VTY, "VTY") > +DEFINE_MTYPE(LIB, VTY_OUT_BUF, "VTY output buffer") > +DEFINE_MTYPE(LIB, VTY_HIST, "VTY history") > +DEFINE_MTYPE(LIB, IF, "Interface") > +DEFINE_MTYPE(LIB, CONNECTED, "Connected") > +DEFINE_MTYPE(LIB, CONNECTED_LABEL, "Connected interface > label") > +DEFINE_MTYPE(LIB, BUFFER, "Buffer") > +DEFINE_MTYPE(LIB, BUFFER_DATA, "Buffer data") > +DEFINE_MTYPE(LIB, STREAM, "Stream") > +DEFINE_MTYPE(LIB, STREAM_DATA, "Stream data") > +DEFINE_MTYPE(LIB, STREAM_FIFO, "Stream FIFO") > +DEFINE_MTYPE(LIB, PREFIX, "Prefix") > +DEFINE_MTYPE(LIB, PREFIX_IPV4, "Prefix IPv4") > +DEFINE_MTYPE(LIB, PREFIX_IPV6, "Prefix IPv6") > +DEFINE_MTYPE(LIB, HASH, "Hash") > +DEFINE_MTYPE(LIB, HASH_BACKET, "Hash Bucket") > +DEFINE_MTYPE(LIB, HASH_INDEX, "Hash Index") > +DEFINE_MTYPE(LIB, ROUTE_TABLE, "Route table") > +DEFINE_MTYPE(LIB, ROUTE_NODE, "Route node") > +DEFINE_MTYPE(LIB, DISTRIBUTE, "Distribute list") > +DEFINE_MTYPE(LIB, DISTRIBUTE_IFNAME, "Dist-list ifname") > +DEFINE_MTYPE(LIB, ACCESS_LIST, "Access List") > +DEFINE_MTYPE(LIB, ACCESS_LIST_STR, "Access List Str") > +DEFINE_MTYPE(LIB, ACCESS_FILTER, "Access Filter") > +DEFINE_MTYPE(LIB, PREFIX_LIST, "Prefix List") > +DEFINE_MTYPE(LIB, PREFIX_LIST_ENTRY, "Prefix List Entry") > +DEFINE_MTYPE(LIB, PREFIX_LIST_STR, "Prefix List Str") > +DEFINE_MTYPE(LIB, ROUTE_MAP, "Route map") > +DEFINE_MTYPE(LIB, ROUTE_MAP_NAME, "Route map name") > +DEFINE_MTYPE(LIB, ROUTE_MAP_INDEX, "Route map index") > +DEFINE_MTYPE(LIB, ROUTE_MAP_RULE, "Route map rule") > +DEFINE_MTYPE(LIB, ROUTE_MAP_RULE_STR, "Route map rule str") > +DEFINE_MTYPE(LIB, ROUTE_MAP_COMPILED, "Route map compiled") > +DEFINE_MTYPE(LIB, CMD_TOKENS, "Command desc") > +DEFINE_MTYPE(LIB, KEY, "Key") > +DEFINE_MTYPE(LIB, KEYCHAIN, "Key chain") > +DEFINE_MTYPE(LIB, IF_RMAP, "Interface route map") > +DEFINE_MTYPE(LIB, IF_RMAP_NAME, "I.f. route map name") > +DEFINE_MTYPE(LIB, SOCKUNION, "Socket union") > +DEFINE_MTYPE(LIB, PRIVS, "Privilege information") > +DEFINE_MTYPE(LIB, ZLOG, "Logging") > +DEFINE_MTYPE(LIB, ZCLIENT, "Zclient") > +DEFINE_MTYPE(LIB, WORK_QUEUE, "Work queue") > +DEFINE_MTYPE(LIB, WORK_QUEUE_ITEM, "Work queue item") > +DEFINE_MTYPE(LIB, WORK_QUEUE_NAME, "Work queue name string") > +DEFINE_MTYPE(LIB, PQUEUE, "Priority queue") > +DEFINE_MTYPE(LIB, PQUEUE_DATA, "Priority queue data") > +DEFINE_MTYPE(LIB, HOST, "host configuration") > +DEFINE_MTYPE(LIB, VRF, "VRF") > +DEFINE_MTYPE(LIB, VRF_NAME, "VRF name") > +DEFINE_MTYPE(LIB, VRF_BITMAP, "VRF bit-map") > + > + > + > +DEFINE_MGROUP(ZEBRA, "zebra") > +DEFINE_MTYPE(ZEBRA, RTADV_PREFIX, "Router Advertisement > Prefix") > +DEFINE_MTYPE(ZEBRA, ZEBRA_VRF, "ZEBRA VRF") > +DEFINE_MTYPE(ZEBRA, NEXTHOP, "Nexthop") > +DEFINE_MTYPE(ZEBRA, RIB, "RIB") > +DEFINE_MTYPE(ZEBRA, RIB_QUEUE, "RIB process work queue") > +DEFINE_MTYPE(ZEBRA, STATIC_ROUTE, "Static route") > +DEFINE_MTYPE(ZEBRA, RIB_DEST, "RIB destination") > +DEFINE_MTYPE(ZEBRA, RIB_TABLE_INFO, "RIB table info") > +DEFINE_MTYPE(ZEBRA, NETLINK_NAME, "Netlink name") > + > + > + > +DEFINE_MGROUP(BGPD, "bgpd") > +DEFINE_MTYPE(BGPD, BGP, "BGP instance") > +DEFINE_MTYPE(BGPD, BGP_LISTENER, "BGP listen socket > details") > +DEFINE_MTYPE(BGPD, BGP_PEER, "BGP peer") > +DEFINE_MTYPE(BGPD, BGP_PEER_HOST, "BGP peer hostname") > +DEFINE_MTYPE(BGPD, PEER_GROUP, "Peer group") > +DEFINE_MTYPE(BGPD, PEER_DESC, "Peer description") > +DEFINE_MTYPE(BGPD, PEER_PASSWORD, "Peer password string") > +DEFINE_MTYPE(BGPD, ATTR, "BGP attribute") > +DEFINE_MTYPE(BGPD, ATTR_EXTRA, "BGP extra attributes") > +DEFINE_MTYPE(BGPD, AS_PATH, "BGP aspath") > +DEFINE_MTYPE(BGPD, AS_SEG, "BGP aspath seg") > +DEFINE_MTYPE(BGPD, AS_SEG_DATA, "BGP aspath segment data") > +DEFINE_MTYPE(BGPD, AS_STR, "BGP aspath str") > + > +DEFINE_MTYPE(BGPD, BGP_TABLE, "BGP table") > +DEFINE_MTYPE(BGPD, BGP_NODE, "BGP node") > +DEFINE_MTYPE(BGPD, BGP_ROUTE, "BGP route") > +DEFINE_MTYPE(BGPD, BGP_ROUTE_EXTRA, "BGP ancillary route info") > +DEFINE_MTYPE(BGPD, BGP_CONN, "BGP connected") > +DEFINE_MTYPE(BGPD, BGP_STATIC, "BGP static") > +DEFINE_MTYPE(BGPD, BGP_ADVERTISE_ATTR, "BGP adv attr") > +DEFINE_MTYPE(BGPD, BGP_ADVERTISE, "BGP adv") > +DEFINE_MTYPE(BGPD, BGP_SYNCHRONISE, "BGP synchronise") > +DEFINE_MTYPE(BGPD, BGP_ADJ_IN, "BGP adj in") > +DEFINE_MTYPE(BGPD, BGP_ADJ_OUT, "BGP adj out") > +DEFINE_MTYPE(BGPD, BGP_MPATH_INFO, "BGP multipath info") > + > +DEFINE_MTYPE(BGPD, AS_LIST, "BGP AS list") > +DEFINE_MTYPE(BGPD, AS_FILTER, "BGP AS filter") > +DEFINE_MTYPE(BGPD, AS_FILTER_STR, "BGP AS filter str") > + > +DEFINE_MTYPE(BGPD, COMMUNITY, "community") > +DEFINE_MTYPE(BGPD, COMMUNITY_VAL, "community val") > +DEFINE_MTYPE(BGPD, COMMUNITY_STR, "community str") > + > +DEFINE_MTYPE(BGPD, ECOMMUNITY, "extcommunity") > +DEFINE_MTYPE(BGPD, ECOMMUNITY_VAL, "extcommunity val") > +DEFINE_MTYPE(BGPD, ECOMMUNITY_STR, "extcommunity str") > + > +DEFINE_MTYPE(BGPD, COMMUNITY_LIST, "community-list") > +DEFINE_MTYPE(BGPD, COMMUNITY_LIST_NAME, "community-list name") > +DEFINE_MTYPE(BGPD, COMMUNITY_LIST_ENTRY, "community-list entry") > +DEFINE_MTYPE(BGPD, COMMUNITY_LIST_CONFIG, "community-list config") > +DEFINE_MTYPE(BGPD, COMMUNITY_LIST_HANDLER, "community-list handler") > + > +DEFINE_MTYPE(BGPD, CLUSTER, "Cluster list") > +DEFINE_MTYPE(BGPD, CLUSTER_VAL, "Cluster list val") > + > +DEFINE_MTYPE(BGPD, BGP_PROCESS_QUEUE, "BGP Process queue") > +DEFINE_MTYPE(BGPD, BGP_CLEAR_NODE_QUEUE, "BGP node clear queue") > + > +DEFINE_MTYPE(BGPD, TRANSIT, "BGP transit attr") > +DEFINE_MTYPE(BGPD, TRANSIT_VAL, "BGP transit val") > + > +DEFINE_MTYPE(BGPD, BGP_DISTANCE, "BGP distance") > +DEFINE_MTYPE(BGPD, BGP_NEXTHOP_CACHE, "BGP nexthop") > +DEFINE_MTYPE(BGPD, BGP_CONFED_LIST, "BGP confed list") > +DEFINE_MTYPE(BGPD, PEER_UPDATE_SOURCE, "BGP peer update interface") > +DEFINE_MTYPE(BGPD, BGP_DAMP_INFO, "Dampening info") > +DEFINE_MTYPE(BGPD, BGP_DAMP_ARRAY, "BGP Dampening array") > +DEFINE_MTYPE(BGPD, BGP_REGEXP, "BGP regexp") > +DEFINE_MTYPE(BGPD, BGP_AGGREGATE, "BGP aggregate") > +DEFINE_MTYPE(BGPD, BGP_ADDR, "BGP own address") > +DEFINE_MTYPE(BGPD, ENCAP_TLV, "ENCAP TLV") > + > + > + > +DEFINE_MGROUP(RIPD, "ripd") > +DEFINE_MTYPE(RIPD, RIP, "RIP structure") > +DEFINE_MTYPE(RIPD, RIP_INFO, "RIP route info") > +DEFINE_MTYPE(RIPD, RIP_INTERFACE, "RIP interface") > +DEFINE_MTYPE(RIPD, RIP_PEER, "RIP peer") > +DEFINE_MTYPE(RIPD, RIP_OFFSET_LIST, "RIP offset list") > +DEFINE_MTYPE(RIPD, RIP_DISTANCE, "RIP distance") > + > + > + > +DEFINE_MGROUP(RIPNGD, "ripngd") > +DEFINE_MTYPE(RIPNGD, RIPNG, "RIPng structure") > +DEFINE_MTYPE(RIPNGD, RIPNG_ROUTE, "RIPng route info") > +DEFINE_MTYPE(RIPNGD, RIPNG_AGGREGATE, "RIPng aggregate") > +DEFINE_MTYPE(RIPNGD, RIPNG_PEER, "RIPng peer") > +DEFINE_MTYPE(RIPNGD, RIPNG_OFFSET_LIST, "RIPng offset lst") > +DEFINE_MTYPE(RIPNGD, RIPNG_RTE_DATA, "RIPng rte data") > + > + > + > +DEFINE_MGROUP(BABELD, "babeld") > +DEFINE_MTYPE(BABELD, BABEL, "Babel structure") > +DEFINE_MTYPE(BABELD, BABEL_IF, "Babel interface") > + > + > + > +DEFINE_MGROUP(OSPFD, "ospfd") > +DEFINE_MTYPE(OSPFD, OSPF_TOP, "OSPF top") > +DEFINE_MTYPE(OSPFD, OSPF_AREA, "OSPF area") > +DEFINE_MTYPE(OSPFD, OSPF_AREA_RANGE, "OSPF area range") > +DEFINE_MTYPE(OSPFD, OSPF_NETWORK, "OSPF network") > +DEFINE_MTYPE(OSPFD, OSPF_NEIGHBOR_STATIC, "OSPF static nbr") > +DEFINE_MTYPE(OSPFD, OSPF_IF, "OSPF interface") > +DEFINE_MTYPE(OSPFD, OSPF_NEIGHBOR, "OSPF neighbor") > +DEFINE_MTYPE(OSPFD, OSPF_ROUTE, "OSPF route") > +DEFINE_MTYPE(OSPFD, OSPF_TMP, "OSPF tmp mem") > +DEFINE_MTYPE(OSPFD, OSPF_LSA, "OSPF LSA") > +DEFINE_MTYPE(OSPFD, OSPF_LSA_DATA, "OSPF LSA data") > +DEFINE_MTYPE(OSPFD, OSPF_LSDB, "OSPF LSDB") > +DEFINE_MTYPE(OSPFD, OSPF_PACKET, "OSPF packet") > +DEFINE_MTYPE(OSPFD, OSPF_FIFO, "OSPF FIFO queue") > +DEFINE_MTYPE(OSPFD, OSPF_VERTEX, "OSPF vertex") > +DEFINE_MTYPE(OSPFD, OSPF_VERTEX_PARENT, "OSPF vertex parent") > +DEFINE_MTYPE(OSPFD, OSPF_NEXTHOP, "OSPF nexthop") > +DEFINE_MTYPE(OSPFD, OSPF_PATH, "OSPF path") > +DEFINE_MTYPE(OSPFD, OSPF_VL_DATA, "OSPF VL data") > +DEFINE_MTYPE(OSPFD, OSPF_CRYPT_KEY, "OSPF crypt key") > +DEFINE_MTYPE(OSPFD, OSPF_EXTERNAL_INFO, "OSPF ext. info") > +DEFINE_MTYPE(OSPFD, OSPF_DISTANCE, "OSPF distance") > +DEFINE_MTYPE(OSPFD, OSPF_IF_INFO, "OSPF if info") > +DEFINE_MTYPE(OSPFD, OSPF_IF_PARAMS, "OSPF if params") > +DEFINE_MTYPE(OSPFD, OSPF_MESSAGE, "OSPF message") > + > + > + > +DEFINE_MGROUP(OSPF6D, "ospf6d") > +DEFINE_MTYPE(OSPF6D, OSPF6_TOP, "OSPF6 top") > +DEFINE_MTYPE(OSPF6D, OSPF6_AREA, "OSPF6 area") > +DEFINE_MTYPE(OSPF6D, OSPF6_IF, "OSPF6 interface") > +DEFINE_MTYPE(OSPF6D, OSPF6_NEIGHBOR, "OSPF6 neighbor") > +DEFINE_MTYPE(OSPF6D, OSPF6_ROUTE, "OSPF6 route") > +DEFINE_MTYPE(OSPF6D, OSPF6_PREFIX, "OSPF6 prefix") > +DEFINE_MTYPE(OSPF6D, OSPF6_MESSAGE, "OSPF6 message") > +DEFINE_MTYPE(OSPF6D, OSPF6_LSA, "OSPF6 LSA") > +DEFINE_MTYPE(OSPF6D, OSPF6_LSA_SUMMARY, "OSPF6 LSA summary") > +DEFINE_MTYPE(OSPF6D, OSPF6_LSDB, "OSPF6 LSA database") > +DEFINE_MTYPE(OSPF6D, OSPF6_VERTEX, "OSPF6 vertex") > +DEFINE_MTYPE(OSPF6D, OSPF6_SPFTREE, "OSPF6 SPF tree") > +DEFINE_MTYPE(OSPF6D, OSPF6_NEXTHOP, "OSPF6 nexthop") > +DEFINE_MTYPE(OSPF6D, OSPF6_EXTERNAL_INFO,"OSPF6 ext. info") > +DEFINE_MTYPE(OSPF6D, OSPF6_OTHER, "OSPF6 other") > + > + > + > +DEFINE_MGROUP(ISISD, "isisd") > +DEFINE_MTYPE(ISISD, ISIS, "ISIS") > +DEFINE_MTYPE(ISISD, ISIS_TMP, "ISIS TMP") > +DEFINE_MTYPE(ISISD, ISIS_CIRCUIT, "ISIS circuit") > +DEFINE_MTYPE(ISISD, ISIS_LSP, "ISIS LSP") > +DEFINE_MTYPE(ISISD, ISIS_ADJACENCY, "ISIS adjacency") > +DEFINE_MTYPE(ISISD, ISIS_AREA, "ISIS area") > +DEFINE_MTYPE(ISISD, ISIS_AREA_ADDR, "ISIS area address") > +DEFINE_MTYPE(ISISD, ISIS_TLV, "ISIS TLV") > +DEFINE_MTYPE(ISISD, ISIS_DYNHN, "ISIS dyn hostname") > +DEFINE_MTYPE(ISISD, ISIS_SPFTREE, "ISIS SPFtree") > +DEFINE_MTYPE(ISISD, ISIS_VERTEX, "ISIS vertex") > +DEFINE_MTYPE(ISISD, ISIS_ROUTE_INFO, "ISIS route info") > +DEFINE_MTYPE(ISISD, ISIS_NEXTHOP, "ISIS nexthop") > +DEFINE_MTYPE(ISISD, ISIS_NEXTHOP6, "ISIS nexthop6") > +DEFINE_MTYPE(ISISD, ISIS_DICT, "ISIS dictionary") > +DEFINE_MTYPE(ISISD, ISIS_DICT_NODE, "ISIS dictionary node") > + > + > + > +DEFINE_MGROUP(PIMD, "pimd") > +DEFINE_MTYPE(PIMD, PIM_CHANNEL_OIL, "PIM SSM (S,G) channel OIL") > +DEFINE_MTYPE(PIMD, PIM_INTERFACE, "PIM interface") > +DEFINE_MTYPE(PIMD, PIM_IGMP_JOIN, "PIM interface IGMP static > join") > +DEFINE_MTYPE(PIMD, PIM_IGMP_SOCKET, "PIM interface IGMP socket") > +DEFINE_MTYPE(PIMD, PIM_IGMP_GROUP, "PIM interface IGMP group") > +DEFINE_MTYPE(PIMD, PIM_IGMP_GROUP_SOURCE, "PIM interface IGMP source") > +DEFINE_MTYPE(PIMD, PIM_NEIGHBOR, "PIM interface neighbor") > +DEFINE_MTYPE(PIMD, PIM_IFCHANNEL, "PIM interface (S,G) state") > +DEFINE_MTYPE(PIMD, PIM_UPSTREAM, "PIM upstream (S,G) state") > +DEFINE_MTYPE(PIMD, PIM_SSMPINGD, "PIM sspimgd socket") > +DEFINE_MTYPE(PIMD, PIM_STATIC_ROUTE, "PIM Static Route") > + > + > + > +DEFINE_MGROUP(MVTYSH, "vtysh") > +DEFINE_MTYPE(MVTYSH, VTYSH_CONFIG, "Vtysh configuration") > +DEFINE_MTYPE(MVTYSH, VTYSH_CONFIG_LINE, "Vtysh configuration line") > + > diff --git a/lib/memtypes.pl b/lib/memtypes.pl > new file mode 100755 > index 0000000..0955161 > --- /dev/null > +++ b/lib/memtypes.pl > @@ -0,0 +1,6 @@ > +#!/usr/bin/perl > +while (<STDIN>) { > + $_ =~ > s/DEFINE_MTYPE\([^,]+,\s*([^,]+)\s*,.*\)/DECLARE_MTYPE\($1\)/; > + $_ =~ s/DEFINE_MGROUP\(([^,]+),.*\)/DECLARE_MGROUP\($1\)/; > + print $_; > +} > diff --git a/ospf6d/ospf6_main.c b/ospf6d/ospf6_main.c > index 1afe84a..adc1c5c 100644 > --- a/ospf6d/ospf6_main.c > +++ b/ospf6d/ospf6_main.c > @@ -28,6 +28,7 @@ > #include "command.h" > #include "vty.h" > #include "memory.h" > +#include "memory_vty.h" > #include "if.h" > #include "filter.h" > #include "prefix.h" > diff --git a/ospfclient/ospf_apiclient.c b/ospfclient/ospf_apiclient.c > index ed7ca94..453e05c 100644 > --- a/ospfclient/ospf_apiclient.c > +++ b/ospfclient/ospf_apiclient.c > @@ -49,6 +49,8 @@ > > #include "ospf_apiclient.h" > > +DEFINE_MTYPE_STATIC(OSPFD, OSPF_APICLIENT, "OSPF-API client") > + > /* Backlog for listen */ > #define BACKLOG 5 > > diff --git a/ospfclient/ospf_apiclient.h b/ospfclient/ospf_apiclient.h > index 8098619..5a1de3b 100644 > --- a/ospfclient/ospf_apiclient.h > +++ b/ospfclient/ospf_apiclient.h > @@ -23,8 +23,6 @@ > #ifndef _OSPF_APICLIENT_H > #define _OSPF_APICLIENT_H > > -#define MTYPE_OSPF_APICLIENT MTYPE_TMP > - > /* Structure for the OSPF API client */ > struct ospf_apiclient > { > diff --git a/ospfd/ospf_main.c b/ospfd/ospf_main.c > index f373650..d4f2b37 100644 > --- a/ospfd/ospf_main.c > +++ b/ospfd/ospf_main.c > @@ -36,6 +36,7 @@ > #include "stream.h" > #include "log.h" > #include "memory.h" > +#include "memory_vty.h" > #include "privs.h" > #include "sigevent.h" > #include "zclient.h" > diff --git a/ospfd/ospf_opaque.c b/ospfd/ospf_opaque.c > index 697655d..fa7b2de 100644 > --- a/ospfd/ospf_opaque.c > +++ b/ospfd/ospf_opaque.c > @@ -21,11 +21,6 @@ > * 02111-1307, USA. > */ > > -/***** MTYPE definitions are not reflected to "memory.h" yet. *****/ > -#define MTYPE_OSPF_OPAQUE_FUNCTAB MTYPE_TMP > -#define MTYPE_OPAQUE_INFO_PER_TYPE MTYPE_TMP > -#define MTYPE_OPAQUE_INFO_PER_ID MTYPE_TMP > - > #include <zebra.h> > > #include "linklist.h" > @@ -57,6 +52,10 @@ > #include "ospfd/ospf_ase.h" > #include "ospfd/ospf_zebra.h" > > +DEFINE_MTYPE_STATIC(OSPFD, OSPF_OPAQUE_FUNCTAB, "OSPF opaque function > table") > +DEFINE_MTYPE_STATIC(OSPFD, OPAQUE_INFO_PER_TYPE, "OSPF opaque per-type > info") > +DEFINE_MTYPE_STATIC(OSPFD, OPAQUE_INFO_PER_ID, "OSPF opaque per-ID > info") > + > > /*------------------------------------------------------------------------* > * Followings are initialize/terminate functions for Opaque-LSAs handling. > > *------------------------------------------------------------------------*/ > diff --git a/ospfd/ospf_te.c b/ospfd/ospf_te.c > index 03109bc..04496ef 100644 > --- a/ospfd/ospf_te.c > +++ b/ospfd/ospf_te.c > @@ -21,9 +21,6 @@ > * 02111-1307, USA. > */ > > -/***** MTYPE definition is not reflected to "memory.h" yet. *****/ > -#define MTYPE_OSPF_MPLS_TE_LINKPARAMS MTYPE_TMP > - > #include <zebra.h> > > #include "linklist.h" > @@ -56,6 +53,8 @@ > #include "ospfd/ospf_zebra.h" > #include "ospfd/ospf_te.h" > > +DEFINE_MTYPE_STATIC(OSPFD, OSPF_MPLS_TE_LINKPARAMS, "OSPF MPLS-TE link > parameters") > + > /* Following structure are internal use only. */ > struct ospf_mpls_te > { > diff --git a/pimd/pim_main.c b/pimd/pim_main.c > index 5f4711e..68fbe9f 100644 > --- a/pimd/pim_main.c > +++ b/pimd/pim_main.c > @@ -32,6 +32,7 @@ > > #include "memory.h" > #include "vrf.h" > +#include "memory_vty.h" > #include "filter.h" > #include "vty.h" > #include "sigevent.h" > diff --git a/ripd/rip_main.c b/ripd/rip_main.c > index 4ead9b0..42363c5 100644 > --- a/ripd/rip_main.c > +++ b/ripd/rip_main.c > @@ -26,6 +26,7 @@ > #include "thread.h" > #include "command.h" > #include "memory.h" > +#include "memory_vty.h" > #include "prefix.h" > #include "filter.h" > #include "keychain.h" > diff --git a/ripngd/ripng_main.c b/ripngd/ripng_main.c > index 1c184e2..ee7beec 100644 > --- a/ripngd/ripng_main.c > +++ b/ripngd/ripng_main.c > @@ -28,6 +28,7 @@ > #include "vty.h" > #include "command.h" > #include "memory.h" > +#include "memory_vty.h" > #include "thread.h" > #include "log.h" > #include "prefix.h" > diff --git a/tests/common-cli.c b/tests/common-cli.c > index 7135856..f837db5 100644 > --- a/tests/common-cli.c > +++ b/tests/common-cli.c > @@ -26,6 +26,7 @@ > #include "vty.h" > #include "command.h" > #include "memory.h" > +#include "memory_vty.h" > #include "log.h" > > #include "common-cli.h" > diff --git a/tests/main.c b/tests/main.c > index 5396c7d..885b8a2 100644 > --- a/tests/main.c > +++ b/tests/main.c > @@ -27,6 +27,7 @@ > #include "vty.h" > #include "command.h" > #include "memory.h" > +#include "memory_vty.h" > > extern void test_init(); > > diff --git a/tests/test-buffer.c b/tests/test-buffer.c > index e95d6fb..67e4035 100644 > --- a/tests/test-buffer.c > +++ b/tests/test-buffer.c > @@ -21,6 +21,7 @@ > > #include <zebra.h> > #include <memory.h> > +#include <memory_vty.h> > #include <buffer.h> > > struct thread_master *master; > diff --git a/tests/test-privs.c b/tests/test-privs.c > index beae81f..e0118a8 100644 > --- a/tests/test-privs.c > +++ b/tests/test-privs.c > @@ -25,6 +25,7 @@ > #include "getopt.h" > #include "privs.h" > #include "memory.h" > +#include "memory_vty.h" > > zebra_capabilities_t _caps_p [] = > { > diff --git a/vtysh/vtysh_main.c b/vtysh/vtysh_main.c > index e82771b..34a1a65 100644 > --- a/vtysh/vtysh_main.c > +++ b/vtysh/vtysh_main.c > @@ -33,6 +33,7 @@ > #include "getopt.h" > #include "command.h" > #include "memory.h" > +#include "memory_vty.h" > > #include "vtysh/vtysh.h" > #include "vtysh/vtysh_user.h" > diff --git a/zebra/main.c b/zebra/main.c > index f3c08f1..af33d0c 100644 > --- a/zebra/main.c > +++ b/zebra/main.c > @@ -27,6 +27,7 @@ > #include "thread.h" > #include "filter.h" > #include "memory.h" > +#include "memory_vty.h" > #include "prefix.h" > #include "log.h" > #include "plist.h" > diff --git a/zebra/test_main.c b/zebra/test_main.c > index 09f53ad..f14c675 100644 > --- a/zebra/test_main.c > +++ b/zebra/test_main.c > @@ -25,6 +25,7 @@ > #include "thread.h" > #include "filter.h" > #include "memory.h" > +#include "memory_vty.h" > #include "prefix.h" > #include "log.h" > #include "privs.h" > -- > 2.3.6 > > > _______________________________________________ > Quagga-dev mailing list > [email protected] > https://lists.quagga.net/mailman/listinfo/quagga-dev >
_______________________________________________ Quagga-dev mailing list [email protected] https://lists.quagga.net/mailman/listinfo/quagga-dev
