summaryrefslogtreecommitdiff
path: root/src/drivers/net/network.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/net/network.c')
-rw-r--r--src/drivers/net/network.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/drivers/net/network.c b/src/drivers/net/network.c
index 46a3295..85bfdf2 100644
--- a/src/drivers/net/network.c
+++ b/src/drivers/net/network.c
@@ -7,11 +7,12 @@
static network_vtable_t const network_vtable = {
{
- driver_activate,
- driver_deactivate,
- driver_deinit,
- driver_print_info
- }
+ driver_activate,
+ driver_deactivate,
+ driver_deinit,
+ driver_print_info
+ },
+ network_register_handler
};
void network_init( network_t *network, interrupt_t *interrupt, void *context )
@@ -20,9 +21,18 @@ void network_init( network_t *network, interrupt_t *interrupt, void *context )
driver_init( (driver_t *)network, DRIVER_TYPE_NETWORK, interrupt, context );
+ network->handler = NULL;
+
((driver_t *)network)->vtable = (driver_vtable_t *)&network_vtable;
}
+void network_register_handler( void *obj, network_event_handler_t handler )
+{
+ network_t *network = (network_t *)obj;
+
+ network->handler = handler;
+}
+
char *network_mac_to_string( network_mac_address_t mac, char *buf, size_t buflen )
{
snprintf( buf, buflen, "%X:%X:%X:%X:%X:%X",