Mailing List Archive

[PATCH v3 08/11] *: declare and init mgroup and mtype for all lib/daemons
This commit centralises the memory group and memory types declarations
into one single place for each daemon/library. In this case, files
affected are <daemon_or_lib>/<daemon_or_lib>_memory.[ch].
In order to be used, the memory groups and memory types have to be
manually initialised. This is why the daemons are initialising their
own memory types and groups. In addition to this, as all daemons require
usage of lib library, then the daemons also initialise the lib memory
types and group entries.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
---
bgpd/bgp_main.c | 2 +
bgpd/bgp_memory.c | 71 ++++++++++++++++++++++++
bgpd/bgp_memory.h | 3 +
isisd/isis_main.c | 2 +
isisd/isis_memory.c | 25 +++++++++
isisd/isis_memory.h | 3 +
lib/Makefile.am | 10 +---
lib/buffer.c | 2 +-
lib/command.c | 2 +-
lib/distribute.c | 2 +-
lib/filter.c | 2 +-
lib/hash.c | 2 +-
lib/if.c | 2 +-
lib/if_rmap.c | 2 +-
lib/keychain.c | 2 +-
lib/lib_memory.c | 151 ++++++++++++++++++++++++++++++++++++++++++++++++++
lib/lib_memory.h | 98 ++++++++++++++++++++++++++++++++
lib/linklist.c | 2 +-
lib/log.c | 2 +-
lib/memory.h | 2 +-
lib/memtypes.c | 84 ----------------------------
lib/nexthop.c | 2 +-
lib/plist.c | 2 +-
lib/pqueue.c | 2 +-
lib/prefix.c | 2 +-
lib/privs.c | 2 +-
lib/routemap.c | 2 +-
lib/sockunion.c | 2 +-
lib/stream.c | 2 +-
lib/table.c | 2 +-
lib/thread.c | 2 +-
lib/vector.c | 2 +
lib/vrf.c | 2 +-
lib/vty.c | 2 +-
lib/workqueue.c | 2 +-
lib/zclient.c | 2 +-
ospf6d/ospf6_main.c | 2 +
ospf6d/ospf6_memory.c | 23 ++++++++
ospf6d/ospf6_memory.h | 4 ++
ospfd/ospf_main.c | 2 +
ospfd/ospf_memory.c | 36 ++++++++++++
ospfd/ospf_memory.h | 2 +
pimd/pim_main.c | 2 +
pimd/pim_memory.c | 18 ++++++
pimd/pim_memory.h | 3 +
ripd/rip_main.c | 2 +
ripd/rip_memory.c | 13 +++++
ripd/rip_memory.h | 3 +
ripngd/ripng_main.c | 2 +
ripngd/ripng_memory.c | 13 +++++
ripngd/ripng_memory.h | 3 +
vtysh/vtysh.c | 1 +
vtysh/vtysh_main.c | 1 +
vtysh/vtysh_user.c | 1 +
zebra/main.c | 2 +
zebra/zebra_memory.c | 17 ++++++
zebra/zebra_memory.h | 4 ++
57 files changed, 539 insertions(+), 116 deletions(-)
create mode 100644 lib/lib_memory.c
create mode 100644 lib/lib_memory.h
delete mode 100644 lib/memtypes.c

diff --git a/bgpd/bgp_main.c b/bgpd/bgp_main.c
index 10e8ee573e4d..c5c3040e7b32 100644
--- a/bgpd/bgp_main.c
+++ b/bgpd/bgp_main.c
@@ -357,6 +357,8 @@ main (int argc, char **argv)
/* Preserve name of myself. */
progname = ((p = strrchr (argv[0], '/')) ? ++p : argv[0]);

+ bgp_memory_init();
+
zlog_default = openzlog (progname, ZLOG_BGP,
LOG_CONS|LOG_NDELAY|LOG_PID, LOG_DAEMON);

diff --git a/bgpd/bgp_memory.c b/bgpd/bgp_memory.c
index 3c2b08796713..1c0ec1e6b360 100644
--- a/bgpd/bgp_memory.c
+++ b/bgpd/bgp_memory.c
@@ -95,3 +95,74 @@ DEFINE_MTYPE(BGPD, BGP_AGGREGATE, "BGP aggregate")
DEFINE_MTYPE(BGPD, BGP_ADDR, "BGP own address")
DEFINE_MTYPE(BGPD, ENCAP_TLV, "ENCAP TLV")

+void bgp_memory_init(void)
+{
+ lib_memory_init();
+
+ INIT_MGROUP(BGPD);
+ INIT_MTYPE(BGP);
+ INIT_MTYPE(BGP_LISTENER);
+ INIT_MTYPE(BGP_PEER);
+ INIT_MTYPE(BGP_PEER_HOST);
+ INIT_MTYPE(PEER_GROUP);
+ INIT_MTYPE(PEER_DESC);
+ INIT_MTYPE(PEER_PASSWORD);
+ INIT_MTYPE(ATTR);
+ INIT_MTYPE(ATTR_EXTRA);
+ INIT_MTYPE(AS_PATH);
+ INIT_MTYPE(AS_SEG);
+ INIT_MTYPE(AS_SEG_DATA);
+ INIT_MTYPE(AS_STR);
+
+ INIT_MTYPE(BGP_TABLE);
+ INIT_MTYPE(BGP_NODE);
+ INIT_MTYPE(BGP_ROUTE);
+ INIT_MTYPE(BGP_ROUTE_EXTRA);
+ INIT_MTYPE(BGP_CONN);
+ INIT_MTYPE(BGP_STATIC);
+ INIT_MTYPE(BGP_ADVERTISE_ATTR);
+ INIT_MTYPE(BGP_ADVERTISE);
+ INIT_MTYPE(BGP_SYNCHRONISE);
+ INIT_MTYPE(BGP_ADJ_IN);
+ INIT_MTYPE(BGP_ADJ_OUT);
+ INIT_MTYPE(BGP_MPATH_INFO);
+
+ INIT_MTYPE(AS_LIST);
+ INIT_MTYPE(AS_FILTER);
+ INIT_MTYPE(AS_FILTER_STR);
+
+ INIT_MTYPE(COMMUNITY);
+ INIT_MTYPE(COMMUNITY_VAL);
+ INIT_MTYPE(COMMUNITY_STR);
+
+ INIT_MTYPE(ECOMMUNITY);
+ INIT_MTYPE(ECOMMUNITY_VAL);
+ INIT_MTYPE(ECOMMUNITY_STR);
+
+ INIT_MTYPE(COMMUNITY_LIST);
+ INIT_MTYPE(COMMUNITY_LIST_NAME);
+ INIT_MTYPE(COMMUNITY_LIST_ENTRY);
+ INIT_MTYPE(COMMUNITY_LIST_CONFIG);
+ INIT_MTYPE(COMMUNITY_LIST_HANDLER);
+
+ INIT_MTYPE(CLUSTER);
+ INIT_MTYPE(CLUSTER_VAL);
+
+ INIT_MTYPE(BGP_PROCESS_QUEUE);
+ INIT_MTYPE(BGP_CLEAR_NODE_QUEUE);
+
+ INIT_MTYPE(TRANSIT);
+ INIT_MTYPE(TRANSIT_VAL);
+
+ INIT_MTYPE(BGP_DISTANCE);
+ INIT_MTYPE(BGP_NEXTHOP_CACHE);
+ INIT_MTYPE(BGP_CONFED_LIST);
+ INIT_MTYPE(PEER_UPDATE_SOURCE);
+ INIT_MTYPE(BGP_DAMP_INFO);
+ INIT_MTYPE(BGP_DAMP_ARRAY);
+ INIT_MTYPE(BGP_REGEXP);
+ INIT_MTYPE(BGP_AGGREGATE);
+ INIT_MTYPE(BGP_ADDR);
+ INIT_MTYPE(ENCAP_TLV);
+
+}
diff --git a/bgpd/bgp_memory.h b/bgpd/bgp_memory.h
index 61ab310f0d55..a17f40f3b2af 100644
--- a/bgpd/bgp_memory.h
+++ b/bgpd/bgp_memory.h
@@ -24,6 +24,7 @@
#define _QUAGGA_BGP_MEMORY_H

