Fixed NetHandler NetQueue memory leak.

TODO: Suspected memory leak somewhere in UDP.
Added early NetHandler detection for IPV6, just warns.
Implemented default: cases for NetHandler routines, warns and outputs unrecognized IPV4 procotols and ethertypes.
Added few more NetLog()'s for clarity.
This commit is contained in:
TomAwezome 2021-01-27 14:22:28 -05:00
parent fd665945e5
commit 3c6187254a
3 changed files with 19 additions and 0 deletions

View file

@ -16,6 +16,7 @@
#define ETHERTYPE_IPV4 0x0800
#define ETHERTYPE_ARP 0x0806
#define ETHERTYPE_IPV6 0x86DD
#define IP_ADDRESS_LENGTH 4

View file

@ -14,12 +14,17 @@ U0 IPV4Handler(CEthernetFrame *ethernet_frame)
break;
case IP_PROTOCOL_TCP:
NetWarn("IPV4 HANDLER: TCP. TODO.");
break;
case IP_PROTOCOL_UDP:
NetLog("IPV4 HANDLER: UDP.");
UDPHandler(&packet);
break;
default:
NetErr("IPV4 HANDLER: Unrecognized protocol: 0x%X", packet.protocol);
break;
}
NetLog("IPV4 HANDLER: Exiting.");
@ -42,6 +47,14 @@ U0 HandleNetQueueEntry(CNetQueueEntry *entry)
NetLog("HANDLE NETQUEUE ENTRY: IPV4.");
IPV4Handler(&ethernet_frame);
break;
case ETHERTYPE_IPV6:
NetWarn("HANDLE NETQUEUE ENTRY: IPV6. TODO.");
break;
default:
NetErr("HANDLE NETQUEUE ENTRY: Unrecognized ethertype: 0x%X", ethernet_frame.ethertype);
break;
}
NetLog("HANDLE NETQUEUE ENTRY: Exiting.");
@ -55,8 +68,13 @@ interrupt U0 NetHandler()
{
NetLog("NET HANDLER: Caught NetQueue Entry, handling.");
HandleNetQueueEntry(entry);
NetLog("NET HANDLER: Finished handling NetQueue Entry, Freeing.");
Free(entry);
}
NetLog("NET HANDLER: NetQueue empty, exiting interrupt.");
*(dev.uncached_alias + LAPIC_EOI)(U32*) = 0;
}