Merge branch 'cmaster' of ssh://stash.cumulusnetworks.com:7999/quag/quagga into cmaster

This commit is contained in:
Vipin Kumar 2015-10-20 15:19:55 -07:00
commit d0f9e40016
3 changed files with 112 additions and 39 deletions

View File

@ -623,7 +623,10 @@ bgp_capability_hostname (struct peer *peer, struct capability_header *hdr)
XFREE(MTYPE_HOST, peer->hostname); XFREE(MTYPE_HOST, peer->hostname);
if (peer->domainname != NULL) if (peer->domainname != NULL)
XFREE(MTYPE_HOST, peer->domainname); {
XFREE(MTYPE_HOST, peer->domainname);
peer->domainname = NULL;
}
peer->hostname = XSTRDUP(MTYPE_HOST, str); peer->hostname = XSTRDUP(MTYPE_HOST, str);
} }

View File

@ -642,8 +642,13 @@ bgp_notify_send_with_data (struct peer *peer, u_char code, u_char sub_code,
} }
} }
bgp_notify_print (peer, &bgp_notify, "sending"); bgp_notify_print (peer, &bgp_notify, "sending");
if (bgp_notify.data) if (bgp_notify.data)
XFREE (MTYPE_TMP, bgp_notify.data); {
XFREE (MTYPE_TMP, bgp_notify.data);
bgp_notify.data = NULL;
bgp_notify.length = 0;
}
} }
/* peer reset cause */ /* peer reset cause */
@ -1734,7 +1739,11 @@ bgp_notify_receive (struct peer *peer, bgp_size_t size)
bgp_notify_print(peer, &bgp_notify, "received"); bgp_notify_print(peer, &bgp_notify, "received");
if (bgp_notify.data) if (bgp_notify.data)
XFREE (MTYPE_TMP, bgp_notify.data); {
XFREE (MTYPE_TMP, bgp_notify.data);
bgp_notify.data = NULL;
bgp_notify.length = 0;
}
} }
/* peer count update */ /* peer count update */

View File