#include "memory.h"
+#include "lib_memory.h"

DECLARE_MGROUP(BGPD)
DECLARE_MTYPE(BGP)
@@ -91,4 +92,6 @@ DECLARE_MTYPE(BGP_AGGREGATE)
DECLARE_MTYPE(BGP_ADDR)
DECLARE_MTYPE(ENCAP_TLV)

+extern void bgp_memory_init(void);
+
#endif /* _QUAGGA_BGP_MEMORY_H */
diff --git a/isisd/isis_main.c b/isisd/isis_main.c
index 6c1f891c413b..aa655eb9d565 100644
--- a/isisd/isis_main.c
+++ b/isisd/isis_main.c
@@ -245,6 +245,8 @@ main (int argc, char **argv, char **envp)
/* Get the programname without the preceding path. */
progname = ((p = strrchr (argv[0], '/')) ? ++p : argv[0]);

+ isis_memory_init();
+
zlog_default = openzlog (progname, ZLOG_ISIS,
LOG_CONS | LOG_NDELAY | LOG_PID, LOG_DAEMON);

diff --git a/isisd/isis_memory.c b/isisd/isis_memory.c
index 5dc25429678d..5b8950c34e56 100644
--- a/isisd/isis_memory.c
+++ b/isisd/isis_memory.c
@@ -46,3 +46,28 @@ DEFINE_MTYPE(ISISD, ISIS_DICT_NODE, "ISIS dictionary node")
DEFINE_MTYPE(ISISD, ISIS_MPLS_TE, "ISIS MPLS Traffic Engineering")
DEFINE_MTYPE(ISISD, ISIS_EXT_ROUTE, "ISIS redistributed route")
DEFINE_MTYPE(ISISD, ISIS_EXT_INFO, "ISIS redistributed route info")
+
+void isis_memory_init(void)
+{
+ lib_memory_init();
+
+ INIT_MGROUP(ISISD);
+ INIT_MTYPE(ISIS);
+ INIT_MTYPE(ISIS_TMP);
+ INIT_MTYPE(ISIS_CIRCUIT);
+ INIT_MTYPE(ISIS_LSP);
+ INIT_MTYPE(ISIS_ADJACENCY);
+ INIT_MTYPE(ISIS_AREA);
+ INIT_MTYPE(ISIS_AREA_ADDR);
+ INIT_MTYPE(ISIS_TLV);
+ INIT_MTYPE(ISIS_DYNHN);
+ INIT_MTYPE(ISIS_SPFTREE);
+ INIT_MTYPE(ISIS_VERTEX);
+ INIT_MTYPE(ISIS_ROUTE_INFO);
+ INIT_MTYPE(ISIS_NEXTHOP);
+ INIT_MTYPE(ISIS_NEXTHOP6);
+ INIT_MTYPE(ISIS_DICT);
+ INIT_MTYPE(ISIS_DICT_NODE);
+ INIT_MTYPE(ISIS_EXT_ROUTE);
+ INIT_MTYPE(ISIS_EXT_INFO);
+}
diff --git a/isisd/isis_memory.h b/isisd/isis_memory.h
index 7cd269019a37..3c8f6b131a98 100644
--- a/isisd/isis_memory.h
+++ b/isisd/isis_memory.h
@@ -24,6 +24,7 @@
#define _QUAGGA_ISIS_MEMORY_H

#include "memory.h"
+#include "lib_memory.h"

DECLARE_MGROUP(ISISD)
DECLARE_MTYPE(ISIS)
@@ -46,4 +47,6 @@ DECLARE_MTYPE(ISIS_MPLS_TE)
DECLARE_MTYPE(ISIS_EXT_ROUTE)
DECLARE_MTYPE(ISIS_EXT_INFO)

+extern void isis_memory_init(void);
+
#endif /* _QUAGGA_ISIS_MEMORY_H */
diff --git a/lib/Makefile.am b/lib/Makefile.am
index d9759c7b50a5..c942129d3d01 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -13,10 +13,10 @@ libzebra_la_SOURCES = \
sockunion.c prefix.c thread.c if.c buffer.c table.c hash.c \
filter.c routemap.c distribute.c stream.c str.c log.c plist.c \
zclient.c sockopt.c smux.c agentx.c snmp.c md5.c if_rmap.c keychain.c privs.c \
- sigevent.c pqueue.c jhash.c memtypes.c workqueue.c vrf.c \
+ sigevent.c pqueue.c jhash.c lib_memory.c workqueue.c vrf.c \
event_counter.c nexthop.c memory_vty.c memory.c

-BUILT_SOURCES = memtypes.h route_types.h gitversion.h
+BUILT_SOURCES = route_types.h gitversion.h

libzebra_la_DEPENDENCIES = @LIB_REGEX@

