From 8bf3d0eae63400031a65954b5b5f2f7c49757d1a Mon Sep 17 00:00:00 2001 From: obrien Date: Mon, 26 Jun 2000 08:06:22 +0000 Subject: Import Patchlevel 1 of the ISC 2.0 dhcp client. --- contrib/isc-dhcp/client/Makefile.dist | 136 ++++++++++++++++++++++++++++++++++ contrib/isc-dhcp/client/dhclient.c | 13 ++-- 2 files changed, 144 insertions(+), 5 deletions(-) create mode 100644 contrib/isc-dhcp/client/Makefile.dist (limited to 'contrib/isc-dhcp/client') diff --git a/contrib/isc-dhcp/client/Makefile.dist b/contrib/isc-dhcp/client/Makefile.dist new file mode 100644 index 0000000..2109d39 --- /dev/null +++ b/contrib/isc-dhcp/client/Makefile.dist @@ -0,0 +1,136 @@ +# Makefile.dist +# +# Copyright (c) 1996, 1997, 1999 The Internet Software Consortium. +# 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. +# 3. Neither the name of The Internet Software Consortium nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE INTERNET SOFTWARE CONSORTIUM 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 INTERNET SOFTWARE CONSORTIUM 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. +# + +CATMANPAGES = dhclient.cat8 dhclient.conf.cat5 dhclient-script.cat8 \ + dhclient.leases.cat5 +SEDMANPAGES = dhclient.man8 dhclient.conf.man5 dhclient-script.man8 \ + dhclient.leases.man5 +SRCS = dhclient.c clparse.c +OBJS = dhclient.o clparse.o +PROG = dhclient +MAN = dhclient.8 dhclient.conf.5 dhclient-script.8 dhclient.leases.5 + +DEBUG = -g +INCLUDES = -I.. -I../includes +DHCPLIB = ../common/libdhcp.a +CFLAGS = $(DEBUG) $(PREDEFINES) $(INCLUDES) $(COPTS) + +all: $(PROG) $(CATMANPAGES) + +install: all + for dir in $(CLIENTBINDIR) $(ETC) $(FFMANDIR) $(ADMMANDIR) $(VARDB); \ + do \ + foo=""; \ + for bar in `echo $(DESTDIR)$${dir} |tr / ' '`; do \ + foo=$${foo}/$$bar; \ + if [ ! -d $$foo ]; then \ + mkdir $$foo; \ + chmod 755 $$foo; \ + fi; \ + done; \ + done + $(INSTALL) dhclient $(DESTDIR)$(CLIENTBINDIR) + $(CHMOD) 755 $(DESTDIR)$(CLIENTBINDIR)/dhclient + if [ x$(SCRIPT) = xnone ]; then \ + echo "No client script available."; \ + else \ + $(INSTALL) scripts/$(SCRIPT) $(DESTDIR)$(ETC)/dhclient-script; \ + $(CHMOD) 700 $(DESTDIR)$(ETC)/dhclient-script; \ + fi + $(MANINSTALL) $(MANFROM) dhclient.$(MANCAT)8 $(MANTO) \ + $(DESTDIR)$(ADMMANDIR)/dhclient$(ADMMANEXT) + $(MANINSTALL) $(MANFROM) dhclient-script.$(MANCAT)8 $(MANTO) \ + $(DESTDIR)$(ADMMANDIR)/dhclient-script$(ADMMANEXT) + $(MANINSTALL) $(MANFROM) dhclient.conf.$(MANCAT)5 $(MANTO) \ + $(DESTDIR)$(FFMANDIR)/dhclient.conf$(FFMANEXT) + $(MANINSTALL) $(MANFROM) dhclient.leases.$(MANCAT)5 $(MANTO) \ + $(DESTDIR)$(FFMANDIR)/dhclient.leases$(FFMANEXT) + +clean: + -rm -f $(OBJS) + +realclean: clean + -rm -f $(PROG) $(CATMANPAGES) $(SEDMANPAGES) *~ #* + +distclean: realclean + -rm -f Makefile + +# These should only be done on 4.4 BSD-based systems, since the mandoc +# macros aren't available on older unices. Catted man pages are +# provided in the distribution so that this doesn't become a problem. + +dhclient.cat8: dhclient.man8 + nroff -man dhclient.man8 >dhclient.cat8 + +dhclient.man8: dhclient.8 + sed -e "s#ETCDIR#$(ETC)#g" -e "s#DBDIR#$(VARDB)#g" \ + -e "s#RUNDIR#$(VARRUN)#g" < dhclient.8 >dhclient.man8 + +dhclient-script.cat8: dhclient-script.man8 + nroff -man dhclient-script.man8 >dhclient-script.cat8 + +dhclient-script.man8: dhclient-script.8 + sed -e "s#ETCDIR#$(ETC)#g" -e "s#DBDIR#$(VARDB)#g" \ + -e "s#RUNDIR#$(VARRUN)#g" < dhclient-script.8 \ + >dhclient-script.man8 + +dhclient.conf.man5: dhclient.conf.5 + sed -e "s#ETCDIR#$(ETC)#g" -e "s#DBDIR#$(VARDB)#g" \ + -e "s#RUNDIR#$(VARRUN)#g" < dhclient.conf.5 \ + >dhclient.conf.man5 + +dhclient.conf.cat5: dhclient.conf.man5 + nroff -man dhclient.conf.man5 >dhclient.conf.cat5 + +dhclient.leases.man5: dhclient.leases.5 + sed -e "s#ETCDIR#$(ETC)#g" -e "s#DBDIR#$(VARDB)#g" \ + -e "s#RUNDIR#$(VARRUN)#g" < dhclient.leases.5 \ + >dhclient.leases.man5 + +dhclient.leases.cat5: dhclient.leases.man5 + nroff -man dhclient.leases.man5 >dhclient.leases.cat5 + +dhclient: $(OBJS) $(DHCPLIB) + $(CC) $(LFLAGS) -o $(PROG) $(OBJS) $(DHCPLIB) $(LIBS) + +# Dependencies (semi-automatically-generated) + +dhclient.o: dhclient.c ../includes/dhcpd.h \ + ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \ + ../includes/cf/netbsd.h ../includes/dhcp.h \ + ../includes/tree.h ../includes/hash.h ../includes/inet.h \ + ../includes/sysconf.h ../includes/version.h +clparse.o: clparse.c ../includes/dhcpd.h \ + ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \ + ../includes/cf/netbsd.h ../includes/dhcp.h \ + ../includes/tree.h ../includes/hash.h ../includes/inet.h \ + ../includes/sysconf.h ../includes/dhctoken.h diff --git a/contrib/isc-dhcp/client/dhclient.c b/contrib/isc-dhcp/client/dhclient.c index d904e75..30424f6 100644 --- a/contrib/isc-dhcp/client/dhclient.c +++ b/contrib/isc-dhcp/client/dhclient.c @@ -56,7 +56,7 @@ #ifndef lint static char ocopyright[] = -"$Id: dhclient.c,v 1.44.2.39 1999/06/22 13:36:46 mellon Exp $ Copyright (c) 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium. All rights reserved.\n"; +"$Id: dhclient.c,v 1.44.2.44 2000/01/26 12:51:11 mellon Exp $ Copyright (c) 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium. All rights reserved.\n"; #endif /* not lint */ #include "dhcpd.h" @@ -176,7 +176,8 @@ int main (argc, argv, envp) note (contrib); note (url); note (""); - } + } else + log_perror = 0; /* Default to the DHCP/BOOTP port. */ if (!local_port) { @@ -1847,7 +1848,7 @@ void write_client_lease (ip, lease, rewrite) lease -> filename); if (lease -> server_name) fprintf (leaseFile, " server-name \"%s\";\n", - lease -> filename); + lease -> server_name); if (lease -> medium) fprintf (leaseFile, " medium \"%s\";\n", lease -> medium -> string); @@ -1910,9 +1911,11 @@ void script_init (ip, reason, medium) if (!mktemp (scriptName)) error ("can't create temporary client script %s: %m", scriptName); - fd = creat (scriptName, 0600); - } while (fd < 0); + fd = open (scriptName, O_EXCL | O_CREAT | O_WRONLY, 0600); + } while (fd < 0 && errno == EEXIST); #endif + if (fd < 0) + error ("can't create temporary script %s: %m", scriptName); scriptFile = fdopen (fd, "w"); if (!scriptFile) -- cgit v1.1