X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=KernelLand%2FModules%2FIPStack%2Farp.c;h=607f201e648701c99f38cc67e9e376ed53e861b8;hb=849329d50395b44ac97c5b5145fc2df0749eace2;hp=abaea27584599a4e7d662503e64a5da903637054;hpb=51ab5f489bc356940c95cc936fd0508e8f07ea97;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/IPStack/arp.c b/KernelLand/Modules/IPStack/arp.c index abaea275..607f201e 100644 --- a/KernelLand/Modules/IPStack/arp.c +++ b/KernelLand/Modules/IPStack/arp.c @@ -7,6 +7,7 @@ #include "ipstack.h" #include "arp.h" #include "link.h" +#include "ipv4.h" // For IPv4_Netmask #define ARPv6 0 #define ARP_CACHE_SIZE 64 @@ -148,9 +149,14 @@ tMacAddr ARP_Resolve4(tInterface *Interface, tIPv4 Address) req.SourceIP = *(tIPv4*)Interface->Address; req.DestMac = cMAC_BROADCAST; req.DestIP = Address; - + + tIPStackBuffer *buffer = IPStack_Buffer_CreateBuffer(3); // Assumes only a header and footer at link layer + IPStack_Buffer_AppendSubBuffer(buffer, sizeof(struct sArpRequest4), 0, &req, NULL, NULL); + // Send Request - Link_SendPacket(Interface->Adapter, 0x0806, req.DestMac, sizeof(struct sArpRequest4), &req); + Link_SendPacket(Interface->Adapter, 0x0806, req.DestMac, buffer); + + IPStack_Buffer_DestroyBuffer(buffer); timeout = now() + Interface->TimeoutDelay; @@ -332,7 +338,12 @@ void ARP_int_GetPacket(tAdapter *Adapter, tMacAddr From, int Length, void *Buffe req4->SourceMac.B[0], req4->SourceMac.B[1], req4->SourceMac.B[2], req4->SourceMac.B[3], req4->SourceMac.B[4], req4->SourceMac.B[5]); - Link_SendPacket(Adapter, 0x0806, req4->DestMac, sizeof(tArpRequest4), req4); + + // 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); + Link_SendPacket(Adapter, 0x0806, req4->DestMac, buffer); + IPStack_Buffer_DestroyBuffer(buffer); } break; #if ARPv6