@@ -28,7 +28,7 @@ pkginclude_HEADERS = \
memory.h network.h prefix.h routemap.h distribute.h sockunion.h \
str.h stream.h table.h thread.h vector.h version.h vty.h zebra.h \
plist.h zclient.h sockopt.h smux.h md5.h if_rmap.h keychain.h \
- privs.h sigevent.h pqueue.h jhash.h zassert.h memtypes.h \
+ privs.h sigevent.h pqueue.h jhash.h zassert.h lib_memory.h \
workqueue.h route_types.h libospf.h vrf.h fifo.h event_counter.h \
nexthop.h memory_vty.h

@@ -38,13 +38,9 @@ noinst_HEADERS = \
EXTRA_DIST = \
regex.c regex-gnu.h \
queue.h \
- memtypes.pl \
route_types.pl route_types.txt \
gitversion.pl

-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/buffer.c b/lib/buffer.c
index ee9310100e48..906355eca277 100644
--- a/lib/buffer.c
+++ b/lib/buffer.c
@@ -22,7 +22,7 @@

#include <zebra.h>

-#include "memory.h"
+#include "lib_memory.h"
#include "buffer.h"
#include "log.h"
#include "network.h"
diff --git a/lib/command.c b/lib/command.c
index ab46fc4a6d11..50842c94e12a 100644
--- a/lib/command.c
+++ b/lib/command.c
@@ -24,7 +24,7 @@ Boston, MA 02111-1307, USA. */
#include <zebra.h>


-#include "memory.h"
+#include "lib_memory.h"
#include "log.h"
#include <lib/version.h>
#include "thread.h"
diff --git a/lib/distribute.c b/lib/distribute.c
index 583befb360c9..63c3284341db 100644
--- a/lib/distribute.c
+++ b/lib/distribute.c
@@ -26,7 +26,7 @@
#include "filter.h"
#include "command.h"
#include "distribute.h"
-#include "memory.h"
+#include "lib_memory.h"

/* Hash of distribute list. */
struct hash *disthash;
diff --git a/lib/filter.c b/lib/filter.c
index a472941406f7..b919b5dfba08 100644
--- a/lib/filter.c
+++ b/lib/filter.c
@@ -23,7 +23,7 @@

#include "prefix.h"
#include "filter.h"
-#include "memory.h"
+#include "lib_memory.h"
#include "command.h"
#include "sockunion.h"
#include "buffer.h"
diff --git a/lib/hash.c b/lib/hash.c
index 56e41fa82605..d3c08996ce0e 100644
--- a/lib/hash.c
+++ b/lib/hash.c
@@ -22,7 +22,7 @@
#include <zebra.h>

#include "hash.h"
-#include "memory.h"
+#include "lib_memory.h"

/* Allocate a new hash. */
struct hash *
diff --git a/lib/if.c b/lib/if.c
index 0fc4b609c76e..4c0d92ade5d9 100644
--- a/lib/if.c
+++ b/lib/if.c
@@ -31,7 +31,7 @@
#include "if.h"
#include "sockunion.h"
#include "prefix.h"
-#include "memory.h"
+#include "lib_memory.h"
#include "table.h"
#include "buffer.h"
#include "str.h"
diff --git a/lib/if_rmap.c b/lib/if_rmap.c
index e4a83de8bb85..c2e762a8ce01 100644
--- a/lib/if_rmap.c
+++ b/lib/if_rmap.c
@@ -23,7 +23,7 @@

#include "hash.h"
#include "command.h"
-#include "memory.h"
+#include "lib_memory.h"
#include "if.h"
#include "if_rmap.h"

diff --git a/lib/keychain.c b/lib/keychain.c
index 8a2fdd2ed9fb..525b6797568f 100644
--- a/lib/keychain.c
+++ b/lib/keychain.c
@@ -21,7 +21,7 @@ Boston, MA 02111-1307, USA. */
#include <zebra.h>

#include "command.h"
-#include "memory.h"
+#include "lib_memory.h"
#include "linklist.h"
#include "keychain.h"

