summaryrefslogtreecommitdiff
path: root/eigrpd/eigrp_topology.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2017-08-22 15:39:18 -0400
committerDonald Sharp <sharpd@cumulusnetworks.com>2017-08-24 08:04:20 -0400
commit92035b1db4a91d0fc95118a1e0ff73cfa6120b1b (patch)
tree8111c5128c76f620740a7ae7cf13e272fe791db0 /eigrpd/eigrp_topology.c
parent695ff37babda771517c85a20c714d8215ece0c63 (diff)
eigrpd: Fix memory leak in FSM
The FSM was never freeing the msg. Since we do not have a special queue for it, just don't allocate the memory. In the future we can put this back. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'eigrpd/eigrp_topology.c')
-rw-r--r--eigrpd/eigrp_topology.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/eigrpd/eigrp_topology.c b/eigrpd/eigrp_topology.c
index 50d83430a8..f78a43739d 100644
--- a/eigrpd/eigrp_topology.c
+++ b/eigrpd/eigrp_topology.c
@@ -486,22 +486,19 @@ void eigrp_topology_neighbor_down(struct eigrp *eigrp,
for (ALL_LIST_ELEMENTS(eigrp->topology_table, node1, node11, prefix)) {
for (ALL_LIST_ELEMENTS(prefix->entries, node2, node22, entry)) {
if (entry->adv_router == nbr) {
- struct eigrp_fsm_action_message *msg;
- msg = XCALLOC(MTYPE_EIGRP_FSM_MSG,
- sizeof(struct
- eigrp_fsm_action_message));
+ struct eigrp_fsm_action_message msg;
struct TLV_IPv4_Internal_type *tlv =
eigrp_IPv4_InternalTLV_new();
tlv->metric.delay = EIGRP_MAX_METRIC;
- msg->packet_type = EIGRP_OPC_UPDATE;
- msg->eigrp = eigrp;
- msg->data_type = EIGRP_TLV_IPv4_INT;
- msg->adv_router = nbr;
- msg->data.ipv4_int_type = tlv;
- msg->entry = entry;
- msg->prefix = prefix;
- int event = eigrp_get_fsm_event(msg);
- eigrp_fsm_event(msg, event);
+ msg.packet_type = EIGRP_OPC_UPDATE;
+ msg.eigrp = eigrp;
+ msg.data_type = EIGRP_TLV_IPv4_INT;
+ msg.adv_router = nbr;
+ msg.data.ipv4_int_type = tlv;
+ msg.entry = entry;
+ msg.prefix = prefix;
+ int event = eigrp_get_fsm_event(&msg);
+ eigrp_fsm_event(&msg, event);
}
}
}