302 lines
6.1 KiB
TypeScript
302 lines
6.1 KiB
TypeScript
export enum AddressFamily {
|
|
IPv4 = 2,
|
|
IPv6 = 10,
|
|
}
|
|
|
|
export type IPAddress = number[] // Array of byte values
|
|
|
|
export enum ConfigSource {
|
|
Static = 'static',
|
|
Foreign = 'foreign',
|
|
DHCPv4 = 'DHCPv4',
|
|
DHCPv6 = 'DHCPv6',
|
|
DHCPPD = 'DHCP-PD',
|
|
NDisc = 'NDisc',
|
|
}
|
|
|
|
export enum ConfigState {
|
|
Configured = 'configured',
|
|
}
|
|
|
|
export enum ScopeString {
|
|
Host = 'host',
|
|
Link = 'link',
|
|
Global = 'global',
|
|
}
|
|
|
|
export enum ProtocolString {
|
|
Kernel = 'kernel',
|
|
Boot = 'boot',
|
|
}
|
|
|
|
export enum TypeString {
|
|
Local = 'local',
|
|
Broadcast = 'broadcast',
|
|
Unicast = 'unicast',
|
|
Anycast = 'anycast',
|
|
Multicast = 'multicast',
|
|
Unreachable = 'unreachable',
|
|
Table = 'table',
|
|
}
|
|
|
|
export enum TableString {
|
|
Local = 'local',
|
|
Main = 'main',
|
|
Default = 'default',
|
|
}
|
|
|
|
export type TableStringType = TableString | string
|
|
|
|
export enum AdministrativeState {
|
|
Unmanaged = 'unmanaged',
|
|
Configured = 'configured',
|
|
}
|
|
|
|
export enum OperationalState {
|
|
Carrier = 'carrier',
|
|
Routable = 'routable',
|
|
Enslaved = 'enslaved',
|
|
NoCarrier = 'no-carrier',
|
|
Degraded = 'degraded',
|
|
}
|
|
|
|
export enum CarrierState {
|
|
Carrier = 'carrier',
|
|
Enslaved = 'enslaved',
|
|
NoCarrier = 'no-carrier',
|
|
DegradedCarrier = 'degraded-carrier',
|
|
}
|
|
|
|
export enum AddressState {
|
|
Off = 'off',
|
|
Routable = 'routable',
|
|
Degraded = 'degraded',
|
|
}
|
|
|
|
export enum OnlineState {
|
|
Online = 'online',
|
|
Offline = 'offline',
|
|
}
|
|
|
|
export enum ActivationPolicy {
|
|
Up = 'up',
|
|
}
|
|
|
|
export enum DNSEnabled {
|
|
Yes = 'yes',
|
|
No = 'no',
|
|
}
|
|
|
|
export enum InterfaceType {
|
|
Loopback = 'loopback',
|
|
Ether = 'ether',
|
|
Bridge = 'bridge',
|
|
Vlan = 'vlan',
|
|
None = 'none',
|
|
}
|
|
|
|
export interface DNS {
|
|
Family: AddressFamily
|
|
Address: IPAddress
|
|
ConfigSource: ConfigSource
|
|
ConfigProvider?: IPAddress
|
|
}
|
|
|
|
export interface DNSSetting {
|
|
LLMNR?: DNSEnabled
|
|
MDNS?: DNSEnabled
|
|
ConfigSource: ConfigSource
|
|
}
|
|
|
|
export interface InterfaceAddress {
|
|
Family: AddressFamily
|
|
Address: IPAddress
|
|
PrefixLength: number
|
|
ConfigSource: ConfigSource
|
|
ConfigProvider?: IPAddress
|
|
Scope?: number
|
|
ScopeString?: ScopeString
|
|
Flags: number
|
|
FlagsString: string | null
|
|
Broadcast?: IPAddress
|
|
PreferredLifetimeUSec?: number
|
|
PreferredLifetimeUsec?: number // Note: both variants exist
|
|
ValidLifetimeUSec?: number
|
|
ValidLifetimeUsec?: number // Note: both variants exist
|
|
ConfigState?: ConfigState
|
|
}
|
|
|
|
export interface InterfaceRoute {
|
|
Family: AddressFamily
|
|
Destination: IPAddress
|
|
DestinationPrefixLength: number
|
|
Gateway?: IPAddress
|
|
PreferredSource?: IPAddress
|
|
TOS: number
|
|
Scope: number
|
|
Protocol: number
|
|
Type: number
|
|
Priority: number
|
|
Table: number
|
|
Flags: number
|
|
NextHopID?: number
|
|
ConfigSource: ConfigSource
|
|
ConfigProvider?: IPAddress
|
|
ScopeString: ScopeString
|
|
ProtocolString: ProtocolString | string
|
|
TypeString: TypeString | string
|
|
TableString: TableStringType
|
|
Preference: number
|
|
FlagsString: string
|
|
ConfigState?: ConfigState
|
|
LifetimeUSec?: number
|
|
}
|
|
|
|
export interface NextHop {
|
|
ID: number
|
|
Family: AddressFamily
|
|
ConfigSource: ConfigSource
|
|
ConfigProvider: IPAddress
|
|
Gateway: IPAddress
|
|
Flags: number
|
|
FlagsString: string
|
|
Protocol: number
|
|
ProtocolString: string
|
|
Blackhole: boolean
|
|
ConfigState?: ConfigState
|
|
}
|
|
|
|
export interface DHCPv4Lease {
|
|
LeaseTimestampUSec: number
|
|
Timeout1USec: number
|
|
Timeout2USec: number
|
|
}
|
|
|
|
export interface DHCPv4Client {
|
|
Lease: DHCPv4Lease
|
|
ClientIdentifier: number[]
|
|
}
|
|
|
|
export interface DHCPv6Prefix {
|
|
Prefix: IPAddress
|
|
PrefixLength: number
|
|
PreferredLifetimeUSec: number
|
|
ValidLifetimeUSec: number
|
|
}
|
|
|
|
export interface DHCPv6Lease {
|
|
Timeout1USec: number
|
|
Timeout2USec: number
|
|
LeaseTimestampUSec: number
|
|
}
|
|
|
|
export interface DHCPv6Client {
|
|
Lease: DHCPv6Lease
|
|
Prefixes: DHCPv6Prefix[]
|
|
DUID: number[]
|
|
}
|
|
|
|
export interface DHCPLease {
|
|
ClientId: number[]
|
|
Address: IPAddress
|
|
Hostname?: string
|
|
HardwareAddressType: number
|
|
HardwareAddressLength: number
|
|
HardwareAddress: IPAddress
|
|
ExpirationUSec: number
|
|
ExpirationRealtimeUSec: number
|
|
}
|
|
|
|
export interface StaticLease {
|
|
ClientId: number[]
|
|
Address: IPAddress
|
|
HardwareAddressType: number
|
|
HardwareAddressLength: number
|
|
HardwareAddress: IPAddress
|
|
}
|
|
|
|
export interface DHCPServer {
|
|
PoolOffset: number
|
|
PoolSize: number
|
|
Leases?: DHCPLease[]
|
|
StaticLeases?: StaticLease[]
|
|
}
|
|
|
|
export interface NetworkInterface {
|
|
Index: number
|
|
Name: string
|
|
Kind?: string
|
|
Type: InterfaceType
|
|
Driver?: string
|
|
Flags: number
|
|
FlagsString: string
|
|
KernelOperationalState: number
|
|
KernelOperationalStateString: string
|
|
MTU: number
|
|
MinimumMTU: number
|
|
MaximumMTU: number
|
|
HardwareAddress?: IPAddress
|
|
PermanentHardwareAddress?: IPAddress
|
|
BroadcastAddress?: IPAddress
|
|
IPv6LinkLocalAddress?: IPAddress
|
|
MasterInterfaceIndex?: number
|
|
AdministrativeState: AdministrativeState
|
|
OperationalState: OperationalState
|
|
CarrierState: CarrierState
|
|
AddressState: AddressState
|
|
IPv4AddressState: AddressState
|
|
IPv6AddressState: AddressState
|
|
OnlineState?: OnlineState
|
|
NetworkFile?: string
|
|
NetworkFileDropins?: string[]
|
|
RequiredForOnline?: boolean
|
|
RequiredFamilyForOnline?: 'any'
|
|
ActivationPolicy?: ActivationPolicy
|
|
LinkFile?: string
|
|
NetDevFile?: string
|
|
NetDevFileDropins?: string[]
|
|
Path?: string
|
|
Vendor?: string
|
|
Model?: string
|
|
DNS?: DNS[]
|
|
DNSSettings?: DNSSetting[]
|
|
Addresses?: InterfaceAddress[]
|
|
Routes?: InterfaceRoute[]
|
|
NextHops?: NextHop[]
|
|
DHCPv4Client?: DHCPv4Client
|
|
DHCPv6Client?: DHCPv6Client
|
|
DHCPServer?: DHCPServer
|
|
}
|
|
|
|
export interface RoutingPolicyRule {
|
|
Family: AddressFamily
|
|
Protocol: number
|
|
ProtocolString: ProtocolString | string
|
|
TOS: number
|
|
Type: number
|
|
TypeString: TypeString | string
|
|
IPProtocol: number
|
|
IPProtocolString: ProtocolString | string
|
|
Priority: number
|
|
FirewallMark: number
|
|
FirewallMask: number
|
|
Table?: number
|
|
TableString: TableStringType
|
|
Invert: boolean
|
|
ConfigSource: ConfigSource
|
|
ConfigState?: ConfigState
|
|
}
|
|
|
|
export interface NetworkStatus {
|
|
Interfaces: NetworkInterface[]
|
|
Routes: InterfaceRoute[]
|
|
RoutingPolicyRules: RoutingPolicyRule[]
|
|
}
|
|
|
|
// DHCP Lease with interface context
|
|
export interface LeaseWithInterface extends DHCPLease {
|
|
interfaceName: string
|
|
isExpired: boolean
|
|
timeRemaining: string
|
|
}
|