diff --git a/lib/lib_memory.c b/lib/lib_memory.c
new file mode 100644
index 000000000000..00697dbc0795
--- /dev/null
+++ b/lib/lib_memory.c
@@ -0,0 +1,151 @@
+/*
+ * Memory type definitions. This file is parsed by memtypes.awk to extract
+ * MTYPE_ and memory_list_.. information in order to autogenerate
+ * lib_memory.h.
+ *
+ * The script is sensitive to the format (though not whitespace), see
+ * the top of memtypes.awk for more details.
+ */
+
+#include "zebra.h"
+#include "lib_memory.h"
+
+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_MTYPE(LIB, IF_LINK_PARAMS, "Informational Link Parameters")
+DEFINE_MTYPE(LIB, LIB_NEXTHOP, "Nexthop" )
+
+DEFINE_MGROUP(BABELD, "babeld")
+DEFINE_MTYPE(BABELD, BABEL, "Babel structure")
+DEFINE_MTYPE(BABELD, BABEL_IF, "Babel interface")
+
+void lib_memory_init(void)
+{
+ INIT_MGROUP(LIB);
+ INIT_MTYPE( TMP);
+ INIT_MTYPE( STRVEC);
+ INIT_MTYPE( VECTOR);
+ INIT_MTYPE( VECTOR_INDEX);
+ INIT_MTYPE( LINK_LIST);
+ INIT_MTYPE( LINK_NODE);
+ INIT_MTYPE( THREAD);
+ INIT_MTYPE( THREAD_MASTER);
+ INIT_MTYPE( THREAD_STATS);
+ INIT_MTYPE( VTY);
+ INIT_MTYPE( VTY_OUT_BUF);
+ INIT_MTYPE( VTY_HIST);
+ INIT_MTYPE( IF);
+ INIT_MTYPE( CONNECTED);
+ INIT_MTYPE( CONNECTED_LABEL);
+ INIT_MTYPE( BUFFER);
+ INIT_MTYPE( BUFFER_DATA);
+ INIT_MTYPE( STREAM);
+ INIT_MTYPE( STREAM_DATA);
+ INIT_MTYPE( STREAM_FIFO);
+ INIT_MTYPE( PREFIX);
+ INIT_MTYPE( PREFIX_IPV4);
+ INIT_MTYPE( PREFIX_IPV6);
+ INIT_MTYPE( HASH);
+ INIT_MTYPE( HASH_BACKET);
+ INIT_MTYPE( HASH_INDEX);
+ INIT_MTYPE( ROUTE_TABLE);
+ INIT_MTYPE( ROUTE_NODE);
+ INIT_MTYPE( DISTRIBUTE);
+ INIT_MTYPE( DISTRIBUTE_IFNAME);
+ INIT_MTYPE( ACCESS_LIST);
+ INIT_MTYPE( ACCESS_LIST_STR);
+ INIT_MTYPE( ACCESS_FILTER);
+ INIT_MTYPE( PREFIX_LIST);
+ INIT_MTYPE( PREFIX_LIST_ENTRY);
+ INIT_MTYPE( PREFIX_LIST_STR);
+ INIT_MTYPE( ROUTE_MAP);
+ INIT_MTYPE( ROUTE_MAP_NAME);
+ INIT_MTYPE( ROUTE_MAP_INDEX);
+ INIT_MTYPE( ROUTE_MAP_RULE);
+ INIT_MTYPE( ROUTE_MAP_RULE_STR);
+ INIT_MTYPE( ROUTE_MAP_COMPILED);
+ INIT_MTYPE( CMD_TOKENS);
+ INIT_MTYPE( KEY);
+ INIT_MTYPE( KEYCHAIN);
+ INIT_MTYPE( IF_RMAP);
+ INIT_MTYPE( IF_RMAP_NAME);
+ INIT_MTYPE( SOCKUNION);
+ INIT_MTYPE( PRIVS);
+ INIT_MTYPE( ZLOG);
+ INIT_MTYPE( ZCLIENT);
+ INIT_MTYPE( WORK_QUEUE);
+ INIT_MTYPE( WORK_QUEUE_ITEM);
+ INIT_MTYPE( WORK_QUEUE_NAME);
+ INIT_MTYPE( PQUEUE);
+ INIT_MTYPE( PQUEUE_DATA);
+ INIT_MTYPE( HOST);
+ INIT_MTYPE( VRF);
+ INIT_MTYPE( VRF_NAME);
+ INIT_MTYPE( VRF_BITMAP);
+ INIT_MTYPE( IF_LINK_PARAMS);
+ INIT_MTYPE( LIB_NEXTHOP);
+
+ INIT_MGROUP(BABELD);
+ INIT_MTYPE(BABEL);
+ INIT_MTYPE(BABEL_IF);
+
+}
diff --git a/lib/lib_memory.h b/lib/lib_memory.h
new file mode 100644
index 000000000000..50e305e24bd3
--- /dev/null
+++ b/lib/lib_memory.h
@@ -0,0 +1,98 @@
+/* lib memory type declarations
+ *
+ * Copyright (C) 2016 6WIND
+ *
+ * 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.
+ */
+
+#ifndef _QUAGGA_LIB_MEMORY_H
+#define _QUAGGA_LIB_MEMORY_H
+
+#include "memory.h"
+
+DECLARE_MGROUP(LIB)
+DECLARE_MTYPE(TMP)
+DECLARE_MTYPE(STRVEC)
+DECLARE_MTYPE(VECTOR)
+DECLARE_MTYPE(VECTOR_INDEX)
+DECLARE_MTYPE(LINK_LIST)
+DECLARE_MTYPE(LINK_NODE)
+DECLARE_MTYPE(THREAD)
+DECLARE_MTYPE(THREAD_MASTER)
+DECLARE_MTYPE(THREAD_STATS)
+DECLARE_MTYPE(VTY)
+DECLARE_MTYPE(VTY_OUT_BUF)
+DECLARE_MTYPE(VTY_HIST)
+DECLARE_MTYPE(IF)
+DECLARE_MTYPE(CONNECTED)
+DECLARE_MTYPE(CONNECTED_LABEL)
+DECLARE_MTYPE(BUFFER)
+DECLARE_MTYPE(BUFFER_DATA)
+DECLARE_MTYPE(STREAM)
+DECLARE_MTYPE(STREAM_DATA)
+DECLARE_MTYPE(STREAM_FIFO)
+DECLARE_MTYPE(PREFIX)
+DECLARE_MTYPE(PREFIX_IPV4)
+DECLARE_MTYPE(PREFIX_IPV6)
+DECLARE_MTYPE(HASH)
+DECLARE_MTYPE(HASH_BACKET)
+DECLARE_MTYPE(HASH_INDEX)
+DECLARE_MTYPE(ROUTE_TABLE)
+DECLARE_MTYPE(ROUTE_NODE)
+DECLARE_MTYPE(DISTRIBUTE)
+DECLARE_MTYPE(DISTRIBUTE_IFNAME)
+DECLARE_MTYPE(ACCESS_LIST)
+DECLARE_MTYPE(ACCESS_LIST_STR)
+DECLARE_MTYPE(ACCESS_FILTER)
+DECLARE_MTYPE(PREFIX_LIST)
+DECLARE_MTYPE(PREFIX_LIST_ENTRY)
+DECLARE_MTYPE(PREFIX_LIST_STR)
+DECLARE_MTYPE(ROUTE_MAP)
+DECLARE_MTYPE(ROUTE_MAP_NAME)
+DECLARE_MTYPE(ROUTE_MAP_INDEX)
+DECLARE_MTYPE(ROUTE_MAP_RULE)
+DECLARE_MTYPE(ROUTE_MAP_RULE_STR)
+DECLARE_MTYPE(ROUTE_MAP_COMPILED)
+DECLARE_MTYPE(CMD_TOKENS)
+DECLARE_MTYPE(KEY)
+DECLARE_MTYPE(KEYCHAIN)
+DECLARE_MTYPE(IF_RMAP)
+DECLARE_MTYPE(IF_RMAP_NAME)
+DECLARE_MTYPE(SOCKUNION)
+DECLARE_MTYPE(PRIVS)
+DECLARE_MTYPE(ZLOG)
+DECLARE_MTYPE(ZCLIENT)
+DECLARE_MTYPE(WORK_QUEUE)
+DECLARE_MTYPE(WORK_QUEUE_ITEM)
+DECLARE_MTYPE(WORK_QUEUE_NAME)
+DECLARE_MTYPE(PQUEUE)
+DECLARE_MTYPE(PQUEUE_DATA)
+DECLARE_MTYPE(HOST)
+DECLARE_MTYPE(VRF)
+DECLARE_MTYPE(VRF_NAME)
+DECLARE_MTYPE(VRF_BITMAP)
+DECLARE_MTYPE(IF_LINK_PARAMS)
+DECLARE_MTYPE(LIB_NEXTHOP)
+
+DECLARE_MGROUP(BABELD)
+DECLARE_MTYPE(BABEL)
+DECLARE_MTYPE(BABEL_IF)
+
+extern void lib_memory_init(void);
+
+#endif /* _QUAGGA_LIB_MEMORY_H */
diff --git a/lib/linklist.c b/lib/linklist.c
index 4b16f07dd1c3..fc37ab8a7a76 100644
--- a/lib/linklist.c
+++ b/lib/linklist.c
@@ -22,7 +22,7 @@
#include <zebra.h>

