1
0
Fork 1
mirror of https://github.com/NixOS/nixpkgs.git synced 2024-11-20 04:31:52 +00:00

nixos/networkd: fix range assertions on 32 bit Nix

This commit is contained in:
Ben Wolsieffer 2018-08-28 18:31:45 -04:00
parent c748ac5bdd
commit 442681cc2a
2 changed files with 18 additions and 5 deletions

View file

@ -30,10 +30,14 @@ let
(assertValueOneOf "UDPSegmentationOffload" boolValues)
(assertValueOneOf "GenericReceiveOffload" boolValues)
(assertValueOneOf "LargeReceiveOffload" boolValues)
(assertRange "RxChannels" 1 4294967295)
(assertRange "TxChannels" 1 4294967295)
(assertRange "OtherChannels" 1 4294967295)
(assertRange "CombinedChannels" 1 4294967295)
(assertInt "RxChannels")
(assertMinimum "RxChannels" 1)
(assertInt "TxChannels")
(assertMinimum "TxChannels" 1)
(assertInt "OtherChannels")
(assertMinimum "OtherChannels" 1)
(assertInt "CombinedChannels")
(assertMinimum "CombinedChannels" 1)
];
checkNetdev = checkUnitConfig "Netdev" [
@ -226,7 +230,8 @@ let
(assertValueOneOf "UseTimezone" boolValues)
(assertValueOneOf "CriticalConnection" boolValues)
(assertValueOneOf "RequestBroadcast" boolValues)
(assertRange "RouteTable" 0 4294967295)
(assertInt "RouteTable")
(assertMinimum "RouteTable" 0)
(assertValueOneOf "RapidCommit" boolValues)
];

View file

@ -73,11 +73,19 @@ in rec {
optional (attr ? ${name} && !(min <= attr.${name} && max >= attr.${name}))
"Systemd ${group} field `${name}' is outside the range [${toString min},${toString max}]";
assertMinimum = name: min: group: attr:
optional (attr ? ${name} && attr.${name} < min)
"Systemd ${group} field `${name}' must be greater than or equal to ${toString min}";
assertOnlyFields = fields: group: attr:
let badFields = filter (name: ! elem name fields) (attrNames attr); in
optional (badFields != [ ])
"Systemd ${group} has extra fields [${concatStringsSep " " badFields}].";
assertInt = name: group: attr:
optional (attr ? ${name} && !isInt attr.${name})
"Systemd ${group} field `${name}' is not an integer";
checkUnitConfig = group: checks: attrs: let
# We're applied at the top-level type (attrsOf unitOption), so the actual
# unit options might contain attributes from mkOverride that we need to