X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FIPStack%2Fipv4.c;h=71a0533ec2139e8209e13d5c07878245e48e2f4b;hb=7e72bedb501f047d214cbe97d35c48bb181e169d;hp=a765400c117bd5346b0d6ac53eb727285e04b616;hpb=4d4d4959b022d6e098b74f78565c4b1336672cfe;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/IPStack/ipv4.c b/KernelLand/Modules/IPStack/ipv4.c index a765400c..71a0533e 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; @@ -191,14 +191,14 @@ void IPv4_int_GetPacket(tAdapter *Adapter, tMacAddr From, int Length, void *Buff 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 +274,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] ) {