summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2006-11-19 22:05:49 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2006-11-19 22:05:49 +0000
commit369b48eadf00c84db2cb8b6524cd49190744a06f (patch)
tree5d97fbfc41a976fb60bbfa01ce004b52dd563b0d
parent70aca5974c480e7163a6275a5d5f3ea1e7681593 (diff)
downloadnixpkgs-369b48eadf00c84db2cb8b6524cd49190744a06f.tar
nixpkgs-369b48eadf00c84db2cb8b6524cd49190744a06f.tar.gz
nixpkgs-369b48eadf00c84db2cb8b6524cd49190744a06f.tar.bz2
nixpkgs-369b48eadf00c84db2cb8b6524cd49190744a06f.tar.lz
nixpkgs-369b48eadf00c84db2cb8b6524cd49190744a06f.tar.xz
nixpkgs-369b48eadf00c84db2cb8b6524cd49190744a06f.tar.zst
nixpkgs-369b48eadf00c84db2cb8b6524cd49190744a06f.zip
* Start dhclient as an Upstart job.
svn path=/nixu/trunk/; revision=7078
-rw-r--r--test/boot-environment.nix6
-rw-r--r--test/boot-stage-2-init.sh7
-rw-r--r--test/boot-stage-2.nix3
-rw-r--r--test/upstart-jobs/dhclient.nix29
4 files changed, 36 insertions, 9 deletions
diff --git a/test/boot-environment.nix b/test/boot-environment.nix
index dcf29322139..a32ebd48c72 100644
--- a/test/boot-environment.nix
+++ b/test/boot-environment.nix
@@ -86,6 +86,11 @@ rec {
       (import ./upstart-jobs/syslogd.nix {
         inherit (pkgs) sysklogd;
       })
+
+      # DHCP client.
+      (import ./upstart-jobs/dhclient.nix {
+        dhcp = pkgs.dhcpWrapper;
+      })
     ]
 
     # The terminals on ttyX.
@@ -115,7 +120,6 @@ rec {
       nettools upstart;
     inherit upstartJobs;
     shell = pkgs.bash + "/bin/sh";
-    dhcp = pkgs.dhcpWrapper;
 
     # Additional stuff; add whatever you want here.
     path = [
diff --git a/test/boot-stage-2-init.sh b/test/boot-stage-2-init.sh
index 5f68fea82cd..96d92b1ba77 100644
--- a/test/boot-stage-2-init.sh
+++ b/test/boot-stage-2-init.sh
@@ -86,12 +86,7 @@ done
 modprobe af_packet
 for i in $(cd /sys/class/net && ls -d *); do
     echo "Bringing up network device $i..."
-    if ifconfig $i up; then
-        if test "$i" != "lo"; then
-            mkdir -p /var/state/dhcp
-            dhclient $i
-        fi
-    fi
+    ifconfig $i up
 done
 
 
diff --git a/test/boot-stage-2.nix b/test/boot-stage-2.nix
index 9b37d4cd6f3..a7d22c3fb79 100644
--- a/test/boot-stage-2.nix
+++ b/test/boot-stage-2.nix
@@ -1,6 +1,6 @@
 { genericSubstituter, shell, coreutils, findutils
 , utillinux, kernel, udev
-, module_init_tools, nettools, dhcp, upstart
+, module_init_tools, nettools, upstart
 , path ? []
 
 , # Whether the root device is root only.  If so, we'll mount a
@@ -22,7 +22,6 @@ genericSubstituter {
     udev
     module_init_tools
     nettools
-    dhcp
     upstart
   ];
   extraPath = path;
diff --git a/test/upstart-jobs/dhclient.nix b/test/upstart-jobs/dhclient.nix
new file mode 100644
index 00000000000..8a5c4fe9a5f
--- /dev/null
+++ b/test/upstart-jobs/dhclient.nix
@@ -0,0 +1,29 @@
+{dhcp}:
+
+{
+  name = "dhclient";
+  
+  job = "
+description \"DHCP client\"
+
+start on startup
+stop on shutdown
+
+script
+    interfaces=
+    for i in $(cd /sys/class/net && ls -d *); do
+        if test \"$i\" != \"lo\" -a \"$(cat /sys/class/net/$i/operstate)\" != 'down'; then
+            interfaces=\"$interfaces $i\"
+        fi
+    done
+
+    if test -z \"$interfaces\"; then
+        echo 'No interfaces on which to start dhclient!'
+        exit 1
+    fi
+
+    exec ${dhcp}/sbin/dhclient -d $interfaces
+end script
+  ";
+  
+}