AuroraRuntime/Include/Aurora/IO/Net/INetAdapter.hpp

43 lines
1.2 KiB
C++

/***
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<AuUInt8, 8> GetMacAddress() = 0;
virtual bool HasDHCP() = 0;
virtual AuUInt32 GetMTU() = 0;
virtual AuUInt64 GetTransmitBytesPerSec() = 0;
virtual AuUInt64 GetReceiveBytesPerSec() = 0;
virtual AuList<IPAddress> GetDNS() = 0;
};
};