X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Modules%2FIPStack%2Farp.c;h=e0912ad8550388756b9d8419f492dc0d9a9961a4;hb=57c1e8ff3a5e475ff5fe457ede46a4b3598b91f2;hp=e5d8a2badee0867f4655cf393b37dcb82056498c;hpb=37eb4d555b07704870b7dc87591d72b5b2539dec;p=tpg%2Facess2.git diff --git a/Modules/IPStack/arp.c b/Modules/IPStack/arp.c index e5d8a2ba..e0912ad8 100644 --- a/Modules/IPStack/arp.c +++ b/Modules/IPStack/arp.c @@ -42,7 +42,7 @@ struct sARP_Cache6 { int giARP_Cache6Space; tMutex glARP_Cache6; #endif - int giARP_LastUpdateID = 0; +volatile int giARP_LastUpdateID = 0; // === CODE === /** @@ -135,11 +135,13 @@ tMacAddr ARP_Resolve4(tInterface *Interface, tIPv4 Address) for(;;) { while(lastID == giARP_LastUpdateID && now() < timeout) { -// Log_Debug("ARP", "timeout = %lli", timeout); Threads_Yield(); } - if( now() >= timeout ) break; // Timeout + if( now() >= timeout ) { + Log_Log("ARP4", "Timeout"); + break; // Timeout + } lastID = giARP_LastUpdateID; @@ -149,6 +151,10 @@ tMacAddr ARP_Resolve4(tInterface *Interface, tIPv4 Address) if(gaARP_Cache4[i].IP.L != Address.L) continue; Mutex_Release( &glARP_Cache4 ); + Log_Debug("ARP4", "Return %02x:%02x:%02x:%02x:%02x:%02x", + gaARP_Cache4[i].MAC.B[0], gaARP_Cache4[i].MAC.B[1], + gaARP_Cache4[i].MAC.B[2], gaARP_Cache4[i].MAC.B[3], + gaARP_Cache4[i].MAC.B[4], gaARP_Cache4[i].MAC.B[5]); return gaARP_Cache4[i].MAC; } Mutex_Release( &glARP_Cache4 ); @@ -184,7 +190,6 @@ void ARP_UpdateCache4(tIPv4 SWAddr, tMacAddr HWAddr) i = free; else i = oldest; - gaARP_Cache4[i].IP = SWAddr; } Log_Log("ARP4", "Caching %i.%i.%i.%i (%02x:%02x:%02x:%02x:%02x:%02x) in %i", @@ -193,6 +198,7 @@ void ARP_UpdateCache4(tIPv4 SWAddr, tMacAddr HWAddr) i ); + gaARP_Cache4[i].IP = SWAddr; gaARP_Cache4[i].MAC = HWAddr; gaARP_Cache4[i].LastUpdate = now(); giARP_LastUpdateID ++;