nixos/kresd: fix IPv6 scope syntax
The systemd syntax is suprising to me, but I suppose it's worth being compatible as people might be sharing it with other modules. Our regexp is lenient on IPv6 address part, so this is actually backwards compatible (i.e. you can put the scope at either place).
This commit is contained in:
parent
1071b77c21
commit
180213a0ac
@ -7,15 +7,16 @@ let
|
||||
|
||||
# Convert systemd-style address specification to kresd config line(s).
|
||||
# On Nix level we don't attempt to precisely validate the address specifications.
|
||||
# The optional IPv6 scope spec comes *after* port, perhaps surprisingly.
|
||||
mkListen = kind: addr: let
|
||||
al_v4 = builtins.match "([0-9.]+):([0-9]+)" addr;
|
||||
al_v6 = builtins.match "\\[(.+)]:([0-9]+)" addr;
|
||||
al_v4 = builtins.match "([0-9.]+):([0-9]+)()" addr;
|
||||
al_v6 = builtins.match "\\[(.+)]:([0-9]+)(%.*|$)" addr;
|
||||
al_portOnly = builtins.match "([0-9]+)" addr;
|
||||
al = findFirst (a: a != null)
|
||||
(throw "services.kresd.*: incorrect address specification '${addr}'")
|
||||
[ al_v4 al_v6 al_portOnly ];
|
||||
port = last al;
|
||||
addrSpec = if al_portOnly == null then "'${head al}'" else "{'::', '0.0.0.0'}";
|
||||
port = elemAt al 1;
|
||||
addrSpec = if al_portOnly == null then "'${head al}${elemAt al 2}'" else "{'::', '0.0.0.0'}";
|
||||
in # freebind is set for compatibility with earlier kresd services;
|
||||
# it could be configurable, for example.
|
||||
''
|
||||
|
Loading…
Reference in New Issue
Block a user