parent
1f0371c650
commit
e9d13d3751
@ -16,7 +16,8 @@ let
|
|||||||
"MACAddress"
|
"MACAddress"
|
||||||
"NamePolicy"
|
"NamePolicy"
|
||||||
"Name"
|
"Name"
|
||||||
"OriginalName"
|
"AlternativeNamesPolicy"
|
||||||
|
"AlternativeName"
|
||||||
"MTUBytes"
|
"MTUBytes"
|
||||||
"BitsPerSecond"
|
"BitsPerSecond"
|
||||||
"Duplex"
|
"Duplex"
|
||||||
@ -24,6 +25,8 @@ let
|
|||||||
"WakeOnLan"
|
"WakeOnLan"
|
||||||
"Port"
|
"Port"
|
||||||
"Advertise"
|
"Advertise"
|
||||||
|
"ReceiveChecksumOffload"
|
||||||
|
"TransmitChecksumOffload"
|
||||||
"TCPSegmentationOffload"
|
"TCPSegmentationOffload"
|
||||||
"TCP6SegmentationOffload"
|
"TCP6SegmentationOffload"
|
||||||
"GenericSegmentationOffload"
|
"GenericSegmentationOffload"
|
||||||
@ -33,6 +36,8 @@ let
|
|||||||
"TxChannels"
|
"TxChannels"
|
||||||
"OtherChannels"
|
"OtherChannels"
|
||||||
"CombinedChannels"
|
"CombinedChannels"
|
||||||
|
"RxBufferSize"
|
||||||
|
"TxBufferSize"
|
||||||
])
|
])
|
||||||
(assertValueOneOf "MACAddressPolicy" ["persistent" "random" "none"])
|
(assertValueOneOf "MACAddressPolicy" ["persistent" "random" "none"])
|
||||||
(assertMacAddress "MACAddress")
|
(assertMacAddress "MACAddress")
|
||||||
@ -42,20 +47,32 @@ let
|
|||||||
(assertValueOneOf "AutoNegotiation" boolValues)
|
(assertValueOneOf "AutoNegotiation" boolValues)
|
||||||
(assertValueOneOf "WakeOnLan" ["phy" "unicast" "multicast" "broadcast" "arp" "magic" "secureon" "off"])
|
(assertValueOneOf "WakeOnLan" ["phy" "unicast" "multicast" "broadcast" "arp" "magic" "secureon" "off"])
|
||||||
(assertValueOneOf "Port" ["tp" "aui" "bnc" "mii" "fibre"])
|
(assertValueOneOf "Port" ["tp" "aui" "bnc" "mii" "fibre"])
|
||||||
|
(assertValueOneOf "ReceiveChecksumOffload" boolValues)
|
||||||
|
(assertValueOneOf "TransmitChecksumOffload" boolValues)
|
||||||
(assertValueOneOf "TCPSegmentationOffload" boolValues)
|
(assertValueOneOf "TCPSegmentationOffload" boolValues)
|
||||||
(assertValueOneOf "TCP6SegmentationOffload" boolValues)
|
(assertValueOneOf "TCP6SegmentationOffload" boolValues)
|
||||||
(assertValueOneOf "GenericSegmentationOffload" boolValues)
|
(assertValueOneOf "GenericSegmentationOffload" boolValues)
|
||||||
(assertValueOneOf "UDPSegmentationOffload" boolValues)
|
|
||||||
(assertValueOneOf "GenericReceiveOffload" boolValues)
|
(assertValueOneOf "GenericReceiveOffload" boolValues)
|
||||||
(assertValueOneOf "LargeReceiveOffload" boolValues)
|
(assertValueOneOf "LargeReceiveOffload" boolValues)
|
||||||
(assertInt "RxChannels")
|
(assertInt "RxChannels")
|
||||||
|
# The following checks won't work on nix <= 2.2
|
||||||
|
# see https://github.com/NixOS/nix/pull/2378
|
||||||
|
#
|
||||||
|
# Add this again when we'll have drop the
|
||||||
|
# nix < 2.2 support.
|
||||||
|
# (assertRange "RxChannels" 1 4294967295)
|
||||||
(assertMinimum "RxChannels" 1)
|
(assertMinimum "RxChannels" 1)
|
||||||
(assertInt "TxChannels")
|
(assertInt "TxChannels")
|
||||||
|
# (assertRange "TxChannels" 1 4294967295)
|
||||||
(assertMinimum "TxChannels" 1)
|
(assertMinimum "TxChannels" 1)
|
||||||
(assertInt "OtherChannels")
|
(assertInt "OtherChannels")
|
||||||
|
# (assertRange "OtherChannels" 1 4294967295)
|
||||||
(assertMinimum "OtherChannels" 1)
|
(assertMinimum "OtherChannels" 1)
|
||||||
(assertInt "CombinedChannels")
|
(assertInt "CombinedChannels")
|
||||||
|
# (assertRange "CombinedChannels" 1 4294967295)
|
||||||
(assertMinimum "CombinedChannels" 1)
|
(assertMinimum "CombinedChannels" 1)
|
||||||
|
(assertInt "RxBufferSize")
|
||||||
|
(assertInt "TxBufferSize")
|
||||||
];
|
];
|
||||||
|
|
||||||
checkNetdev = checkUnitConfig "Netdev" [
|
checkNetdev = checkUnitConfig "Netdev" [
|
||||||
@ -74,6 +91,7 @@ let
|
|||||||
"dummy"
|
"dummy"
|
||||||
"gre"
|
"gre"
|
||||||
"gretap"
|
"gretap"
|
||||||
|
"erspan"
|
||||||
"ip6gre"
|
"ip6gre"
|
||||||
"ip6tnl"
|
"ip6tnl"
|
||||||
"ip6gretap"
|
"ip6gretap"
|
||||||
@ -90,12 +108,17 @@ let
|
|||||||
"vti6"
|
"vti6"
|
||||||
"vxlan"
|
"vxlan"
|
||||||
"geneve"
|
"geneve"
|
||||||
|
"l2tp"
|
||||||
|
"macsec"
|
||||||
"vrf"
|
"vrf"
|
||||||
"vcan"
|
"vcan"
|
||||||
"vxcan"
|
"vxcan"
|
||||||
"wireguard"
|
"wireguard"
|
||||||
"netdevsim"
|
"netdevsim"
|
||||||
|
"nlmon"
|
||||||
|
"fou"
|
||||||
"xfrm"
|
"xfrm"
|
||||||
|
"ifb"
|
||||||
])
|
])
|
||||||
(assertByteFormat "MTUBytes")
|
(assertByteFormat "MTUBytes")
|
||||||
(assertMacAddress "MACAddress")
|
(assertMacAddress "MACAddress")
|
||||||
@ -105,6 +128,7 @@ let
|
|||||||
(assertOnlyFields [
|
(assertOnlyFields [
|
||||||
"Table"
|
"Table"
|
||||||
])
|
])
|
||||||
|
(assertInt "Table")
|
||||||
(assertMinimum "Table" 0)
|
(assertMinimum "Table" 0)
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -115,14 +139,14 @@ let
|
|||||||
(assertOnlyFields [
|
(assertOnlyFields [
|
||||||
"PrivateKeyFile"
|
"PrivateKeyFile"
|
||||||
"ListenPort"
|
"ListenPort"
|
||||||
"FwMark"
|
"FirewallMark"
|
||||||
])
|
])
|
||||||
# The following check won't work on nix <= 2.2
|
# The following check won't work on nix <= 2.2
|
||||||
# see https://github.com/NixOS/nix/pull/2378
|
# see https://github.com/NixOS/nix/pull/2378
|
||||||
#
|
#
|
||||||
# Add this again when we'll have drop the
|
# Add this again when we'll have drop the
|
||||||
# nix < 2.2 support.
|
# nix < 2.2 support.
|
||||||
# (assertRange "FwMark" 1 4294967295)
|
# (assertRange "FirewallMark" 1 4294967295)
|
||||||
];
|
];
|
||||||
|
|
||||||
# NOTE The PresharedKey directive is missing on purpose here, please
|
# NOTE The PresharedKey directive is missing on purpose here, please
|
||||||
@ -136,7 +160,7 @@ let
|
|||||||
"Endpoint"
|
"Endpoint"
|
||||||
"PersistentKeepalive"
|
"PersistentKeepalive"
|
||||||
])
|
])
|
||||||
(assertRange "PersistentKeepalive" 1 65535)
|
(assertRange "PersistentKeepalive" 0 65535)
|
||||||
];
|
];
|
||||||
|
|
||||||
checkVlan = checkUnitConfig "VLAN" [
|
checkVlan = checkUnitConfig "VLAN" [
|
||||||
@ -163,9 +187,10 @@ let
|
|||||||
|
|
||||||
checkVxlan = checkUnitConfig "VXLAN" [
|
checkVxlan = checkUnitConfig "VXLAN" [
|
||||||
(assertOnlyFields [
|
(assertOnlyFields [
|
||||||
"Id"
|
"VNI"
|
||||||
"Remote"
|
"Remote"
|
||||||
"Local"
|
"Local"
|
||||||
|
"Group"
|
||||||
"TOS"
|
"TOS"
|
||||||
"TTL"
|
"TTL"
|
||||||
"MacLearning"
|
"MacLearning"
|
||||||
@ -181,12 +206,15 @@ let
|
|||||||
"RemoteChecksumTx"
|
"RemoteChecksumTx"
|
||||||
"RemoteChecksumRx"
|
"RemoteChecksumRx"
|
||||||
"GroupPolicyExtension"
|
"GroupPolicyExtension"
|
||||||
|
"GenericProtocolExtension"
|
||||||
"DestinationPort"
|
"DestinationPort"
|
||||||
"PortRange"
|
"PortRange"
|
||||||
"FlowLabel"
|
"FlowLabel"
|
||||||
|
"IPDoNotFragment"
|
||||||
])
|
])
|
||||||
(assertRange "TTL" 0 255)
|
(assertRange "VNI" 1 16777215)
|
||||||
(assertValueOneOf "MacLearning" boolValues)
|
(assertValueOneOf "MacLearning" boolValues)
|
||||||
|
(assertInt "MaximumFDBEntries")
|
||||||
(assertValueOneOf "ReduceARPProxy" boolValues)
|
(assertValueOneOf "ReduceARPProxy" boolValues)
|
||||||
(assertValueOneOf "L2MissNotification" boolValues)
|
(assertValueOneOf "L2MissNotification" boolValues)
|
||||||
(assertValueOneOf "L3MissNotification" boolValues)
|
(assertValueOneOf "L3MissNotification" boolValues)
|
||||||
@ -197,7 +225,9 @@ let
|
|||||||
(assertValueOneOf "RemoteChecksumTx" boolValues)
|
(assertValueOneOf "RemoteChecksumTx" boolValues)
|
||||||
(assertValueOneOf "RemoteChecksumRx" boolValues)
|
(assertValueOneOf "RemoteChecksumRx" boolValues)
|
||||||
(assertValueOneOf "GroupPolicyExtension" boolValues)
|
(assertValueOneOf "GroupPolicyExtension" boolValues)
|
||||||
|
(assertValueOneOf "GenericProtocolExtension" boolValues)
|
||||||
(assertRange "FlowLabel" 0 1048575)
|
(assertRange "FlowLabel" 0 1048575)
|
||||||
|
(assertValueOneOf "IPDoNotFragment" (boolValues + ["inherit"]))
|
||||||
];
|
];
|
||||||
|
|
||||||
checkTunnel = checkUnitConfig "Tunnel" [
|
checkTunnel = checkUnitConfig "Tunnel" [
|
||||||
@ -215,14 +245,31 @@ let
|
|||||||
"OutputKey"
|
"OutputKey"
|
||||||
"Mode"
|
"Mode"
|
||||||
"Independent"
|
"Independent"
|
||||||
|
"AssignToLoopback"
|
||||||
"AllowLocalRemote"
|
"AllowLocalRemote"
|
||||||
|
"FooOverUDP"
|
||||||
|
"FOUDestinationPort"
|
||||||
|
"FOUSourcePort"
|
||||||
|
"Encapsulation"
|
||||||
|
"IPv6RapidDeploymentPrefix"
|
||||||
|
"ISATAP"
|
||||||
|
"SerializeTunneledPackets"
|
||||||
|
"ERSPANIndex"
|
||||||
])
|
])
|
||||||
(assertRange "TTL" 0 255)
|
(assertRange "TTL" 0 255)
|
||||||
(assertValueOneOf "DiscoverPathMTU" boolValues)
|
(assertValueOneOf "DiscoverPathMTU" boolValues)
|
||||||
(assertValueOneOf "CopyDSCP" boolValues)
|
(assertValueOneOf "CopyDSCP" boolValues)
|
||||||
(assertValueOneOf "Mode" ["ip6ip6" "ipip6" "any"])
|
(assertValueOneOf "Mode" ["ip6ip6" "ipip6" "any"])
|
||||||
(assertValueOneOf "Independent" boolValues)
|
(assertValueOneOf "Independent" boolValues)
|
||||||
|
(assertValueOneOf "AssignToLoopback" boolValues)
|
||||||
(assertValueOneOf "AllowLocalRemote" boolValues)
|
(assertValueOneOf "AllowLocalRemote" boolValues)
|
||||||
|
(assertValueOneOf "FooOverUDP" boolValues)
|
||||||
|
(assertPort "FOUDestinationPort")
|
||||||
|
(assertPort "FOUSourcePort")
|
||||||
|
(assertValueOneOf "Encapsulation" ["FooOverUDP" "GenericUDPEncapsulation"])
|
||||||
|
(assertValueOneOf "ISATAP" boolValues)
|
||||||
|
(assertValueOneOf "SerializeTunneledPackets" boolValues)
|
||||||
|
(assertRange "ERSPANIndex" 1 1048575)
|
||||||
];
|
];
|
||||||
|
|
||||||
checkPeer = checkUnitConfig "Peer" [
|
checkPeer = checkUnitConfig "Peer" [
|
||||||
@ -235,14 +282,12 @@ let
|
|||||||
|
|
||||||
tunTapChecks = [
|
tunTapChecks = [
|
||||||
(assertOnlyFields [
|
(assertOnlyFields [
|
||||||
"OneQueue"
|
|
||||||
"MultiQueue"
|
"MultiQueue"
|
||||||
"PacketInfo"
|
"PacketInfo"
|
||||||
"VNetHeader"
|
"VNetHeader"
|
||||||
"User"
|
"User"
|
||||||
"Group"
|
"Group"
|
||||||
])
|
])
|
||||||
(assertValueOneOf "OneQueue" boolValues)
|
|
||||||
(assertValueOneOf "MultiQueue" boolValues)
|
(assertValueOneOf "MultiQueue" boolValues)
|
||||||
(assertValueOneOf "PacketInfo" boolValues)
|
(assertValueOneOf "PacketInfo" boolValues)
|
||||||
(assertValueOneOf "VNetHeader" boolValues)
|
(assertValueOneOf "VNetHeader" boolValues)
|
||||||
@ -262,6 +307,9 @@ let
|
|||||||
"DownDelaySec"
|
"DownDelaySec"
|
||||||
"LearnPacketIntervalSec"
|
"LearnPacketIntervalSec"
|
||||||
"AdSelect"
|
"AdSelect"
|
||||||
|
"AdActorSystemPriority"
|
||||||
|
"AdUserPortKey"
|
||||||
|
"AdActorSystem"
|
||||||
"FailOverMACPolicy"
|
"FailOverMACPolicy"
|
||||||
"ARPValidate"
|
"ARPValidate"
|
||||||
"ARPIntervalSec"
|
"ARPIntervalSec"
|
||||||
@ -272,6 +320,7 @@ let
|
|||||||
"PacketsPerSlave"
|
"PacketsPerSlave"
|
||||||
"GratuitousARP"
|
"GratuitousARP"
|
||||||
"AllSlavesActive"
|
"AllSlavesActive"
|
||||||
|
"DynamicTransmitLoadBalancing"
|
||||||
"MinLinks"
|
"MinLinks"
|
||||||
])
|
])
|
||||||
(assertValueOneOf "Mode" [
|
(assertValueOneOf "Mode" [
|
||||||
@ -292,6 +341,8 @@ let
|
|||||||
])
|
])
|
||||||
(assertValueOneOf "LACPTransmitRate" ["slow" "fast"])
|
(assertValueOneOf "LACPTransmitRate" ["slow" "fast"])
|
||||||
(assertValueOneOf "AdSelect" ["stable" "bandwidth" "count"])
|
(assertValueOneOf "AdSelect" ["stable" "bandwidth" "count"])
|
||||||
|
(assertRange "AdActorSystemPriority" 1 65535)
|
||||||
|
(assertRange "AdUserPortKey" 0 1023)
|
||||||
(assertValueOneOf "FailOverMACPolicy" ["none" "active" "follow"])
|
(assertValueOneOf "FailOverMACPolicy" ["none" "active" "follow"])
|
||||||
(assertValueOneOf "ARPValidate" ["none" "active" "backup" "all"])
|
(assertValueOneOf "ARPValidate" ["none" "active" "backup" "all"])
|
||||||
(assertValueOneOf "ARPAllTargets" ["any" "all"])
|
(assertValueOneOf "ARPAllTargets" ["any" "all"])
|
||||||
@ -300,6 +351,9 @@ let
|
|||||||
(assertRange "PacketsPerSlave" 0 65535)
|
(assertRange "PacketsPerSlave" 0 65535)
|
||||||
(assertRange "GratuitousARP" 0 255)
|
(assertRange "GratuitousARP" 0 255)
|
||||||
(assertValueOneOf "AllSlavesActive" boolValues)
|
(assertValueOneOf "AllSlavesActive" boolValues)
|
||||||
|
(assertValueOneOf "DynamicTransmitLoadBalancing" boolValues)
|
||||||
|
(assertInt "MinLinks")
|
||||||
|
(assertMinimum "MinLinks" 0)
|
||||||
];
|
];
|
||||||
|
|
||||||
checkXfrm = checkUnitConfig "Xfrm" [
|
checkXfrm = checkUnitConfig "Xfrm" [
|
||||||
@ -323,6 +377,7 @@ let
|
|||||||
"DHCPServer"
|
"DHCPServer"
|
||||||
"LinkLocalAddressing"
|
"LinkLocalAddressing"
|
||||||
"IPv4LLRoute"
|
"IPv4LLRoute"
|
||||||
|
"DefaultRouteOnDevice"
|
||||||
"IPv6Token"
|
"IPv6Token"
|
||||||
"LLMNR"
|
"LLMNR"
|
||||||
"MulticastDNS"
|
"MulticastDNS"
|
||||||
@ -336,6 +391,7 @@ let
|
|||||||
"Gateway"
|
"Gateway"
|
||||||
"DNS"
|
"DNS"
|
||||||
"Domains"
|
"Domains"
|
||||||
|
"DNSDefaultRoute"
|
||||||
"NTP"
|
"NTP"
|
||||||
"IPForward"
|
"IPForward"
|
||||||
"IPMasquerade"
|
"IPMasquerade"
|
||||||
@ -356,33 +412,43 @@ let
|
|||||||
"MACVLAN"
|
"MACVLAN"
|
||||||
"VXLAN"
|
"VXLAN"
|
||||||
"Tunnel"
|
"Tunnel"
|
||||||
|
"MACsec"
|
||||||
"ActiveSlave"
|
"ActiveSlave"
|
||||||
"PrimarySlave"
|
"PrimarySlave"
|
||||||
"ConfigureWithoutCarrier"
|
"ConfigureWithoutCarrier"
|
||||||
|
"IgnoreCarrierLoss"
|
||||||
"Xfrm"
|
"Xfrm"
|
||||||
"KeepConfiguration"
|
"KeepConfiguration"
|
||||||
])
|
])
|
||||||
# Note: For DHCP the values both, none, v4, v6 are deprecated
|
# Note: For DHCP the values both, none, v4, v6 are deprecated
|
||||||
(assertValueOneOf "DHCP" ["yes" "no" "ipv4" "ipv6" "both" "none" "v4" "v6"])
|
(assertValueOneOf "DHCP" ["yes" "no" "ipv4" "ipv6"])
|
||||||
(assertValueOneOf "DHCPServer" boolValues)
|
(assertValueOneOf "DHCPServer" boolValues)
|
||||||
(assertValueOneOf "LinkLocalAddressing" ["yes" "no" "ipv4" "ipv6" "ipv4-fallback" "fallback"])
|
(assertValueOneOf "LinkLocalAddressing" ["yes" "no" "ipv4" "ipv6" "fallback" "ipv4-fallback"])
|
||||||
(assertValueOneOf "IPv4LLRoute" boolValues)
|
(assertValueOneOf "IPv4LLRoute" boolValues)
|
||||||
(assertValueOneOf "LLMNR" ["yes" "resolve" "no"])
|
(assertValueOneOf "DefaultRouteOnDevice" boolValues)
|
||||||
(assertValueOneOf "MulticastDNS" ["yes" "resolve" "no"])
|
(assertValueOneOf "LLMNR" (boolValues ++ ["resolve"]))
|
||||||
(assertValueOneOf "DNSOverTLS" ["opportunistic" "no"])
|
(assertValueOneOf "MulticastDNS" (boolValues ++ ["resolve"]))
|
||||||
(assertValueOneOf "DNSSEC" ["yes" "allow-downgrade" "no"])
|
(assertValueOneOf "DNSOverTLS" (boolValues ++ ["opportunistic"]))
|
||||||
(assertValueOneOf "LLDP" ["yes" "routers-only" "no"])
|
(assertValueOneOf "DNSSEC" (boolValues ++ ["allow-downgrade"]))
|
||||||
(assertValueOneOf "EmitLLDP" ["yes" "no" "nearest-bridge" "non-tpmr-bridge" "customer-bridge"])
|
(assertValueOneOf "LLDP" (boolValues ++ ["routers-only"]))
|
||||||
(assertValueOneOf "IPForward" ["yes" "no" "ipv4" "ipv6"])
|
(assertValueOneOf "EmitLLDP" (boolValues ++ ["nearest-bridge" "non-tpmr-bridge" "customer-bridge"]))
|
||||||
|
(assertValueOneOf "DNSDefaultRoute" boolValues)
|
||||||
|
(assertValueOneOf "IPForward" (boolValues ++ ["ipv4" "ipv6"]))
|
||||||
(assertValueOneOf "IPMasquerade" boolValues)
|
(assertValueOneOf "IPMasquerade" boolValues)
|
||||||
(assertValueOneOf "IPv6PrivacyExtensions" ["yes" "no" "prefer-public" "kernel"])
|
(assertValueOneOf "IPv6PrivacyExtensions" (boolValues ++ ["prefer-public" "kernel"]))
|
||||||
(assertValueOneOf "IPv6AcceptRA" boolValues)
|
(assertValueOneOf "IPv6AcceptRA" boolValues)
|
||||||
|
(assertInt "IPv6DuplicateAddressDetection")
|
||||||
|
(assertMinimum "IPv6DuplicateAddressDetection" 0)
|
||||||
|
(assertInt "IPv6HopLimit")
|
||||||
|
(assertMinimum "IPv6HopLimit" 0)
|
||||||
(assertValueOneOf "IPv4ProxyARP" boolValues)
|
(assertValueOneOf "IPv4ProxyARP" boolValues)
|
||||||
(assertValueOneOf "IPv6ProxyNDP" boolValues)
|
(assertValueOneOf "IPv6ProxyNDP" boolValues)
|
||||||
(assertValueOneOf "IPv6PrefixDelegation" (boolValues ++ [ "dhcpv6" "static" ]))
|
(assertValueOneOf "IPv6PrefixDelegation" ["static" "dhcpv6" "yes" "false"])
|
||||||
|
(assertByteFormat "IPv6MTUBytes")
|
||||||
(assertValueOneOf "ActiveSlave" boolValues)
|
(assertValueOneOf "ActiveSlave" boolValues)
|
||||||
(assertValueOneOf "PrimarySlave" boolValues)
|
(assertValueOneOf "PrimarySlave" boolValues)
|
||||||
(assertValueOneOf "ConfigureWithoutCarrier" boolValues)
|
(assertValueOneOf "ConfigureWithoutCarrier" boolValues)
|
||||||
|
(assertValueOneOf "IgnoreCarrierLoss" boolValues)
|
||||||
(assertValueOneOf "KeepConfiguration" (boolValues ++ ["static" "dhcp-on-stop" "dhcp"]))
|
(assertValueOneOf "KeepConfiguration" (boolValues ++ ["static" "dhcp-on-stop" "dhcp"]))
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -397,15 +463,15 @@ let
|
|||||||
"HomeAddress"
|
"HomeAddress"
|
||||||
"DuplicateAddressDetection"
|
"DuplicateAddressDetection"
|
||||||
"ManageTemporaryAddress"
|
"ManageTemporaryAddress"
|
||||||
"PrefixRoute"
|
"AddPrefixRoute"
|
||||||
"AutoJoin"
|
"AutoJoin"
|
||||||
])
|
])
|
||||||
(assertHasField "Address")
|
(assertHasField "Address")
|
||||||
(assertValueOneOf "PreferredLifetime" ["forever" "infinity" "0" 0])
|
(assertValueOneOf "PreferredLifetime" ["forever" "infinity" "0" 0])
|
||||||
(assertValueOneOf "HomeAddress" boolValues)
|
(assertValueOneOf "HomeAddress" boolValues)
|
||||||
(assertValueOneOf "DuplicateAddressDetection" boolValues)
|
(assertValueOneOf "DuplicateAddressDetection" ["ipv4" "ipv6" "both" "none"])
|
||||||
(assertValueOneOf "ManageTemporaryAddress" boolValues)
|
(assertValueOneOf "ManageTemporaryAddress" boolValues)
|
||||||
(assertValueOneOf "PrefixRoute" boolValues)
|
(assertValueOneOf "AddPrefixRoute" boolValues)
|
||||||
(assertValueOneOf "AutoJoin" boolValues)
|
(assertValueOneOf "AutoJoin" boolValues)
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -424,19 +490,24 @@ let
|
|||||||
"IPProtocol"
|
"IPProtocol"
|
||||||
"InvertRule"
|
"InvertRule"
|
||||||
"Family"
|
"Family"
|
||||||
|
"User"
|
||||||
|
"SuppressPrefixLength"
|
||||||
])
|
])
|
||||||
(assertRange "TypeOfService" 0 255)
|
(assertRange "TypeOfService" 0 255)
|
||||||
|
(assertInt "FirewallMark")
|
||||||
# The following check won't work on nix <= 2.2
|
# The following check won't work on nix <= 2.2
|
||||||
# see https://github.com/NixOS/nix/pull/2378
|
# see https://github.com/NixOS/nix/pull/2378
|
||||||
#
|
#
|
||||||
# Add this again when we'll have drop the
|
# Add this again when we'll have drop the
|
||||||
# nix < 2.2 support.
|
# nix < 2.2 support.
|
||||||
# (assertRange "FirewallMark" 1 4294967295)
|
# (assertRange "FirewallMark" 1 4294967295)
|
||||||
|
(assertMinimum "FirewallMark" 1)
|
||||||
(assertInt "Priority")
|
(assertInt "Priority")
|
||||||
(assertPort "SourcePort")
|
(assertPort "SourcePort")
|
||||||
(assertPort "DestinationPort")
|
(assertPort "DestinationPort")
|
||||||
(assertValueOneOf "InvertRule" boolValues)
|
(assertValueOneOf "InvertRule" boolValues)
|
||||||
(assertValueOneOf "Family" ["ipv4" "ipv6" "both"])
|
(assertValueOneOf "Family" ["ipv4" "ipv6" "both"])
|
||||||
|
(assertRange "SuppressPrefixLength" 0 128)
|
||||||
];
|
];
|
||||||
|
|
||||||
checkRoute = checkUnitConfig "Route" [
|
checkRoute = checkUnitConfig "Route" [
|
||||||
@ -455,8 +526,34 @@ let
|
|||||||
"InitialCongestionWindow"
|
"InitialCongestionWindow"
|
||||||
"InitialAdvertisedReceiveWindow"
|
"InitialAdvertisedReceiveWindow"
|
||||||
"QuickAck"
|
"QuickAck"
|
||||||
|
"FastOpenNoCookie"
|
||||||
|
"TTLPropagate"
|
||||||
"MTUBytes"
|
"MTUBytes"
|
||||||
|
"IPServiceType"
|
||||||
|
"MultiPathRoute"
|
||||||
])
|
])
|
||||||
|
(assertValueOneOf "GatewayOnLink" boolValues)
|
||||||
|
(assertInt "Metric")
|
||||||
|
(assertValueOneOf "IPv6Preference" ["low" "medium" "high"])
|
||||||
|
(assertValueOneOf "Scope" ["global" "site" "link" "host" "nowhere"])
|
||||||
|
(assertValueOneOf "Type" [
|
||||||
|
"unicast"
|
||||||
|
"local"
|
||||||
|
"broadcast"
|
||||||
|
"anycast"
|
||||||
|
"multicast"
|
||||||
|
"blackhole"
|
||||||
|
"unreachable"
|
||||||
|
"prohibit"
|
||||||
|
"throw"
|
||||||
|
"nat"
|
||||||
|
"xresolve"
|
||||||
|
])
|
||||||
|
(assertValueOneOf "QuickAck" boolValues)
|
||||||
|
(assertValueOneOf "FastOpenNoCookie" boolValues)
|
||||||
|
(assertValueOneOf "TTLPropagate" boolValues)
|
||||||
|
(assertByteFormat "MTUBytes")
|
||||||
|
(assertValueOneOf "IPServiceType" ["CS6" "CS4"])
|
||||||
];
|
];
|
||||||
|
|
||||||
checkDhcpV4 = checkUnitConfig "DHCPv4" [
|
checkDhcpV4 = checkUnitConfig "DHCPv4" [
|
||||||
@ -464,6 +561,7 @@ let
|
|||||||
"UseDNS"
|
"UseDNS"
|
||||||
"RoutesToDNS"
|
"RoutesToDNS"
|
||||||
"UseNTP"
|
"UseNTP"
|
||||||
|
"UseSIP"
|
||||||
"UseMTU"
|
"UseMTU"
|
||||||
"Anonymize"
|
"Anonymize"
|
||||||
"SendHostname"
|
"SendHostname"
|
||||||
@ -482,24 +580,41 @@ let
|
|||||||
"RequestBroadcast"
|
"RequestBroadcast"
|
||||||
"RouteMetric"
|
"RouteMetric"
|
||||||
"RouteTable"
|
"RouteTable"
|
||||||
|
"RouteMTUBytes"
|
||||||
"ListenPort"
|
"ListenPort"
|
||||||
"SendRelease"
|
"SendRelease"
|
||||||
|
"SendDecline"
|
||||||
|
"BlackList"
|
||||||
|
"RequestOptions"
|
||||||
|
"SendOption"
|
||||||
])
|
])
|
||||||
(assertValueOneOf "UseDNS" boolValues)
|
(assertValueOneOf "UseDNS" boolValues)
|
||||||
(assertValueOneOf "RoutesToDNS" boolValues)
|
(assertValueOneOf "RoutesToDNS" boolValues)
|
||||||
(assertValueOneOf "UseNTP" boolValues)
|
(assertValueOneOf "UseNTP" boolValues)
|
||||||
|
(assertValueOneOf "UseSIP" boolValues)
|
||||||
(assertValueOneOf "UseMTU" boolValues)
|
(assertValueOneOf "UseMTU" boolValues)
|
||||||
(assertValueOneOf "Anonymize" boolValues)
|
(assertValueOneOf "Anonymize" boolValues)
|
||||||
(assertValueOneOf "SendHostname" boolValues)
|
(assertValueOneOf "SendHostname" boolValues)
|
||||||
(assertValueOneOf "UseHostname" boolValues)
|
(assertValueOneOf "UseHostname" boolValues)
|
||||||
(assertValueOneOf "UseDomains" ["yes" "no" "route"])
|
(assertValueOneOf "UseDomains" (boolValues ++ ["route"]))
|
||||||
(assertValueOneOf "UseRoutes" boolValues)
|
(assertValueOneOf "UseRoutes" boolValues)
|
||||||
(assertValueOneOf "UseTimezone" boolValues)
|
(assertValueOneOf "UseTimezone" boolValues)
|
||||||
(assertMinimum "MaxAttempts" 0)
|
(assertValueOneOf "ClientIdentifier" ["mac" "duid" "duid-only"])
|
||||||
|
(assertInt "IAID")
|
||||||
(assertValueOneOf "RequestBroadcast" boolValues)
|
(assertValueOneOf "RequestBroadcast" boolValues)
|
||||||
|
(assertInt "RouteMetric")
|
||||||
(assertInt "RouteTable")
|
(assertInt "RouteTable")
|
||||||
|
# The following check won't work on nix <= 2.2
|
||||||
|
# see https://github.com/NixOS/nix/pull/2378
|
||||||
|
#
|
||||||
|
# Add this again when we'll have drop the
|
||||||
|
# nix < 2.2 support.
|
||||||
|
# (assertRange "RouteTable" 0 4294967295)
|
||||||
(assertMinimum "RouteTable" 0)
|
(assertMinimum "RouteTable" 0)
|
||||||
|
(assertByteFormat "RouteMTUBytes")
|
||||||
|
(assertPort "ListenPort")
|
||||||
(assertValueOneOf "SendRelease" boolValues)
|
(assertValueOneOf "SendRelease" boolValues)
|
||||||
|
(assertValueOneOf "SendDecline" boolValues)
|
||||||
];
|
];
|
||||||
|
|
||||||
checkDhcpV6 = checkUnitConfig "DHCPv6" [
|
checkDhcpV6 = checkUnitConfig "DHCPv6" [
|
||||||
@ -533,7 +648,6 @@ let
|
|||||||
(assertValueOneOf "RouterPreference" ["high" "medium" "low" "normal" "default"])
|
(assertValueOneOf "RouterPreference" ["high" "medium" "low" "normal" "default"])
|
||||||
(assertValueOneOf "EmitDNS" boolValues)
|
(assertValueOneOf "EmitDNS" boolValues)
|
||||||
(assertValueOneOf "EmitDomains" boolValues)
|
(assertValueOneOf "EmitDomains" boolValues)
|
||||||
(assertMinimum "DNSLifetimeSec" 0)
|
|
||||||
];
|
];
|
||||||
|
|
||||||
checkIpv6Prefix = checkUnitConfig "IPv6Prefix" [
|
checkIpv6Prefix = checkUnitConfig "IPv6Prefix" [
|
||||||
@ -546,11 +660,8 @@ let
|
|||||||
])
|
])
|
||||||
(assertValueOneOf "AddressAutoconfiguration" boolValues)
|
(assertValueOneOf "AddressAutoconfiguration" boolValues)
|
||||||
(assertValueOneOf "OnLink" boolValues)
|
(assertValueOneOf "OnLink" boolValues)
|
||||||
(assertMinimum "PreferredLifetimeSec" 0)
|
|
||||||
(assertMinimum "ValidLifetimeSec" 0)
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
checkDhcpServer = checkUnitConfig "DHCPServer" [
|
checkDhcpServer = checkUnitConfig "DHCPServer" [
|
||||||
(assertOnlyFields [
|
(assertOnlyFields [
|
||||||
"PoolOffset"
|
"PoolOffset"
|
||||||
@ -561,23 +672,32 @@ let
|
|||||||
"DNS"
|
"DNS"
|
||||||
"EmitNTP"
|
"EmitNTP"
|
||||||
"NTP"
|
"NTP"
|
||||||
|
"EmitSIP"
|
||||||
|
"SIP"
|
||||||
"EmitRouter"
|
"EmitRouter"
|
||||||
"EmitTimezone"
|
"EmitTimezone"
|
||||||
"Timezone"
|
"Timezone"
|
||||||
|
"SendOption"
|
||||||
])
|
])
|
||||||
|
(assertInt "PoolOffset")
|
||||||
|
(assertMinimum "PoolOffset" 0)
|
||||||
|
(assertInt "PoolSize")
|
||||||
|
(assertMinimum "PoolSize" 0)
|
||||||
(assertValueOneOf "EmitDNS" boolValues)
|
(assertValueOneOf "EmitDNS" boolValues)
|
||||||
(assertValueOneOf "EmitNTP" boolValues)
|
(assertValueOneOf "EmitNTP" boolValues)
|
||||||
|
(assertValueOneOf "EmitSIP" boolValues)
|
||||||
(assertValueOneOf "EmitRouter" boolValues)
|
(assertValueOneOf "EmitRouter" boolValues)
|
||||||
(assertValueOneOf "EmitTimezone" boolValues)
|
(assertValueOneOf "EmitTimezone" boolValues)
|
||||||
];
|
];
|
||||||
|
|
||||||
# .network files have a [Link] section with different options than in .netlink files
|
# .network files have a [Link] section with different options than in .link files
|
||||||
checkNetworkLink = checkUnitConfig "Link" [
|
checkNetworkLink = checkUnitConfig "Link" [
|
||||||
(assertOnlyFields [
|
(assertOnlyFields [
|
||||||
"MACAddress"
|
"MACAddress"
|
||||||
"MTUBytes"
|
"MTUBytes"
|
||||||
"ARP"
|
"ARP"
|
||||||
"Multicast"
|
"Multicast"
|
||||||
|
"AllMulticast"
|
||||||
"Unmanaged"
|
"Unmanaged"
|
||||||
"RequiredForOnline"
|
"RequiredForOnline"
|
||||||
])
|
])
|
||||||
@ -585,8 +705,10 @@ let
|
|||||||
(assertByteFormat "MTUBytes")
|
(assertByteFormat "MTUBytes")
|
||||||
(assertValueOneOf "ARP" boolValues)
|
(assertValueOneOf "ARP" boolValues)
|
||||||
(assertValueOneOf "Multicast" boolValues)
|
(assertValueOneOf "Multicast" boolValues)
|
||||||
|
(assertValueOneOf "AllMulticast" boolValues)
|
||||||
(assertValueOneOf "Unmanaged" boolValues)
|
(assertValueOneOf "Unmanaged" boolValues)
|
||||||
(assertValueOneOf "RequiredForOnline" (boolValues ++ [
|
(assertValueOneOf "RequiredForOnline" (boolValues ++ [
|
||||||
|
"missing"
|
||||||
"off"
|
"off"
|
||||||
"no-carrier"
|
"no-carrier"
|
||||||
"dormant"
|
"dormant"
|
||||||
@ -598,7 +720,6 @@ let
|
|||||||
]))
|
]))
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
commonNetworkOptions = {
|
commonNetworkOptions = {
|
||||||
|
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user