From 7d40548496f4d3cdfce828fc8e4f0fd4286e873a Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Wed, 2 Aug 2017 11:24:26 +0200 Subject: introduced a network library, added ethernet structure, moved generic stuff out of the network driver, kernel now sees ARP messages and prints src and dst MAC addresses --- src/kernel/kernel.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/kernel/kernel.c') 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 ); -- cgit v1.2.3-54-g00ecf