From 359ea12aeee4dd6dfb79c9ba44d7059714e4fa95 Mon Sep 17 00:00:00 2001 From: Anton Kling Date: Wed, 1 Nov 2023 21:43:17 +0100 Subject: ARP: Save the IP, MAC of incoming ARP requests --- kernel/network/arp.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'kernel/network') diff --git a/kernel/network/arp.c b/kernel/network/arp.c index ddeb553..dfa1131 100644 --- a/kernel/network/arp.c +++ b/kernel/network/arp.c @@ -120,7 +120,12 @@ void handle_arp(const u8 *payload) { print_mac("dsthw: ", data->dsthw); print_ip("dstpr: ", data->dstpr); - assert(0 == memcmp(data->dstpr, ip_address, sizeof(u8[4]))); + struct ARP_TABLE_ENTRY *entry = find_arp_entry_to_use(); + entry->is_used = 1; + memcpy(entry->mac, data->srchw, sizeof(uint8_t[6])); + memcpy(entry->ip, data->srcpr, sizeof(uint8_t[4])); + + assert(0 == memcmp(data->dstpr, ip_address, sizeof(uint8_t[4]))); // Now we have to construct a ARP response struct ARP_DATA response; -- cgit v1.2.3