* Latest dhcp.
* Dhcp client script: create resolv.conf even if the DHCP server doesn't provide a domain name, only a list of name servers. (The QEMU DHCP server does this.) svn path=/nixpkgs/trunk/; revision=7920
This commit is contained in:
parent
b8057ff11a
commit
7f1a438ca8
|
@ -2,23 +2,15 @@ source $stdenv/setup
|
||||||
|
|
||||||
export DESTDIR=$out
|
export DESTDIR=$out
|
||||||
|
|
||||||
|
configurePhase=configurePhase
|
||||||
configurePhase() {
|
configurePhase() {
|
||||||
./configure
|
./configure
|
||||||
prefix=$out
|
prefix=$out
|
||||||
}
|
|
||||||
|
|
||||||
preBuild() {
|
|
||||||
sed -e "s^@nettools\@^$nettools^g" \
|
|
||||||
-e "s^@coreutils\@^$coreutils^g" \
|
|
||||||
-e "s^@bash\@^$bash^g" \
|
|
||||||
-e "s^@iputils\@^$iputils^g" \
|
|
||||||
-e "s^@gnused\@^$gnused^g" \
|
|
||||||
< client/scripts/linux > client/scripts/linux.tmp
|
|
||||||
mv client/scripts/linux.tmp client/scripts/linux
|
|
||||||
}
|
}
|
||||||
|
|
||||||
preBuild=preBuild
|
preBuild=preBuild
|
||||||
|
preBuild() {
|
||||||
configurePhase=configurePhase
|
substituteInPlace client/scripts/linux --replace /bin/bash $shell
|
||||||
|
}
|
||||||
|
|
||||||
genericBuild
|
genericBuild
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
{stdenv, fetchurl, groff, nettools, coreutils, iputils, gnused, bash}:
|
{stdenv, fetchurl, groff, nettools, coreutils, iputils, gnused, bash}:
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "dhcp-3.0.4";
|
name = "dhcp-3.0.5";
|
||||||
builder=./builder.sh;
|
builder=./builder.sh;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = http://nix.cs.uu.nl/dist/tarballs/dhcp-3.0.4.tar.gz;
|
url = http://ftp.isc.org/isc/dhcp/dhcp-3.0.5.tar.gz;
|
||||||
md5 = "004ef935fd54b8046b16bdde31a9e151";
|
sha256 = "1dpz6y08vrn3mw0lrlwq1sfiq6nsixpwwgb9hngddka1lfr5yi6x";
|
||||||
};
|
};
|
||||||
buildInputs = [groff];
|
buildInputs = [groff];
|
||||||
inherit nettools coreutils iputils gnused bash;
|
inherit nettools coreutils iputils gnused bash;
|
||||||
patches = [./dhcp-3.0.3-path.patch ./dhcp-3.0.3-bash.patch];
|
patches = [./resolv-without-domain.patch];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
diff -ruN dhcp-3.0.3/client/scripts/linux dhcp-3.0.3.new/client/scripts/linux
|
|
||||||
--- dhcp-3.0.3/client/scripts/linux 2002-11-15 02:09:09.000000000 +0100
|
|
||||||
+++ dhcp-3.0.3.new/client/scripts/linux 2005-10-16 22:42:09.000000000 +0200
|
|
||||||
@@ -1,4 +1,4 @@
|
|
||||||
-#!/bin/bash
|
|
||||||
+#!@bash@/bin/bash
|
|
||||||
# dhclient-script for Linux. Dan Halbert, March, 1997.
|
|
||||||
# Updated for Linux 2.[12] by Brian J. Murrell, January 1999.
|
|
||||||
# No guarantees about this. I'm a novice at the details of Linux
|
|
|
@ -1,166 +0,0 @@
|
||||||
diff -ruN dhcp-3.0.3/client/scripts/linux dhcp-3.0.3.new/client/scripts/linux
|
|
||||||
--- dhcp-3.0.3/client/scripts/linux 2002-11-15 02:09:09.000000000 +0100
|
|
||||||
+++ dhcp-3.0.3.new/client/scripts/linux 2005-10-12 22:12:20.000000000 +0200
|
|
||||||
@@ -25,7 +25,7 @@
|
|
||||||
make_resolv_conf() {
|
|
||||||
if [ "x$new_domain_name" != x ] && [ x"$new_domain_name_servers" != x ]; then
|
|
||||||
echo search $new_domain_name >/etc/resolv.conf
|
|
||||||
- chmod 644 /etc/resolv.conf
|
|
||||||
+ @coreutils@/bin/chmod 644 /etc/resolv.conf
|
|
||||||
for nameserver in $new_domain_name_servers; do
|
|
||||||
echo nameserver $nameserver >>/etc/resolv.conf
|
|
||||||
done
|
|
||||||
@@ -53,10 +53,10 @@
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
-release=`uname -r`
|
|
||||||
-release=`expr $release : '\(.*\)\..*'`
|
|
||||||
-relminor=`echo $release |sed -e 's/[0-9]*\.\([0-9][0-9]*\)\(\..*\)*$/\1/'`
|
|
||||||
-relmajor=`echo $release |sed -e 's/\([0-9][0-9]*\)\..*$/\1/'`
|
|
||||||
+release=`@coreutils@/bin/uname -r`
|
|
||||||
+release=`@coreutils@/bin/expr $release : '\(.*\)\..*'`
|
|
||||||
+relminor=`echo $release |@gnused@/bin/sed -e 's/[0-9]*\.\([0-9][0-9]*\)\(\..*\)*$/\1/'`
|
|
||||||
+relmajor=`echo $release |@gnused@/bin/sed -e 's/\([0-9][0-9]*\)\..*$/\1/'`
|
|
||||||
|
|
||||||
if [ x$new_broadcast_address != x ]; then
|
|
||||||
new_broadcast_arg="broadcast $new_broadcast_address"
|
|
||||||
@@ -82,20 +82,20 @@
|
|
||||||
if [ x$reason = xPREINIT ]; then
|
|
||||||
if [ x$alias_ip_address != x ]; then
|
|
||||||
# Bring down alias interface. Its routes will disappear too.
|
|
||||||
- ifconfig $interface:0- inet 0
|
|
||||||
+ @nettools@/sbin/ifconfig $interface:0- inet 0
|
|
||||||
fi
|
|
||||||
if [ $relmajor -lt 2 ] || ( [ $relmajor -eq 2 ] && [ $relminor -eq 0 ] )
|
|
||||||
then
|
|
||||||
- ifconfig $interface inet 0.0.0.0 netmask 0.0.0.0 \
|
|
||||||
+ @nettools@/sbin/ifconfig $interface inet 0.0.0.0 netmask 0.0.0.0 \
|
|
||||||
broadcast 255.255.255.255 up
|
|
||||||
# Add route to make broadcast work. Do not omit netmask.
|
|
||||||
- route add default dev $interface netmask 0.0.0.0
|
|
||||||
+ @nettools@/sbin/route add default dev $interface netmask 0.0.0.0
|
|
||||||
else
|
|
||||||
- ifconfig $interface 0 up
|
|
||||||
+ @nettools@/sbin/ifconfig $interface 0 up
|
|
||||||
fi
|
|
||||||
|
|
||||||
# We need to give the kernel some time to get the interface up.
|
|
||||||
- sleep 1
|
|
||||||
+ @coreutils@/bin/sleep 1
|
|
||||||
|
|
||||||
exit_with_hooks 0
|
|
||||||
fi
|
|
||||||
@@ -106,45 +106,45 @@
|
|
||||||
|
|
||||||
if [ x$reason = xBOUND ] || [ x$reason = xRENEW ] || \
|
|
||||||
[ x$reason = xREBIND ] || [ x$reason = xREBOOT ]; then
|
|
||||||
- current_hostname=`hostname`
|
|
||||||
+ current_hostname=`@nettools@/bin/hostname`
|
|
||||||
if [ x$current_hostname = x ] || \
|
|
||||||
[ x$current_hostname = x$old_host_name ]; then
|
|
||||||
if [ x$current_hostname = x ] || \
|
|
||||||
[ x$new_host_name != x$old_host_name ]; then
|
|
||||||
- hostname $new_host_name
|
|
||||||
+ @nettools@/bin/hostname $new_host_name
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ x$old_ip_address != x ] && [ x$alias_ip_address != x ] && \
|
|
||||||
[ x$alias_ip_address != x$old_ip_address ]; then
|
|
||||||
# Possible new alias. Remove old alias.
|
|
||||||
- ifconfig $interface:0- inet 0
|
|
||||||
+ @nettools@/sbin/ifconfig $interface:0- inet 0
|
|
||||||
fi
|
|
||||||
if [ x$old_ip_address != x ] && [ x$old_ip_address != x$new_ip_address ]; then
|
|
||||||
# IP address changed. Bringing down the interface will delete all routes,
|
|
||||||
# and clear the ARP cache.
|
|
||||||
- ifconfig $interface inet 0 down
|
|
||||||
+ @nettools@/sbin/ifconfig $interface inet 0 down
|
|
||||||
|
|
||||||
fi
|
|
||||||
if [ x$old_ip_address = x ] || [ x$old_ip_address != x$new_ip_address ] || \
|
|
||||||
[ x$reason = xBOUND ] || [ x$reason = xREBOOT ]; then
|
|
||||||
|
|
||||||
- ifconfig $interface inet $new_ip_address $new_subnet_arg \
|
|
||||||
+ @nettools@/sbin/ifconfig $interface inet $new_ip_address $new_subnet_arg \
|
|
||||||
$new_broadcast_arg
|
|
||||||
# Add a network route to the computed network address.
|
|
||||||
if [ $relmajor -lt 2 ] || \
|
|
||||||
( [ $relmajor -eq 2 ] && [ $relminor -eq 0 ] ); then
|
|
||||||
- route add -net $new_network_number $new_subnet_arg dev $interface
|
|
||||||
+ @nettools@/sbin/route add -net $new_network_number $new_subnet_arg dev $interface
|
|
||||||
fi
|
|
||||||
for router in $new_routers; do
|
|
||||||
- route add default gw $router
|
|
||||||
+ @nettools@/sbin/route add default gw $router
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
if [ x$new_ip_address != x$alias_ip_address ] && [ x$alias_ip_address != x ];
|
|
||||||
then
|
|
||||||
- ifconfig $interface:0- inet 0
|
|
||||||
- ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
|
|
||||||
- route add -host $alias_ip_address $interface:0
|
|
||||||
+ @nettools@/sbin/ifconfig $interface:0- inet 0
|
|
||||||
+ @nettools@/sbin/ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
|
|
||||||
+ @nettools@/sbin/route add -host $alias_ip_address $interface:0
|
|
||||||
fi
|
|
||||||
make_resolv_conf
|
|
||||||
exit_with_hooks 0
|
|
||||||
@@ -154,44 +154,44 @@
|
|
||||||
|| [ x$reason = xSTOP ]; then
|
|
||||||
if [ x$alias_ip_address != x ]; then
|
|
||||||
# Turn off alias interface.
|
|
||||||
- ifconfig $interface:0- inet 0
|
|
||||||
+ @nettools@/sbin/ifconfig $interface:0- inet 0
|
|
||||||
fi
|
|
||||||
if [ x$old_ip_address != x ]; then
|
|
||||||
# Shut down interface, which will delete routes and clear arp cache.
|
|
||||||
- ifconfig $interface inet 0 down
|
|
||||||
+ @nettools@/sbin/ifconfig $interface inet 0 down
|
|
||||||
fi
|
|
||||||
if [ x$alias_ip_address != x ]; then
|
|
||||||
- ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
|
|
||||||
- route add -host $alias_ip_address $interface:0
|
|
||||||
+ @nettools@/sbin/ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
|
|
||||||
+ @nettools@/sbin/route add -host $alias_ip_address $interface:0
|
|
||||||
fi
|
|
||||||
exit_with_hooks 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ x$reason = xTIMEOUT ]; then
|
|
||||||
if [ x$alias_ip_address != x ]; then
|
|
||||||
- ifconfig $interface:0- inet 0
|
|
||||||
+ @nettools@/sbin/ifconfig $interface:0- inet 0
|
|
||||||
fi
|
|
||||||
- ifconfig $interface inet $new_ip_address $new_subnet_arg \
|
|
||||||
+ @nettools@/sbin/ifconfig $interface inet $new_ip_address $new_subnet_arg \
|
|
||||||
$new_broadcast_arg
|
|
||||||
set $new_routers
|
|
||||||
############## what is -w in ping?
|
|
||||||
- if ping -q -c 1 $1; then
|
|
||||||
+ if @iputils@/bin/ping -q -c 1 $1; then
|
|
||||||
if [ x$new_ip_address != x$alias_ip_address ] && \
|
|
||||||
[ x$alias_ip_address != x ]; then
|
|
||||||
- ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
|
|
||||||
- route add -host $alias_ip_address dev $interface:0
|
|
||||||
+ @nettools@/sbin/ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
|
|
||||||
+ @nettools@/sbin/route add -host $alias_ip_address dev $interface:0
|
|
||||||
fi
|
|
||||||
if [ $relmajor -lt 2 ] || \
|
|
||||||
( [ $relmajor -eq 2 ] && [ $relminor -eq 0 ] ); then
|
|
||||||
- route add -net $new_network_number
|
|
||||||
+ @nettools@/sbin/route add -net $new_network_number
|
|
||||||
fi
|
|
||||||
for router in $new_routers; do
|
|
||||||
- route add default gw $router
|
|
||||||
+ @nettools@/sbin/route add default gw $router
|
|
||||||
done
|
|
||||||
make_resolv_conf
|
|
||||||
exit_with_hooks 0
|
|
||||||
fi
|
|
||||||
- ifconfig $interface inet 0 down
|
|
||||||
+ @nettools@/sbin/ifconfig $interface inet 0 down
|
|
||||||
exit_with_hooks 1
|
|
||||||
fi
|
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
diff -rc dhcp-3.0.5-orig/client/scripts/linux dhcp-3.0.5/client/scripts/linux
|
||||||
|
*** dhcp-3.0.5-orig/client/scripts/linux Fri Nov 15 02:09:09 2002
|
||||||
|
--- dhcp-3.0.5/client/scripts/linux Tue Feb 20 15:02:34 2007
|
||||||
|
***************
|
||||||
|
*** 23,31 ****
|
||||||
|
# of the $1 in its args.
|
||||||
|
|
||||||
|
make_resolv_conf() {
|
||||||
|
! if [ "x$new_domain_name" != x ] && [ x"$new_domain_name_servers" != x ]; then
|
||||||
|
! echo search $new_domain_name >/etc/resolv.conf
|
||||||
|
chmod 644 /etc/resolv.conf
|
||||||
|
for nameserver in $new_domain_name_servers; do
|
||||||
|
echo nameserver $nameserver >>/etc/resolv.conf
|
||||||
|
done
|
||||||
|
--- 23,34 ----
|
||||||
|
# of the $1 in its args.
|
||||||
|
|
||||||
|
make_resolv_conf() {
|
||||||
|
! if [ x"$new_domain_name_servers" != x ]; then
|
||||||
|
! echo -n >/etc/resolv.conf
|
||||||
|
chmod 644 /etc/resolv.conf
|
||||||
|
+ if [ "x$new_domain_name" != x ]; then
|
||||||
|
+ echo search $new_domain_name >>/etc/resolv.conf
|
||||||
|
+ fi
|
||||||
|
for nameserver in $new_domain_name_servers; do
|
||||||
|
echo nameserver $nameserver >>/etc/resolv.conf
|
||||||
|
done
|
Loading…
Reference in New Issue