@ -933,34 +933,54 @@ peer_free (struct peer *peer)
bgp_delete_connected_nexthop (family2afi(peer->su.sa.sa_family), peer); bgp_delete_connected_nexthop (family2afi(peer->su.sa.sa_family), peer);
if (peer->desc) if (peer->desc)
XFREE (MTYPE_PEER_DESC, peer->desc); {
XFREE (MTYPE_PEER_DESC, peer->desc);
peer->desc = NULL;
}
/* Free allocated host character. */ /* Free allocated host character. */
if (peer->host) if (peer->host)
XFREE (MTYPE_BGP_PEER_HOST, peer->host); {
peer->host = NULL; XFREE (MTYPE_BGP_PEER_HOST, peer->host);
peer->host = NULL;
}
if (peer->ifname) if (peer->ifname)
XFREE(MTYPE_BGP_PEER_IFNAME, peer->ifname); {
peer->ifname = NULL; XFREE(MTYPE_BGP_PEER_IFNAME, peer->ifname);
peer->ifname = NULL;
}
/* Update source configuration. */ /* Update source configuration. */
if (peer->update_source) if (peer->update_source)
sockunion_free (peer->update_source); {
sockunion_free (peer->update_source);
peer->update_source = NULL;
}
if (peer->update_if) if (peer->update_if)
XFREE (MTYPE_PEER_UPDATE_SOURCE, peer->update_if); {
XFREE (MTYPE_PEER_UPDATE_SOURCE, peer->update_if);
peer->update_if = NULL;
}
if (peer->notify.data) if (peer->notify.data)
XFREE(MTYPE_TMP, peer->notify.data); XFREE(MTYPE_TMP, peer->notify.data);
memset (&peer->notify, 0, sizeof (struct bgp_notify));
if (peer->clear_node_queue) if (peer->clear_node_queue)
work_queue_free(peer->clear_node_queue); {
work_queue_free(peer->clear_node_queue);
peer->clear_node_queue = NULL;
}
bgp_sync_delete (peer); bgp_sync_delete (peer);
if (peer->conf_if) if (peer->conf_if)
XFREE (MTYPE_PEER_CONF_IF, peer->conf_if); {
XFREE (MTYPE_PEER_CONF_IF, peer->conf_if);
peer->conf_if = NULL;
}
bfd_info_free(&(peer->bfd_info)); bfd_info_free(&(peer->bfd_info));
@ -1776,8 +1796,10 @@ peer_delete (struct peer *peer)
UNSET_FLAG(peer->flags, PEER_FLAG_DELETE); UNSET_FLAG(peer->flags, PEER_FLAG_DELETE);
if (peer->doppelganger) if (peer->doppelganger)
peer->doppelganger->doppelganger = NULL; {
peer->doppelganger = NULL; peer->doppelganger->doppelganger = NULL;
peer->doppelganger = NULL;
}
UNSET_FLAG(peer->sflags, PEER_STATUS_ACCEPT_PEER); UNSET_FLAG(peer->sflags, PEER_STATUS_ACCEPT_PEER);
bgp_fsm_change_status (peer, Deleted); bgp_fsm_change_status (peer, Deleted);
@ -1830,22 +1852,41 @@ peer_delete (struct peer *peer)
/* Buffers. */ /* Buffers. */
if (peer->ibuf) if (peer->ibuf)
stream_free (peer->ibuf); {
stream_free (peer->ibuf);
peer->ibuf = NULL;
}
if (peer->obuf) if (peer->obuf)
stream_fifo_free (peer->obuf); {
stream_fifo_free (peer->obuf);
peer->obuf = NULL;
}
if (peer->work) if (peer->work)
stream_free (peer->work); {
stream_free (peer->work);
peer->work = NULL;
}
if (peer->scratch) if (peer->scratch)
stream_free(peer->scratch); {
peer->obuf = NULL; stream_free(peer->scratch);
peer->work = peer->scratch = peer->ibuf = NULL; peer->scratch = NULL;
}
/* Local and remote addresses. */ /* Local and remote addresses. */
if (peer->su_local) if (peer->su_local)
sockunion_free (peer->su_local); {
sockunion_free (peer->su_local);
peer->su_local = NULL;
}
if (peer->su_remote) if (peer->su_remote)
sockunion_free (peer->su_remote); {
peer->su_local = peer->su_remote = NULL; sockunion_free (peer->su_remote);
peer->su_remote = NULL;
}
/* Free filter related memory. */ /* Free filter related memory. */
for (afi = AFI_IP; afi < AFI_MAX; afi++) for (afi = AFI_IP; afi < AFI_MAX; afi++)
@ -1856,40 +1897,60 @@ peer_delete (struct peer *peer)
for (i = FILTER_IN; i < FILTER_MAX; i++) for (i = FILTER_IN; i < FILTER_MAX; i++)
{ {
if (filter->dlist[i].name) if (filter->dlist[i].name)
XFREE(MTYPE_BGP_FILTER_NAME, filter->dlist[i].name); {
XFREE(MTYPE_BGP_FILTER_NAME, filter->dlist[i].name);
filter->dlist[i].name = NULL;
}
if (filter->plist[i].name) if (filter->plist[i].name)
XFREE(MTYPE_BGP_FILTER_NAME, filter->plist[i].name); {
XFREE(MTYPE_BGP_FILTER_NAME, filter->plist[i].name);
filter->plist[i].name = NULL;
}
if (filter->aslist[i].name) if (filter->aslist[i].name)
XFREE(MTYPE_BGP_FILTER_NAME, filter->aslist[i].name); {
XFREE(MTYPE_BGP_FILTER_NAME, filter->aslist[i].name);
filter->dlist[i].name = NULL; filter->aslist[i].name = NULL;
filter->plist[i].name = NULL; }
filter->aslist[i].name = NULL;
} }
for (i = RMAP_IN; i < RMAP_MAX; i++) for (i = RMAP_IN; i < RMAP_MAX; i++)
{ {
if (filter->map[i].name) if (filter->map[i].name)
XFREE(MTYPE_BGP_FILTER_NAME, filter->map[i].name); {
filter->map[i].name = NULL; XFREE(MTYPE_BGP_FILTER_NAME, filter->map[i].name);
filter->map[i].name = NULL;
}
} }
if (filter->usmap.name) if (filter->usmap.name)
XFREE(MTYPE_BGP_FILTER_NAME, filter->usmap.name); {
XFREE(MTYPE_BGP_FILTER_NAME, filter->usmap.name);
filter->usmap.name = NULL;
}
if (peer->default_rmap[afi][safi].name) if (peer->default_rmap[afi][safi].name)
XFREE(MTYPE_ROUTE_MAP_NAME, 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;
peer->default_rmap[afi][safi].name = NULL; }
} }
FOREACH_AFI_SAFI (afi, safi) FOREACH_AFI_SAFI (afi, safi)
peer_af_delete (peer, afi, safi); peer_af_delete (peer, afi, safi);
if (peer->hostname) if (peer->hostname)
XFREE(MTYPE_HOST, peer->hostname); {
XFREE(MTYPE_HOST, peer->hostname);
peer->hostname = NULL;
}
if (peer->domainname) if (peer->domainname)
XFREE(MTYPE_HOST, peer->domainname); {
XFREE(MTYPE_HOST, peer->domainname);
peer->domainname = NULL;
}
peer_unlock (peer); /* initial reference */ peer_unlock (peer); /* initial reference */