This allow us to find real leaks more easily with tools like valgrind.
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
babel_save_state_file();
debugf(BABEL_DEBUG_COMMON, "Remove pid file.");
debugf(BABEL_DEBUG_COMMON, "Done.");
+ frr_fini();
exit(0);
}
#include "plist.h"
#include "sockopt.h"
#include "keychain.h"
+#include "libfrr.h"
#include "eigrpd/eigrp_structs.h"
#include "eigrpd/eigrpd.h"
SET_FLAG(eigrp_om->options, EIGRP_MASTER_SHUTDOWN);
- /* exit immediately if EIGRP not actually running */
- if (listcount(eigrp_om->eigrp) == 0)
- exit(0);
-
for (ALL_LIST_ELEMENTS(eigrp_om->eigrp, node, nnode, eigrp))
eigrp_finish(eigrp);
+
+ frr_fini();
}
void eigrp_finish(struct eigrp *eigrp)
#include "linklist.h"
#include "nexthop.h"
#include "vrf.h"
+#include "libfrr.h"
#include "isisd/dict.h"
#include "isisd/isis_constants.h"
{
zclient_stop(zclient);
zclient_free(zclient);
+ frr_fini();
}
#include "plist.h"
#include "sockopt.h"
#include "bfd.h"
+#include "libfrr.h"
#include "defaults.h"
#include "ospfd/ospfd.h"
*/
zclient_stop(zclient);
zclient_free(zclient);
+
+ frr_fini();
}
void ospf_finish(struct ospf *ospf)
zclient_stop(zclient);
zclient_free(zclient);
}
+
+ frr_fini();
}
rip_clean();
rip_zclient_stop();
+ frr_fini();
exit(0);
}
ripng_clean();
ripng_zebra_stop();
+ frr_fini();
exit(0);
}