feat: kea setup routes for dhcp clients

This commit is contained in:
catvayor 2025-02-25 17:38:01 +01:00
parent e07c904c56
commit 68d9dbe2b6
Signed by: lbailly
GPG key ID: CE3E645251AC63F3

View file

@ -225,13 +225,17 @@ in
});
})
];
systemd.services.kea-dhcp4-server.serviceConfig = {
AmbientCapabilities = [ "CAP_NET_ADMIN" ];
CapabilityBoundingSet = [ "CAP_NET_ADMIN" ];
};
services = {
resolved.enable = false;
kea.dhcp4 = {
enable = true;
settings = {
interfaces-config = {
interfaces = [ "*" ];
interfaces = map router_vtep_name vni-list;
dhcp-socket-type = "raw";
outbound-interface = "same-as-inbound";
service-sockets-require-all = true;
@ -259,9 +263,25 @@ in
{
library = "${pkgs.kea}/lib/kea/hooks/libdhcp_run_script.so";
parameters = {
name = pkgs.writeShellScript "hook.sh" ''
echo $1 $QUERY4_IFACE_NAME >> /var/lib/kea/scriptlog
'';
name = lib.getExe <| pkgs.writeShellApplication {
name = "hook.sh";
runtimeInputs = [ pkgs.busybox ];
text = ''
case "$1" in
"leases4_committed")
for i in $(seq 0 $((LEASES4_SIZE-1))); do
LEASE4_ADDRESS=$(eval "echo \$LEASES4_AT''${i}_ADDRESS")
ip r add dev "$QUERY4_IFACE_NAME" "$LEASE4_ADDRESS"
done
for i in $(seq 0 $((DELETED_LEASES4_SIZE-1))); do
LEASE4_ADDRESS=$(eval "echo \$DELETED_LEASES4_AT''${i}_ADDRESS")
ip r del dev "$QUERY4_IFACE_NAME" "$LEASE4_ADDRESS"
done
;;
*) echo "$1" unmanaged;;
esac
'';
};
sync = false;
};
}