copied from ArchLinux

http://repos.archlinux.org/wsvn/packages/dhcp/trunk/
This commit is contained in:
Mark Lamourine 2010-08-21 17:15:47 -07:00
parent 75baf13aae
commit 39766dd6de
6 changed files with 291 additions and 0 deletions

77
extra/dhcp/PKGBUILD Normal file
View file

@ -0,0 +1,77 @@
# $Id: PKGBUILD 85736 2010-07-19 02:41:06Z kevin $
# Maintainer: judd <jvinet@zeroflux.org>
pkgbase=dhcp
pkgname=('dhcp'
'dhclient')
# separate patch levels with a period to maintain proper versioning.
pkgver=4.2.0
_pkgver=4.2.0
pkgrel=1
arch=('i686' 'x86_64' 'arm')
license=('custom:isc-dhcp')
url="https://www.isc.org/software/dhcp"
source=(http://ftp.isc.org/isc/${pkgname}/${pkgname}-${_pkgver}.tar.gz
dhcpd dhcp.conf.d dhcp-4.1.1-missing-ipv6-not-fatal.patch dhclient-script-pathFixes.patch)
md5sums=('83abd7c4f9c24d8dd024ca5a71380c0a'
'df22cffa7d7415ece7bb025b7bf774dd'
'49da3192e5c885e3c7d02f447c2dea5e'
'fd64aeb4f399dcc41ea43089a3811094'
'ddcc5cd576ec631ade6c4da21952b50b')
build() {
cd ${srcdir}/${pkgname}-${_pkgver}
# Define _GNU_SOURCE to fix IPV6.
sed '/^CFLAGS="$CFLAGS/ s/INGS"/INGS -D_GNU_SOURCE"/' -i configure
# Make not having ipv6 non-fatal.
patch -Np0 -i ${srcdir}/dhcp-4.1.1-missing-ipv6-not-fatal.patch
./configure --prefix=/usr --sysconfdir=/etc \
--with-srv-lease-file=/var/state/dhcp/dhcpd.leases \
--with-srv6-lease-file=/var/state/dhcp/dhcpd6.leases
make || return 1
}
package_dhcp(){
pkgdesc="A DHCP server, client, and relay agent"
depends=('openssl>=0.9.8a')
backup=('etc/dhcpd.conf' 'etc/conf.d/dhcp')
install=dhcp.install
cd ${srcdir}/${pkgname}-${_pkgver}
make DESTDIR=${pkgdir} install
install -D -m755 ${srcdir}/dhcpd ${pkgdir}/etc/rc.d/dhcpd
install -D -m644 ${srcdir}/dhcp.conf.d ${pkgdir}/etc/conf.d/${pkgbase}
mkdir -p ${pkgdir}/var/state/dhcp
rm -f ${pkgdir}/etc/dhclient.conf
rm -f ${pkgdir}/usr/sbin/dhclient
rm -f ${pkgdir}/usr/share/man/man{5,8}/dhclient*
# install licenses
install -m644 -D ${srcdir}/${pkgbase}-${_pkgver}/LICENSE \
${pkgdir}/usr/share/licenses/dhcp/LICENSE
}
package_dhclient(){
pkgdesc="dhclient is standalone client from the dhcp package"
depends=('bash')
cd ${srcdir}/${pkgname}-${_pkgver}/client/scripts
patch -Np1 -i ${srcdir}/dhclient-script-pathFixes.patch linux || return 1
cd ${srcdir}/${pkgname}-${_pkgver}/client
make DESTDIR=${pkgdir} install
install -m755 -d ${startdir}/pkg/var/lib/dhclient
#not needed after fresh install
rm -f ${pkgdir}/var/lib/dhclient/dhcpd.leases
#move dhclient.conf to dhclient.conf.example
mv ${pkgdir}/etc/dhclient.conf ${pkgdir}/etc/dhclient.conf.example
# install dhclient linux script
mkdir ${pkgdir}/sbin
install -m755 -D ${srcdir}/${pkgname}-${_pkgver}/client/scripts/linux \
${pkgdir}/sbin/dhclient-script
# install licenses
install -m644 -D ${srcdir}/${pkgname}-${_pkgver}/LICENSE \
${pkgdir}/usr/share/licenses/dhclient/LICENSE
}

View file

