diff options
Diffstat (limited to 'src/kernel/kernel.c')
-rw-r--r-- | src/kernel/kernel.c | 16 |
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 ); |