* Move the dhclient exit hooks file to the dhclient module, where it
belongs. svn path=/nixos/branches/modular-nixos/; revision=15755
This commit is contained in:
parent
3c6ae39a0d
commit
05a08adf91
@ -109,14 +109,6 @@ let
|
|||||||
target = "default/useradd";
|
target = "default/useradd";
|
||||||
}
|
}
|
||||||
|
|
||||||
{ # Dhclient hooks for emitting ip-up/ip-down events.
|
|
||||||
source = pkgs.substituteAll {
|
|
||||||
src = ./dhclient-exit-hooks;
|
|
||||||
inherit (pkgs) upstart glibc;
|
|
||||||
};
|
|
||||||
target = "dhclient-exit-hooks";
|
|
||||||
}
|
|
||||||
|
|
||||||
{ # Script executed when the shell starts as a non-login shell (system-wide version).
|
{ # Script executed when the shell starts as a non-login shell (system-wide version).
|
||||||
source = pkgs.substituteAll {
|
source = pkgs.substituteAll {
|
||||||
src = ./bashrc.sh;
|
src = ./bashrc.sh;
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
echo "$reason" >> /tmp/dhcp-exit
|
|
||||||
echo "$exit_status" >> /tmp/dhcp-exit
|
|
||||||
|
|
||||||
if test "$reason" = BOUND -o "$reason" = REBOOT; then
|
|
||||||
@glibc@/sbin/nscd --invalidate hosts
|
|
||||||
@upstart@/sbin/initctl emit ip-up
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$reason" = EXPIRE -o "$reason" = RELEASE; then
|
|
||||||
@upstart@/sbin/initctl emit ip-down
|
|
||||||
fi
|
|
@ -38,6 +38,7 @@ in
|
|||||||
|
|
||||||
###### implementation
|
###### implementation
|
||||||
let
|
let
|
||||||
|
|
||||||
ifEnable = arg:
|
ifEnable = arg:
|
||||||
if config.networking.useDHCP then arg
|
if config.networking.useDHCP then arg
|
||||||
else if builtins.isList arg then []
|
else if builtins.isList arg then []
|
||||||
@ -51,6 +52,22 @@ let
|
|||||||
map (i: i.name) (lib.filter (i: i ? ipAddress) config.networking.interfaces);
|
map (i: i.name) (lib.filter (i: i ? ipAddress) config.networking.interfaces);
|
||||||
|
|
||||||
stateDir = "/var/lib/dhcp"; # Don't use /var/state/dhcp; not FHS-compliant.
|
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
|
||||||
|
${pkgs.glibc}/sbin/nscd --invalidate hosts
|
||||||
|
${pkgs.upstart}/sbin/initctl emit ip-up
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$reason" = EXPIRE -o "$reason" = RELEASE; then
|
||||||
|
${pkgs.upstart}/sbin/initctl emit ip-down
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -59,14 +76,13 @@ in
|
|||||||
options
|
options
|
||||||
];
|
];
|
||||||
|
|
||||||
services = {
|
services.extraJobs = ifEnable [{
|
||||||
extraJobs = ifEnable [{
|
|
||||||
name = "dhclient";
|
name = "dhclient";
|
||||||
|
|
||||||
extraPath = [dhcp];
|
extraPath = [dhcp];
|
||||||
|
|
||||||
job = "
|
job = ''
|
||||||
description \"DHCP client\"
|
description "DHCP client"
|
||||||
|
|
||||||
start on network-interfaces/started
|
start on network-interfaces/started
|
||||||
stop on network-interfaces/stop
|
stop on network-interfaces/stop
|
||||||
@ -80,23 +96,30 @@ script
|
|||||||
interfaces=
|
interfaces=
|
||||||
|
|
||||||
for i in $(cd /sys/class/net && ls -d *); do
|
for i in $(cd /sys/class/net && ls -d *); do
|
||||||
if ! for j in ${toString ignoredInterfaces}; do echo $j; done | grep -F -x -q \"$i\"; then
|
if ! for j in ${toString ignoredInterfaces}; do echo $j; done | grep -F -x -q "$i"; then
|
||||||
echo \"Running dhclient on $i\"
|
echo "Running dhclient on $i"
|
||||||
interfaces=\"$interfaces $i\"
|
interfaces="$interfaces $i"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if test -z \"$interfaces\"; then
|
if test -z "$interfaces"; then
|
||||||
echo 'No interfaces on which to start dhclient!'
|
echo 'No interfaces on which to start dhclient!'
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -m 755 -p ${stateDir}
|
mkdir -m 755 -p ${stateDir}
|
||||||
|
|
||||||
exec ${dhcp}/sbin/dhclient -d $interfaces -e \"PATH=$PATH\" -lf ${stateDir}/dhclient.leases
|
exec ${dhcp}/sbin/dhclient -d $interfaces -e "PATH=$PATH" -lf ${stateDir}/dhclient.leases
|
||||||
end script
|
end script
|
||||||
";
|
'';
|
||||||
}];
|
}];
|
||||||
};
|
|
||||||
|
environment.etc = ifEnable
|
||||||
|
[ # Dhclient hooks for emitting ip-up/ip-down events.
|
||||||
|
{ source = dhclientExitHooks;
|
||||||
|
target = "dhclient-exit-hooks";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ let
|
|||||||
echo Duplicate entry: $i;
|
echo Duplicate entry: $i;
|
||||||
fi;
|
fi;
|
||||||
done
|
done
|
||||||
'';
|
''; # */
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user