/* jshint esversion: 2024, module: true */ /** * Network configuration types and enumerations * @module NetworkTypes */ // Section names const SectionName = { MATCH: Symbol("match"), LINK: Symbol("link"), NETWORK: Symbol("network"), DHCP: Symbol("dhcp"), DHCPV4: Symbol("dhcpv4"), DHCPV6: Symbol("dhcpv6"), IPV6_ACCEPT_RA: Symbol("ipv6acceptra"), IPV6_SEND_RA: Symbol("ipv6sendra"), SLAAC: Symbol("slaac"), ADDRESS: Symbol("address"), ROUTE: Symbol("route"), }; Object.freeze(SectionName); // Field types const FieldType = { STRING: Symbol("string"), MAC_ADDRESS: Symbol("mac-address"), IPV4_ADDRESS: Symbol("ipv4-address"), IPV6_ADDRESS: Symbol("ipv6-address"), IP_PREFIX: Symbol("ip-prefix"), BOOLEAN: Symbol("boolean"), NUMBER: Symbol("number"), PORT: Symbol("port"), MTU: Symbol("mtu"), STRINGS: Symbol("strings"), IP_ADDRESSES: Symbol("ip-addresses"), DHCP_MODE: Symbol("dhcp-mode"), IP_FORWARD: Symbol("ip-forward"), PRIVACY_EXTENSIONS: Symbol("privacy-extensions"), LLMNR: Symbol("llmnr"), MDNS: Symbol("mdns"), DNSSEC: Symbol("dnssec"), USE_DOMAINS: Symbol("use-domains"), CLIENT_IDENTIFIER: Symbol("client-identifier"), ROUTE_SCOPE: Symbol("route-scope"), ROUTE_TYPE: Symbol("route-type"), SLAAC: Symbol("slaac"), }; Object.freeze(FieldType); // DHCP modes const DHCPMode = { YES: "yes", NO: "no", IPV4: "ipv4", IPV6: "ipv6", }; Object.freeze(DHCPMode); // IP forwarding options const IPForward = { YES: "yes", NO: "no", IPV4: "ipv4", IPV6: "ipv6", }; Object.freeze(IPForward); // IPv6 privacy extensions const IPv6PrivacyExtensions = { YES: "yes", NO: "no", PREFER_PUBLIC: "prefer-public", }; Object.freeze(IPv6PrivacyExtensions); // LLMNR options const LLMNROptions = { YES: "yes", NO: "no", RESOLVE: "resolve", }; Object.freeze(LLMNROptions); // Multicast DNS options const MulticastDNS = { YES: "yes", NO: "no", RESOLVE: "resolve", }; Object.freeze(MulticastDNS); // DNSSEC options const DNSSECOptions = { YES: "yes", NO: "no", ALLOW_DOWNGRADE: "allow-downgrade", }; Object.freeze(DNSSECOptions); // Use domains options const UseDomains = { YES: "yes", NO: "no", ROUTE: "route", }; Object.freeze(UseDomains); // Client identifier options const ClientIdentifier = { MAC: "mac", DUID: "duid", }; Object.freeze(ClientIdentifier); // Route scope options const RouteScope = { GLOBAL: "global", LINK: "link", HOST: "host", }; Object.freeze(RouteScope); // Route type options const RouteType = { UNICAST: "unicast", LOCAL: "local", BROADCAST: "broadcast", ANYCAST: "anycast", MULTICAST: "multicast", BLACKHOLE: "blackhole", UNREACHABLE: "unreachable", PROHIBIT: "prohibit", }; Object.freeze(RouteType); // Wake-on-LAN options const WakeOnLAN = { PHY: "phy", UNICAST: "unicast", BROADCAST: "broadcast", ARP: "arp", MAGIC: "magic", }; Object.freeze(WakeOnLAN); // Port types const PortType = { TP: "tp", AUI: "aui", BNC: "bnc", MII: "mii", FIBRE: "fibre", }; Object.freeze(PortType); // Duplex modes const DuplexMode = { HALF: "half", FULL: "full", }; Object.freeze(DuplexMode); // SLAAC options const SLAACOptions = { YES: "yes", NO: "no", PREFER_TEMPORARY: "prefer-temporary", }; Object.freeze(SLAACOptions); // IPv6 Send RA options const IPv6SendRAOptions = { YES: "yes", NO: "no", }; Object.freeze(IPv6SendRAOptions); export { SectionName, FieldType, DHCPMode, IPForward, IPv6PrivacyExtensions, LLMNROptions, MulticastDNS, DNSSECOptions, UseDomains, ClientIdentifier, RouteScope, RouteType, WakeOnLAN, PortType, DuplexMode, SLAACOptions, IPv6SendRAOptions, };