IfState: Difference between revisions
m diagram: fix format again |
add dhcpv4 |
||
| Line 164: | Line 164: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== DHCPv4 ==== | |||
<syntaxhighlight lang="nixos"> | |||
{ lib, pkgs, ... }: | |||
let | |||
script = pkgs.writeScript "ifstate-udhcp-script.sh" '' | |||
#! /bin/sh | |||
if [ "$1" = bound ]; then | |||
${lib.getExe' pkgs.iproute2 "ip"} address add "$ip/$mask" dev "$interface" | |||
if [ -n "$mtu" ]; then | |||
${lib.getExe' pkgs.iproute2 "ip"} link set mtu "$mtu" dev "$interface" | |||
fi | |||
if [ -n "$router" ]; then | |||
${lib.getExe' pkgs.iproute2 "ip"} route add default via "$router" dev "$interface" | |||
fi | |||
fi | |||
''; | |||
in | |||
{ | |||
networking.ifstate = { | |||
enable = true; | |||
settings = { | |||
parameters.hooks.dhcp.script = pkgs.writeScript "ifstate-udhcp-wrapper-script.sh" '' | |||
${lib.getExe' pkgs.busybox "udhcpc"} --quit --now -i $IFS_IFNAME -b --script ${script} | |||
''; | |||
interfaces.eth1 = { | |||
addresses = [ ]; | |||
hooks = [ | |||
{ | |||
name = "dhcp"; | |||
} | |||
]; | |||
link = { | |||
state = "up"; | |||
kind = "physical"; | |||
}; | |||
}; | |||
}; | |||
}; | |||
} | |||
</syntaxhighlight> | |||
=== Known Issues === | === Known Issues === | ||