Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

Initial commit of upstream sources

  • Loading branch information...
commit 08d97d5691c2e416821a9a8f1ffde51564d84816 0 parents
Andrew Pollock authored

Showing 350 changed files with 66,796 additions and 0 deletions. Show diff stats Hide diff stats

  1. +20 0 LICENSE
  2. +23 0 Makefile.am
  3. +600 0 Makefile.in
  4. +594 0 README
  5. +2,636 0 RELNOTES
  6. +850 0 aclocal.m4
  7. +18 0 client/Makefile.am
  8. +542 0 client/Makefile.in
  9. +2,224 0 client/clparse.c
  10. +5,249 0 client/dhc6.c
  11. +234 0 client/dhclient-script.8
  12. +419 0 client/dhclient.8
  13. +3,815 0 client/dhclient.c
  14. +36 0 client/dhclient.conf
  15. +678 0 client/dhclient.conf.5
  16. +56 0 client/dhclient.leases.5
  17. +298 0 client/scripts/bsdos
  18. +360 0 client/scripts/freebsd
  19. +300 0 client/scripts/linux
  20. +195 0 client/scripts/macos
  21. +298 0 client/scripts/netbsd
  22. +61 0 client/scripts/nextstep
  23. +298 0 client/scripts/openbsd
  24. +244 0 client/scripts/openwrt
  25. +184 0 client/scripts/solaris
  26. +12 0 common/Makefile.am
  27. +582 0 common/Makefile.in
  28. +1,304 0 common/alloc.c
  29. +606 0 common/bpf.c
  30. +922 0 common/comapi.c
  31. +1,445 0 common/conflex.c
  32. +295 0 common/ctrace.c
  33. +541 0 common/dhcp-eval.5
  34. +2,121 0 common/dhcp-options.5
  35. +1,809 0 common/discover.c
  36. +222 0 common/dispatch.c
  37. +1,386 0 common/dlpi.c
  38. +992 0 common/dns.c
  39. +93 0 common/ethernet.c
  40. +1,152 0 common/execute.c
  41. +92 0 common/fddi.c
  42. +242 0 common/heap.c
  43. +307 0 common/icmp.c
  44. +606 0 common/inet.c
  45. +462 0 common/lpf.c
  46. +154 0 common/memory.c
  47. +419 0 common/nit.c
  48. +4,051 0 common/options.c
  49. +344 0 common/packet.c
  50. +5,772 0 common/parse.c
  51. +1,494 0 common/print.c
  52. +139 0 common/raw.c
  53. +195 0 common/resolv.c
  54. +843 0 common/socket.c
  55. +1,409 0 common/tables.c
  56. +10 0 common/tests/Makefile.am
  57. +447 0 common/tests/Makefile.in
  58. +496 0 common/tests/test_alloc.c
  59. +330 0 common/tr.c
  60. +4,398 0 common/tree.c
  61. +370 0 common/upf.c
  62. +8,463 0 configure
  63. +473 0 configure.ac
  64. +126 0 contrib/3.0b1-lease-convert
  65. +179 0 contrib/dhclient-tz-exithook.sh
  66. +157 0 contrib/dhcp.spec
  67. +361 0 contrib/ms2isc/Registry.pm
  68. +634 0 contrib/ms2isc/ms2isc.pl
  69. +15 0 contrib/ms2isc/readme.txt
  70. +29 0 contrib/sethostname.sh
  71. +28 0 contrib/solaris.init
  72. +37 0 debian/README.Debian
Sorry, we could not display the entire diff because too many files (350) changed.
20 LICENSE
... ... @@ -0,0 +1,20 @@
  1 +# Copyright (c) 2004-2008 by Internet Systems Consortium, Inc. ("ISC")
  2 +# Copyright (c) 1995-2003 by Internet Software Consortium
  3 +#
  4 +# Permission to use, copy, modify, and distribute this software for any
  5 +# purpose with or without fee is hereby granted, provided that the above
  6 +# copyright notice and this permission notice appear in all copies.
  7 +#
  8 +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
  9 +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  10 +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
  11 +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  12 +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  13 +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
  14 +# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15 +#
  16 +# Internet Systems Consortium, Inc.
  17 +# 950 Charter Street
  18 +# Redwood City, CA 94063
  19 +# <info@isc.org>
  20 +# http://www.isc.org/
23 Makefile.am
... ... @@ -0,0 +1,23 @@
  1 +#
  2 +# automake adds dependencies that we don't like, so we explicitly remove them
  3 +#
  4 +Makefile:
  5 +
  6 +#
  7 +# We have a lot of files that we want shipped with the distribution.
  8 +#
  9 +EXTRA_DIST = RELNOTES LICENSE \
  10 + contrib/3.0b1-lease-convert contrib/dhclient-tz-exithook.sh \
  11 + contrib/dhcp.spec contrib/sethostname.sh contrib/solaris.init \
  12 + contrib/ms2isc/Registry.pm contrib/ms2isc/ms2isc.pl \
  13 + contrib/ms2isc/readme.txt \
  14 + doc/IANA-arp-parameters doc/Makefile doc/References.html \
  15 + doc/References.txt doc/References.xml doc/api+protocol \
  16 + doc/ja_JP.eucJP/dhclient-script.8 doc/ja_JP.eucJP/dhclient.8 \
  17 + doc/ja_JP.eucJP/dhclient.conf.5 doc/ja_JP.eucJP/dhclient.leases.5 \
  18 + doc/ja_JP.eucJP/dhcp-eval.5 doc/ja_JP.eucJP/dhcp-options.5
  19 +
  20 +SUBDIRS = includes tests common minires dst omapip client dhcpctl relay server
  21 +
  22 +nobase_include_HEADERS = dhcpctl/dhcpctl.h
  23 +