#include "linklist.h"
-#include "memory.h"
+#include "lib_memory.h"

/* Allocate new list. */
struct list *
diff --git a/lib/log.c b/lib/log.c
index 80d0ab4434c4..74ba785d2755 100644
--- a/lib/log.c
+++ b/lib/log.c
@@ -25,7 +25,7 @@
#include <zebra.h>

#include "log.h"
-#include "memory.h"
+#include "lib_memory.h"
#include "command.h"
#ifndef SUNOS_5
#include <sys/un.h>
diff --git a/lib/memory.h b/lib/memory.h
index d4acaac089dc..9c33327aa27f 100644
--- a/lib/memory.h
+++ b/lib/memory.h
@@ -144,7 +144,7 @@ extern int qmem_walk (qmem_walk_fn *func, void *arg);

extern void memory_oom (size_t size, const char *name);

-#include "memtypes.h"
+#include "lib_memory.h"

#endif /* _QUAGGA_MEMORY_H */

diff --git a/lib/memtypes.c b/lib/memtypes.c
deleted file mode 100644
index e7233f40f7da..000000000000
--- a/lib/memtypes.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Memory type definitions. This file is parsed by memtypes.awk to extract
- * MTYPE_ and memory_list_.. information in order to autogenerate
- * memtypes.h.
- *
- * The script is sensitive to the format (though not whitespace), see
- * the top of memtypes.awk for more details.
- */
-
-#include "zebra.h"
-#include "memory.h"
-
-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_MTYPE(LIB, IF_LINK_PARAMS, "Informational Link Parameters")
-DEFINE_MTYPE(LIB, LIB_NEXTHOP, "Nexthop" )
-
-DEFINE_MGROUP(BABELD, "babeld")
-DEFINE_MTYPE(BABELD, BABEL, "Babel structure")
-DEFINE_MTYPE(BABELD, BABEL_IF, "Babel interface")
-
-
-
-
->>>>>>> 40a5c41dec76... lib: migrate to new memory-type handling
diff --git a/lib/nexthop.c b/lib/nexthop.c
index 3a41e2850f3e..9bcd6cdb403b 100644
--- a/lib/nexthop.c
+++ b/lib/nexthop.c
@@ -23,7 +23,7 @@
#include "prefix.h"
#include "table.h"
#include "memory.h"
-#include "memtypes.h"
+#include "lib_memory.h"
#include "str.h"
#include "command.h"
#include "if.h"
diff --git a/lib/plist.c b/lib/plist.c
index 2176c035a122..32d2514a849b 100644
--- a/lib/plist.c
+++ b/lib/plist.c
@@ -23,7 +23,7 @@

#include "prefix.h"
#include "command.h"
-#include "memory.h"
+#include "lib_memory.h"
#include "plist.h"
#include "sockunion.h"
#include "buffer.h"
diff --git a/lib/pqueue.c b/lib/pqueue.c
index 69ab8e65d6c2..2cace45da88b 100644
--- a/lib/pqueue.c
+++ b/lib/pqueue.c
@@ -20,7 +20,7 @@ Boston, MA 02111-1307, USA. */

#include <zebra.h>

-#include "memory.h"
+#include "lib_memory.h"
#include "pqueue.h"

/* priority queue using heap sort */
diff --git a/lib/prefix.c b/lib/prefix.c
index 43fc31713016..3091d05f829b 100644
--- a/lib/prefix.c
+++ b/lib/prefix.c
@@ -25,7 +25,7 @@
#include "prefix.h"
#include "vty.h"
#include "sockunion.h"
-#include "memory.h"
+#include "lib_memory.h"
#include "log.h"

/* Maskbit. */
diff --git a/lib/privs.c b/lib/privs.c
index 3fb96aed12c5..6bbc17d84c89 100644
--- a/lib/privs.c
+++ b/lib/privs.c
@@ -24,7 +24,7 @@
#include <zebra.h>
#include "log.h"
#include "privs.h"
-#include "memory.h"
+#include "lib_memory.h"

#ifdef HAVE_CAPABILITIES
/* sort out some generic internal types for:
diff --git a/lib/routemap.c b/lib/routemap.c
index 7302e2311843..c2f5812da752 100644
--- a/lib/routemap.c
+++ b/lib/routemap.c
@@ -21,7 +21,7 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
#include <zebra.h>

#include "linklist.h"
-#include "memory.h"
+#include "lib_memory.h"
#include "vector.h"
#include "prefix.h"
#include "routemap.h"
diff --git a/lib/sockunion.c b/lib/sockunion.c
index 4a22c6386c79..845790458fbf 100644
--- a/lib/sockunion.c
+++ b/lib/sockunion.c
@@ -24,7 +24,7 @@
#include "prefix.h"
#include "vty.h"
#include "sockunion.h"
-#include "memory.h"
+#include "lib_memory.h"
#include "str.h"
#include "log.h"
#include "jhash.h"
diff --git a/lib/stream.c b/lib/stream.c
index b50992d6a9c2..dc66d341c91a 100644
--- a/lib/stream.c
+++ b/lib/stream.c
@@ -24,7 +24,7 @@
#include <stddef.h>

#include "stream.h"
-#include "memory.h"
+#include "lib_memory.h"
#include "network.h"
#include "prefix.h"
#include "log.h"
diff --git a/lib/table.c b/lib/table.c
index da213616849b..af18e919abdd 100644
--- a/lib/table.c
+++ b/lib/table.c
@@ -24,7 +24,7 @@

#include "prefix.h"
#include "table.h"
-#include "memory.h"
+#include "lib_memory.h"
#include "sockunion.h"

static void route_node_delete (struct route_node *);
diff --git a/lib/thread.c b/lib/thread.c
index 6fcddd789a39..4af14d201e2a 100644
--- a/lib/thread.c
+++ b/lib/thread.c
@@ -25,7 +25,7 @@
#include <sys/resource.h>

#include "thread.h"
-#include "memory.h"
+#include "lib_memory.h"
#include "log.h"
#include "hash.h"
#include "pqueue.h"
diff --git a/lib/vector.c b/lib/vector.c
index 7f760b423f69..355b877701eb 100644
--- a/lib/vector.c
+++ b/lib/vector.c
@@ -23,6 +23,8 @@

#include "vector.h"
#include "memory.h"
+#include "lib_memory.h"
+
/* Initialize vector : allocate memory and return vector. */
vector
vector_init (unsigned int size)
diff --git a/lib/vrf.c b/lib/vrf.c
index 29be02a05387..51c71359f61b 100644
--- a/lib/vrf.c
+++ b/lib/vrf.c
@@ -34,7 +34,7 @@
#include "prefix.h"
#include "table.h"
#include "log.h"
-#include "memory.h"
+#include "lib_memory.h"
#include "command.h"
#include "vty.h"

