X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Modules%2FIPStack%2Flink.c;h=9dee6e45180b9d37781537bebe8c63c728986334;hb=04b368645c34cc3853fc13f93e33ac7878be8479;hp=fb219847a9dc177fe307465a796a2d44124cdd9e;hpb=574bd1d04d98f1b75c42eb45a2cdb49788cceb01;p=tpg%2Facess2.git diff --git a/Modules/IPStack/link.c b/Modules/IPStack/link.c index fb219847..9dee6e45 100644 --- a/Modules/IPStack/link.c +++ b/Modules/IPStack/link.c @@ -19,6 +19,8 @@ struct { /** * \fn void Link_RegisterType(Uint16 Type, tPacketCallback Callback) * \brief Registers a callback for a specific packet type + * + * \todo Make thread safe (place a mutex on the list) */ void Link_RegisterType(Uint16 Type, tPacketCallback Callback) { @@ -34,7 +36,7 @@ void Link_RegisterType(Uint16 Type, tPacketCallback Callback) if(gaRegisteredTypes[i].Callback == NULL) break; } - if(i + 1 == 0) + if(i == -1) { tmp = realloc(gaRegisteredTypes, (giRegisteredTypes+1)*sizeof(*gaRegisteredTypes)); if(!tmp) Panic("[NET ] Out of heap space!"); @@ -90,7 +92,7 @@ void Link_WatchDevice(tAdapter *Adapter) tEthernetHeader *hdr = (void*)buf; int ret, i; - // Wait for a packet + // Wait for a packet (Read on a network device is blocking) ret = VFS_Read(Adapter->DeviceFD, MAX_PACKET_SIZE, buf); if(ret == -1) break; @@ -105,7 +107,7 @@ void Link_WatchDevice(tAdapter *Adapter) if(gaRegisteredTypes[i].Type == hdr->Type) continue; } // No? Ignore it - if( i + 1 == 0 ) continue; + if( i == -1 ) continue; // Call the callback gaRegisteredTypes[i].Callback( @@ -115,4 +117,6 @@ void Link_WatchDevice(tAdapter *Adapter) hdr->Data ); } + + Log("[NET ] Watcher terminated (file closed)"); }