summaryrefslogtreecommitdiff
path: root/ospf6d/ospf6_message.c
diff options
context:
space:
mode:
authorTom Goff <thomas.goff@boeing.com>2010-11-10 13:01:41 -0800
committerDenis Ovsienko <infrastation@yandex.ru>2012-01-02 19:50:41 +0400
commit36d3e8d828e18c5c4cd097f659e3984ff02532cb (patch)
treed7ec4c0bb657f303e39d8c784f1b3ac45a72d8a9 /ospf6d/ospf6_message.c
parenta809d1cc54a621f4b31397ee5b8b79151baa4bf2 (diff)
ospf6d: Have ospf6d cleanup when it terminates normally
A clean exit makes it easier to use memory debuggers. * ospf6_asbr.c: (ospf6_asbr_terminate) Add a function to do route map cleanup. * ospf6_lsa.c: (ospf6_lsa_terminate) Add a function to cleanup the lsa handler vector. * ospf6_main.c: (ospf6_exit) Add an function that causes ospf6d to gracefully exit. * ospf6_message.c: (ospf6_message_terminate) Add a function that frees the send and receive buffers. * ospf6_top.c: (ospf6_delete) Enable the ospf6_delete() function. Disable ospf6 before freeing everything. Signed-off-by: Vyacheslav Trushkin <me@dogonthesun.net> Conflicts: ospf6d/ospf6_lsa.h
Diffstat (limited to 'ospf6d/ospf6_message.c')
-rw-r--r--ospf6d/ospf6_message.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/ospf6d/ospf6_message.c b/ospf6d/ospf6_message.c
index 8179fc14..aaee4d20 100644
--- a/ospf6d/ospf6_message.c
+++ b/ospf6d/ospf6_message.c
@@ -1504,6 +1504,24 @@ ospf6_iobuf_size (unsigned int size)
return iobuflen;
}
+void
+ospf6_message_terminate (void)
+{
+ if (recvbuf)
+ {
+ XFREE (MTYPE_OSPF6_MESSAGE, recvbuf);
+ recvbuf = NULL;
+ }
+
+ if (sendbuf)
+ {
+ XFREE (MTYPE_OSPF6_MESSAGE, sendbuf);
+ sendbuf = NULL;
+ }
+
+ iobuflen = 0;
+}
+
int
ospf6_receive (struct thread *thread)
{