diff --git a/lib/vty.c b/lib/vty.c
index 7ba277fd8a88..4eab201dbe73 100644
--- a/lib/vty.c
+++ b/lib/vty.c
@@ -28,7 +28,7 @@
#include <lib/version.h>
#include "command.h"
#include "sockunion.h"
-#include "memory.h"
+#include "lib_memory.h"
#include "str.h"
#include "log.h"
#include "prefix.h"
diff --git a/lib/workqueue.c b/lib/workqueue.c
index b1a5d5bfe53e..ddf0f852eb63 100644
--- a/lib/workqueue.c
+++ b/lib/workqueue.c
@@ -23,7 +23,7 @@

#include <zebra.h>
#include "thread.h"
-#include "memory.h"
+#include "lib_memory.h"
#include "workqueue.h"
#include "linklist.h"
#include "command.h"
diff --git a/lib/zclient.c b/lib/zclient.c
index eb8de1a8897e..f8a2d4212cb5 100644
--- a/lib/zclient.c
+++ b/lib/zclient.c
@@ -30,7 +30,7 @@
#include "log.h"
#include "thread.h"
#include "zclient.h"
-#include "memory.h"
+#include "lib_memory.h"
#include "table.h"

/* Zebra client events. */
diff --git a/ospf6d/ospf6_main.c b/ospf6d/ospf6_main.c
index adc1c5c581a2..23dcf7b88512 100644
--- a/ospf6d/ospf6_main.c
+++ b/ospf6d/ospf6_main.c
@@ -239,6 +239,8 @@ main (int argc, char *argv[], char *envp[])
/* Preserve name of myself. */
progname = ((p = strrchr (argv[0], '/')) ? ++p : argv[0]);

