Acked-by: Donald Sharp <[email protected]>

On Wed, Feb 24, 2016 at 12:26 AM, David Lamparter <
[email protected]> wrote:

> This is a rather large mechanical commit that splits up the memory types
> defined in lib/memtypes.c and distributes them into *_memory.[ch] files
> in the individual daemons.
>
> The zebra change is slightly annoying because there is no nice place to
> put the #include "zebra_memory.h" statement.
>
> Signed-off-by: David Lamparter <[email protected]>
> ---
>  bgpd/Makefile.am         |   2 +
>  bgpd/bgp_community.c     |   1 +
>  bgpd/bgp_memory.c        |  99 ++++++++++++++++++++++++
>  bgpd/bgp_memory.h        |  95 ++++++++++++++++++++++++
>  bgpd/bgpd.h              |   1 +
>  isisd/Makefile.am        |   2 +
>  isisd/dict.c             |   1 +
>  isisd/isis_memory.c      |  45 +++++++++++
>  isisd/isis_memory.h      |  46 ++++++++++++
>  isisd/isisd.h            |   1 +
>  lib/memtypes.c           | 190
> -----------------------------------------------
>  ospf6d/Makefile.am       |   2 +
>  ospf6d/ospf6_memory.c    |  44 +++++++++++
>  ospf6d/ospf6_memory.h    |  45 +++++++++++
>  ospf6d/ospf6d.h          |   2 +
>  ospfd/Makefile.am        |   6 +-
>  ospfd/ospf_memory.c      |  54 ++++++++++++++
>  ospfd/ospf_memory.h      |  55 ++++++++++++++
>  ospfd/ospfd.h            |   2 +
>  pimd/Makefile.am         |   2 +
>  pimd/pim_memory.c        |  40 ++++++++++
>  pimd/pim_memory.h        |  41 ++++++++++
>  pimd/pimd.h              |   1 +
>  ripd/Makefile.am         |   2 +
>  ripd/rip_memory.c        |  35 +++++++++
>  ripd/rip_memory.h        |  36 +++++++++
>  ripd/ripd.h              |   2 +
>  ripngd/Makefile.am       |   2 +
>  ripngd/ripng_memory.c    |  35 +++++++++
>  ripngd/ripng_memory.h    |  36 +++++++++
>  ripngd/ripngd.h          |   2 +
>  vtysh/vtysh.h            |   3 +
>  vtysh/vtysh_config.c     |   4 +
>  zebra/Makefile.am        |   6 +-
>  zebra/connected.c        |   1 +
>  zebra/if_ioctl.c         |   1 +
>  zebra/if_ioctl_solaris.c |   1 +
>  zebra/if_sysctl.c        |   1 +
>  zebra/interface.c        |   1 +
>  zebra/irdp_interface.c   |   1 +
>  zebra/irdp_main.c        |   1 +
>  zebra/irdp_packet.c      |   1 +
>  zebra/kernel_socket.c    |   1 +
>  zebra/main.c             |   1 +
>  zebra/router-id.c        |   1 +
>  zebra/rt_netlink.c       |   1 +
>  zebra/rtadv.c            |   1 +
>  zebra/rtread_sysctl.c    |   1 +
>  zebra/test_main.c        |   1 +
>  zebra/zebra_memory.c     |  38 ++++++++++
>  zebra/zebra_memory.h     |  39 ++++++++++
>  zebra/zebra_rib.c        |   1 +
>  zebra/zebra_routemap.c   |   1 +
>  zebra/zebra_vty.c        |   1 +
>  zebra/zserv.c            |   1 +
>  55 files changed, 843 insertions(+), 193 deletions(-)
>  create mode 100644 bgpd/bgp_memory.c
>  create mode 100644 bgpd/bgp_memory.h
>  create mode 100644 isisd/isis_memory.c
>  create mode 100644 isisd/isis_memory.h
>  create mode 100644 ospf6d/ospf6_memory.c
>  create mode 100644 ospf6d/ospf6_memory.h
>  create mode 100644 ospfd/ospf_memory.c
>  create mode 100644 ospfd/ospf_memory.h
>  create mode 100644 pimd/pim_memory.c
>  create mode 100644 pimd/pim_memory.h
>  create mode 100644 ripd/rip_memory.c
>  create mode 100644 ripd/rip_memory.h
>  create mode 100644 ripngd/ripng_memory.c
>  create mode 100644 ripngd/ripng_memory.h
>  create mode 100644 zebra/zebra_memory.c
>  create mode 100644 zebra/zebra_memory.h
>
> diff --git a/bgpd/Makefile.am b/bgpd/Makefile.am
> index d2775f3..608d018 100644
> --- a/bgpd/Makefile.am
> +++ b/bgpd/Makefile.am
> @@ -11,6 +11,7 @@ sbin_PROGRAMS = bgpd
>  bin_PROGRAMS = bgp_btoa
>
>  libbgp_a_SOURCES = \
> +       bgp_memory.c \
>         bgpd.c bgp_fsm.c bgp_aspath.c bgp_community.c bgp_attr.c \
>         bgp_debug.c bgp_route.c bgp_zebra.c bgp_open.c bgp_routemap.c \
>         bgp_packet.c bgp_network.c bgp_filter.c bgp_regex.c bgp_clist.c \
> @@ -19,6 +20,7 @@ libbgp_a_SOURCES = \
>         bgp_encap.c bgp_encap_tlv.c
>
>  noinst_HEADERS = \
> +       bgp_memory.h \
>         bgp_aspath.h bgp_attr.h bgp_community.h bgp_debug.h bgp_fsm.h \
>         bgp_network.h bgp_open.h bgp_packet.h bgp_regex.h bgp_route.h \
>         bgpd.h bgp_filter.h bgp_clist.h bgp_dump.h bgp_zebra.h \
> diff --git a/bgpd/bgp_community.c b/bgpd/bgp_community.c
> index f1997bd..0d272c4 100644
> --- a/bgpd/bgp_community.c
> +++ b/bgpd/bgp_community.c
> @@ -23,6 +23,7 @@ Software Foundation, Inc., 59 Temple Place - Suite 330,
> Boston, MA
>  #include "hash.h"
>  #include "memory.h"
>
> +#include "bgpd/bgp_memory.h"
>  #include "bgpd/bgp_community.h"
>
>  /* Hash of community attribute. */
> diff --git a/bgpd/bgp_memory.c b/bgpd/bgp_memory.c
> new file mode 100644
> index 0000000..1a0b2c3
> --- /dev/null
> +++ b/bgpd/bgp_memory.c
> @@ -0,0 +1,99 @@
> +/* bgpd memory type definitions
> + *
> + * Copyright (C) 2015  David Lamparter
> + *
> + * 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.
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include "bgp_memory.h"
> +
> +/* this file is temporary in nature;  definitions should be moved to the
> + * files they're used in */
> +
> +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, ENCAP_TLV,          "ENCAP TLV")
> +
> +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")
> +
> +
> diff --git a/bgpd/bgp_memory.h b/bgpd/bgp_memory.h
> new file mode 100644
> index 0000000..4da9f99
> --- /dev/null
> +++ b/bgpd/bgp_memory.h
> @@ -0,0 +1,95 @@
> +/* bgpd memory type declarations
> + *
> + * Copyright (C) 2015  David Lamparter
> + *
> + * 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_BGP_MEMORY_H
> +#define _QUAGGA_BGP_MEMORY_H
> +
> +#include "memory.h"
> +
> +DECLARE_MGROUP(BGPD)
> +DECLARE_MTYPE(BGP)
> +DECLARE_MTYPE(BGP_LISTENER)
> +DECLARE_MTYPE(BGP_PEER)
> +DECLARE_MTYPE(BGP_PEER_HOST)
> +DECLARE_MTYPE(PEER_GROUP)
> +DECLARE_MTYPE(PEER_DESC)
> +DECLARE_MTYPE(PEER_PASSWORD)
> +DECLARE_MTYPE(ATTR)
> +DECLARE_MTYPE(ATTR_EXTRA)
> +DECLARE_MTYPE(AS_PATH)
> +DECLARE_MTYPE(AS_SEG)
> +DECLARE_MTYPE(AS_SEG_DATA)
> +DECLARE_MTYPE(AS_STR)
> +
> +DECLARE_MTYPE(BGP_TABLE)
> +DECLARE_MTYPE(BGP_NODE)
> +DECLARE_MTYPE(BGP_ROUTE)
> +DECLARE_MTYPE(BGP_ROUTE_EXTRA)
> +DECLARE_MTYPE(BGP_CONN)
> +DECLARE_MTYPE(BGP_STATIC)
> +DECLARE_MTYPE(BGP_ADVERTISE_ATTR)
> +DECLARE_MTYPE(BGP_ADVERTISE)
> +DECLARE_MTYPE(BGP_SYNCHRONISE)
> +DECLARE_MTYPE(BGP_ADJ_IN)
> +DECLARE_MTYPE(BGP_ADJ_OUT)
> +DECLARE_MTYPE(BGP_MPATH_INFO)
> +
> +DECLARE_MTYPE(AS_LIST)
> +DECLARE_MTYPE(AS_FILTER)
> +DECLARE_MTYPE(AS_FILTER_STR)
> +
> +DECLARE_MTYPE(COMMUNITY)
> +DECLARE_MTYPE(COMMUNITY_VAL)
> +DECLARE_MTYPE(COMMUNITY_STR)
> +
> +DECLARE_MTYPE(ECOMMUNITY)
> +DECLARE_MTYPE(ECOMMUNITY_VAL)
> +DECLARE_MTYPE(ECOMMUNITY_STR)
> +
> +DECLARE_MTYPE(COMMUNITY_LIST)
> +DECLARE_MTYPE(COMMUNITY_LIST_NAME)
> +DECLARE_MTYPE(COMMUNITY_LIST_ENTRY)
> +DECLARE_MTYPE(COMMUNITY_LIST_CONFIG)
> +DECLARE_MTYPE(COMMUNITY_LIST_HANDLER)
> +
> +DECLARE_MTYPE(CLUSTER)
> +DECLARE_MTYPE(CLUSTER_VAL)
> +
> +DECLARE_MTYPE(BGP_PROCESS_QUEUE)
> +DECLARE_MTYPE(BGP_CLEAR_NODE_QUEUE)
> +
> +DECLARE_MTYPE(TRANSIT)
> +DECLARE_MTYPE(TRANSIT_VAL)
> +
> +DECLARE_MTYPE(ENCAP_TLV)
> +
> +DECLARE_MTYPE(BGP_DISTANCE)
> +DECLARE_MTYPE(BGP_NEXTHOP_CACHE)
> +DECLARE_MTYPE(BGP_CONFED_LIST)
> +DECLARE_MTYPE(PEER_UPDATE_SOURCE)
> +DECLARE_MTYPE(BGP_DAMP_INFO)
> +DECLARE_MTYPE(BGP_DAMP_ARRAY)
> +DECLARE_MTYPE(BGP_REGEXP)
> +DECLARE_MTYPE(BGP_AGGREGATE)
> +DECLARE_MTYPE(BGP_ADDR)
> +
> +#endif /* _QUAGGA_BGP_MEMORY_H */
> diff --git a/bgpd/bgpd.h b/bgpd/bgpd.h
> index 5be5a19..37d8912 100644
> --- a/bgpd/bgpd.h
> +++ b/bgpd/bgpd.h
> @@ -23,6 +23,7 @@ Software Foundation, Inc., 59 Temple Place - Suite 330,
> Boston, MA
>
>  /* For union sockunion.  */
>  #include "sockunion.h"
> +#include "bgp_memory.h"
>
>  /* Typedef BGP specific types.  */
>  typedef u_int32_t as_t;
> diff --git a/isisd/Makefile.am b/isisd/Makefile.am
> index 5f86663..39ff320 100644
> --- a/isisd/Makefile.am
> +++ b/isisd/Makefile.am
> @@ -13,6 +13,7 @@ sbin_PROGRAMS = isisd
>  SUBDIRS = topology
>
>  libisis_a_SOURCES = \
> +       isis_memory.c \
>         isis_adjacency.c isis_lsp.c dict.c isis_circuit.c isis_pdu.c \
>         isis_tlv.c isisd.c isis_misc.c isis_zebra.c isis_dr.c \
>         isis_flags.c isis_dynhn.c iso_checksum.c isis_csm.c isis_events.c \
> @@ -20,6 +21,7 @@ libisis_a_SOURCES = \
>
>
>  noinst_HEADERS = \
> +       isis_memory.h \
>         isisd.h isis_pdu.h isis_tlv.h isis_adjacency.h isis_constants.h \
>         isis_lsp.h dict.h isis_circuit.h isis_misc.h isis_network.h \
>         isis_zebra.h isis_dr.h isis_flags.h isis_dynhn.h isis_common.h \
> diff --git a/isisd/dict.c b/isisd/dict.c
> index bbcb421..a038028 100644
> --- a/isisd/dict.c
> +++ b/isisd/dict.c
> @@ -18,6 +18,7 @@
>  #include "zebra.h"
>  #include "zassert.h"
>  #include "memory.h"
> +#include "isis_memory.h"
>  #include "dict.h"
>
>  /*
> diff --git a/isisd/isis_memory.c b/isisd/isis_memory.c
> new file mode 100644
> index 0000000..9bc506e
> --- /dev/null
> +++ b/isisd/isis_memory.c
> @@ -0,0 +1,45 @@
> +/* isisd memory type definitions
> + *
> + * Copyright (C) 2015  David Lamparter
> + *
> + * 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.
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include "isis_memory.h"
> +
> +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")
> diff --git a/isisd/isis_memory.h b/isisd/isis_memory.h
> new file mode 100644
> index 0000000..40bb88a
> --- /dev/null
> +++ b/isisd/isis_memory.h
> @@ -0,0 +1,46 @@
> +/* isisd memory type declarations
> + *
> + * Copyright (C) 2015  David Lamparter
> + *
> + * 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_ISIS_MEMORY_H
> +#define _QUAGGA_ISIS_MEMORY_H
> +
> +#include "memory.h"
> +
> +DECLARE_MGROUP(ISISD)
> +DECLARE_MTYPE(ISIS)
> +DECLARE_MTYPE(ISIS_TMP)
> +DECLARE_MTYPE(ISIS_CIRCUIT)
> +DECLARE_MTYPE(ISIS_LSP)
> +DECLARE_MTYPE(ISIS_ADJACENCY)
> +DECLARE_MTYPE(ISIS_AREA)
> +DECLARE_MTYPE(ISIS_AREA_ADDR)
> +DECLARE_MTYPE(ISIS_TLV)
> +DECLARE_MTYPE(ISIS_DYNHN)
> +DECLARE_MTYPE(ISIS_SPFTREE)
> +DECLARE_MTYPE(ISIS_VERTEX)
> +DECLARE_MTYPE(ISIS_ROUTE_INFO)
> +DECLARE_MTYPE(ISIS_NEXTHOP)
> +DECLARE_MTYPE(ISIS_NEXTHOP6)
> +DECLARE_MTYPE(ISIS_DICT)
> +DECLARE_MTYPE(ISIS_DICT_NODE)
> +
> +#endif /* _QUAGGA_ISIS_MEMORY_H */
> diff --git a/isisd/isisd.h b/isisd/isisd.h
> index 1a88efd..53c8e18 100644
> --- a/isisd/isisd.h
> +++ b/isisd/isisd.h
> @@ -26,6 +26,7 @@
>  #define ISISD_VERSION "0.0.7"
>
>  #include "isisd/isis_redist.h"
> +#include "isis_memory.h"
>
>  /* uncomment if you are a developer in bug hunt */
>  /* #define EXTREME_DEBUG  */
> diff --git a/lib/memtypes.c b/lib/memtypes.c
> index 1e72ab6..ae6532a 100644
> --- a/lib/memtypes.c
> +++ b/lib/memtypes.c
> @@ -75,197 +75,7 @@ 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/ospf6d/Makefile.am b/ospf6d/Makefile.am
> index 75f2257..d988ae9 100644
> --- a/ospf6d/Makefile.am
> +++ b/ospf6d/Makefile.am
> @@ -10,6 +10,7 @@ noinst_LIBRARIES = libospf6.a
>  sbin_PROGRAMS = ospf6d
>
>  libospf6_a_SOURCES = \
> +       ospf6_memory.c \
>         ospf6_network.c ospf6_message.c ospf6_lsa.c ospf6_lsdb.c \
>         ospf6_top.c ospf6_area.c ospf6_interface.c ospf6_neighbor.c \
>         ospf6_flood.c ospf6_route.c ospf6_intra.c ospf6_zebra.c \
> @@ -17,6 +18,7 @@ libospf6_a_SOURCES = \
>         ospf6d.c
>
>  noinst_HEADERS = \
> +       ospf6_memory.h \
>         ospf6_network.h ospf6_message.h ospf6_lsa.h ospf6_lsdb.h \
>         ospf6_top.h ospf6_area.h ospf6_interface.h ospf6_neighbor.h \
>         ospf6_flood.h ospf6_route.h ospf6_intra.h ospf6_zebra.h \
> diff --git a/ospf6d/ospf6_memory.c b/ospf6d/ospf6_memory.c
> new file mode 100644
> index 0000000..7f2fbbf
> --- /dev/null
> +++ b/ospf6d/ospf6_memory.c
> @@ -0,0 +1,44 @@
> +/* ospf6d memory type definitions
> + *
> + * Copyright (C) 2015  David Lamparter
> + *
> + * 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.
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include "ospf6_memory.h"
> +
> +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")
> diff --git a/ospf6d/ospf6_memory.h b/ospf6d/ospf6_memory.h
> new file mode 100644
> index 0000000..3ff5de4
> --- /dev/null
> +++ b/ospf6d/ospf6_memory.h
> @@ -0,0 +1,45 @@
> +/* ospf6d memory type declarations
> + *
> + * Copyright (C) 2015  David Lamparter
> + *
> + * 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_OSPF6_MEMORY_H
> +#define _QUAGGA_OSPF6_MEMORY_H
> +
> +#include "memory.h"
> +
> +DECLARE_MGROUP(OSPF6D)
> +DECLARE_MTYPE(OSPF6_TOP)
> +DECLARE_MTYPE(OSPF6_AREA)
> +DECLARE_MTYPE(OSPF6_IF)
> +DECLARE_MTYPE(OSPF6_NEIGHBOR)
> +DECLARE_MTYPE(OSPF6_ROUTE)
> +DECLARE_MTYPE(OSPF6_PREFIX)
> +DECLARE_MTYPE(OSPF6_MESSAGE)
> +DECLARE_MTYPE(OSPF6_LSA)
> +DECLARE_MTYPE(OSPF6_LSA_SUMMARY)
> +DECLARE_MTYPE(OSPF6_LSDB)
> +DECLARE_MTYPE(OSPF6_VERTEX)
> +DECLARE_MTYPE(OSPF6_SPFTREE)
> +DECLARE_MTYPE(OSPF6_NEXTHOP)
> +DECLARE_MTYPE(OSPF6_EXTERNAL_INFO)
> +DECLARE_MTYPE(OSPF6_OTHER)
> +
> +#endif /* _QUAGGA_OSPF6_MEMORY_H */
> diff --git a/ospf6d/ospf6d.h b/ospf6d/ospf6d.h
> index 9e2efb4..b41e8ff 100644
> --- a/ospf6d/ospf6d.h
> +++ b/ospf6d/ospf6d.h
> @@ -27,6 +27,8 @@
>  #include "libospf.h"
>  #include "thread.h"
>
> +#include "ospf6_memory.h"
> +
>  /* global variables */
>  extern struct thread_master *master;
>
> diff --git a/ospfd/Makefile.am b/ospfd/Makefile.am
> index f21f507..7055ea5 100644
> --- a/ospfd/Makefile.am
> +++ b/ospfd/Makefile.am
> @@ -16,7 +16,8 @@ libospf_la_SOURCES = \
>         ospf_nsm.c ospf_dump.c ospf_network.c ospf_packet.c ospf_lsa.c \
>         ospf_spf.c ospf_route.c ospf_ase.c ospf_abr.c ospf_ia.c
> ospf_flood.c \
>         ospf_lsdb.c ospf_asbr.c ospf_routemap.c ospf_snmp.c \
> -       ospf_opaque.c ospf_te.c ospf_vty.c ospf_api.c ospf_apiserver.c
> +       ospf_opaque.c ospf_te.c ospf_vty.c ospf_api.c ospf_apiserver.c \
> +       ospf_memory.c
>
>  ospfdheaderdir = $(pkgincludedir)/ospfd
>
> @@ -27,7 +28,8 @@ ospfdheader_HEADERS = \
>  noinst_HEADERS = \
>         ospf_interface.h ospf_neighbor.h ospf_network.h ospf_packet.h \
>         ospf_zebra.h ospf_spf.h ospf_route.h ospf_ase.h ospf_abr.h
> ospf_ia.h \
> -       ospf_flood.h ospf_snmp.h ospf_te.h ospf_vty.h ospf_apiserver.h
> +       ospf_flood.h ospf_snmp.h ospf_te.h ospf_vty.h ospf_apiserver.h \
> +       ospf_memory.h
>
>  ospfd_SOURCES = ospf_main.c
>
> diff --git a/ospfd/ospf_memory.c b/ospfd/ospf_memory.c
> new file mode 100644
> index 0000000..ab7e41e
> --- /dev/null
> +++ b/ospfd/ospf_memory.c
> @@ -0,0 +1,54 @@
> +/* ospfd memory type definitions
> + *
> + * Copyright (C) 2015  David Lamparter
> + *
> + * 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.
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include "ospf_memory.h"
> +
> +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")
> diff --git a/ospfd/ospf_memory.h b/ospfd/ospf_memory.h
> new file mode 100644
> index 0000000..1b775ef
> --- /dev/null
> +++ b/ospfd/ospf_memory.h
> @@ -0,0 +1,55 @@
> +/* ospfd memory type declarations
> + *
> + * Copyright (C) 2015  David Lamparter
> + *
> + * 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_OSPF_MEMORY_H
> +#define _QUAGGA_OSPF_MEMORY_H
> +
> +#include "memory.h"
> +
> +DECLARE_MGROUP(OSPFD)
> +DECLARE_MTYPE(OSPF_TOP)
> +DECLARE_MTYPE(OSPF_AREA)
> +DECLARE_MTYPE(OSPF_AREA_RANGE)
> +DECLARE_MTYPE(OSPF_NETWORK)
> +DECLARE_MTYPE(OSPF_NEIGHBOR_STATIC)
> +DECLARE_MTYPE(OSPF_IF)
> +DECLARE_MTYPE(OSPF_NEIGHBOR)
> +DECLARE_MTYPE(OSPF_ROUTE)
> +DECLARE_MTYPE(OSPF_TMP)
> +DECLARE_MTYPE(OSPF_LSA)
> +DECLARE_MTYPE(OSPF_LSA_DATA)
> +DECLARE_MTYPE(OSPF_LSDB)
> +DECLARE_MTYPE(OSPF_PACKET)
> +DECLARE_MTYPE(OSPF_FIFO)
> +DECLARE_MTYPE(OSPF_VERTEX)
> +DECLARE_MTYPE(OSPF_VERTEX_PARENT)
> +DECLARE_MTYPE(OSPF_NEXTHOP)
> +DECLARE_MTYPE(OSPF_PATH)
> +DECLARE_MTYPE(OSPF_VL_DATA)
> +DECLARE_MTYPE(OSPF_CRYPT_KEY)
> +DECLARE_MTYPE(OSPF_EXTERNAL_INFO)
> +DECLARE_MTYPE(OSPF_DISTANCE)
> +DECLARE_MTYPE(OSPF_IF_INFO)
> +DECLARE_MTYPE(OSPF_IF_PARAMS)
> +DECLARE_MTYPE(OSPF_MESSAGE)
> +
> +#endif /* _QUAGGA_OSPF_MEMORY_H */
> diff --git a/ospfd/ospfd.h b/ospfd/ospfd.h
> index 098fc5f..ad6913a 100644
> --- a/ospfd/ospfd.h
> +++ b/ospfd/ospfd.h
> @@ -29,6 +29,8 @@
>  #include "filter.h"
>  #include "log.h"
>
> +#include "ospf_memory.h"
> +
>  #define OSPF_VERSION            2
>
>  /* VTY port number. */
> diff --git a/pimd/Makefile.am b/pimd/Makefile.am
> index f57c4c2..037aa57 100644
> --- a/pimd/Makefile.am
> +++ b/pimd/Makefile.am
> @@ -46,6 +46,7 @@ sbin_PROGRAMS = pimd
>  bin_PROGRAMS = test_igmpv3_join
>
>  libpim_a_SOURCES = \
> +       pim_memory.c \
>         pimd.c pim_version.c pim_cmd.c pim_signals.c pim_iface.c \
>         pim_vty.c pim_igmp.c pim_sock.c pim_zebra.c \
>         pim_igmpv3.c pim_str.c pim_mroute.c pim_util.c pim_time.c \
> @@ -55,6 +56,7 @@ libpim_a_SOURCES = \
>         pim_igmp_join.c pim_ssmpingd.c pim_int.c pim_static.c
>
>  noinst_HEADERS = \
> +       pim_memory.h \
>         pimd.h pim_version.h pim_cmd.h pim_signals.h pim_iface.h \
>         pim_vty.h pim_igmp.h pim_sock.h pim_zebra.h \
>         pim_igmpv3.h pim_str.h pim_mroute.h pim_util.h pim_time.h \
> diff --git a/pimd/pim_memory.c b/pimd/pim_memory.c
> new file mode 100644
> index 0000000..e955033
> --- /dev/null
> +++ b/pimd/pim_memory.c
> @@ -0,0 +1,40 @@
> +/* pimd memory type definitions
> + *
> + * Copyright (C) 2015  David Lamparter
> + *
> + * 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.
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include "pim_memory.h"
> +
> +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")
> diff --git a/pimd/pim_memory.h b/pimd/pim_memory.h
> new file mode 100644
> index 0000000..eb09375
> --- /dev/null
> +++ b/pimd/pim_memory.h
> @@ -0,0 +1,41 @@
> +/* pimd memory type declarations
> + *
> + * Copyright (C) 2015  David Lamparter
> + *
> + * 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_PIM_MEMORY_H
> +#define _QUAGGA_PIM_MEMORY_H
> +
> +#include "memory.h"
> +
> +DECLARE_MGROUP(PIMD)
> +DECLARE_MTYPE(PIM_CHANNEL_OIL)
> +DECLARE_MTYPE(PIM_INTERFACE)
> +DECLARE_MTYPE(PIM_IGMP_JOIN)
> +DECLARE_MTYPE(PIM_IGMP_SOCKET)
> +DECLARE_MTYPE(PIM_IGMP_GROUP)
> +DECLARE_MTYPE(PIM_IGMP_GROUP_SOURCE)
> +DECLARE_MTYPE(PIM_NEIGHBOR)
> +DECLARE_MTYPE(PIM_IFCHANNEL)
> +DECLARE_MTYPE(PIM_UPSTREAM)
> +DECLARE_MTYPE(PIM_SSMPINGD)
> +DECLARE_MTYPE(PIM_STATIC_ROUTE)
> +
> +#endif /* _QUAGGA_PIM_MEMORY_H */
> diff --git a/pimd/pimd.h b/pimd/pimd.h
> index aed26be..75c1dec 100644
> --- a/pimd/pimd.h
> +++ b/pimd/pimd.h
> @@ -25,6 +25,7 @@
>
>  #include <stdint.h>
>
> +#include "pim_memory.h"
>  #include "pim_mroute.h"
>  #include "pim_assert.h"
>
> diff --git a/ripd/Makefile.am b/ripd/Makefile.am
> index 571a499..e7073a7 100644
> --- a/ripd/Makefile.am
> +++ b/ripd/Makefile.am
> @@ -10,10 +10,12 @@ noinst_LIBRARIES = librip.a
>  sbin_PROGRAMS = ripd
>
>  librip_a_SOURCES = \
> +       rip_memory.c \
>         ripd.c rip_zebra.c rip_interface.c rip_debug.c rip_snmp.c \
>         rip_routemap.c rip_peer.c rip_offset.c
>
>  noinst_HEADERS = \
> +       rip_memory.h \
>         ripd.h rip_debug.h rip_interface.h
>
>  ripd_SOURCES = \
> diff --git a/ripd/rip_memory.c b/ripd/rip_memory.c
> new file mode 100644
> index 0000000..d2a9580
> --- /dev/null
> +++ b/ripd/rip_memory.c
> @@ -0,0 +1,35 @@
> +/* ripd memory type definitions
> + *
> + * Copyright (C) 2015  David Lamparter
> + *
> + * 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.
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include "rip_memory.h"
> +
> +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")
> diff --git a/ripd/rip_memory.h b/ripd/rip_memory.h
> new file mode 100644
> index 0000000..7aec219
> --- /dev/null
> +++ b/ripd/rip_memory.h
> @@ -0,0 +1,36 @@
> +/* ripd memory type declarations
> + *
> + * Copyright (C) 2015  David Lamparter
> + *
> + * 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_RIP_MEMORY_H
> +#define _QUAGGA_RIP_MEMORY_H
> +
> +#include "memory.h"
> +
> +DECLARE_MGROUP(RIPD)
> +DECLARE_MTYPE(RIP)
> +DECLARE_MTYPE(RIP_INFO)
> +DECLARE_MTYPE(RIP_INTERFACE)
> +DECLARE_MTYPE(RIP_PEER)
> +DECLARE_MTYPE(RIP_OFFSET_LIST)
> +DECLARE_MTYPE(RIP_DISTANCE)
> +
> +#endif /* _QUAGGA_RIP_MEMORY_H */
> diff --git a/ripd/ripd.h b/ripd/ripd.h
> index dbed342..43479d8 100644
> --- a/ripd/ripd.h
> +++ b/ripd/ripd.h
> @@ -22,6 +22,8 @@
>  #ifndef _ZEBRA_RIP_H
>  #define _ZEBRA_RIP_H
>
> +#include "rip_memory.h"
> +
>  /* RIP version number. */
>  #define RIPv1                            1
>  #define RIPv2                            2
> diff --git a/ripngd/Makefile.am b/ripngd/Makefile.am
> index df0f7d3..c08e58a 100644
> --- a/ripngd/Makefile.am
> +++ b/ripngd/Makefile.am
> @@ -10,10 +10,12 @@ noinst_LIBRARIES = libripng.a
>  sbin_PROGRAMS = ripngd
>
>  libripng_a_SOURCES = \
> +       ripng_memory.c \
>         ripng_interface.c ripngd.c ripng_zebra.c ripng_route.c
> ripng_debug.c \
>         ripng_routemap.c ripng_offset.c ripng_peer.c ripng_nexthop.c
>
>  noinst_HEADERS = \
> +       ripng_memory.h \
>         ripng_debug.h ripng_route.h ripngd.h ripng_nexthop.h
>
>  ripngd_SOURCES = \
> diff --git a/ripngd/ripng_memory.c b/ripngd/ripng_memory.c
> new file mode 100644
> index 0000000..1d2320e
> --- /dev/null
> +++ b/ripngd/ripng_memory.c
> @@ -0,0 +1,35 @@
> +/* ripngd memory type definitions
> + *
> + * Copyright (C) 2015  David Lamparter
> + *
> + * 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.
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include "ripng_memory.h"
> +
> +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")
> diff --git a/ripngd/ripng_memory.h b/ripngd/ripng_memory.h
> new file mode 100644
> index 0000000..76b830a
> --- /dev/null
> +++ b/ripngd/ripng_memory.h
> @@ -0,0 +1,36 @@
> +/* ripngd memory type declarations
> + *
> + * Copyright (C) 2015  David Lamparter
> + *
> + * 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_RIPNG_MEMORY_H
> +#define _QUAGGA_RIPNG_MEMORY_H
> +
> +#include "memory.h"
> +
> +DECLARE_MGROUP(RIPNGD)
> +DECLARE_MTYPE(RIPNG)
> +DECLARE_MTYPE(RIPNG_ROUTE)
> +DECLARE_MTYPE(RIPNG_AGGREGATE)
> +DECLARE_MTYPE(RIPNG_PEER)
> +DECLARE_MTYPE(RIPNG_OFFSET_LIST)
> +DECLARE_MTYPE(RIPNG_RTE_DATA)
> +
> +#endif /* _QUAGGA_RIPNG_MEMORY_H */
> diff --git a/ripngd/ripngd.h b/ripngd/ripngd.h
> index 75b542e..b0ce36c 100644
> --- a/ripngd/ripngd.h
> +++ b/ripngd/ripngd.h
> @@ -26,6 +26,8 @@
>  #include <zclient.h>
>  #include <vty.h>
>
> +#include "ripng_memory.h"
> +
>  /* RIPng version and port number. */
>  #define RIPNG_V1                         1
>  #define RIPNG_PORT_DEFAULT             521
> diff --git a/vtysh/vtysh.h b/vtysh/vtysh.h
> index 1681a71..84051ff 100644
> --- a/vtysh/vtysh.h
> +++ b/vtysh/vtysh.h
> @@ -22,6 +22,9 @@
>  #ifndef VTYSH_H
>  #define VTYSH_H
>
> +#include "memory.h"
> +DECLARE_MGROUP(MVTYSH)
> +
>  #define VTYSH_ZEBRA  0x01
>  #define VTYSH_RIPD   0x02
>  #define VTYSH_RIPNGD 0x04
> diff --git a/vtysh/vtysh_config.c b/vtysh/vtysh_config.c
> index a069164..f19fe0b 100644
> --- a/vtysh/vtysh_config.c
> +++ b/vtysh/vtysh_config.c
> @@ -26,6 +26,10 @@ Software Foundation, Inc., 59 Temple Place - Suite 330,
> Boston, MA
>
>  #include "vtysh/vtysh.h"
>
> +DEFINE_MGROUP(MVTYSH, "vtysh")
> +DEFINE_MTYPE_STATIC(MVTYSH, VTYSH_CONFIG,      "Vtysh configuration")
> +DEFINE_MTYPE_STATIC(MVTYSH, VTYSH_CONFIG_LINE, "Vtysh configuration line")
> +
>  vector configvec;
>
>  extern int vtysh_writeconfig_integrated;
> diff --git a/zebra/Makefile.am b/zebra/Makefile.am
> index 90ce7b9..63d0376 100644
> --- a/zebra/Makefile.am
> +++ b/zebra/Makefile.am
> @@ -27,16 +27,20 @@ sbin_PROGRAMS = zebra
>  noinst_PROGRAMS = testzebra
>
>  zebra_SOURCES = \
> +       zebra_memory.c \
>         zserv.c main.c interface.c connected.c zebra_rib.c
> zebra_routemap.c \
>         redistribute.c debug.c rtadv.c zebra_snmp.c zebra_vty.c \
>         irdp_main.c irdp_interface.c irdp_packet.c router-id.c zebra_fpm.c
> \
>         $(othersrc)
>
> -testzebra_SOURCES = test_main.c zebra_rib.c interface.c connected.c
> debug.c \
> +testzebra_SOURCES = \
> +       zebra_memory.c \
> +       test_main.c zebra_rib.c interface.c connected.c debug.c \
>         zebra_vty.c \
>         kernel_null.c  redistribute_null.c ioctl_null.c misc_null.c
>
>  noinst_HEADERS = \
> +       zebra_memory.h \
>         connected.h ioctl.h rib.h rt.h zserv.h redistribute.h debug.h
> rtadv.h \
>         interface.h ipforward.h irdp.h router-id.h kernel_socket.h \
>         rt_netlink.h zebra_fpm.h zebra_fpm_private.h \
> diff --git a/zebra/connected.c b/zebra/connected.c
> index 84b0d1c..59cae42 100644
> --- a/zebra/connected.c
> +++ b/zebra/connected.c
> @@ -30,6 +30,7 @@
>  #include "table.h"
>  #include "log.h"
>  #include "memory.h"
> +#include "zebra_memory.h"
>
>  #include "zebra/zserv.h"
>  #include "zebra/redistribute.h"
> diff --git a/zebra/if_ioctl.c b/zebra/if_ioctl.c
> index 8df877d..4f2b9a8 100644
> --- a/zebra/if_ioctl.c
> +++ b/zebra/if_ioctl.c
> @@ -28,6 +28,7 @@
>  #include "ioctl.h"
>  #include "connected.h"
>  #include "memory.h"
> +#include "zebra_memory.h"
>  #include "log.h"
>  #include "vrf.h"
>
> diff --git a/zebra/if_ioctl_solaris.c b/zebra/if_ioctl_solaris.c
> index 50b4aca..b7a489c 100644
> --- a/zebra/if_ioctl_solaris.c
> +++ b/zebra/if_ioctl_solaris.c
> @@ -28,6 +28,7 @@
>  #include "ioctl.h"
>  #include "connected.h"
>  #include "memory.h"
> +#include "zebra_memory.h"
>  #include "log.h"
>  #include "privs.h"
>  #include "vrf.h"
> diff --git a/zebra/if_sysctl.c b/zebra/if_sysctl.c
> index bb48f61..6acfaa3 100644
> --- a/zebra/if_sysctl.c
> +++ b/zebra/if_sysctl.c
> @@ -27,6 +27,7 @@
>  #include "prefix.h"
>  #include "connected.h"
>  #include "memory.h"
> +#include "zebra_memory.h"
>  #include "ioctl.h"
>  #include "log.h"
>  #include "interface.h"
> diff --git a/zebra/interface.c b/zebra/interface.c
> index 8a9225a..5339216 100644
> --- a/zebra/interface.c
> +++ b/zebra/interface.c
> @@ -28,6 +28,7 @@
>  #include "prefix.h"
>  #include "command.h"
>  #include "memory.h"
> +#include "zebra_memory.h"
>  #include "ioctl.h"
>  #include "connected.h"
>  #include "log.h"
> diff --git a/zebra/irdp_interface.c b/zebra/irdp_interface.c
> index 43c63a8..d82fe64 100644
> --- a/zebra/irdp_interface.c
> +++ b/zebra/irdp_interface.c
> @@ -44,6 +44,7 @@
>  #include "prefix.h"
>  #include "command.h"
>  #include "memory.h"
> +#include "zebra_memory.h"
>  #include "stream.h"
>  #include "ioctl.h"
>  #include "connected.h"
> diff --git a/zebra/irdp_main.c b/zebra/irdp_main.c
> index cf78a54..941a272 100644
> --- a/zebra/irdp_main.c
> +++ b/zebra/irdp_main.c
> @@ -45,6 +45,7 @@
>  #include "prefix.h"
>  #include "command.h"
>  #include "memory.h"
> +#include "zebra_memory.h"
>  #include "stream.h"
>  #include "ioctl.h"
>  #include "connected.h"
> diff --git a/zebra/irdp_packet.c b/zebra/irdp_packet.c
> index 0d31050..c2a75e0 100644
> --- a/zebra/irdp_packet.c
> +++ b/zebra/irdp_packet.c
> @@ -45,6 +45,7 @@
>  #include "prefix.h"
>  #include "command.h"
>  #include "memory.h"
> +#include "zebra_memory.h"
>  #include "stream.h"
>  #include "ioctl.h"
>  #include "connected.h"
> diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c
> index 5e68c56..b3c89ca 100644
> --- a/zebra/kernel_socket.c
> +++ b/zebra/kernel_socket.c
> @@ -27,6 +27,7 @@
>  #include "sockunion.h"
>  #include "connected.h"
>  #include "memory.h"
> +#include "zebra_memory.h"
>  #include "ioctl.h"
>  #include "log.h"
>  #include "str.h"
> diff --git a/zebra/main.c b/zebra/main.c
> index af33d0c..ee80283 100644
> --- a/zebra/main.c
> +++ b/zebra/main.c
> @@ -27,6 +27,7 @@
>  #include "thread.h"
>  #include "filter.h"
>  #include "memory.h"
> +#include "zebra_memory.h"
>  #include "memory_vty.h"
>  #include "prefix.h"
>  #include "log.h"
> diff --git a/zebra/router-id.c b/zebra/router-id.c
> index a4eb73a..efb4915 100644
> --- a/zebra/router-id.c
> +++ b/zebra/router-id.c
> @@ -30,6 +30,7 @@
>  #include "stream.h"
>  #include "command.h"
>  #include "memory.h"
> +#include "zebra_memory.h"
>  #include "ioctl.h"
>  #include "connected.h"
>  #include "network.h"
> diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c
> index e4505de..6c4b680 100644
> --- a/zebra/rt_netlink.c
> +++ b/zebra/rt_netlink.c
> @@ -34,6 +34,7 @@
>  #include "connected.h"
>  #include "table.h"
>  #include "memory.h"
> +#include "zebra_memory.h"
>  #include "rib.h"
>  #include "thread.h"
>  #include "privs.h"
> diff --git a/zebra/rtadv.c b/zebra/rtadv.c
> index 9450f9a..48870d5 100644
> --- a/zebra/rtadv.c
> +++ b/zebra/rtadv.c
> @@ -23,6 +23,7 @@
>  #include <zebra.h>
>
>  #include "memory.h"
> +#include "zebra_memory.h"
>  #include "sockopt.h"
>  #include "thread.h"
>  #include "if.h"
> diff --git a/zebra/rtread_sysctl.c b/zebra/rtread_sysctl.c
> index 385e150..0297681 100644
> --- a/zebra/rtread_sysctl.c
> +++ b/zebra/rtread_sysctl.c
> @@ -23,6 +23,7 @@
>  #include <zebra.h>
>
>  #include "memory.h"
> +#include "zebra_memory.h"
>  #include "log.h"
>  #include "vrf.h"
>
> diff --git a/zebra/test_main.c b/zebra/test_main.c
> index f14c675..6aa1701 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 "zebra_memory.h"
>  #include "memory_vty.h"
>  #include "prefix.h"
>  #include "log.h"
> diff --git a/zebra/zebra_memory.c b/zebra/zebra_memory.c
> new file mode 100644
> index 0000000..557a5cf
> --- /dev/null
> +++ b/zebra/zebra_memory.c
> @@ -0,0 +1,38 @@
> +/* zebra memory type definitions
> + *
> + * Copyright (C) 2015  David Lamparter
> + *
> + * 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.
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include "zebra_memory.h"
> +
> +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")
> diff --git a/zebra/zebra_memory.h b/zebra/zebra_memory.h
> new file mode 100644
> index 0000000..a86311a
> --- /dev/null
> +++ b/zebra/zebra_memory.h
> @@ -0,0 +1,39 @@
> +/* zebra memory type declarations
> + *
> + * Copyright (C) 2015  David Lamparter
> + *
> + * 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_ZEBRA_MEMORY_H
> +#define _QUAGGA_ZEBRA_MEMORY_H
> +
> +#include "memory.h"
> +
> +DECLARE_MGROUP(ZEBRA)
> +DECLARE_MTYPE(RTADV_PREFIX)
> +DECLARE_MTYPE(ZEBRA_VRF)
> +DECLARE_MTYPE(NEXTHOP)
> +DECLARE_MTYPE(RIB)
> +DECLARE_MTYPE(RIB_QUEUE)
> +DECLARE_MTYPE(STATIC_ROUTE)
> +DECLARE_MTYPE(RIB_DEST)
> +DECLARE_MTYPE(RIB_TABLE_INFO)
> +DECLARE_MTYPE(NETLINK_NAME)
> +
> +#endif /* _QUAGGA_ZEBRA_MEMORY_H */
> diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
> index 15b7015..5bb87b1 100644
> --- a/zebra/zebra_rib.c
> +++ b/zebra/zebra_rib.c
> @@ -24,6 +24,7 @@
>  #include "prefix.h"
>  #include "table.h"
>  #include "memory.h"
> +#include "zebra_memory.h"
>  #include "str.h"
>  #include "command.h"
>  #include "if.h"
> diff --git a/zebra/zebra_routemap.c b/zebra/zebra_routemap.c
> index da9cb13..0c39156 100644
> --- a/zebra/zebra_routemap.c
> +++ b/zebra/zebra_routemap.c
> @@ -22,6 +22,7 @@
>  #include <zebra.h>
>
>  #include "memory.h"
> +#include "zebra_memory.h"
>  #include "prefix.h"
>  #include "rib.h"
>  #include "routemap.h"
> diff --git a/zebra/zebra_vty.c b/zebra/zebra_vty.c
> index 21b92ea..82bf262 100644
> --- a/zebra/zebra_vty.c
> +++ b/zebra/zebra_vty.c
> @@ -22,6 +22,7 @@
>  #include <zebra.h>
>
>  #include "memory.h"
> +#include "zebra_memory.h"
>  #include "if.h"
>  #include "prefix.h"
>  #include "command.h"
> diff --git a/zebra/zserv.c b/zebra/zserv.c
> index 46819f4..c95cd60 100644
> --- a/zebra/zserv.c
> +++ b/zebra/zserv.c
> @@ -27,6 +27,7 @@
>  #include "thread.h"
>  #include "stream.h"
>  #include "memory.h"
> +#include "zebra_memory.h"
>  #include "table.h"
>  #include "rib.h"
>  #include "network.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

Reply via email to