#ifndef _PXE_NETWORK_H #define _PXE_NETWORK_H /* * Copyright 2006, Marcus Overhagen . * Distributed under the terms of the MIT License. */ #include #include #include struct PXE_STRUCT; class PXEService { protected: PXEService(); ~PXEService(); status_t Init(); public: mac_addr_t MACAddress() const { return fMACAddress; } ip_addr_t IPAddress() const { return fClientIP; } ip_addr_t ServerIPAddress() const { return fServerIP; } const char* RootPath() const { return fRootPath; } protected: PXE_STRUCT* fPxeData; ip_addr_t fClientIP; ip_addr_t fServerIP; mac_addr_t fMACAddress; char* fRootPath; }; class UNDI : public EthernetInterface, public PXEService { public: UNDI(); virtual ~UNDI(); status_t Init(); virtual mac_addr_t MACAddress() const; virtual void * AllocateSendReceiveBuffer(size_t size); virtual void FreeSendReceiveBuffer(void *buffer); virtual ssize_t Send(const void *buffer, size_t size); virtual ssize_t Receive(void *buffer, size_t size); private: bool fRxFinished; PXE_STRUCT * fPxeData; }; class TFTP : public PXEService { public: TFTP(); ~TFTP(); status_t Init(); uint16 ServerPort() const; status_t ReceiveFile(const char* fileName, uint8** data, size_t* size); private: status_t _Close(); }; #endif