@ -0,0 +1,118 @@
--- linux 2009-04-21 16:21:09.000000000 +0200
+++ linux_new 2010-06-30 19:06:20.000000000 +0200
@@ -23,7 +23,7 @@
# of the $1 in its args.
# 'ip' just looks too weird. /sbin/ip looks less weird.
-ip=/sbin/ip
+ip=/usr/sbin/ip
make_resolv_conf() {
if [ x"$new_domain_name_servers" != x ]; then
@@ -112,9 +112,9 @@
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
+ /sbin/ifconfig $interface:0- inet 0
fi
- ifconfig $interface 0 up
+ /sbin/ifconfig $interface 0 up
# We need to give the kernel some time to get the interface up.
sleep 1
@@ -141,32 +141,32 @@
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
+ /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
+ /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 \
+ /sbin/ifconfig $interface inet $new_ip_address $new_subnet_arg \
$new_broadcast_arg $mtu_arg
# Add a network route to the computed network address.
for router in $new_routers; do
if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then
- route add -host $router dev $interface
+ /sbin/route add -host $router dev $interface
fi
- route add default gw $router $metric_arg dev $interface
+ /sbin/route add default gw $router $metric_arg dev $interface
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
+ /sbin/ifconfig $interface:0- inet 0
+ /sbin/ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
+ /sbin/route add -host $alias_ip_address $interface:0
fi
make_resolv_conf
exit_with_hooks 0
@@ -176,42 +176,42 @@
|| [ x$reason = xSTOP ]; then
if [ x$alias_ip_address != x ]; then
# Turn off alias interface.
- ifconfig $interface:0- inet 0
+ /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
+ /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
+ /sbin/ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
+ /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
+ /sbin/ifconfig $interface:0- inet 0
fi
- ifconfig $interface inet $new_ip_address $new_subnet_arg \
+ /sbin/ifconfig $interface inet $new_ip_address $new_subnet_arg \
$new_broadcast_arg $mtu_arg
set $new_routers
if 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
+ /sbin/ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
+ /sbin/route add -host $alias_ip_address dev $interface:0
fi
for router in $new_routers; do
if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then
- route add -host $router dev $interface
+ /sbin/route add -host $router dev $interface
fi
- route add default gw $router $metric_arg dev $interface
+ /sbin/route add default gw $router $metric_arg dev $interface
done
make_resolv_conf
exit_with_hooks 0
fi
- ifconfig $interface inet 0 down
+ /sbin/ifconfig $interface inet 0 down
exit_with_hooks 1
fi

View file

@ -0,0 +1,39 @@
--- common/discover.c 2009-09-29 21:44:49.000000000 +0200
+++ common/discover.c_new 2010-06-30 19:40:02.000000000 +0200
@@ -443,7 +443,7 @@
}
#ifdef DHCPv6
- if (local_family == AF_INET6) {
+ if ((local_family == AF_INET6) && !access("/proc/net/if_inet6", R_OK)) {
ifaces->fp6 = fopen("/proc/net/if_inet6", "r");
if (ifaces->fp6 == NULL) {
log_error("Error opening '/proc/net/if_inet6' to "
@@ -454,6 +454,8 @@
ifaces->fp = NULL;
return 0;
}
+ } else {
+ ifaces->fp6 = NULL;
}
#endif
@@ -721,7 +723,7 @@
return 1;
}
#ifdef DHCPv6
- if (!(*err)) {
+ if (!(*err) && ifaces->fp6) {
if (local_family == AF_INET6)
return next_iface6(info, err, ifaces);
}
@@ -740,7 +742,8 @@
ifaces->sock = -1;
#ifdef DHCPv6
if (local_family == AF_INET6) {
- fclose(ifaces->fp6);
+ if(ifaces->fp6)
+ fclose(ifaces->fp6);
ifaces->fp6 = NULL;
}
#endif

6
extra/dhcp/dhcp.conf.d Normal file
View file

@ -0,0 +1,6 @@
#
# Arguments to be passed to the DHCP server daemon
#
DHCP_ARGS="-q"

11
extra/dhcp/dhcp.install Normal file
View file

@ -0,0 +1,11 @@
# arg 1: the new package version
post_install() {
[ -f var/state/dhcp/dhcpd.leases ] || : >var/state/dhcp/dhcpd.leases
#echo "If dhcpd doesn't start, ensure the ipv6 kernel module is loaded."
}
# arg 1: the new package version
# arg 2: the old package version
post_upgrade() {
post_install $1
}

40
extra/dhcp/dhcpd Normal file
View file

@ -0,0 +1,40 @@
#!/bin/bash
. /etc/rc.conf
. /etc/rc.d/functions
. /etc/conf.d/dhcp
PIDFILE="/var/run/dhcpd.pid"
PID=`cat $PIDFILE 2>/dev/null`
case "$1" in
start)
stat_busy "Starting DHCP Server"
if [ "$PID" = "" ]; then
/usr/sbin/dhcpd $DHCP_ARGS
fi
if [ "$PID" != "" -o $? -gt 0 ]; then
stat_fail
else
add_daemon dhcpd
stat_done
fi
;;
stop)
stat_busy "Stopping DHCP Server"
[ ! -z "$PID" ] && kill $PID &> /dev/null
rm -f $PIDFILE
if [ $? -gt 0 ]; then
stat_fail
else
rm_daemon dhcpd
stat_done
fi
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "usage: $0 {start|stop|restart}"
esac