summaryrefslogtreecommitdiff
path: root/src/kernel/kernel.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/kernel.c')
-rw-r--r--src/kernel/kernel.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/kernel/kernel.c b/src/kernel/kernel.c
index 4b2990d..7cef578 100644
--- a/src/kernel/kernel.c
+++ b/src/kernel/kernel.c
@@ -16,7 +16,10 @@
#include "video.h"
#include "pci.h"
#include "memorymanagement.h"
+
+// TODO: move away from main!
#include "network.h"
+#include "ethernet.h"
#include "setjmp.h"
@@ -452,7 +455,18 @@ void __stack_chk_fail( void )
void handle_network_event( network_event_t *event, void *context )
{
- printf( "NETWORK DATA: len: %d\n", event->length );
+ network_ethernet_packet_t *packet = (network_ethernet_packet_t *)event->data;
+
+ printf( "NETWORK DATA: len: %d, type: %X\n", event->length,
+ packet->header.type );
+
+ if( packet->header.type == NETWORK_ETHER_TYPE_ARP ) {
+ char src[NETWORK_ETHERNET_MAC_ADDR_STRING];
+ char dst[NETWORK_ETHERNET_MAC_ADDR_STRING];
+ network_mac_to_string( packet->header.src_addr, src, NETWORK_ETHERNET_MAC_ADDR_STRING );
+ network_mac_to_string( packet->header.dst_addr, dst, NETWORK_ETHERNET_MAC_ADDR_STRING );
+ printf( "ARP: src: %s dst: %s\n", src, dst );
+ }
// we must free if data if we no longer need it
free( event->data );