X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FIPStack%2Fipv4.c;h=11cbc1524578ce65affdfc7fa8ee338e09dc2834;hb=ec40992498997848492a6c2e9025df23c1327cd1;hp=a765400c117bd5346b0d6ac53eb727285e04b616;hpb=2a49f5a6be4fd478ae4249115ff2a3bf0e34d7e5;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/IPStack/ipv4.c b/KernelLand/Modules/IPStack/ipv4.c index a765400c..11cbc152 100644 --- a/KernelLand/Modules/IPStack/ipv4.c +++ b/KernelLand/Modules/IPStack/ipv4.c @@ -10,7 +10,7 @@ // === CONSTANTS === #define DEFAULT_TTL 32 -#define IPV4_TRACE 0 // set to 1 to enable packet tracing +#define IPV4_TRACE 1 // set to 1 to enable packet tracing // === IMPORTS === extern tInterface *gIP_Interfaces; @@ -186,19 +186,20 @@ void IPv4_int_GetPacket(tAdapter *Adapter, tMacAddr From, int Length, void *Buff // TODO: Handle packet fragmentation #if IPV4_TRACE - Log_Debug("IPv4", " From %i.%i.%i.%i to %i.%i.%i.%i", + Log_Debug("IPv4", "Proto 0x%x From %i.%i.%i.%i to %i.%i.%i.%i", + hdr->Protocol, hdr->Source.B[0], hdr->Source.B[1], hdr->Source.B[2], hdr->Source.B[3], hdr->Destination.B[0], hdr->Destination.B[1], hdr->Destination.B[2], hdr->Destination.B[3] ); #endif - - // TODO: Should ARP sniffing be used? - // - If we get a packet, cache the source MAC - ARP_UpdateCache4(hdr->Source, From); // Get Data and Data Length dataLength = ntohs(hdr->TotalLength) - sizeof(tIPv4Header); data = &hdr->Options[0]; + + // Populate ARP cache from sniffing. + // - Downside: Poisoning, polluting from routed packets + //ARP_UpdateCache4(hdr->Source, From); // Get Interface (allowing broadcasts) iface = IPv4_GetInterface(Adapter, hdr->Destination, 1); @@ -274,6 +275,10 @@ void IPv4_int_GetPacket(tAdapter *Adapter, tMacAddr From, int Length, void *Buff return ; } + + // Populate ARP cache from recieved packets + // - Should be safe + ARP_UpdateCache4(hdr->Source, From); // Send it on if( !gaIPv4_Callbacks[hdr->Protocol] ) {