From 3866eea678c951b063ecb66673b4f6afd8c19abe Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sat, 20 Nov 2010 14:05:13 +0800 Subject: [PATCH] Fixing error reporting --- Modules/IPStack/icmp.c | 3 +-- Modules/IPStack/ipv4.c | 5 +++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Modules/IPStack/icmp.c b/Modules/IPStack/icmp.c index 088caaaf..9f671752 100644 --- a/Modules/IPStack/icmp.c +++ b/Modules/IPStack/icmp.c @@ -125,8 +125,7 @@ int ICMP_Ping(tInterface *Interface, tIPv4 Addr) end = ts + Interface->TimeoutDelay; while( !gICMP_PingSlots[i].bArrived && now() < end) Threads_Yield(); - ts = now() - ts; - if(ts > Interface->TimeoutDelay) + if(now() > end) return -1; return (int)ts; diff --git a/Modules/IPStack/ipv4.c b/Modules/IPStack/ipv4.c index 31d6f027..ad6c891a 100644 --- a/Modules/IPStack/ipv4.c +++ b/Modules/IPStack/ipv4.c @@ -64,11 +64,16 @@ int IPv4_RegisterCallback(int ID, tIPCallback Callback) int IPv4_SendPacket(tInterface *Iface, tIPv4 Address, int Protocol, int ID, int Length, const void *Data) { tMacAddr to = ARP_Resolve4(Iface, Address); + const tMacAddr zero = {{0,0,0,0,0,0}}; int bufSize = sizeof(tIPv4Header) + Length; char buf[bufSize]; tIPv4Header *hdr = (void*)buf; int ret; + if( MAC_EQU(to, zero) ) { + return 0; + } + // OUTPUT Firewall rule go here ret = IPTablesV4_TestChain("OUTPUT", (tIPv4*)Iface->Address, &Address, -- 2.20.1