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.c27
1 files changed, 20 insertions, 7 deletions
diff --git a/src/kernel/kernel.c b/src/kernel/kernel.c
index 7cef578..d870375 100644
--- a/src/kernel/kernel.c
+++ b/src/kernel/kernel.c
@@ -20,6 +20,7 @@
// TODO: move away from main!
#include "network.h"
#include "ethernet.h"
+#include "arp.h"
#include "setjmp.h"
@@ -457,15 +458,27 @@ void handle_network_event( network_event_t *event, void *context )
{
network_ethernet_packet_t *packet = (network_ethernet_packet_t *)event->data;
- printf( "NETWORK DATA: len: %d, type: %X\n", event->length,
+ char src[NETWORK_ETHERNET_MAC_ADDR_STRING];
+ char dst[NETWORK_ETHERNET_MAC_ADDR_STRING];
+ network_mac_address_to_string( packet->header.src_addr, src, NETWORK_ETHERNET_MAC_ADDR_STRING );
+ network_mac_address_to_string( packet->header.dst_addr, dst, NETWORK_ETHERNET_MAC_ADDR_STRING );
+ printf( "NETWORK DATA: src: %s, dst: %s, len: %d, type: %X\n",
+ src, dst,
+ 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 );
+ if( packet->header.type == NETWORK_ETHER_PROTOCOL_TYPE_ARP ) {
+ network_arp_packet_t *arp = (network_arp_packet_t *)&packet->data;
+ char src2[NETWORK_PROTOCOL_IPV4_ADDR_STRING];
+ char dst2[NETWORK_PROTOCOL_IPV4_ADDR_STRING];
+
+ network_mac_address_to_string( arp->source_hardware_address, src, NETWORK_ETHERNET_MAC_ADDR_STRING );
+ network_mac_address_to_string( arp->destination_hardware_address, dst, NETWORK_ETHERNET_MAC_ADDR_STRING );
+ network_ipv4_address_to_string( arp->source_protocol_address, src2, NETWORK_PROTOCOL_IPV4_ADDR_STRING );
+ network_ipv4_address_to_string( arp->destination_protocol_address, dst2, NETWORK_PROTOCOL_IPV4_ADDR_STRING );
+
+ printf( "ARP: hw src: %s, dst: %s, ip src: %s, dst: %s, oper: %d\n",
+ src, dst, src2, dst2, arp->operation );
}
// we must free if data if we no longer need it