/*** 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 &ToName() = 0; virtual const AuString &ToDevice() = 0; virtual AuUInt16 GetIndex() = 0; virtual ENetworkAdapterType ToNetworkType() = 0; virtual ENetworkAdapterStatus ToStatus() = 0; virtual EIPProtocol ToFamily() = 0; virtual IPAddress ToAddress() = 0; virtual IPAddress ToBroadcastAddress() = 0; virtual IPAddress ToAnycastAddress() = 0; virtual IPAddress ToSubnetMask() = 0; virtual IPAddress ToGateway() = 0; virtual AuArray ToMacAddress() = 0; virtual bool HasDHCP() = 0; virtual AuUInt32 GetMTU() = 0; virtual AuList GetDNS() = 0; }; };