From 1d104c792beff1eff7228d636ba149ed27325aa1 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 29 Oct 2013 17:34:43 +0100 Subject: [PATCH] Remove the dhclient module It's no longer used by NixOS (replaced by dhcpcd). --- nixos/modules/module-list.nix | 1 - .../modules/services/networking/dhclient.nix | 111 ------------------ nixos/modules/services/networking/dhcpcd.nix | 2 +- nixos/modules/services/networking/ifplugd.nix | 14 +-- nixos/modules/tasks/network-interfaces.nix | 2 +- 5 files changed, 9 insertions(+), 121 deletions(-) delete mode 100644 nixos/modules/services/networking/dhclient.nix diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index b0126b721db5..8b76e1f21cba 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -150,7 +150,6 @@ ./services/networking/cntlm.nix ./services/networking/chrony.nix ./services/networking/ddclient.nix - #./services/networking/dhclient.nix ./services/networking/dhcpcd.nix ./services/networking/dhcpd.nix ./services/networking/dnsmasq.nix diff --git a/nixos/modules/services/networking/dhclient.nix b/nixos/modules/services/networking/dhclient.nix deleted file mode 100644 index 1e3434438997..000000000000 --- a/nixos/modules/services/networking/dhclient.nix +++ /dev/null @@ -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 - ''; - - }; - -} diff --git a/nixos/modules/services/networking/dhcpcd.nix b/nixos/modules/services/networking/dhcpcd.nix index 48803511a5ea..07b5606eacaa 100644 --- a/nixos/modules/services/networking/dhcpcd.nix +++ b/nixos/modules/services/networking/dhcpcd.nix @@ -6,7 +6,7 @@ let 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. ignoredInterfaces = map (i: i.name) (filter (i: i.ipAddress != null) (attrValues config.networking.interfaces)) diff --git a/nixos/modules/services/networking/ifplugd.nix b/nixos/modules/services/networking/ifplugd.nix index df50e9807a90..4e939d603542 100644 --- a/nixos/modules/services/networking/ifplugd.nix +++ b/nixos/modules/services/networking/ifplugd.nix @@ -9,10 +9,7 @@ let cfg = config.networking.interfaceMonitor; # The ifplugd action script, which is called whenever the link - # status changes (i.e., a cable is plugged in or unplugged). We do - # 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. + # status changes (i.e., a cable is plugged in or unplugged). plugScript = pkgs.writeScript "ifplugd.action" '' #! ${pkgs.stdenv.shell} @@ -30,17 +27,19 @@ in options = { networking.interfaceMonitor.enable = mkOption { + type = types.bool; default = false; description = '' If true, monitor Ethernet interfaces for cables being plugged in or unplugged. When this occurs, the - dhclient service is restarted to - automatically obtain a new IP address. This is useful for - roaming users (laptops). + commands specified in + are + executed. ''; }; networking.interfaceMonitor.beep = mkOption { + type = types.bool; default = false; description = '' If true, beep when an Ethernet cable is @@ -49,6 +48,7 @@ in }; networking.interfaceMonitor.commands = mkOption { + type = types.lines; default = ""; description = '' Shell commands to be executed when the link status of an diff --git a/nixos/modules/tasks/network-interfaces.nix b/nixos/modules/tasks/network-interfaces.nix index 16671cb37437..796da3020ed2 100644 --- a/nixos/modules/tasks/network-interfaces.nix +++ b/nixos/modules/tasks/network-interfaces.nix @@ -427,7 +427,7 @@ in # Set the host and domain names in the activation script. Don't # 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 = optionalString (config.networking.hostName != "") '' hostname "${config.networking.hostName}"