diff --git a/src/tests/kits/net/new_stack/net_layer.h b/src/tests/kits/net/new_stack/net_layer.h new file mode 100644 index 0000000000..6ed0b24da5 --- /dev/null +++ b/src/tests/kits/net/new_stack/net_layer.h @@ -0,0 +1,43 @@ +/* net_layer.h + * definitions of networking layer(s) API + */ + +#ifndef OBOS_NET_LAYER_H +#define OBOS_NET_LAYER_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct net_buffer; + +typedef struct net_layer { + struct net_layer *next; + char *name; + int level; + uint32 kind; // Filter, consumer, producer, etc... + int chaining_constraint; + struct net_layer_module_info *module; + struct net_layer **layers_above; + struct net_layer **layers_below; +} net_layer; + +struct net_layer_module_info { + module_info info; + + status_t (*init)(void * params); + status_t (*uninit)(net_layer *me); + status_t (*enable)(net_layer *me, bool enable); + status_t (*input_buffer)(net_layer *me, struct net_buffer *buffer); + status_t (*output_buffer)(net_layer *me, struct net_buffer *buffer); +}; + +#define NET_LAYER_MODULE_ROOT "network/layers/" + +#ifdef __cplusplus +} +#endif + +#endif /* OBOS_NET_LAYER_H */ diff --git a/src/tests/kits/net/new_stack/net_server.cpp b/src/tests/kits/net/new_stack/net_server.cpp index 9c3b6d543a..4b9e250997 100644 --- a/src/tests/kits/net/new_stack/net_server.cpp +++ b/src/tests/kits/net/new_stack/net_server.cpp @@ -74,7 +74,6 @@ int test_buffer() printf("data = [%s]\n", data); g_stack->delete_buffer(buffer, false); - return 0; } diff --git a/src/tests/kits/net/new_stack/net_server_x86.proj b/src/tests/kits/net/new_stack/net_server_x86.proj index 3c43e0dbfc..f065f81a53 100644 Binary files a/src/tests/kits/net/new_stack/net_server_x86.proj and b/src/tests/kits/net/new_stack/net_server_x86.proj differ diff --git a/src/tests/kits/net/new_stack/net_stack.h b/src/tests/kits/net/new_stack/net_stack.h index 54b3ab76dd..b4cf09c15a 100644 --- a/src/tests/kits/net/new_stack/net_stack.h +++ b/src/tests/kits/net/new_stack/net_stack.h @@ -23,15 +23,14 @@ typedef struct net_timer net_timer; typedef void (*net_timer_func)(net_timer *timer, void *cookie); // timer callback prototype // Generic lockers support - typedef int benaphore; #define create_benaphore(a, b) #define delete_benaphore(a) #define lock_benaphore(a) #define unlock_benaphore(a) -#include "net_interface.h" - +// Networking layer(s) definition +#include "net_layer.h" // Network stack main module definition @@ -46,11 +45,14 @@ struct net_stack_module_info { */ /* - * Data-Link layer + * Net layers handling */ - status_t (*register_interface)(ifnet_t *ifnet); - status_t (*unregister_interface)(ifnet_t *ifnet); + status_t (*register_layer)(net_layer *layer); + status_t (*unregister_layer)(net_layer *layer); + + status_t (*push_buffer_up)(net_layer *me, net_buffer *buffer); + status_t (*push_buffer_down)(net_layer *me, net_buffer *buffer); /* * Buffer(s) support