Ticket: CM-7177
Reviewed-by: CCR-3396
Testing: See bug
This code change does several small things:
(A) Fix a couple detected memory leaks
(B) Fix all malloc operations to use the correct XMALLOC operation in bgpd and parts of lib
(C) Adds a few new memory types to make it easier to detect issues
14 files changed:
prefix_free(filter->p);
if (filter->host)
prefix_free(filter->p);
if (filter->host)
- XFREE (MTYPE_BGP_PEER_HOST, filter->host);
+ XFREE (MTYPE_BGP_DEBUG_STR, filter->host);
XFREE (MTYPE_BGP_DEBUG_FILTER, filter);
}
XFREE (MTYPE_BGP_DEBUG_FILTER, filter);
}
- filter->host = XSTRDUP (MTYPE_BGP_PEER_HOST, host);
+ filter->host = XSTRDUP (MTYPE_BGP_DEBUG_STR, host);
filter->p = NULL;
}
else if (p)
filter->p = NULL;
}
else if (p)
if (host && strcmp (filter->host, host) == 0)
{
listnode_delete (list, filter);
if (host && strcmp (filter->host, host) == 0)
{
listnode_delete (list, filter);
- XFREE (MTYPE_BGP_PEER_HOST, filter->host);
+ XFREE (MTYPE_BGP_DEBUG_STR, filter->host);
XFREE (MTYPE_BGP_DEBUG_FILTER, filter);
return 1;
}
XFREE (MTYPE_BGP_DEBUG_FILTER, filter);
return 1;
}
#include "thread.h"
#include "linklist.h"
#include "queue.h"
#include "thread.h"
#include "linklist.h"
#include "queue.h"
#include "bgpd/bgp_table.h"
#include "bgpd/bgp_table.h"
/* Set interval. */
bgp_dump->interval = interval;
if (bgp_dump->interval_str)
/* Set interval. */
bgp_dump->interval = interval;
if (bgp_dump->interval_str)
- free (bgp_dump->interval_str);
- bgp_dump->interval_str = strdup (interval_str);
+ XFREE(MTYPE_BGP_DUMP_STR, bgp_dump->interval_str);
+ bgp_dump->interval_str = XSTRDUP(MTYPE_BGP_DUMP_STR, interval_str);
/* Set file name. */
if (bgp_dump->filename)
/* Set file name. */
if (bgp_dump->filename)
- free (bgp_dump->filename);
- bgp_dump->filename = strdup (path);
+ XFREE(MTYPE_BGP_DUMP_STR, bgp_dump->filename);
+ bgp_dump->filename = XSTRDUP(MTYPE_BGP_DUMP_STR, path);
/* This should be called when interval is expired. */
bgp_dump_open_file (bgp_dump);
/* This should be called when interval is expired. */
bgp_dump_open_file (bgp_dump);
/* Set file name. */
if (bgp_dump->filename)
{
/* Set file name. */
if (bgp_dump->filename)
{
- free (bgp_dump->filename);
+ XFREE(MTYPE_BGP_DUMP_STR, bgp_dump->filename);
bgp_dump->filename = NULL;
}
bgp_dump->filename = NULL;
}
if (bgp_dump->interval_str)
{
if (bgp_dump->interval_str)
{
- free (bgp_dump->interval_str);
+ XFREE(MTYPE_BGP_DUMP_STR, bgp_dump->interval_str);
bgp_dump->interval_str = NULL;
}
bgp_dump->interval_str = NULL;
}
+ XFREE(MTYPE_AS_STR, aslist->name);
aslist->name = NULL;
}
XFREE (MTYPE_AS_LIST, aslist);
aslist->name = NULL;
}
XFREE (MTYPE_AS_LIST, aslist);
/* Allocate new access_list and copy given name. */
aslist = as_list_new ();
/* Allocate new access_list and copy given name. */
aslist = as_list_new ();
- aslist->name = strdup (name);
+ aslist->name = XSTRDUP(MTYPE_AS_STR, name);
assert (aslist->name);
/* If name is made by all digit character. We treat it as
assert (aslist->name);
/* If name is made by all digit character. We treat it as
static void
as_list_filter_delete (struct as_list *aslist, struct as_filter *asfilter)
{
static void
as_list_filter_delete (struct as_list *aslist, struct as_filter *asfilter)
{
- char *name = strdup (aslist->name);
+ char *name = XSTRDUP(MTYPE_AS_STR, aslist->name);
if (asfilter->next)
asfilter->next->prev = asfilter->prev;
if (asfilter->next)
asfilter->next->prev = asfilter->prev;
if (as_list_master.delete_hook)
(*as_list_master.delete_hook) (name);
if (name)
if (as_list_master.delete_hook)
(*as_list_master.delete_hook) (name);
if (name)
+ XFREE(MTYPE_AS_STR, name);
}
memcpy (prd->val, s->data, 8);
}
memcpy (prd->val, s->data, 8);
+ XFREE(MTYPE_TMP, half);
#include "thread.h"
#include "workqueue.h"
#include "queue.h"
#include "thread.h"
#include "workqueue.h"
#include "queue.h"
#include "bgpd/bgpd.h"
#include "bgpd/bgp_table.h"
#include "bgpd/bgpd.h"
#include "bgpd/bgp_table.h"
bgp_static_free (struct bgp_static *bgp_static)
{
if (bgp_static->rmap.name)
bgp_static_free (struct bgp_static *bgp_static)
{
if (bgp_static->rmap.name)
- free (bgp_static->rmap.name);
+ XFREE(MTYPE_ROUTE_MAP_NAME, bgp_static->rmap.name);
XFREE (MTYPE_BGP_STATIC, bgp_static);
}
XFREE (MTYPE_BGP_STATIC, bgp_static);
}
if (rmap)
{
if (bgp_static->rmap.name)
if (rmap)
{
if (bgp_static->rmap.name)
- free (bgp_static->rmap.name);
- bgp_static->rmap.name = strdup (rmap);
+ XFREE(MTYPE_ROUTE_MAP_NAME, bgp_static->rmap.name);
+ bgp_static->rmap.name = XSTRDUP(MTYPE_ROUTE_MAP_NAME, rmap);
bgp_static->rmap.map = route_map_lookup_by_name (rmap);
}
else
{
if (bgp_static->rmap.name)
bgp_static->rmap.map = route_map_lookup_by_name (rmap);
}
else
{
if (bgp_static->rmap.name)
- free (bgp_static->rmap.name);
+ XFREE(MTYPE_ROUTE_MAP_NAME, bgp_static->rmap.name);
bgp_static->rmap.name = NULL;
bgp_static->rmap.map = NULL;
bgp_static->valid = 0;
bgp_static->rmap.name = NULL;
bgp_static->rmap.map = NULL;
bgp_static->valid = 0;
if (rmap)
{
if (bgp_static->rmap.name)
if (rmap)
{
if (bgp_static->rmap.name)
- free (bgp_static->rmap.name);
- bgp_static->rmap.name = strdup (rmap);
+ XFREE(MTYPE_ROUTE_MAP_NAME, bgp_static->rmap.name);
+ bgp_static->rmap.name = XSTRDUP(MTYPE_ROUTE_MAP_NAME, rmap);
bgp_static->rmap.map = route_map_lookup_by_name (rmap);
}
rn->info = bgp_static;
bgp_static->rmap.map = route_map_lookup_by_name (rmap);
}
rn->info = bgp_static;
if (rmap_name)
{
if (rmap->name)
if (rmap_name)
{
if (rmap->name)
- free (rmap->name);
- rmap->name = strdup (rmap_name);
+ XFREE(MTYPE_ROUTE_MAP_NAME, rmap->name);
+ rmap->name = XSTRDUP(MTYPE_ROUTE_MAP_NAME, rmap_name);
rmap->map = route_map_lookup_by_name (rmap_name);
}
else
{
if (rmap->name)
rmap->map = route_map_lookup_by_name (rmap_name);
}
else
{
if (rmap->name)
+ XFREE(MTYPE_ROUTE_MAP_NAME, rmap->name);
rmap->name = NULL;
rmap->map = NULL;
}
rmap->name = NULL;
rmap->map = NULL;
}
rmap = &bgp->table_map[afi][safi];
if (rmap->name)
rmap = &bgp->table_map[afi][safi];
if (rmap->name)
+ XFREE(MTYPE_ROUTE_MAP_NAME, rmap->name);
rmap->name = NULL;
rmap->map = NULL;
rmap->name = NULL;
rmap->map = NULL;
/* Reset access-list configuration. */
if (bdistance->access_list)
{
/* Reset access-list configuration. */
if (bdistance->access_list)
{
- free (bdistance->access_list);
+ XFREE(MTYPE_AS_LIST, bdistance->access_list);
bdistance->access_list = NULL;
}
if (access_list_str)
bdistance->access_list = NULL;
}
if (access_list_str)
- bdistance->access_list = strdup (access_list_str);
+ bdistance->access_list = XSTRDUP(MTYPE_AS_LIST, access_list_str);
bdistance = rn->info;
if (bdistance->access_list)
bdistance = rn->info;
if (bdistance->access_list)
- free (bdistance->access_list);
+ XFREE(MTYPE_AS_LIST, bdistance->access_list);
bgp_distance_free (bdistance);
rn->info = NULL;
bgp_distance_free (bdistance);
rn->info = NULL;
dst->v_routeadv = src->v_routeadv;
dst->flags = src->flags;
dst->af_flags[afi][safi] = src->af_flags[afi][safi];
dst->v_routeadv = src->v_routeadv;
dst->flags = src->flags;
dst->af_flags[afi][safi] = src->af_flags[afi][safi];
- dst->host = XSTRDUP (MTYPE_BGP_PEER_HOST, src->host);
+ if (dst->host)
+ XFREE(MTYPE_BGP_PEER_HOST, dst->host);
+
+ dst->host = XSTRDUP(MTYPE_BGP_PEER_HOST, src->host);
dst->cap = src->cap;
dst->af_cap[afi][safi] = src->af_cap[afi][safi];
dst->afc_nego[afi][safi] = src->afc_nego[afi][safi];
dst->cap = src->cap;
dst->af_cap[afi][safi] = src->af_cap[afi][safi];
dst->afc_nego[afi][safi] = src->afc_nego[afi][safi];
if (src->default_rmap[afi][safi].name)
{
dst->default_rmap[afi][safi].name =
if (src->default_rmap[afi][safi].name)
{
dst->default_rmap[afi][safi].name =
- strdup (src->default_rmap[afi][safi].name);
+ XSTRDUP(MTYPE_ROUTE_MAP_NAME, src->default_rmap[afi][safi].name);
dst->default_rmap[afi][safi].map = src->default_rmap[afi][safi].map;
}
if (DISTRIBUTE_OUT_NAME(srcfilter))
{
dst->default_rmap[afi][safi].map = src->default_rmap[afi][safi].map;
}
if (DISTRIBUTE_OUT_NAME(srcfilter))
{
- DISTRIBUTE_OUT_NAME(dstfilter) = strdup(DISTRIBUTE_OUT_NAME(srcfilter));
+ DISTRIBUTE_OUT_NAME(dstfilter) = XSTRDUP(MTYPE_BGP_FILTER_NAME, DISTRIBUTE_OUT_NAME(srcfilter));
DISTRIBUTE_OUT(dstfilter) = DISTRIBUTE_OUT(srcfilter);
}
if (PREFIX_LIST_OUT_NAME(srcfilter))
{
DISTRIBUTE_OUT(dstfilter) = DISTRIBUTE_OUT(srcfilter);
}
if (PREFIX_LIST_OUT_NAME(srcfilter))
{
- PREFIX_LIST_OUT_NAME(dstfilter) = strdup(PREFIX_LIST_OUT_NAME(srcfilter));
+ PREFIX_LIST_OUT_NAME(dstfilter) = XSTRDUP(MTYPE_BGP_FILTER_NAME, PREFIX_LIST_OUT_NAME(srcfilter));
PREFIX_LIST_OUT(dstfilter) = PREFIX_LIST_OUT(srcfilter);
}
if (FILTER_LIST_OUT_NAME(srcfilter))
{
PREFIX_LIST_OUT(dstfilter) = PREFIX_LIST_OUT(srcfilter);
}
if (FILTER_LIST_OUT_NAME(srcfilter))
{
- FILTER_LIST_OUT_NAME(dstfilter) = strdup(FILTER_LIST_OUT_NAME(srcfilter));
+ FILTER_LIST_OUT_NAME(dstfilter) = XSTRDUP(MTYPE_BGP_FILTER_NAME, FILTER_LIST_OUT_NAME(srcfilter));
FILTER_LIST_OUT(dstfilter) = FILTER_LIST_OUT(srcfilter);
}
if (ROUTE_MAP_OUT_NAME(srcfilter))
{
FILTER_LIST_OUT(dstfilter) = FILTER_LIST_OUT(srcfilter);
}
if (ROUTE_MAP_OUT_NAME(srcfilter))
{
- ROUTE_MAP_OUT_NAME(dstfilter) = strdup(ROUTE_MAP_OUT_NAME(srcfilter));
+ ROUTE_MAP_OUT_NAME(dstfilter) = XSTRDUP(MTYPE_BGP_FILTER_NAME, ROUTE_MAP_OUT_NAME(srcfilter));
ROUTE_MAP_OUT(dstfilter) = ROUTE_MAP_OUT(srcfilter);
}
if (UNSUPPRESS_MAP_NAME(srcfilter))
{
ROUTE_MAP_OUT(dstfilter) = ROUTE_MAP_OUT(srcfilter);
}
if (UNSUPPRESS_MAP_NAME(srcfilter))
{
- UNSUPPRESS_MAP_NAME(dstfilter) = strdup(UNSUPPRESS_MAP_NAME(srcfilter));
+ UNSUPPRESS_MAP_NAME(dstfilter) = XSTRDUP(MTYPE_BGP_FILTER_NAME, UNSUPPRESS_MAP_NAME(srcfilter));
UNSUPPRESS_MAP(dstfilter) = UNSUPPRESS_MAP(srcfilter);
}
}
/**
UNSUPPRESS_MAP(dstfilter) = UNSUPPRESS_MAP(srcfilter);
}
}
/**
- * since we did a bunch of strdup's in conf_copy, time to free them up
+ * since we did a bunch of XSTRDUP's in conf_copy, time to free them up
*/
static void
conf_release (struct peer *src, afi_t afi, safi_t safi)
*/
static void
conf_release (struct peer *src, afi_t afi, safi_t safi)
srcfilter = &src->filter[afi][safi];
if (src->default_rmap[afi][safi].name)
srcfilter = &src->filter[afi][safi];
if (src->default_rmap[afi][safi].name)
- free (src->default_rmap[afi][safi].name);
+ XFREE(MTYPE_ROUTE_MAP_NAME, src->default_rmap[afi][safi].name);
if (srcfilter->dlist[FILTER_OUT].name)
if (srcfilter->dlist[FILTER_OUT].name)
- free (srcfilter->dlist[FILTER_OUT].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, srcfilter->dlist[FILTER_OUT].name);
if (srcfilter->plist[FILTER_OUT].name)
if (srcfilter->plist[FILTER_OUT].name)
- free (srcfilter->plist[FILTER_OUT].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, srcfilter->plist[FILTER_OUT].name);
if (srcfilter->aslist[FILTER_OUT].name)
if (srcfilter->aslist[FILTER_OUT].name)
- free (srcfilter->aslist[FILTER_OUT].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, srcfilter->aslist[FILTER_OUT].name);
if (srcfilter->map[RMAP_OUT].name)
if (srcfilter->map[RMAP_OUT].name)
- free (srcfilter->map[RMAP_OUT].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, srcfilter->map[RMAP_OUT].name);
if (srcfilter->usmap.name)
if (srcfilter->usmap.name)
- free (srcfilter->usmap.name);
+ XFREE(MTYPE_BGP_FILTER_NAME, srcfilter->usmap.name);
hash_release (updgrp->bgp->update_groups[updgrp->afid], updgrp);
conf_release (updgrp->conf, updgrp->afi, updgrp->safi);
hash_release (updgrp->bgp->update_groups[updgrp->afid], updgrp);
conf_release (updgrp->conf, updgrp->afi, updgrp->safi);
- XFREE (MTYPE_BGP_PEER_HOST, updgrp->conf->host);
+ if (updgrp->conf->host)
+ XFREE(MTYPE_BGP_PEER_HOST, updgrp->conf->host);
+ updgrp->conf->host = NULL;
+
+ if (updgrp->conf->ifname)
+ XFREE(MTYPE_BGP_PEER_IFNAME, updgrp->conf->ifname);
+
XFREE (MTYPE_BGP_PEER, updgrp->conf);
XFREE (MTYPE_BGP_UPDGRP, updgrp);
}
XFREE (MTYPE_BGP_PEER, updgrp->conf);
XFREE (MTYPE_BGP_UPDGRP, updgrp);
}
/* Import policy. */
if (pfilter->map[RMAP_IMPORT].name)
/* Import policy. */
if (pfilter->map[RMAP_IMPORT].name)
- free (pfilter->map[RMAP_IMPORT].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, pfilter->map[RMAP_IMPORT].name);
if (gfilter->map[RMAP_IMPORT].name)
{
if (gfilter->map[RMAP_IMPORT].name)
{
- pfilter->map[RMAP_IMPORT].name = strdup (gfilter->map[RMAP_IMPORT].name);
+ pfilter->map[RMAP_IMPORT].name = XSTRDUP(MTYPE_BGP_FILTER_NAME,
+ gfilter->map[RMAP_IMPORT].name);
pfilter->map[RMAP_IMPORT].map = gfilter->map[RMAP_IMPORT].map;
}
else
{
pfilter->map[RMAP_IMPORT].name = NULL;
pfilter->map[RMAP_IMPORT].map = gfilter->map[RMAP_IMPORT].map;
}
else
{
pfilter->map[RMAP_IMPORT].name = NULL;
- pfilter->map[RMAP_IMPORT].map =NULL;
+ pfilter->map[RMAP_IMPORT].map = NULL;
}
/* Export policy. */
if (gfilter->map[RMAP_EXPORT].name && ! pfilter->map[RMAP_EXPORT].name)
{
}
/* Export policy. */
if (gfilter->map[RMAP_EXPORT].name && ! pfilter->map[RMAP_EXPORT].name)
{
- pfilter->map[RMAP_EXPORT].name = strdup (gfilter->map[RMAP_EXPORT].name);
+ pfilter->map[RMAP_EXPORT].name = XSTRDUP(MTYPE_BGP_FILTER_NAME,
+ gfilter->map[RMAP_EXPORT].name);
pfilter->map[RMAP_EXPORT].map = gfilter->map[RMAP_EXPORT].map;
}
}
pfilter->map[RMAP_EXPORT].map = gfilter->map[RMAP_EXPORT].map;
}
}
count * sizeof (struct peer)),
VTY_NEWLINE);
count * sizeof (struct peer)),
VTY_NEWLINE);
- if ((count = mtype_stats_alloc (MTYPE_PEER_GROUP)))
+ if ((count = mtype_stats_alloc (MTYPE_BGP_PEER_GROUP)))
vty_out (vty, "%ld peer groups, using %s of memory%s", count,
mtype_memstr (memstrbuf, sizeof (memstrbuf),
count * sizeof (struct peer_group)),
vty_out (vty, "%ld peer groups, using %s of memory%s", count,
mtype_memstr (memstrbuf, sizeof (memstrbuf),
count * sizeof (struct peer_group)),
#include "routemap.h"
#include "thread.h"
#include "queue.h"
#include "routemap.h"
#include "thread.h"
#include "queue.h"
#include "lib/json.h"
#include "bgpd/bgpd.h"
#include "lib/json.h"
#include "bgpd/bgpd.h"
bgp->redist[afi][type] = list_new();
red_list = bgp->redist[afi][type];
bgp->redist[afi][type] = list_new();
red_list = bgp->redist[afi][type];
- red = (struct bgp_redist *)calloc (1, sizeof(struct bgp_redist));
+ red = (struct bgp_redist *)XCALLOC(MTYPE_BGP_REDIST, sizeof(struct bgp_redist));
red->instance = instance;
listnode_add(red_list, red);
red->instance = instance;
listnode_add(red_list, red);
return 0;
if (red->rmap.name)
return 0;
if (red->rmap.name)
- free (red->rmap.name);
- red->rmap.name = strdup (name);
+ XFREE(MTYPE_ROUTE_MAP_NAME, red->rmap.name);
+ red->rmap.name = XSTRDUP(MTYPE_ROUTE_MAP_NAME, name);
red->rmap.map = route_map_lookup_by_name (name);
return 1;
red->rmap.map = route_map_lookup_by_name (name);
return 1;
/* Unset route-map. */
if (red->rmap.name)
/* Unset route-map. */
if (red->rmap.name)
+ XFREE(MTYPE_ROUTE_MAP_NAME, red->rmap.name);
red->rmap.name = NULL;
red->rmap.map = NULL;
red->rmap.name = NULL;
red->rmap.map = NULL;
{
if (filter->dlist[i].name)
{
{
if (filter->dlist[i].name)
{
- free (filter->dlist[i].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->dlist[i].name);
filter->dlist[i].name = NULL;
}
if (filter->plist[i].name)
{
filter->dlist[i].name = NULL;
}
if (filter->plist[i].name)
{
- free (filter->plist[i].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->plist[i].name);
filter->plist[i].name = NULL;
}
if (filter->aslist[i].name)
{
filter->plist[i].name = NULL;
}
if (filter->aslist[i].name)
{
- free (filter->aslist[i].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->aslist[i].name);
filter->aslist[i].name = NULL;
}
}
filter->aslist[i].name = NULL;
}
}
{
if (filter->map[i].name)
{
{
if (filter->map[i].name)
{
- free (filter->map[i].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->map[i].name);
filter->map[i].name = NULL;
}
}
/* Clear unsuppress map. */
if (filter->usmap.name)
filter->map[i].name = NULL;
}
}
/* Clear unsuppress map. */
if (filter->usmap.name)
- free (filter->usmap.name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->usmap.name);
filter->usmap.name = NULL;
filter->usmap.map = NULL;
filter->usmap.name = NULL;
filter->usmap.map = NULL;
/* Clear neighbor default_originate_rmap */
if (peer->default_rmap[afi][safi].name)
/* Clear neighbor default_originate_rmap */
if (peer->default_rmap[afi][safi].name)
- free (peer->default_rmap[afi][safi].name);
+ XFREE(MTYPE_ROUTE_MAP_NAME, peer->default_rmap[afi][safi].name);
peer->default_rmap[afi][safi].name = NULL;
peer->default_rmap[afi][safi].map = NULL;
peer->default_rmap[afi][safi].name = NULL;
peer->default_rmap[afi][safi].map = NULL;
/* Free allocated host character. */
if (peer->host)
XFREE (MTYPE_BGP_PEER_HOST, peer->host);
/* Free allocated host character. */
if (peer->host)
XFREE (MTYPE_BGP_PEER_HOST, peer->host);
+ peer->host = NULL;
+
+ if (peer->ifname)
+ XFREE(MTYPE_BGP_PEER_IFNAME, peer->ifname);
+ peer->ifname = NULL;
+
/* Update source configuration. */
if (peer->update_source)
sockunion_free (peer->update_source);
if (peer->update_if)
XFREE (MTYPE_PEER_UPDATE_SOURCE, peer->update_if);
/* Update source configuration. */
if (peer->update_source)
sockunion_free (peer->update_source);
if (peer->update_if)
XFREE (MTYPE_PEER_UPDATE_SOURCE, peer->update_if);
-
- if (peer->clear_node_queue)
- work_queue_free (peer->clear_node_queue);
-
+
+ if (peer->notify.data)
+ XFREE(MTYPE_TMP, peer->notify.data);
+
bgp_sync_delete (peer);
if (peer->conf_if)
bgp_sync_delete (peer);
if (peer->conf_if)
if (peer_src->ifname)
{
if (peer_dst->ifname)
if (peer_src->ifname)
{
if (peer_dst->ifname)
- free(peer_dst->ifname);
+ XFREE(MTYPE_BGP_PEER_IFNAME, peer_dst->ifname);
- peer_dst->ifname = strdup(peer_src->ifname);
+ peer_dst->ifname = XSTRDUP(MTYPE_BGP_PEER_IFNAME, peer_src->ifname);
{
peer->conf_if = XSTRDUP (MTYPE_PEER_CONF_IF, conf_if);
bgp_peer_conf_if_to_su_update(peer);
{
peer->conf_if = XSTRDUP (MTYPE_PEER_CONF_IF, conf_if);
bgp_peer_conf_if_to_su_update(peer);
+ if (peer->host)
+ XFREE(MTYPE_BGP_PEER_HOST, peer->host);
peer->host = XSTRDUP (MTYPE_BGP_PEER_HOST, conf_if);
}
else if (su)
{
peer->su = *su;
sockunion2str (su, buf, SU_ADDRSTRLEN);
peer->host = XSTRDUP (MTYPE_BGP_PEER_HOST, conf_if);
}
else if (su)
{
peer->su = *su;
sockunion2str (su, buf, SU_ADDRSTRLEN);
+ if (peer->host)
+ XFREE(MTYPE_BGP_PEER_HOST, peer->host);
peer->host = XSTRDUP (MTYPE_BGP_PEER_HOST, buf);
}
peer->local_as = local_as;
peer->host = XSTRDUP (MTYPE_BGP_PEER_HOST, buf);
}
peer->local_as = local_as;
for (i = FILTER_IN; i < FILTER_MAX; i++)
{
if (filter->dlist[i].name)
for (i = FILTER_IN; i < FILTER_MAX; i++)
{
if (filter->dlist[i].name)
- free (filter->dlist[i].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->dlist[i].name);
if (filter->plist[i].name)
if (filter->plist[i].name)
- free (filter->plist[i].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->plist[i].name);
if (filter->aslist[i].name)
if (filter->aslist[i].name)
- free (filter->aslist[i].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->aslist[i].name);
filter->dlist[i].name = NULL;
filter->plist[i].name = NULL;
filter->dlist[i].name = NULL;
filter->plist[i].name = NULL;
for (i = RMAP_IN; i < RMAP_MAX; i++)
{
if (filter->map[i].name)
for (i = RMAP_IN; i < RMAP_MAX; i++)
{
if (filter->map[i].name)
- free (filter->map[i].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->map[i].name);
filter->map[i].name = NULL;
}
if (filter->usmap.name)
filter->map[i].name = NULL;
}
if (filter->usmap.name)
- free (filter->usmap.name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->usmap.name);
if (peer->default_rmap[afi][safi].name)
if (peer->default_rmap[afi][safi].name)
- free (peer->default_rmap[afi][safi].name);
+ XFREE(MTYPE_ROUTE_MAP_NAME, peer->default_rmap[afi][safi].name);
filter->usmap.name = NULL;
peer->default_rmap[afi][safi].name = NULL;
filter->usmap.name = NULL;
peer->default_rmap[afi][safi].name = NULL;
static struct peer_group *
peer_group_new (void)
{
static struct peer_group *
peer_group_new (void)
{
- return (struct peer_group *) XCALLOC (MTYPE_PEER_GROUP,
+ return (struct peer_group *) XCALLOC (MTYPE_BGP_PEER_GROUP,
sizeof (struct peer_group));
}
static void
peer_group_free (struct peer_group *group)
{
sizeof (struct peer_group));
}
static void
peer_group_free (struct peer_group *group)
{
- XFREE (MTYPE_PEER_GROUP, group);
+ XFREE (MTYPE_BGP_PEER_GROUP, group);
group = peer_group_new ();
group->bgp = bgp;
group = peer_group_new ();
group->bgp = bgp;
- group->name = strdup (name);
+ if (group->name)
+ XFREE(MTYPE_BGP_PEER_GROUP_HOST, group->name);
+ group->name = XSTRDUP(MTYPE_BGP_PEER_GROUP_HOST, name);
group->peer = list_new ();
for (afi = AFI_IP; afi < AFI_MAX; afi++)
group->listen_range[afi] = list_new ();
group->conf = peer_new (bgp);
if (! bgp_flag_check (bgp, BGP_FLAG_NO_DEFAULT_IPV4))
group->conf->afc[AFI_IP][SAFI_UNICAST] = 1;
group->peer = list_new ();
for (afi = AFI_IP; afi < AFI_MAX; afi++)
group->listen_range[afi] = list_new ();
group->conf = peer_new (bgp);
if (! bgp_flag_check (bgp, BGP_FLAG_NO_DEFAULT_IPV4))
group->conf->afc[AFI_IP][SAFI_UNICAST] = 1;
+ if (group->conf->host)
+ XFREE(MTYPE_BGP_PEER_HOST, group->conf->host);
group->conf->host = XSTRDUP (MTYPE_BGP_PEER_HOST, name);
group->conf->group = group;
group->conf->as = 0;
group->conf->host = XSTRDUP (MTYPE_BGP_PEER_HOST, name);
group->conf->group = group;
group->conf->as = 0;
/* Import policy. */
if (pfilter->map[RMAP_IMPORT].name)
/* Import policy. */
if (pfilter->map[RMAP_IMPORT].name)
- free (pfilter->map[RMAP_IMPORT].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, pfilter->map[RMAP_IMPORT].name);
if (gfilter->map[RMAP_IMPORT].name)
{
if (gfilter->map[RMAP_IMPORT].name)
{
- pfilter->map[RMAP_IMPORT].name = strdup (gfilter->map[RMAP_IMPORT].name);
+ pfilter->map[RMAP_IMPORT].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, gfilter->map[RMAP_IMPORT].name);
pfilter->map[RMAP_IMPORT].map = gfilter->map[RMAP_IMPORT].map;
}
else
pfilter->map[RMAP_IMPORT].map = gfilter->map[RMAP_IMPORT].map;
}
else
/* Export policy. */
if (gfilter->map[RMAP_EXPORT].name && ! pfilter->map[RMAP_EXPORT].name)
{
/* Export policy. */
if (gfilter->map[RMAP_EXPORT].name && ! pfilter->map[RMAP_EXPORT].name)
{
- pfilter->map[RMAP_EXPORT].name = strdup (gfilter->map[RMAP_EXPORT].name);
+ pfilter->map[RMAP_EXPORT].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, gfilter->map[RMAP_EXPORT].name);
pfilter->map[RMAP_EXPORT].map = gfilter->map[RMAP_EXPORT].map;
}
}
pfilter->map[RMAP_EXPORT].map = gfilter->map[RMAP_EXPORT].map;
}
}
if (conf->default_rmap[afi][safi].name)
{
if (peer->default_rmap[afi][safi].name)
if (conf->default_rmap[afi][safi].name)
{
if (peer->default_rmap[afi][safi].name)
- free (peer->default_rmap[afi][safi].name);
- peer->default_rmap[afi][safi].name = strdup (conf->default_rmap[afi][safi].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, peer->default_rmap[afi][safi].name);
+ peer->default_rmap[afi][safi].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, conf->default_rmap[afi][safi].name);
peer->default_rmap[afi][safi].map = conf->default_rmap[afi][safi].map;
}
peer->default_rmap[afi][safi].map = conf->default_rmap[afi][safi].map;
}
else if (conf->update_if)
{
if (peer->update_if)
else if (conf->update_if)
{
if (peer->update_if)
- XFREE (MTYPE_PEER_UPDATE_SOURCE, peer->update_if);
+ XFREE(MTYPE_PEER_UPDATE_SOURCE, peer->update_if);
if (peer->update_source)
{
sockunion_free (peer->update_source);
if (peer->update_source)
{
sockunion_free (peer->update_source);
if (gfilter->dlist[in].name && ! pfilter->dlist[in].name)
{
if (pfilter->dlist[in].name)
if (gfilter->dlist[in].name && ! pfilter->dlist[in].name)
{
if (pfilter->dlist[in].name)
- free (pfilter->dlist[in].name);
- pfilter->dlist[in].name = strdup (gfilter->dlist[in].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, pfilter->dlist[in].name);
+ pfilter->dlist[in].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, gfilter->dlist[in].name);
pfilter->dlist[in].alist = gfilter->dlist[in].alist;
}
if (gfilter->plist[in].name && ! pfilter->plist[in].name)
{
if (pfilter->plist[in].name)
pfilter->dlist[in].alist = gfilter->dlist[in].alist;
}
if (gfilter->plist[in].name && ! pfilter->plist[in].name)
{
if (pfilter->plist[in].name)
- free (pfilter->plist[in].name);
- pfilter->plist[in].name = strdup (gfilter->plist[in].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, pfilter->plist[in].name);
+ pfilter->plist[in].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, gfilter->plist[in].name);
pfilter->plist[in].plist = gfilter->plist[in].plist;
}
if (gfilter->aslist[in].name && ! pfilter->aslist[in].name)
{
if (pfilter->aslist[in].name)
pfilter->plist[in].plist = gfilter->plist[in].plist;
}
if (gfilter->aslist[in].name && ! pfilter->aslist[in].name)
{
if (pfilter->aslist[in].name)
- free (pfilter->aslist[in].name);
- pfilter->aslist[in].name = strdup (gfilter->aslist[in].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, pfilter->aslist[in].name);
+ pfilter->aslist[in].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, gfilter->aslist[in].name);
pfilter->aslist[in].aslist = gfilter->aslist[in].aslist;
}
if (gfilter->map[RMAP_IN].name && ! pfilter->map[RMAP_IN].name)
{
if (pfilter->map[RMAP_IN].name)
pfilter->aslist[in].aslist = gfilter->aslist[in].aslist;
}
if (gfilter->map[RMAP_IN].name && ! pfilter->map[RMAP_IN].name)
{
if (pfilter->map[RMAP_IN].name)
- free (pfilter->map[RMAP_IN].name);
- pfilter->map[RMAP_IN].name = strdup (gfilter->map[RMAP_IN].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, pfilter->map[RMAP_IN].name);
+ pfilter->map[RMAP_IN].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, gfilter->map[RMAP_IN].name);
pfilter->map[RMAP_IN].map = gfilter->map[RMAP_IN].map;
}
pfilter->map[RMAP_IN].map = gfilter->map[RMAP_IN].map;
}
if (gfilter->dlist[out].name)
{
if (pfilter->dlist[out].name)
if (gfilter->dlist[out].name)
{
if (pfilter->dlist[out].name)
- free (pfilter->dlist[out].name);
- pfilter->dlist[out].name = strdup (gfilter->dlist[out].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, pfilter->dlist[out].name);
+ pfilter->dlist[out].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, gfilter->dlist[out].name);
pfilter->dlist[out].alist = gfilter->dlist[out].alist;
}
else
{
if (pfilter->dlist[out].name)
pfilter->dlist[out].alist = gfilter->dlist[out].alist;
}
else
{
if (pfilter->dlist[out].name)
- free (pfilter->dlist[out].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, pfilter->dlist[out].name);
pfilter->dlist[out].name = NULL;
pfilter->dlist[out].alist = NULL;
}
if (gfilter->plist[out].name)
{
if (pfilter->plist[out].name)
pfilter->dlist[out].name = NULL;
pfilter->dlist[out].alist = NULL;
}
if (gfilter->plist[out].name)
{
if (pfilter->plist[out].name)
- free (pfilter->plist[out].name);
- pfilter->plist[out].name = strdup (gfilter->plist[out].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, pfilter->plist[out].name);
+ pfilter->plist[out].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, gfilter->plist[out].name);
pfilter->plist[out].plist = gfilter->plist[out].plist;
}
else
{
if (pfilter->plist[out].name)
pfilter->plist[out].plist = gfilter->plist[out].plist;
}
else
{
if (pfilter->plist[out].name)
- free (pfilter->plist[out].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, pfilter->plist[out].name);
pfilter->plist[out].name = NULL;
pfilter->plist[out].plist = NULL;
}
if (gfilter->aslist[out].name)
{
if (pfilter->aslist[out].name)
pfilter->plist[out].name = NULL;
pfilter->plist[out].plist = NULL;
}
if (gfilter->aslist[out].name)
{
if (pfilter->aslist[out].name)
- free (pfilter->aslist[out].name);
- pfilter->aslist[out].name = strdup (gfilter->aslist[out].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, pfilter->aslist[out].name);
+ pfilter->aslist[out].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, gfilter->aslist[out].name);
pfilter->aslist[out].aslist = gfilter->aslist[out].aslist;
}
else
{
if (pfilter->aslist[out].name)
pfilter->aslist[out].aslist = gfilter->aslist[out].aslist;
}
else
{
if (pfilter->aslist[out].name)
- free (pfilter->aslist[out].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, pfilter->aslist[out].name);
pfilter->aslist[out].name = NULL;
pfilter->aslist[out].aslist = NULL;
}
if (gfilter->map[RMAP_OUT].name)
{
if (pfilter->map[RMAP_OUT].name)
pfilter->aslist[out].name = NULL;
pfilter->aslist[out].aslist = NULL;
}
if (gfilter->map[RMAP_OUT].name)
{
if (pfilter->map[RMAP_OUT].name)
- free (pfilter->map[RMAP_OUT].name);
- pfilter->map[RMAP_OUT].name = strdup (gfilter->map[RMAP_OUT].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, pfilter->map[RMAP_OUT].name);
+ pfilter->map[RMAP_OUT].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, gfilter->map[RMAP_OUT].name);
pfilter->map[RMAP_OUT].map = gfilter->map[RMAP_OUT].map;
}
else
{
if (pfilter->map[RMAP_OUT].name)
pfilter->map[RMAP_OUT].map = gfilter->map[RMAP_OUT].map;
}
else
{
if (pfilter->map[RMAP_OUT].name)
- free (pfilter->map[RMAP_OUT].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, pfilter->map[RMAP_OUT].name);
pfilter->map[RMAP_OUT].name = NULL;
pfilter->map[RMAP_OUT].map = NULL;
}
pfilter->map[RMAP_OUT].name = NULL;
pfilter->map[RMAP_OUT].map = NULL;
}
if (gfilter->map[RMAP_IMPORT].name)
{
if (pfilter->map[RMAP_IMPORT].name)
if (gfilter->map[RMAP_IMPORT].name)
{
if (pfilter->map[RMAP_IMPORT].name)
- free (pfilter->map[RMAP_IMPORT].name);
- pfilter->map[RMAP_IMPORT].name = strdup (gfilter->map[RMAP_IMPORT].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, pfilter->map[RMAP_IMPORT].name);
+ pfilter->map[RMAP_IMPORT].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, gfilter->map[RMAP_IMPORT].name);
pfilter->map[RMAP_IMPORT].map = gfilter->map[RMAP_IMPORT].map;
}
else
{
if (pfilter->map[RMAP_IMPORT].name)
pfilter->map[RMAP_IMPORT].map = gfilter->map[RMAP_IMPORT].map;
}
else
{
if (pfilter->map[RMAP_IMPORT].name)
- free (pfilter->map[RMAP_IMPORT].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, pfilter->map[RMAP_IMPORT].name);
pfilter->map[RMAP_IMPORT].name = NULL;
pfilter->map[RMAP_IMPORT].map = NULL;
}
if (gfilter->map[RMAP_EXPORT].name && ! pfilter->map[RMAP_EXPORT].name)
{
if (pfilter->map[RMAP_EXPORT].name)
pfilter->map[RMAP_IMPORT].name = NULL;
pfilter->map[RMAP_IMPORT].map = NULL;
}
if (gfilter->map[RMAP_EXPORT].name && ! pfilter->map[RMAP_EXPORT].name)
{
if (pfilter->map[RMAP_EXPORT].name)
- free (pfilter->map[RMAP_EXPORT].name);
- pfilter->map[RMAP_EXPORT].name = strdup (gfilter->map[RMAP_EXPORT].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, pfilter->map[RMAP_EXPORT].name);
+ pfilter->map[RMAP_EXPORT].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, gfilter->map[RMAP_EXPORT].name);
pfilter->map[RMAP_EXPORT].map = gfilter->map[RMAP_EXPORT].map;
}
if (gfilter->usmap.name)
{
if (pfilter->usmap.name)
pfilter->map[RMAP_EXPORT].map = gfilter->map[RMAP_EXPORT].map;
}
if (gfilter->usmap.name)
{
if (pfilter->usmap.name)
- free (pfilter->usmap.name);
- pfilter->usmap.name = strdup (gfilter->usmap.name);
+ XFREE(MTYPE_BGP_FILTER_NAME, pfilter->usmap.name);
+ pfilter->usmap.name = XSTRDUP(MTYPE_BGP_FILTER_NAME, gfilter->usmap.name);
pfilter->usmap.map = gfilter->usmap.map;
}
else
{
if (pfilter->usmap.name)
pfilter->usmap.map = gfilter->usmap.map;
}
else
{
if (pfilter->usmap.name)
- free (pfilter->usmap.name);
+ XFREE(MTYPE_BGP_FILTER_NAME, pfilter->usmap.name);
pfilter->usmap.name = NULL;
pfilter->usmap.map = NULL;
}
pfilter->usmap.name = NULL;
pfilter->usmap.map = NULL;
}
list_delete (group->listen_range[afi]);
}
list_delete (group->listen_range[afi]);
}
+ XFREE(MTYPE_BGP_PEER_HOST, group->name);
group->name = NULL;
group->conf->group = NULL;
group->name = NULL;
group->conf->group = NULL;
/* Import policy. */
if (peer->filter[afi][safi].map[RMAP_IMPORT].name)
{
/* Import policy. */
if (peer->filter[afi][safi].map[RMAP_IMPORT].name)
{
- free (peer->filter[afi][safi].map[RMAP_IMPORT].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, peer->filter[afi][safi].map[RMAP_IMPORT].name);
peer->filter[afi][safi].map[RMAP_IMPORT].name = NULL;
peer->filter[afi][safi].map[RMAP_IMPORT].map = NULL;
}
peer->filter[afi][safi].map[RMAP_IMPORT].name = NULL;
peer->filter[afi][safi].map[RMAP_IMPORT].map = NULL;
}
if (! CHECK_FLAG(group->conf->af_flags[afi][safi], PEER_FLAG_RSERVER_CLIENT)
&& peer->filter[afi][safi].map[RMAP_EXPORT].name)
{
if (! CHECK_FLAG(group->conf->af_flags[afi][safi], PEER_FLAG_RSERVER_CLIENT)
&& peer->filter[afi][safi].map[RMAP_EXPORT].name)
{
- free (peer->filter[afi][safi].map[RMAP_EXPORT].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, peer->filter[afi][safi].map[RMAP_EXPORT].name);
peer->filter[afi][safi].map[RMAP_EXPORT].name = NULL;
peer->filter[afi][safi].map[RMAP_EXPORT].map = NULL;
}
peer->filter[afi][safi].map[RMAP_EXPORT].name = NULL;
peer->filter[afi][safi].map[RMAP_EXPORT].map = NULL;
}
bgp_lock (bgp);
bgp->peer_self = peer_new (bgp);
bgp_lock (bgp);
bgp->peer_self = peer_new (bgp);
- bgp->peer_self->host = XSTRDUP (MTYPE_BGP_PEER_HOST, "Static announcement");
-
+ if (bgp->peer_self->host)
+ XFREE(MTYPE_BGP_PEER_HOST, bgp->peer_self->host);
+ bgp->peer_self->host = XSTRDUP(MTYPE_BGP_PEER_HOST, "Static announcement");
bgp->peer = list_new ();
bgp->peer->cmp = (int (*)(void *, void *)) peer_cmp;
bgp->peer = list_new ();
bgp->peer->cmp = (int (*)(void *, void *)) peer_cmp;
- bgp->name = strdup (name);
+ bgp->name = XSTRDUP(MTYPE_BGP, name);
bgp->wpkt_quanta = BGP_WRITE_PACKET_MAX;
bgp->coalesce_time = BGP_DEFAULT_SUBGROUP_COALESCE_TIME;
bgp->wpkt_quanta = BGP_WRITE_PACKET_MAX;
bgp->coalesce_time = BGP_DEFAULT_SUBGROUP_COALESCE_TIME;
list_delete (bgp->rsclient);
if (bgp->name)
list_delete (bgp->rsclient);
if (bgp->name)
+ XFREE(MTYPE_BGP, bgp->name);
for (afi = AFI_IP; afi < AFI_MAX; afi++)
for (safi = SAFI_UNICAST; safi < SAFI_MAX; safi++)
for (afi = AFI_IP; afi < AFI_MAX; afi++)
for (safi = SAFI_UNICAST; safi < SAFI_MAX; safi++)
if (rmap)
{
if (peer->default_rmap[afi][safi].name)
if (rmap)
{
if (peer->default_rmap[afi][safi].name)
- free (peer->default_rmap[afi][safi].name);
- peer->default_rmap[afi][safi].name = strdup (rmap);
+ XFREE(MTYPE_ROUTE_MAP_NAME, peer->default_rmap[afi][safi].name);
+ peer->default_rmap[afi][safi].name = XSTRDUP(MTYPE_ROUTE_MAP_NAME, rmap);
peer->default_rmap[afi][safi].map = route_map_lookup_by_name (rmap);
}
}
peer->default_rmap[afi][safi].map = route_map_lookup_by_name (rmap);
}
}
if (rmap)
{
if (peer->default_rmap[afi][safi].name)
if (rmap)
{
if (peer->default_rmap[afi][safi].name)
- free (peer->default_rmap[afi][safi].name);
- peer->default_rmap[afi][safi].name = strdup (rmap);
+ XFREE(MTYPE_ROUTE_MAP_NAME, peer->default_rmap[afi][safi].name);
+ peer->default_rmap[afi][safi].name = XSTRDUP(MTYPE_ROUTE_MAP_NAME, rmap);
peer->default_rmap[afi][safi].map = route_map_lookup_by_name (rmap);
}
peer->default_rmap[afi][safi].map = route_map_lookup_by_name (rmap);
}
UNSET_FLAG (peer->af_flags[afi][safi], PEER_FLAG_DEFAULT_ORIGINATE);
if (peer->default_rmap[afi][safi].name)
UNSET_FLAG (peer->af_flags[afi][safi], PEER_FLAG_DEFAULT_ORIGINATE);
if (peer->default_rmap[afi][safi].name)
- free (peer->default_rmap[afi][safi].name);
+ XFREE(MTYPE_ROUTE_MAP_NAME, peer->default_rmap[afi][safi].name);
peer->default_rmap[afi][safi].name = NULL;
peer->default_rmap[afi][safi].map = NULL;
}
peer->default_rmap[afi][safi].name = NULL;
peer->default_rmap[afi][safi].map = NULL;
}
UNSET_FLAG (peer->af_flags[afi][safi], PEER_FLAG_DEFAULT_ORIGINATE);
if (peer->default_rmap[afi][safi].name)
UNSET_FLAG (peer->af_flags[afi][safi], PEER_FLAG_DEFAULT_ORIGINATE);
if (peer->default_rmap[afi][safi].name)
- free (peer->default_rmap[afi][safi].name);
+ XFREE(MTYPE_ROUTE_MAP_NAME, peer->default_rmap[afi][safi].name);
peer->default_rmap[afi][safi].name = NULL;
peer->default_rmap[afi][safi].map = NULL;
peer->default_rmap[afi][safi].name = NULL;
peer->default_rmap[afi][safi].map = NULL;
peer_interface_set (struct peer *peer, const char *str)
{
if (peer->ifname)
peer_interface_set (struct peer *peer, const char *str)
{
if (peer->ifname)
- free (peer->ifname);
- peer->ifname = strdup (str);
+ XFREE(MTYPE_BGP_PEER_IFNAME, peer->ifname);
+ peer->ifname = XSTRDUP(MTYPE_BGP_PEER_IFNAME, str);
}
void
peer_interface_unset (struct peer *peer)
{
if (peer->ifname)
}
void
peer_interface_unset (struct peer *peer)
{
if (peer->ifname)
+ XFREE(MTYPE_BGP_PEER_IFNAME, peer->ifname);
return BGP_ERR_PEER_FILTER_CONFLICT;
if (filter->dlist[direct].name)
return BGP_ERR_PEER_FILTER_CONFLICT;
if (filter->dlist[direct].name)
- free (filter->dlist[direct].name);
- filter->dlist[direct].name = strdup (name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->dlist[direct].name);
+ filter->dlist[direct].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, name);
filter->dlist[direct].alist = access_list_lookup (afi, name);
if (! CHECK_FLAG (peer->sflags, PEER_STATUS_GROUP))
filter->dlist[direct].alist = access_list_lookup (afi, name);
if (! CHECK_FLAG (peer->sflags, PEER_STATUS_GROUP))
continue;
if (filter->dlist[direct].name)
continue;
if (filter->dlist[direct].name)
- free (filter->dlist[direct].name);
- filter->dlist[direct].name = strdup (name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->dlist[direct].name);
+ filter->dlist[direct].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, name);
filter->dlist[direct].alist = access_list_lookup (afi, name);
peer_on_policy_change(peer, afi, safi,
(direct == FILTER_OUT) ? 1 : 0);
filter->dlist[direct].alist = access_list_lookup (afi, name);
peer_on_policy_change(peer, afi, safi,
(direct == FILTER_OUT) ? 1 : 0);
if (gfilter->dlist[direct].name)
{
if (filter->dlist[direct].name)
if (gfilter->dlist[direct].name)
{
if (filter->dlist[direct].name)
- free (filter->dlist[direct].name);
- filter->dlist[direct].name = strdup (gfilter->dlist[direct].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->dlist[direct].name);
+ filter->dlist[direct].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, gfilter->dlist[direct].name);
filter->dlist[direct].alist = gfilter->dlist[direct].alist;
peer_on_policy_change(peer, afi, safi,
(direct == FILTER_OUT) ? 1 : 0);
filter->dlist[direct].alist = gfilter->dlist[direct].alist;
peer_on_policy_change(peer, afi, safi,
(direct == FILTER_OUT) ? 1 : 0);
}
if (filter->dlist[direct].name)
}
if (filter->dlist[direct].name)
- free (filter->dlist[direct].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->dlist[direct].name);
filter->dlist[direct].name = NULL;
filter->dlist[direct].alist = NULL;
filter->dlist[direct].name = NULL;
filter->dlist[direct].alist = NULL;
continue;
if (filter->dlist[direct].name)
continue;
if (filter->dlist[direct].name)
- free (filter->dlist[direct].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->dlist[direct].name);
filter->dlist[direct].name = NULL;
filter->dlist[direct].alist = NULL;
peer_on_policy_change(peer, afi, safi,
filter->dlist[direct].name = NULL;
filter->dlist[direct].alist = NULL;
peer_on_policy_change(peer, afi, safi,
return BGP_ERR_PEER_FILTER_CONFLICT;
if (filter->plist[direct].name)
return BGP_ERR_PEER_FILTER_CONFLICT;
if (filter->plist[direct].name)
- free (filter->plist[direct].name);
- filter->plist[direct].name = strdup (name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->plist[direct].name);
+ filter->plist[direct].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, name);
filter->plist[direct].plist = prefix_list_lookup (afi, name);
if (! CHECK_FLAG (peer->sflags, PEER_STATUS_GROUP))
filter->plist[direct].plist = prefix_list_lookup (afi, name);
if (! CHECK_FLAG (peer->sflags, PEER_STATUS_GROUP))
continue;
if (filter->plist[direct].name)
continue;
if (filter->plist[direct].name)
- free (filter->plist[direct].name);
- filter->plist[direct].name = strdup (name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->plist[direct].name);
+ filter->plist[direct].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, name);
filter->plist[direct].plist = prefix_list_lookup (afi, name);
peer_on_policy_change(peer, afi, safi,
(direct == FILTER_OUT) ? 1 : 0);
filter->plist[direct].plist = prefix_list_lookup (afi, name);
peer_on_policy_change(peer, afi, safi,
(direct == FILTER_OUT) ? 1 : 0);
if (gfilter->plist[direct].name)
{
if (filter->plist[direct].name)
if (gfilter->plist[direct].name)
{
if (filter->plist[direct].name)
- free (filter->plist[direct].name);
- filter->plist[direct].name = strdup (gfilter->plist[direct].name);
+ XSTRDUP(MTYPE_BGP_FILTER_NAME, filter->plist[direct].name);
+ filter->plist[direct].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, gfilter->plist[direct].name);
filter->plist[direct].plist = gfilter->plist[direct].plist;
peer_on_policy_change(peer, afi, safi,
(direct == FILTER_OUT) ? 1 : 0);
filter->plist[direct].plist = gfilter->plist[direct].plist;
peer_on_policy_change(peer, afi, safi,
(direct == FILTER_OUT) ? 1 : 0);
}
if (filter->plist[direct].name)
}
if (filter->plist[direct].name)
- free (filter->plist[direct].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->plist[direct].name);
filter->plist[direct].name = NULL;
filter->plist[direct].plist = NULL;
filter->plist[direct].name = NULL;
filter->plist[direct].plist = NULL;
continue;
if (filter->plist[direct].name)
continue;
if (filter->plist[direct].name)
- free (filter->plist[direct].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->plist[direct].name);
filter->plist[direct].name = NULL;
filter->plist[direct].plist = NULL;
peer_on_policy_change(peer, afi, safi,
filter->plist[direct].name = NULL;
filter->plist[direct].plist = NULL;
peer_on_policy_change(peer, afi, safi,
filter = &peer->filter[afi][safi];
if (filter->aslist[direct].name)
filter = &peer->filter[afi][safi];
if (filter->aslist[direct].name)
- free (filter->aslist[direct].name);
- filter->aslist[direct].name = strdup (name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->aslist[direct].name);
+ filter->aslist[direct].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, name);
filter->aslist[direct].aslist = as_list_lookup (name);
if (! CHECK_FLAG (peer->sflags, PEER_STATUS_GROUP))
filter->aslist[direct].aslist = as_list_lookup (name);
if (! CHECK_FLAG (peer->sflags, PEER_STATUS_GROUP))
continue;
if (filter->aslist[direct].name)
continue;
if (filter->aslist[direct].name)
- free (filter->aslist[direct].name);
- filter->aslist[direct].name = strdup (name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->aslist[direct].name);
+ filter->aslist[direct].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, name);
filter->aslist[direct].aslist = as_list_lookup (name);
peer_on_policy_change(peer, afi, safi,
(direct == FILTER_OUT) ? 1 : 0);
filter->aslist[direct].aslist = as_list_lookup (name);
peer_on_policy_change(peer, afi, safi,
(direct == FILTER_OUT) ? 1 : 0);
if (gfilter->aslist[direct].name)
{
if (filter->aslist[direct].name)
if (gfilter->aslist[direct].name)
{
if (filter->aslist[direct].name)
- free (filter->aslist[direct].name);
- filter->aslist[direct].name = strdup (gfilter->aslist[direct].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->aslist[direct].name);
+ filter->aslist[direct].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, gfilter->aslist[direct].name);
filter->aslist[direct].aslist = gfilter->aslist[direct].aslist;
peer_on_policy_change(peer, afi, safi,
(direct == FILTER_OUT) ? 1 : 0);
filter->aslist[direct].aslist = gfilter->aslist[direct].aslist;
peer_on_policy_change(peer, afi, safi,
(direct == FILTER_OUT) ? 1 : 0);
}
if (filter->aslist[direct].name)
}
if (filter->aslist[direct].name)
- free (filter->aslist[direct].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->aslist[direct].name);
filter->aslist[direct].name = NULL;
filter->aslist[direct].aslist = NULL;
filter->aslist[direct].name = NULL;
filter->aslist[direct].aslist = NULL;
continue;
if (filter->aslist[direct].name)
continue;
if (filter->aslist[direct].name)
- free (filter->aslist[direct].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->aslist[direct].name);
filter->aslist[direct].name = NULL;
filter->aslist[direct].aslist = NULL;
peer_on_policy_change(peer, afi, safi,
filter->aslist[direct].name = NULL;
filter->aslist[direct].aslist = NULL;
peer_on_policy_change(peer, afi, safi,
filter = &peer->filter[afi][safi];
if (filter->map[direct].name)
filter = &peer->filter[afi][safi];
if (filter->map[direct].name)
- free (filter->map[direct].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->map[direct].name);
- filter->map[direct].name = strdup (name);
+ filter->map[direct].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, name);
filter->map[direct].map = route_map_lookup_by_name (name);
if (! CHECK_FLAG (peer->sflags, PEER_STATUS_GROUP))
filter->map[direct].map = route_map_lookup_by_name (name);
if (! CHECK_FLAG (peer->sflags, PEER_STATUS_GROUP))
continue;
if (filter->map[direct].name)
continue;
if (filter->map[direct].name)
- free (filter->map[direct].name);
- filter->map[direct].name = strdup (name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->map[direct].name);
+ filter->map[direct].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, name);
filter->map[direct].map = route_map_lookup_by_name (name);
peer_on_policy_change(peer, afi, safi,
(direct == RMAP_OUT) ? 1 : 0);
filter->map[direct].map = route_map_lookup_by_name (name);
peer_on_policy_change(peer, afi, safi,
(direct == RMAP_OUT) ? 1 : 0);
if (gfilter->map[direct].name)
{
if (filter->map[direct].name)
if (gfilter->map[direct].name)
{
if (filter->map[direct].name)
- free (filter->map[direct].name);
- filter->map[direct].name = strdup (gfilter->map[direct].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->map[direct].name);
+ filter->map[direct].name = XSTRDUP(MTYPE_BGP_FILTER_NAME, gfilter->map[direct].name);
filter->map[direct].map = gfilter->map[direct].map;
peer_on_policy_change(peer, afi, safi,
(direct == RMAP_OUT) ? 1 : 0);
filter->map[direct].map = gfilter->map[direct].map;
peer_on_policy_change(peer, afi, safi,
(direct == RMAP_OUT) ? 1 : 0);
}
if (filter->map[direct].name)
}
if (filter->map[direct].name)
- free (filter->map[direct].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->map[direct].name);
filter->map[direct].name = NULL;
filter->map[direct].map = NULL;
filter->map[direct].name = NULL;
filter->map[direct].map = NULL;
continue;
if (filter->map[direct].name)
continue;
if (filter->map[direct].name)
- free (filter->map[direct].name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->map[direct].name);
filter->map[direct].name = NULL;
filter->map[direct].map = NULL;
peer_on_policy_change(peer, afi, safi,
filter->map[direct].name = NULL;
filter->map[direct].map = NULL;
peer_on_policy_change(peer, afi, safi,
filter = &peer->filter[afi][safi];
if (filter->usmap.name)
filter = &peer->filter[afi][safi];
if (filter->usmap.name)
- free (filter->usmap.name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->usmap.name);
- filter->usmap.name = strdup (name);
+ filter->usmap.name = XSTRDUP(MTYPE_BGP_FILTER_NAME, name);
filter->usmap.map = route_map_lookup_by_name (name);
if (! CHECK_FLAG (peer->sflags, PEER_STATUS_GROUP))
filter->usmap.map = route_map_lookup_by_name (name);
if (! CHECK_FLAG (peer->sflags, PEER_STATUS_GROUP))
continue;
if (filter->usmap.name)
continue;
if (filter->usmap.name)
- free (filter->usmap.name);
- filter->usmap.name = strdup (name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->usmap.name);
+ filter->usmap.name = XSTRDUP(MTYPE_BGP_FILTER_NAME, name);
filter->usmap.map = route_map_lookup_by_name (name);
peer_on_policy_change(peer, afi, safi, 1);
}
filter->usmap.map = route_map_lookup_by_name (name);
peer_on_policy_change(peer, afi, safi, 1);
}
filter = &peer->filter[afi][safi];
if (filter->usmap.name)
filter = &peer->filter[afi][safi];
if (filter->usmap.name)
- free (filter->usmap.name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->usmap.name);
filter->usmap.name = NULL;
filter->usmap.map = NULL;
filter->usmap.name = NULL;
filter->usmap.map = NULL;
continue;
if (filter->usmap.name)
continue;
if (filter->usmap.name)
- free (filter->usmap.name);
+ XFREE(MTYPE_BGP_FILTER_NAME, filter->usmap.name);
filter->usmap.name = NULL;
filter->usmap.map = NULL;
peer_on_policy_change(peer, afi, safi, 1);
filter->usmap.name = NULL;
filter->usmap.map = NULL;
peer_on_policy_change(peer, afi, safi, 1);
void *serverarg, void *clientarg)
{
struct snmp_log_message *slm = (struct snmp_log_message *)serverarg;
void *serverarg, void *clientarg)
{
struct snmp_log_message *slm = (struct snmp_log_message *)serverarg;
- char *msg = strdup (slm->msg);
+ char *msg = XSTRDUP(MTYPE_TMP, slm->msg);
if (msg) msg[strlen(msg)-1] = '\0';
switch (slm->priority)
{
if (msg) msg[strlen(msg)-1] = '\0';
switch (slm->priority)
{
case LOG_INFO: zlog_info ("snmp[info]: %s", msg?msg:slm->msg); break;
case LOG_DEBUG: zlog_debug ("snmp[debug]: %s", msg?msg:slm->msg); break;
}
case LOG_INFO: zlog_info ("snmp[info]: %s", msg?msg:slm->msg); break;
case LOG_DEBUG: zlog_debug ("snmp[debug]: %s", msg?msg:slm->msg); break;
}
return SNMP_ERR_NOERROR;
}
return SNMP_ERR_NOERROR;
}
XFREE (MTYPE_DISTRIBUTE_IFNAME, dist->ifname);
if (dist->list[DISTRIBUTE_IN])
XFREE (MTYPE_DISTRIBUTE_IFNAME, dist->ifname);
if (dist->list[DISTRIBUTE_IN])
- free (dist->list[DISTRIBUTE_IN]);
+ XFREE(MTYPE_DISTRIBUTE_NAME, dist->list[DISTRIBUTE_IN]);
if (dist->list[DISTRIBUTE_OUT])
if (dist->list[DISTRIBUTE_OUT])
- free (dist->list[DISTRIBUTE_OUT]);
+ XFREE(MTYPE_DISTRIBUTE_NAME, dist->list[DISTRIBUTE_OUT]);
if (dist->prefix[DISTRIBUTE_IN])
if (dist->prefix[DISTRIBUTE_IN])
- free (dist->prefix[DISTRIBUTE_IN]);
+ XFREE(MTYPE_DISTRIBUTE_NAME, dist->prefix[DISTRIBUTE_IN]);
if (dist->prefix[DISTRIBUTE_OUT])
if (dist->prefix[DISTRIBUTE_OUT])
- free (dist->prefix[DISTRIBUTE_OUT]);
+ XFREE(MTYPE_DISTRIBUTE_NAME, dist->prefix[DISTRIBUTE_OUT]);
XFREE (MTYPE_DISTRIBUTE, dist);
}
XFREE (MTYPE_DISTRIBUTE, dist);
}
if (type == DISTRIBUTE_IN)
{
if (dist->list[DISTRIBUTE_IN])
if (type == DISTRIBUTE_IN)
{
if (dist->list[DISTRIBUTE_IN])
- free (dist->list[DISTRIBUTE_IN]);
- dist->list[DISTRIBUTE_IN] = strdup (alist_name);
+ XFREE(MTYPE_DISTRIBUTE_NAME, dist->list[DISTRIBUTE_IN]);
+ dist->list[DISTRIBUTE_IN] = XSTRDUP(MTYPE_DISTRIBUTE_NAME, alist_name);
}
if (type == DISTRIBUTE_OUT)
{
if (dist->list[DISTRIBUTE_OUT])
}
if (type == DISTRIBUTE_OUT)
{
if (dist->list[DISTRIBUTE_OUT])
- free (dist->list[DISTRIBUTE_OUT]);
- dist->list[DISTRIBUTE_OUT] = strdup (alist_name);
+ XFREE(MTYPE_DISTRIBUTE_NAME, dist->list[DISTRIBUTE_OUT]);
+ dist->list[DISTRIBUTE_OUT] = XSTRDUP(MTYPE_DISTRIBUTE_NAME, alist_name);
}
/* Apply this distribute-list to the interface. */
}
/* Apply this distribute-list to the interface. */
if (strcmp (dist->list[DISTRIBUTE_IN], alist_name) != 0)
return 0;
if (strcmp (dist->list[DISTRIBUTE_IN], alist_name) != 0)
return 0;
- free (dist->list[DISTRIBUTE_IN]);
+ XFREE(MTYPE_DISTRIBUTE_NAME, dist->list[DISTRIBUTE_IN]);
dist->list[DISTRIBUTE_IN] = NULL;
}
dist->list[DISTRIBUTE_IN] = NULL;
}
if (strcmp (dist->list[DISTRIBUTE_OUT], alist_name) != 0)
return 0;
if (strcmp (dist->list[DISTRIBUTE_OUT], alist_name) != 0)
return 0;
- free (dist->list[DISTRIBUTE_OUT]);
+ XFREE(MTYPE_DISTRIBUTE_NAME, dist->list[DISTRIBUTE_OUT]);
dist->list[DISTRIBUTE_OUT] = NULL;
}
dist->list[DISTRIBUTE_OUT] = NULL;
}
if (type == DISTRIBUTE_IN)
{
if (dist->prefix[DISTRIBUTE_IN])
if (type == DISTRIBUTE_IN)
{
if (dist->prefix[DISTRIBUTE_IN])
- free (dist->prefix[DISTRIBUTE_IN]);
- dist->prefix[DISTRIBUTE_IN] = strdup (plist_name);
+ XFREE(MTYPE_DISTRIBUTE_NAME, dist->prefix[DISTRIBUTE_IN]);
+ dist->prefix[DISTRIBUTE_IN] = XSTRDUP(MTYPE_DISTRIBUTE_NAME, plist_name);
}
if (type == DISTRIBUTE_OUT)
{
if (dist->prefix[DISTRIBUTE_OUT])
}
if (type == DISTRIBUTE_OUT)
{
if (dist->prefix[DISTRIBUTE_OUT])
- free (dist->prefix[DISTRIBUTE_OUT]);
- dist->prefix[DISTRIBUTE_OUT] = strdup (plist_name);
+ XFREE(MTYPE_DISTRIBUTE_NAME, dist->prefix[DISTRIBUTE_OUT]);
+ dist->prefix[DISTRIBUTE_OUT] = XSTRDUP(MTYPE_DISTRIBUTE_NAME, plist_name);
}
/* Apply this distribute-list to the interface. */
}
/* Apply this distribute-list to the interface. */
if (strcmp (dist->prefix[DISTRIBUTE_IN], plist_name) != 0)
return 0;
if (strcmp (dist->prefix[DISTRIBUTE_IN], plist_name) != 0)
return 0;
- free (dist->prefix[DISTRIBUTE_IN]);
- dist->prefix[DISTRIBUTE_IN] = NULL;
+ XFREE(MTYPE_DISTRIBUTE_NAME, dist->prefix[DISTRIBUTE_IN]);
+ dist->prefix[DISTRIBUTE_IN] = NULL;
}
if (type == DISTRIBUTE_OUT)
}
if (type == DISTRIBUTE_OUT)
if (strcmp (dist->prefix[DISTRIBUTE_OUT], plist_name) != 0)
return 0;
if (strcmp (dist->prefix[DISTRIBUTE_OUT], plist_name) != 0)
return 0;
- free (dist->prefix[DISTRIBUTE_OUT]);
- dist->prefix[DISTRIBUTE_OUT] = NULL;
+ XFREE(MTYPE_DISTRIBUTE_NAME, dist->prefix[DISTRIBUTE_OUT]);
+ dist->prefix[DISTRIBUTE_OUT] = NULL;
}
/* Apply this distribute-list to the interface. */
}
/* Apply this distribute-list to the interface. */
return keychain;
keychain = keychain_new ();
return keychain;
keychain = keychain_new ();
- keychain->name = strdup (name);
+ keychain->name = XSTRDUP(MTYPE_KEYCHAIN, name);
keychain->key = list_new ();
keychain->key->cmp = (int (*)(void *, void *)) key_cmp_func;
keychain->key->del = (void (*)(void *)) key_delete_func;
keychain->key = list_new ();
keychain->key->cmp = (int (*)(void *, void *)) key_cmp_func;
keychain->key->del = (void (*)(void *)) key_delete_func;
keychain_delete (struct keychain *keychain)
{
if (keychain->name)
keychain_delete (struct keychain *keychain)
{
if (keychain->name)
+ XFREE(MTYPE_KEYCHAIN, keychain->name);
list_delete (keychain->key);
listnode_delete (keychain_list, keychain);
list_delete (keychain->key);
listnode_delete (keychain_list, keychain);
listnode_delete (keychain->key, key);
if (key->string)
listnode_delete (keychain->key, key);
if (key->string)
+ XFREE(MTYPE_KEY, key->string);
key = vty->index_sub;
if (key->string)
key = vty->index_sub;
if (key->string)
- free (key->string);
- key->string = strdup (argv[0]);
+ XFREE(MTYPE_KEY, key->string);
+ key->string = XSTRDUP(MTYPE_KEY, argv[0]);
+ XFREE(MTYPE_KEY, key->string);
fclose (zl->fp);
if (zl->filename != NULL)
fclose (zl->fp);
if (zl->filename != NULL)
+ XFREE(MTYPE_ZLOG, zl->filename);
XFREE (MTYPE_ZLOG, zl);
}
XFREE (MTYPE_ZLOG, zl);
}
return 0;
/* Set flags. */
return 0;
/* Set flags. */
- zl->filename = strdup (filename);
+ zl->filename = XSTRDUP(MTYPE_ZLOG, filename);
zl->maxlvl[ZLOG_DEST_FILE] = log_level;
zl->fp = fp;
logfile_fd = fileno(fp);
zl->maxlvl[ZLOG_DEST_FILE] = log_level;
zl->fp = fp;
logfile_fd = fileno(fp);
zl->maxlvl[ZLOG_DEST_FILE] = ZLOG_DISABLED;
if (zl->filename)
zl->maxlvl[ZLOG_DEST_FILE] = ZLOG_DISABLED;
if (zl->filename)
+ XFREE(MTYPE_ZLOG, zl->filename);
zl->filename = NULL;
return 1;
zl->filename = NULL;
return 1;
{ MTYPE_ROUTE_NODE, "Route node" },
{ MTYPE_DISTRIBUTE, "Distribute list" },
{ MTYPE_DISTRIBUTE_IFNAME, "Dist-list ifname" },
{ MTYPE_ROUTE_NODE, "Route node" },
{ MTYPE_DISTRIBUTE, "Distribute list" },
{ MTYPE_DISTRIBUTE_IFNAME, "Dist-list ifname" },
+ { MTYPE_DISTRIBUTE_NAME, "Dist-list name" },
{ MTYPE_ACCESS_LIST, "Access List" },
{ MTYPE_ACCESS_LIST_STR, "Access List Str" },
{ MTYPE_ACCESS_FILTER, "Access Filter" },
{ MTYPE_ACCESS_LIST, "Access List" },
{ MTYPE_ACCESS_LIST_STR, "Access List Str" },
{ MTYPE_ACCESS_FILTER, "Access Filter" },
{ MTYPE_BGP_LISTENER, "BGP listen socket details" },
{ MTYPE_BGP_PEER, "BGP peer" },
{ MTYPE_BGP_PEER_HOST, "BGP peer hostname" },
{ MTYPE_BGP_LISTENER, "BGP listen socket details" },
{ MTYPE_BGP_PEER, "BGP peer" },
{ MTYPE_BGP_PEER_HOST, "BGP peer hostname" },
- { MTYPE_PEER_GROUP, "Peer group" },
+ { MTYPE_BGP_PEER_IFNAME, "BGP peer ifname" },
+ { MTYPE_BGP_PEER_GROUP, "BGP Peer group" },
+ { MTYPE_BGP_PEER_GROUP_HOST, "BGP Peer group hostname" },
{ MTYPE_PEER_DESC, "Peer description" },
{ MTYPE_PEER_PASSWORD, "Peer password string" },
{ MTYPE_BGP_PEER_AF, "BGP peer af" },
{ MTYPE_PEER_DESC, "Peer description" },
{ MTYPE_PEER_PASSWORD, "Peer password string" },
{ MTYPE_BGP_PEER_AF, "BGP peer af" },
{ MTYPE_TRANSIT_VAL, "BGP transit val" },
{ 0, NULL },
{ MTYPE_BGP_DEBUG_FILTER, "BGP debug filter" },
{ MTYPE_TRANSIT_VAL, "BGP transit val" },
{ 0, NULL },
{ MTYPE_BGP_DEBUG_FILTER, "BGP debug filter" },
+ { MTYPE_BGP_DEBUG_STR, "BGP debug filter string" },
{ 0, NULL },
{ MTYPE_BGP_DISTANCE, "BGP distance" },
{ MTYPE_BGP_NEXTHOP_CACHE, "BGP nexthop" },
{ 0, NULL },
{ MTYPE_BGP_DISTANCE, "BGP distance" },
{ MTYPE_BGP_NEXTHOP_CACHE, "BGP nexthop" },
{ MTYPE_BGP_REGEXP, "BGP regexp" },
{ MTYPE_BGP_AGGREGATE, "BGP aggregate" },
{ MTYPE_BGP_ADDR, "BGP own address" },
{ MTYPE_BGP_REGEXP, "BGP regexp" },
{ MTYPE_BGP_AGGREGATE, "BGP aggregate" },
{ MTYPE_BGP_ADDR, "BGP own address" },
+ { 0 , NULL},
+ { MTYPE_BGP_REDIST, "BGP redistribution" },
+ { MTYPE_BGP_FILTER_NAME, "BGP Filter Information" },
+ { MTYPE_BGP_DUMP_STR, "BGP Dump String Information" },