X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FIPStack%2Farp.c;h=e152e33d707facb99910caf98b44a1b61d7a62c6;hb=dfe6387e68caf8ffd75f7814131ca2af3be53eb1;hp=607f201e648701c99f38cc67e9e376ed53e861b8;hpb=849329d50395b44ac97c5b5145fc2df0749eace2;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/IPStack/arp.c b/KernelLand/Modules/IPStack/arp.c index 607f201e..e152e33d 100644 --- a/KernelLand/Modules/IPStack/arp.c +++ b/KernelLand/Modules/IPStack/arp.c @@ -8,6 +8,7 @@ #include "arp.h" #include "link.h" #include "ipv4.h" // For IPv4_Netmask +#include "include/adapters_int.h" // for MAC addr #define ARPv6 0 #define ARP_CACHE_SIZE 64 @@ -145,7 +146,7 @@ tMacAddr ARP_Resolve4(tInterface *Interface, tIPv4 Address) req.HWSize = 6; req.SWSize = 4; req.Request = htons(1); - req.SourceMac = Interface->Adapter->MacAddr; + memcpy(&req.SourceMac, Interface->Adapter->HWAddr, 6); // TODO: Remove hard size req.SourceIP = *(tIPv4*)Interface->Address; req.DestMac = cMAC_BROADCAST; req.DestIP = Address; @@ -332,7 +333,7 @@ void ARP_int_GetPacket(tAdapter *Adapter, tMacAddr From, int Length, void *Buffe req4->DestIP = req4->SourceIP; req4->DestMac = req4->SourceMac; req4->SourceIP = *(tIPv4*)iface->Address;; - req4->SourceMac = Adapter->MacAddr; + memcpy(&req4->SourceMac, Adapter->HWAddr, 6); // TODO: Remove hard size req4->Request = htons(2); Log_Debug("ARP", "Sending back us (%02x:%02x:%02x:%02x:%02x:%02x)", req4->SourceMac.B[0], req4->SourceMac.B[1], @@ -341,7 +342,7 @@ void ARP_int_GetPacket(tAdapter *Adapter, tMacAddr From, int Length, void *Buffe // Assumes only a header and footer at link layer tIPStackBuffer *buffer = IPStack_Buffer_CreateBuffer(3); - IPStack_Buffer_AppendSubBuffer(buffer, sizeof(struct sArpRequest4), 0, &req4, NULL, NULL); + IPStack_Buffer_AppendSubBuffer(buffer, sizeof(struct sArpRequest4), 0, req4, NULL, NULL); Link_SendPacket(Adapter, 0x0806, req4->DestMac, buffer); IPStack_Buffer_DestroyBuffer(buffer); }