From ce21e1e5cd3b1f182e0b85cc99f583cd6db20ffa Mon Sep 17 00:00:00 2001 From: Max Tyson <98maxt98@gmail.com> Date: Sun, 3 Dec 2023 21:06:04 +1300 Subject: [PATCH] Networking Broken --- README.md | 6 ++---- kernel/include/net/ipv4.h | 4 ++-- kernel/src/kernel.cpp | 8 +------- kernel/src/net/ethernetframe.cpp | 8 ++++---- 4 files changed, 9 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 34c7e88c..07d84936 100644 --- a/README.md +++ b/README.md @@ -50,15 +50,13 @@ Kernel Cleanup - [x] VESA Video Mode - [x] Kernel Boot Rewrite - [x] Rewrite Event Handlers -- [x] Network Touch Up +- [ ] Custom Toolchain +- [ ] Network Touch Up - Fix Issues with IP, Get it working on QEMU - [ ] DCHP protocol - [ ] GUI Bug Fixes - [ ] Better Commenting and Doxygen Documentation - [ ] Use better c++ coding conventions -- [ ] Fix filesystem (move to linux one?) -- [ ] HTTP Protocol - [ ] USB -- [ ] Custom Toolchain - [ ] CMAKE Build System (and maybe get it building and debugging in CLion) - [ ] Clean up all the TODOs diff --git a/kernel/include/net/ipv4.h b/kernel/include/net/ipv4.h index e10db9fc..23be74b1 100644 --- a/kernel/include/net/ipv4.h +++ b/kernel/include/net/ipv4.h @@ -59,7 +59,7 @@ namespace maxOS{ void Send(InternetProtocolAddress destinationIP, common::uint8_t* payloadData, common::uint32_t size); }; - class InternetProtocolHandler : public net::EthernetFramePayloadHandler{ + class InternetProtocolHandler : public EthernetFramePayloadHandler{ friend class InternetProtocolAddressResolver; @@ -84,7 +84,7 @@ namespace maxOS{ common::OutputStream* errorMessages); ~InternetProtocolHandler(); - bool handleEthernetframePayload(common::uint8_t* ethernetframePayload, common::uint32_t size); + bool handleEthernetframePayload(common::uint8_t* ethernetframePayload, common::uint32_t size) override; void sendInternetProtocolPacket(common::uint32_t dstIP_BE, common::uint8_t protocol, common::uint8_t* data, common::uint32_t size); static common::uint16_t Checksum(common::uint16_t* data, common::uint32_t lengthInBytes); diff --git a/kernel/src/kernel.cpp b/kernel/src/kernel.cpp index 83bd2e41..f361cbcb 100644 --- a/kernel/src/kernel.cpp +++ b/kernel/src/kernel.cpp @@ -407,7 +407,7 @@ extern "C" void kernelMain(const multiboot_info& multibootHeader, uint32_t multi // Run the network -#define NETWORK +//#define NETWORK #ifdef NETWORK // TCPtoStream @@ -498,10 +498,4 @@ extern "C" void kernelMain(const multiboot_info& multibootHeader, uint32_t multi while (true); } - - - #pragma clang diagnostic pop - -//MaxOS - May the source be with you... -//TODO: Fix networking later TCP/UDP listening, - sending works diff --git a/kernel/src/net/ethernetframe.cpp b/kernel/src/net/ethernetframe.cpp index 772c97bf..7f129c94 100644 --- a/kernel/src/net/ethernetframe.cpp +++ b/kernel/src/net/ethernetframe.cpp @@ -92,7 +92,7 @@ bool EthernetFrameHandler::DataReceived(common::uint8_t* buffer, common::uint32_ bool sendBack = false; //Only handle if it is for this device - if(frame->destinationMAC == 0xFFFFFFFFFFFF //If it is a broadcast + if(frame->destinationMAC == 0xFFFFFFFFFFFF //If it is a broadcast || frame->destinationMAC == ethernetDriver -> GetMediaAccessControlAddress()) //If it is for this device { @@ -102,13 +102,13 @@ bool EthernetFrameHandler::DataReceived(common::uint8_t* buffer, common::uint32_ // If the handler is found if(handlerIterator != frameHandlers.end()) { + + //TODO: The override is not being called (IDK WHY) + //Handle the data errorMessages -> write("EFH: Handling ethernet frame payload\n"); - // TODO: This doesnt call the override sendBack = handlerIterator->second->handleEthernetframePayload(buffer + sizeof(EthernetFrameHeader), size - sizeof(EthernetFrameHeader)); errorMessages -> write("..DONE\n"); - if(sendBack) - errorMessages -> write("EFH: Sending back\n"); } else {