DEFINE_MTYPE( LIB, CONNECTED_LABEL, "Connected interface label")
DEFINE_MTYPE_STATIC(LIB, IF_LINK_PARAMS, "Informational Link Parameters")
+DEFINE_QOBJ_TYPE(interface)
+
/* List of interfaces in only the default VRF */
int ptm_enable = 0;
/* Enable Link-detection by default */
SET_FLAG(ifp->status, ZEBRA_INTERFACE_LINKDETECTION);
+ QOBJ_REG (ifp, interface);
+
if (if_master.if_new_hook)
(*if_master.if_new_hook) (ifp);
if (if_master.if_delete_hook)
(*if_master.if_delete_hook) (ifp);
+ QOBJ_UNREG (ifp);
+
/* Free connected address list */
list_delete_all_node (ifp->connected);
#include "zebra.h"
#include "linklist.h"
#include "memory.h"
+#include "qobj.h"
DECLARE_MTYPE(IF)
DECLARE_MTYPE(CONNECTED_LABEL)
struct route_node *node;
vrf_id_t vrf_id;
+
+ QOBJ_FIELDS
};
+DECLARE_QOBJ_TYPE(interface)
/* Connected address structure. */
struct connected
DEFINE_MTYPE_STATIC(LIB, KEY, "Key")
DEFINE_MTYPE_STATIC(LIB, KEYCHAIN, "Key chain")
+DEFINE_QOBJ_TYPE(keychain)
+DEFINE_QOBJ_TYPE(key)
+
/* Master list of key chain. */
struct list *keychain_list;
static struct keychain *
keychain_new (void)
{
- return XCALLOC (MTYPE_KEYCHAIN, sizeof (struct keychain));
+ struct keychain *keychain;
+ keychain = XCALLOC (MTYPE_KEYCHAIN, sizeof (struct keychain));
+ QOBJ_REG (keychain, keychain);
+ return keychain;
}
static void
keychain_free (struct keychain *keychain)
{
+ QOBJ_UNREG (keychain);
XFREE (MTYPE_KEYCHAIN, keychain);
}
static struct key *
key_new (void)
{
- return XCALLOC (MTYPE_KEY, sizeof (struct key));
+ struct key *key = XCALLOC (MTYPE_KEY, sizeof (struct key));
+ QOBJ_REG (key, key);
+ return key;
}
static void
key_free (struct key *key)
{
+ QOBJ_UNREG (key);
XFREE (MTYPE_KEY, key);
}
#ifndef _ZEBRA_KEYCHAIN_H
#define _ZEBRA_KEYCHAIN_H
+#include "qobj.h"
+
struct keychain
{
char *name;
struct list *key;
+
+ QOBJ_FIELDS
};
+DECLARE_QOBJ_TYPE(keychain)
struct key_range
{
struct key_range send;
struct key_range accept;
+
+ QOBJ_FIELDS
};
+DECLARE_QOBJ_TYPE(key)
extern void keychain_init (void);
extern struct keychain *keychain_lookup (const char *);
DEFINE_MTYPE( LIB, ROUTE_MAP_COMPILED, "Route map compiled")
DEFINE_MTYPE_STATIC(LIB, ROUTE_MAP_DEP, "Route map dependency")
+DEFINE_QOBJ_TYPE(route_map_index)
+DEFINE_QOBJ_TYPE(route_map)
+
/* Vector for route match rules. */
static vector route_match_vec;
new = XCALLOC (MTYPE_ROUTE_MAP, sizeof (struct route_map));
new->name = XSTRDUP (MTYPE_ROUTE_MAP_NAME, name);
+ QOBJ_REG (new, route_map);
return new;
}
if (map != NULL)
{
+ QOBJ_UNREG (map);
+
if (map->next)
map->next->prev = map->prev;
else
new = XCALLOC (MTYPE_ROUTE_MAP_INDEX, sizeof (struct route_map_index));
new->exitpolicy = RMAP_EXIT; /* Default to Cisco-style */
+ QOBJ_REG (new, route_map_index);
return new;
}
{
struct route_map_rule *rule;
+ QOBJ_UNREG (index);
+
/* Free route match. */
while ((rule = index->match_list.head) != NULL)
route_map_rule_delete (&index->match_list, rule);
#include "prefix.h"
#include "memory.h"
+#include "qobj.h"
DECLARE_MTYPE(ROUTE_MAP_NAME)
DECLARE_MTYPE(ROUTE_MAP_RULE)
DECLARE_MTYPE(ROUTE_MAP_COMPILED)
/* Make linked list. */
struct route_map_index *next;
struct route_map_index *prev;
+
+ QOBJ_FIELDS
};
+DECLARE_QOBJ_TYPE(route_map_index)
/* Route map list structure. */
struct route_map
/* Maintain update info */
int to_be_processed; /* True if modification isn't acted on yet */
int deleted; /* If 1, then this node will be deleted */
+
+ QOBJ_FIELDS
};
+DECLARE_QOBJ_TYPE(route_map)
/* Prototypes. */
extern void route_map_init (void);
DEFINE_MTYPE_STATIC(LIB, VRF, "VRF")
DEFINE_MTYPE_STATIC(LIB, VRF_BITMAP, "VRF bit-map")
+DEFINE_QOBJ_TYPE(vrf)
+
/*
* Turn on/off debug code
* for vrf.
strcpy (vrf->name, name);
listnode_add_sort (vrf_list, vrf);
if_init (&vrf->iflist);
+ QOBJ_REG (vrf, vrf);
if (vrf_master.vrf_new_hook)
{
(*vrf_master.vrf_new_hook) (vrf_id, name, &vrf->info);
strcpy (vrf->name, name);
listnode_add_sort (vrf_list, vrf);
if_init (&vrf->iflist);
+ QOBJ_REG (vrf, vrf);
if (vrf_master.vrf_new_hook)
{
(*vrf_master.vrf_new_hook) (vrf_id, name, &vrf->info);
vrf->node = rn;
vrf->vrf_id = vrf_id;
if_init (&vrf->iflist);
+ QOBJ_REG (vrf, vrf);
if (debug_vrf)
zlog_debug("Vrf Created: %p", vrf);
return vrf;
if (vrf_master.vrf_delete_hook)
(*vrf_master.vrf_delete_hook) (vrf->vrf_id, vrf->name, &vrf->info);
+ QOBJ_UNREG (vrf);
if_terminate (&vrf->iflist);
if (vrf->node)
#define _ZEBRA_VRF_H
#include "linklist.h"
+#include "qobj.h"
/* The default NS ID */
#define NS_DEFAULT 0
/* User data */
void *info;
+
+ QOBJ_FIELDS
};
+DECLARE_QOBJ_TYPE(vrf)
extern struct list *vrf_list;