+ timeout = now() + Interface->TimeoutDelay;
+
+ // Wait for a reply
+ for(;;)
+ {
+ while(lastID == giARP_LastUpdateID && now() < timeout) {
+// Log_Debug("ARP", "timeout = %lli", timeout);
+ Threads_Yield();
+ }
+
+ if( now() >= timeout ) break; // Timeout
+
+ lastID = giARP_LastUpdateID;
+
+ Mutex_Acquire( &glARP_Cache4 );
+ for( i = 0; i < giARP_Cache4Space; i++ )
+ {
+ if(gaARP_Cache4[i].IP.L != Address.L) continue;
+
+ Mutex_Release( &glARP_Cache4 );
+ return gaARP_Cache4[i].MAC;
+ }
+ Mutex_Release( &glARP_Cache4 );
+ }
+ {
+ tMacAddr ret = {{0,0,0,0,0,0}};
+ return ret;
+ }