600 Makefile.in
... ... @@ -0,0 +1,600 @@
  1 +# Makefile.in generated by automake 1.9.6 from Makefile.am.
  2 +# @configure_input@
  3 +
  4 +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
  5 +# 2003, 2004, 2005 Free Software Foundation, Inc.
  6 +# This Makefile.in is free software; the Free Software Foundation
  7 +# gives unlimited permission to copy and/or distribute it,
  8 +# with or without modifications, as long as this notice is preserved.
  9 +
  10 +# This program is distributed in the hope that it will be useful,
  11 +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
  12 +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
  13 +# PARTICULAR PURPOSE.
  14 +
  15 +@SET_MAKE@
  16 +
  17 +srcdir = @srcdir@
  18 +top_srcdir = @top_srcdir@
  19 +VPATH = @srcdir@
  20 +pkgdatadir = $(datadir)/@PACKAGE@
  21 +pkglibdir = $(libdir)/@PACKAGE@
  22 +pkgincludedir = $(includedir)/@PACKAGE@
  23 +top_builddir = .
  24 +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
  25 +INSTALL = @INSTALL@
  26 +install_sh_DATA = $(install_sh) -c -m 644
  27 +install_sh_PROGRAM = $(install_sh) -c
  28 +install_sh_SCRIPT = $(install_sh) -c
  29 +INSTALL_HEADER = $(INSTALL_DATA)
  30 +transform = $(program_transform_name)
  31 +NORMAL_INSTALL = :
  32 +PRE_INSTALL = :
  33 +POST_INSTALL = :
  34 +NORMAL_UNINSTALL = :
  35 +PRE_UNINSTALL = :
  36 +POST_UNINSTALL = :
  37 +subdir = .
  38 +DIST_COMMON = README $(am__configure_deps) $(nobase_include_HEADERS) \
  39 + $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
  40 + $(top_srcdir)/configure depcomp install-sh missing
  41 +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
  42 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac
  43 +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
  44 + $(ACLOCAL_M4)
  45 +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
  46 + configure.lineno configure.status.lineno
  47 +mkinstalldirs = $(install_sh) -d
  48 +CONFIG_HEADER = $(top_builddir)/includes/config.h
  49 +CONFIG_CLEAN_FILES =
  50 +SOURCES =
  51 +DIST_SOURCES =
  52 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
  53 + html-recursive info-recursive install-data-recursive \
  54 + install-exec-recursive install-info-recursive \
  55 + install-recursive installcheck-recursive installdirs-recursive \
  56 + pdf-recursive ps-recursive uninstall-info-recursive \
  57 + uninstall-recursive
  58 +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
  59 +am__vpath_adj = case $$p in \
  60 + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
  61 + *) f=$$p;; \
  62 + esac;
  63 +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
  64 +am__installdirs = "$(DESTDIR)$(includedir)"
  65 +nobase_includeHEADERS_INSTALL = $(install_sh_DATA)
  66 +HEADERS = $(nobase_include_HEADERS)
  67 +ETAGS = etags
  68 +CTAGS = ctags
  69 +DIST_SUBDIRS = $(SUBDIRS)
  70 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
  71 +distdir = $(PACKAGE)-$(VERSION)
  72 +top_distdir = $(distdir)
  73 +am__remove_distdir = \
  74 + { test ! -d $(distdir) \
  75 + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
  76 + && rm -fr $(distdir); }; }
  77 +DIST_ARCHIVES = $(distdir).tar.gz
  78 +GZIP_ENV = --best
  79 +distuninstallcheck_listfiles = find . -type f -print
  80 +distcleancheck_listfiles = find . -type f -print
  81 +ACLOCAL = @ACLOCAL@
  82 +AMDEP_FALSE = @AMDEP_FALSE@
  83 +AMDEP_TRUE = @AMDEP_TRUE@
  84 +AMTAR = @AMTAR@
  85 +AUTOCONF = @AUTOCONF@
  86 +AUTOHEADER = @AUTOHEADER@
  87 +AUTOMAKE = @AUTOMAKE@
  88 +AWK = @AWK@
  89 +CC = @CC@
  90 +CCDEPMODE = @CCDEPMODE@
  91 +CFLAGS = @CFLAGS@
  92 +CPP = @CPP@
  93 +CPPFLAGS = @CPPFLAGS@
  94 +CYGPATH_W = @CYGPATH_W@
  95 +DEFS = @DEFS@
  96 +DEPDIR = @DEPDIR@
  97 +ECHO_C = @ECHO_C@
  98 +ECHO_N = @ECHO_N@
  99 +ECHO_T = @ECHO_T@
  100 +EGREP = @EGREP@
  101 +EXEEXT = @EXEEXT@
  102 +INSTALL_DATA = @INSTALL_DATA@
  103 +INSTALL_PROGRAM = @INSTALL_PROGRAM@
  104 +INSTALL_SCRIPT = @INSTALL_SCRIPT@
  105 +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
  106 +LDFLAGS = @LDFLAGS@
  107 +LIBOBJS = @LIBOBJS@
  108 +LIBS = @LIBS@
  109 +LTLIBOBJS = @LTLIBOBJS@
  110 +MAKEINFO = @MAKEINFO@
  111 +OBJEXT = @OBJEXT@
  112 +PACKAGE = @PACKAGE@
  113 +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
  114 +PACKAGE_NAME = @PACKAGE_NAME@
  115 +PACKAGE_STRING = @PACKAGE_STRING@
  116 +PACKAGE_TARNAME = @PACKAGE_TARNAME@
  117 +PACKAGE_VERSION = @PACKAGE_VERSION@
  118 +PATH_SEPARATOR = @PATH_SEPARATOR@
  119 +RANLIB = @RANLIB@
  120 +SET_MAKE = @SET_MAKE@
  121 +SHELL = @SHELL@
  122 +STRIP = @STRIP@
  123 +VERSION = @VERSION@
  124 +ac_ct_CC = @ac_ct_CC@
  125 +ac_ct_RANLIB = @ac_ct_RANLIB@
  126 +ac_ct_STRIP = @ac_ct_STRIP@
  127 +ac_prefix_program = @ac_prefix_program@
  128 +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
  129 +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
  130 +am__include = @am__include@
  131 +am__leading_dot = @am__leading_dot@
  132 +am__quote = @am__quote@
  133 +am__tar = @am__tar@
  134 +am__untar = @am__untar@
  135 +bindir = @bindir@
  136 +build_alias = @build_alias@
  137 +byte_order = @byte_order@
  138 +datadir = @datadir@
  139 +exec_prefix = @exec_prefix@
  140 +host_alias = @host_alias@
  141 +includedir = @includedir@
  142 +infodir = @infodir@
  143 +install_sh = @install_sh@
  144 +libdir = @libdir@
  145 +libexecdir = @libexecdir@
  146 +localstatedir = @localstatedir@
  147 +mandir = @mandir@
  148 +mkdir_p = @mkdir_p@
  149 +oldincludedir = @oldincludedir@
  150 +prefix = @prefix@
  151 +program_transform_name = @program_transform_name@
  152 +sbindir = @sbindir@
  153 +sharedstatedir = @sharedstatedir@
  154 +sysconfdir = @sysconfdir@
  155 +target_alias = @target_alias@
  156 +
  157 +#
  158 +# We have a lot of files that we want shipped with the distribution.
  159 +#
  160 +EXTRA_DIST = RELNOTES LICENSE \
  161 + contrib/3.0b1-lease-convert contrib/dhclient-tz-exithook.sh \
  162 + contrib/dhcp.spec contrib/sethostname.sh contrib/solaris.init \
  163 + contrib/ms2isc/Registry.pm contrib/ms2isc/ms2isc.pl \
  164 + contrib/ms2isc/readme.txt \
  165 + doc/IANA-arp-parameters doc/Makefile doc/References.html \
  166 + doc/References.txt doc/References.xml doc/api+protocol \
  167 + doc/ja_JP.eucJP/dhclient-script.8 doc/ja_JP.eucJP/dhclient.8 \
  168 + doc/ja_JP.eucJP/dhclient.conf.5 doc/ja_JP.eucJP/dhclient.leases.5 \
  169 + doc/ja_JP.eucJP/dhcp-eval.5 doc/ja_JP.eucJP/dhcp-options.5
  170 +
  171 +SUBDIRS = includes tests common minires dst omapip client dhcpctl relay server
  172 +nobase_include_HEADERS = dhcpctl/dhcpctl.h
  173 +all: all-recursive
  174 +
  175 +.SUFFIXES:
  176 +am--refresh:
  177 + @:
  178 +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
  179 + @for dep in $?; do \
  180 + case '$(am__configure_deps)' in \
  181 + *$$dep*) \
  182 + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
  183 + cd $(srcdir) && $(AUTOMAKE) --foreign \
  184 + && exit 0; \
  185 + exit 1;; \
  186 + esac; \
  187 + done; \
  188 + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
  189 + cd $(top_srcdir) && \
  190 + $(AUTOMAKE) --foreign Makefile
  191 +.PRECIOUS: Makefile
  192 +
  193 +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
  194 + $(SHELL) ./config.status --recheck
  195 +
  196 +$(top_srcdir)/configure: $(am__configure_deps)
  197 + cd $(srcdir) && $(AUTOCONF)
  198 +$(ACLOCAL_M4): $(am__aclocal_m4_deps)
  199 + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
  200 +uninstall-info-am:
  201 +install-nobase_includeHEADERS: $(nobase_include_HEADERS)
  202 + @$(NORMAL_INSTALL)
  203 + test -z "$(includedir)" || $(mkdir_p) "$(DESTDIR)$(includedir)"
  204 + @$(am__vpath_adj_setup) \
  205 + list='$(nobase_include_HEADERS)'; for p in $$list; do \
  206 + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
  207 + $(am__vpath_adj) \
  208 + echo " $(nobase_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \
  209 + $(nobase_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \
  210 + done
  211 +
  212 +uninstall-nobase_includeHEADERS:
  213 + @$(NORMAL_UNINSTALL)
  214 + @$(am__vpath_adj_setup) \
  215 + list='$(nobase_include_HEADERS)'; for p in $$list; do \
  216 + $(am__vpath_adj) \
  217 + echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \
  218 + rm -f "$(DESTDIR)$(includedir)/$$f"; \
  219 + done
  220 +
  221 +# This directory's subdirectories are mostly independent; you can cd
  222 +# into them and run `make' without going through this Makefile.
  223 +# To change the values of `make' variables: instead of editing Makefiles,
  224 +# (1) if the variable is set in `config.status', edit `config.status'
  225 +# (which will cause the Makefiles to be regenerated when you run `make');
  226 +# (2) otherwise, pass the desired values on the `make' command line.
  227 +$(RECURSIVE_TARGETS):
  228 + @failcom='exit 1'; \
  229 + for f in x $$MAKEFLAGS; do \
  230 + case $$f in \
  231 + *=* | --[!k]*);; \
  232 + *k*) failcom='fail=yes';; \
  233 + esac; \
  234 + done; \
  235 + dot_seen=no; \
  236 + target=`echo $@ | sed s/-recursive//`; \
  237 + list='$(SUBDIRS)'; for subdir in $$list; do \
  238 + echo "Making $$target in $$subdir"; \
  239 + if test "$$subdir" = "."; then \
  240 + dot_seen=yes; \
  241 + local_target="$$target-am"; \
  242 + else \
  243 + local_target="$$target"; \
  244 + fi; \
  245 + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
  246 + || eval $$failcom; \
  247 + done; \
  248 + if test "$$dot_seen" = "no"; then \
  249 + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
  250 + fi; test -z "$$fail"
  251 +
  252 +mostlyclean-recursive clean-recursive distclean-recursive \
  253 +maintainer-clean-recursive:
  254 + @failcom='exit 1'; \
  255 + for f in x $$MAKEFLAGS; do \
  256 + case $$f in \
  257 + *=* | --[!k]*);; \
  258 + *k*) failcom='fail=yes';; \
  259 + esac; \
  260 + done; \
  261 + dot_seen=no; \
  262 + case "$@" in \
  263 + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
  264 + *) list='$(SUBDIRS)' ;; \
  265 + esac; \
  266 + rev=''; for subdir in $$list; do \
  267 + if test "$$subdir" = "."; then :; else \
  268 + rev="$$subdir $$rev"; \
  269 + fi; \
  270 + done; \
  271 + rev="$$rev ."; \
  272 + target=`echo $@ | sed s/-recursive//`; \
  273 + for subdir in $$rev; do \
  274 + echo "Making $$target in $$subdir"; \
  275 + if test "$$subdir" = "."; then \
  276 + local_target="$$target-am"; \
  277 + else \
  278 + local_target="$$target"; \
  279 + fi; \
  280 + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
  281 + || eval $$failcom; \
  282 + done && test -z "$$fail"
  283 +tags-recursive:
  284 + list='$(SUBDIRS)'; for subdir in $$list; do \
  285 + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
  286 + done
  287 +ctags-recursive:
  288 + list='$(SUBDIRS)'; for subdir in $$list; do \
  289 + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
  290 + done
  291 +
  292 +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
  293 + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
  294 + unique=`for i in $$list; do \
  295 + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
  296 + done | \
  297 + $(AWK) ' { files[$$0] = 1; } \
  298 + END { for (i in files) print i; }'`; \
  299 + mkid -fID $$unique
  300 +tags: TAGS
  301 +
  302 +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
  303 + $(TAGS_FILES) $(LISP)
  304 + tags=; \
  305 + here=`pwd`; \
  306 + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
  307 + include_option=--etags-include; \
  308 + empty_fix=.; \
  309 + else \
  310 + include_option=--include; \
  311 + empty_fix=; \
  312 + fi; \
  313 + list='$(SUBDIRS)'; for subdir in $$list; do \
  314 + if test "$$subdir" = .; then :; else \
  315 + test ! -f $$subdir/TAGS || \
  316 + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
  317 + fi; \
  318 + done; \
  319 + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
  320 + unique=`for i in $$list; do \
  321 + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
  322 + done | \
  323 + $(AWK) ' { files[$$0] = 1; } \
  324 + END { for (i in files) print i; }'`; \
  325 + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
  326 + test -n "$$unique" || unique=$$empty_fix; \
  327 + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
  328 + $$tags $$unique; \
  329 + fi
  330 +ctags: CTAGS
  331 +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
  332 + $(TAGS_FILES) $(LISP)
  333 + tags=; \
  334 + here=`pwd`; \
  335 + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
  336 + unique=`for i in $$list; do \
  337 + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
  338 + done | \
  339 + $(AWK) ' { files[$$0] = 1; } \
  340 + END { for (i in files) print i; }'`; \
  341 + test -z "$(CTAGS_ARGS)$$tags$$unique" \
  342 + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
  343 + $$tags $$unique
  344 +
  345 +GTAGS:
  346 + here=`$(am__cd) $(top_builddir) && pwd` \
  347 + && cd $(top_srcdir) \
  348 + && gtags -i $(GTAGS_ARGS) $$here
  349 +
  350 +distclean-tags:
  351 + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
  352 +
  353 +distdir: $(DISTFILES)
  354 + $(am__remove_distdir)
  355 + mkdir $(distdir)
  356 + $(mkdir_p) $(distdir)/contrib $(distdir)/contrib/ms2isc $(distdir)/dhcpctl $(distdir)/doc $(distdir)/doc/ja_JP.eucJP
  357 + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
  358 + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
  359 + list='$(DISTFILES)'; for file in $$list; do \
  360 + case $$file in \
  361 + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
  362 + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
  363 + esac; \
  364 + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
  365 + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
  366 + if test "$$dir" != "$$file" && test "$$dir" != "."; then \
  367 + dir="/$$dir"; \
  368 + $(mkdir_p) "$(distdir)$$dir"; \
  369 + else \
  370 + dir=''; \
  371 + fi; \
  372 + if test -d $$d/$$file; then \
  373 + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
  374 + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
  375 + fi; \
  376 + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
  377 + else \
  378 + test -f $(distdir)/$$file \
  379 + || cp -p $$d/$$file $(distdir)/$$file \
  380 + || exit 1; \
  381 + fi; \
  382 + done
  383 + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
  384 + if test "$$subdir" = .; then :; else \
  385 + test -d "$(distdir)/$$subdir" \
  386 + || $(mkdir_p) "$(distdir)/$$subdir" \
  387 + || exit 1; \
  388 + distdir=`$(am__cd) $(distdir) && pwd`; \
  389 + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
  390 + (cd $$subdir && \
  391 + $(MAKE) $(AM_MAKEFLAGS) \
  392 + top_distdir="$$top_distdir" \
  393 + distdir="$$distdir/$$subdir" \
  394 + distdir) \
  395 + || exit 1; \
  396 + fi; \
  397 + done
  398 + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
  399 + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
  400 + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
  401 + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
  402 + || chmod -R a+r $(distdir)
  403 +dist-gzip: distdir
  404 + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
  405 + $(am__remove_distdir)
  406 +
  407 +dist-bzip2: distdir
  408 + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
  409 + $(am__remove_distdir)
  410 +
  411 +dist-tarZ: distdir
  412 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
  413 + $(am__remove_distdir)
  414 +
  415 +dist-shar: distdir
  416 + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
  417 + $(am__remove_distdir)
  418 +
  419 +dist-zip: distdir
  420 + -rm -f $(distdir).zip
  421 + zip -rq $(distdir).zip $(distdir)
  422 + $(am__remove_distdir)
  423 +
  424 +dist dist-all: distdir
  425 + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
  426 + $(am__remove_distdir)
  427 +
  428 +# This target untars the dist file and tries a VPATH configuration. Then
  429 +# it guarantees that the distribution is self-contained by making another
  430 +# tarfile.
  431 +distcheck: dist
  432 + case '$(DIST_ARCHIVES)' in \
  433 + *.tar.gz*) \
  434 + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
  435 + *.tar.bz2*) \
  436 + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
  437 + *.tar.Z*) \
  438 + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
  439 + *.shar.gz*) \
  440 + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
  441 + *.zip*) \
  442 + unzip $(distdir).zip ;;\
  443 + esac
  444 + chmod -R a-w $(distdir); chmod a+w $(distdir)
  445 + mkdir $(distdir)/_build
  446 + mkdir $(distdir)/_inst
  447 + chmod a-w $(distdir)
  448 + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
  449 + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
  450 + && cd $(distdir)/_build \
  451 + && ../configure --srcdir=.. --prefix="$$dc_install_base" \
  452 + $(DISTCHECK_CONFIGURE_FLAGS) \
  453 + && $(MAKE) $(AM_MAKEFLAGS) \
  454 + && $(MAKE) $(AM_MAKEFLAGS) dvi \
  455 + && $(MAKE) $(AM_MAKEFLAGS) check \
  456 + && $(MAKE) $(AM_MAKEFLAGS) install \
  457 + && $(MAKE) $(AM_MAKEFLAGS) installcheck \
  458 + && $(MAKE) $(AM_MAKEFLAGS) uninstall \
  459 + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
  460 + distuninstallcheck \
  461 + && chmod -R a-w "$$dc_install_base" \
  462 + && ({ \
  463 + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
  464 + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
  465 + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
  466 + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
  467 + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
  468 + } || { rm -rf "$$dc_destdir"; exit 1; }) \
  469 + && rm -rf "$$dc_destdir" \
  470 + && $(MAKE) $(AM_MAKEFLAGS) dist \
  471 + && rm -rf $(DIST_ARCHIVES) \
  472 + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
  473 + $(am__remove_distdir)
  474 + @(echo "$(distdir) archives ready for distribution: "; \
  475 + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
  476 + sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
  477 +distuninstallcheck:
  478 + @cd $(distuninstallcheck_dir) \
  479 + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
  480 + || { echo "ERROR: files left after uninstall:" ; \
  481 + if test -n "$(DESTDIR)"; then \
  482 + echo " (check DESTDIR support)"; \
  483 + fi ; \
  484 + $(distuninstallcheck_listfiles) ; \
  485 + exit 1; } >&2
  486 +distcleancheck: distclean
  487 + @if test '$(srcdir)' = . ; then \
  488 + echo "ERROR: distcleancheck can only run from a VPATH build" ; \
  489 + exit 1 ; \
  490 + fi
  491 + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
  492 + || { echo "ERROR: files left in build directory after distclean:" ; \
  493 + $(distcleancheck_listfiles) ; \
  494 + exit 1; } >&2
  495 +check-am: all-am
  496 +check: check-recursive
  497 +all-am: Makefile $(HEADERS)
  498 +installdirs: installdirs-recursive
  499 +installdirs-am:
  500 + for dir in "$(DESTDIR)$(includedir)"; do \
  501 + test -z "$$dir" || $(mkdir_p) "$$dir"; \
  502 + done
  503 +install: install-recursive
  504 +install-exec: install-exec-recursive
  505 +install-data: install-data-recursive
  506 +uninstall: uninstall-recursive
  507 +
  508 +install-am: all-am
  509 + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
  510 +
  511 +installcheck: installcheck-recursive
  512 +install-strip:
  513 + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
  514 + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
  515 + `test -z '$(STRIP)' || \
  516 + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
  517 +mostlyclean-generic:
  518 +
  519 +clean-generic:
  520 +
  521 +distclean-generic:
  522 + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
  523 +
  524 +maintainer-clean-generic:
  525 + @echo "This command is intended for maintainers to use"
  526 + @echo "it deletes files that may require special tools to rebuild."
  527 +clean: clean-recursive
  528 +
  529 +clean-am: clean-generic mostlyclean-am
  530 +
  531 +distclean: distclean-recursive
  532 + -rm -f $(am__CONFIG_DISTCLEAN_FILES)
  533 + -rm -f Makefile
  534 +distclean-am: clean-am distclean-generic distclean-tags
  535 +
  536 +dvi: dvi-recursive
  537 +
  538 +dvi-am:
  539 +
  540 +html: html-recursive
  541 +
  542 +info: info-recursive
  543 +
  544 +info-am:
  545 +
  546 +install-data-am: install-nobase_includeHEADERS
  547 +
  548 +install-exec-am:
  549 +
  550 +install-info: install-info-recursive
  551 +
  552 +install-man:
  553 +
  554 +installcheck-am:
  555 +
  556 +maintainer-clean: maintainer-clean-recursive
  557 + -rm -f $(am__CONFIG_DISTCLEAN_FILES)
  558 + -rm -rf $(top_srcdir)/autom4te.cache
  559 + -rm -f Makefile
  560 +maintainer-clean-am: distclean-am maintainer-clean-generic
  561 +
  562 +mostlyclean: mostlyclean-recursive
  563 +
  564 +mostlyclean-am: mostlyclean-generic
  565 +
  566 +pdf: pdf-recursive
  567 +
  568 +pdf-am:
  569 +
  570 +ps: ps-recursive
  571 +
  572 +ps-am:
  573 +
  574 +uninstall-am: uninstall-info-am uninstall-nobase_includeHEADERS
  575 +
  576 +uninstall-info: uninstall-info-recursive
  577 +
  578 +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
  579 + check-am clean clean-generic clean-recursive ctags \
  580 + ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \
  581 + dist-tarZ dist-zip distcheck distclean distclean-generic \
  582 + distclean-recursive distclean-tags distcleancheck distdir \
  583 + distuninstallcheck dvi dvi-am html html-am info info-am \
  584 + install install-am install-data install-data-am install-exec \
  585 + install-exec-am install-info install-info-am install-man \
  586 + install-nobase_includeHEADERS install-strip installcheck \
  587 + installcheck-am installdirs installdirs-am maintainer-clean \
  588 + maintainer-clean-generic maintainer-clean-recursive \
  589 + mostlyclean mostlyclean-generic mostlyclean-recursive pdf \
  590 + pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
  591 + uninstall-info-am uninstall-nobase_includeHEADERS
  592 +
  593 +
  594 +#
  595 +# automake adds dependencies that we don't like, so we explicitly remove them
  596 +#
  597 +Makefile:
  598 +# Tell versions [3.59,3.63) of GNU make to not export all variables.
  599 +# Otherwise a system limit (for SysV at least) may be exceeded.
  600 +.NOEXPORT:
594 README
... ... @@ -0,0 +1,594 @@
  1 + Internet Systems Consortium DHCP Distribution
  2 + Version 4.1.0
  3 + 5 December 2008
  4 +
  5 + README FILE
  6 +
  7 +You should read this file carefully before trying to install or use
  8 +the ISC DHCP Distribution.
  9 +
  10 + TABLE OF CONTENTS
  11 +
  12 + 1 WHERE TO FIND DOCUMENTATION
  13 + 2 RELEASE STATUS
  14 + 3 BUILDING THE DHCP DISTRIBUTION
  15 + 3.1 UNPACKING IT
  16 + 3.2 CONFIGURING IT
  17 + 3.2.1 DYNAMIC DNS UPDATES
  18 + 3.2.2 LOCALLY DEFINED OPTIONS
  19 + 3.3 BUILDING IT
  20 + 4 INSTALLING THE DHCP DISTRIBUTION
  21 + 5 USING THE DHCP DISTRIBUTION
  22 + 5.1 FIREWALL RULES
  23 + 5.2 LINUX
  24 + 5.2.1 IF_TR.H NOT FOUND
  25 + 5.2.2 SO_ATTACH_FILTER UNDECLARED
  26 + 5.2.3 PROTOCOL NOT CONFIGURED
  27 + 5.2.4 BROADCAST
  28 + 5.2.6 IP BOOTP AGENT
  29 + 5.2.7 MULTIPLE INTERFACES
  30 + 5.3 SCO
  31 + 5.4 HP-UX
  32 + 5.5 ULTRIX
  33 + 5.6 FreeBSD
  34 + 5.7 NeXTSTEP
  35 + 5.8 SOLARIS
  36 + 5.9 AIX
  37 + 5.10 MacOS X
  38 + 6 SUPPORT
  39 + 6.1 HOW TO REPORT BUGS
  40 +
  41 + WHERE TO FIND DOCUMENTATION
  42 +
  43 +Documentation for this software includes this README file, the
  44 +RELNOTES file, and the manual pages, which are in the server, common,
  45 +client and relay subdirectories. The README file (this file) includes
  46 +late-breaking operational and system-specific information that you
  47 +should read even if you don't want to read the manual pages, and that
  48 +you should *certainly* read if you run into trouble. Internet
  49 +standards relating to the DHCP protocol are stored in the doc
  50 +subdirectory. You will have the best luck reading the manual pages if
  51 +you build this software and then install it, although you can read
  52 +them directly out of the distribution if you need to.
  53 +
  54 +DHCP server documentation is in the dhcpd man page. Information about
  55 +the DHCP server lease database is in the dhcpd.leases man page.
  56 +Server configuration documentation is in the dhcpd.conf man page as
  57 +well as the dhcp-options man page. A sample DHCP server
  58 +configuration is in the file server/dhcpd.conf. The source for the
  59 +dhcpd, dhcpd.leases and dhcpd.conf man pages is in the server/ sub-
  60 +directory in the distribution. The source for the dhcp-options.5
  61 +man page is in the common/ subdirectory.
  62 +
  63 +DHCP Client documentation is in the dhclient man page. DHCP client
  64 +configuration documentation is in the dhclient.conf man page and the
  65 +dhcp-options man page. The DHCP client configuration script is
  66 +documented in the dhclient-script man page. The format of the DHCP
  67 +client lease database is documented in the dhclient.leases man page.
  68 +The source for all these man pages is in the client/ subdirectory in
  69 +the distribution. In addition, the dhcp-options man page should be
  70 +referred to for information about DHCP options.
  71 +
  72 +DHCP relay agent documentation is in the dhcrelay man page, the source
  73 +for which is distributed in the relay/ subdirectory.
  74 +
  75 +To read installed manual pages, use the man command. Type "man page"
  76 +where page is the name of the manual page. This will only work if
  77 +you have installed the ISC DHCP distribution using the ``make install''
  78 +command (described later).
  79 +
  80 +If you want to read manual pages that aren't installed, you can type
  81 +``nroff -man page |more'' where page is the filename of the
  82 +unformatted manual page. The filename of an unformatted manual page
  83 +is the name of the manual page, followed by '.', followed by some
  84 +number - 5 for documentation about files, and 8 for documentation
  85 +about programs. For example, to read the dhcp-options man page,
  86 +you would type ``nroff -man common/dhcp-options.5 |more'', assuming
  87 +your current working directory is the top level directory of the ISC
  88 +DHCP Distribution.
  89 +
  90 +Please note that the pathnames of files to which our manpages refer
  91 +will not be correct for your operating system until after you iterate
  92 +'make install' (so if you're reading a manpage out of the source
  93 +directory, it may not have up-to-date information).
  94 +
  95 + RELEASE STATUS
  96 +
  97 +This is ISC DHCP 4.1.0, which adds new DHCPv6 features omitted from
  98 +ISC DHCP 4.0.0.
  99 +
  100 +In this release, the DHCPv6 server should be fully functional on Linux,
  101 +Solaris, or any BSD. The DHCPv6 client should be similarly functional
  102 +except on Solaris.
  103 +
  104 +The DHCPv4 server, relay, and client, should be fully functional
  105 +on Linux, Solaris, any BSD, HPUX, SCO, NextSTEP, and Irix.
  106 +
  107 +If you are running the DHCP distribution on a machine which is a
  108 +firewall, or if there is a firewall between your DHCP server(s) and
  109 +DHCP clients, please read the section on firewalls which appears later
  110 +in this document.
  111 +
  112 +If you wish to run the DHCP Distribution on Linux, please see the
  113 +Linux-specific notes later in this document. If you wish to run on an
  114 +SCO release, please see the SCO-specific notes later in this document.
  115 +You particularly need to read these notes if you intend to support
  116 +Windows 95 clients. If you are running a version of FreeBSD prior to
  117 +2.2, please read the note on FreeBSD. If you are running HP-UX or
  118 +Ultrix, please read the notes for those operating systems below. If
  119 +you are running NeXTSTEP, please see the notes on NeXTSTEP below.
  120 +
  121 +If you start dhcpd and get a message, "no free bpf", that means you
  122 +need to configure the Berkeley Packet Filter into your operating
  123 +system kernel. On NetBSD, FreeBSD and BSD/os, type ``man bpf'' for
  124 +information. On Digital Unix, type ``man pfilt''.
  125 +
  126 +
  127 + BUILDING THE DHCP DISTRIBUTION
  128 +
  129 + UNPACKING IT
  130 +
  131 +To build the DHCP Distribution, unpack the compressed tar file using
  132 +the tar utility and the gzip command - type something like:
  133 +
  134 + gunzip dhcp-4.1.0.tar.gz
  135 + tar xvf dhcp-4.1.0.tar
  136 +
  137 + CONFIGURING IT
  138 +
  139 +Now, cd to the dhcp-4.1.0 subdirectory that you've just created and
  140 +configure the source tree by typing:
  141 +
  142 + ./configure
  143 +
  144 +If the configure utility can figure out what sort of system you're
  145 +running on, it will create a custom Makefile for you for that
  146 +system; otherwise, it will complain. If it can't figure out what
  147 +system you are using, that system is not supported - you are on
  148 +your own.
  149 +
  150 + DYNAMIC DNS UPDATES
  151 +
  152 +A fully-featured implementation of dynamic DNS updates is included in
  153 +this release. There are no build dependencies with any BIND version
  154 +- this version can and should just use the resolver in your C library.
  155 +
  156 +There is documentation for the DDNS support in the dhcpd.conf manual
  157 +page - see the beginning of this document for information on finding
  158 +manual pages.
  159 +
  160 + LOCALLY DEFINED OPTIONS
  161 +
  162 +In previous versions of the DHCP server there was a mechanism whereby
  163 +options that were not known by the server could be configured using
  164 +a name made up of the option code number and an identifier:
  165 +"option-nnn" This is no longer supported, because it is not future-
  166 +proof. Instead, if you want to use an option that the server doesn't
  167 +know about, you must explicitly define it using the method described
  168 +in the dhcp-options man page under the DEFINING NEW OPTIONS heading.
  169 +
  170 + BUILDING IT
  171 +
  172 +Once you've run configure, just type ``make'', and after a while
  173 +you should have a dhcp server. If you get compile errors on one
  174 +of the supported systems mentioned earlier, please let us know.
  175 +If you get warnings, it's not likely to be a problem - the DHCP
  176 +server compiles completely warning-free on as many architectures
  177 +as we can manage, but there are a few for which this is difficult.
  178 +If you get errors on a system not mentioned above, you will need
  179 +to do some programming or debugging on your own to get the DHCP
  180 +Distribution working.
  181 +
  182 + INSTALLING THE DHCP DISTRIBUTION
  183 +
  184 +Once you have successfully gotten the DHCP Distribution to build, you
  185 +can install it by typing ``make install''. If you already have an old
  186 +version of the DHCP Distribution installed, you may want to save it
  187 +before typing ``make install''.
  188 +
  189 + USING THE DHCP DISTRIBUTION
  190 +
  191 + FIREWALL RULES
  192 +
  193 +If you are running the DHCP server or client on a computer that's also
  194 +acting as a firewall, you must be sure to allow DHCP packets through
  195 +the firewall. In particular, your firewall rules _must_ allow packets
  196 +from IP address 0.0.0.0 to IP address 255.255.255.255 from UDP port 68
  197 +to UDP port 67 through. They must also allow packets from your local
  198 +firewall's IP address and UDP port 67 through to any address your DHCP
  199 +server might serve on UDP port 68. Finally, packets from relay agents
  200 +on port 67 to the DHCP server on port 67, and vice versa, must be
  201 +permitted.
  202 +
  203 +We have noticed that on some systems where we are using a packet
  204 +filter, if you set up a firewall that blocks UDP port 67 and 68
  205 +entirely, packets sent through the packet filter will not be blocked.
  206 +However, unicast packets will be blocked. This can result in strange
  207 +behaviour, particularly on DHCP clients, where the initial packet
  208 +exchange is broadcast, but renewals are unicast - the client will
  209 +appear to be unable to renew until it starts broadcasting its
  210 +renewals, and then suddenly it'll work. The fix is to fix the
  211 +firewall rules as described above.
  212 +
  213 + PARTIAL SERVERS
  214 +
  215 +If you have a server that is connected to two networks, and you only
  216 +want to provide DHCP service on one of those networks (e.g., you are
  217 +using a cable modem and have set up a NAT router), if you don't write
  218 +any subnet declaration for the network you aren't supporting, the DHCP
  219 +server will ignore input on that network interface if it can. If it
  220 +can't, it will refuse to run - some operating systems do not have the
  221 +capability of supporting DHCP on machines with more than one
  222 +interface, and ironically this is the case even if you don't want to
  223 +provide DHCP service on one of those interfaces.
  224 +
  225 + LINUX
  226 +
  227 +There are three big LINUX issues: the all-ones broadcast address,
  228 +Linux 2.1 ip_bootp_agent enabling, and operations with more than one
  229 +network interface. There are also two potential compilation/runtime
  230 +problems for Linux 2.1/2.2: the "SO_ATTACH_FILTER undeclared" problem
  231 +and the "protocol not configured" problem.
  232 +
  233 + LINUX: PROTOCOL NOT CONFIGURED
  234 +
  235 +If you get the following message, it's because your kernel doesn't
  236 +have the linux packetfilter or raw packet socket configured:
  237 +
  238 + Make sure CONFIG_PACKET (Packet socket) and CONFIG_FILTER (Socket
  239 + Filtering) are enabled in your kernel configuration
  240 +
  241 +If this happens, you need to configure your Linux kernel to support
  242 +Socket Filtering and the Packet socket, or to select a kernel provided
  243 +by your Linux distribution that has these enabled (virtually all modern
  244 +ones do by default).
  245 +
  246 + LINUX: BROADCAST
  247 +
  248 +If you are running a recent version of Linux, this won't be a problem,
  249 +but on older versions of Linux (kernel versions prior to 2.2), there
  250 +is a potential problem with the broadcast address being sent
  251 +incorrectly.
  252 +
  253 +In order for dhcpd to work correctly with picky DHCP clients (e.g.,
  254 +Windows 95), it must be able to send packets with an IP destination
  255 +address of 255.255.255.255. Unfortunately, Linux changes an IP
  256 +destination of 255.255.255.255 into the local subnet broadcast address
  257 +(here, that's 192.5.5.223).
  258 +
  259 +This isn't generally a problem on Linux 2.2 and later kernels, since
  260 +we completely bypass the Linux IP stack, but on old versions of Linux
  261 +2.1 and all versions of Linux prior to 2.1, it is a problem - pickier
  262 +DHCP clients connected to the same network as the ISC DHCP server or
  263 +ISC relay agent will not see messages from the DHCP server. It *is*
  264 +possible to run into trouble with this on Linux 2.2 and later if you
  265 +are running a verson of the DHCP server that was compiled on a Linux
  266 +2.0 system, though.
  267 +
  268 +It is possible to work around this problem on some versions of Linux
  269 +by creating a host route from your network interface address to
  270 +255.255.255.255. The command you need to use to do this on Linux
  271 +varies from version to version. The easiest version is:
  272 +
  273 + route add -host 255.255.255.255 dev eth0
  274 +
  275 +On some older Linux systems, you will get an error if you try to do
  276 +this. On those systems, try adding the following entry to your
  277 +/etc/hosts file:
  278 +
  279 +255.255.255.255 all-ones
  280 +
  281 +Then, try:
  282 +
  283 + route add -host all-ones dev eth0
  284 +
  285 +Another route that has worked for some users is:
  286 +
  287 + route add -net 255.255.255.0 dev eth0
  288 +
  289 +If you are not using eth0 as your network interface, you should
  290 +specify the network interface you *are* using in your route command.
  291 +
  292 + LINUX: IP BOOTP AGENT
  293 +
  294 +Some versions of the Linux 2.1 kernel apparently prevent dhcpd from
  295 +working unless you enable it by doing the following:
  296 +
  297 + echo 1 >/proc/sys/net/ipv4/ip_bootp_agent
  298 +
  299 +
  300 + LINUX: MULTIPLE INTERFACES
  301 +
  302 +Very old versions of the Linux kernel do not provide a networking API
  303 +that allows dhcpd to operate correctly if the system has more than one
  304 +broadcast network interface. However, Linux 2.0 kernels with version
  305 +numbers greater than or equal to 2.0.31 add an API feature: the
  306 +SO_BINDTODEVICE socket option. If SO_BINDTODEVICE is present, it is
  307 +possible for dhcpd to operate on Linux with more than one network
  308 +interface. In order to take advantage of this, you must be running a
  309 +2.0.31 or greater kernel, and you must have 2.0.31 or later system
  310 +headers installed *before* you build the DHCP Distribution.
  311 +
  312 +We have heard reports that you must still add routes to 255.255.255.255
  313 +in order for the all-ones broadcast to work, even on 2.0.31 kernels.
  314 +In fact, you now need to add a route for each interface. Hopefully
  315 +the Linux kernel gurus will get this straight eventually.
  316 +
  317 +Linux 2.1 and later kernels do not use SO_BINDTODEVICE or require the
  318 +broadcast address hack, but do support multiple interfaces, using the
  319 +Linux Packet Filter.
  320 +
  321 + LINUX: OpenWrt
  322 +
  323 +DHCP 4.1 has been tested on OpenWrt 7.09 and 8.09. In keeping with
  324 +standard practice, client/scripts now includes a dhclient-script file
  325 +for OpenWrt. However, this is not sufficient by itself to run dhcp on
  326 +OpenWrt; a full OpenWrt package for DHCP is available at
  327 +ftp://ftp.isc.org/isc/dhcp/dhcp-4.1.0-openwrt.tar.gz
  328 +
  329 + LINUX: 802.1q VLAN INTERFACES
  330 +
  331 +If you're using 802.1q vlan interfaces on Linux, it is necessary to
  332 +vconfig the subinterface(s) to rewrite the 802.1q information out of
  333 +packets received by the dhcpd daemon via LPF:
  334 +
  335 + vconfig set_flag eth1.523 1 1
  336 +
  337 +Note that this may affect the performance of your system, since the
  338 +Linux kernel must rewrite packets received via this interface. For
  339 +more information, consult the vconfig man pages.
  340 +
  341 + SCO
  342 +
  343 +ISC DHCP will now work correctly on newer versions of SCO out of the
  344 +box (tested on OpenServer 5.05b, assumed to work on UnixWare 7).
  345 +
  346 +Older versions of SCO have the same problem as Linux (described earlier).
  347 +The thing is, SCO *really* doesn't want to let you add a host route to
  348 +the all-ones broadcast address.
  349 +
  350 +You can try the following:
  351 +
  352 + ifconfig net0 xxx.xxx.xxx.xxx netmask 0xNNNNNNNN broadcast 255.255.255.255
  353 +
  354 +If this doesn't work, you can also try the following strange hack:
  355 +
  356 + ifconfig net0 alias 10.1.1.1 netmask 8.0.0.0
  357 +
  358 +Apparently this works because of an interaction between SCO's support
  359 +for network classes and the weird netmask. The 10.* network is just a
  360 +dummy that can generally be assumed to be safe. Don't ask why this
  361 +works. Just try it. If it works for you, great.
  362 +
  363 + HP-UX
  364 +
  365 +HP-UX has the same problem with the all-ones broadcast address that
  366 +SCO and Linux have. One user reported that adding the following to
  367 +/etc/rc.config.d/netconf helped (you may have to modify this to suit
  368 +your local configuration):
  369 +
  370 +INTERFACE_NAME[0]=lan0
  371 +IP_ADDRESS[0]=1.1.1.1
  372 +SUBNET_MASK[0]=255.255.255.0
  373 +BROADCAST_ADDRESS[0]="255.255.255.255"
  374 +LANCONFIG_ARGS[0]="ether"
  375 +DHCP_ENABLE[0]=0
  376 +
  377 + ULTRIX
  378 +
  379 +Now that we have Ultrix packet filter support, the DHCP Distribution
  380 +on Ultrix should be pretty trouble-free. However, one thing you do
  381 +need to be aware of is that it now requires that the pfilt device be
  382 +configured into your kernel and present in /dev. If you type ``man
  383 +packetfilter'', you will get some information on how to configure your
  384 +kernel for the packet filter (if it isn't already) and how to make an
  385 +entry for it in /dev.
  386 +
  387 + FreeBSD
  388 +
  389 +Versions of FreeBSD prior to 2.2 have a bug in BPF support in that the
  390 +ethernet driver swaps the ethertype field in the ethernet header
  391 +downstream from BPF, which corrupts the output packet. If you are
  392 +running a version of FreeBSD prior to 2.2, and you find that dhcpd
  393 +can't communicate with its clients, you should #define BROKEN_FREEBSD_BPF
  394 +in site.h and recompile.
  395 +
  396 +Modern versions of FreeBSD include the ISC DHCP 3.0 client as part of
  397 +the base system, and the full distribution (for the DHCP server and
  398 +relay agent) is available from the Ports Collection in
  399 +/usr/ports/net/isc-dhcp3, or as a package on FreeBSD installation
  400 +CDROMs.
  401 +
  402 + NeXTSTEP
  403 +
  404 +The NeXTSTEP support uses the NeXTSTEP Berkeley Packet Filter
  405 +extension, which is not included in the base NextStep system. You
  406 +must install this extension in order to get dhcpd or dhclient to work.
  407 +
  408 + SOLARIS
  409 +
  410 +One problem which has been observed and is not fixed in this
  411 +patchlevel has to do with using DLPI on Solaris machines. The symptom
  412 +of this problem is that the DHCP server never receives any requests.
  413 +This has been observed with Solaris 2.6 and Solaris 7 on Intel x86
  414 +systems, although it may occur with other systems as well. If you
  415 +encounter this symptom, and you are running the DHCP server on a
  416 +machine with a single broadcast network interface, you may wish to
  417 +edit the includes/site.h file and uncomment the #define USE_SOCKETS
  418 +line. Then type ``make clean; make''. As an alternative workaround,
  419 +it has been reported that running 'snoop' will cause the dhcp server
  420 +to start receiving packets. So the practice reported to us is to run
  421 +snoop at dhcpd startup time, with arguments to cause it to receive one
  422 +packet and exit.
  423 +
  424 + snoop -c 1 udp port 67 > /dev/null &
  425 +
  426 +The DHCP client on Solaris will only work with DLPI. If you run it
  427 +and it just keeps saying it's sending DHCPREQUEST packets, but never
  428 +gets a response, you may be having DLPI trouble as described above.
  429 +If so, we have no solution to offer at this time, aside from the above
  430 +workaround which should also work here. Also, because Solaris requires
  431 +you to "plumb" an interface before it can be detected by the DHCP client,
  432 +you must either specify the name(s) of the interface(s) you want to
  433 +configure on the command line, or must plumb the interfaces prior to
  434 +invoking the DHCP client. This can be done with ``ifconfig iface plumb'',
  435 +where iface is the name of the interface (e.g., ``ifconfig hme0 plumb'').
  436 +
  437 +It should be noted that Solaris versions from 2.6 onward include a
  438 +DHCP client that you can run with ``/sbin/ifconfig iface dhcp start''
  439 +rather than using the ISC DHCP client, including DHCPv6. Consequently,
  440 +we don't believe there is a need for the client to run on Solaris, and
  441 +have not engineered the needed DHCPv6 modifications for the dhclient-script.
  442 +If you feel this is in error, or have a need, please contact us.
  443 +
  444 + AIX
  445 +
  446 +The AIX support uses the BSD socket API, which cannot differentiate on
  447 +which network interface a broadcast packet was received; thus the DHCP
  448 +server and relay will work only on a single interface. (They do work
  449 +on multi-interface machines if configured to listen on only one of the
  450 +interfaces.)
  451 +
  452 +The ISC DHCP distribution does not include a dhclient-script for AIX--
  453 +AIX comes with a DHCP client. Contribution of a working dhclient-script
  454 +for AIX would be welcome.
  455 +
  456 + MacOS X
  457 +
  458 +The MacOS X system uses a TCP/IP stack derived from FreeBSD with a
  459 +user-friendly interface named the System Configuration Framework.
  460 +As it includes a builtin DHCPv4 client (you are better just using that),
  461 +this text is only about the DHCPv6 client (``dhclient -6 ...''). The DNS
  462 +configuration (domain search list and name servers' addresses) is managed
  463 +by a System Configuration agent, not by /etc/resolv.conf (which is a link
  464 +to /var/run/resolv.conf, which itself only reflects the internal state;
  465 +the System Configuration agent's Dynamic Store).
  466 +
  467 +This means that modifying resolv.conf directly doesn't have the intended
  468 +effect, so the macos script sample uses its own resolv.conf.dhclient6 in
  469 +/var/run, and inserts the contents of this file into the System
  470 +Configuration agent. Because the System Configuration agent expects the
  471 +prefix along with the configured address, and a default router, this is
  472 +not usable (the DHCPv6 protocol does not today deliver this information).
  473 +Instead, ifconfig is directly used for address configuration.
  474 +
  475 +Note the Dynamic Store (from which /var/run/resolv.conf is built) is
  476 +recomputed from scratch when the current location/set is changed, for
  477 +instance when a laptop is resumed from sleep. In this case running the
  478 +dhclient-script could reinstall the resolv.conf.dhclient6 configuration.
  479 +
  480 + SUPPORT
  481 +
  482 +The Internet Systems Consortium DHCP server is developed and distributed
  483 +by ISC in the public trust, thanks to the generous donations of its
  484 +sponsors. ISC now also offers commercial quality support contracts for
  485 +ISC DHCP, more information about ISC Support Contracts can be found at
  486 +the following URL:
  487 +
  488 + http://www.isc.org/sw/support/
  489 +
  490 +Please understand that we may not respond to support inquiries unless
  491 +you have a support contract. ISC will continue its practice of always
  492 +responding to critical items that effect the entire community, and
  493 +responding to all other requests for support upon ISC's mailing lists
  494 +on a best-effort basis.
  495 +
  496 +However, ISC DHCP has attracted a fairly sizable following on the
  497 +Internet, which means that there are a lot of knowledgeable users who
  498 +may be able to help you if you get stuck. These people generally
  499 +read the dhcp-users@isc.org mailing list. Be sure to provide as much
  500 +detail in your query as possible.
  501 +
  502 +If you are going to use ISC DHCP, you should probably subscribe to
  503 +the dhcp-users or dhcp-announce mailing lists.
  504 +
  505 +WHERE TO SEND FEATURE REQUESTS: We like to hear your feedback. We may
  506 +not respond to it all the time, but we do read it. If ISC DHCP doesn't
  507 +work well for you, or you have an idea that would improve it for your
  508 +use, please send your suggestion to dhcp-suggest@isc.org. This is also
  509 +an excellent place to send patches that add new features.
  510 +
  511 +WHERE TO REPORT BUGS: If you want the act of sending in a bug report
  512 +to result in you getting help in the form of a fixed piece of
  513 +software, you are asking for help. Your bug report is helpful to us,
  514 +but fundamentally you are making a support request, so please use the
  515 +addresses described in the previous paragraphs. If you are _sure_ that
  516 +your problem is a bug, and not user error, or if your bug report
  517 +includes a patch, you can send it to our ticketing system at
  518 +dhcp-bugs@isc.org. If you have not received a notice that the ticket
  519 +has been resolved, then we're still working on it.
  520 +
  521 +PLEASE DO NOT REPORT BUGS IN OLD SOFTWARE RELEASES! Fetch the latest
  522 +release and see if the bug is still in that version of the software,
  523 +and if it's not, _then_ report it. ISC release versions always have
  524 +three numbers, for example: 1.2.3. The 'major release' is 1 here,
  525 +the 'minor release' is 2, and the 'maintenance release' is 3. ISC
  526 +will accept bug reports against the most recent two major.minor
  527 +releases: for example, 1.0.0 and 0.9.0, but not 0.8.* or prior.
  528 +
  529 +PLEASE take a moment to determine where the ISC DHCP distribution
  530 +that you're using came from. ISC DHCP is sometimes heavily modified
  531 +by integrators in various operating systems - it's not that we
  532 +feel that our software is perfect and incapable of having bugs, but
  533 +rather that it is very frustrating to find out after many days trying
  534 +to help someone that the sources you're looking at aren't what they're
  535 +running. When in doubt, please retrieve the source distribution from
  536 +ISC's web page and install it.
  537 +
  538 + HOW TO REPORT BUGS OR REQUEST HELP
  539 +
  540 +When you report bugs or ask for help, please provide us complete
  541 +information. A list of information we need follows. Please read it
  542 +carefully, and put all the information you can into your initial bug
  543 +report. This will save us a great deal of time and more informative
  544 +bug reports are more likely to get handled more quickly overall.
  545 +
  546 + 1. The specific operating system name and version of the
  547 + machine on which the DHCP server or client is running.
  548 + 2. The specific operating system name and version of the
  549 + machine on which the client is running, if you are having
  550 + trouble getting a client working with the server.
  551