Merge net_protocol and net_interface modules API into a single net_layer one...

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3807 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Philippe Houdoin 2003-07-02 12:57:02 +00:00
parent 3945152869
commit 800e122ddc
4 changed files with 51 additions and 7 deletions

View File

@ -0,0 +1,43 @@
/* net_layer.h
* definitions of networking layer(s) API
*/
#ifndef OBOS_NET_LAYER_H
#define OBOS_NET_LAYER_H
#include <drivers/module.h>
#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 */

View File

@ -74,7 +74,6 @@ int test_buffer()
printf("data = [%s]\n", data);
g_stack->delete_buffer(buffer, false);
return 0;
}

View File

@ -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