Remove the dhclient module
It's no longer used by NixOS (replaced by dhcpcd).
This commit is contained in:
parent
0695b68c8c
commit
1d104c792b
@ -150,7 +150,6 @@
|
|||||||
./services/networking/cntlm.nix
|
./services/networking/cntlm.nix
|
||||||
./services/networking/chrony.nix
|
./services/networking/chrony.nix
|
||||||
./services/networking/ddclient.nix
|
./services/networking/ddclient.nix
|
||||||
#./services/networking/dhclient.nix
|
|
||||||
./services/networking/dhcpcd.nix
|
./services/networking/dhcpcd.nix
|
||||||
./services/networking/dhcpd.nix
|
./services/networking/dhcpd.nix
|
||||||
./services/networking/dnsmasq.nix
|
./services/networking/dnsmasq.nix
|
||||||
|
@ -1,111 +0,0 @@
|
|||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
with pkgs.lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
|
|
||||||
inherit (pkgs) nettools dhcp lib;
|
|
||||||
|
|
||||||
# Don't start dhclient on explicitly configured interfaces or on
|
|
||||||
# interfaces that are part of a bridge.
|
|
||||||
ignoredInterfaces =
|
|
||||||
map (i: i.name) (lib.filter (i: i ? ipAddress && i.ipAddress != "" ) config.networking.interfaces)
|
|
||||||
++ concatLists (attrValues (mapAttrs (n: v: v.interfaces) config.networking.bridges));
|
|
||||||
|
|
||||||
stateDir = "/var/lib/dhcp"; # Don't use /var/state/dhcp; not FHS-compliant.
|
|
||||||
|
|
||||||
dhclientExitHooks = pkgs.writeText "dhclient-exit-hooks"
|
|
||||||
''
|
|
||||||
#echo "$reason" >> /tmp/dhcp-exit
|
|
||||||
#echo "$exit_status" >> /tmp/dhcp-exit
|
|
||||||
|
|
||||||
if test "$reason" = BOUND -o "$reason" = REBOOT; then
|
|
||||||
# Restart ntpd. (The "ip-up" event below will trigger the
|
|
||||||
# restart.) We need to restart it to make sure that it will
|
|
||||||
# actually do something: if ntpd cannot resolve the server
|
|
||||||
# hostnames in its config file, then it will never do
|
|
||||||
# anything ever again ("couldn't resolve ..., giving up on
|
|
||||||
# it"), so we silently lose time synchronisation.
|
|
||||||
${config.system.build.upstart}/sbin/initctl stop ntpd
|
|
||||||
|
|
||||||
${config.system.build.upstart}/sbin/initctl emit -n ip-up
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$reason" = EXPIRE -o "$reason" = RELEASE; then
|
|
||||||
${config.system.build.upstart}/sbin/initctl emit -n ip-down
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
|
|
||||||
in
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
###### implementation
|
|
||||||
|
|
||||||
config = mkIf config.networking.useDHCP {
|
|
||||||
|
|
||||||
# dhclient barfs if /proc/net/if_inet6 doesn't exist.
|
|
||||||
boot.kernelModules = [ "ipv6" ];
|
|
||||||
|
|
||||||
jobs.dhclient =
|
|
||||||
{ startOn = "started network-interfaces";
|
|
||||||
stopOn = "stopping network-interfaces";
|
|
||||||
|
|
||||||
path = [ dhcp ];
|
|
||||||
|
|
||||||
script =
|
|
||||||
''
|
|
||||||
# Determine the interface on which to start dhclient.
|
|
||||||
interfaces=
|
|
||||||
|
|
||||||
for i in $(cd /sys/class/net && ls -d *); do
|
|
||||||
# Only run dhclient on interfaces of type ARPHRD_ETHER
|
|
||||||
# (1), i.e. Ethernet. Ignore peth* devices; on Xen,
|
|
||||||
# they're renamed physical Ethernet cards used for
|
|
||||||
# bridging. Likewise for vif* and tap* (Xen) and
|
|
||||||
# virbr* and vnet* (libvirt).
|
|
||||||
if [ "$(cat /sys/class/net/$i/type)" = 1 ]; then
|
|
||||||
if ! for j in ${toString ignoredInterfaces}; do echo $j; done | grep -F -x -q "$i" &&
|
|
||||||
! echo "$i" | grep -x -q "peth.*\|vif.*\|tap.*\|virbr.*\|vnet.*";
|
|
||||||
then
|
|
||||||
echo "Running dhclient on $i"
|
|
||||||
interfaces="$interfaces $i"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if test -z "$interfaces"; then
|
|
||||||
echo 'No interfaces on which to start dhclient!'
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -m 755 -p ${stateDir}
|
|
||||||
|
|
||||||
exec dhclient -d $interfaces -e "PATH=$PATH" -lf ${stateDir}/dhclient.leases -sf ${dhcp}/sbin/dhclient-script
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = [dhcp];
|
|
||||||
|
|
||||||
environment.etc =
|
|
||||||
[ # Dhclient hooks for emitting ip-up/ip-down events.
|
|
||||||
{ source = dhclientExitHooks;
|
|
||||||
target = "dhclient-exit-hooks";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
powerManagement.resumeCommands =
|
|
||||||
''
|
|
||||||
${config.system.build.upstart}/sbin/restart dhclient
|
|
||||||
'';
|
|
||||||
|
|
||||||
networking.interfaceMonitor.commands =
|
|
||||||
''
|
|
||||||
if [ "$status" = up ]; then
|
|
||||||
${config.system.build.upstart}/sbin/restart dhclient
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
@ -6,7 +6,7 @@ let
|
|||||||
|
|
||||||
inherit (pkgs) dhcpcd;
|
inherit (pkgs) dhcpcd;
|
||||||
|
|
||||||
# Don't start dhclient on explicitly configured interfaces or on
|
# Don't start dhcpcd on explicitly configured interfaces or on
|
||||||
# interfaces that are part of a bridge.
|
# interfaces that are part of a bridge.
|
||||||
ignoredInterfaces =
|
ignoredInterfaces =
|
||||||
map (i: i.name) (filter (i: i.ipAddress != null) (attrValues config.networking.interfaces))
|
map (i: i.name) (filter (i: i.ipAddress != null) (attrValues config.networking.interfaces))
|
||||||
|
@ -9,10 +9,7 @@ let
|
|||||||
cfg = config.networking.interfaceMonitor;
|
cfg = config.networking.interfaceMonitor;
|
||||||
|
|
||||||
# The ifplugd action script, which is called whenever the link
|
# The ifplugd action script, which is called whenever the link
|
||||||
# status changes (i.e., a cable is plugged in or unplugged). We do
|
# status changes (i.e., a cable is plugged in or unplugged).
|
||||||
# nothing when a cable is unplugged. When a cable is plugged in, we
|
|
||||||
# restart dhclient, which will hopefully give us a new IP address
|
|
||||||
# if appropriate.
|
|
||||||
plugScript = pkgs.writeScript "ifplugd.action"
|
plugScript = pkgs.writeScript "ifplugd.action"
|
||||||
''
|
''
|
||||||
#! ${pkgs.stdenv.shell}
|
#! ${pkgs.stdenv.shell}
|
||||||
@ -30,17 +27,19 @@ in
|
|||||||
options = {
|
options = {
|
||||||
|
|
||||||
networking.interfaceMonitor.enable = mkOption {
|
networking.interfaceMonitor.enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description = ''
|
description = ''
|
||||||
If <literal>true</literal>, monitor Ethernet interfaces for
|
If <literal>true</literal>, monitor Ethernet interfaces for
|
||||||
cables being plugged in or unplugged. When this occurs, the
|
cables being plugged in or unplugged. When this occurs, the
|
||||||
<command>dhclient</command> service is restarted to
|
commands specified in
|
||||||
automatically obtain a new IP address. This is useful for
|
<option>networking.interfaceMonitor.commands</option> are
|
||||||
roaming users (laptops).
|
executed.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
networking.interfaceMonitor.beep = mkOption {
|
networking.interfaceMonitor.beep = mkOption {
|
||||||
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description = ''
|
description = ''
|
||||||
If <literal>true</literal>, beep when an Ethernet cable is
|
If <literal>true</literal>, beep when an Ethernet cable is
|
||||||
@ -49,6 +48,7 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
networking.interfaceMonitor.commands = mkOption {
|
networking.interfaceMonitor.commands = mkOption {
|
||||||
|
type = types.lines;
|
||||||
default = "";
|
default = "";
|
||||||
description = ''
|
description = ''
|
||||||
Shell commands to be executed when the link status of an
|
Shell commands to be executed when the link status of an
|
||||||
|
@ -427,7 +427,7 @@ in
|
|||||||
|
|
||||||
# Set the host and domain names in the activation script. Don't
|
# Set the host and domain names in the activation script. Don't
|
||||||
# clear it if it's not configured in the NixOS configuration,
|
# clear it if it's not configured in the NixOS configuration,
|
||||||
# since it may have been set by dhclient in the meantime.
|
# since it may have been set by dhcpcd in the meantime.
|
||||||
system.activationScripts.hostname =
|
system.activationScripts.hostname =
|
||||||
optionalString (config.networking.hostName != "") ''
|
optionalString (config.networking.hostName != "") ''
|
||||||
hostname "${config.networking.hostName}"
|
hostname "${config.networking.hostName}"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user