From 41c67263593f5155d5f44e2c66b16ea430012967 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 30 Nov 2006 17:56:17 +0000 Subject: [PATCH] Moved the starting of the network stack into the driver (from the socket module) to allow other protocols (like TCP) using the socket module. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19399 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/drivers/network/stack/kernel_stack.cpp | 13 ++++++++++++- src/add-ons/kernel/network/stack/net_socket.cpp | 8 +++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/add-ons/kernel/drivers/network/stack/kernel_stack.cpp b/src/add-ons/kernel/drivers/network/stack/kernel_stack.cpp index f1fd9d8a25..79ce8b8deb 100644 --- a/src/add-ons/kernel/drivers/network/stack/kernel_stack.cpp +++ b/src/add-ons/kernel/drivers/network/stack/kernel_stack.cpp @@ -20,6 +20,8 @@ #include +#define NET_STARTER_MODULE_NAME "network/stack/starter/v1" + // debugging macros #define LOGID "net_stack_driver: " #define ERROR(format, args...) dprintf(LOGID "ERROR: " format, ## args) @@ -161,9 +163,17 @@ net_stack_open(const char *name, uint32 flags, void **_cookie) if (atomic_add(&sOpenCount, 1) == 0) { // When we're opened for the first time, we'll try to load the // networking stack - status_t status = get_module(NET_SOCKET_MODULE_NAME, (module_info **)&sSocket); + module_info *module; + status_t status = get_module(NET_STARTER_MODULE_NAME, &module); + if (status < B_OK) { + ERROR("Can't load network stack module: %ld\n", status); + return status; + } + + status = get_module(NET_SOCKET_MODULE_NAME, (module_info **)&sSocket); if (status < B_OK) { ERROR("Can't load " NET_SOCKET_MODULE_NAME " module: %ld\n", status); + put_module(NET_STARTER_MODULE_NAME); return status; } } @@ -217,6 +227,7 @@ net_stack_free_cookie(void *_cookie) // stack again (it will only be actually unloaded in case there is // no interface defined) put_module(NET_SOCKET_MODULE_NAME); + put_module(NET_STARTER_MODULE_NAME); } return B_OK; diff --git a/src/add-ons/kernel/network/stack/net_socket.cpp b/src/add-ons/kernel/network/stack/net_socket.cpp index 15c93a5c28..dc34310702 100644 --- a/src/add-ons/kernel/network/stack/net_socket.cpp +++ b/src/add-ons/kernel/network/stack/net_socket.cpp @@ -892,12 +892,14 @@ socket_std_ops(int32 op, ...) switch (op) { case B_MODULE_INIT: { + // TODO: this is currently done in the net_stack driver // initialize the main stack if not done so already - module_info *module; - return get_module(NET_STARTER_MODULE_NAME, &module); + //module_info *module; + //return get_module(NET_STARTER_MODULE_NAME, &module); } case B_MODULE_UNINIT: - return put_module(NET_STARTER_MODULE_NAME); + //return put_module(NET_STARTER_MODULE_NAME); + return B_OK; default: return B_ERROR;