From 74077e46e1033bb48d78877b57b040c271a5beb4 Mon Sep 17 00:00:00 2001 From: Andreas Faerber Date: Sun, 13 Jun 2010 16:55:53 +0200 Subject: [PATCH] Add net_stack_cleanup() Add a cleanup function net_stack_cleanup() that calls a new NetStack::ShutDown() method. Make sure this method works even if the network stack was never initialized. Signed-off-by: Augustin Cavalier --- headers/private/kernel/boot/net/NetStack.h | 2 ++ src/system/boot/loader/net/NetStack.cpp | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/headers/private/kernel/boot/net/NetStack.h b/headers/private/kernel/boot/net/NetStack.h index f14873202c..5092d6e0b1 100644 --- a/headers/private/kernel/boot/net/NetStack.h +++ b/headers/private/kernel/boot/net/NetStack.h @@ -26,6 +26,7 @@ private: public: static status_t CreateDefault(); static NetStack *Default(); + static status_t ShutDown(); status_t AddEthernetInterface(EthernetInterface *interface); @@ -53,6 +54,7 @@ private: // afterwards, which is supposed to add network interfaces. status_t net_stack_init(); status_t platform_net_stack_init(); +status_t net_stack_cleanup(); #endif // _BOOT_NET_STACK_H diff --git a/src/system/boot/loader/net/NetStack.cpp b/src/system/boot/loader/net/NetStack.cpp index 7a172eeb4c..f420d94b27 100644 --- a/src/system/boot/loader/net/NetStack.cpp +++ b/src/system/boot/loader/net/NetStack.cpp @@ -120,6 +120,19 @@ NetStack::Default() return sNetStack; } + +status_t +NetStack::ShutDown() +{ + if (sNetStack != NULL) { + delete sNetStack; + sNetStack = NULL; + } + + return B_OK; +} + + // AddEthernetInterface status_t NetStack::AddEthernetInterface(EthernetInterface *interface) @@ -155,3 +168,9 @@ net_stack_init() return platform_net_stack_init(); } + +status_t +net_stack_cleanup() +{ + return NetStack::ShutDown(); +}