--- dhcpcd-3.2.3.orig/interface.c +++ dhcpcd-3.2.3/interface.c @@ -35,6 +35,7 @@ /* Netlink suff */ #ifdef __linux__ +/* typedef unsigned long long __u64; */ /* broken in later headers */ #include /* Needed for 2.4 kernels */ #include #include --- dhcpcd-3.2.3.orig/version.h +++ dhcpcd-3.2.3/version.h @@ -0,0 +1 @@ +#define VERSION "3.2.3" --- dhcpcd-3.2.3.orig/dhcpcd.8 +++ dhcpcd-3.2.3/dhcpcd.8 @@ -0,0 +1,365 @@ +.\" Copyright 2006-2008 Roy Marples +.\" All rights reserved +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.Dd Feb 20, 2008 +.Dt DHCPCD 8 SMM +.Sh NAME +.Nm dhcpcd +.Nd an RFC 2131 compliant DHCP client +.Sh SYNOPSIS +.Nm +.Op Fl dknpAEGHMLNRSTY +.Op Fl c , -script Ar script +.Op Fl h , -hostname Ar hostname +.Op Fl i , -classid Ar classid +.Op Fl l , -leasetime Ar seconds +.Op Fl m , -metric Ar metric +.Op Fl r , -request Ar address +.Op Fl t , -timeout Ar seconds +.Op Fl u , -userclass Ar class +.Op Fl F , -fqdn Ar FQDN +.Op Fl I , -clientid Ar clientid +.Ar interface +.Nm +.Fl k , -release +.Ar interface +.Nm +.Fl x , -exit +.Ar interface +.Sh DESCRIPTION +.Nm +is an implementation of the DHCP client specified in +.Rs +.%T "RFC 2131" +.Re +.Nm +gets the host information +.Po +IP address, routes, etc +.Pc +from a DHCP server and configures the network +.Ar interface +of the +machine on which it is running. +.Nm +will then write DNS information to +.Xr resolvconf 8 , +if available, otherwise directly to +.Pa /etc/resolv.conf . +.Nm +will also configure +.Pa /etc/yp.conf +and +.Pa /etc/ntpd.conf +with NIS and NTP information if the DHCP server provided them. +If those file contents changed, then +.Nm +will also attempt to restart the respective services to notify them of the +change. +If the hostname is currenly blank, (null) or localhost then +.Nm +will set the hostname to the one supplied by the DHCP server, or look it up +in DNS if none supplied. +.Nm +then daemonises and waits for the lease renewal time to lapse. +Then it attempts to renew its lease and reconfigure if the new lease changes. +.Ss Local Link configuration +If +.Nm +failed to obtain a lease, it will probe for a valid IPv4LL address +.Po +aka Zeroconf, aka APIPA +.Pc . +Once obtained it will probe every 10 seconds for a DHCP server to get a +proper address. +.Pp +Even when +.Nm +obtains a proper lease, it will still add a Local Link route +.Po +165.254.0.0/16 +.Pc +so that the host can communicate with clients using these addresses. +.Pp +When using IPv4LL, +.Nm +will always succeed and return a 0 exit code. To disable this behaviour, you +can use the +.Fl L , -noipv4ll +option. +.Ss Hooking into DHCP events +.Nm +will run /etc/dhcpcd.sh, or the script specified by the +.Fl c , -script +option. It will set $1 to a shell compatible file that holds various +configuration settings obtained from the DHCP server and $2 to either +up, down or new depending on the state of +.Nm . +.Nm +ignores the exist code of the script. +.Ss Fine tuning +You can fine tune the behaviour of +.Nm +with the following options :- +.Bl -tag -width indent +.It Fl d , -debug +Echo debug and informational messages to the console. +Subsequent debug options stop +.Nm +from daemonising. +.It Fl h , -hostname Ar hostname +By default, +.Nm +will send the current hostname to the DHCP server so it can register in DNS. +You can use this option to specify the +.Ar hostname +sent, or an empty string to +stop any +.Ar hostname +from being sent. +.It Fl i , -classid Ar classid +Override the DHCP vendor +.Ar classid +field we send. The default is +dhcpcd-. +.It Fl k , -release +This causes an existing +.Nm +process running on the +.Ar interface +to release it's lease, deconfigure the +.Ar interface +and then exit. +.It Fl l , -leasetime Ar seconds +Request a specific lease time in +.Ar seconds . +By default +.Nm +does not request any lease time and leaves the it in the hands of the +DHCP server. +.It Fl m , -metric Ar metric +Added routes will use the +.Ar metric +on systems where this is supported +.Po +presently only Linux +.Pc . +Route metrics allow the addition of routes to the same destination across +different interfaces, the lower the metric the more it is preferred. +.It Fl n , -renew +Notifies an existing +.Nm +process running on the +.Ar interface +to renew it's lease. If +.Nm +is not running, then it starts up as normal. +.It Fl p , -persistent +.Nm +normally deconfigures the +.Ar interface +and configuration when it exits. +Sometimes, this isn't desirable if for example you have root mounted over NFS. +You can use this option to stop this from happening. +.It Fl r , -request Op Ar address +.Nm +normally sends a DHCP Broadcast to find servers to offer an address. +.Nm +will then request the address used. You can use this option to skip the +broadcast step and just request an +.Ar address . +The downside is if you request +an +.Ar address +the DHCP server does not know about or the DHCP server is not +authorative, it will remain silent. In this situation, we go back to the init +state and broadcast again. +If no +.Ar address +is given then we use the first address currently assigned to the +.Ar interface . +.It Fl s , -inform Op Ar address Op / Ar cidr +Behaves exactly like +.Fl r , -request +as above, but sends a DHCP inform instead of a request. This requires the +interface to be configured first. This does not get a lease as such, just +notifies the DHCP server of the +.Ar address +we are using. +.It Fl t , -timeout Ar seconds +Timeout after +.Ar seconds , +instead of the default 20. +A setting of 0 +.Ar seconds +causes +.Nm +to wait forever to get a lease. +.It Fl u , -userclass Ar class +Tags the DHCP message with the userclass +.Ar class . +DHCP servers use this give memebers of the class DHCP options other than the +default, without having to know things like hardware address or hostname. +.If Fl F , -fqdn Ar fqdn +Requests that the DHCP server updates DNS using FQDN instead of just a +hostname. Valid values for +.Ar fqdn +are none, ptr and both. +.Nm +dhcpcd itself never does any DNS updates. +.It Fl H , --sethostname +Forces +.Nm +to set the hostname as supplied by the DHCP server. Because some OS's and users +prefer to have just the hostname, or the full FQDN more +.Fl H , --sethostname +options change the behaviour. Below is the list of possible combinations:- +.Bl -tag -width indent +.It Fl H +set the hostname to the full FQDN. +.It Fl HH +strip the domain if it matches the dns domain. +.It Fl HHH +strip the domain regardless. +.It Fl HHHH +same as +.Fl H +but force hostname lookup via DNS. +.It Fl HHHHH +same as above, but strip the domain if it matches the dns domain. +.It Fl HHHHHH +same as above, but strip the domain regardless. +.El +.It Fl I , -clientid Ar clientid +Send +.Ar clientid +as a client identifier string. If +.Ar clientid +matches a hardware address format, such as 01:00:01:02:03:04:05 then we encode +it as that, otherwise as a string. You need to specify the hardware type in +the first byte. Ethernet is 01, and the hardware address in the example is +00:01:02:03:04:05. If the +.Ar clientid +is a blank string, then we disable DUID support and use a +.Ar clientid +as shown above. +.It Fl S, -mscsr +Microsoft have their own code for Classless Static Routes +.Po +RFC 3442 +.Pc . +You can use this option to request this as well as the normal CSR. Another +instace of this option only requests the Microsoft CSR to prevent DHCP message +over-running its maximum size. DHCP server administrators should update their +CSR code from the Microsoft specific one to the RFC compliant one as the +content is fully compatible. +.El +.Ss Restriciting behaviour +.Nm +will try to do as much as it can by default. However, there are sometimes +situations where you don't want the things to be configured exactly how the +the DHCP server wants. Here are some option that deal with turning these bits +off. +.Bl -tag -width indent +.It Fl A , -noarp +Don't request or claim the address by ARP. +.It Fl G , -nogateway +Don't set any default routes. +.It Fl L , -noipv4ll +Don't use IPv4LL at all. +.It Fl M , -nomtu +Don't set the MTU of the +.Ar interface . +.It Fl N , -nontp +Don't touch +.Pa /etc/ntpd.conf +or restart the ntp service. +.It Fl R , -nodns +Don't send DNS information to resolvconf or touch +.Pa /etc/resolv.conf . +.It Fl T , -test +On receipt of discover messages, simply print the contents of the DHCP +message to the console. +.Nm +will not configure the +.Ar interface , +touch any files or restart any services. +.It Fl Y , -nonis +Don't touch +.Pa /etc/yp.conf +or restart the ypbind service. +.El +.Sh NOTES +Because +.Nm +supports InfiniBand, we put a Node-specific Client Identifier in the +ClientID field. This is required by RFC 4390. It's also required for DHCP IPv6 +which +.Nm +should support one day. However, some DHCP servers have no idea what this is +and reject the message as they do not understand type 255. This is not +conformant with RFC 2132 and the server should be fixed. Also, some DHCP +server configurations require an ethernet hardware address of 6 hexacdecimal +numbers in the ClientID which is the default behaviour of most other DHCP +clients. If your DHCP server is as desribed above, you should fix the server, +or if that is not an option you can compile DUID support out of +.Nm +or use the +.Fl I , -clientid Ar clientid +option and set +.Ar clientid +to ''. +.Pp +ISC dhcpd, dnsmasq, udhcpd and Microsoft DHCP server 2003 default configurations +work just fine with the default +.Nm +configuration. +.Pp +.Nm +requires a Berkley Packet Filter, or BPF device on BSD based systems and a +Linux Socket Filter, or LPF device on Linux based systems. +.Sh FILES +.Bl -ohang +.It Pa /etc/dhcpcd.sh +Bourne shell script that is run when we configure or deconfigure an interface. +.It Pa /var/lib/dhcpcd/dhcpcd.duid +Text file that holds the DUID used to identify the host. +.It Pa /var/lib/dhcpcd/dhcpcd- Ns Ar interface Ns .info +Bourne shell file that holds the DHCP values used in configuring the interface. +This path is passed as the first argument to +.Pa /etc/dhcpcd.sh . +.El +.Sh SEE ALSO +.Xr ntp 1 , +.Xr resolv.conf 5 , +.Xr resolvconf 8 , +.Xr yp.conf 5 , +.Xr ypbind 8 +.Sh STANDARDS +RFC 2131, RFC 2132, RFC 2855, RFC 3004, RFC 3361, RFC 3397, RFC 3442, RFC 3927, +RFC 4361, RFC 4390, RFC 4702. +.Sh AUTHORS +.An "Roy Marples" Aq roy@marples.name +.Sh BUGS +Please report them to http://bugs.marples.name --- dhcpcd-3.2.3.orig/arp.c +++ dhcpcd-3.2.3/arp.c @@ -236,10 +236,14 @@ memset (reply, 0, iface->buffer_length); if ((bytes = get_packet (iface, (unsigned char *) reply, - buffer, + iface->buffer_length, buffer, &buflen, &bufpos)) == -1) break; + /* check that we've got complete arp header */ + if ((size_t) bytes < sizeof (*reply)) + continue; + /* Only these types are recognised */ if (reply->ar_op != htons (ARPOP_REPLY)) continue; @@ -249,7 +253,7 @@ continue; if (reply->ar_pln != sizeof (address)) continue; - if ((unsigned) bytes < sizeof (reply) + + if ((size_t) bytes < sizeof (*reply) + 2 * (4 + reply->ar_hln)) continue; --- dhcpcd-3.2.3.orig/client.c +++ dhcpcd-3.2.3/client.c @@ -1007,7 +1007,7 @@ do { if (get_packet (iface, (unsigned char *) &message, - state->buffer, + sizeof(message), state->buffer, &state->buffer_len, &state->buffer_pos) == -1) break; --- dhcpcd-3.2.3.orig/dhcp.c +++ dhcpcd-3.2.3/dhcp.c @@ -178,6 +178,13 @@ if (set_mtu (iface->name, MTU_MIN) == 0) sz = MTU_MIN; } + else if(sz > (sizeof(dhcpmessage_t) + DHCP_UDP_LEN)) { + /* + * bigger dhcp messages are not supported, + * so don't indicate more (full MTU) ... + */ + sz = sizeof(dhcpmessage_t) + DHCP_UDP_LEN; + } sz = htons (sz); memcpy (p, &sz, 2); p += 2; @@ -327,6 +334,34 @@ #endif message_length = p - m; + +#if __linux__ + /* send_packet() always sends to the hardware broadcast address, which is + broken when the client and server are in different broadcast domains + and using a dhcp-helper and a renewal is in progress, since the client + sends direct to the server and the intermediate router will likely drop + broadcast addresses. + + This fix only works under Linux, where we have a UDP socket suitabley + set up which we can use to send in that case. */ + + if (to.s_addr != 0 && iface->listen_fd != -1) + { + struct sockaddr_in dest; + dest.sin_family = AF_INET; + dest.sin_port = htons (DHCP_SERVER_PORT); + dest.sin_addr = to; + + logger (LOG_DEBUG, "sending %s with xid 0x%x over UDP socket", + dhcp_message (type), xid); + + retval = sendto(iface->listen_fd, message, message_length, 0 , + (struct sockaddr *)&dest, sizeof(dest)); + free(message); + + return retval; + } +#endif packet = xzalloc (sizeof (*packet)); make_dhcp_packet (packet, (unsigned char *) message, message_length, --- dhcpcd-3.2.3.orig/socket.c +++ dhcpcd-3.2.3/socket.c @@ -358,7 +358,7 @@ /* BPF requires that we read the entire buffer. * So we pass the buffer in the API so we can loop on >1 dhcp packet. */ ssize_t get_packet (const interface_t *iface, unsigned char *data, - unsigned char *buffer, + size_t data_len, unsigned char *buffer, size_t *buffer_len, size_t *buffer_pos) { union @@ -406,6 +406,8 @@ if (hdr.hw->ether_type == htons (ETHERTYPE_ARP)) { len = bpf.packet->bh_caplen - sizeof (*hdr.hw); + if(len > data_len) + break; memcpy (data, payload, len); have_data = true; } else { @@ -419,6 +421,8 @@ len = ntohs (pay.packet->ip.ip_len) - sizeof (pay.packet->ip) - sizeof (pay.packet->udp); + if(len > data_len) + break; memcpy (data, &pay.packet->dhcp, len); have_data = true; } @@ -585,7 +589,7 @@ /* Linux has no need for the buffer as we can read as much as we want. * We only have the buffer listed to keep the same API. */ ssize_t get_packet (const interface_t *iface, unsigned char *data, - unsigned char *buffer, + size_t data_len, unsigned char *buffer, size_t *buffer_len, size_t *buffer_pos) { ssize_t bytes; @@ -610,9 +614,18 @@ return (-1); } +#if 0 + logger (LOG_DEBUG, "received packet of %zd bytes", bytes); +#endif + *buffer_len = bytes; /* If it's an ARP reply, then just send it back */ if (iface->socket_protocol == ETHERTYPE_ARP) { + if((size_t)bytes > data_len) { + logger (LOG_DEBUG, "packet too long (%zd), ignoring", + bytes); + return (-1); + } memcpy (data, buffer, bytes); return (bytes); } @@ -635,6 +648,18 @@ bytes = ntohs (pay.packet->ip.ip_len) - (sizeof (pay.packet->ip) + sizeof (pay.packet->udp)); + + if((size_t)bytes > data_len) { + logger (LOG_DEBUG, "dhcp message too long for us (%zd bytes), ignoring", + bytes); + return (-1); + } +#if 0 + else { + logger (LOG_DEBUG, "received dhcp message (%zd bytes)", + bytes); + } +#endif memcpy (data, &pay.packet->dhcp, bytes); return (bytes); } --- dhcpcd-3.2.3.orig/socket.h +++ dhcpcd-3.2.3/socket.h @@ -41,6 +41,6 @@ int open_socket (interface_t *iface, int protocol); ssize_t send_packet (const interface_t *iface, int type, const unsigned char *data, size_t len); -ssize_t get_packet (const interface_t *iface, unsigned char *data, +ssize_t get_packet (const interface_t *iface, unsigned char *data, size_t data_len, unsigned char *buffer, size_t *buffer_len, size_t *buffer_pos); #endif --- dhcpcd-3.2.3.orig/debian/dhcpcd.sh +++ dhcpcd-3.2.3/debian/dhcpcd.sh @@ -0,0 +1,111 @@ +#!/bin/bash +# +# This is a sample /etc/dhcpc/dhcpcd.sh script. +# /etc/dhcpc/dhcpcd.sh script is executed by dhcpcd daemon +# any time it configures or shuts down interface. +# The following parameters are passed to dhcpcd.sh script: +# $1 = HostInfoFilePath, e.g "/var/lib/dhcpc/dhcpcd-eth0.info" +# $2 = "up" if interface has been configured with the same +# IP address as before reboot; +# $2 = "down" if interface has been shut down; +# $2 = "new" if interface has been configured with new IP address; +# +# This script sources /var/lib/dhcpc/dhcpcd-.info which defines +# a set of variables. +# NOTE THAT THE DATA IN SOME OF THESE VARIABLES COME FROM +# UNTRUSTED SOURCES AND ARE UNCHECKED. +# The variables in question are HOSTNAME, DOMAIN, NISDOMAIN, +# ROOTPATH DNSSEARCH and DHCPSNAME. Enough quoting is done to ensure that +# execution of this script is safe, but beware if you pass the value of any of +# these variables to another shell or perl script - there is nothing to +# stop an attacker putting dangerous characters in these variables. +# +# This is important: if noglob not set a filename expansion metachar may be +# included in one of the variables set in the info file and executed +# if that variable is used. +# Try this to see the effect: +# TEST='*'; echo $TEST +set -o noglob + +# Sanity checks + +if [ $# -lt 2 ]; then + logger -s -p local0.err -t dhcpcd.sh "wrong usage" + exit 1 +fi + +hostinfo="$1" +state="$2" + +# Reading HostInfo file for configuration parameters +if ! [ -f ${hostinfo} ]; then + logger -s -p local0.err -t dhcpcd.sh "No hostinfo file" + exit 1 +fi + +. ${hostinfo} + +write_resolv_info() +{ + dnsservs=${DNSSERVERS} + r="" + [ "$dnsservs" != "" ] && [ "$DNSSEARCH" != "" ] && r="${r}search $DNSSEARCH +" + [ "$dnsservs" != "" ] && [ "$DNSSEARCH" == "" ] && [ "$DNSDOMAIN" != "" ] && r="${r}search $DNSDOMAIN +" + for serv in $dnsservs; do + r="${r}nameserver $serv +" + done + if [ -x /sbin/resolvconf ] ; then + echo -n "$r" | /sbin/resolvconf -a "$INTERFACE" + else + # set /etc/dhcpc/resolv.conf for compatiblity with older packages + echo -n "$r" >| /etc/dhcpc/resolv.conf + chmod 644 /etc/dhcpc/resolv.conf + fi +} + +delete_resolv_info() +{ + if [ -x /sbin/resolvconf ] ; then + /sbin/resolvconf -d "$INTERFACE" + fi +} + + +case ${state} in + up) logger -s -p local0.info -t dhcpcd.sh "interface ${INTERFACE} has been configured with old IP=${IPADDR}" + write_resolv_info + +# ==== Put your code for the case interface has been brought up with old IP address here + + + + +# ==== End + ;; + + new) logger -s -p local0.info -t dhcpcd.sh "interface ${INTERFACE} has been configured with new IP=${IPADDR}" + write_resolv_info + +# ==== Put your code for the case interface has been brought up with new IP address here + + + + +# ==== End + ;; + + down) logger -s -p local0.info -t dhcpcd.sh "interface ${INTERFACE} has been brought down" + delete_resolv_info +# ==== Put your code for the case interface has been shut down here + + + + +# ==== End + ;; +esac + +exit 0 --- dhcpcd-3.2.3.orig/debian/dhcpcd.dirs +++ dhcpcd-3.2.3/debian/dhcpcd.dirs @@ -0,0 +1,4 @@ +sbin +usr/share/man/man8 +etc/default +etc/dhcpc --- dhcpcd-3.2.3.orig/debian/config +++ dhcpcd-3.2.3/debian/config @@ -0,0 +1,36 @@ +# Config file for dhcpcd. Note that you have to edit the interface +# name below, or duplicate the configuration for different interfaces. +# If you are editing this file just to get DNS servers set by DHCP, +# then you should consider installing the resolvconf package instead. + +case ${INTERFACE} in +eth0) + +# Uncomment this to allow dhcpcd to set the DNS servers in /etc/resolv.conf +# If you are using resolvconf then you can leave this commented out. +#SET_DNS='yes' + +# Uncomment this to allow dhcpcd to set hostname of the host to the +# hostname option supplied by DHCP server. +#SET_HOSTNAME='yes' + +# Uncomment this to allow dhcpcd to set the NTP servers in /etc/ntp.conf +#SET_NTP='yes' + +# Uncomment this to allow dhcpcd to set the YP servers in /etc/yp.conf +#SET_YP='yes' + +# Add other options here, see man 8 dhcpcd-bin for details. +OPTIONS=() +;; + +# Add other interfaces here +*) +;; + +esac + + + + + --- dhcpcd-3.2.3.orig/debian/substvars +++ dhcpcd-3.2.3/debian/substvars @@ -0,0 +1 @@ +shlibs:Depends=libc6 (>= 2.3.5-1) --- dhcpcd-3.2.3.orig/debian/postinst +++ dhcpcd-3.2.3/debian/postinst @@ -0,0 +1,16 @@ +#!/bin/sh -e + +# /etc/dhcpc/resolv.conf is now a link to /var/lib/dhcpcd/resolv.conf +rm -f /etc/dhcpc/resolv.conf +ln -s /var/lib/dhcpcd/resolv.conf /etc/dhcpc/resolv.conf + +# remove older-version state dir. +rm -rf /var/lib/dhcpc + +#DEBHELPER# + + + + + + --- dhcpcd-3.2.3.orig/debian/rules +++ dhcpcd-3.2.3/debian/rules @@ -0,0 +1,77 @@ +#!/usr/bin/make -f +# -*-makefile-*- +# Made with the aid of dh_make, by Craig Small +# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess. +# Some lines taken from debmake, by Cristoph Lameter. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# policy manual, section 10.1 +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS = -g -O0 -Wall -W -DENABLE_INFO_COMPAT +else + CFLAGS = -g -O2 -Wall -W -DENABLE_INFO_COMPAT +endif + + +configure-stamp: + dh_testdir + touch configure-stamp + +build: configure-stamp + dh_testdir + $(MAKE) CFLAGS="$(CFLAGS)" + touch build-stamp + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + rm -f *.o core *.core *~ dhcpcd + dh_clean -Pdebian/tmp + +# Build architecture-independent files here. +binary-indep: build +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build +# dh_testversion + dh_testdir + dh_testroot + dh_clean -k -Pdebian/tmp + dh_installdirs -Pdebian/tmp + + install dhcpcd debian/tmp/sbin/dhcpcd-bin + install debian/dhcpcd debian/tmp/sbin/dhcpcd + install -m 644 debian/config debian/tmp/etc/default/dhcpcd + install debian/dhcpcd.sh debian/tmp/etc + install -d debian/tmp/var/lib/dhcpc + + dh_installdocs -Pdebian/tmp README + dh_installchangelogs -Pdebian/tmp + + install dhcpcd.8 debian/tmp/usr/share/man/man8/dhcpcd-bin.8 + install debian/dhcpcd.8 debian/tmp/usr/share/man/man8/dhcpcd.8 + gzip -9 debian/tmp/usr/share/man/man8/dhcpcd-bin.8 + gzip -9 debian/tmp/usr/share/man/man8/dhcpcd.8 + + dh_strip -Pdebian/tmp + dh_compress -Pdebian/tmp + dh_fixperms -Pdebian/tmp + dh_installdeb -Pdebian/tmp + dh_shlibdeps -Pdebian/tmp + dh_gencontrol -Pdebian/tmp + dh_md5sums -Pdebian/tmp + dh_builddeb -Pdebian/tmp + +source diff: + @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary + + + + --- dhcpcd-3.2.3.orig/debian/compat +++ dhcpcd-3.2.3/debian/compat @@ -0,0 +1 @@ +4 --- dhcpcd-3.2.3.orig/debian/README.debian +++ dhcpcd-3.2.3/debian/README.debian @@ -0,0 +1,51 @@ +dhcpcd for Debian +----------------- + +Startup +------- +If you would like an interface to be configured using dhcpcd at +boot time then add lines like + +auto eth1 +iface eth1 inet dhcp + +to /etc/network/interfaces. This will cause ifup to bring up +interface eth1 at boot time. + +Ifup will use dhcpcd to configure a particular interface if it +is set up to configure that interface according to an "iface" +description in /etc/network/interfaces of type "inet dhcp". +See the ifup(8) and interfaces(5) manual pages for more +information on how to write the /etc/network/interfaces file. + +Resolv.conf +----------- +Dhcpcd will no longer update /etc/resolv.conf and /etc/ntp.conf +directly unless this is enabled in /etc/dhcpc/config by setting +the SET_DNS environment variable to "yes". If the resolvconf +package is installed then the resolv.conf information will be +sent to resolvconf; otherwise the information will be written +to /etc/dhcpc/resolv.conf . Note that if you are using +resolvconf then you must _not_ set SET_DNS to "yes" since this +will interfere with resolvconf's operation. + +DUID-based client-ids +--------------------- +Dhcpcd version 3 constructs client-ids using the a DUID, as specified +by RFC 4361. previous versions used a client-id based on the interface +MAC address, as specified in RFC 2131. If a host which already has a +DHCP lease changes its client-id, it is probable that it will be +allocated a new IP address by the DHCP server, which may cause +problems. To avoid this, if the Debian package of dhcpcd is upgraded, +the file /etc/dhcpc/duid-inhibit will be created, which forces dhcpcd +to use the old client-id. New installations use DUID-based client-ids +from scratch and existing ones can be upgraded in a controlled manner +by deleting /etc/dhcpc/duid-inhibit and taking interfaces down and +then back up. + + + + -- Simon Kelley , Tues, 12 Feb 2008 12:22:01 +0000 + + + --- dhcpcd-3.2.3.orig/debian/preinst +++ dhcpcd-3.2.3/debian/preinst @@ -0,0 +1,25 @@ +#!/bin/sh -e + +# The name of the lease-change script changed. +# Move it here, but leave a link from the old name. + +if [ -f /etc/dhcpc/dhcpcd.exe ] && [ ! -f /etc/dhcpcd.sh ]; then + mv /etc/dhcpc/dhcpcd.exe /etc/dhcpcd.sh + ln -s /etc/dhcpcd.sh /etc/dhcpc/dhcpcd.exe +fi + +if [ -f /etc/dhcpc/config ] && [ ! -f /etc/default/dhcpcd ]; then + mv /etc/dhcpc/config /etc/default/dhcpcd + ln -s /etc/default/dhcpcd /etc/dhcpc/config +fi + +# If upgrading from a version prior to 3.2.1, we create the +# file /etc/dhcpc/inhibit-duid so that hosts don't suddenly change +# their client-id and move IP addresses. New installations can use DUID +# from the start with no problems. + +if [ $1 = upgrade ]; then + if [ -n $2 ] && dpkg --compare-versions $2 lt 3.2.1-1; then + echo "Remove this file to make dhcpcd use DUID-based client-ids" >/etc/dhcpc/inhibit-duid + fi +fi --- dhcpcd-3.2.3.orig/debian/copyright +++ dhcpcd-3.2.3/debian/copyright @@ -0,0 +1,40 @@ + +Version 1.3.x was originally downloaded from: + + ftp://phystech.com/pub/ + +Version 2.x.x was downloaded from + + http://developer.berlios.de/projects/dhcpcd/ + +Version 3.x.x was downloaded from + + http://roy.marples.name/dhcpcd + +Copyright: + + * dhcpcd - DHCP client daemon + * Copyright 2006-2008 Roy Marples + * All rights reserved + + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + --- dhcpcd-3.2.3.orig/debian/dhcpcd.8 +++ dhcpcd-3.2.3/debian/dhcpcd.8 @@ -0,0 +1,30 @@ +.\" $Id$ +.\" +.TH dhcpcd 8 "13 May 2004" "dhcpcd" "Debian GNU/Linux" + +.SH NAME +dhcpcd \- a wrapper for the DHCP client daemon. +.SH SYNOPSIS +.B dhcpcd