/*** Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: INetAdapter.hpp Date: 2022-12-11 Author: Reece ***/ #pragma once namespace Aurora::IO::Net { AUE_DEFINE_VA(ENetworkAdapterStatus, eUp, eDown); AUE_DEFINE_VA(ENetworkAdapterType, eUnknown, eOther, eIPGRE, eTunnel, eLoopback, eEthernet, eIEEE80211, eMobileNetwork, eTokenRing); struct INetAdapter { virtual const AuString &GetName() = 0; virtual const AuString &GetDevice() = 0; virtual AuUInt16 GetIndex() = 0; virtual ENetworkAdapterType GetAdapterType() = 0; virtual ENetworkAdapterStatus GetStatus() = 0; virtual EIPProtocol GetFamily() = 0; virtual IPAddress GetAddress() = 0; virtual IPAddress GetBroadcastAddress() = 0; virtual IPAddress GetAnycastAddress() = 0; virtual IPAddress GetSubnetMask() = 0; virtual IPAddress GetGateway() = 0; virtual AuArray GetMacAddress() = 0; virtual bool HasDHCP() = 0; virtual AuUInt32 GetMTU() = 0; virtual AuUInt64 GetTransmitBytesPerSec() = 0; virtual AuUInt64 GetReceiveBytesPerSec() = 0; virtual AuList GetDNS() = 0; }; };