+ ospf6_memory_init();
+
/* Command line argument treatment. */
while (1)
{
diff --git a/ospf6d/ospf6_memory.c b/ospf6d/ospf6_memory.c
index 6fb9fdf5d884..ad2c544431c2 100644
--- a/ospf6d/ospf6_memory.c
+++ b/ospf6d/ospf6_memory.c
@@ -43,3 +43,26 @@ DEFINE_MTYPE(OSPF6D, OSPF6_NEXTHOP, "OSPF6 nexthop")
DEFINE_MTYPE(OSPF6D, OSPF6_EXTERNAL_INFO,"OSPF6 ext. info")
DEFINE_MTYPE(OSPF6D, OSPF6_OTHER, "OSPF6 other")
DEFINE_MTYPE(OSPF6D, OSPF6_DISTANCE, "OSPF6 distance")
+
+void ospf6_memory_init(void)
+{
+ lib_memory_init();
+
+ INIT_MGROUP(OSPF6D);
+ INIT_MTYPE(OSPF6_TOP);
+ INIT_MTYPE(OSPF6_AREA);
+ INIT_MTYPE(OSPF6_IF);
+ INIT_MTYPE(OSPF6_NEIGHBOR);
+ INIT_MTYPE(OSPF6_ROUTE);
+ INIT_MTYPE(OSPF6_PREFIX);
+ INIT_MTYPE(OSPF6_MESSAGE);
+ INIT_MTYPE(OSPF6_LSA);
+ INIT_MTYPE(OSPF6_LSA_SUMMARY);
+ INIT_MTYPE(OSPF6_LSDB);
+ INIT_MTYPE(OSPF6_VERTEX);
+ INIT_MTYPE(OSPF6_SPFTREE);
+ INIT_MTYPE(OSPF6_NEXTHOP);
+ INIT_MTYPE(OSPF6_EXTERNAL_INFO);
+ INIT_MTYPE(OSPF6_OTHER);
+ INIT_MTYPE(OSPF6_DISTANCE);
+}
diff --git a/ospf6d/ospf6_memory.h b/ospf6d/ospf6_memory.h
index 30bd9dc5406c..a62590ac81d1 100644
--- a/ospf6d/ospf6_memory.h
+++ b/ospf6d/ospf6_memory.h
@@ -24,6 +24,7 @@
#define _QUAGGA_OSPF6_MEMORY_H

#include "memory.h"
+#include "lib_memory.h"

DECLARE_MGROUP(OSPF6D)
DECLARE_MTYPE(OSPF6_TOP)
@@ -42,4 +43,7 @@ DECLARE_MTYPE(OSPF6_NEXTHOP)
DECLARE_MTYPE(OSPF6_EXTERNAL_INFO)
DECLARE_MTYPE(OSPF6_OTHER)
DECLARE_MTYPE(OSPF6_DISTANCE)
+
+extern void ospf6_memory_init(void);
+
#endif /* _QUAGGA_OSPF6_MEMORY_H */
diff --git a/ospfd/ospf_main.c b/ospfd/ospf_main.c
index 5c263a05d236..0b0d55304e21 100644
--- a/ospfd/ospf_main.c
+++ b/ospfd/ospf_main.c
@@ -201,6 +201,8 @@ main (int argc, char **argv)
/* get program name */
progname = ((p = strrchr (argv[0], '/')) ? ++p : argv[0]);

+ ospf_memory_init();
+
while (1)
{
int opt;
diff --git a/ospfd/ospf_memory.c b/ospfd/ospf_memory.c
index 3464e16c1b0e..d489057873d2 100644
--- a/ospfd/ospf_memory.c
+++ b/ospfd/ospf_memory.c
@@ -54,3 +54,39 @@ DEFINE_MTYPE(OSPFD, OSPF_IF_PARAMS, "OSPF if params")
DEFINE_MTYPE(OSPFD, OSPF_MESSAGE, "OSPF message")
DEFINE_MTYPE(OSPFD, OSPF_MPLS_TE, "OSPF MPLS TE")
DEFINE_MTYPE(OSPFD, OSPF_PCE_PARAMS, "OSPF PCS Params")
+
+
+void ospf_memory_init(void)
+{
+ lib_memory_init();
+
+ INIT_MGROUP(OSPFD);
+ INIT_MTYPE(OSPF_TOP);
+ INIT_MTYPE(OSPF_AREA);
+ INIT_MTYPE(OSPF_AREA_RANGE);
+ INIT_MTYPE(OSPF_NETWORK);
+ INIT_MTYPE(OSPF_NEIGHBOR_STATIC);
+ INIT_MTYPE(OSPF_IF);
+ INIT_MTYPE(OSPF_NEIGHBOR);
+ INIT_MTYPE(OSPF_ROUTE);
+ INIT_MTYPE(OSPF_TMP);
+ INIT_MTYPE(OSPF_LSA);
+ INIT_MTYPE(OSPF_LSA_DATA);
+ INIT_MTYPE(OSPF_LSDB);
+ INIT_MTYPE(OSPF_PACKET);
+ INIT_MTYPE(OSPF_FIFO);
+ INIT_MTYPE(OSPF_VERTEX);
+ INIT_MTYPE(OSPF_VERTEX_PARENT);
+ INIT_MTYPE(OSPF_NEXTHOP);
+ INIT_MTYPE(OSPF_PATH);
+ INIT_MTYPE(OSPF_VL_DATA);
+ INIT_MTYPE(OSPF_CRYPT_KEY);
+ INIT_MTYPE(OSPF_EXTERNAL_INFO);
+ INIT_MTYPE(OSPF_DISTANCE);
+ INIT_MTYPE(OSPF_IF_INFO);
+ INIT_MTYPE(OSPF_IF_PARAMS);
+ INIT_MTYPE(OSPF_MESSAGE);
+ INIT_MTYPE(OSPF_MPLS_TE);
+ INIT_MTYPE(OSPF_PCE_PARAMS);
+}
+
diff --git a/ospfd/ospf_memory.h b/ospfd/ospf_memory.h
index b082c95031f0..81bcd4865fa2 100644
--- a/ospfd/ospf_memory.h
+++ b/ospfd/ospf_memory.h
@@ -24,6 +24,7 @@
#define _QUAGGA_OSPF_MEMORY_H

#include "memory.h"
+#include "lib_memory.h"

DECLARE_MGROUP(OSPFD)
DECLARE_MTYPE(OSPF_TOP)
@@ -54,4 +55,5 @@ DECLARE_MTYPE(OSPF_MESSAGE)
DECLARE_MTYPE(OSPF_MPLS_TE)
DECLARE_MTYPE(OSPF_PCE_PARAMS)

+extern void ospf_memory_init(void);
#endif /* _QUAGGA_OSPF_MEMORY_H */
diff --git a/pimd/pim_main.c b/pimd/pim_main.c
index 68fbe9f76e21..cda163d23a0e 100644
--- a/pimd/pim_main.c
+++ b/pimd/pim_main.c
@@ -134,6 +134,8 @@ int main(int argc, char** argv, char** envp) {

progname = ((p = strrchr(argv[0], '/')) ? ++p : argv[0]);

+ pim_memory_init();
+
zlog_default = openzlog(progname, ZLOG_PIM,
LOG_CONS|LOG_NDELAY|LOG_PID, LOG_DAEMON);

diff --git a/pimd/pim_memory.c b/pimd/pim_memory.c
index e955033fadd1..e84f5df19c97 100644
--- a/pimd/pim_memory.c
+++ b/pimd/pim_memory.c
@@ -38,3 +38,21 @@ 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")
+
+void pim_memory_init(void)
+{
+ lib_memory_init();
+
+ INIT_MGROUP(PIMD);
+ INIT_MTYPE(PIM_CHANNEL_OIL);
+ INIT_MTYPE(PIM_INTERFACE);
+ INIT_MTYPE(PIM_IGMP_JOIN);
+ INIT_MTYPE(PIM_IGMP_SOCKET);
+ INIT_MTYPE(PIM_IGMP_GROUP);
+ INIT_MTYPE(PIM_IGMP_GROUP_SOURCE);
+ INIT_MTYPE(PIM_NEIGHBOR);
+ INIT_MTYPE(PIM_IFCHANNEL);
+ INIT_MTYPE(PIM_UPSTREAM);
+ INIT_MTYPE(PIM_SSMPINGD);
+ INIT_MTYPE(PIM_STATIC_ROUTE);
+}
diff --git a/pimd/pim_memory.h b/pimd/pim_memory.h
index eb09375dc6d6..53591b0900ae 100644
--- a/pimd/pim_memory.h
+++ b/pimd/pim_memory.h
@@ -24,6 +24,7 @@
#define _QUAGGA_PIM_MEMORY_H

#include "memory.h"
+#include "lib_memory.h"

DECLARE_MGROUP(PIMD)
DECLARE_MTYPE(PIM_CHANNEL_OIL)
@@ -38,4 +39,6 @@ DECLARE_MTYPE(PIM_UPSTREAM)
DECLARE_MTYPE(PIM_SSMPINGD)
DECLARE_MTYPE(PIM_STATIC_ROUTE)

+extern void pim_memory_init(void);
+
#endif /* _QUAGGA_PIM_MEMORY_H */
diff --git a/ripd/rip_main.c b/ripd/rip_main.c
index 42363c5214d0..2808abfdf331 100644
--- a/ripd/rip_main.c
+++ b/ripd/rip_main.c
@@ -202,6 +202,8 @@ main (int argc, char **argv)
/* Get program name. */
progname = ((p = strrchr (argv[0], '/')) ? ++p : argv[0]);

+ rip_memory_init();
+
/* First of all we need logging init. */
zlog_default = openzlog (progname, ZLOG_RIP,
LOG_CONS|LOG_NDELAY|LOG_PID, LOG_DAEMON);
diff --git a/ripd/rip_memory.c b/ripd/rip_memory.c
index d2a958064ff4..259a85ae4f27 100644
--- a/ripd/rip_memory.c
+++ b/ripd/rip_memory.c
@@ -33,3 +33,16 @@ 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")
+
+void rip_memory_init(void)
+{
+ lib_memory_init();
+
+ INIT_MGROUP(RIPD);
+ INIT_MTYPE(RIP);
+ INIT_MTYPE(RIP_INFO);
+ INIT_MTYPE(RIP_INTERFACE);
+ INIT_MTYPE(RIP_PEER);
+ INIT_MTYPE(RIP_OFFSET_LIST);
+ INIT_MTYPE(RIP_DISTANCE);
+}
diff --git a/ripd/rip_memory.h b/ripd/rip_memory.h
index 7aec2193059c..9544602bbadb 100644
--- a/ripd/rip_memory.h
+++ b/ripd/rip_memory.h
@@ -24,6 +24,7 @@
#define _QUAGGA_RIP_MEMORY_H

#include "memory.h"
+#include "lib_memory.h"

DECLARE_MGROUP(RIPD)
DECLARE_MTYPE(RIP)
@@ -33,4 +34,6 @@ DECLARE_MTYPE(RIP_PEER)
DECLARE_MTYPE(RIP_OFFSET_LIST)
DECLARE_MTYPE(RIP_DISTANCE)

+extern void rip_memory_init(void);
+
#endif /* _QUAGGA_RIP_MEMORY_H */
diff --git a/ripngd/ripng_main.c b/ripngd/ripng_main.c
index ee7beec93ca9..7a74ea6bd9e3 100644
--- a/ripngd/ripng_main.c
+++ b/ripngd/ripng_main.c
@@ -202,6 +202,8 @@ main (int argc, char **argv)
/* get program name */
progname = ((p = strrchr (argv[0], '/')) ? ++p : argv[0]);

+ ripng_memory_init();
+
zlog_default = openzlog(progname, ZLOG_RIPNG,
LOG_CONS|LOG_NDELAY|LOG_PID, LOG_DAEMON);

diff --git a/ripngd/ripng_memory.c b/ripngd/ripng_memory.c
index 1d2320ee2606..e1e60c748a01 100644
--- a/ripngd/ripng_memory.c
+++ b/ripngd/ripng_memory.c
@@ -33,3 +33,16 @@ 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")
+
+void ripng_memory_init(void)
+{
+ lib_memory_init();
+
+ INIT_MGROUP(RIPNGD);
+ INIT_MTYPE(RIPNG);
+ INIT_MTYPE(RIPNG_ROUTE);
+ INIT_MTYPE(RIPNG_AGGREGATE);
+ INIT_MTYPE(RIPNG_PEER);
+ INIT_MTYPE(RIPNG_OFFSET_LIST);
+ INIT_MTYPE(RIPNG_RTE_DATA);
+}
diff --git a/ripngd/ripng_memory.h b/ripngd/ripng_memory.h
index 76b830afb4f9..448125753f8a 100644
--- a/ripngd/ripng_memory.h
+++ b/ripngd/ripng_memory.h
@@ -24,6 +24,7 @@
#define _QUAGGA_RIPNG_MEMORY_H

#include "memory.h"
+#include "lib_memory.h"

DECLARE_MGROUP(RIPNGD)
DECLARE_MTYPE(RIPNG)
@@ -33,4 +34,6 @@ DECLARE_MTYPE(RIPNG_PEER)
DECLARE_MTYPE(RIPNG_OFFSET_LIST)
DECLARE_MTYPE(RIPNG_RTE_DATA)

+extern void ripng_memory_init(void);
+
#endif /* _QUAGGA_RIPNG_MEMORY_H */
diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c
index 2e2203da61d7..181e744f8900 100644
--- a/vtysh/vtysh.c
+++ b/vtysh/vtysh.c
@@ -32,6 +32,7 @@

#include "command.h"
#include "memory.h"
+#include "lib_memory.h"
#include "vtysh/vtysh.h"
#include "log.h"
#include "bgpd/bgp_vty.h"
diff --git a/vtysh/vtysh_main.c b/vtysh/vtysh_main.c
index 34a1a65d692a..27e4d3425741 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 "lib_memory.h"
#include "memory_vty.h"

#include "vtysh/vtysh.h"
diff --git a/vtysh/vtysh_user.c b/vtysh/vtysh_user.c
index 248b181205dd..bfb7234cf22e 100644
--- a/vtysh/vtysh_user.c
+++ b/vtysh/vtysh_user.c
@@ -35,6 +35,7 @@
#endif /* USE_PAM */

#include "memory.h"
+#include "lib_memory.h"
#include "linklist.h"
#include "command.h"
#include "vtysh_user.h"
diff --git a/zebra/main.c b/zebra/main.c
index 0c0b82d5f9b2..5f498f61e752 100644
--- a/zebra/main.c
+++ b/zebra/main.c
@@ -307,6 +307,8 @@ main (int argc, char **argv)
/* preserve my name */
progname = ((p = strrchr (argv[0], '/')) ? ++p : argv[0]);

+ zebra_memory_init();
+
zlog_default = openzlog (progname, ZLOG_ZEBRA,
LOG_CONS|LOG_NDELAY|LOG_PID, LOG_DAEMON);

diff --git a/zebra/zebra_memory.c b/zebra/zebra_memory.c
index cf10b8e45512..a6683f143077 100644
--- a/zebra/zebra_memory.c
+++ b/zebra/zebra_memory.c
@@ -37,3 +37,20 @@ DEFINE_MTYPE(ZEBRA, RIB_DEST, "RIB destination")
DEFINE_MTYPE(ZEBRA, RIB_TABLE_INFO, "RIB table info")
DEFINE_MTYPE(ZEBRA, NETLINK_NAME, "Netlink name")
DEFINE_MTYPE(ZEBRA, RNH, "RNH")
+
+void zebra_memory_init(void)
+{
+ lib_memory_init();
+
+ INIT_MGROUP(ZEBRA);
+ INIT_MTYPE(RTADV_PREFIX);
+ INIT_MTYPE(ZEBRA_VRF);
+ INIT_MTYPE(NEXTHOP);
+ INIT_MTYPE(RIB);
+ INIT_MTYPE(RIB_QUEUE);
+ INIT_MTYPE(STATIC_ROUTE);
+ INIT_MTYPE(RIB_DEST);
+ INIT_MTYPE(RIB_TABLE_INFO);
+ INIT_MTYPE(NETLINK_NAME);
+ INIT_MTYPE(RNH);
+}
diff --git a/zebra/zebra_memory.h b/zebra/zebra_memory.h
index d0e820488e13..9cd989a00c75 100644
--- a/zebra/zebra_memory.h
+++ b/zebra/zebra_memory.h
@@ -24,6 +24,7 @@
#define _QUAGGA_ZEBRA_MEMORY_H

#include "memory.h"
+#include "lib_memory.h"

DECLARE_MGROUP(ZEBRA)
DECLARE_MTYPE(RTADV_PREFIX)
@@ -36,4 +37,7 @@ DECLARE_MTYPE(RIB_DEST)
DECLARE_MTYPE(RIB_TABLE_INFO)
DECLARE_MTYPE(NETLINK_NAME)
DECLARE_MTYPE(RNH)
+
+extern void zebra_memory_init(void);
+
#endif /* _QUAGGA_ZEBRA_MEMORY_H */
--
2.1.4


_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
https://lists.quagga.net/mailman/listinfo/quagga-dev