mirror of
https://gitlab.isc.org/isc-projects/dhcp
synced 2025-08-22 09:57:20 +00:00
-n [master]
Add code to support the standards version of DDNS
This commit is contained in:
parent
1d851cff2c
commit
d7d9c0c7c3
82
Makefile.in
82
Makefile.in
@ -1,7 +1,7 @@
|
|||||||
# Makefile.in generated by automake 1.13.1 from Makefile.am.
|
# Makefile.in generated by automake 1.14 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -15,23 +15,51 @@
|
|||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
|
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
am__make_dryrun = \
|
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||||
{ \
|
am__make_running_with_option = \
|
||||||
am__dry=no; \
|
case $${target_option-} in \
|
||||||
|
?) ;; \
|
||||||
|
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||||
|
"target option '$${target_option-}' specified" >&2; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
has_opt=no; \
|
||||||
|
sane_makeflags=$$MAKEFLAGS; \
|
||||||
|
if $(am__is_gnu_make); then \
|
||||||
|
sane_makeflags=$$MFLAGS; \
|
||||||
|
else \
|
||||||
case $$MAKEFLAGS in \
|
case $$MAKEFLAGS in \
|
||||||
*\\[\ \ ]*) \
|
*\\[\ \ ]*) \
|
||||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
bs=\\; \
|
||||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||||
*) \
|
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||||
for am__flg in $$MAKEFLAGS; do \
|
|
||||||
case $$am__flg in \
|
|
||||||
*=*|--*) ;; \
|
|
||||||
*n*) am__dry=yes; break;; \
|
|
||||||
esac; \
|
|
||||||
done;; \
|
|
||||||
esac; \
|
esac; \
|
||||||
test $$am__dry = yes; \
|
fi; \
|
||||||
}
|
skip_next=no; \
|
||||||
|
strip_trailopt () \
|
||||||
|
{ \
|
||||||
|
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||||
|
}; \
|
||||||
|
for flg in $$sane_makeflags; do \
|
||||||
|
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||||
|
case $$flg in \
|
||||||
|
*=*|--*) continue;; \
|
||||||
|
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||||
|
-*I?*) strip_trailopt 'I';; \
|
||||||
|
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||||
|
-*O?*) strip_trailopt 'O';; \
|
||||||
|
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||||
|
-*l?*) strip_trailopt 'l';; \
|
||||||
|
-[dEDm]) skip_next=yes;; \
|
||||||
|
-[JT]) skip_next=yes;; \
|
||||||
|
esac; \
|
||||||
|
case $$flg in \
|
||||||
|
*$$target_option*) has_opt=yes; break;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
test $$has_opt = yes
|
||||||
|
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||||
|
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
@ -54,7 +82,8 @@ subdir = .
|
|||||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
||||||
$(top_srcdir)/configure $(am__configure_deps) \
|
$(top_srcdir)/configure $(am__configure_deps) \
|
||||||
$(top_srcdir)/doc/devel/doxyfile.in $(nobase_include_HEADERS) \
|
$(top_srcdir)/doc/devel/doxyfile.in $(nobase_include_HEADERS) \
|
||||||
README config.guess config.sub depcomp install-sh missing
|
README compile config.guess config.sub depcomp install-sh \
|
||||||
|
missing
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
@ -380,13 +409,12 @@ uninstall-nobase_includeHEADERS:
|
|||||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||||
$(am__recursive_targets):
|
$(am__recursive_targets):
|
||||||
@fail= failcom='exit 1'; \
|
@fail=; \
|
||||||
for f in x $$MAKEFLAGS; do \
|
if $(am__make_keepgoing); then \
|
||||||
case $$f in \
|
failcom='fail=yes'; \
|
||||||
*=* | --[!k]*);; \
|
else \
|
||||||
*k*) failcom='fail=yes';; \
|
failcom='exit 1'; \
|
||||||
esac; \
|
fi; \
|
||||||
done; \
|
|
||||||
dot_seen=no; \
|
dot_seen=no; \
|
||||||
target=`echo $@ | sed s/-recursive//`; \
|
target=`echo $@ | sed s/-recursive//`; \
|
||||||
case "$@" in \
|
case "$@" in \
|
||||||
@ -561,10 +589,16 @@ dist-xz: distdir
|
|||||||
$(am__post_remove_distdir)
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
dist-tarZ: distdir
|
dist-tarZ: distdir
|
||||||
|
@echo WARNING: "Support for shar distribution archives is" \
|
||||||
|
"deprecated." >&2
|
||||||
|
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||||
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||||
$(am__post_remove_distdir)
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
dist-shar: distdir
|
dist-shar: distdir
|
||||||
|
@echo WARNING: "Support for distribution archives compressed with" \
|
||||||
|
"legacy program 'compress' is deprecated." >&2
|
||||||
|
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||||
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||||
$(am__post_remove_distdir)
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
|
9
RELNOTES
9
RELNOTES
@ -75,6 +75,15 @@ work on other platforms. Please report any problems and suggested fixes to
|
|||||||
- Add support for using classes with v6.
|
- Add support for using classes with v6.
|
||||||
[ISC-Bugs #26510]
|
[ISC-Bugs #26510]
|
||||||
|
|
||||||
|
- Update the DDNS code to current standards and allow for sharing
|
||||||
|
of DDNS entries between v4 and v6 clients. The new code is used
|
||||||
|
if the ddns-update-style is set to "standard", the older code is
|
||||||
|
still available if ddns-update-style is set to "interim". The
|
||||||
|
oldest DDNS code "ad-hoc" has been removed. Thanks to Thomas Pegeot
|
||||||
|
who submitted a patch for this issue. This patch is based on
|
||||||
|
that work with some modifications.
|
||||||
|
[ISC-Bugs 21139]
|
||||||
|
|
||||||
Changes since 4.2.5
|
Changes since 4.2.5
|
||||||
|
|
||||||
- Address static analysis warnings.
|
- Address static analysis warnings.
|
||||||
|
411
aclocal.m4
vendored
411
aclocal.m4
vendored
@ -1,6 +1,6 @@
|
|||||||
# generated automatically by aclocal 1.12.4 -*- Autoconf -*-
|
# generated automatically by aclocal 1.14 -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1996-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -11,6 +11,7 @@
|
|||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
# PARTICULAR PURPOSE.
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
|
||||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
m4_ifndef([AC_AUTOCONF_VERSION],
|
||||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||||
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
|
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
|
||||||
@ -19,7 +20,7 @@ You have another version of autoconf. It may work, but is not guaranteed to.
|
|||||||
If you have problems, you may need to regenerate the build system entirely.
|
If you have problems, you may need to regenerate the build system entirely.
|
||||||
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
|
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
|
||||||
|
|
||||||
# Copyright (C) 2002-2012 Free Software Foundation, Inc.
|
# Copyright (C) 2002-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -31,10 +32,10 @@ To do so, use the procedure documented by the package, typically 'autoreconf'.])
|
|||||||
# generated from the m4 files accompanying Automake X.Y.
|
# generated from the m4 files accompanying Automake X.Y.
|
||||||
# (This private macro should not be called outside this file.)
|
# (This private macro should not be called outside this file.)
|
||||||
AC_DEFUN([AM_AUTOMAKE_VERSION],
|
AC_DEFUN([AM_AUTOMAKE_VERSION],
|
||||||
[am__api_version='1.12'
|
[am__api_version='1.14'
|
||||||
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
|
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
|
||||||
dnl require some minimum version. Point them to the right macro.
|
dnl require some minimum version. Point them to the right macro.
|
||||||
m4_if([$1], [1.12.4], [],
|
m4_if([$1], [1.14], [],
|
||||||
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
|
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
|
||||||
])
|
])
|
||||||
|
|
||||||
@ -50,14 +51,14 @@ m4_define([_AM_AUTOCONF_VERSION], [])
|
|||||||
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
|
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
|
||||||
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
|
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
|
||||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
||||||
[AM_AUTOMAKE_VERSION([1.12.4])dnl
|
[AM_AUTOMAKE_VERSION([1.14])dnl
|
||||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
m4_ifndef([AC_AUTOCONF_VERSION],
|
||||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||||
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
|
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
|
||||||
|
|
||||||
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
|
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 2001-2012 Free Software Foundation, Inc.
|
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -110,7 +111,7 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
|
|||||||
|
|
||||||
# AM_CONDITIONAL -*- Autoconf -*-
|
# AM_CONDITIONAL -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1997-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1997-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -141,7 +142,7 @@ AC_CONFIG_COMMANDS_PRE(
|
|||||||
Usually this means the macro was only invoked conditionally.]])
|
Usually this means the macro was only invoked conditionally.]])
|
||||||
fi])])
|
fi])])
|
||||||
|
|
||||||
# Copyright (C) 1999-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -332,7 +333,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
|
|||||||
|
|
||||||
# Generate code to set up dependency tracking. -*- Autoconf -*-
|
# Generate code to set up dependency tracking. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1999-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -343,7 +344,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
|
|||||||
# ------------------------------
|
# ------------------------------
|
||||||
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
|
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||||
[{
|
[{
|
||||||
# Autoconf 2.62 quotes --file arguments for eval, but not when files
|
# Older Autoconf quotes --file arguments for eval, but not when files
|
||||||
# are listed without --file. Let's play safe and only enable the eval
|
# are listed without --file. Let's play safe and only enable the eval
|
||||||
# if we detect the quoting.
|
# if we detect the quoting.
|
||||||
case $CONFIG_FILES in
|
case $CONFIG_FILES in
|
||||||
@ -372,7 +373,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
|
|||||||
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
|
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
|
||||||
test -z "$DEPDIR" && continue
|
test -z "$DEPDIR" && continue
|
||||||
am__include=`sed -n 's/^am__include = //p' < "$mf"`
|
am__include=`sed -n 's/^am__include = //p' < "$mf"`
|
||||||
test -z "am__include" && continue
|
test -z "$am__include" && continue
|
||||||
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
|
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
|
||||||
# Find all dependency output files, they are included files with
|
# Find all dependency output files, they are included files with
|
||||||
# $(DEPDIR) in their names. We invoke sed twice because it is the
|
# $(DEPDIR) in their names. We invoke sed twice because it is the
|
||||||
@ -408,7 +409,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
|||||||
|
|
||||||
# Do all the work for Automake. -*- Autoconf -*-
|
# Do all the work for Automake. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1996-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -417,6 +418,12 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
|||||||
# This macro actually does too much. Some checks are only needed if
|
# This macro actually does too much. Some checks are only needed if
|
||||||
# your package does certain things. But this isn't really a big deal.
|
# your package does certain things. But this isn't really a big deal.
|
||||||
|
|
||||||
|
dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
|
||||||
|
m4_define([AC_PROG_CC],
|
||||||
|
m4_defn([AC_PROG_CC])
|
||||||
|
[_AM_PROG_CC_C_O
|
||||||
|
])
|
||||||
|
|
||||||
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
|
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
|
||||||
# AM_INIT_AUTOMAKE([OPTIONS])
|
# AM_INIT_AUTOMAKE([OPTIONS])
|
||||||
# -----------------------------------------------
|
# -----------------------------------------------
|
||||||
@ -429,7 +436,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
|||||||
# arguments mandatory, and then we can depend on a new Autoconf
|
# arguments mandatory, and then we can depend on a new Autoconf
|
||||||
# release and drop the old call support.
|
# release and drop the old call support.
|
||||||
AC_DEFUN([AM_INIT_AUTOMAKE],
|
AC_DEFUN([AM_INIT_AUTOMAKE],
|
||||||
[AC_PREREQ([2.62])dnl
|
[AC_PREREQ([2.65])dnl
|
||||||
dnl Autoconf wants to disallow AM_ names. We explicitly allow
|
dnl Autoconf wants to disallow AM_ names. We explicitly allow
|
||||||
dnl the ones we care about.
|
dnl the ones we care about.
|
||||||
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
|
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
|
||||||
@ -459,8 +466,7 @@ AC_SUBST([CYGPATH_W])
|
|||||||
dnl Distinguish between old-style and new-style calls.
|
dnl Distinguish between old-style and new-style calls.
|
||||||
m4_ifval([$2],
|
m4_ifval([$2],
|
||||||
[AC_DIAGNOSE([obsolete],
|
[AC_DIAGNOSE([obsolete],
|
||||||
[$0: two- and three-arguments forms are deprecated. For more info, see:
|
[$0: two- and three-arguments forms are deprecated.])
|
||||||
http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_INIT_AUTOMAKE-invocation])
|
|
||||||
m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
|
m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
|
||||||
AC_SUBST([PACKAGE], [$1])dnl
|
AC_SUBST([PACKAGE], [$1])dnl
|
||||||
AC_SUBST([VERSION], [$2])],
|
AC_SUBST([VERSION], [$2])],
|
||||||
@ -514,22 +520,60 @@ AC_PROVIDE_IFELSE([AC_PROG_OBJC],
|
|||||||
[_AM_DEPENDENCIES([OBJC])],
|
[_AM_DEPENDENCIES([OBJC])],
|
||||||
[m4_define([AC_PROG_OBJC],
|
[m4_define([AC_PROG_OBJC],
|
||||||
m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
|
m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
|
||||||
dnl Support for Objective C++ was only introduced in Autoconf 2.65,
|
AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
|
||||||
dnl but we still cater to Autoconf 2.62.
|
|
||||||
m4_ifdef([AC_PROG_OBJCXX],
|
|
||||||
[AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
|
|
||||||
[_AM_DEPENDENCIES([OBJCXX])],
|
[_AM_DEPENDENCIES([OBJCXX])],
|
||||||
[m4_define([AC_PROG_OBJCXX],
|
[m4_define([AC_PROG_OBJCXX],
|
||||||
m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])])dnl
|
m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
|
||||||
])
|
])
|
||||||
_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
|
AC_REQUIRE([AM_SILENT_RULES])dnl
|
||||||
dnl The 'parallel-tests' driver may need to know about EXEEXT, so add the
|
dnl The testsuite driver may need to know about EXEEXT, so add the
|
||||||
dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
|
dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
|
||||||
dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
|
dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
|
||||||
AC_CONFIG_COMMANDS_PRE(dnl
|
AC_CONFIG_COMMANDS_PRE(dnl
|
||||||
[m4_provide_if([_AM_COMPILER_EXEEXT],
|
[m4_provide_if([_AM_COMPILER_EXEEXT],
|
||||||
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
|
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
|
||||||
])
|
|
||||||
|
# POSIX will say in a future version that running "rm -f" with no argument
|
||||||
|
# is OK; and we want to be able to make that assumption in our Makefile
|
||||||
|
# recipes. So use an aggressive probe to check that the usage we want is
|
||||||
|
# actually supported "in the wild" to an acceptable degree.
|
||||||
|
# See automake bug#10828.
|
||||||
|
# To make any issue more visible, cause the running configure to be aborted
|
||||||
|
# by default if the 'rm' program in use doesn't match our expectations; the
|
||||||
|
# user can still override this though.
|
||||||
|
if rm -f && rm -fr && rm -rf; then : OK; else
|
||||||
|
cat >&2 <<'END'
|
||||||
|
Oops!
|
||||||
|
|
||||||
|
Your 'rm' program seems unable to run without file operands specified
|
||||||
|
on the command line, even when the '-f' option is present. This is contrary
|
||||||
|
to the behaviour of most rm programs out there, and not conforming with
|
||||||
|
the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
|
||||||
|
|
||||||
|
Please tell bug-automake@gnu.org about your system, including the value
|
||||||
|
of your $PATH and any error possibly output before this message. This
|
||||||
|
can help us improve future automake versions.
|
||||||
|
|
||||||
|
END
|
||||||
|
if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
|
||||||
|
echo 'Configuration will proceed anyway, since you have set the' >&2
|
||||||
|
echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
|
||||||
|
echo >&2
|
||||||
|
else
|
||||||
|
cat >&2 <<'END'
|
||||||
|
Aborting the configuration process, to ensure you take notice of the issue.
|
||||||
|
|
||||||
|
You can download and install GNU coreutils to get an 'rm' implementation
|
||||||
|
that behaves properly: <http://www.gnu.org/software/coreutils/>.
|
||||||
|
|
||||||
|
If you want to complete the configuration process using your problematic
|
||||||
|
'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
|
||||||
|
to "yes", and re-run configure.
|
||||||
|
|
||||||
|
END
|
||||||
|
AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
|
||||||
|
fi
|
||||||
|
fi])
|
||||||
|
|
||||||
dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
|
dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
|
||||||
dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
|
dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
|
||||||
@ -537,7 +581,6 @@ dnl mangled by Autoconf and run in a shell conditional statement.
|
|||||||
m4_define([_AC_COMPILER_EXEEXT],
|
m4_define([_AC_COMPILER_EXEEXT],
|
||||||
m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
|
m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
|
||||||
|
|
||||||
|
|
||||||
# When config.status generates a header, we must update the stamp-h file.
|
# When config.status generates a header, we must update the stamp-h file.
|
||||||
# This file resides in the same directory as the config header
|
# This file resides in the same directory as the config header
|
||||||
# that is generated. The stamp files are numbered to have different names.
|
# that is generated. The stamp files are numbered to have different names.
|
||||||
@ -559,7 +602,7 @@ for _am_header in $config_headers :; do
|
|||||||
done
|
done
|
||||||
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
|
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
|
||||||
|
|
||||||
# Copyright (C) 2001-2012 Free Software Foundation, Inc.
|
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -580,7 +623,7 @@ if test x"${install_sh}" != xset; then
|
|||||||
fi
|
fi
|
||||||
AC_SUBST([install_sh])])
|
AC_SUBST([install_sh])])
|
||||||
|
|
||||||
# Copyright (C) 2003-2012 Free Software Foundation, Inc.
|
# Copyright (C) 2003-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -602,7 +645,7 @@ AC_SUBST([am__leading_dot])])
|
|||||||
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
|
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
|
||||||
# From Jim Meyering
|
# From Jim Meyering
|
||||||
|
|
||||||
# Copyright (C) 1996-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -635,11 +678,9 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
|
|
||||||
|
|
||||||
# Check to see how 'make' treats includes. -*- Autoconf -*-
|
# Check to see how 'make' treats includes. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 2001-2012 Free Software Foundation, Inc.
|
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -689,7 +730,7 @@ rm -f confinc confmf
|
|||||||
|
|
||||||
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
|
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1997-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1997-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -704,8 +745,8 @@ AC_SUBST($1)])
|
|||||||
|
|
||||||
# AM_MISSING_HAS_RUN
|
# AM_MISSING_HAS_RUN
|
||||||
# ------------------
|
# ------------------
|
||||||
# Define MISSING if not defined so far and test if it supports --run.
|
# Define MISSING if not defined so far and test if it is modern enough.
|
||||||
# If it does, set am_missing_run to use it, otherwise, to nothing.
|
# If it is, set am_missing_run to use it, otherwise, to nothing.
|
||||||
AC_DEFUN([AM_MISSING_HAS_RUN],
|
AC_DEFUN([AM_MISSING_HAS_RUN],
|
||||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||||
AC_REQUIRE_AUX_FILE([missing])dnl
|
AC_REQUIRE_AUX_FILE([missing])dnl
|
||||||
@ -718,8 +759,8 @@ if test x"${MISSING+set}" != xset; then
|
|||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
# Use eval to expand $SHELL
|
# Use eval to expand $SHELL
|
||||||
if eval "$MISSING --run true"; then
|
if eval "$MISSING --is-lightweight"; then
|
||||||
am_missing_run="$MISSING --run "
|
am_missing_run="$MISSING "
|
||||||
else
|
else
|
||||||
am_missing_run=
|
am_missing_run=
|
||||||
AC_MSG_WARN(['missing' script is too old or missing])
|
AC_MSG_WARN(['missing' script is too old or missing])
|
||||||
@ -728,7 +769,7 @@ fi
|
|||||||
|
|
||||||
# Helper functions for option handling. -*- Autoconf -*-
|
# Helper functions for option handling. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 2001-2012 Free Software Foundation, Inc.
|
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -757,9 +798,73 @@ AC_DEFUN([_AM_SET_OPTIONS],
|
|||||||
AC_DEFUN([_AM_IF_OPTION],
|
AC_DEFUN([_AM_IF_OPTION],
|
||||||
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
|
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
|
||||||
|
|
||||||
|
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||||
|
#
|
||||||
|
# This file is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# _AM_PROG_CC_C_O
|
||||||
|
# ---------------
|
||||||
|
# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC
|
||||||
|
# to automatically call this.
|
||||||
|
AC_DEFUN([_AM_PROG_CC_C_O],
|
||||||
|
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||||
|
AC_REQUIRE_AUX_FILE([compile])dnl
|
||||||
|
AC_LANG_PUSH([C])dnl
|
||||||
|
AC_CACHE_CHECK(
|
||||||
|
[whether $CC understands -c and -o together],
|
||||||
|
[am_cv_prog_cc_c_o],
|
||||||
|
[AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
|
||||||
|
# Make sure it works both with $CC and with simple cc.
|
||||||
|
# Following AC_PROG_CC_C_O, we do the test twice because some
|
||||||
|
# compilers refuse to overwrite an existing .o file with -o,
|
||||||
|
# though they will create one.
|
||||||
|
am_cv_prog_cc_c_o=yes
|
||||||
|
for am_i in 1 2; do
|
||||||
|
if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
|
||||||
|
&& test -f conftest2.$ac_objext; then
|
||||||
|
: OK
|
||||||
|
else
|
||||||
|
am_cv_prog_cc_c_o=no
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
rm -f core conftest*
|
||||||
|
unset am_i])
|
||||||
|
if test "$am_cv_prog_cc_c_o" != yes; then
|
||||||
|
# Losing compiler, so override with the script.
|
||||||
|
# FIXME: It is wrong to rewrite CC.
|
||||||
|
# But if we don't then we get into trouble of one sort or another.
|
||||||
|
# A longer-term fix would be to have automake use am__CC in this case,
|
||||||
|
# and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
|
||||||
|
CC="$am_aux_dir/compile $CC"
|
||||||
|
fi
|
||||||
|
AC_LANG_POP([C])])
|
||||||
|
|
||||||
|
# For backward compatibility.
|
||||||
|
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
|
||||||
|
|
||||||
|
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||||
|
#
|
||||||
|
# This file is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# AM_RUN_LOG(COMMAND)
|
||||||
|
# -------------------
|
||||||
|
# Run COMMAND, save the exit status in ac_status, and log it.
|
||||||
|
# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
|
||||||
|
AC_DEFUN([AM_RUN_LOG],
|
||||||
|
[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
|
||||||
|
($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
|
||||||
|
ac_status=$?
|
||||||
|
echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
|
||||||
|
(exit $ac_status); }])
|
||||||
|
|
||||||
# Check to make sure that the build environment is sane. -*- Autoconf -*-
|
# Check to make sure that the build environment is sane. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1996-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -840,7 +945,67 @@ AC_CONFIG_COMMANDS_PRE(
|
|||||||
rm -f conftest.file
|
rm -f conftest.file
|
||||||
])
|
])
|
||||||
|
|
||||||
# Copyright (C) 2001-2012 Free Software Foundation, Inc.
|
# Copyright (C) 2009-2013 Free Software Foundation, Inc.
|
||||||
|
#
|
||||||
|
# This file is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# AM_SILENT_RULES([DEFAULT])
|
||||||
|
# --------------------------
|
||||||
|
# Enable less verbose build rules; with the default set to DEFAULT
|
||||||
|
# ("yes" being less verbose, "no" or empty being verbose).
|
||||||
|
AC_DEFUN([AM_SILENT_RULES],
|
||||||
|
[AC_ARG_ENABLE([silent-rules], [dnl
|
||||||
|
AS_HELP_STRING(
|
||||||
|
[--enable-silent-rules],
|
||||||
|
[less verbose build output (undo: "make V=1")])
|
||||||
|
AS_HELP_STRING(
|
||||||
|
[--disable-silent-rules],
|
||||||
|
[verbose build output (undo: "make V=0")])dnl
|
||||||
|
])
|
||||||
|
case $enable_silent_rules in @%:@ (((
|
||||||
|
yes) AM_DEFAULT_VERBOSITY=0;;
|
||||||
|
no) AM_DEFAULT_VERBOSITY=1;;
|
||||||
|
*) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
|
||||||
|
esac
|
||||||
|
dnl
|
||||||
|
dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
|
||||||
|
dnl do not support nested variable expansions.
|
||||||
|
dnl See automake bug#9928 and bug#10237.
|
||||||
|
am_make=${MAKE-make}
|
||||||
|
AC_CACHE_CHECK([whether $am_make supports nested variables],
|
||||||
|
[am_cv_make_support_nested_variables],
|
||||||
|
[if AS_ECHO([['TRUE=$(BAR$(V))
|
||||||
|
BAR0=false
|
||||||
|
BAR1=true
|
||||||
|
V=1
|
||||||
|
am__doit:
|
||||||
|
@$(TRUE)
|
||||||
|
.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
|
||||||
|
am_cv_make_support_nested_variables=yes
|
||||||
|
else
|
||||||
|
am_cv_make_support_nested_variables=no
|
||||||
|
fi])
|
||||||
|
if test $am_cv_make_support_nested_variables = yes; then
|
||||||
|
dnl Using '$V' instead of '$(V)' breaks IRIX make.
|
||||||
|
AM_V='$(V)'
|
||||||
|
AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
|
||||||
|
else
|
||||||
|
AM_V=$AM_DEFAULT_VERBOSITY
|
||||||
|
AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
|
||||||
|
fi
|
||||||
|
AC_SUBST([AM_V])dnl
|
||||||
|
AM_SUBST_NOTMAKE([AM_V])dnl
|
||||||
|
AC_SUBST([AM_DEFAULT_V])dnl
|
||||||
|
AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
|
||||||
|
AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
|
||||||
|
AM_BACKSLASH='\'
|
||||||
|
AC_SUBST([AM_BACKSLASH])dnl
|
||||||
|
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
|
||||||
|
])
|
||||||
|
|
||||||
|
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -868,7 +1033,7 @@ fi
|
|||||||
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
|
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
|
||||||
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
||||||
|
|
||||||
# Copyright (C) 2006-2012 Free Software Foundation, Inc.
|
# Copyright (C) 2006-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -887,7 +1052,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
|
|||||||
|
|
||||||
# Check how to create a tarball. -*- Autoconf -*-
|
# Check how to create a tarball. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 2004-2012 Free Software Foundation, Inc.
|
# Copyright (C) 2004-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -906,76 +1071,114 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
|
|||||||
# Substitute a variable $(am__untar) that extract such
|
# Substitute a variable $(am__untar) that extract such
|
||||||
# a tarball read from stdin.
|
# a tarball read from stdin.
|
||||||
# $(am__untar) < result.tar
|
# $(am__untar) < result.tar
|
||||||
|
#
|
||||||
AC_DEFUN([_AM_PROG_TAR],
|
AC_DEFUN([_AM_PROG_TAR],
|
||||||
[# Always define AMTAR for backward compatibility. Yes, it's still used
|
[# Always define AMTAR for backward compatibility. Yes, it's still used
|
||||||
# in the wild :-( We should find a proper way to deprecate it ...
|
# in the wild :-( We should find a proper way to deprecate it ...
|
||||||
AC_SUBST([AMTAR], ['$${TAR-tar}'])
|
AC_SUBST([AMTAR], ['$${TAR-tar}'])
|
||||||
m4_if([$1], [v7],
|
|
||||||
[am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
|
# We'll loop over all known methods to create a tar archive until one works.
|
||||||
[m4_case([$1], [ustar],, [pax],,
|
|
||||||
[m4_fatal([Unknown tar format])])
|
|
||||||
AC_MSG_CHECKING([how to create a $1 tar archive])
|
|
||||||
# Loop over all known methods to create a tar archive until one works.
|
|
||||||
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
|
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
|
||||||
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
|
|
||||||
# Do not fold the above two line into one, because Tru64 sh and
|
|
||||||
# Solaris sh will not grok spaces in the rhs of '-'.
|
|
||||||
for _am_tool in $_am_tools
|
|
||||||
do
|
|
||||||
case $_am_tool in
|
|
||||||
gnutar)
|
|
||||||
for _am_tar in tar gnutar gtar;
|
|
||||||
do
|
|
||||||
AM_RUN_LOG([$_am_tar --version]) && break
|
|
||||||
done
|
|
||||||
am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
|
|
||||||
am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
|
|
||||||
am__untar="$_am_tar -xf -"
|
|
||||||
;;
|
|
||||||
plaintar)
|
|
||||||
# Must skip GNU tar: if it does not support --format= it doesn't create
|
|
||||||
# ustar tarball either.
|
|
||||||
(tar --version) >/dev/null 2>&1 && continue
|
|
||||||
am__tar='tar chf - "$$tardir"'
|
|
||||||
am__tar_='tar chf - "$tardir"'
|
|
||||||
am__untar='tar xf -'
|
|
||||||
;;
|
|
||||||
pax)
|
|
||||||
am__tar='pax -L -x $1 -w "$$tardir"'
|
|
||||||
am__tar_='pax -L -x $1 -w "$tardir"'
|
|
||||||
am__untar='pax -r'
|
|
||||||
;;
|
|
||||||
cpio)
|
|
||||||
am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
|
|
||||||
am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
|
|
||||||
am__untar='cpio -i -H $1 -d'
|
|
||||||
;;
|
|
||||||
none)
|
|
||||||
am__tar=false
|
|
||||||
am__tar_=false
|
|
||||||
am__untar=false
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# If the value was cached, stop now. We just wanted to have am__tar
|
m4_if([$1], [v7],
|
||||||
# and am__untar set.
|
[am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
|
||||||
test -n "${am_cv_prog_tar_$1}" && break
|
|
||||||
|
|
||||||
# tar/untar a dummy directory, and stop if the command works
|
[m4_case([$1],
|
||||||
|
[ustar],
|
||||||
|
[# The POSIX 1988 'ustar' format is defined with fixed-size fields.
|
||||||
|
# There is notably a 21 bits limit for the UID and the GID. In fact,
|
||||||
|
# the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
|
||||||
|
# and bug#13588).
|
||||||
|
am_max_uid=2097151 # 2^21 - 1
|
||||||
|
am_max_gid=$am_max_uid
|
||||||
|
# The $UID and $GID variables are not portable, so we need to resort
|
||||||
|
# to the POSIX-mandated id(1) utility. Errors in the 'id' calls
|
||||||
|
# below are definitely unexpected, so allow the users to see them
|
||||||
|
# (that is, avoid stderr redirection).
|
||||||
|
am_uid=`id -u || echo unknown`
|
||||||
|
am_gid=`id -g || echo unknown`
|
||||||
|
AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
|
||||||
|
if test $am_uid -le $am_max_uid; then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
_am_tools=none
|
||||||
|
fi
|
||||||
|
AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
|
||||||
|
if test $am_gid -le $am_max_gid; then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
_am_tools=none
|
||||||
|
fi],
|
||||||
|
|
||||||
|
[pax],
|
||||||
|
[],
|
||||||
|
|
||||||
|
[m4_fatal([Unknown tar format])])
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([how to create a $1 tar archive])
|
||||||
|
|
||||||
|
# Go ahead even if we have the value already cached. We do so because we
|
||||||
|
# need to set the values for the 'am__tar' and 'am__untar' variables.
|
||||||
|
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
|
||||||
|
|
||||||
|
for _am_tool in $_am_tools; do
|
||||||
|
case $_am_tool in
|
||||||
|
gnutar)
|
||||||
|
for _am_tar in tar gnutar gtar; do
|
||||||
|
AM_RUN_LOG([$_am_tar --version]) && break
|
||||||
|
done
|
||||||
|
am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
|
||||||
|
am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
|
||||||
|
am__untar="$_am_tar -xf -"
|
||||||
|
;;
|
||||||
|
plaintar)
|
||||||
|
# Must skip GNU tar: if it does not support --format= it doesn't create
|
||||||
|
# ustar tarball either.
|
||||||
|
(tar --version) >/dev/null 2>&1 && continue
|
||||||
|
am__tar='tar chf - "$$tardir"'
|
||||||
|
am__tar_='tar chf - "$tardir"'
|
||||||
|
am__untar='tar xf -'
|
||||||
|
;;
|
||||||
|
pax)
|
||||||
|
am__tar='pax -L -x $1 -w "$$tardir"'
|
||||||
|
am__tar_='pax -L -x $1 -w "$tardir"'
|
||||||
|
am__untar='pax -r'
|
||||||
|
;;
|
||||||
|
cpio)
|
||||||
|
am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
|
||||||
|
am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
|
||||||
|
am__untar='cpio -i -H $1 -d'
|
||||||
|
;;
|
||||||
|
none)
|
||||||
|
am__tar=false
|
||||||
|
am__tar_=false
|
||||||
|
am__untar=false
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# If the value was cached, stop now. We just wanted to have am__tar
|
||||||
|
# and am__untar set.
|
||||||
|
test -n "${am_cv_prog_tar_$1}" && break
|
||||||
|
|
||||||
|
# tar/untar a dummy directory, and stop if the command works.
|
||||||
|
rm -rf conftest.dir
|
||||||
|
mkdir conftest.dir
|
||||||
|
echo GrepMe > conftest.dir/file
|
||||||
|
AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
|
||||||
|
rm -rf conftest.dir
|
||||||
|
if test -s conftest.tar; then
|
||||||
|
AM_RUN_LOG([$am__untar <conftest.tar])
|
||||||
|
AM_RUN_LOG([cat conftest.dir/file])
|
||||||
|
grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
|
||||||
|
fi
|
||||||
|
done
|
||||||
rm -rf conftest.dir
|
rm -rf conftest.dir
|
||||||
mkdir conftest.dir
|
|
||||||
echo GrepMe > conftest.dir/file
|
|
||||||
AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
|
|
||||||
rm -rf conftest.dir
|
|
||||||
if test -s conftest.tar; then
|
|
||||||
AM_RUN_LOG([$am__untar <conftest.tar])
|
|
||||||
grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
rm -rf conftest.dir
|
|
||||||
|
|
||||||
AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
|
AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
|
||||||
AC_MSG_RESULT([$am_cv_prog_tar_$1])])
|
AC_MSG_RESULT([$am_cv_prog_tar_$1])])
|
||||||
|
|
||||||
AC_SUBST([am__tar])
|
AC_SUBST([am__tar])
|
||||||
AC_SUBST([am__untar])
|
AC_SUBST([am__untar])
|
||||||
]) # _AM_PROG_TAR
|
]) # _AM_PROG_TAR
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# Makefile.in generated by automake 1.13.1 from Makefile.am.
|
# Makefile.in generated by automake 1.14 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -16,23 +16,51 @@
|
|||||||
|
|
||||||
|
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
am__make_dryrun = \
|
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||||
{ \
|
am__make_running_with_option = \
|
||||||
am__dry=no; \
|
case $${target_option-} in \
|
||||||
|
?) ;; \
|
||||||
|
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||||
|
"target option '$${target_option-}' specified" >&2; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
has_opt=no; \
|
||||||
|
sane_makeflags=$$MAKEFLAGS; \
|
||||||
|
if $(am__is_gnu_make); then \
|
||||||
|
sane_makeflags=$$MFLAGS; \
|
||||||
|
else \
|
||||||
case $$MAKEFLAGS in \
|
case $$MAKEFLAGS in \
|
||||||
*\\[\ \ ]*) \
|
*\\[\ \ ]*) \
|
||||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
bs=\\; \
|
||||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||||
*) \
|
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||||
for am__flg in $$MAKEFLAGS; do \
|
|
||||||
case $$am__flg in \
|
|
||||||
*=*|--*) ;; \
|
|
||||||
*n*) am__dry=yes; break;; \
|
|
||||||
esac; \
|
|
||||||
done;; \
|
|
||||||
esac; \
|
esac; \
|
||||||
test $$am__dry = yes; \
|
fi; \
|
||||||
}
|
skip_next=no; \
|
||||||
|
strip_trailopt () \
|
||||||
|
{ \
|
||||||
|
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||||
|
}; \
|
||||||
|
for flg in $$sane_makeflags; do \
|
||||||
|
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||||
|
case $$flg in \
|
||||||
|
*=*|--*) continue;; \
|
||||||
|
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||||
|
-*I?*) strip_trailopt 'I';; \
|
||||||
|
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||||
|
-*O?*) strip_trailopt 'O';; \
|
||||||
|
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||||
|
-*l?*) strip_trailopt 'l';; \
|
||||||
|
-[dEDm]) skip_next=yes;; \
|
||||||
|
-[JT]) skip_next=yes;; \
|
||||||
|
esac; \
|
||||||
|
case $$flg in \
|
||||||
|
*$$target_option*) has_opt=yes; break;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
test $$has_opt = yes
|
||||||
|
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||||
|
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
@ -347,6 +375,7 @@ uninstall-sbinPROGRAMS:
|
|||||||
|
|
||||||
clean-sbinPROGRAMS:
|
clean-sbinPROGRAMS:
|
||||||
-test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS)
|
-test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS)
|
||||||
|
|
||||||
dhclient$(EXEEXT): $(dhclient_OBJECTS) $(dhclient_DEPENDENCIES) $(EXTRA_dhclient_DEPENDENCIES)
|
dhclient$(EXEEXT): $(dhclient_OBJECTS) $(dhclient_DEPENDENCIES) $(EXTRA_dhclient_DEPENDENCIES)
|
||||||
@rm -f dhclient$(EXEEXT)
|
@rm -f dhclient$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(dhclient_OBJECTS) $(dhclient_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(dhclient_OBJECTS) $(dhclient_LDADD) $(LIBS)
|
||||||
@ -366,14 +395,14 @@ distclean-compile:
|
|||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
||||||
|
|
||||||
.c.obj:
|
.c.obj:
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
install-man5: $(man_MANS)
|
install-man5: $(man_MANS)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
@list1=''; \
|
@list1=''; \
|
||||||
|
@ -119,69 +119,6 @@ static int check_timing6(struct client_state *client, u_int8_t msg_type,
|
|||||||
extern int onetry;
|
extern int onetry;
|
||||||
extern int stateless;
|
extern int stateless;
|
||||||
|
|
||||||
/*
|
|
||||||
* The "best" default DUID, since we cannot predict any information
|
|
||||||
* about the system (such as whether or not the hardware addresses are
|
|
||||||
* integrated into the motherboard or similar), is the "LLT", link local
|
|
||||||
* plus time, DUID. For real stateless "LL" is better.
|
|
||||||
*
|
|
||||||
* Once generated, this duid is stored into the state database, and
|
|
||||||
* retained across restarts.
|
|
||||||
*
|
|
||||||
* For the time being, there is probably a different state database for
|
|
||||||
* every daemon, so this winds up being a per-interface identifier...which
|
|
||||||
* is not how it is intended. Upcoming rearchitecting the client should
|
|
||||||
* address this "one daemon model."
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
form_duid(struct data_string *duid, const char *file, int line)
|
|
||||||
{
|
|
||||||
struct interface_info *ip;
|
|
||||||
int len;
|
|
||||||
|
|
||||||
/* For now, just use the first interface on the list. */
|
|
||||||
ip = interfaces;
|
|
||||||
|
|
||||||
if (ip == NULL)
|
|
||||||
log_fatal("Impossible condition at %s:%d.", MDL);
|
|
||||||
|
|
||||||
if ((ip->hw_address.hlen == 0) ||
|
|
||||||
(ip->hw_address.hlen > sizeof(ip->hw_address.hbuf)))
|
|
||||||
log_fatal("Impossible hardware address length at %s:%d.", MDL);
|
|
||||||
|
|
||||||
if (duid_type == 0)
|
|
||||||
duid_type = stateless ? DUID_LL : DUID_LLT;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 2 bytes for the 'duid type' field.
|
|
||||||
* 2 bytes for the 'htype' field.
|
|
||||||
* (DUID_LLT) 4 bytes for the 'current time'.
|
|
||||||
* enough bytes for the hardware address (note that hw_address has
|
|
||||||
* the 'htype' on byte zero).
|
|
||||||
*/
|
|
||||||
len = 4 + (ip->hw_address.hlen - 1);
|
|
||||||
if (duid_type == DUID_LLT)
|
|
||||||
len += 4;
|
|
||||||
if (!buffer_allocate(&duid->buffer, len, MDL))
|
|
||||||
log_fatal("no memory for default DUID!");
|
|
||||||
duid->data = duid->buffer->data;
|
|
||||||
duid->len = len;
|
|
||||||
|
|
||||||
/* Basic Link Local Address type of DUID. */
|
|
||||||
if (duid_type == DUID_LLT) {
|
|
||||||
putUShort(duid->buffer->data, DUID_LLT);
|
|
||||||
putUShort(duid->buffer->data + 2, ip->hw_address.hbuf[0]);
|
|
||||||
putULong(duid->buffer->data + 4, cur_time - DUID_TIME_EPOCH);
|
|
||||||
memcpy(duid->buffer->data + 8, ip->hw_address.hbuf + 1,
|
|
||||||
ip->hw_address.hlen - 1);
|
|
||||||
} else {
|
|
||||||
putUShort(duid->buffer->data, DUID_LL);
|
|
||||||
putUShort(duid->buffer->data + 2, ip->hw_address.hbuf[0]);
|
|
||||||
memcpy(duid->buffer->data + 4, ip->hw_address.hbuf + 1,
|
|
||||||
ip->hw_address.hlen - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Assign DHCPv6 port numbers as a client.
|
* Assign DHCPv6 port numbers as a client.
|
||||||
*/
|
*/
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.\" $Id: dhclient.8,v 1.36 2011/04/15 21:58:12 sar Exp $
|
.\" $Id: dhclient.8,v 1.36 2011/04/15 21:58:12 sar Exp $
|
||||||
.\"
|
.\"
|
||||||
.\" Copyright (c) 2004,2007-2012 by Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (c) 2004,2007-2013 by Internet Systems Consortium, Inc. ("ISC")
|
||||||
.\" Copyright (c) 1996-2003 by Internet Software Consortium
|
.\" Copyright (c) 1996-2003 by Internet Software Consortium
|
||||||
.\"
|
.\"
|
||||||
.\" Permission to use, copy, modify, and distribute this software for any
|
.\" Permission to use, copy, modify, and distribute this software for any
|
||||||
@ -56,6 +56,12 @@ dhclient - Dynamic Host Configuration Protocol Client
|
|||||||
]
|
]
|
||||||
]
|
]
|
||||||
[
|
[
|
||||||
|
.B -i
|
||||||
|
]
|
||||||
|
[
|
||||||
|
.B -I
|
||||||
|
]
|
||||||
|
[
|
||||||
.B -D
|
.B -D
|
||||||
.I LL|LLT
|
.I LL|LLT
|
||||||
]
|
]
|
||||||
@ -322,6 +328,17 @@ Set the giaddr field of all packets to the \fIrelay\fR IP address
|
|||||||
simulating a relay agent. This is for testing pruposes only and
|
simulating a relay agent. This is for testing pruposes only and
|
||||||
should not be expected to work in any consistent or useful way.
|
should not be expected to work in any consistent or useful way.
|
||||||
.TP
|
.TP
|
||||||
|
.BI \-i
|
||||||
|
Use a DUID with DHCPv4 clients. If no DUID is available in the
|
||||||
|
lease file one will be constructed and saved. The DUID will be
|
||||||
|
used to contstuct a RFC4361 style client id that will be included
|
||||||
|
in the client's messages. This client id can be overridden by
|
||||||
|
setting a client id in the configuration file. Overridding the
|
||||||
|
client id in this fashion is discouraged.
|
||||||
|
.TP
|
||||||
|
.BI \-I
|
||||||
|
Use the standard DDNS scheme from RFCs 4701 & 4702.
|
||||||
|
.TP
|
||||||
.BI \--version
|
.BI \--version
|
||||||
Print version number and exit.
|
Print version number and exit.
|
||||||
.PP
|
.PP
|
||||||
@ -351,8 +368,10 @@ DHCPv6 \fBdhclient\fR creates an identifier based on the link-layer address
|
|||||||
(DUID-LL) if it is running in stateless mode (with \fB\-S\fR, not
|
(DUID-LL) if it is running in stateless mode (with \fB\-S\fR, not
|
||||||
requesting an address), or it creates an identifier based on the
|
requesting an address), or it creates an identifier based on the
|
||||||
link-layer address plus a timestamp (DUID-LLT) if it is running in
|
link-layer address plus a timestamp (DUID-LLT) if it is running in
|
||||||
stateful mode (without \fB\-S\fR, requesting an address). \fB\-D\fR
|
stateful mode (without \fB\-S\fR, requesting an address). When DHCPv4
|
||||||
overrides this default, with a value of either \fILL\fR or \fILLT\fR.
|
is configued to use a DUID using \fB\-i\fR option the default is to use
|
||||||
|
a DUID-LLT. \fB\-D\fR
|
||||||
|
overrides these default, with a value of either \fILL\fR or \fILLT\fR.
|
||||||
.TP
|
.TP
|
||||||
.BI \-N
|
.BI \-N
|
||||||
.\" TODO: is this for telling an already running dhclient?
|
.\" TODO: is this for telling an already running dhclient?
|
||||||
|
@ -62,6 +62,8 @@ struct sockaddr_in sockaddr_broadcast;
|
|||||||
struct in_addr giaddr;
|
struct in_addr giaddr;
|
||||||
struct data_string default_duid;
|
struct data_string default_duid;
|
||||||
int duid_type = 0;
|
int duid_type = 0;
|
||||||
|
int duid_v4 = 0;
|
||||||
|
int std_dhcid = 0;
|
||||||
|
|
||||||
/* ASSERT_STATE() does nothing now; it used to be
|
/* ASSERT_STATE() does nothing now; it used to be
|
||||||
assert (state_is == state_shouldbe). */
|
assert (state_is == state_shouldbe). */
|
||||||
@ -287,12 +289,9 @@ main(int argc, char **argv) {
|
|||||||
wanted_ia_na = 0;
|
wanted_ia_na = 0;
|
||||||
}
|
}
|
||||||
wanted_ia_pd++;
|
wanted_ia_pd++;
|
||||||
|
#endif /* DHCPv6 */
|
||||||
} else if (!strcmp(argv[i], "-D")) {
|
} else if (!strcmp(argv[i], "-D")) {
|
||||||
if (local_family_set && (local_family == AF_INET)) {
|
duid_v4 = 1;
|
||||||
usage();
|
|
||||||
}
|
|
||||||
local_family_set = 1;
|
|
||||||
local_family = AF_INET6;
|
|
||||||
if (++i == argc)
|
if (++i == argc)
|
||||||
usage();
|
usage();
|
||||||
if (!strcasecmp(argv[i], "LL")) {
|
if (!strcasecmp(argv[i], "LL")) {
|
||||||
@ -302,7 +301,12 @@ main(int argc, char **argv) {
|
|||||||
} else {
|
} else {
|
||||||
usage();
|
usage();
|
||||||
}
|
}
|
||||||
#endif /* DHCPv6 */
|
} else if (!strcmp(argv[i], "-i")) {
|
||||||
|
/* enable DUID support for DHCPv4 clients */
|
||||||
|
duid_v4 = 1;
|
||||||
|
} else if (!strcmp(argv[i], "-I")) {
|
||||||
|
/* enable standard DHCID support for DDNS updates */
|
||||||
|
std_dhcid = 1;
|
||||||
} else if (!strcmp(argv[i], "-v")) {
|
} else if (!strcmp(argv[i], "-v")) {
|
||||||
quiet = 0;
|
quiet = 0;
|
||||||
} else if (!strcmp(argv[i], "--version")) {
|
} else if (!strcmp(argv[i], "--version")) {
|
||||||
@ -564,12 +568,13 @@ main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
srandom(seed + cur_time + (unsigned)getpid());
|
srandom(seed + cur_time + (unsigned)getpid());
|
||||||
|
|
||||||
/* Start a configuration state machine for each interface. */
|
|
||||||
#ifdef DHCPv6
|
/*
|
||||||
if (local_family == AF_INET6) {
|
* Establish a default DUID. We always do so for v6 and
|
||||||
/* Establish a default DUID. This may be moved to the
|
* do so if desired for v4 via the -D or -i options
|
||||||
* DHCPv4 area later.
|
*/
|
||||||
*/
|
if ((local_family == AF_INET6) ||
|
||||||
|
((local_family == AF_INET) && (duid_v4 == 1))) {
|
||||||
if (default_duid.len == 0) {
|
if (default_duid.len == 0) {
|
||||||
if (default_duid.buffer != NULL)
|
if (default_duid.buffer != NULL)
|
||||||
data_string_forget(&default_duid, MDL);
|
data_string_forget(&default_duid, MDL);
|
||||||
@ -577,7 +582,11 @@ main(int argc, char **argv) {
|
|||||||
form_duid(&default_duid, MDL);
|
form_duid(&default_duid, MDL);
|
||||||
write_duid(&default_duid);
|
write_duid(&default_duid);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Start a configuration state machine for each interface. */
|
||||||
|
#ifdef DHCPv6
|
||||||
|
if (local_family == AF_INET6) {
|
||||||
for (ip = interfaces ; ip != NULL ; ip = ip->next) {
|
for (ip = interfaces ; ip != NULL ; ip = ip->next) {
|
||||||
for (client = ip->client ; client != NULL ;
|
for (client = ip->client ; client != NULL ;
|
||||||
client = client->next) {
|
client = client->next) {
|
||||||
@ -709,9 +718,9 @@ static void usage()
|
|||||||
|
|
||||||
log_fatal("Usage: dhclient "
|
log_fatal("Usage: dhclient "
|
||||||
#ifdef DHCPv6
|
#ifdef DHCPv6
|
||||||
"[-4|-6] [-SNTP1dvrx] [-nw] [-p <port>] [-D LL|LLT]\n"
|
"[-4|-6] [-SNTPI1dvrxi] [-nw] [-p <port>] [-D LL|LLT] \n"
|
||||||
#else /* DHCPv6 */
|
#else /* DHCPv6 */
|
||||||
"[-1dvrx] [-nw] [-p <port>]\n"
|
"[-I1dvrxi] [-nw] [-p <port>] [-D LL|LLT] \n"
|
||||||
#endif /* DHCPv6 */
|
#endif /* DHCPv6 */
|
||||||
" [-s server-addr] [-cf config-file] "
|
" [-s server-addr] [-cf config-file] "
|
||||||
"[-lf lease-file]\n"
|
"[-lf lease-file]\n"
|
||||||
@ -2296,24 +2305,24 @@ make_client_options(struct client_state *client, struct client_lease *lease,
|
|||||||
unsigned i;
|
unsigned i;
|
||||||
struct option_cache *oc;
|
struct option_cache *oc;
|
||||||
struct option *option = NULL;
|
struct option *option = NULL;
|
||||||
struct buffer *bp = (struct buffer *)0;
|
struct buffer *bp = NULL;
|
||||||
|
|
||||||
/* If there are any leftover options, get rid of them. */
|
/* If there are any leftover options, get rid of them. */
|
||||||
if (*op)
|
if (*op)
|
||||||
option_state_dereference (op, MDL);
|
option_state_dereference(op, MDL);
|
||||||
|
|
||||||
/* Allocate space for options. */
|
/* Allocate space for options. */
|
||||||
option_state_allocate (op, MDL);
|
option_state_allocate(op, MDL);
|
||||||
|
|
||||||
/* Send the server identifier if provided. */
|
/* Send the server identifier if provided. */
|
||||||
if (sid)
|
if (sid)
|
||||||
save_option (&dhcp_universe, *op, sid);
|
save_option(&dhcp_universe, *op, sid);
|
||||||
|
|
||||||
oc = (struct option_cache *)0;
|
oc = NULL;
|
||||||
|
|
||||||
/* Send the requested address if provided. */
|
/* Send the requested address if provided. */
|
||||||
if (rip) {
|
if (rip) {
|
||||||
client -> requested_address = *rip;
|
client->requested_address = *rip;
|
||||||
i = DHO_DHCP_REQUESTED_ADDRESS;
|
i = DHO_DHCP_REQUESTED_ADDRESS;
|
||||||
if (!(option_code_hash_lookup(&option, dhcp_universe.code_hash,
|
if (!(option_code_hash_lookup(&option, dhcp_universe.code_hash,
|
||||||
&i, 0, MDL) &&
|
&i, 0, MDL) &&
|
||||||
@ -2321,22 +2330,22 @@ make_client_options(struct client_state *client, struct client_lease *lease,
|
|||||||
option, MDL)))
|
option, MDL)))
|
||||||
log_error ("can't make requested address cache.");
|
log_error ("can't make requested address cache.");
|
||||||
else {
|
else {
|
||||||
save_option (&dhcp_universe, *op, oc);
|
save_option(&dhcp_universe, *op, oc);
|
||||||
option_cache_dereference (&oc, MDL);
|
option_cache_dereference(&oc, MDL);
|
||||||
}
|
}
|
||||||
option_dereference(&option, MDL);
|
option_dereference(&option, MDL);
|
||||||
} else {
|
} else {
|
||||||
client -> requested_address.len = 0;
|
client->requested_address.len = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
i = DHO_DHCP_MESSAGE_TYPE;
|
i = DHO_DHCP_MESSAGE_TYPE;
|
||||||
if (!(option_code_hash_lookup(&option, dhcp_universe.code_hash, &i, 0,
|
if (!(option_code_hash_lookup(&option, dhcp_universe.code_hash, &i, 0,
|
||||||
MDL) &&
|
MDL) &&
|
||||||
make_const_option_cache(&oc, NULL, type, 1, option, MDL)))
|
make_const_option_cache(&oc, NULL, type, 1, option, MDL)))
|
||||||
log_error ("can't make message type.");
|
log_error("can't make message type.");
|
||||||
else {
|
else {
|
||||||
save_option (&dhcp_universe, *op, oc);
|
save_option(&dhcp_universe, *op, oc);
|
||||||
option_cache_dereference (&oc, MDL);
|
option_cache_dereference(&oc, MDL);
|
||||||
}
|
}
|
||||||
option_dereference(&option, MDL);
|
option_dereference(&option, MDL);
|
||||||
|
|
||||||
@ -2349,8 +2358,8 @@ make_client_options(struct client_state *client, struct client_lease *lease,
|
|||||||
if (prl[i]->universe == &dhcp_universe)
|
if (prl[i]->universe == &dhcp_universe)
|
||||||
len++;
|
len++;
|
||||||
|
|
||||||
if (!buffer_allocate (&bp, len, MDL))
|
if (!buffer_allocate(&bp, len, MDL))
|
||||||
log_error ("can't make parameter list buffer.");
|
log_error("can't make parameter list buffer.");
|
||||||
else {
|
else {
|
||||||
unsigned code = DHO_DHCP_PARAMETER_REQUEST_LIST;
|
unsigned code = DHO_DHCP_PARAMETER_REQUEST_LIST;
|
||||||
|
|
||||||
@ -2364,15 +2373,69 @@ make_client_options(struct client_state *client, struct client_lease *lease,
|
|||||||
&code, 0, MDL) &&
|
&code, 0, MDL) &&
|
||||||
make_const_option_cache(&oc, &bp, NULL, len,
|
make_const_option_cache(&oc, &bp, NULL, len,
|
||||||
option, MDL)))
|
option, MDL)))
|
||||||
log_error ("can't make option cache");
|
log_error("can't make option cache");
|
||||||
else {
|
else {
|
||||||
save_option (&dhcp_universe, *op, oc);
|
save_option(&dhcp_universe, *op, oc);
|
||||||
option_cache_dereference (&oc, MDL);
|
option_cache_dereference(&oc, MDL);
|
||||||
}
|
}
|
||||||
option_dereference(&option, MDL);
|
option_dereference(&option, MDL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If requested (duid_v4 == 1) add an RFC4361 compliant client-identifier
|
||||||
|
* This can be overridden by including a client id in the configuration
|
||||||
|
* file.
|
||||||
|
*/
|
||||||
|
if (duid_v4 == 1) {
|
||||||
|
struct data_string client_identifier;
|
||||||
|
int hw_idx, hw_len;
|
||||||
|
|
||||||
|
memset(&client_identifier, 0, sizeof(client_identifier));
|
||||||
|
client_identifier.len = 1 + 4 + default_duid.len;
|
||||||
|
if (!buffer_allocate(&client_identifier.buffer,
|
||||||
|
client_identifier.len, MDL))
|
||||||
|
log_fatal("no memory for default DUID!");
|
||||||
|
client_identifier.data = client_identifier.buffer->data;
|
||||||
|
|
||||||
|
i = DHO_DHCP_CLIENT_IDENTIFIER;
|
||||||
|
|
||||||
|
/* Client-identifier type : 1 byte */
|
||||||
|
*client_identifier.buffer->data = 255;
|
||||||
|
|
||||||
|
/* IAID : 4 bytes
|
||||||
|
* we use the low 4 bytes from the interface address
|
||||||
|
*/
|
||||||
|
if (client->interface->hw_address.hlen > 4) {
|
||||||
|
hw_idx = client->interface->hw_address.hlen - 4;
|
||||||
|
hw_len = 4;
|
||||||
|
} else {
|
||||||
|
hw_idx = 0;
|
||||||
|
hw_len = client->interface->hw_address.hlen;
|
||||||
|
}
|
||||||
|
memcpy(&client_identifier.buffer->data + 5 - hw_len,
|
||||||
|
client->interface->hw_address.hbuf + hw_idx,
|
||||||
|
hw_len);
|
||||||
|
|
||||||
|
/* Add the default duid */
|
||||||
|
memcpy(&client_identifier.buffer->data+(1+4),
|
||||||
|
default_duid.data, default_duid.len);
|
||||||
|
|
||||||
|
/* And save the option */
|
||||||
|
if (!(option_code_hash_lookup(&option, dhcp_universe.code_hash,
|
||||||
|
&i, 0, MDL) &&
|
||||||
|
make_const_option_cache(&oc, NULL,
|
||||||
|
(u_int8_t *)client_identifier.data,
|
||||||
|
client_identifier.len,
|
||||||
|
option, MDL)))
|
||||||
|
log_error ("can't make requested client id cache..");
|
||||||
|
else {
|
||||||
|
save_option (&dhcp_universe, *op, oc);
|
||||||
|
option_cache_dereference (&oc, MDL);
|
||||||
|
}
|
||||||
|
option_dereference(&option, MDL);
|
||||||
|
}
|
||||||
|
|
||||||
/* Run statements that need to be run on transmission. */
|
/* Run statements that need to be run on transmission. */
|
||||||
if (client->config->on_transmission)
|
if (client->config->on_transmission)
|
||||||
execute_statements_in_scope(NULL, NULL, NULL, client,
|
execute_statements_in_scope(NULL, NULL, NULL, client,
|
||||||
@ -2778,6 +2841,69 @@ write_options(struct client_state *client, struct option_state *options,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The "best" default DUID, since we cannot predict any information
|
||||||
|
* about the system (such as whether or not the hardware addresses are
|
||||||
|
* integrated into the motherboard or similar), is the "LLT", link local
|
||||||
|
* plus time, DUID. For real stateless "LL" is better.
|
||||||
|
*
|
||||||
|
* Once generated, this duid is stored into the state database, and
|
||||||
|
* retained across restarts.
|
||||||
|
*
|
||||||
|
* For the time being, there is probably a different state database for
|
||||||
|
* every daemon, so this winds up being a per-interface identifier...which
|
||||||
|
* is not how it is intended. Upcoming rearchitecting the client should
|
||||||
|
* address this "one daemon model."
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
form_duid(struct data_string *duid, const char *file, int line)
|
||||||
|
{
|
||||||
|
struct interface_info *ip;
|
||||||
|
int len;
|
||||||
|
|
||||||
|
/* For now, just use the first interface on the list. */
|
||||||
|
ip = interfaces;
|
||||||
|
|
||||||
|
if (ip == NULL)
|
||||||
|
log_fatal("Impossible condition at %s:%d.", MDL);
|
||||||
|
|
||||||
|
if ((ip->hw_address.hlen == 0) ||
|
||||||
|
(ip->hw_address.hlen > sizeof(ip->hw_address.hbuf)))
|
||||||
|
log_fatal("Impossible hardware address length at %s:%d.", MDL);
|
||||||
|
|
||||||
|
if (duid_type == 0)
|
||||||
|
duid_type = stateless ? DUID_LL : DUID_LLT;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 2 bytes for the 'duid type' field.
|
||||||
|
* 2 bytes for the 'htype' field.
|
||||||
|
* (DUID_LLT) 4 bytes for the 'current time'.
|
||||||
|
* enough bytes for the hardware address (note that hw_address has
|
||||||
|
* the 'htype' on byte zero).
|
||||||
|
*/
|
||||||
|
len = 4 + (ip->hw_address.hlen - 1);
|
||||||
|
if (duid_type == DUID_LLT)
|
||||||
|
len += 4;
|
||||||
|
if (!buffer_allocate(&duid->buffer, len, MDL))
|
||||||
|
log_fatal("no memory for default DUID!");
|
||||||
|
duid->data = duid->buffer->data;
|
||||||
|
duid->len = len;
|
||||||
|
|
||||||
|
/* Basic Link Local Address type of DUID. */
|
||||||
|
if (duid_type == DUID_LLT) {
|
||||||
|
putUShort(duid->buffer->data, DUID_LLT);
|
||||||
|
putUShort(duid->buffer->data + 2, ip->hw_address.hbuf[0]);
|
||||||
|
putULong(duid->buffer->data + 4, cur_time - DUID_TIME_EPOCH);
|
||||||
|
memcpy(duid->buffer->data + 8, ip->hw_address.hbuf + 1,
|
||||||
|
ip->hw_address.hlen - 1);
|
||||||
|
} else {
|
||||||
|
putUShort(duid->buffer->data, DUID_LL);
|
||||||
|
putUShort(duid->buffer->data + 2, ip->hw_address.hbuf[0]);
|
||||||
|
memcpy(duid->buffer->data + 4, ip->hw_address.hbuf + 1,
|
||||||
|
ip->hw_address.hlen - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Write the default DUID to the lease store. */
|
/* Write the default DUID to the lease store. */
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
write_duid(struct data_string *duid)
|
write_duid(struct data_string *duid)
|
||||||
@ -3991,6 +4117,7 @@ client_dns_update(struct client_state *client, dhcp_ddns_cb_t *ddns_cb)
|
|||||||
struct option_cache *oc;
|
struct option_cache *oc;
|
||||||
int ignorep;
|
int ignorep;
|
||||||
int result;
|
int result;
|
||||||
|
int ddns_v4_type;
|
||||||
isc_result_t rcode;
|
isc_result_t rcode;
|
||||||
|
|
||||||
/* If we didn't send an FQDN option, we certainly aren't going to
|
/* If we didn't send an FQDN option, we certainly aren't going to
|
||||||
@ -4033,48 +4160,82 @@ client_dns_update(struct client_state *client, dhcp_ddns_cb_t *ddns_cb)
|
|||||||
&global_scope, oc, MDL))
|
&global_scope, oc, MDL))
|
||||||
return ISC_R_SUCCESS;
|
return ISC_R_SUCCESS;
|
||||||
|
|
||||||
/* If this is a DHCPv6 client update, make a dhcid string out of
|
/*
|
||||||
* the DUID. If this is a DHCPv4 client update, choose either
|
* Construct the DHCID value for use in the DDNS update process
|
||||||
* the client identifier, if there is one, or the interface's
|
* We have the newer standard version and the older interim version
|
||||||
* MAC address.
|
* chosen by the '-I' option. The interim version is left as is
|
||||||
|
* for backwards compatibility. The standard version is based on
|
||||||
|
* RFC 4701 section 3.3
|
||||||
*/
|
*/
|
||||||
|
|
||||||
result = 0;
|
result = 0;
|
||||||
POST(result);
|
POST(result);
|
||||||
memset(&client_identifier, 0, sizeof(client_identifier));
|
memset(&client_identifier, 0, sizeof(client_identifier));
|
||||||
|
|
||||||
|
if (std_dhcid == 1) {
|
||||||
|
/* standard style */
|
||||||
|
ddns_cb->dhcid_class = dns_rdatatype_dhcid;
|
||||||
|
ddns_v4_type = 1;
|
||||||
|
} else {
|
||||||
|
/* interim style */
|
||||||
|
ddns_cb->dhcid_class = dns_rdatatype_txt;
|
||||||
|
/* for backwards compatibility */
|
||||||
|
ddns_v4_type = DHO_DHCP_CLIENT_IDENTIFIER;
|
||||||
|
}
|
||||||
if (client->active_lease != NULL) {
|
if (client->active_lease != NULL) {
|
||||||
if (((oc =
|
/* V6 request, get the client identifier, then
|
||||||
lookup_option(&dhcpv6_universe, client->sent_options,
|
* construct the dhcid for either standard
|
||||||
D6O_CLIENTID)) != NULL) &&
|
* or interim */
|
||||||
evaluate_option_cache(&client_identifier, NULL, NULL,
|
if (((oc = lookup_option(&dhcpv6_universe,
|
||||||
client, client->sent_options, NULL,
|
client->sent_options,
|
||||||
|
D6O_CLIENTID)) != NULL) &&
|
||||||
|
evaluate_option_cache(&client_identifier, NULL,
|
||||||
|
NULL, client,
|
||||||
|
client->sent_options, NULL,
|
||||||
&global_scope, oc, MDL)) {
|
&global_scope, oc, MDL)) {
|
||||||
/* RFC4701 defines type '2' as being for the DUID
|
result = get_dhcid(ddns_cb, 2,
|
||||||
* field. We aren't using RFC4701 DHCID RR's yet,
|
|
||||||
* but this is as good a value as any.
|
|
||||||
*/
|
|
||||||
result = get_dhcid(&ddns_cb->dhcid, 2,
|
|
||||||
client_identifier.data,
|
client_identifier.data,
|
||||||
client_identifier.len);
|
client_identifier.len);
|
||||||
data_string_forget(&client_identifier, MDL);
|
data_string_forget(&client_identifier, MDL);
|
||||||
} else
|
} else
|
||||||
log_fatal("Impossible condition at %s:%d.", MDL);
|
log_fatal("Impossible condition at %s:%d.", MDL);
|
||||||
} else {
|
} else {
|
||||||
if (((oc =
|
/*
|
||||||
lookup_option(&dhcp_universe, client->sent_options,
|
* V4 request, use the client id if there is one or the
|
||||||
DHO_DHCP_CLIENT_IDENTIFIER)) != NULL) &&
|
* mac address if there isn't. If we have a client id
|
||||||
evaluate_option_cache(&client_identifier, NULL, NULL,
|
* we check to see if it is an embedded DUID.
|
||||||
client, client->sent_options, NULL,
|
*/
|
||||||
|
if (((oc = lookup_option(&dhcp_universe,
|
||||||
|
client->sent_options,
|
||||||
|
DHO_DHCP_CLIENT_IDENTIFIER)) != NULL) &&
|
||||||
|
evaluate_option_cache(&client_identifier, NULL,
|
||||||
|
NULL, client,
|
||||||
|
client->sent_options, NULL,
|
||||||
&global_scope, oc, MDL)) {
|
&global_scope, oc, MDL)) {
|
||||||
result = get_dhcid(&ddns_cb->dhcid,
|
if ((std_dhcid == 1) && (duid_v4 == 1) &&
|
||||||
DHO_DHCP_CLIENT_IDENTIFIER,
|
(client_identifier.data[0] == 255)) {
|
||||||
client_identifier.data,
|
/*
|
||||||
client_identifier.len);
|
* This appears to be an embedded DUID,
|
||||||
|
* extract it and treat it as such
|
||||||
|
*/
|
||||||
|
if (client_identifier.len <= 5)
|
||||||
|
log_fatal("Impossible condition at %s:%d.",
|
||||||
|
MDL);
|
||||||
|
result = get_dhcid(ddns_cb, 2,
|
||||||
|
client_identifier.data + 5,
|
||||||
|
client_identifier.len - 5);
|
||||||
|
} else {
|
||||||
|
result = get_dhcid(ddns_cb, ddns_v4_type,
|
||||||
|
client_identifier.data,
|
||||||
|
client_identifier.len);
|
||||||
|
}
|
||||||
data_string_forget(&client_identifier, MDL);
|
data_string_forget(&client_identifier, MDL);
|
||||||
} else
|
} else
|
||||||
result = get_dhcid(&ddns_cb->dhcid, 0,
|
result = get_dhcid(ddns_cb, 0,
|
||||||
client->interface->hw_address.hbuf,
|
client->interface->hw_address.hbuf,
|
||||||
client->interface->hw_address.hlen);
|
client->interface->hw_address.hlen);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!result) {
|
if (!result) {
|
||||||
return ISC_R_SUCCESS;
|
return ISC_R_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -4342,3 +4503,4 @@ add_reject(struct packet *packet) {
|
|||||||
*/
|
*/
|
||||||
log_info("Server added to list of rejected servers.");
|
log_info("Server added to list of rejected servers.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# Makefile.in generated by automake 1.13.1 from Makefile.am.
|
# Makefile.in generated by automake 1.14 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -15,23 +15,51 @@
|
|||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
|
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
am__make_dryrun = \
|
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||||
{ \
|
am__make_running_with_option = \
|
||||||
am__dry=no; \
|
case $${target_option-} in \
|
||||||
|
?) ;; \
|
||||||
|
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||||
|
"target option '$${target_option-}' specified" >&2; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
has_opt=no; \
|
||||||
|
sane_makeflags=$$MAKEFLAGS; \
|
||||||
|
if $(am__is_gnu_make); then \
|
||||||
|
sane_makeflags=$$MFLAGS; \
|
||||||
|
else \
|
||||||
case $$MAKEFLAGS in \
|
case $$MAKEFLAGS in \
|
||||||
*\\[\ \ ]*) \
|
*\\[\ \ ]*) \
|
||||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
bs=\\; \
|
||||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||||
*) \
|
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||||
for am__flg in $$MAKEFLAGS; do \
|
|
||||||
case $$am__flg in \
|
|
||||||
*=*|--*) ;; \
|
|
||||||
*n*) am__dry=yes; break;; \
|
|
||||||
esac; \
|
|
||||||
done;; \
|
|
||||||
esac; \
|
esac; \
|
||||||
test $$am__dry = yes; \
|
fi; \
|
||||||
}
|
skip_next=no; \
|
||||||
|
strip_trailopt () \
|
||||||
|
{ \
|
||||||
|
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||||
|
}; \
|
||||||
|
for flg in $$sane_makeflags; do \
|
||||||
|
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||||
|
case $$flg in \
|
||||||
|
*=*|--*) continue;; \
|
||||||
|
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||||
|
-*I?*) strip_trailopt 'I';; \
|
||||||
|
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||||
|
-*O?*) strip_trailopt 'O';; \
|
||||||
|
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||||
|
-*l?*) strip_trailopt 'l';; \
|
||||||
|
-[dEDm]) skip_next=yes;; \
|
||||||
|
-[JT]) skip_next=yes;; \
|
||||||
|
esac; \
|
||||||
|
case $$flg in \
|
||||||
|
*$$target_option*) has_opt=yes; break;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
test $$has_opt = yes
|
||||||
|
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||||
|
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
@ -364,6 +392,7 @@ $(am__aclocal_m4_deps):
|
|||||||
|
|
||||||
clean-noinstLIBRARIES:
|
clean-noinstLIBRARIES:
|
||||||
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
|
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
|
||||||
|
|
||||||
libdhcp.a: $(libdhcp_a_OBJECTS) $(libdhcp_a_DEPENDENCIES) $(EXTRA_libdhcp_a_DEPENDENCIES)
|
libdhcp.a: $(libdhcp_a_OBJECTS) $(libdhcp_a_DEPENDENCIES) $(EXTRA_libdhcp_a_DEPENDENCIES)
|
||||||
$(AM_V_at)-rm -f libdhcp.a
|
$(AM_V_at)-rm -f libdhcp.a
|
||||||
$(AM_V_AR)$(libdhcp_a_AR) libdhcp.a $(libdhcp_a_OBJECTS) $(libdhcp_a_LIBADD)
|
$(AM_V_AR)$(libdhcp_a_AR) libdhcp.a $(libdhcp_a_OBJECTS) $(libdhcp_a_LIBADD)
|
||||||
@ -410,14 +439,14 @@ distclean-compile:
|
|||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
||||||
|
|
||||||
.c.obj:
|
.c.obj:
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
install-man5: $(man_MANS)
|
install-man5: $(man_MANS)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
@list1=''; \
|
@list1=''; \
|
||||||
@ -469,13 +498,12 @@ uninstall-man5:
|
|||||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||||
$(am__recursive_targets):
|
$(am__recursive_targets):
|
||||||
@fail= failcom='exit 1'; \
|
@fail=; \
|
||||||
for f in x $$MAKEFLAGS; do \
|
if $(am__make_keepgoing); then \
|
||||||
case $$f in \
|
failcom='fail=yes'; \
|
||||||
*=* | --[!k]*);; \
|
else \
|
||||||
*k*) failcom='fail=yes';; \
|
failcom='exit 1'; \
|
||||||
esac; \
|
fi; \
|
||||||
done; \
|
|
||||||
dot_seen=no; \
|
dot_seen=no; \
|
||||||
target=`echo $@ | sed s/-recursive//`; \
|
target=`echo $@ | sed s/-recursive//`; \
|
||||||
case "$@" in \
|
case "$@" in \
|
||||||
|
@ -886,10 +886,6 @@ intern(char *atom, enum dhcp_token dfv) {
|
|||||||
case 'd':
|
case 'd':
|
||||||
if (!strcasecmp(atom + 1, "b-time-format"))
|
if (!strcasecmp(atom + 1, "b-time-format"))
|
||||||
return DB_TIME_FORMAT;
|
return DB_TIME_FORMAT;
|
||||||
if (!strcasecmp (atom + 1, "ns-update"))
|
|
||||||
return DNS_UPDATE;
|
|
||||||
if (!strcasecmp (atom + 1, "ns-delete"))
|
|
||||||
return DNS_DELETE;
|
|
||||||
if (!strcasecmp (atom + 1, "omain"))
|
if (!strcasecmp (atom + 1, "omain"))
|
||||||
return DOMAIN;
|
return DOMAIN;
|
||||||
if (!strncasecmp (atom + 1, "omain-", 6)) {
|
if (!strncasecmp (atom + 1, "omain-", 6)) {
|
||||||
@ -1183,8 +1179,6 @@ intern(char *atom, enum dhcp_token dfv) {
|
|||||||
return TOKEN_NOT;
|
return TOKEN_NOT;
|
||||||
if (!strcasecmp (atom + 1, "o"))
|
if (!strcasecmp (atom + 1, "o"))
|
||||||
return TOKEN_NO;
|
return TOKEN_NO;
|
||||||
if (!strcasecmp (atom + 1, "s-update"))
|
|
||||||
return NS_UPDATE;
|
|
||||||
if (!strcasecmp (atom + 1, "oerror"))
|
if (!strcasecmp (atom + 1, "oerror"))
|
||||||
return NS_NOERROR;
|
return NS_NOERROR;
|
||||||
if (!strcasecmp (atom + 1, "otauth"))
|
if (!strcasecmp (atom + 1, "otauth"))
|
||||||
@ -1503,8 +1497,6 @@ intern(char *atom, enum dhcp_token dfv) {
|
|||||||
}
|
}
|
||||||
if (!strcasecmp (atom + 1, "nauthenticated"))
|
if (!strcasecmp (atom + 1, "nauthenticated"))
|
||||||
return UNAUTHENTICATED;
|
return UNAUTHENTICATED;
|
||||||
if (!strcasecmp (atom + 1, "pdated-dns-rr"))
|
|
||||||
return UPDATED_DNS_RR;
|
|
||||||
if (!strcasecmp (atom + 1, "pdate"))
|
if (!strcasecmp (atom + 1, "pdate"))
|
||||||
return UPDATE;
|
return UPDATE;
|
||||||
break;
|
break;
|
||||||
|
167
common/dns.c
167
common/dns.c
@ -3,7 +3,7 @@
|
|||||||
Domain Name Service subroutines. */
|
Domain Name Service subroutines. */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2009-2012 by Internet Systems Consortium, Inc. ("ISC")
|
* Copyright (c) 2009-2013 by Internet Systems Consortium, Inc. ("ISC")
|
||||||
* Copyright (c) 2004-2007 by Internet Systems Consortium, Inc. ("ISC")
|
* Copyright (c) 2004-2007 by Internet Systems Consortium, Inc. ("ISC")
|
||||||
* Copyright (c) 2001-2003 by Internet Software Consortium
|
* Copyright (c) 2001-2003 by Internet Software Consortium
|
||||||
*
|
*
|
||||||
@ -30,10 +30,12 @@
|
|||||||
* asynchronous DNS routines.
|
* asynchronous DNS routines.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*! \file common/dns.c
|
||||||
|
*/
|
||||||
#include "dhcpd.h"
|
#include "dhcpd.h"
|
||||||
#include "arpa/nameser.h"
|
#include "arpa/nameser.h"
|
||||||
#include <isc/md5.h>
|
#include <isc/md5.h>
|
||||||
|
#include <isc/sha2.h>
|
||||||
#include <dns/result.h>
|
#include <dns/result.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -823,45 +825,123 @@ void repudiate_zone (struct dns_zone **zone)
|
|||||||
dns_zone_dereference (zone, MDL);
|
dns_zone_dereference (zone, MDL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Have to use TXT records for now. */
|
/*!
|
||||||
#define T_DHCID T_TXT
|
* \brief Create an id for a client
|
||||||
|
*
|
||||||
int get_dhcid (struct data_string *id,
|
* This function is used to create an id for a client to use with DDNS
|
||||||
int type, const u_int8_t *data, unsigned len)
|
* This version of the function is for the standard style, RFC 4701
|
||||||
|
*
|
||||||
|
* This function takes information from the type and data fields and
|
||||||
|
* mangles it into a dhcid string which it places in ddns_cb. It also
|
||||||
|
* sets a field in ddns_cb to specify the class that should be used
|
||||||
|
* when sending the dhcid, in this case it is a DHCID record so we use
|
||||||
|
* dns_rdatatype_dhcid
|
||||||
|
*
|
||||||
|
* The DHCID we construct is:
|
||||||
|
* 2 bytes - identifier type (see 4701 and IANA)
|
||||||
|
* 1 byte - digest type, currently only SHA256 (1)
|
||||||
|
* n bytes - digest, length depends on digest type, currently 32 for
|
||||||
|
* SHA256
|
||||||
|
*
|
||||||
|
* What we base the digest on is up to the calling code for an id type of
|
||||||
|
* 0 - 1 octet htype followed by hlen octets of chaddr from v4 client request
|
||||||
|
* 1 - data octets from a dhcpv4 client's client identifier option
|
||||||
|
* 2 - the client DUID from a v4 or v6 client's client id option
|
||||||
|
* This identifier is concatenated with the fqdn and the result is digested.
|
||||||
|
*/
|
||||||
|
int get_std_dhcid(dhcp_ddns_cb_t *ddns_cb,
|
||||||
|
int type,
|
||||||
|
const u_int8_t *identifier,
|
||||||
|
unsigned id_len)
|
||||||
{
|
{
|
||||||
|
struct data_string *id = &ddns_cb->dhcid;
|
||||||
|
isc_sha256_t sha256;
|
||||||
|
unsigned char buf[ISC_SHA256_DIGESTLENGTH];
|
||||||
|
unsigned char fwd_buf[256];
|
||||||
|
unsigned fwd_buflen = 0;
|
||||||
|
|
||||||
|
/* Types can only be 0..(2^16)-1. */
|
||||||
|
if (type < 0 || type > 65535)
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
/* We need to convert the fwd name to wire representation */
|
||||||
|
if (MRns_name_pton((char *)ddns_cb->fwd_name.data, fwd_buf, 256) == -1)
|
||||||
|
return (0);
|
||||||
|
while(fwd_buf[fwd_buflen] != 0) {
|
||||||
|
fwd_buflen += fwd_buf[fwd_buflen] + 1;
|
||||||
|
}
|
||||||
|
fwd_buflen++;
|
||||||
|
|
||||||
|
if (!buffer_allocate(&id->buffer,
|
||||||
|
ISC_SHA256_DIGESTLENGTH + 2 + 1,
|
||||||
|
MDL))
|
||||||
|
return (0);
|
||||||
|
id->data = id->buffer->data;
|
||||||
|
|
||||||
|
/* The two first bytes contain the type identifier. */
|
||||||
|
putUShort(id->buffer->data, (unsigned)type);
|
||||||
|
|
||||||
|
/* The next is the digest type, SHA-256 is 1 */
|
||||||
|
putUChar(id->buffer->data + 2, 1u);
|
||||||
|
|
||||||
|
/* Computing the digest */
|
||||||
|
isc_sha256_init(&sha256);
|
||||||
|
isc_sha256_update(&sha256, identifier, id_len);
|
||||||
|
isc_sha256_update(&sha256, fwd_buf, fwd_buflen);
|
||||||
|
isc_sha256_final(buf, &sha256);
|
||||||
|
|
||||||
|
memcpy(id->buffer->data + 3, &buf, ISC_SHA256_DIGESTLENGTH);
|
||||||
|
|
||||||
|
id->len = ISC_SHA256_DIGESTLENGTH + 2 + 1;
|
||||||
|
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
*
|
||||||
|
* \brief Create an id for a client
|
||||||
|
*
|
||||||
|
* This function is used to create an id for a client to use with DDNS
|
||||||
|
* This version of the function is for the interim style. It is retained
|
||||||
|
* to allow users to continue using the interim style but they should
|
||||||
|
* switch to the standard style (which uses get_std_dhcid) for better
|
||||||
|
* interoperability.
|
||||||
|
*
|
||||||
|
* This function takes information from the type and data fields and
|
||||||
|
* mangles it into a dhcid string which it places in ddns_cb. It also
|
||||||
|
* sets a field in ddns_cb to specify the class that should be used
|
||||||
|
* when sending the dhcid, in this case it is a txt record so we use
|
||||||
|
* dns_rdata_type_txt
|
||||||
|
*
|
||||||
|
* NOTE WELL: this function has issues with how it calculates the
|
||||||
|
* dhcid, they can't be changed now as that would break the records
|
||||||
|
* already in use.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int get_int_dhcid (dhcp_ddns_cb_t *ddns_cb,
|
||||||
|
int type,
|
||||||
|
const u_int8_t *data,
|
||||||
|
unsigned len)
|
||||||
|
{
|
||||||
|
struct data_string *id = &ddns_cb->dhcid;
|
||||||
unsigned char buf[ISC_MD5_DIGESTLENGTH];
|
unsigned char buf[ISC_MD5_DIGESTLENGTH];
|
||||||
isc_md5_t md5;
|
isc_md5_t md5;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* Types can only be 0..(2^16)-1. */
|
/* Types can only be 0..(2^16)-1. */
|
||||||
if (type < 0 || type > 65535)
|
if (type < 0 || type > 65535)
|
||||||
return 0;
|
return (0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Hexadecimal MD5 digest plus two byte type, NUL,
|
* Hexadecimal MD5 digest plus two byte type, NUL,
|
||||||
* and one byte for length for dns.
|
* and one byte for length for dns.
|
||||||
*/
|
*/
|
||||||
if (!buffer_allocate (&id -> buffer,
|
if (!buffer_allocate(&id -> buffer,
|
||||||
(ISC_MD5_DIGESTLENGTH * 2) + 4, MDL))
|
(ISC_MD5_DIGESTLENGTH * 2) + 4, MDL))
|
||||||
return 0;
|
return (0);
|
||||||
id -> data = id -> buffer -> data;
|
id->data = id->buffer->data;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* DHCP clients and servers should use the following forms of client
|
|
||||||
* identification, starting with the most preferable, and finishing
|
|
||||||
* with the least preferable. If the client does not send any of these
|
|
||||||
* forms of identification, the DHCP/DDNS interaction is not defined by
|
|
||||||
* this specification. The most preferable form of identification is
|
|
||||||
* the Globally Unique Identifier Option [TBD]. Next is the DHCP
|
|
||||||
* Client Identifier option. Last is the client's link-layer address,
|
|
||||||
* as conveyed in its DHCPREQUEST message. Implementors should note
|
|
||||||
* that the link-layer address cannot be used if there are no
|
|
||||||
* significant bytes in the chaddr field of the DHCP client's request,
|
|
||||||
* because this does not constitute a unique identifier.
|
|
||||||
* -- "Interaction between DHCP and DNS"
|
|
||||||
* <draft-ietf-dhc-dhcp-dns-12.txt>
|
|
||||||
* M. Stapp, Y. Rekhter
|
|
||||||
*
|
|
||||||
* We put the length into the first byte to turn
|
* We put the length into the first byte to turn
|
||||||
* this into a dns text string. This avoid needing to
|
* this into a dns text string. This avoid needing to
|
||||||
* copy the string to add the byte later.
|
* copy the string to add the byte later.
|
||||||
@ -893,7 +973,18 @@ int get_dhcid (struct data_string *id,
|
|||||||
id->buffer->data[id->len] = 0;
|
id->buffer->data[id->len] = 0;
|
||||||
id->terminated = 1;
|
id->terminated = 1;
|
||||||
|
|
||||||
return 1;
|
return (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int get_dhcid(dhcp_ddns_cb_t *ddns_cb,
|
||||||
|
int type,
|
||||||
|
const u_int8_t *identifier,
|
||||||
|
unsigned id_len)
|
||||||
|
{
|
||||||
|
if (ddns_cb->dhcid_class == dns_rdatatype_dhcid)
|
||||||
|
return get_std_dhcid(ddns_cb, type, identifier, id_len);
|
||||||
|
else
|
||||||
|
return get_int_dhcid(ddns_cb, type, identifier, id_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1015,12 +1106,12 @@ make_dns_dataset(dns_rdataclass_t dataclass,
|
|||||||
* For the server the first step will have a request of:
|
* For the server the first step will have a request of:
|
||||||
* The name is not in use
|
* The name is not in use
|
||||||
* Add an A RR
|
* Add an A RR
|
||||||
* Add a DHCID RR (currently txt)
|
* Add a DHCID RR
|
||||||
*
|
*
|
||||||
* For the client the first step will have a request of:
|
* For the client the first step will have a request of:
|
||||||
* The A RR does not exist
|
* The A RR does not exist
|
||||||
* Add an A RR
|
* Add an A RR
|
||||||
* Add a DHCID RR (currently txt)
|
* Add a DHCID RR
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
@ -1062,7 +1153,7 @@ ddns_modify_fwd_add1(dhcp_ddns_cb_t *ddns_cb,
|
|||||||
dataspace++;
|
dataspace++;
|
||||||
|
|
||||||
/* Add the DHCID RR */
|
/* Add the DHCID RR */
|
||||||
result = make_dns_dataset(dns_rdataclass_in, dns_rdatatype_txt,
|
result = make_dns_dataset(dns_rdataclass_in, ddns_cb->dhcid_class,
|
||||||
dataspace,
|
dataspace,
|
||||||
(unsigned char *)ddns_cb->dhcid.data,
|
(unsigned char *)ddns_cb->dhcid.data,
|
||||||
ddns_cb->dhcid.len, ddns_cb->ttl);
|
ddns_cb->dhcid.len, ddns_cb->ttl);
|
||||||
@ -1108,7 +1199,7 @@ ddns_modify_fwd_add2(dhcp_ddns_cb_t *ddns_cb,
|
|||||||
dns_name_t *pname,
|
dns_name_t *pname,
|
||||||
dns_name_t *uname)
|
dns_name_t *uname)
|
||||||
{
|
{
|
||||||
isc_result_t result;
|
isc_result_t result = ISC_R_SUCCESS;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If we are doing conflict resolution (unset) we use a prereq list.
|
* If we are doing conflict resolution (unset) we use a prereq list.
|
||||||
@ -1117,7 +1208,7 @@ ddns_modify_fwd_add2(dhcp_ddns_cb_t *ddns_cb,
|
|||||||
if ((ddns_cb->flags & DDNS_CONFLICT_OVERRIDE) == 0) {
|
if ((ddns_cb->flags & DDNS_CONFLICT_OVERRIDE) == 0) {
|
||||||
/* Construct the prereq list */
|
/* Construct the prereq list */
|
||||||
/* The DHCID RR exists and matches the client identity */
|
/* The DHCID RR exists and matches the client identity */
|
||||||
result = make_dns_dataset(dns_rdataclass_in, dns_rdatatype_txt,
|
result = make_dns_dataset(dns_rdataclass_in, ddns_cb->dhcid_class,
|
||||||
dataspace,
|
dataspace,
|
||||||
(unsigned char *)ddns_cb->dhcid.data,
|
(unsigned char *)ddns_cb->dhcid.data,
|
||||||
ddns_cb->dhcid.len, 0);
|
ddns_cb->dhcid.len, 0);
|
||||||
@ -1130,7 +1221,7 @@ ddns_modify_fwd_add2(dhcp_ddns_cb_t *ddns_cb,
|
|||||||
/* Start constructing the update list.
|
/* Start constructing the update list.
|
||||||
* Conflict detection override: delete DHCID RRs */
|
* Conflict detection override: delete DHCID RRs */
|
||||||
result = make_dns_dataset(dns_rdataclass_any,
|
result = make_dns_dataset(dns_rdataclass_any,
|
||||||
dns_rdatatype_txt,
|
ddns_cb->dhcid_class,
|
||||||
dataspace, NULL, 0, 0);
|
dataspace, NULL, 0, 0);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
return(result);
|
return(result);
|
||||||
@ -1139,7 +1230,7 @@ ddns_modify_fwd_add2(dhcp_ddns_cb_t *ddns_cb,
|
|||||||
dataspace++;
|
dataspace++;
|
||||||
|
|
||||||
/* Add current DHCID RR */
|
/* Add current DHCID RR */
|
||||||
result = make_dns_dataset(dns_rdataclass_in, dns_rdatatype_txt,
|
result = make_dns_dataset(dns_rdataclass_in, ddns_cb->dhcid_class,
|
||||||
dataspace,
|
dataspace,
|
||||||
(unsigned char *)ddns_cb->dhcid.data,
|
(unsigned char *)ddns_cb->dhcid.data,
|
||||||
ddns_cb->dhcid.len, ddns_cb->ttl);
|
ddns_cb->dhcid.len, ddns_cb->ttl);
|
||||||
@ -1201,11 +1292,11 @@ ddns_modify_fwd_rem1(dhcp_ddns_cb_t *ddns_cb,
|
|||||||
dns_name_t *pname,
|
dns_name_t *pname,
|
||||||
dns_name_t *uname)
|
dns_name_t *uname)
|
||||||
{
|
{
|
||||||
isc_result_t result;
|
isc_result_t result = ISC_R_SUCCESS;
|
||||||
|
|
||||||
/* Consruct the prereq list */
|
/* Consruct the prereq list */
|
||||||
/* The DHCID RR exists and matches the client identity */
|
/* The DHCID RR exists and matches the client identity */
|
||||||
result = make_dns_dataset(dns_rdataclass_in, dns_rdatatype_txt,
|
result = make_dns_dataset(dns_rdataclass_in, ddns_cb->dhcid_class,
|
||||||
dataspace,
|
dataspace,
|
||||||
(unsigned char *)ddns_cb->dhcid.data,
|
(unsigned char *)ddns_cb->dhcid.data,
|
||||||
ddns_cb->dhcid.len, 0);
|
ddns_cb->dhcid.len, 0);
|
||||||
@ -1271,7 +1362,7 @@ ddns_modify_fwd_rem2(dhcp_ddns_cb_t *ddns_cb,
|
|||||||
|
|
||||||
/* Construct the update list */
|
/* Construct the update list */
|
||||||
/* Delete DHCID RR */
|
/* Delete DHCID RR */
|
||||||
result = make_dns_dataset(dns_rdataclass_none, dns_rdatatype_txt,
|
result = make_dns_dataset(dns_rdataclass_none, ddns_cb->dhcid_class,
|
||||||
dataspace,
|
dataspace,
|
||||||
(unsigned char *)ddns_cb->dhcid.data,
|
(unsigned char *)ddns_cb->dhcid.data,
|
||||||
ddns_cb->dhcid.len, 0);
|
ddns_cb->dhcid.len, 0);
|
||||||
|
380
common/parse.c
380
common/parse.c
@ -3514,42 +3514,7 @@ int parse_numeric_expression (expr, cfile, lose)
|
|||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
#if defined (NSUPDATE_OLD)
|
|
||||||
/*
|
|
||||||
* dns-expression :==
|
|
||||||
* UPDATE LPAREN ns-class COMMA ns-type COMMA data-expression COMMA
|
|
||||||
* data-expression COMMA numeric-expression RPAREN
|
|
||||||
* DELETE LPAREN ns-class COMMA ns-type COMMA data-expression COMMA
|
|
||||||
* data-expression RPAREN
|
|
||||||
* EXISTS LPAREN ns-class COMMA ns-type COMMA data-expression COMMA
|
|
||||||
* data-expression RPAREN
|
|
||||||
* NOT EXISTS LPAREN ns-class COMMA ns-type COMMA data-expression COMMA
|
|
||||||
* data-expression RPAREN
|
|
||||||
* ns-class :== IN | CHAOS | HS | NUMBER
|
|
||||||
* ns-type :== A | PTR | MX | TXT | NUMBER
|
|
||||||
*/
|
|
||||||
|
|
||||||
int parse_dns_expression (expr, cfile, lose)
|
|
||||||
struct expression **expr;
|
|
||||||
struct parse *cfile;
|
|
||||||
int *lose;
|
|
||||||
{
|
|
||||||
/* Parse an expression... */
|
|
||||||
if (!parse_expression (expr, cfile, lose, context_dns,
|
|
||||||
(struct expression **)0, expr_none))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (!is_dns_expression (*expr) &&
|
|
||||||
(*expr) -> op != expr_variable_reference &&
|
|
||||||
(*expr) -> op != expr_funcall) {
|
|
||||||
expression_dereference (expr, MDL);
|
|
||||||
parse_warn (cfile, "Expecting a dns update subexpression.");
|
|
||||||
*lose = 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
#endif /* NSUPDATE_OLD */
|
|
||||||
/* Parse a subexpression that does not contain a binary operator. */
|
/* Parse a subexpression that does not contain a binary operator. */
|
||||||
|
|
||||||
int parse_non_binary (expr, cfile, lose, context)
|
int parse_non_binary (expr, cfile, lose, context)
|
||||||
@ -3564,11 +3529,6 @@ int parse_non_binary (expr, cfile, lose, context)
|
|||||||
struct expression *nexp, **ep;
|
struct expression *nexp, **ep;
|
||||||
int known;
|
int known;
|
||||||
char *cptr;
|
char *cptr;
|
||||||
#if defined (NSUPDATE_OLD)
|
|
||||||
enum expr_op opcode;
|
|
||||||
const char *s;
|
|
||||||
unsigned long u;
|
|
||||||
#endif
|
|
||||||
isc_result_t status;
|
isc_result_t status;
|
||||||
unsigned len;
|
unsigned len;
|
||||||
|
|
||||||
@ -3600,17 +3560,11 @@ int parse_non_binary (expr, cfile, lose, context)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case TOKEN_NOT:
|
case TOKEN_NOT:
|
||||||
skip_token(&val, (unsigned *)0, cfile);
|
skip_token(&val, NULL, cfile);
|
||||||
#if defined(NSUPDATE_OLD)
|
|
||||||
if (context == context_dns) {
|
|
||||||
token = peek_token (&val, (unsigned *)0, cfile);
|
|
||||||
goto not_exists;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if (!expression_allocate (expr, MDL))
|
if (!expression_allocate (expr, MDL))
|
||||||
log_fatal ("can't allocate expression");
|
log_fatal ("can't allocate expression");
|
||||||
(*expr) -> op = expr_not;
|
(*expr)->op = expr_not;
|
||||||
if (!parse_non_binary (&(*expr) -> data.not,
|
if (!parse_non_binary (&(*expr)->data.not,
|
||||||
cfile, lose, context_boolean)) {
|
cfile, lose, context_boolean)) {
|
||||||
if (!*lose) {
|
if (!*lose) {
|
||||||
parse_warn (cfile, "expression expected");
|
parse_warn (cfile, "expression expected");
|
||||||
@ -3618,7 +3572,7 @@ int parse_non_binary (expr, cfile, lose, context)
|
|||||||
}
|
}
|
||||||
*lose = 1;
|
*lose = 1;
|
||||||
expression_dereference (expr, MDL);
|
expression_dereference (expr, MDL);
|
||||||
return 0;
|
return (0);
|
||||||
}
|
}
|
||||||
if (!is_boolean_expression ((*expr) -> data.not)) {
|
if (!is_boolean_expression ((*expr) -> data.not)) {
|
||||||
*lose = 1;
|
*lose = 1;
|
||||||
@ -3650,14 +3604,10 @@ int parse_non_binary (expr, cfile, lose, context)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case EXISTS:
|
case EXISTS:
|
||||||
#if defined(NSUPDATE_OLD)
|
skip_token(&val, NULL, cfile);
|
||||||
if (context == context_dns)
|
|
||||||
goto ns_exists;
|
|
||||||
#endif
|
|
||||||
skip_token(&val, (unsigned *)0, cfile);
|
|
||||||
if (!expression_allocate (expr, MDL))
|
if (!expression_allocate (expr, MDL))
|
||||||
log_fatal ("can't allocate expression");
|
log_fatal ("can't allocate expression");
|
||||||
(*expr) -> op = expr_exists;
|
(*expr)->op = expr_exists;
|
||||||
known = 0;
|
known = 0;
|
||||||
/* Pass reference directly to expression structure. */
|
/* Pass reference directly to expression structure. */
|
||||||
status = parse_option_name(cfile, 0, &known,
|
status = parse_option_name(cfile, 0, &known,
|
||||||
@ -3666,7 +3616,7 @@ int parse_non_binary (expr, cfile, lose, context)
|
|||||||
(*expr)->data.option == NULL) {
|
(*expr)->data.option == NULL) {
|
||||||
*lose = 1;
|
*lose = 1;
|
||||||
expression_dereference (expr, MDL);
|
expression_dereference (expr, MDL);
|
||||||
return 0;
|
return (0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -3967,285 +3917,6 @@ int parse_non_binary (expr, cfile, lose, context)
|
|||||||
goto norparen;
|
goto norparen;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#if defined(NSUPDATE_OLD)
|
|
||||||
/* dns-update and dns-delete are present for historical
|
|
||||||
purposes, but are deprecated in favor of ns-update
|
|
||||||
in combination with update, delete, exists and not
|
|
||||||
exists. */
|
|
||||||
case DNS_UPDATE:
|
|
||||||
case DNS_DELETE:
|
|
||||||
#if !defined (NSUPDATE)
|
|
||||||
parse_warn (cfile,
|
|
||||||
"Please rebuild dhcpd with --with-nsupdate.");
|
|
||||||
#endif
|
|
||||||
skip_token(&val, (unsigned *)0, cfile);
|
|
||||||
if (token == DNS_UPDATE)
|
|
||||||
opcode = expr_ns_add;
|
|
||||||
else
|
|
||||||
opcode = expr_ns_delete;
|
|
||||||
|
|
||||||
token = next_token (&val, (unsigned *)0, cfile);
|
|
||||||
if (token != LPAREN)
|
|
||||||
goto nolparen;
|
|
||||||
|
|
||||||
token = next_token (&val, (unsigned *)0, cfile);
|
|
||||||
if (token != STRING) {
|
|
||||||
parse_warn (cfile,
|
|
||||||
"parse_expression: expecting string.");
|
|
||||||
badnsupdate:
|
|
||||||
skip_to_semi (cfile);
|
|
||||||
*lose = 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!strcasecmp (val, "a"))
|
|
||||||
u = T_A;
|
|
||||||
else if (!strcasecmp (val, "aaaa"))
|
|
||||||
u = T_AAAA;
|
|
||||||
else if (!strcasecmp (val, "ptr"))
|
|
||||||
u = T_PTR;
|
|
||||||
else if (!strcasecmp (val, "mx"))
|
|
||||||
u = T_MX;
|
|
||||||
else if (!strcasecmp (val, "cname"))
|
|
||||||
u = T_CNAME;
|
|
||||||
else if (!strcasecmp (val, "TXT"))
|
|
||||||
u = T_TXT;
|
|
||||||
else {
|
|
||||||
parse_warn (cfile, "unexpected rrtype: %s", val);
|
|
||||||
goto badnsupdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
s = (opcode == expr_ns_add
|
|
||||||
? "old-dns-update"
|
|
||||||
: "old-dns-delete");
|
|
||||||
cptr = dmalloc (strlen (s) + 1, MDL);
|
|
||||||
if (!cptr)
|
|
||||||
log_fatal ("can't allocate name for %s", s);
|
|
||||||
strcpy (cptr, s);
|
|
||||||
if (!expression_allocate (expr, MDL))
|
|
||||||
log_fatal ("can't allocate expression");
|
|
||||||
(*expr) -> op = expr_funcall;
|
|
||||||
(*expr) -> data.funcall.name = cptr;
|
|
||||||
|
|
||||||
/* Fake up a function call. */
|
|
||||||
ep = &(*expr) -> data.funcall.arglist;
|
|
||||||
if (!expression_allocate (ep, MDL))
|
|
||||||
log_fatal ("can't allocate expression");
|
|
||||||
(*ep) -> op = expr_arg;
|
|
||||||
if (!make_const_int (&(*ep) -> data.arg.val, u))
|
|
||||||
log_fatal ("can't allocate rrtype value.");
|
|
||||||
|
|
||||||
token = next_token (&val, (unsigned *)0, cfile);
|
|
||||||
if (token != COMMA)
|
|
||||||
goto nocomma;
|
|
||||||
ep = &((*ep) -> data.arg.next);
|
|
||||||
if (!expression_allocate (ep, MDL))
|
|
||||||
log_fatal ("can't allocate expression");
|
|
||||||
(*ep) -> op = expr_arg;
|
|
||||||
if (!(parse_data_expression (&(*ep) -> data.arg.val,
|
|
||||||
cfile, lose)))
|
|
||||||
goto nodata;
|
|
||||||
|
|
||||||
token = next_token (&val, (unsigned *)0, cfile);
|
|
||||||
if (token != COMMA)
|
|
||||||
goto nocomma;
|
|
||||||
|
|
||||||
ep = &((*ep) -> data.arg.next);
|
|
||||||
if (!expression_allocate (ep, MDL))
|
|
||||||
log_fatal ("can't allocate expression");
|
|
||||||
(*ep) -> op = expr_arg;
|
|
||||||
if (!(parse_data_expression (&(*ep) -> data.arg.val,
|
|
||||||
cfile, lose)))
|
|
||||||
goto nodata;
|
|
||||||
|
|
||||||
if (opcode == expr_ns_add) {
|
|
||||||
token = next_token (&val, (unsigned *)0, cfile);
|
|
||||||
if (token != COMMA)
|
|
||||||
goto nocomma;
|
|
||||||
|
|
||||||
ep = &((*ep) -> data.arg.next);
|
|
||||||
if (!expression_allocate (ep, MDL))
|
|
||||||
log_fatal ("can't allocate expression");
|
|
||||||
(*ep) -> op = expr_arg;
|
|
||||||
if (!(parse_numeric_expression (&(*ep) -> data.arg.val,
|
|
||||||
cfile, lose))) {
|
|
||||||
parse_warn (cfile,
|
|
||||||
"expecting numeric expression.");
|
|
||||||
goto badnsupdate;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
token = next_token (&val, (unsigned *)0, cfile);
|
|
||||||
if (token != RPAREN)
|
|
||||||
goto norparen;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case NS_UPDATE:
|
|
||||||
#if !defined (NSUPDATE)
|
|
||||||
parse_warn (cfile,
|
|
||||||
"Please rebuild dhcpd with --with-nsupdate.");
|
|
||||||
#endif
|
|
||||||
skip_token(&val, (unsigned *)0, cfile);
|
|
||||||
if (!expression_allocate (expr, MDL))
|
|
||||||
log_fatal ("can't allocate expression");
|
|
||||||
|
|
||||||
token = next_token (&val, (unsigned *)0, cfile);
|
|
||||||
if (token != LPAREN)
|
|
||||||
goto nolparen;
|
|
||||||
|
|
||||||
nexp = *expr;
|
|
||||||
do {
|
|
||||||
nexp -> op = expr_dns_transaction;
|
|
||||||
if (!(parse_dns_expression
|
|
||||||
(&nexp -> data.dns_transaction.car,
|
|
||||||
cfile, lose)))
|
|
||||||
{
|
|
||||||
if (!*lose)
|
|
||||||
parse_warn
|
|
||||||
(cfile,
|
|
||||||
"expecting dns expression.");
|
|
||||||
expression_dereference (expr, MDL);
|
|
||||||
*lose = 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
token = next_token (&val, (unsigned *)0, cfile);
|
|
||||||
|
|
||||||
if (token == COMMA) {
|
|
||||||
if (!(expression_allocate
|
|
||||||
(&nexp -> data.dns_transaction.cdr,
|
|
||||||
MDL)))
|
|
||||||
log_fatal
|
|
||||||
("can't allocate expression");
|
|
||||||
nexp = nexp -> data.dns_transaction.cdr;
|
|
||||||
}
|
|
||||||
} while (token == COMMA);
|
|
||||||
|
|
||||||
if (token != RPAREN)
|
|
||||||
goto norparen;
|
|
||||||
break;
|
|
||||||
|
|
||||||
/* NOT EXISTS is special cased above... */
|
|
||||||
not_exists:
|
|
||||||
token = peek_token (&val, (unsigned *)0, cfile);
|
|
||||||
if (token != EXISTS) {
|
|
||||||
parse_warn (cfile, "expecting DNS prerequisite.");
|
|
||||||
*lose = 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
opcode = expr_ns_not_exists;
|
|
||||||
goto nsupdatecode;
|
|
||||||
case TOKEN_ADD:
|
|
||||||
opcode = expr_ns_add;
|
|
||||||
goto nsupdatecode;
|
|
||||||
case TOKEN_DELETE:
|
|
||||||
opcode = expr_ns_delete;
|
|
||||||
goto nsupdatecode;
|
|
||||||
ns_exists:
|
|
||||||
opcode = expr_ns_exists;
|
|
||||||
nsupdatecode:
|
|
||||||
token = next_token (&val, (unsigned *)0, cfile);
|
|
||||||
|
|
||||||
#if !defined (NSUPDATE)
|
|
||||||
parse_warn (cfile,
|
|
||||||
"Please rebuild dhcpd with --with-nsupdate.");
|
|
||||||
#endif
|
|
||||||
if (!expression_allocate (expr, MDL))
|
|
||||||
log_fatal ("can't allocate expression");
|
|
||||||
(*expr) -> op = opcode;
|
|
||||||
|
|
||||||
token = next_token (&val, (unsigned *)0, cfile);
|
|
||||||
if (token != LPAREN)
|
|
||||||
goto nolparen;
|
|
||||||
|
|
||||||
token = next_token (&val, (unsigned *)0, cfile);
|
|
||||||
if (!is_identifier (token) && token != NUMBER) {
|
|
||||||
parse_warn (cfile, "expecting identifier or number.");
|
|
||||||
badnsop:
|
|
||||||
expression_dereference (expr, MDL);
|
|
||||||
skip_to_semi (cfile);
|
|
||||||
*lose = 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (token == NUMBER)
|
|
||||||
(*expr) -> data.ns_add.rrclass = atoi (val);
|
|
||||||
else if (!strcasecmp (val, "in"))
|
|
||||||
(*expr) -> data.ns_add.rrclass = C_IN;
|
|
||||||
else if (!strcasecmp (val, "chaos"))
|
|
||||||
(*expr) -> data.ns_add.rrclass = C_CHAOS;
|
|
||||||
else if (!strcasecmp (val, "hs"))
|
|
||||||
(*expr) -> data.ns_add.rrclass = C_HS;
|
|
||||||
else {
|
|
||||||
parse_warn (cfile, "unexpected rrclass: %s", val);
|
|
||||||
goto badnsop;
|
|
||||||
}
|
|
||||||
|
|
||||||
token = next_token (&val, (unsigned *)0, cfile);
|
|
||||||
if (token != COMMA)
|
|
||||||
goto nocomma;
|
|
||||||
|
|
||||||
token = next_token (&val, (unsigned *)0, cfile);
|
|
||||||
if (!is_identifier (token) && token != NUMBER) {
|
|
||||||
parse_warn (cfile, "expecting identifier or number.");
|
|
||||||
goto badnsop;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (token == NUMBER)
|
|
||||||
(*expr) -> data.ns_add.rrtype = atoi (val);
|
|
||||||
else if (!strcasecmp (val, "a"))
|
|
||||||
(*expr) -> data.ns_add.rrtype = T_A;
|
|
||||||
else if (!strcasecmp (val, "aaaa"))
|
|
||||||
(*expr) -> data.ns_add.rrtype = T_AAAA;
|
|
||||||
else if (!strcasecmp (val, "ptr"))
|
|
||||||
(*expr) -> data.ns_add.rrtype = T_PTR;
|
|
||||||
else if (!strcasecmp (val, "mx"))
|
|
||||||
(*expr) -> data.ns_add.rrtype = T_MX;
|
|
||||||
else if (!strcasecmp (val, "cname"))
|
|
||||||
(*expr) -> data.ns_add.rrtype = T_CNAME;
|
|
||||||
else if (!strcasecmp (val, "TXT"))
|
|
||||||
(*expr) -> data.ns_add.rrtype = T_TXT;
|
|
||||||
else {
|
|
||||||
parse_warn (cfile, "unexpected rrtype: %s", val);
|
|
||||||
goto badnsop;
|
|
||||||
}
|
|
||||||
|
|
||||||
token = next_token (&val, (unsigned *)0, cfile);
|
|
||||||
if (token != COMMA)
|
|
||||||
goto nocomma;
|
|
||||||
|
|
||||||
if (!(parse_data_expression
|
|
||||||
(&(*expr) -> data.ns_add.rrname, cfile, lose)))
|
|
||||||
goto nodata;
|
|
||||||
|
|
||||||
token = next_token (&val, (unsigned *)0, cfile);
|
|
||||||
if (token != COMMA)
|
|
||||||
goto nocomma;
|
|
||||||
|
|
||||||
if (!(parse_data_expression
|
|
||||||
(&(*expr) -> data.ns_add.rrdata, cfile, lose)))
|
|
||||||
goto nodata;
|
|
||||||
|
|
||||||
if (opcode == expr_ns_add) {
|
|
||||||
token = next_token (&val, (unsigned *)0, cfile);
|
|
||||||
if (token != COMMA)
|
|
||||||
goto nocomma;
|
|
||||||
|
|
||||||
if (!(parse_numeric_expression
|
|
||||||
(&(*expr) -> data.ns_add.ttl, cfile,
|
|
||||||
lose))) {
|
|
||||||
if (!*lose)
|
|
||||||
parse_warn (cfile,
|
|
||||||
"expecting numeric expression.");
|
|
||||||
goto badnsupdate;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
token = next_token (&val, (unsigned *)0, cfile);
|
|
||||||
if (token != RPAREN)
|
|
||||||
goto norparen;
|
|
||||||
break;
|
|
||||||
#endif /* NSUPDATE_OLD */
|
|
||||||
case OPTION:
|
case OPTION:
|
||||||
case CONFIG_OPTION:
|
case CONFIG_OPTION:
|
||||||
if (!expression_allocate (expr, MDL))
|
if (!expression_allocate (expr, MDL))
|
||||||
@ -4322,43 +3993,6 @@ int parse_non_binary (expr, cfile, lose, context)
|
|||||||
(*expr) -> op = expr_host_decl_name;
|
(*expr) -> op = expr_host_decl_name;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#if defined(NSUPDATE_OLD)
|
|
||||||
case UPDATED_DNS_RR:
|
|
||||||
skip_token(&val, (unsigned *)0, cfile);
|
|
||||||
token = next_token (&val, (unsigned *)0, cfile);
|
|
||||||
if (token != LPAREN)
|
|
||||||
goto nolparen;
|
|
||||||
|
|
||||||
token = next_token (&val, (unsigned *)0, cfile);
|
|
||||||
if (token != STRING) {
|
|
||||||
parse_warn (cfile, "expecting string.");
|
|
||||||
bad_rrtype:
|
|
||||||
*lose = 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if (!strcasecmp (val, "a"))
|
|
||||||
s = "ddns-fwd-name";
|
|
||||||
else if (!strcasecmp (val, "ptr"))
|
|
||||||
s = "ddns-rev-name";
|
|
||||||
else {
|
|
||||||
parse_warn (cfile, "invalid DNS rrtype: %s", val);
|
|
||||||
goto bad_rrtype;
|
|
||||||
}
|
|
||||||
|
|
||||||
token = next_token (&val, (unsigned *)0, cfile);
|
|
||||||
if (token != RPAREN)
|
|
||||||
goto norparen;
|
|
||||||
|
|
||||||
if (!expression_allocate (expr, MDL))
|
|
||||||
log_fatal ("can't allocate expression");
|
|
||||||
(*expr) -> op = expr_variable_reference;
|
|
||||||
(*expr) -> data.variable =
|
|
||||||
dmalloc (strlen (s) + 1, MDL);
|
|
||||||
if (!(*expr) -> data.variable)
|
|
||||||
log_fatal ("can't allocate variable name.");
|
|
||||||
strcpy ((*expr) -> data.variable, s);
|
|
||||||
break;
|
|
||||||
#endif /* NSUPDATE_OLD */
|
|
||||||
case PACKET:
|
case PACKET:
|
||||||
skip_token(&val, (unsigned *)0, cfile);
|
skip_token(&val, (unsigned *)0, cfile);
|
||||||
if (!expression_allocate (expr, MDL))
|
if (!expression_allocate (expr, MDL))
|
||||||
|
@ -8,7 +8,7 @@ ATF_TESTS =
|
|||||||
|
|
||||||
if HAVE_ATF
|
if HAVE_ATF
|
||||||
|
|
||||||
ATF_TESTS += alloc_unittest
|
ATF_TESTS += alloc_unittest dns_unittest
|
||||||
|
|
||||||
alloc_unittest_SOURCES = test_alloc.c $(top_srcdir)/tests/t_api_dhcp.c
|
alloc_unittest_SOURCES = test_alloc.c $(top_srcdir)/tests/t_api_dhcp.c
|
||||||
alloc_unittest_LDADD = $(ATF_LDFLAGS)
|
alloc_unittest_LDADD = $(ATF_LDFLAGS)
|
||||||
@ -16,6 +16,12 @@ alloc_unittest_LDADD += ../libdhcp.a \
|
|||||||
../../omapip/libomapi.a ../../bind/lib/libdns.a \
|
../../omapip/libomapi.a ../../bind/lib/libdns.a \
|
||||||
../../bind/lib/libisc.a
|
../../bind/lib/libisc.a
|
||||||
|
|
||||||
|
dns_unittest_SOURCES = dns_unittest.c $(top_srcdir)/tests/t_api_dhcp.c
|
||||||
|
dns_unittest_LDADD = $(ATF_LDFLAGS)
|
||||||
|
dns_unittest_LDADD += ../libdhcp.a \
|
||||||
|
../../omapip/libomapi.a ../../bind/lib/libdns.a \
|
||||||
|
../../bind/lib/libisc.a
|
||||||
|
|
||||||
check: $(ATF_TESTS)
|
check: $(ATF_TESTS)
|
||||||
atf-run | atf-report
|
atf-run | atf-report
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# Makefile.in generated by automake 1.13.1 from Makefile.am.
|
# Makefile.in generated by automake 1.14 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -14,23 +14,51 @@
|
|||||||
|
|
||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
am__make_dryrun = \
|
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||||
{ \
|
am__make_running_with_option = \
|
||||||
am__dry=no; \
|
case $${target_option-} in \
|
||||||
|
?) ;; \
|
||||||
|
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||||
|
"target option '$${target_option-}' specified" >&2; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
has_opt=no; \
|
||||||
|
sane_makeflags=$$MAKEFLAGS; \
|
||||||
|
if $(am__is_gnu_make); then \
|
||||||
|
sane_makeflags=$$MFLAGS; \
|
||||||
|
else \
|
||||||
case $$MAKEFLAGS in \
|
case $$MAKEFLAGS in \
|
||||||
*\\[\ \ ]*) \
|
*\\[\ \ ]*) \
|
||||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
bs=\\; \
|
||||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||||
*) \
|
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||||
for am__flg in $$MAKEFLAGS; do \
|
|
||||||
case $$am__flg in \
|
|
||||||
*=*|--*) ;; \
|
|
||||||
*n*) am__dry=yes; break;; \
|
|
||||||
esac; \
|
|
||||||
done;; \
|
|
||||||
esac; \
|
esac; \
|
||||||
test $$am__dry = yes; \
|
fi; \
|
||||||
}
|
skip_next=no; \
|
||||||
|
strip_trailopt () \
|
||||||
|
{ \
|
||||||
|
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||||
|
}; \
|
||||||
|
for flg in $$sane_makeflags; do \
|
||||||
|
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||||
|
case $$flg in \
|
||||||
|
*=*|--*) continue;; \
|
||||||
|
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||||
|
-*I?*) strip_trailopt 'I';; \
|
||||||
|
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||||
|
-*O?*) strip_trailopt 'O';; \
|
||||||
|
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||||
|
-*l?*) strip_trailopt 'l';; \
|
||||||
|
-[dEDm]) skip_next=yes;; \
|
||||||
|
-[JT]) skip_next=yes;; \
|
||||||
|
esac; \
|
||||||
|
case $$flg in \
|
||||||
|
*$$target_option*) has_opt=yes; break;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
test $$has_opt = yes
|
||||||
|
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||||
|
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
@ -49,7 +77,7 @@ PRE_UNINSTALL = :
|
|||||||
POST_UNINSTALL = :
|
POST_UNINSTALL = :
|
||||||
build_triplet = @build@
|
build_triplet = @build@
|
||||||
host_triplet = @host@
|
host_triplet = @host@
|
||||||
@HAVE_ATF_TRUE@am__append_1 = alloc_unittest
|
@HAVE_ATF_TRUE@am__append_1 = alloc_unittest dns_unittest
|
||||||
check_PROGRAMS = $(am__EXEEXT_2)
|
check_PROGRAMS = $(am__EXEEXT_2)
|
||||||
subdir = common/tests
|
subdir = common/tests
|
||||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
||||||
@ -62,7 +90,8 @@ mkinstalldirs = $(install_sh) -d
|
|||||||
CONFIG_HEADER = $(top_builddir)/includes/config.h
|
CONFIG_HEADER = $(top_builddir)/includes/config.h
|
||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES =
|
||||||
CONFIG_CLEAN_VPATH_FILES =
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
@HAVE_ATF_TRUE@am__EXEEXT_1 = alloc_unittest$(EXEEXT)
|
@HAVE_ATF_TRUE@am__EXEEXT_1 = alloc_unittest$(EXEEXT) \
|
||||||
|
@HAVE_ATF_TRUE@ dns_unittest$(EXEEXT)
|
||||||
am__EXEEXT_2 = $(am__EXEEXT_1)
|
am__EXEEXT_2 = $(am__EXEEXT_1)
|
||||||
am__alloc_unittest_SOURCES_DIST = test_alloc.c \
|
am__alloc_unittest_SOURCES_DIST = test_alloc.c \
|
||||||
$(top_srcdir)/tests/t_api_dhcp.c
|
$(top_srcdir)/tests/t_api_dhcp.c
|
||||||
@ -73,6 +102,14 @@ am__DEPENDENCIES_1 =
|
|||||||
@HAVE_ATF_TRUE@alloc_unittest_DEPENDENCIES = $(am__DEPENDENCIES_1) \
|
@HAVE_ATF_TRUE@alloc_unittest_DEPENDENCIES = $(am__DEPENDENCIES_1) \
|
||||||
@HAVE_ATF_TRUE@ ../libdhcp.a ../../omapip/libomapi.a \
|
@HAVE_ATF_TRUE@ ../libdhcp.a ../../omapip/libomapi.a \
|
||||||
@HAVE_ATF_TRUE@ ../../bind/lib/libdns.a ../../bind/lib/libisc.a
|
@HAVE_ATF_TRUE@ ../../bind/lib/libdns.a ../../bind/lib/libisc.a
|
||||||
|
am__dns_unittest_SOURCES_DIST = dns_unittest.c \
|
||||||
|
$(top_srcdir)/tests/t_api_dhcp.c
|
||||||
|
@HAVE_ATF_TRUE@am_dns_unittest_OBJECTS = dns_unittest.$(OBJEXT) \
|
||||||
|
@HAVE_ATF_TRUE@ t_api_dhcp.$(OBJEXT)
|
||||||
|
dns_unittest_OBJECTS = $(am_dns_unittest_OBJECTS)
|
||||||
|
@HAVE_ATF_TRUE@dns_unittest_DEPENDENCIES = $(am__DEPENDENCIES_1) \
|
||||||
|
@HAVE_ATF_TRUE@ ../libdhcp.a ../../omapip/libomapi.a \
|
||||||
|
@HAVE_ATF_TRUE@ ../../bind/lib/libdns.a ../../bind/lib/libisc.a
|
||||||
AM_V_P = $(am__v_P_@AM_V@)
|
AM_V_P = $(am__v_P_@AM_V@)
|
||||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||||
am__v_P_0 = false
|
am__v_P_0 = false
|
||||||
@ -105,8 +142,9 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
|||||||
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||||
am__v_CCLD_1 =
|
am__v_CCLD_1 =
|
||||||
SOURCES = $(alloc_unittest_SOURCES)
|
SOURCES = $(alloc_unittest_SOURCES) $(dns_unittest_SOURCES)
|
||||||
DIST_SOURCES = $(am__alloc_unittest_SOURCES_DIST)
|
DIST_SOURCES = $(am__alloc_unittest_SOURCES_DIST) \
|
||||||
|
$(am__dns_unittest_SOURCES_DIST)
|
||||||
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||||
ctags-recursive dvi-recursive html-recursive info-recursive \
|
ctags-recursive dvi-recursive html-recursive info-recursive \
|
||||||
install-data-recursive install-dvi-recursive \
|
install-data-recursive install-dvi-recursive \
|
||||||
@ -284,6 +322,10 @@ ATF_TESTS = $(am__append_1)
|
|||||||
@HAVE_ATF_TRUE@alloc_unittest_LDADD = $(ATF_LDFLAGS) ../libdhcp.a \
|
@HAVE_ATF_TRUE@alloc_unittest_LDADD = $(ATF_LDFLAGS) ../libdhcp.a \
|
||||||
@HAVE_ATF_TRUE@ ../../omapip/libomapi.a ../../bind/lib/libdns.a \
|
@HAVE_ATF_TRUE@ ../../omapip/libomapi.a ../../bind/lib/libdns.a \
|
||||||
@HAVE_ATF_TRUE@ ../../bind/lib/libisc.a
|
@HAVE_ATF_TRUE@ ../../bind/lib/libisc.a
|
||||||
|
@HAVE_ATF_TRUE@dns_unittest_SOURCES = dns_unittest.c $(top_srcdir)/tests/t_api_dhcp.c
|
||||||
|
@HAVE_ATF_TRUE@dns_unittest_LDADD = $(ATF_LDFLAGS) ../libdhcp.a \
|
||||||
|
@HAVE_ATF_TRUE@ ../../omapip/libomapi.a ../../bind/lib/libdns.a \
|
||||||
|
@HAVE_ATF_TRUE@ ../../bind/lib/libisc.a
|
||||||
all: all-recursive
|
all: all-recursive
|
||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
@ -321,16 +363,22 @@ $(am__aclocal_m4_deps):
|
|||||||
|
|
||||||
clean-checkPROGRAMS:
|
clean-checkPROGRAMS:
|
||||||
-test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
|
-test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
|
||||||
|
|
||||||
alloc_unittest$(EXEEXT): $(alloc_unittest_OBJECTS) $(alloc_unittest_DEPENDENCIES) $(EXTRA_alloc_unittest_DEPENDENCIES)
|
alloc_unittest$(EXEEXT): $(alloc_unittest_OBJECTS) $(alloc_unittest_DEPENDENCIES) $(EXTRA_alloc_unittest_DEPENDENCIES)
|
||||||
@rm -f alloc_unittest$(EXEEXT)
|
@rm -f alloc_unittest$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(alloc_unittest_OBJECTS) $(alloc_unittest_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(alloc_unittest_OBJECTS) $(alloc_unittest_LDADD) $(LIBS)
|
||||||
|
|
||||||
|
dns_unittest$(EXEEXT): $(dns_unittest_OBJECTS) $(dns_unittest_DEPENDENCIES) $(EXTRA_dns_unittest_DEPENDENCIES)
|
||||||
|
@rm -f dns_unittest$(EXEEXT)
|
||||||
|
$(AM_V_CCLD)$(LINK) $(dns_unittest_OBJECTS) $(dns_unittest_LDADD) $(LIBS)
|
||||||
|
|
||||||
mostlyclean-compile:
|
mostlyclean-compile:
|
||||||
-rm -f *.$(OBJEXT)
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
||||||
distclean-compile:
|
distclean-compile:
|
||||||
-rm -f *.tab.c
|
-rm -f *.tab.c
|
||||||
|
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dns_unittest.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_api_dhcp.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_api_dhcp.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_alloc.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_alloc.Po@am__quote@
|
||||||
|
|
||||||
@ -339,14 +387,14 @@ distclean-compile:
|
|||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
||||||
|
|
||||||
.c.obj:
|
.c.obj:
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
|
|
||||||
t_api_dhcp.o: $(top_srcdir)/tests/t_api_dhcp.c
|
t_api_dhcp.o: $(top_srcdir)/tests/t_api_dhcp.c
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT t_api_dhcp.o -MD -MP -MF $(DEPDIR)/t_api_dhcp.Tpo -c -o t_api_dhcp.o `test -f '$(top_srcdir)/tests/t_api_dhcp.c' || echo '$(srcdir)/'`$(top_srcdir)/tests/t_api_dhcp.c
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT t_api_dhcp.o -MD -MP -MF $(DEPDIR)/t_api_dhcp.Tpo -c -o t_api_dhcp.o `test -f '$(top_srcdir)/tests/t_api_dhcp.c' || echo '$(srcdir)/'`$(top_srcdir)/tests/t_api_dhcp.c
|
||||||
@ -369,13 +417,12 @@ t_api_dhcp.obj: $(top_srcdir)/tests/t_api_dhcp.c
|
|||||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||||
$(am__recursive_targets):
|
$(am__recursive_targets):
|
||||||
@fail= failcom='exit 1'; \
|
@fail=; \
|
||||||
for f in x $$MAKEFLAGS; do \
|
if $(am__make_keepgoing); then \
|
||||||
case $$f in \
|
failcom='fail=yes'; \
|
||||||
*=* | --[!k]*);; \
|
else \
|
||||||
*k*) failcom='fail=yes';; \
|
failcom='exit 1'; \
|
||||||
esac; \
|
fi; \
|
||||||
done; \
|
|
||||||
dot_seen=no; \
|
dot_seen=no; \
|
||||||
target=`echo $@ | sed s/-recursive//`; \
|
target=`echo $@ | sed s/-recursive//`; \
|
||||||
case "$@" in \
|
case "$@" in \
|
||||||
|
175
common/tests/dns_unittest.c
Normal file
175
common/tests/dns_unittest.c
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC")
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
* AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
|
||||||
|
* OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
#include <atf-c.h>
|
||||||
|
#include "dhcpd.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file provides unit tests for the dns and ddns code.
|
||||||
|
* Currently this is limited to verifying the dhcid code is
|
||||||
|
* working properly. In time we may be able to expand the
|
||||||
|
* tests to cover other areas.
|
||||||
|
*
|
||||||
|
* The tests for the interim txt records comapre to previous
|
||||||
|
* internally generated values.
|
||||||
|
*
|
||||||
|
* The tests for the standard dhcid records compare to values
|
||||||
|
* from rfc 4701
|
||||||
|
*/
|
||||||
|
|
||||||
|
char *name_1 = "chi6.example.com";
|
||||||
|
u_int8_t clid_1[] = {0x00, 0x01, 0x00, 0x06, 0x41, 0x2d, 0xf1, 0x66, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06};
|
||||||
|
u_int8_t std_result_1[] = {0x00, 0x02, 0x01, 0x63, 0x6f, 0xc0, 0xb8, 0x27, 0x1c,
|
||||||
|
0x82, 0x82, 0x5b, 0xb1, 0xac, 0x5c, 0x41, 0xcf, 0x53,
|
||||||
|
0x51, 0xaa, 0x69, 0xb4, 0xfe, 0xbd, 0x94, 0xe8, 0xf1,
|
||||||
|
0x7c, 0xdb, 0x95, 0x00, 0x0d, 0xa4, 0x8c, 0x40};
|
||||||
|
char *int_result_1 = "\"02abf8cd3753dc1847be40858becd77865";
|
||||||
|
|
||||||
|
char *name_2 = "chi.example.com";
|
||||||
|
u_int8_t clid_2[] = {0x01, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c};
|
||||||
|
u_int8_t std_result_2[] = {0x00, 0x01, 0x01, 0x39, 0x20, 0xfe, 0x5d, 0x1d, 0xce,
|
||||||
|
0xb3, 0xfd, 0x0b, 0xa3, 0x37, 0x97, 0x56, 0xa7, 0x0d,
|
||||||
|
0x73, 0xb1, 0x70, 0x09, 0xf4, 0x1d, 0x58, 0xbd, 0xdb,
|
||||||
|
0xfc, 0xd6, 0xa2, 0x50, 0x39, 0x56, 0xd8, 0xda};
|
||||||
|
char *int_result_2 = "\"31934ffa9344a3ab86c380505a671e5113";
|
||||||
|
|
||||||
|
char *name_3 = "client.example.com";
|
||||||
|
u_int8_t clid_3[] = {0x01, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06};
|
||||||
|
u_int8_t std_result_3[] = {0x00, 0x00, 0x01, 0xc4, 0xb9, 0xa5, 0xb2, 0x49, 0x65,
|
||||||
|
0x13, 0x43, 0x15, 0x8d, 0xde, 0x7b, 0xcc, 0x77, 0x16,
|
||||||
|
0x98, 0x41, 0xf7, 0xa4, 0x24, 0x3a, 0x57, 0x2b, 0x5c,
|
||||||
|
0x28, 0x3f, 0xff, 0xed, 0xeb, 0x3f, 0x75, 0xe6};
|
||||||
|
char *int_result_3 = "\"0046b6cacea62dc1d4567b068175d1f808";
|
||||||
|
|
||||||
|
void call_get_std_dhcid(int test, int type,
|
||||||
|
u_int8_t *clid, unsigned clidlen,
|
||||||
|
char *name, unsigned namelen,
|
||||||
|
u_int8_t *dhcid, unsigned dhcid_len)
|
||||||
|
{
|
||||||
|
dhcp_ddns_cb_t ddns_cb;
|
||||||
|
struct data_string *id;
|
||||||
|
|
||||||
|
memset(&ddns_cb, 0, sizeof(ddns_cb));
|
||||||
|
ddns_cb.dhcid_class = dns_rdatatype_dhcid;;
|
||||||
|
|
||||||
|
id = &ddns_cb.fwd_name;
|
||||||
|
if (!buffer_allocate(&id->buffer, namelen, MDL))
|
||||||
|
atf_tc_fail("Unable to allocate buffer for std test %d", test);
|
||||||
|
id->data = id->buffer->data;
|
||||||
|
memcpy(id->buffer->data, name, namelen);
|
||||||
|
id->len = namelen;
|
||||||
|
|
||||||
|
if (get_dhcid(&ddns_cb, type, clid, clidlen) != 1) {
|
||||||
|
atf_tc_fail("Unable to get std dhcid for %d", test);
|
||||||
|
} else if (ddns_cb.dhcid_class != dns_rdatatype_dhcid) {
|
||||||
|
atf_tc_fail("Wrong class for std dhcid for %d", test);
|
||||||
|
} else if (ddns_cb.dhcid.len != dhcid_len) {
|
||||||
|
atf_tc_fail("Wrong length for std dhcid for %d", test);
|
||||||
|
} else if (memcmp(ddns_cb.dhcid.data, dhcid, dhcid_len) != 0) {
|
||||||
|
atf_tc_fail("Wrong digest for std dhcid for %d", test);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* clean up */
|
||||||
|
data_string_forget(&ddns_cb.dhcid, MDL);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ATF_TC(standard_dhcid);
|
||||||
|
|
||||||
|
ATF_TC_HEAD(standard_dhcid, tc)
|
||||||
|
{
|
||||||
|
atf_tc_set_md_var(tc, "descr", "Verify standard dhcid construction.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ATF_TC_BODY(standard_dhcid, tc)
|
||||||
|
{
|
||||||
|
|
||||||
|
call_get_std_dhcid(1, 2, clid_1, sizeof(clid_1),
|
||||||
|
name_1, strlen(name_1),
|
||||||
|
std_result_1, 35);
|
||||||
|
|
||||||
|
|
||||||
|
call_get_std_dhcid(2, 1, clid_2, sizeof(clid_2),
|
||||||
|
name_2, strlen(name_2),
|
||||||
|
std_result_2, 35);
|
||||||
|
|
||||||
|
|
||||||
|
call_get_std_dhcid(3, 0, clid_3, sizeof(clid_3),
|
||||||
|
name_3, strlen(name_3),
|
||||||
|
std_result_3, 35);
|
||||||
|
}
|
||||||
|
|
||||||
|
void call_get_int_dhcid(int test, int type,
|
||||||
|
u_int8_t *clid, unsigned clidlen,
|
||||||
|
char *dhcid, unsigned dhcid_len)
|
||||||
|
{
|
||||||
|
dhcp_ddns_cb_t ddns_cb;
|
||||||
|
|
||||||
|
memset(&ddns_cb, 0, sizeof(ddns_cb));
|
||||||
|
ddns_cb.dhcid_class = dns_rdatatype_txt;;
|
||||||
|
|
||||||
|
if (get_dhcid(&ddns_cb, type, clid, clidlen) != 1) {
|
||||||
|
atf_tc_fail("Unable to get txt dhcid for %d", test);
|
||||||
|
} else if (ddns_cb.dhcid_class != dns_rdatatype_txt) {
|
||||||
|
atf_tc_fail("Wrong class for txt dhcid for %d", test);
|
||||||
|
} else if (ddns_cb.dhcid.len != dhcid_len) {
|
||||||
|
atf_tc_fail("Wrong length for txt dhcid for %d", test);
|
||||||
|
} else if (memcmp(ddns_cb.dhcid.data, dhcid, dhcid_len) != 0) {
|
||||||
|
atf_tc_fail("Wrong digest for txt dhcid for %d", test);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* clean up */
|
||||||
|
data_string_forget(&ddns_cb.dhcid, MDL);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ATF_TC(interim_dhcid);
|
||||||
|
|
||||||
|
ATF_TC_HEAD(interim_dhcid, tc)
|
||||||
|
{
|
||||||
|
atf_tc_set_md_var(tc, "descr", "Verify interim dhcid construction.");
|
||||||
|
}
|
||||||
|
|
||||||
|
ATF_TC_BODY(interim_dhcid, tc)
|
||||||
|
{
|
||||||
|
|
||||||
|
call_get_int_dhcid(1, 2, clid_1, sizeof(clid_1),
|
||||||
|
int_result_1, 35);
|
||||||
|
|
||||||
|
|
||||||
|
call_get_int_dhcid(2, DHO_DHCP_CLIENT_IDENTIFIER,
|
||||||
|
clid_2, sizeof(clid_2),
|
||||||
|
int_result_2, 35);
|
||||||
|
|
||||||
|
|
||||||
|
call_get_int_dhcid(3, 0, clid_3, sizeof(clid_3),
|
||||||
|
int_result_3, 35);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This macro defines main() method that will call specified
|
||||||
|
test cases. tp and simple_test_case names can be whatever you want
|
||||||
|
as long as it is a valid variable identifier. */
|
||||||
|
ATF_TP_ADD_TCS(tp)
|
||||||
|
{
|
||||||
|
ATF_TP_ADD_TC(tp, interim_dhcid);
|
||||||
|
ATF_TP_ADD_TC(tp, standard_dhcid);
|
||||||
|
|
||||||
|
return (atf_no_error());
|
||||||
|
}
|
520
common/tree.c
520
common/tree.c
@ -644,15 +644,6 @@ int evaluate_expression (result, packet, lease, client_state,
|
|||||||
status = (evaluate_data_expression
|
status = (evaluate_data_expression
|
||||||
(&bv -> value.data, packet, lease, client_state,
|
(&bv -> value.data, packet, lease, client_state,
|
||||||
in_options, cfg_options, scope, expr, MDL));
|
in_options, cfg_options, scope, expr, MDL));
|
||||||
#if defined (NSUPDATE_OLD)
|
|
||||||
} else if (is_dns_expression (expr)) {
|
|
||||||
if (!binding_value_allocate (&bv, MDL))
|
|
||||||
return 0;
|
|
||||||
bv -> type = binding_dns;
|
|
||||||
status = (evaluate_dns_expression
|
|
||||||
(&bv -> value.dns, packet, lease, client_state,
|
|
||||||
in_options, cfg_options, scope, expr));
|
|
||||||
#endif
|
|
||||||
} else {
|
} else {
|
||||||
log_error ("%s: invalid expression type: %d",
|
log_error ("%s: invalid expression type: %d",
|
||||||
"evaluate_expression", expr -> op);
|
"evaluate_expression", expr -> op);
|
||||||
@ -698,19 +689,6 @@ int binding_value_dereference (struct binding_value **v,
|
|||||||
if (bv -> value.data.buffer)
|
if (bv -> value.data.buffer)
|
||||||
data_string_forget (&bv -> value.data, file, line);
|
data_string_forget (&bv -> value.data, file, line);
|
||||||
break;
|
break;
|
||||||
case binding_dns:
|
|
||||||
#if defined (NSUPDATE_OLD)
|
|
||||||
if (bv -> value.dns) {
|
|
||||||
if (bv -> value.dns -> r_data) {
|
|
||||||
dfree (bv -> value.dns -> r_data_ephem, MDL);
|
|
||||||
bv -> value.dns -> r_data = (unsigned char *)0;
|
|
||||||
bv -> value.dns -> r_data_ephem =
|
|
||||||
(unsigned char *)0;
|
|
||||||
}
|
|
||||||
minires_freeupdrec (bv -> value.dns);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
default:
|
default:
|
||||||
log_error ("%s(%d): invalid binding type: %d",
|
log_error ("%s(%d): invalid binding type: %d",
|
||||||
file, line, bv -> type);
|
file, line, bv -> type);
|
||||||
@ -720,270 +698,6 @@ int binding_value_dereference (struct binding_value **v,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined (NSUPDATE_OLD)
|
|
||||||
int evaluate_dns_expression (result, packet, lease, client_state, in_options,
|
|
||||||
cfg_options, scope, expr)
|
|
||||||
ns_updrec **result;
|
|
||||||
struct packet *packet;
|
|
||||||
struct lease *lease;
|
|
||||||
struct client_state *client_state;
|
|
||||||
struct option_state *in_options;
|
|
||||||
struct option_state *cfg_options;
|
|
||||||
struct binding_scope **scope;
|
|
||||||
struct expression *expr;
|
|
||||||
{
|
|
||||||
unsigned long ttl = 0;
|
|
||||||
char *tname;
|
|
||||||
struct data_string name, data;
|
|
||||||
int r0, r1, r2;
|
|
||||||
|
|
||||||
if (!result || *result) {
|
|
||||||
log_error ("evaluate_dns_expression called with non-null %s",
|
|
||||||
"result pointer");
|
|
||||||
#if defined (POINTER_DEBUG)
|
|
||||||
abort ();
|
|
||||||
#else
|
|
||||||
return 0;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (expr -> op) {
|
|
||||||
#if defined (NSUPDATE)
|
|
||||||
case expr_ns_add:
|
|
||||||
r0 = evaluate_numeric_expression (&ttl, packet, lease,
|
|
||||||
client_state,
|
|
||||||
in_options, cfg_options,
|
|
||||||
scope,
|
|
||||||
expr -> data.ns_add.ttl);
|
|
||||||
goto nsfinish;
|
|
||||||
|
|
||||||
case expr_ns_exists:
|
|
||||||
ttl = 1;
|
|
||||||
|
|
||||||
case expr_ns_delete:
|
|
||||||
case expr_ns_not_exists:
|
|
||||||
r0 = 1;
|
|
||||||
nsfinish:
|
|
||||||
memset (&name, 0, sizeof name);
|
|
||||||
r1 = evaluate_data_expression (&name, packet, lease,
|
|
||||||
client_state,
|
|
||||||
in_options, cfg_options, scope,
|
|
||||||
expr -> data.ns_add.rrname,
|
|
||||||
MDL);
|
|
||||||
if (r1) {
|
|
||||||
/* The result of the evaluation may or may not
|
|
||||||
be NUL-terminated, but we need it
|
|
||||||
terminated for sure, so we have to allocate
|
|
||||||
a buffer and terminate it. */
|
|
||||||
tname = dmalloc (name.len + 1, MDL);
|
|
||||||
if (!tname) {
|
|
||||||
r2 = 0;
|
|
||||||
r1 = 0;
|
|
||||||
data_string_forget (&name, MDL);
|
|
||||||
} else {
|
|
||||||
memcpy (tname, name.data, name.len);
|
|
||||||
tname [name.len] = 0;
|
|
||||||
memset (&data, 0, sizeof data);
|
|
||||||
r2 = evaluate_data_expression
|
|
||||||
(&data, packet, lease, client_state,
|
|
||||||
in_options, cfg_options, scope,
|
|
||||||
expr -> data.ns_add.rrdata, MDL);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
r2 = 0;
|
|
||||||
tname = NULL;
|
|
||||||
}
|
|
||||||
if (r0 && r1 && (r2 || expr -> op != expr_ns_add)) {
|
|
||||||
*result = minires_mkupdrec (((expr -> op == expr_ns_add ||
|
|
||||||
expr -> op == expr_ns_delete)
|
|
||||||
? S_UPDATE : S_PREREQ),
|
|
||||||
tname,
|
|
||||||
expr -> data.ns_add.rrclass,
|
|
||||||
expr -> data.ns_add.rrtype,
|
|
||||||
ttl);
|
|
||||||
if (!*result) {
|
|
||||||
ngood:
|
|
||||||
if (r2) {
|
|
||||||
data_string_forget (&data, MDL);
|
|
||||||
r2 = 0;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (data.len) {
|
|
||||||
/* As a special case, if we get exactly
|
|
||||||
four bytes of data, it's an IP address
|
|
||||||
represented as a 32-bit quantity, which
|
|
||||||
is actually what we *should* be getting
|
|
||||||
here. Because res_mkupdrec is currently
|
|
||||||
broken and expects a dotted quad, convert
|
|
||||||
it. This should be fixed when the new
|
|
||||||
resolver is merged. */
|
|
||||||
if (data.len == 4) {
|
|
||||||
(*result) -> r_data_ephem =
|
|
||||||
dmalloc (16, MDL);
|
|
||||||
if (!(*result) -> r_data_ephem)
|
|
||||||
goto dpngood;
|
|
||||||
(*result) -> r_data =
|
|
||||||
(*result) -> r_data_ephem;
|
|
||||||
/*%Audit% 16 bytes max. %2004.06.17,Safe%*/
|
|
||||||
sprintf ((char *)(*result) -> r_data_ephem,
|
|
||||||
"%u.%u.%u.%u",
|
|
||||||
data.data [0] & 0xff,
|
|
||||||
data.data [1] & 0xff,
|
|
||||||
data.data [2] & 0xff,
|
|
||||||
data.data [3] & 0xff);
|
|
||||||
(*result) -> r_size =
|
|
||||||
strlen ((const char *)
|
|
||||||
(*result) -> r_data);
|
|
||||||
} else {
|
|
||||||
(*result) -> r_size = data.len;
|
|
||||||
(*result) -> r_data_ephem =
|
|
||||||
dmalloc (data.len, MDL);
|
|
||||||
if (!(*result) -> r_data_ephem) {
|
|
||||||
dpngood: /* double plus ungood. */
|
|
||||||
minires_freeupdrec (*result);
|
|
||||||
*result = 0;
|
|
||||||
goto ngood;
|
|
||||||
}
|
|
||||||
(*result) -> r_data =
|
|
||||||
(*result) -> r_data_ephem;
|
|
||||||
memcpy ((*result) -> r_data_ephem,
|
|
||||||
data.data, data.len);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
(*result) -> r_data = 0;
|
|
||||||
(*result) -> r_size = 0;
|
|
||||||
}
|
|
||||||
switch (expr -> op) {
|
|
||||||
case expr_ns_add:
|
|
||||||
(*result) -> r_opcode = ADD;
|
|
||||||
break;
|
|
||||||
case expr_ns_delete:
|
|
||||||
(*result) -> r_opcode = DELETE;
|
|
||||||
break;
|
|
||||||
case expr_ns_exists:
|
|
||||||
(*result) -> r_opcode = YXRRSET;
|
|
||||||
break;
|
|
||||||
case expr_ns_not_exists:
|
|
||||||
(*result) -> r_opcode = NXRRSET;
|
|
||||||
break;
|
|
||||||
|
|
||||||
/* Can't happen, but satisfy gcc. */
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (r1) {
|
|
||||||
data_string_forget (&name, MDL);
|
|
||||||
dfree (tname, MDL);
|
|
||||||
}
|
|
||||||
if (r2)
|
|
||||||
data_string_forget (&data, MDL);
|
|
||||||
/* One flaw in the thinking here: an IP address and an
|
|
||||||
ASCII string both look like data expressions, but
|
|
||||||
for A records, we want an ASCII string, not a
|
|
||||||
binary IP address. Do I need to turn binary IP
|
|
||||||
addresses into a separate type? */
|
|
||||||
return (r0 && r1 &&
|
|
||||||
(r2 || expr -> op != expr_ns_add) && *result);
|
|
||||||
|
|
||||||
#else
|
|
||||||
case expr_ns_add:
|
|
||||||
case expr_ns_delete:
|
|
||||||
case expr_ns_exists:
|
|
||||||
case expr_ns_not_exists:
|
|
||||||
return 0;
|
|
||||||
#endif
|
|
||||||
case expr_funcall:
|
|
||||||
log_error ("%s: dns values for functions not supported.",
|
|
||||||
expr -> data.funcall.name);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case expr_variable_reference:
|
|
||||||
log_error ("%s: dns values for variables not supported.",
|
|
||||||
expr -> data.variable);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case expr_check:
|
|
||||||
case expr_equal:
|
|
||||||
case expr_not_equal:
|
|
||||||
case expr_regex_match:
|
|
||||||
case expr_iregex_match:
|
|
||||||
case expr_and:
|
|
||||||
case expr_or:
|
|
||||||
case expr_not:
|
|
||||||
case expr_match:
|
|
||||||
case expr_static:
|
|
||||||
case expr_known:
|
|
||||||
case expr_exists:
|
|
||||||
case expr_variable_exists:
|
|
||||||
log_error ("Boolean opcode in evaluate_dns_expression: %d",
|
|
||||||
expr -> op);
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
case expr_none:
|
|
||||||
case expr_substring:
|
|
||||||
case expr_suffix:
|
|
||||||
case expr_lcase:
|
|
||||||
case expr_ucase:
|
|
||||||
case expr_option:
|
|
||||||
case expr_hardware:
|
|
||||||
case expr_const_data:
|
|
||||||
case expr_packet:
|
|
||||||
case expr_concat:
|
|
||||||
case expr_encapsulate:
|
|
||||||
case expr_host_lookup:
|
|
||||||
case expr_encode_int8:
|
|
||||||
case expr_encode_int16:
|
|
||||||
case expr_encode_int32:
|
|
||||||
case expr_binary_to_ascii:
|
|
||||||
case expr_reverse:
|
|
||||||
case expr_filename:
|
|
||||||
case expr_sname:
|
|
||||||
case expr_pick_first_value:
|
|
||||||
case expr_host_decl_name:
|
|
||||||
case expr_config_option:
|
|
||||||
case expr_leased_address:
|
|
||||||
case expr_null:
|
|
||||||
case expr_gethostname:
|
|
||||||
log_error ("Data opcode in evaluate_dns_expression: %d",
|
|
||||||
expr -> op);
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
case expr_extract_int8:
|
|
||||||
case expr_extract_int16:
|
|
||||||
case expr_extract_int32:
|
|
||||||
case expr_const_int:
|
|
||||||
case expr_lease_time:
|
|
||||||
case expr_dns_transaction:
|
|
||||||
case expr_add:
|
|
||||||
case expr_subtract:
|
|
||||||
case expr_multiply:
|
|
||||||
case expr_divide:
|
|
||||||
case expr_remainder:
|
|
||||||
case expr_binary_and:
|
|
||||||
case expr_binary_or:
|
|
||||||
case expr_binary_xor:
|
|
||||||
case expr_client_state:
|
|
||||||
log_error ("Numeric opcode in evaluate_dns_expression: %d",
|
|
||||||
expr -> op);
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
case expr_function:
|
|
||||||
log_error ("Function opcode in evaluate_dns_expression: %d",
|
|
||||||
expr -> op);
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
case expr_arg:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
log_error ("Bogus opcode in evaluate_dns_expression: %d",
|
|
||||||
expr -> op);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif /* defined (NSUPDATE_OLD) */
|
|
||||||
|
|
||||||
int evaluate_boolean_expression (result, packet, lease, client_state,
|
int evaluate_boolean_expression (result, packet, lease, client_state,
|
||||||
in_options, cfg_options, scope, expr)
|
in_options, cfg_options, scope, expr)
|
||||||
int *result;
|
int *result;
|
||||||
@ -1055,20 +769,7 @@ int evaluate_boolean_expression (result, packet, lease, client_state,
|
|||||||
else
|
else
|
||||||
*result = expr -> op == expr_not_equal;
|
*result = expr -> op == expr_not_equal;
|
||||||
break;
|
break;
|
||||||
#if defined (NSUPDATE_OLD)
|
|
||||||
case binding_dns:
|
|
||||||
#if defined (NSUPDATE)
|
|
||||||
/* XXX This should be a comparison for equal
|
|
||||||
XXX values, not for identity. */
|
|
||||||
if (bv -> value.dns == obv -> value.dns)
|
|
||||||
*result = expr -> op == expr_equal;
|
|
||||||
else
|
|
||||||
*result = expr -> op == expr_not_equal;
|
|
||||||
#else
|
|
||||||
*result = expr -> op == expr_not_equal;
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
#endif /* NSUPDATE_OLD */
|
|
||||||
case binding_function:
|
case binding_function:
|
||||||
if (bv -> value.fundef == obv -> value.fundef)
|
if (bv -> value.fundef == obv -> value.fundef)
|
||||||
*result = expr -> op == expr_equal;
|
*result = expr -> op == expr_equal;
|
||||||
@ -2368,7 +2069,7 @@ int evaluate_data_expression (result, packet, lease, client_state,
|
|||||||
case expr_ns_delete:
|
case expr_ns_delete:
|
||||||
case expr_ns_exists:
|
case expr_ns_exists:
|
||||||
case expr_ns_not_exists:
|
case expr_ns_not_exists:
|
||||||
log_error ("dns update opcode in evaluate_data_expression: %d",
|
log_error ("dns opcode in evaluate_boolean_expression: %d",
|
||||||
expr -> op);
|
expr -> op);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@ -2397,11 +2098,6 @@ int evaluate_numeric_expression (result, packet, lease, client_state,
|
|||||||
{
|
{
|
||||||
struct data_string data;
|
struct data_string data;
|
||||||
int status, sleft, sright;
|
int status, sleft, sright;
|
||||||
#if defined (NSUPDATE_OLD)
|
|
||||||
ns_updrec *nut;
|
|
||||||
ns_updque uq;
|
|
||||||
struct expression *cur, *next;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct binding *binding;
|
struct binding *binding;
|
||||||
struct binding_value *bv;
|
struct binding_value *bv;
|
||||||
@ -2540,53 +2236,6 @@ int evaluate_numeric_expression (result, packet, lease, client_state,
|
|||||||
#endif
|
#endif
|
||||||
return (1);
|
return (1);
|
||||||
|
|
||||||
case expr_dns_transaction:
|
|
||||||
#if !defined (NSUPDATE_OLD)
|
|
||||||
return 0;
|
|
||||||
#else
|
|
||||||
if (!resolver_inited) {
|
|
||||||
minires_ninit (&resolver_state);
|
|
||||||
resolver_inited = 1;
|
|
||||||
resolver_state.retrans = 1;
|
|
||||||
resolver_state.retry = 1;
|
|
||||||
}
|
|
||||||
ISC_LIST_INIT (uq);
|
|
||||||
cur = expr;
|
|
||||||
do {
|
|
||||||
next = cur -> data.dns_transaction.cdr;
|
|
||||||
nut = 0;
|
|
||||||
status = (evaluate_dns_expression
|
|
||||||
(&nut, packet,
|
|
||||||
lease, client_state, in_options, cfg_options,
|
|
||||||
scope, cur -> data.dns_transaction.car));
|
|
||||||
if (!status)
|
|
||||||
goto dns_bad;
|
|
||||||
ISC_LIST_APPEND (uq, nut, r_link);
|
|
||||||
cur = next;
|
|
||||||
} while (next);
|
|
||||||
|
|
||||||
/* Do the update and record the error code, if there was
|
|
||||||
an error; otherwise set it to NOERROR. */
|
|
||||||
*result = minires_nupdate (&resolver_state,
|
|
||||||
ISC_LIST_HEAD (uq));
|
|
||||||
status = 1;
|
|
||||||
|
|
||||||
print_dns_status ((int)*result, &uq);
|
|
||||||
|
|
||||||
dns_bad:
|
|
||||||
while (!ISC_LIST_EMPTY (uq)) {
|
|
||||||
ns_updrec *tmp = ISC_LIST_HEAD (uq);
|
|
||||||
ISC_LIST_UNLINK (uq, tmp, r_link);
|
|
||||||
if (tmp -> r_data_ephem) {
|
|
||||||
dfree (tmp -> r_data_ephem, MDL);
|
|
||||||
tmp -> r_data = (unsigned char *)0;
|
|
||||||
tmp -> r_data_ephem = (unsigned char *)0;
|
|
||||||
}
|
|
||||||
minires_freeupdrec (tmp);
|
|
||||||
}
|
|
||||||
return status;
|
|
||||||
#endif /* NSUPDATE_OLD */
|
|
||||||
|
|
||||||
case expr_variable_reference:
|
case expr_variable_reference:
|
||||||
if (scope && *scope) {
|
if (scope && *scope) {
|
||||||
binding = find_binding (*scope, expr -> data.variable);
|
binding = find_binding (*scope, expr -> data.variable);
|
||||||
@ -2876,14 +2525,6 @@ int evaluate_numeric_expression (result, packet, lease, client_state,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
case expr_ns_add:
|
|
||||||
case expr_ns_delete:
|
|
||||||
case expr_ns_exists:
|
|
||||||
case expr_ns_not_exists:
|
|
||||||
log_error ("dns opcode in evaluate_numeric_expression: %d",
|
|
||||||
expr -> op);
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
case expr_function:
|
case expr_function:
|
||||||
log_error ("function definition in evaluate_numeric_expr");
|
log_error ("function definition in evaluate_numeric_expr");
|
||||||
return 0;
|
return 0;
|
||||||
@ -3181,38 +2822,6 @@ void expression_dereference (eptr, file, line)
|
|||||||
(&expr -> data.reverse.buffer, file, line);
|
(&expr -> data.reverse.buffer, file, line);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case expr_dns_transaction:
|
|
||||||
if (expr -> data.dns_transaction.car)
|
|
||||||
expression_dereference (&expr -> data.dns_transaction.car,
|
|
||||||
file, line);
|
|
||||||
if (expr -> data.dns_transaction.cdr)
|
|
||||||
expression_dereference (&expr -> data.dns_transaction.cdr,
|
|
||||||
file, line);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case expr_ns_add:
|
|
||||||
if (expr -> data.ns_add.rrname)
|
|
||||||
expression_dereference (&expr -> data.ns_add.rrname,
|
|
||||||
file, line);
|
|
||||||
if (expr -> data.ns_add.rrdata)
|
|
||||||
expression_dereference (&expr -> data.ns_add.rrdata,
|
|
||||||
file, line);
|
|
||||||
if (expr -> data.ns_add.ttl)
|
|
||||||
expression_dereference (&expr -> data.ns_add.ttl,
|
|
||||||
file, line);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case expr_ns_delete:
|
|
||||||
case expr_ns_exists:
|
|
||||||
case expr_ns_not_exists:
|
|
||||||
if (expr -> data.ns_delete.rrname)
|
|
||||||
expression_dereference (&expr -> data.ns_delete.rrname,
|
|
||||||
file, line);
|
|
||||||
if (expr -> data.ns_delete.rrdata)
|
|
||||||
expression_dereference (&expr -> data.ns_delete.rrdata,
|
|
||||||
file, line);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case expr_variable_reference:
|
case expr_variable_reference:
|
||||||
case expr_variable_exists:
|
case expr_variable_exists:
|
||||||
if (expr -> data.variable)
|
if (expr -> data.variable)
|
||||||
@ -3261,15 +2870,6 @@ void expression_dereference (eptr, file, line)
|
|||||||
free_expression (expr, MDL);
|
free_expression (expr, MDL);
|
||||||
}
|
}
|
||||||
|
|
||||||
int is_dns_expression (expr)
|
|
||||||
struct expression *expr;
|
|
||||||
{
|
|
||||||
return (expr -> op == expr_ns_add ||
|
|
||||||
expr -> op == expr_ns_delete ||
|
|
||||||
expr -> op == expr_ns_exists ||
|
|
||||||
expr -> op == expr_ns_not_exists);
|
|
||||||
}
|
|
||||||
|
|
||||||
int is_boolean_expression (expr)
|
int is_boolean_expression (expr)
|
||||||
struct expression *expr;
|
struct expression *expr;
|
||||||
{
|
{
|
||||||
@ -3324,7 +2924,6 @@ int is_numeric_expression (expr)
|
|||||||
expr -> op == expr_extract_int32 ||
|
expr -> op == expr_extract_int32 ||
|
||||||
expr -> op == expr_const_int ||
|
expr -> op == expr_const_int ||
|
||||||
expr -> op == expr_lease_time ||
|
expr -> op == expr_lease_time ||
|
||||||
expr -> op == expr_dns_transaction ||
|
|
||||||
expr -> op == expr_add ||
|
expr -> op == expr_add ||
|
||||||
expr -> op == expr_subtract ||
|
expr -> op == expr_subtract ||
|
||||||
expr -> op == expr_multiply ||
|
expr -> op == expr_multiply ||
|
||||||
@ -3339,11 +2938,7 @@ int is_numeric_expression (expr)
|
|||||||
int is_compound_expression (expr)
|
int is_compound_expression (expr)
|
||||||
struct expression *expr;
|
struct expression *expr;
|
||||||
{
|
{
|
||||||
return (expr -> op == expr_ns_add ||
|
return (expr -> op == expr_substring ||
|
||||||
expr -> op == expr_ns_delete ||
|
|
||||||
expr -> op == expr_ns_exists ||
|
|
||||||
expr -> op == expr_ns_not_exists ||
|
|
||||||
expr -> op == expr_substring ||
|
|
||||||
expr -> op == expr_suffix ||
|
expr -> op == expr_suffix ||
|
||||||
expr -> op == expr_option ||
|
expr -> op == expr_option ||
|
||||||
expr -> op == expr_concat ||
|
expr -> op == expr_concat ||
|
||||||
@ -3356,8 +2951,7 @@ int is_compound_expression (expr)
|
|||||||
expr -> op == expr_config_option ||
|
expr -> op == expr_config_option ||
|
||||||
expr -> op == expr_extract_int8 ||
|
expr -> op == expr_extract_int8 ||
|
||||||
expr -> op == expr_extract_int16 ||
|
expr -> op == expr_extract_int16 ||
|
||||||
expr -> op == expr_extract_int32 ||
|
expr -> op == expr_extract_int32);
|
||||||
expr -> op == expr_dns_transaction);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int op_val (enum expr_op);
|
static int op_val (enum expr_op);
|
||||||
@ -3455,8 +3049,6 @@ enum expression_context expression_context (struct expression *expr)
|
|||||||
return context_numeric;
|
return context_numeric;
|
||||||
if (is_boolean_expression (expr))
|
if (is_boolean_expression (expr))
|
||||||
return context_boolean;
|
return context_boolean;
|
||||||
if (is_dns_expression (expr))
|
|
||||||
return context_dns;
|
|
||||||
return context_any;
|
return context_any;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3927,99 +3519,6 @@ int write_expression (file, expr, col, indent, firstp)
|
|||||||
"lease-time");
|
"lease-time");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case expr_dns_transaction:
|
|
||||||
col = token_print_indent (file, col, indent, "", "",
|
|
||||||
"ns-update");
|
|
||||||
col = token_print_indent (file, col, indent, " ", "",
|
|
||||||
"(");
|
|
||||||
scol = 0;
|
|
||||||
for (e = expr;
|
|
||||||
e && e -> op == expr_dns_transaction;
|
|
||||||
e = e -> data.dns_transaction.cdr) {
|
|
||||||
if (!scol) {
|
|
||||||
scol = col;
|
|
||||||
firstp = 1;
|
|
||||||
} else
|
|
||||||
firstp = 0;
|
|
||||||
col = write_expression (file,
|
|
||||||
e -> data.dns_transaction.car,
|
|
||||||
col, scol, firstp);
|
|
||||||
if (e -> data.dns_transaction.cdr)
|
|
||||||
col = token_print_indent (file, col, scol,
|
|
||||||
"", " ", ",");
|
|
||||||
}
|
|
||||||
if (e)
|
|
||||||
col = write_expression (file, e, col, scol, 0);
|
|
||||||
col = token_print_indent (file, col, indent, "", "", ")");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case expr_ns_add:
|
|
||||||
col = token_print_indent (file, col, indent, "", "",
|
|
||||||
"update");
|
|
||||||
col = token_print_indent (file, col, indent, " ", "",
|
|
||||||
"(");
|
|
||||||
scol = col;
|
|
||||||
sprintf (obuf, "%d", expr -> data.ns_add.rrclass);
|
|
||||||
col = token_print_indent (file, col, scol, "", "", obuf);
|
|
||||||
col = token_print_indent (file, col, scol, "", " ",
|
|
||||||
",");
|
|
||||||
sprintf (obuf, "%d", expr -> data.ns_add.rrtype);
|
|
||||||
col = token_print_indent (file, col, scol, "", "", obuf);
|
|
||||||
col = token_print_indent (file, col, scol, "", " ",
|
|
||||||
",");
|
|
||||||
col = write_expression (file, expr -> data.ns_add.rrname,
|
|
||||||
col, scol, 0);
|
|
||||||
col = token_print_indent (file, col, scol, "", " ",
|
|
||||||
",");
|
|
||||||
col = write_expression (file, expr -> data.ns_add.rrdata,
|
|
||||||
col, scol, 0);
|
|
||||||
col = token_print_indent (file, col, scol, "", " ",
|
|
||||||
",");
|
|
||||||
col = write_expression (file, expr -> data.ns_add.ttl,
|
|
||||||
col, scol, 0);
|
|
||||||
col = token_print_indent (file, col, indent, "", "",
|
|
||||||
")");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case expr_ns_delete:
|
|
||||||
col = token_print_indent (file, col, indent, "", "",
|
|
||||||
"delete");
|
|
||||||
col = token_print_indent (file, col, indent, " ", "",
|
|
||||||
"(");
|
|
||||||
finish_ns_small:
|
|
||||||
scol = col;
|
|
||||||
sprintf (obuf, "%d", expr -> data.ns_add.rrclass);
|
|
||||||
col = token_print_indent (file, col, scol, "", "", obuf);
|
|
||||||
col = token_print_indent (file, col, scol, "", " ",
|
|
||||||
",");
|
|
||||||
sprintf (obuf, "%d", expr -> data.ns_add.rrtype);
|
|
||||||
col = token_print_indent (file, col, scol, "", "", obuf);
|
|
||||||
col = token_print_indent (file, col, scol, "", " ",
|
|
||||||
",");
|
|
||||||
col = write_expression (file, expr -> data.ns_add.rrname,
|
|
||||||
col, scol, 0);
|
|
||||||
col = token_print_indent (file, col, scol, "", " ",
|
|
||||||
",");
|
|
||||||
col = write_expression (file, expr -> data.ns_add.rrdata,
|
|
||||||
col, scol, 0);
|
|
||||||
col = token_print_indent (file, col, indent, "", "",
|
|
||||||
")");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case expr_ns_exists:
|
|
||||||
col = token_print_indent (file, col, indent, "", "",
|
|
||||||
"exists");
|
|
||||||
col = token_print_indent (file, col, indent, " ", "",
|
|
||||||
"(");
|
|
||||||
goto finish_ns_small;
|
|
||||||
|
|
||||||
case expr_ns_not_exists:
|
|
||||||
col = token_print_indent (file, col, indent, "", "",
|
|
||||||
"not exists");
|
|
||||||
col = token_print_indent (file, col, indent, " ", "",
|
|
||||||
"(");
|
|
||||||
goto finish_ns_small;
|
|
||||||
|
|
||||||
case expr_static:
|
case expr_static:
|
||||||
col = token_print_indent (file, col, indent, "", "",
|
col = token_print_indent (file, col, indent, "", "",
|
||||||
"static");
|
"static");
|
||||||
@ -4292,12 +3791,7 @@ int data_subexpression_length (int *rv,
|
|||||||
case expr_const_int:
|
case expr_const_int:
|
||||||
case expr_exists:
|
case expr_exists:
|
||||||
case expr_known:
|
case expr_known:
|
||||||
case expr_dns_transaction:
|
|
||||||
case expr_static:
|
case expr_static:
|
||||||
case expr_ns_add:
|
|
||||||
case expr_ns_delete:
|
|
||||||
case expr_ns_exists:
|
|
||||||
case expr_ns_not_exists:
|
|
||||||
case expr_not_equal:
|
case expr_not_equal:
|
||||||
case expr_null:
|
case expr_null:
|
||||||
case expr_variable_exists:
|
case expr_variable_exists:
|
||||||
@ -4348,12 +3842,6 @@ int expr_valid_for_context (struct expression *expr,
|
|||||||
return 1;
|
return 1;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case context_dns:
|
|
||||||
if (is_dns_expression (expr)) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
case context_data_or_numeric:
|
case context_data_or_numeric:
|
||||||
if (is_numeric_expression (expr) ||
|
if (is_numeric_expression (expr) ||
|
||||||
is_data_expression (expr)) {
|
is_data_expression (expr)) {
|
||||||
|
347
compile
Executable file
347
compile
Executable file
@ -0,0 +1,347 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# Wrapper for compilers which do not understand '-c -o'.
|
||||||
|
|
||||||
|
scriptversion=2012-10-14.11; # UTC
|
||||||
|
|
||||||
|
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||||
|
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# As a special exception to the GNU General Public License, if you
|
||||||
|
# distribute this file as part of a program that contains a
|
||||||
|
# configuration script generated by Autoconf, you may include it under
|
||||||
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
# This file is maintained in Automake, please report
|
||||||
|
# bugs to <bug-automake@gnu.org> or send patches to
|
||||||
|
# <automake-patches@gnu.org>.
|
||||||
|
|
||||||
|
nl='
|
||||||
|
'
|
||||||
|
|
||||||
|
# We need space, tab and new line, in precisely that order. Quoting is
|
||||||
|
# there to prevent tools from complaining about whitespace usage.
|
||||||
|
IFS=" "" $nl"
|
||||||
|
|
||||||
|
file_conv=
|
||||||
|
|
||||||
|
# func_file_conv build_file lazy
|
||||||
|
# Convert a $build file to $host form and store it in $file
|
||||||
|
# Currently only supports Windows hosts. If the determined conversion
|
||||||
|
# type is listed in (the comma separated) LAZY, no conversion will
|
||||||
|
# take place.
|
||||||
|
func_file_conv ()
|
||||||
|
{
|
||||||
|
file=$1
|
||||||
|
case $file in
|
||||||
|
/ | /[!/]*) # absolute file, and not a UNC file
|
||||||
|
if test -z "$file_conv"; then
|
||||||
|
# lazily determine how to convert abs files
|
||||||
|
case `uname -s` in
|
||||||
|
MINGW*)
|
||||||
|
file_conv=mingw
|
||||||
|
;;
|
||||||
|
CYGWIN*)
|
||||||
|
file_conv=cygwin
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
file_conv=wine
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
case $file_conv/,$2, in
|
||||||
|
*,$file_conv,*)
|
||||||
|
;;
|
||||||
|
mingw/*)
|
||||||
|
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
|
||||||
|
;;
|
||||||
|
cygwin/*)
|
||||||
|
file=`cygpath -m "$file" || echo "$file"`
|
||||||
|
;;
|
||||||
|
wine/*)
|
||||||
|
file=`winepath -w "$file" || echo "$file"`
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# func_cl_dashL linkdir
|
||||||
|
# Make cl look for libraries in LINKDIR
|
||||||
|
func_cl_dashL ()
|
||||||
|
{
|
||||||
|
func_file_conv "$1"
|
||||||
|
if test -z "$lib_path"; then
|
||||||
|
lib_path=$file
|
||||||
|
else
|
||||||
|
lib_path="$lib_path;$file"
|
||||||
|
fi
|
||||||
|
linker_opts="$linker_opts -LIBPATH:$file"
|
||||||
|
}
|
||||||
|
|
||||||
|
# func_cl_dashl library
|
||||||
|
# Do a library search-path lookup for cl
|
||||||
|
func_cl_dashl ()
|
||||||
|
{
|
||||||
|
lib=$1
|
||||||
|
found=no
|
||||||
|
save_IFS=$IFS
|
||||||
|
IFS=';'
|
||||||
|
for dir in $lib_path $LIB
|
||||||
|
do
|
||||||
|
IFS=$save_IFS
|
||||||
|
if $shared && test -f "$dir/$lib.dll.lib"; then
|
||||||
|
found=yes
|
||||||
|
lib=$dir/$lib.dll.lib
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if test -f "$dir/$lib.lib"; then
|
||||||
|
found=yes
|
||||||
|
lib=$dir/$lib.lib
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if test -f "$dir/lib$lib.a"; then
|
||||||
|
found=yes
|
||||||
|
lib=$dir/lib$lib.a
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
IFS=$save_IFS
|
||||||
|
|
||||||
|
if test "$found" != yes; then
|
||||||
|
lib=$lib.lib
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# func_cl_wrapper cl arg...
|
||||||
|
# Adjust compile command to suit cl
|
||||||
|
func_cl_wrapper ()
|
||||||
|
{
|
||||||
|
# Assume a capable shell
|
||||||
|
lib_path=
|
||||||
|
shared=:
|
||||||
|
linker_opts=
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
if test -n "$eat"; then
|
||||||
|
eat=
|
||||||
|
else
|
||||||
|
case $1 in
|
||||||
|
-o)
|
||||||
|
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||||
|
eat=1
|
||||||
|
case $2 in
|
||||||
|
*.o | *.[oO][bB][jJ])
|
||||||
|
func_file_conv "$2"
|
||||||
|
set x "$@" -Fo"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
func_file_conv "$2"
|
||||||
|
set x "$@" -Fe"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
-I)
|
||||||
|
eat=1
|
||||||
|
func_file_conv "$2" mingw
|
||||||
|
set x "$@" -I"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-I*)
|
||||||
|
func_file_conv "${1#-I}" mingw
|
||||||
|
set x "$@" -I"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-l)
|
||||||
|
eat=1
|
||||||
|
func_cl_dashl "$2"
|
||||||
|
set x "$@" "$lib"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-l*)
|
||||||
|
func_cl_dashl "${1#-l}"
|
||||||
|
set x "$@" "$lib"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-L)
|
||||||
|
eat=1
|
||||||
|
func_cl_dashL "$2"
|
||||||
|
;;
|
||||||
|
-L*)
|
||||||
|
func_cl_dashL "${1#-L}"
|
||||||
|
;;
|
||||||
|
-static)
|
||||||
|
shared=false
|
||||||
|
;;
|
||||||
|
-Wl,*)
|
||||||
|
arg=${1#-Wl,}
|
||||||
|
save_ifs="$IFS"; IFS=','
|
||||||
|
for flag in $arg; do
|
||||||
|
IFS="$save_ifs"
|
||||||
|
linker_opts="$linker_opts $flag"
|
||||||
|
done
|
||||||
|
IFS="$save_ifs"
|
||||||
|
;;
|
||||||
|
-Xlinker)
|
||||||
|
eat=1
|
||||||
|
linker_opts="$linker_opts $2"
|
||||||
|
;;
|
||||||
|
-*)
|
||||||
|
set x "$@" "$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
|
||||||
|
func_file_conv "$1"
|
||||||
|
set x "$@" -Tp"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
|
||||||
|
func_file_conv "$1" mingw
|
||||||
|
set x "$@" "$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set x "$@" "$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
if test -n "$linker_opts"; then
|
||||||
|
linker_opts="-link$linker_opts"
|
||||||
|
fi
|
||||||
|
exec "$@" $linker_opts
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
eat=
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
'')
|
||||||
|
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||||
|
exit 1;
|
||||||
|
;;
|
||||||
|
-h | --h*)
|
||||||
|
cat <<\EOF
|
||||||
|
Usage: compile [--help] [--version] PROGRAM [ARGS]
|
||||||
|
|
||||||
|
Wrapper for compilers which do not understand '-c -o'.
|
||||||
|
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
|
||||||
|
arguments, and rename the output as expected.
|
||||||
|
|
||||||
|
If you are trying to build a whole package this is not the
|
||||||
|
right script to run: please start by reading the file 'INSTALL'.
|
||||||
|
|
||||||
|
Report bugs to <bug-automake@gnu.org>.
|
||||||
|
EOF
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
-v | --v*)
|
||||||
|
echo "compile $scriptversion"
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
|
||||||
|
func_cl_wrapper "$@" # Doesn't return...
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
ofile=
|
||||||
|
cfile=
|
||||||
|
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
if test -n "$eat"; then
|
||||||
|
eat=
|
||||||
|
else
|
||||||
|
case $1 in
|
||||||
|
-o)
|
||||||
|
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||||
|
# So we strip '-o arg' only if arg is an object.
|
||||||
|
eat=1
|
||||||
|
case $2 in
|
||||||
|
*.o | *.obj)
|
||||||
|
ofile=$2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set x "$@" -o "$2"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*.c)
|
||||||
|
cfile=$1
|
||||||
|
set x "$@" "$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set x "$@" "$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
if test -z "$ofile" || test -z "$cfile"; then
|
||||||
|
# If no '-o' option was seen then we might have been invoked from a
|
||||||
|
# pattern rule where we don't need one. That is ok -- this is a
|
||||||
|
# normal compilation that the losing compiler can handle. If no
|
||||||
|
# '.c' file was seen then we are probably linking. That is also
|
||||||
|
# ok.
|
||||||
|
exec "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Name of file we expect compiler to create.
|
||||||
|
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
|
||||||
|
|
||||||
|
# Create the lock directory.
|
||||||
|
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
|
||||||
|
# that we are using for the .o file. Also, base the name on the expected
|
||||||
|
# object file name, since that is what matters with a parallel build.
|
||||||
|
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
|
||||||
|
while true; do
|
||||||
|
if mkdir "$lockdir" >/dev/null 2>&1; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
# FIXME: race condition here if user kills between mkdir and trap.
|
||||||
|
trap "rmdir '$lockdir'; exit 1" 1 2 15
|
||||||
|
|
||||||
|
# Run the compile.
|
||||||
|
"$@"
|
||||||
|
ret=$?
|
||||||
|
|
||||||
|
if test -f "$cofile"; then
|
||||||
|
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
|
||||||
|
elif test -f "${cofile}bj"; then
|
||||||
|
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
rmdir "$lockdir"
|
||||||
|
exit $ret
|
||||||
|
|
||||||
|
# Local Variables:
|
||||||
|
# mode: shell-script
|
||||||
|
# sh-indentation: 2
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-time-zone: "UTC"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
|
# End:
|
151
config.guess
vendored
151
config.guess
vendored
@ -1,10 +1,8 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Attempt to guess a canonical system name.
|
# Attempt to guess a canonical system name.
|
||||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
# Copyright 1992-2013 Free Software Foundation, Inc.
|
||||||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
|
|
||||||
# 2011, 2012, 2013 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
timestamp='2012-12-29'
|
timestamp='2013-06-10'
|
||||||
|
|
||||||
# This file is free software; you can redistribute it and/or modify it
|
# This file is free software; you can redistribute it and/or modify it
|
||||||
# under the terms of the GNU General Public License as published by
|
# under the terms of the GNU General Public License as published by
|
||||||
@ -26,7 +24,7 @@ timestamp='2012-12-29'
|
|||||||
# program. This Exception is an additional permission under section 7
|
# program. This Exception is an additional permission under section 7
|
||||||
# of the GNU General Public License, version 3 ("GPLv3").
|
# of the GNU General Public License, version 3 ("GPLv3").
|
||||||
#
|
#
|
||||||
# Originally written by Per Bothner.
|
# Originally written by Per Bothner.
|
||||||
#
|
#
|
||||||
# You can get the latest version of this script from:
|
# You can get the latest version of this script from:
|
||||||
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
|
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
|
||||||
@ -52,9 +50,7 @@ version="\
|
|||||||
GNU config.guess ($timestamp)
|
GNU config.guess ($timestamp)
|
||||||
|
|
||||||
Originally written by Per Bothner.
|
Originally written by Per Bothner.
|
||||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
|
Copyright 1992-2013 Free Software Foundation, Inc.
|
||||||
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
|
|
||||||
2012, 2013 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
This is free software; see the source for copying conditions. There is NO
|
This is free software; see the source for copying conditions. There is NO
|
||||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||||
@ -136,6 +132,27 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
|
|||||||
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
|
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
|
||||||
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
|
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
|
||||||
|
|
||||||
|
case "${UNAME_SYSTEM}" in
|
||||||
|
Linux|GNU|GNU/*)
|
||||||
|
# If the system lacks a compiler, then just pick glibc.
|
||||||
|
# We could probably try harder.
|
||||||
|
LIBC=gnu
|
||||||
|
|
||||||
|
eval $set_cc_for_build
|
||||||
|
cat <<-EOF > $dummy.c
|
||||||
|
#include <features.h>
|
||||||
|
#if defined(__UCLIBC__)
|
||||||
|
LIBC=uclibc
|
||||||
|
#elif defined(__dietlibc__)
|
||||||
|
LIBC=dietlibc
|
||||||
|
#else
|
||||||
|
LIBC=gnu
|
||||||
|
#endif
|
||||||
|
EOF
|
||||||
|
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
# Note: order is significant - the case branches are not exclusive.
|
# Note: order is significant - the case branches are not exclusive.
|
||||||
|
|
||||||
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||||
@ -857,21 +874,21 @@ EOF
|
|||||||
exit ;;
|
exit ;;
|
||||||
*:GNU:*:*)
|
*:GNU:*:*)
|
||||||
# the GNU system
|
# the GNU system
|
||||||
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
|
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
|
||||||
exit ;;
|
exit ;;
|
||||||
*:GNU/*:*:*)
|
*:GNU/*:*:*)
|
||||||
# other systems with GNU libc and userland
|
# other systems with GNU libc and userland
|
||||||
echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
|
echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
i*86:Minix:*:*)
|
i*86:Minix:*:*)
|
||||||
echo ${UNAME_MACHINE}-pc-minix
|
echo ${UNAME_MACHINE}-pc-minix
|
||||||
exit ;;
|
exit ;;
|
||||||
aarch64:Linux:*:*)
|
aarch64:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
aarch64_be:Linux:*:*)
|
aarch64_be:Linux:*:*)
|
||||||
UNAME_MACHINE=aarch64_be
|
UNAME_MACHINE=aarch64_be
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
alpha:Linux:*:*)
|
alpha:Linux:*:*)
|
||||||
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
|
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
|
||||||
@ -884,59 +901,54 @@ EOF
|
|||||||
EV68*) UNAME_MACHINE=alphaev68 ;;
|
EV68*) UNAME_MACHINE=alphaev68 ;;
|
||||||
esac
|
esac
|
||||||
objdump --private-headers /bin/sh | grep -q ld.so.1
|
objdump --private-headers /bin/sh | grep -q ld.so.1
|
||||||
if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
|
if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
|
exit ;;
|
||||||
|
arc:Linux:*:* | arceb:Linux:*:*)
|
||||||
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
arm*:Linux:*:*)
|
arm*:Linux:*:*)
|
||||||
eval $set_cc_for_build
|
eval $set_cc_for_build
|
||||||
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
|
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||||
| grep -q __ARM_EABI__
|
| grep -q __ARM_EABI__
|
||||||
then
|
then
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
else
|
else
|
||||||
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
|
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||||
| grep -q __ARM_PCS_VFP
|
| grep -q __ARM_PCS_VFP
|
||||||
then
|
then
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnueabi
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
|
||||||
else
|
else
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
exit ;;
|
exit ;;
|
||||||
avr32*:Linux:*:*)
|
avr32*:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
cris:Linux:*:*)
|
cris:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-axis-linux-gnu
|
echo ${UNAME_MACHINE}-axis-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
crisv32:Linux:*:*)
|
crisv32:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-axis-linux-gnu
|
echo ${UNAME_MACHINE}-axis-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
frv:Linux:*:*)
|
frv:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
hexagon:Linux:*:*)
|
hexagon:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
i*86:Linux:*:*)
|
i*86:Linux:*:*)
|
||||||
LIBC=gnu
|
echo ${UNAME_MACHINE}-pc-linux-${LIBC}
|
||||||
eval $set_cc_for_build
|
|
||||||
sed 's/^ //' << EOF >$dummy.c
|
|
||||||
#ifdef __dietlibc__
|
|
||||||
LIBC=dietlibc
|
|
||||||
#endif
|
|
||||||
EOF
|
|
||||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
|
|
||||||
echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
|
|
||||||
exit ;;
|
exit ;;
|
||||||
ia64:Linux:*:*)
|
ia64:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
m32r*:Linux:*:*)
|
m32r*:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
m68*:Linux:*:*)
|
m68*:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
mips:Linux:*:* | mips64:Linux:*:*)
|
mips:Linux:*:* | mips64:Linux:*:*)
|
||||||
eval $set_cc_for_build
|
eval $set_cc_for_build
|
||||||
@ -955,54 +967,63 @@ EOF
|
|||||||
#endif
|
#endif
|
||||||
EOF
|
EOF
|
||||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
|
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
|
||||||
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
|
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
|
||||||
;;
|
;;
|
||||||
|
or1k:Linux:*:*)
|
||||||
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
|
exit ;;
|
||||||
or32:Linux:*:*)
|
or32:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
padre:Linux:*:*)
|
padre:Linux:*:*)
|
||||||
echo sparc-unknown-linux-gnu
|
echo sparc-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
parisc64:Linux:*:* | hppa64:Linux:*:*)
|
parisc64:Linux:*:* | hppa64:Linux:*:*)
|
||||||
echo hppa64-unknown-linux-gnu
|
echo hppa64-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
parisc:Linux:*:* | hppa:Linux:*:*)
|
parisc:Linux:*:* | hppa:Linux:*:*)
|
||||||
# Look for CPU level
|
# Look for CPU level
|
||||||
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
|
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
|
||||||
PA7*) echo hppa1.1-unknown-linux-gnu ;;
|
PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
|
||||||
PA8*) echo hppa2.0-unknown-linux-gnu ;;
|
PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
|
||||||
*) echo hppa-unknown-linux-gnu ;;
|
*) echo hppa-unknown-linux-${LIBC} ;;
|
||||||
esac
|
esac
|
||||||
exit ;;
|
exit ;;
|
||||||
ppc64:Linux:*:*)
|
ppc64:Linux:*:*)
|
||||||
echo powerpc64-unknown-linux-gnu
|
echo powerpc64-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
ppc:Linux:*:*)
|
ppc:Linux:*:*)
|
||||||
echo powerpc-unknown-linux-gnu
|
echo powerpc-unknown-linux-${LIBC}
|
||||||
|
exit ;;
|
||||||
|
ppc64le:Linux:*:*)
|
||||||
|
echo powerpc64le-unknown-linux-${LIBC}
|
||||||
|
exit ;;
|
||||||
|
ppcle:Linux:*:*)
|
||||||
|
echo powerpcle-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
s390:Linux:*:* | s390x:Linux:*:*)
|
s390:Linux:*:* | s390x:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-ibm-linux
|
echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
sh64*:Linux:*:*)
|
sh64*:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
sh*:Linux:*:*)
|
sh*:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
sparc:Linux:*:* | sparc64:Linux:*:*)
|
sparc:Linux:*:* | sparc64:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
tile*:Linux:*:*)
|
tile*:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
vax:Linux:*:*)
|
vax:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-dec-linux-gnu
|
echo ${UNAME_MACHINE}-dec-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
x86_64:Linux:*:*)
|
x86_64:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
xtensa*:Linux:*:*)
|
xtensa*:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
i*86:DYNIX/ptx:4*:*)
|
i*86:DYNIX/ptx:4*:*)
|
||||||
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
|
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
|
||||||
@ -1235,19 +1256,21 @@ EOF
|
|||||||
exit ;;
|
exit ;;
|
||||||
*:Darwin:*:*)
|
*:Darwin:*:*)
|
||||||
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
|
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
|
||||||
case $UNAME_PROCESSOR in
|
eval $set_cc_for_build
|
||||||
i386)
|
if test "$UNAME_PROCESSOR" = unknown ; then
|
||||||
eval $set_cc_for_build
|
UNAME_PROCESSOR=powerpc
|
||||||
if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
|
fi
|
||||||
if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
|
if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
|
||||||
(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
|
if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
|
||||||
grep IS_64BIT_ARCH >/dev/null
|
(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
|
||||||
then
|
grep IS_64BIT_ARCH >/dev/null
|
||||||
UNAME_PROCESSOR="x86_64"
|
then
|
||||||
fi
|
case $UNAME_PROCESSOR in
|
||||||
fi ;;
|
i386) UNAME_PROCESSOR=x86_64 ;;
|
||||||
unknown) UNAME_PROCESSOR=powerpc ;;
|
powerpc) UNAME_PROCESSOR=powerpc64 ;;
|
||||||
esac
|
esac
|
||||||
|
fi
|
||||||
|
fi
|
||||||
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
|
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
|
||||||
exit ;;
|
exit ;;
|
||||||
*:procnto*:*:* | *:QNX:[0123456789]*:*)
|
*:procnto*:*:* | *:QNX:[0123456789]*:*)
|
||||||
|
30
config.sub
vendored
30
config.sub
vendored
@ -1,10 +1,8 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Configuration validation subroutine script.
|
# Configuration validation subroutine script.
|
||||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
# Copyright 1992-2013 Free Software Foundation, Inc.
|
||||||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
|
|
||||||
# 2011, 2012, 2013 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
timestamp='2012-12-29'
|
timestamp='2013-04-24'
|
||||||
|
|
||||||
# This file is free software; you can redistribute it and/or modify it
|
# This file is free software; you can redistribute it and/or modify it
|
||||||
# under the terms of the GNU General Public License as published by
|
# under the terms of the GNU General Public License as published by
|
||||||
@ -70,9 +68,7 @@ Report bugs and patches to <config-patches@gnu.org>."
|
|||||||
version="\
|
version="\
|
||||||
GNU config.sub ($timestamp)
|
GNU config.sub ($timestamp)
|
||||||
|
|
||||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
|
Copyright 1992-2013 Free Software Foundation, Inc.
|
||||||
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
|
|
||||||
2012, 2013 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
This is free software; see the source for copying conditions. There is NO
|
This is free software; see the source for copying conditions. There is NO
|
||||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||||
@ -256,7 +252,7 @@ case $basic_machine in
|
|||||||
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
||||||
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
||||||
| am33_2.0 \
|
| am33_2.0 \
|
||||||
| arc \
|
| arc | arceb \
|
||||||
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
|
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
|
||||||
| avr | avr32 \
|
| avr | avr32 \
|
||||||
| be32 | be64 \
|
| be32 | be64 \
|
||||||
@ -290,16 +286,17 @@ case $basic_machine in
|
|||||||
| mipsisa64r2 | mipsisa64r2el \
|
| mipsisa64r2 | mipsisa64r2el \
|
||||||
| mipsisa64sb1 | mipsisa64sb1el \
|
| mipsisa64sb1 | mipsisa64sb1el \
|
||||||
| mipsisa64sr71k | mipsisa64sr71kel \
|
| mipsisa64sr71k | mipsisa64sr71kel \
|
||||||
|
| mipsr5900 | mipsr5900el \
|
||||||
| mipstx39 | mipstx39el \
|
| mipstx39 | mipstx39el \
|
||||||
| mn10200 | mn10300 \
|
| mn10200 | mn10300 \
|
||||||
| moxie \
|
| moxie \
|
||||||
| mt \
|
| mt \
|
||||||
| msp430 \
|
| msp430 \
|
||||||
| nds32 | nds32le | nds32be \
|
| nds32 | nds32le | nds32be \
|
||||||
| nios | nios2 \
|
| nios | nios2 | nios2eb | nios2el \
|
||||||
| ns16k | ns32k \
|
| ns16k | ns32k \
|
||||||
| open8 \
|
| open8 \
|
||||||
| or32 \
|
| or1k | or32 \
|
||||||
| pdp10 | pdp11 | pj | pjl \
|
| pdp10 | pdp11 | pj | pjl \
|
||||||
| powerpc | powerpc64 | powerpc64le | powerpcle \
|
| powerpc | powerpc64 | powerpc64le | powerpcle \
|
||||||
| pyramid \
|
| pyramid \
|
||||||
@ -369,7 +366,7 @@ case $basic_machine in
|
|||||||
| aarch64-* | aarch64_be-* \
|
| aarch64-* | aarch64_be-* \
|
||||||
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
|
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
|
||||||
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
||||||
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
|
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
|
||||||
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
||||||
| avr-* | avr32-* \
|
| avr-* | avr32-* \
|
||||||
| be32-* | be64-* \
|
| be32-* | be64-* \
|
||||||
@ -407,12 +404,13 @@ case $basic_machine in
|
|||||||
| mipsisa64r2-* | mipsisa64r2el-* \
|
| mipsisa64r2-* | mipsisa64r2el-* \
|
||||||
| mipsisa64sb1-* | mipsisa64sb1el-* \
|
| mipsisa64sb1-* | mipsisa64sb1el-* \
|
||||||
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
||||||
|
| mipsr5900-* | mipsr5900el-* \
|
||||||
| mipstx39-* | mipstx39el-* \
|
| mipstx39-* | mipstx39el-* \
|
||||||
| mmix-* \
|
| mmix-* \
|
||||||
| mt-* \
|
| mt-* \
|
||||||
| msp430-* \
|
| msp430-* \
|
||||||
| nds32-* | nds32le-* | nds32be-* \
|
| nds32-* | nds32le-* | nds32be-* \
|
||||||
| nios-* | nios2-* \
|
| nios-* | nios2-* | nios2eb-* | nios2el-* \
|
||||||
| none-* | np1-* | ns16k-* | ns32k-* \
|
| none-* | np1-* | ns16k-* | ns32k-* \
|
||||||
| open8-* \
|
| open8-* \
|
||||||
| orion-* \
|
| orion-* \
|
||||||
@ -1354,7 +1352,7 @@ case $os in
|
|||||||
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
|
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
|
||||||
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
|
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
|
||||||
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
|
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
|
||||||
| -sym* | -kopensolaris* \
|
| -sym* | -kopensolaris* | -plan9* \
|
||||||
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
||||||
| -aos* | -aros* \
|
| -aos* | -aros* \
|
||||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||||
@ -1500,9 +1498,6 @@ case $os in
|
|||||||
-aros*)
|
-aros*)
|
||||||
os=-aros
|
os=-aros
|
||||||
;;
|
;;
|
||||||
-kaos*)
|
|
||||||
os=-kaos
|
|
||||||
;;
|
|
||||||
-zvmoe)
|
-zvmoe)
|
||||||
os=-zvmoe
|
os=-zvmoe
|
||||||
;;
|
;;
|
||||||
@ -1594,6 +1589,9 @@ case $basic_machine in
|
|||||||
mips*-*)
|
mips*-*)
|
||||||
os=-elf
|
os=-elf
|
||||||
;;
|
;;
|
||||||
|
or1k-*)
|
||||||
|
os=-elf
|
||||||
|
;;
|
||||||
or32-*)
|
or32-*)
|
||||||
os=-coff
|
os=-coff
|
||||||
;;
|
;;
|
||||||
|
163
configure
vendored
163
configure
vendored
@ -664,6 +664,10 @@ build
|
|||||||
MAINT
|
MAINT
|
||||||
MAINTAINER_MODE_FALSE
|
MAINTAINER_MODE_FALSE
|
||||||
MAINTAINER_MODE_TRUE
|
MAINTAINER_MODE_TRUE
|
||||||
|
AM_BACKSLASH
|
||||||
|
AM_DEFAULT_VERBOSITY
|
||||||
|
AM_DEFAULT_V
|
||||||
|
AM_V
|
||||||
am__untar
|
am__untar
|
||||||
am__tar
|
am__tar
|
||||||
AMTAR
|
AMTAR
|
||||||
@ -728,6 +732,7 @@ SHELL'
|
|||||||
ac_subst_files=''
|
ac_subst_files=''
|
||||||
ac_user_opts='
|
ac_user_opts='
|
||||||
enable_option_checking
|
enable_option_checking
|
||||||
|
enable_silent_rules
|
||||||
enable_maintainer_mode
|
enable_maintainer_mode
|
||||||
enable_dependency_tracking
|
enable_dependency_tracking
|
||||||
enable_debug
|
enable_debug
|
||||||
@ -1383,6 +1388,8 @@ Optional Features:
|
|||||||
--disable-option-checking ignore unrecognized --enable/--with options
|
--disable-option-checking ignore unrecognized --enable/--with options
|
||||||
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
|
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
|
||||||
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
|
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
|
||||||
|
--enable-silent-rules less verbose build output (undo: "make V=1")
|
||||||
|
--disable-silent-rules verbose build output (undo: "make V=0")
|
||||||
--enable-maintainer-mode
|
--enable-maintainer-mode
|
||||||
enable make rules and dependencies not useful (and
|
enable make rules and dependencies not useful (and
|
||||||
sometimes confusing) to the casual installer
|
sometimes confusing) to the casual installer
|
||||||
@ -2668,7 +2675,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
|||||||
|
|
||||||
# we specify "foreign" to avoid having to have the GNU mandated files,
|
# we specify "foreign" to avoid having to have the GNU mandated files,
|
||||||
# like AUTHORS, COPYING, and such
|
# like AUTHORS, COPYING, and such
|
||||||
am__api_version='1.12'
|
am__api_version='1.14'
|
||||||
|
|
||||||
ac_aux_dir=
|
ac_aux_dir=
|
||||||
for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
|
for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
|
||||||
@ -2881,8 +2888,8 @@ if test x"${MISSING+set}" != xset; then
|
|||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
# Use eval to expand $SHELL
|
# Use eval to expand $SHELL
|
||||||
if eval "$MISSING --run true"; then
|
if eval "$MISSING --is-lightweight"; then
|
||||||
am_missing_run="$MISSING --run "
|
am_missing_run="$MISSING "
|
||||||
else
|
else
|
||||||
am_missing_run=
|
am_missing_run=
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
|
||||||
@ -3122,6 +3129,45 @@ else
|
|||||||
fi
|
fi
|
||||||
rmdir .tst 2>/dev/null
|
rmdir .tst 2>/dev/null
|
||||||
|
|
||||||
|
# Check whether --enable-silent-rules was given.
|
||||||
|
if test "${enable_silent_rules+set}" = set; then :
|
||||||
|
enableval=$enable_silent_rules;
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $enable_silent_rules in # (((
|
||||||
|
yes) AM_DEFAULT_VERBOSITY=0;;
|
||||||
|
no) AM_DEFAULT_VERBOSITY=1;;
|
||||||
|
*) AM_DEFAULT_VERBOSITY=1;;
|
||||||
|
esac
|
||||||
|
am_make=${MAKE-make}
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
|
||||||
|
$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
|
||||||
|
if ${am_cv_make_support_nested_variables+:} false; then :
|
||||||
|
$as_echo_n "(cached) " >&6
|
||||||
|
else
|
||||||
|
if $as_echo 'TRUE=$(BAR$(V))
|
||||||
|
BAR0=false
|
||||||
|
BAR1=true
|
||||||
|
V=1
|
||||||
|
am__doit:
|
||||||
|
@$(TRUE)
|
||||||
|
.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
|
||||||
|
am_cv_make_support_nested_variables=yes
|
||||||
|
else
|
||||||
|
am_cv_make_support_nested_variables=no
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
|
||||||
|
$as_echo "$am_cv_make_support_nested_variables" >&6; }
|
||||||
|
if test $am_cv_make_support_nested_variables = yes; then
|
||||||
|
AM_V='$(V)'
|
||||||
|
AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
|
||||||
|
else
|
||||||
|
AM_V=$AM_DEFAULT_VERBOSITY
|
||||||
|
AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
|
||||||
|
fi
|
||||||
|
AM_BACKSLASH='\'
|
||||||
|
|
||||||
if test "`cd $srcdir && pwd`" != "`pwd`"; then
|
if test "`cd $srcdir && pwd`" != "`pwd`"; then
|
||||||
# Use -I$(srcdir) only when $(srcdir) != ., so that make's output
|
# Use -I$(srcdir) only when $(srcdir) != ., so that make's output
|
||||||
# is not polluted with repeated "-I."
|
# is not polluted with repeated "-I."
|
||||||
@ -3184,6 +3230,10 @@ mkdir_p='$(MKDIR_P)'
|
|||||||
# in the wild :-( We should find a proper way to deprecate it ...
|
# in the wild :-( We should find a proper way to deprecate it ...
|
||||||
AMTAR='$${TAR-tar}'
|
AMTAR='$${TAR-tar}'
|
||||||
|
|
||||||
|
|
||||||
|
# We'll loop over all known methods to create a tar archive until one works.
|
||||||
|
_am_tools='gnutar pax cpio none'
|
||||||
|
|
||||||
am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
|
am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
|
||||||
|
|
||||||
|
|
||||||
@ -3191,6 +3241,48 @@ am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# POSIX will say in a future version that running "rm -f" with no argument
|
||||||
|
# is OK; and we want to be able to make that assumption in our Makefile
|
||||||
|
# recipes. So use an aggressive probe to check that the usage we want is
|
||||||
|
# actually supported "in the wild" to an acceptable degree.
|
||||||
|
# See automake bug#10828.
|
||||||
|
# To make any issue more visible, cause the running configure to be aborted
|
||||||
|
# by default if the 'rm' program in use doesn't match our expectations; the
|
||||||
|
# user can still override this though.
|
||||||
|
if rm -f && rm -fr && rm -rf; then : OK; else
|
||||||
|
cat >&2 <<'END'
|
||||||
|
Oops!
|
||||||
|
|
||||||
|
Your 'rm' program seems unable to run without file operands specified
|
||||||
|
on the command line, even when the '-f' option is present. This is contrary
|
||||||
|
to the behaviour of most rm programs out there, and not conforming with
|
||||||
|
the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
|
||||||
|
|
||||||
|
Please tell bug-automake@gnu.org about your system, including the value
|
||||||
|
of your $PATH and any error possibly output before this message. This
|
||||||
|
can help us improve future automake versions.
|
||||||
|
|
||||||
|
END
|
||||||
|
if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
|
||||||
|
echo 'Configuration will proceed anyway, since you have set the' >&2
|
||||||
|
echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
|
||||||
|
echo >&2
|
||||||
|
else
|
||||||
|
cat >&2 <<'END'
|
||||||
|
Aborting the configuration process, to ensure you take notice of the issue.
|
||||||
|
|
||||||
|
You can download and install GNU coreutils to get an 'rm' implementation
|
||||||
|
that behaves properly: <http://www.gnu.org/software/coreutils/>.
|
||||||
|
|
||||||
|
If you want to complete the configuration process using your problematic
|
||||||
|
'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
|
||||||
|
to "yes", and re-run configure.
|
||||||
|
|
||||||
|
END
|
||||||
|
as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# we specify AM_MAINTAINER_MODE to avoid problems with rebuilding
|
# we specify AM_MAINTAINER_MODE to avoid problems with rebuilding
|
||||||
# the configure and makefiles. Without it users doing things that
|
# the configure and makefiles. Without it users doing things that
|
||||||
# change the timestamps on the code, like checking it into a cvs
|
# change the timestamps on the code, like checking it into a cvs
|
||||||
@ -4086,6 +4178,65 @@ ac_cpp='$CPP $CPPFLAGS'
|
|||||||
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||||
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||||
|
|
||||||
|
ac_ext=c
|
||||||
|
ac_cpp='$CPP $CPPFLAGS'
|
||||||
|
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||||
|
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||||
|
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
|
||||||
|
$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
|
||||||
|
if ${am_cv_prog_cc_c_o+:} false; then :
|
||||||
|
$as_echo_n "(cached) " >&6
|
||||||
|
else
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
|
/* end confdefs.h. */
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
_ACEOF
|
||||||
|
# Make sure it works both with $CC and with simple cc.
|
||||||
|
# Following AC_PROG_CC_C_O, we do the test twice because some
|
||||||
|
# compilers refuse to overwrite an existing .o file with -o,
|
||||||
|
# though they will create one.
|
||||||
|
am_cv_prog_cc_c_o=yes
|
||||||
|
for am_i in 1 2; do
|
||||||
|
if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
|
||||||
|
($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
|
||||||
|
ac_status=$?
|
||||||
|
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); } \
|
||||||
|
&& test -f conftest2.$ac_objext; then
|
||||||
|
: OK
|
||||||
|
else
|
||||||
|
am_cv_prog_cc_c_o=no
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
rm -f core conftest*
|
||||||
|
unset am_i
|
||||||
|
fi
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
|
||||||
|
$as_echo "$am_cv_prog_cc_c_o" >&6; }
|
||||||
|
if test "$am_cv_prog_cc_c_o" != yes; then
|
||||||
|
# Losing compiler, so override with the script.
|
||||||
|
# FIXME: It is wrong to rewrite CC.
|
||||||
|
# But if we don't then we get into trouble of one sort or another.
|
||||||
|
# A longer-term fix would be to have automake use am__CC in this case,
|
||||||
|
# and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
|
||||||
|
CC="$am_aux_dir/compile $CC"
|
||||||
|
fi
|
||||||
|
ac_ext=c
|
||||||
|
ac_cpp='$CPP $CPPFLAGS'
|
||||||
|
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||||
|
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||||
|
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||||
|
|
||||||
DEPDIR="${am__leading_dot}deps"
|
DEPDIR="${am__leading_dot}deps"
|
||||||
|
|
||||||
ac_config_commands="$ac_config_commands depfiles"
|
ac_config_commands="$ac_config_commands depfiles"
|
||||||
@ -6559,7 +6710,7 @@ fi
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Append selected warning levels to CFLAGS before substitution (but after
|
# Append selected warning levels to CFLAGS before substitution (but after
|
||||||
# AC_TRY_COMPILE & etc).
|
# AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[],[]) & etc).
|
||||||
CFLAGS="$CFLAGS $STD_CWARNINGS"
|
CFLAGS="$CFLAGS $STD_CWARNINGS"
|
||||||
|
|
||||||
# Try to add the bind include directory
|
# Try to add the bind include directory
|
||||||
@ -7921,7 +8072,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
|
|||||||
|
|
||||||
case $ac_file$ac_mode in
|
case $ac_file$ac_mode in
|
||||||
"depfiles":C) test x"$AMDEP_TRUE" != x"" || {
|
"depfiles":C) test x"$AMDEP_TRUE" != x"" || {
|
||||||
# Autoconf 2.62 quotes --file arguments for eval, but not when files
|
# Older Autoconf quotes --file arguments for eval, but not when files
|
||||||
# are listed without --file. Let's play safe and only enable the eval
|
# are listed without --file. Let's play safe and only enable the eval
|
||||||
# if we detect the quoting.
|
# if we detect the quoting.
|
||||||
case $CONFIG_FILES in
|
case $CONFIG_FILES in
|
||||||
@ -7972,7 +8123,7 @@ $as_echo X"$mf" |
|
|||||||
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
|
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
|
||||||
test -z "$DEPDIR" && continue
|
test -z "$DEPDIR" && continue
|
||||||
am__include=`sed -n 's/^am__include = //p' < "$mf"`
|
am__include=`sed -n 's/^am__include = //p' < "$mf"`
|
||||||
test -z "am__include" && continue
|
test -z "$am__include" && continue
|
||||||
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
|
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
|
||||||
# Find all dependency output files, they are included files with
|
# Find all dependency output files, they are included files with
|
||||||
# $(DEPDIR) in their names. We invoke sed twice because it is the
|
# $(DEPDIR) in their names. We invoke sed twice because it is the
|
||||||
|
124
configure.ac
124
configure.ac
@ -1,4 +1,4 @@
|
|||||||
AC_INIT([DHCP], [4.3.0-Pre-Beta], [dhcp-users@isc.org])
|
AC_INIT([DHCP],[4.3.0-Pre-Beta],[dhcp-users@isc.org])
|
||||||
|
|
||||||
# we specify "foreign" to avoid having to have the GNU mandated files,
|
# we specify "foreign" to avoid having to have the GNU mandated files,
|
||||||
# like AUTHORS, COPYING, and such
|
# like AUTHORS, COPYING, and such
|
||||||
@ -51,8 +51,7 @@ AC_DEFINE_UNQUOTED([DHCP_BYTE_ORDER], [$byte_order],
|
|||||||
|
|
||||||
# Optional compile-time DEBUGging.
|
# Optional compile-time DEBUGging.
|
||||||
AC_ARG_ENABLE(debug,
|
AC_ARG_ENABLE(debug,
|
||||||
AC_HELP_STRING([--enable-debug],
|
AS_HELP_STRING([--enable-debug],[create a debug-only version of the software (default is no).]),
|
||||||
[create a debug-only version of the software (default is no).]),
|
|
||||||
[enable_debug=yes],[enable_debug=no])
|
[enable_debug=yes],[enable_debug=no])
|
||||||
# This is very much off by default.
|
# This is very much off by default.
|
||||||
if test "$enable_debug" = "yes" ; then
|
if test "$enable_debug" = "yes" ; then
|
||||||
@ -83,8 +82,7 @@ fi
|
|||||||
|
|
||||||
# Failover optional compile-time feature.
|
# Failover optional compile-time feature.
|
||||||
AC_ARG_ENABLE(failover,
|
AC_ARG_ENABLE(failover,
|
||||||
AC_HELP_STRING([--enable-failover],
|
AS_HELP_STRING([--enable-failover],[enable support for failover (default is yes)]))
|
||||||
[enable support for failover (default is yes)]))
|
|
||||||
# Failover is on by default, so define if it is not explicitly disabled.
|
# Failover is on by default, so define if it is not explicitly disabled.
|
||||||
if test "$enable_failover" != "no"; then
|
if test "$enable_failover" != "no"; then
|
||||||
AC_DEFINE([FAILOVER_PROTOCOL], [1],
|
AC_DEFINE([FAILOVER_PROTOCOL], [1],
|
||||||
@ -93,8 +91,7 @@ fi
|
|||||||
|
|
||||||
# execute() support.
|
# execute() support.
|
||||||
AC_ARG_ENABLE(execute,
|
AC_ARG_ENABLE(execute,
|
||||||
AC_HELP_STRING([--enable-execute],
|
AS_HELP_STRING([--enable-execute],[enable support for execute() in config (default is yes)]))
|
||||||
[enable support for execute() in config (default is yes)]))
|
|
||||||
# execute() is on by default, so define if it is not explicitly disabled.
|
# execute() is on by default, so define if it is not explicitly disabled.
|
||||||
if test "$enable_execute" != "no" ; then
|
if test "$enable_execute" != "no" ; then
|
||||||
AC_DEFINE([ENABLE_EXECUTE], [1],
|
AC_DEFINE([ENABLE_EXECUTE], [1],
|
||||||
@ -103,8 +100,7 @@ fi
|
|||||||
|
|
||||||
# Server tracing support.
|
# Server tracing support.
|
||||||
AC_ARG_ENABLE(tracing,
|
AC_ARG_ENABLE(tracing,
|
||||||
AC_HELP_STRING([--enable-tracing],
|
AS_HELP_STRING([--enable-tracing],[enable support for server activity tracing (default is yes)]))
|
||||||
[enable support for server activity tracing (default is yes)]))
|
|
||||||
# tracing is on by default, so define if it is not explicitly disabled.
|
# tracing is on by default, so define if it is not explicitly disabled.
|
||||||
if test "$enable_tracing" != "no" ; then
|
if test "$enable_tracing" != "no" ; then
|
||||||
AC_DEFINE([TRACING], [1],
|
AC_DEFINE([TRACING], [1],
|
||||||
@ -113,8 +109,7 @@ fi
|
|||||||
|
|
||||||
# Delayed-ack feature support (experimental).
|
# Delayed-ack feature support (experimental).
|
||||||
AC_ARG_ENABLE(delayed_ack,
|
AC_ARG_ENABLE(delayed_ack,
|
||||||
AC_HELP_STRING([--enable-delayed-ack],
|
AS_HELP_STRING([--enable-delayed-ack],[queues multiple DHCPACK replies (default is no)]))
|
||||||
[queues multiple DHCPACK replies (default is no)]))
|
|
||||||
if test "$enable_delayed_ack" = "yes"; then
|
if test "$enable_delayed_ack" = "yes"; then
|
||||||
AC_DEFINE([DELAYED_ACK], [1],
|
AC_DEFINE([DELAYED_ACK], [1],
|
||||||
[Define to queue multiple DHCPACK replies per fsync.])
|
[Define to queue multiple DHCPACK replies per fsync.])
|
||||||
@ -122,8 +117,7 @@ fi
|
|||||||
|
|
||||||
# DHCPv6 optional compile-time feature.
|
# DHCPv6 optional compile-time feature.
|
||||||
AC_ARG_ENABLE(dhcpv6,
|
AC_ARG_ENABLE(dhcpv6,
|
||||||
AC_HELP_STRING([--enable-dhcpv6],
|
AS_HELP_STRING([--enable-dhcpv6],[enable support for DHCPv6 (default is yes)]))
|
||||||
[enable support for DHCPv6 (default is yes)]))
|
|
||||||
# DHCPv6 is on by default, so define if it is not explicitly disabled.
|
# DHCPv6 is on by default, so define if it is not explicitly disabled.
|
||||||
if test "$enable_dhcpv6" != "no"; then
|
if test "$enable_dhcpv6" != "no"; then
|
||||||
AC_DEFINE([DHCPv6], [1],
|
AC_DEFINE([DHCPv6], [1],
|
||||||
@ -132,11 +126,9 @@ fi
|
|||||||
|
|
||||||
# PARANOIA is off by default (until we can test it with all features)
|
# PARANOIA is off by default (until we can test it with all features)
|
||||||
AC_ARG_ENABLE(paranoia,
|
AC_ARG_ENABLE(paranoia,
|
||||||
AC_HELP_STRING([--enable-paranoia],
|
AS_HELP_STRING([--enable-paranoia],[enable support for chroot/setuid (default is no)]))
|
||||||
[enable support for chroot/setuid (default is no)]))
|
|
||||||
AC_ARG_ENABLE(early_chroot,
|
AC_ARG_ENABLE(early_chroot,
|
||||||
AC_HELP_STRING([--enable-early-chroot],
|
AS_HELP_STRING([--enable-early-chroot],[enable chrooting prior to configuration (default is no)]))
|
||||||
[enable chrooting prior to configuration (default is no)]))
|
|
||||||
# If someone enables early chroot, but does not enable paranoia, do so for
|
# If someone enables early chroot, but does not enable paranoia, do so for
|
||||||
# them.
|
# them.
|
||||||
if test "$enable_paranoia" != "yes" && \
|
if test "$enable_paranoia" != "yes" && \
|
||||||
@ -154,8 +146,7 @@ if test "$enable_early_chroot" = "yes" ; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
AC_ARG_ENABLE(ipv4_pktinfo,
|
AC_ARG_ENABLE(ipv4_pktinfo,
|
||||||
AC_HELP_STRING([--enable-ipv4-pktinfo],
|
AS_HELP_STRING([--enable-ipv4-pktinfo],[enable use of pktinfo on IPv4 sockets (default is no)]))
|
||||||
[enable use of pktinfo on IPv4 sockets (default is no)]))
|
|
||||||
|
|
||||||
if test "$enable_ipv4_pktinfo" = "yes"; then
|
if test "$enable_ipv4_pktinfo" = "yes"; then
|
||||||
AC_DEFINE([USE_V4_PKTINFO], [1],
|
AC_DEFINE([USE_V4_PKTINFO], [1],
|
||||||
@ -163,8 +154,7 @@ if test "$enable_ipv4_pktinfo" = "yes"; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
AC_ARG_ENABLE(use_sockets,
|
AC_ARG_ENABLE(use_sockets,
|
||||||
AC_HELP_STRING([--enable-use-sockets],
|
AS_HELP_STRING([--enable-use-sockets],[use the standard BSD socket API (default is no)]))
|
||||||
[use the standard BSD socket API (default is no)]))
|
|
||||||
|
|
||||||
if test "$enable_use_sockets" = "yes"; then
|
if test "$enable_use_sockets" = "yes"; then
|
||||||
AC_DEFINE([USE_SOCKETS], [1],
|
AC_DEFINE([USE_SOCKETS], [1],
|
||||||
@ -174,8 +164,7 @@ fi
|
|||||||
# Try to hnadle incorrect byte order for secs field
|
# Try to hnadle incorrect byte order for secs field
|
||||||
# This is off by default
|
# This is off by default
|
||||||
AC_ARG_ENABLE(secs_byteorder,
|
AC_ARG_ENABLE(secs_byteorder,
|
||||||
AC_HELP_STRING([--enable-secs-byteorder],
|
AS_HELP_STRING([--enable-secs-byteorder],[Correct bad byteorders in the secs field (default is no).]))
|
||||||
[Correct bad byteorders in the secs field (default is no).]))
|
|
||||||
|
|
||||||
if test "$enable_secs_byteorder" = "yes" ; then
|
if test "$enable_secs_byteorder" = "yes" ; then
|
||||||
AC_DEFINE([SECS_BYTEORDER], [1],
|
AC_DEFINE([SECS_BYTEORDER], [1],
|
||||||
@ -186,8 +175,7 @@ fi
|
|||||||
|
|
||||||
atf_path="no"
|
atf_path="no"
|
||||||
AC_ARG_WITH([atf],
|
AC_ARG_WITH([atf],
|
||||||
AC_HELP_STRING([--with-atf=PATH],
|
AS_HELP_STRING([--with-atf=PATH],[specify location where atf was installed]),
|
||||||
[specify location where atf was installed]),
|
|
||||||
[atf_path="$withval"])
|
[atf_path="$withval"])
|
||||||
if test "$atf_path" != "no" ; then
|
if test "$atf_path" != "no" ; then
|
||||||
# Config path for pkg-config
|
# Config path for pkg-config
|
||||||
@ -245,8 +233,7 @@ esac
|
|||||||
|
|
||||||
# Allow specification of alternate state files
|
# Allow specification of alternate state files
|
||||||
AC_ARG_WITH(srv-lease-file,
|
AC_ARG_WITH(srv-lease-file,
|
||||||
AC_HELP_STRING([--with-srv-lease-file=PATH],
|
AS_HELP_STRING([--with-srv-lease-file=PATH],[File for dhcpd leases
|
||||||
[File for dhcpd leases
|
|
||||||
(default is LOCALSTATEDIR/db/dhcpd.leases)]),
|
(default is LOCALSTATEDIR/db/dhcpd.leases)]),
|
||||||
AC_DEFINE_UNQUOTED([_PATH_DHCPD_DB], ["$withval"],
|
AC_DEFINE_UNQUOTED([_PATH_DHCPD_DB], ["$withval"],
|
||||||
[File for dhcpd leases.]))
|
[File for dhcpd leases.]))
|
||||||
@ -276,8 +263,7 @@ fi
|
|||||||
echo "$with_srv_lease_file"
|
echo "$with_srv_lease_file"
|
||||||
|
|
||||||
AC_ARG_WITH(srv6-lease-file,
|
AC_ARG_WITH(srv6-lease-file,
|
||||||
AC_HELP_STRING([--with-srv6-lease-file=PATH],
|
AS_HELP_STRING([--with-srv6-lease-file=PATH],[File for dhcpd6 leases
|
||||||
[File for dhcpd6 leases
|
|
||||||
(default is LOCALSTATEDIR/db/dhcpd6.leases)]),
|
(default is LOCALSTATEDIR/db/dhcpd6.leases)]),
|
||||||
AC_DEFINE_UNQUOTED([_PATH_DHCPD6_DB], ["$withval"],
|
AC_DEFINE_UNQUOTED([_PATH_DHCPD6_DB], ["$withval"],
|
||||||
[File for dhcpd6 leases.]))
|
[File for dhcpd6 leases.]))
|
||||||
@ -307,8 +293,7 @@ fi
|
|||||||
echo "$with_srv6_lease_file"
|
echo "$with_srv6_lease_file"
|
||||||
|
|
||||||
AC_ARG_WITH(cli-lease-file,
|
AC_ARG_WITH(cli-lease-file,
|
||||||
AC_HELP_STRING([--with-cli-lease-file=PATH],
|
AS_HELP_STRING([--with-cli-lease-file=PATH],[File for dhclient leases
|
||||||
[File for dhclient leases
|
|
||||||
(default is LOCALSTATEDIR/db/dhclient.leases)]),
|
(default is LOCALSTATEDIR/db/dhclient.leases)]),
|
||||||
AC_DEFINE_UNQUOTED([_PATH_DHCLIENT_DB], ["$withval"],
|
AC_DEFINE_UNQUOTED([_PATH_DHCLIENT_DB], ["$withval"],
|
||||||
[File for dhclient leases.]))
|
[File for dhclient leases.]))
|
||||||
@ -338,8 +323,7 @@ fi
|
|||||||
echo "$with_cli_lease_file"
|
echo "$with_cli_lease_file"
|
||||||
|
|
||||||
AC_ARG_WITH(cli6-lease-file,
|
AC_ARG_WITH(cli6-lease-file,
|
||||||
AC_HELP_STRING([--with-cli6-lease-file=PATH],
|
AS_HELP_STRING([--with-cli6-lease-file=PATH],[File for dhclient6 leases
|
||||||
[File for dhclient6 leases
|
|
||||||
(default is LOCALSTATEDIR/db/dhclient6.leases)]),
|
(default is LOCALSTATEDIR/db/dhclient6.leases)]),
|
||||||
AC_DEFINE_UNQUOTED([_PATH_DHCLIENT6_DB], ["$withval"],
|
AC_DEFINE_UNQUOTED([_PATH_DHCLIENT6_DB], ["$withval"],
|
||||||
[File for dhclient6 leases.]))
|
[File for dhclient6 leases.]))
|
||||||
@ -369,38 +353,32 @@ fi
|
|||||||
echo "$with_cli6_lease_file"
|
echo "$with_cli6_lease_file"
|
||||||
|
|
||||||
AC_ARG_WITH(srv-pid-file,
|
AC_ARG_WITH(srv-pid-file,
|
||||||
AC_HELP_STRING([--with-srv-pid-file=PATH],
|
AS_HELP_STRING([--with-srv-pid-file=PATH],[File for dhcpd process information
|
||||||
[File for dhcpd process information
|
|
||||||
(default is LOCALSTATEDIR/run/dhcpd.pid)]),
|
(default is LOCALSTATEDIR/run/dhcpd.pid)]),
|
||||||
AC_DEFINE_UNQUOTED([_PATH_DHCPD_PID], ["$withval"],
|
AC_DEFINE_UNQUOTED([_PATH_DHCPD_PID], ["$withval"],
|
||||||
[File for dhcpd process information.]))
|
[File for dhcpd process information.]))
|
||||||
AC_ARG_WITH(srv6-pid-file,
|
AC_ARG_WITH(srv6-pid-file,
|
||||||
AC_HELP_STRING([--with-srv6-pid-file=PATH],
|
AS_HELP_STRING([--with-srv6-pid-file=PATH],[File for dhcpd6 process information
|
||||||
[File for dhcpd6 process information
|
|
||||||
(default is LOCALSTATEDIR/run/dhcpd6.pid)]),
|
(default is LOCALSTATEDIR/run/dhcpd6.pid)]),
|
||||||
AC_DEFINE_UNQUOTED([_PATH_DHCPD6_PID], ["$withval"],
|
AC_DEFINE_UNQUOTED([_PATH_DHCPD6_PID], ["$withval"],
|
||||||
[File for dhcpd6 process information.]))
|
[File for dhcpd6 process information.]))
|
||||||
AC_ARG_WITH(cli-pid-file,
|
AC_ARG_WITH(cli-pid-file,
|
||||||
AC_HELP_STRING([--with-cli-pid-file=PATH],
|
AS_HELP_STRING([--with-cli-pid-file=PATH],[File for dhclient process information
|
||||||
[File for dhclient process information
|
|
||||||
(default is LOCALSTATEDIR/run/dhclient.pid)]),
|
(default is LOCALSTATEDIR/run/dhclient.pid)]),
|
||||||
AC_DEFINE_UNQUOTED([_PATH_DHCLIENT_PID], ["$withval"],
|
AC_DEFINE_UNQUOTED([_PATH_DHCLIENT_PID], ["$withval"],
|
||||||
[File for dhclient process information.]))
|
[File for dhclient process information.]))
|
||||||
AC_ARG_WITH(cli6-pid-file,
|
AC_ARG_WITH(cli6-pid-file,
|
||||||
AC_HELP_STRING([--with-cli6-pid-file=PATH],
|
AS_HELP_STRING([--with-cli6-pid-file=PATH],[File for dhclient6 process information
|
||||||
[File for dhclient6 process information
|
|
||||||
(default is LOCALSTATEDIR/run/dhclient6.pid)]),
|
(default is LOCALSTATEDIR/run/dhclient6.pid)]),
|
||||||
AC_DEFINE_UNQUOTED([_PATH_DHCLIENT6_PID], ["$withval"],
|
AC_DEFINE_UNQUOTED([_PATH_DHCLIENT6_PID], ["$withval"],
|
||||||
[File for dhclient6 process information.]))
|
[File for dhclient6 process information.]))
|
||||||
AC_ARG_WITH(relay-pid-file,
|
AC_ARG_WITH(relay-pid-file,
|
||||||
AC_HELP_STRING([--with-relay-pid-file=PATH],
|
AS_HELP_STRING([--with-relay-pid-file=PATH],[File for dhcrelay process information
|
||||||
[File for dhcrelay process information
|
|
||||||
(default is LOCALSTATEDIR/run/dhcrelay.pid)]),
|
(default is LOCALSTATEDIR/run/dhcrelay.pid)]),
|
||||||
AC_DEFINE_UNQUOTED([_PATH_DHCRELAY_PID], ["$withval"],
|
AC_DEFINE_UNQUOTED([_PATH_DHCRELAY_PID], ["$withval"],
|
||||||
[File for dhcrelay process information.]))
|
[File for dhcrelay process information.]))
|
||||||
AC_ARG_WITH(relay6-pid-file,
|
AC_ARG_WITH(relay6-pid-file,
|
||||||
AC_HELP_STRING([--with-relay6-pid-file=PATH],
|
AS_HELP_STRING([--with-relay6-pid-file=PATH],[File for dhcrelay6 process information
|
||||||
[File for dhcrelay6 process information
|
|
||||||
(default is LOCALSTATEDIR/run/dhcrelay6.pid)]),
|
(default is LOCALSTATEDIR/run/dhcrelay6.pid)]),
|
||||||
AC_DEFINE_UNQUOTED([_PATH_DHCRELAY6_PID], ["$withval"],
|
AC_DEFINE_UNQUOTED([_PATH_DHCRELAY6_PID], ["$withval"],
|
||||||
[File for dhcrelay6 process information.]))
|
[File for dhcrelay6 process information.]))
|
||||||
@ -473,51 +451,37 @@ fi
|
|||||||
# int value.
|
# int value.
|
||||||
#
|
#
|
||||||
AC_MSG_CHECKING([for struct lifnum])
|
AC_MSG_CHECKING([for struct lifnum])
|
||||||
AC_TRY_COMPILE(
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <sys/types.h>
|
||||||
[ #include <sys/types.h>
|
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <net/if.h>
|
#include <net/if.h>
|
||||||
],
|
]], [[ struct lifnum a;
|
||||||
[ struct lifnum a;
|
]])],[AC_MSG_RESULT(yes)
|
||||||
],
|
|
||||||
[AC_MSG_RESULT(yes)
|
|
||||||
AC_DEFINE([ISC_PLATFORM_HAVELIFNUM], [1],
|
AC_DEFINE([ISC_PLATFORM_HAVELIFNUM], [1],
|
||||||
[Define to 1 if the system has 'struct lifnum'.])],
|
[Define to 1 if the system has 'struct lifnum'.])],[AC_MSG_RESULT(no)])
|
||||||
[AC_MSG_RESULT(no)])
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([for struct if_laddrconf])
|
AC_MSG_CHECKING([for struct if_laddrconf])
|
||||||
AC_TRY_COMPILE(
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <sys/types.h>
|
||||||
[ #include <sys/types.h>
|
|
||||||
#include <net/if6.h>
|
#include <net/if6.h>
|
||||||
],
|
]], [[ struct if_laddrconf a;
|
||||||
[ struct if_laddrconf a;
|
]])],[AC_MSG_RESULT(yes)
|
||||||
],
|
|
||||||
[AC_MSG_RESULT(yes)
|
|
||||||
AC_DEFINE([ISC_PLATFORM_HAVEIF_LADDRCONF], [1],
|
AC_DEFINE([ISC_PLATFORM_HAVEIF_LADDRCONF], [1],
|
||||||
[Define to 1 if the system has 'struct if_laddrconf'.])],
|
[Define to 1 if the system has 'struct if_laddrconf'.])],[AC_MSG_RESULT(no)])
|
||||||
[AC_MSG_RESULT(no)])
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([for struct if_laddrreq])
|
AC_MSG_CHECKING([for struct if_laddrreq])
|
||||||
AC_TRY_LINK(
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
|
||||||
[#include <sys/types.h>
|
|
||||||
#include <net/if6.h>
|
#include <net/if6.h>
|
||||||
],
|
]], [[ struct if_laddrreq a;
|
||||||
[ struct if_laddrreq a;
|
]])],[AC_MSG_RESULT(yes)
|
||||||
],
|
|
||||||
[AC_MSG_RESULT(yes)
|
|
||||||
AC_DEFINE([ISC_PLATFORM_HAVEIF_LADDRREQ], [1],
|
AC_DEFINE([ISC_PLATFORM_HAVEIF_LADDRREQ], [1],
|
||||||
[Define to 1 if the system has 'struct if_laddrreq'.])],
|
[Define to 1 if the system has 'struct if_laddrreq'.])],[AC_MSG_RESULT(no)])
|
||||||
[AC_MSG_RESULT(no)])
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# check for GCC noreturn attribute
|
# check for GCC noreturn attribute
|
||||||
#
|
#
|
||||||
AC_MSG_CHECKING(for GCC noreturn attribute)
|
AC_MSG_CHECKING(for GCC noreturn attribute)
|
||||||
AC_TRY_COMPILE([],[void foo() __attribute__((noreturn));],
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[void foo() __attribute__((noreturn));]])],[AC_MSG_RESULT(yes)
|
||||||
[AC_MSG_RESULT(yes)
|
|
||||||
AC_DEFINE([ISC_DHCP_NORETURN], [__attribute__((noreturn))],
|
AC_DEFINE([ISC_DHCP_NORETURN], [__attribute__((noreturn))],
|
||||||
[Define to the string for a noreturn attribute.])],
|
[Define to the string for a noreturn attribute.])],[AC_MSG_RESULT(no)
|
||||||
[AC_MSG_RESULT(no)
|
|
||||||
AC_DEFINE([ISC_DHCP_NORETURN], [],
|
AC_DEFINE([ISC_DHCP_NORETURN], [],
|
||||||
[Define to the string for a noreturn attribute.])])
|
[Define to the string for a noreturn attribute.])])
|
||||||
|
|
||||||
@ -588,8 +552,7 @@ AC_CHECK_MEMBER(struct msghdr.msg_control,,
|
|||||||
|
|
||||||
libbind=
|
libbind=
|
||||||
AC_ARG_WITH(libbind,
|
AC_ARG_WITH(libbind,
|
||||||
AC_HELP_STRING([--with-libbind=PATH],
|
AS_HELP_STRING([--with-libbind=PATH],[bind includes and libraries are in PATH
|
||||||
[bind includes and libraries are in PATH
|
|
||||||
(default is ./bind)]),
|
(default is ./bind)]),
|
||||||
use_libbind="$withval", use_libbind="no")
|
use_libbind="$withval", use_libbind="no")
|
||||||
case "$use_libbind" in
|
case "$use_libbind" in
|
||||||
@ -606,15 +569,13 @@ esac
|
|||||||
|
|
||||||
# OpenLDAP support.
|
# OpenLDAP support.
|
||||||
AC_ARG_WITH(ldap,
|
AC_ARG_WITH(ldap,
|
||||||
AC_HELP_STRING([--with-ldap],
|
AS_HELP_STRING([--with-ldap],[enable OpenLDAP support in dhcpd (default is no)]),
|
||||||
[enable OpenLDAP support in dhcpd (default is no)]),
|
|
||||||
[ldap=$withval],
|
[ldap=$withval],
|
||||||
[ldap=no])
|
[ldap=no])
|
||||||
|
|
||||||
# OpenLDAP with SSL support.
|
# OpenLDAP with SSL support.
|
||||||
AC_ARG_WITH(ldapcrypto,
|
AC_ARG_WITH(ldapcrypto,
|
||||||
AC_HELP_STRING([--with-ldapcrypto],
|
AS_HELP_STRING([--with-ldapcrypto],[enable OpenLDAP crypto support in dhcpd (default is no)]),
|
||||||
[enable OpenLDAP crypto support in dhcpd (default is no)]),
|
|
||||||
[ldapcrypto=$withval],
|
[ldapcrypto=$withval],
|
||||||
[ldapcrypto=no])
|
[ldapcrypto=no])
|
||||||
|
|
||||||
@ -635,7 +596,7 @@ if test x$ldap = xyes || test x$ldapcrypto = xyes ; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Append selected warning levels to CFLAGS before substitution (but after
|
# Append selected warning levels to CFLAGS before substitution (but after
|
||||||
# AC_TRY_COMPILE & etc).
|
# AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[],[]) & etc).
|
||||||
CFLAGS="$CFLAGS $STD_CWARNINGS"
|
CFLAGS="$CFLAGS $STD_CWARNINGS"
|
||||||
|
|
||||||
# Try to add the bind include directory
|
# Try to add the bind include directory
|
||||||
@ -648,7 +609,7 @@ esac
|
|||||||
|
|
||||||
AC_C_FLEXIBLE_ARRAY_MEMBER
|
AC_C_FLEXIBLE_ARRAY_MEMBER
|
||||||
|
|
||||||
AC_OUTPUT([
|
AC_CONFIG_FILES([
|
||||||
Makefile
|
Makefile
|
||||||
client/Makefile
|
client/Makefile
|
||||||
common/Makefile
|
common/Makefile
|
||||||
@ -663,6 +624,7 @@ AC_OUTPUT([
|
|||||||
server/tests/Makefile
|
server/tests/Makefile
|
||||||
doc/devel/doxyfile
|
doc/devel/doxyfile
|
||||||
])
|
])
|
||||||
|
AC_OUTPUT
|
||||||
|
|
||||||
sh util/bindvar.sh
|
sh util/bindvar.sh
|
||||||
|
|
||||||
|
3
depcomp
3
depcomp
@ -1,7 +1,7 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# depcomp - compile a program generating dependencies as side-effects
|
# depcomp - compile a program generating dependencies as side-effects
|
||||||
|
|
||||||
scriptversion=2012-10-18.11; # UTC
|
scriptversion=2013-05-30.07; # UTC
|
||||||
|
|
||||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||||
|
|
||||||
@ -552,6 +552,7 @@ $ {
|
|||||||
G
|
G
|
||||||
p
|
p
|
||||||
}' >> "$depfile"
|
}' >> "$depfile"
|
||||||
|
echo >> "$depfile" # make sure the fragment doesn't end with a backslash
|
||||||
rm -f "$tmpdepfile"
|
rm -f "$tmpdepfile"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# Makefile.in generated by automake 1.13.1 from Makefile.am.
|
# Makefile.in generated by automake 1.14 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -16,23 +16,51 @@
|
|||||||
|
|
||||||
|
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
am__make_dryrun = \
|
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||||
{ \
|
am__make_running_with_option = \
|
||||||
am__dry=no; \
|
case $${target_option-} in \
|
||||||
|
?) ;; \
|
||||||
|
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||||
|
"target option '$${target_option-}' specified" >&2; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
has_opt=no; \
|
||||||
|
sane_makeflags=$$MAKEFLAGS; \
|
||||||
|
if $(am__is_gnu_make); then \
|
||||||
|
sane_makeflags=$$MFLAGS; \
|
||||||
|
else \
|
||||||
case $$MAKEFLAGS in \
|
case $$MAKEFLAGS in \
|
||||||
*\\[\ \ ]*) \
|
*\\[\ \ ]*) \
|
||||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
bs=\\; \
|
||||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||||
*) \
|
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||||
for am__flg in $$MAKEFLAGS; do \
|
|
||||||
case $$am__flg in \
|
|
||||||
*=*|--*) ;; \
|
|
||||||
*n*) am__dry=yes; break;; \
|
|
||||||
esac; \
|
|
||||||
done;; \
|
|
||||||
esac; \
|
esac; \
|
||||||
test $$am__dry = yes; \
|
fi; \
|
||||||
}
|
skip_next=no; \
|
||||||
|
strip_trailopt () \
|
||||||
|
{ \
|
||||||
|
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||||
|
}; \
|
||||||
|
for flg in $$sane_makeflags; do \
|
||||||
|
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||||
|
case $$flg in \
|
||||||
|
*=*|--*) continue;; \
|
||||||
|
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||||
|
-*I?*) strip_trailopt 'I';; \
|
||||||
|
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||||
|
-*O?*) strip_trailopt 'O';; \
|
||||||
|
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||||
|
-*l?*) strip_trailopt 'l';; \
|
||||||
|
-[dEDm]) skip_next=yes;; \
|
||||||
|
-[JT]) skip_next=yes;; \
|
||||||
|
esac; \
|
||||||
|
case $$flg in \
|
||||||
|
*$$target_option*) has_opt=yes; break;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
test $$has_opt = yes
|
||||||
|
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||||
|
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
@ -353,6 +381,7 @@ uninstall-libLIBRARIES:
|
|||||||
|
|
||||||
clean-libLIBRARIES:
|
clean-libLIBRARIES:
|
||||||
-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
|
-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
|
||||||
|
|
||||||
libdhcpctl.a: $(libdhcpctl_a_OBJECTS) $(libdhcpctl_a_DEPENDENCIES) $(EXTRA_libdhcpctl_a_DEPENDENCIES)
|
libdhcpctl.a: $(libdhcpctl_a_OBJECTS) $(libdhcpctl_a_DEPENDENCIES) $(EXTRA_libdhcpctl_a_DEPENDENCIES)
|
||||||
$(AM_V_at)-rm -f libdhcpctl.a
|
$(AM_V_at)-rm -f libdhcpctl.a
|
||||||
$(AM_V_AR)$(libdhcpctl_a_AR) libdhcpctl.a $(libdhcpctl_a_OBJECTS) $(libdhcpctl_a_LIBADD)
|
$(AM_V_AR)$(libdhcpctl_a_AR) libdhcpctl.a $(libdhcpctl_a_OBJECTS) $(libdhcpctl_a_LIBADD)
|
||||||
@ -402,9 +431,11 @@ clean-binPROGRAMS:
|
|||||||
|
|
||||||
clean-noinstPROGRAMS:
|
clean-noinstPROGRAMS:
|
||||||
-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
|
-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
|
||||||
|
|
||||||
cltest$(EXEEXT): $(cltest_OBJECTS) $(cltest_DEPENDENCIES) $(EXTRA_cltest_DEPENDENCIES)
|
cltest$(EXEEXT): $(cltest_OBJECTS) $(cltest_DEPENDENCIES) $(EXTRA_cltest_DEPENDENCIES)
|
||||||
@rm -f cltest$(EXEEXT)
|
@rm -f cltest$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(cltest_OBJECTS) $(cltest_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(cltest_OBJECTS) $(cltest_LDADD) $(LIBS)
|
||||||
|
|
||||||
omshell$(EXEEXT): $(omshell_OBJECTS) $(omshell_DEPENDENCIES) $(EXTRA_omshell_DEPENDENCIES)
|
omshell$(EXEEXT): $(omshell_OBJECTS) $(omshell_DEPENDENCIES) $(EXTRA_omshell_DEPENDENCIES)
|
||||||
@rm -f omshell$(EXEEXT)
|
@rm -f omshell$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(omshell_OBJECTS) $(omshell_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(omshell_OBJECTS) $(omshell_LDADD) $(LIBS)
|
||||||
@ -426,14 +457,14 @@ distclean-compile:
|
|||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
||||||
|
|
||||||
.c.obj:
|
.c.obj:
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
install-man1: $(man_MANS)
|
install-man1: $(man_MANS)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
@list1=''; \
|
@list1=''; \
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# Makefile.in generated by automake 1.13.1 from Makefile.am.
|
# Makefile.in generated by automake 1.14 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -15,23 +15,51 @@
|
|||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
|
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
am__make_dryrun = \
|
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||||
{ \
|
am__make_running_with_option = \
|
||||||
am__dry=no; \
|
case $${target_option-} in \
|
||||||
|
?) ;; \
|
||||||
|
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||||
|
"target option '$${target_option-}' specified" >&2; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
has_opt=no; \
|
||||||
|
sane_makeflags=$$MAKEFLAGS; \
|
||||||
|
if $(am__is_gnu_make); then \
|
||||||
|
sane_makeflags=$$MFLAGS; \
|
||||||
|
else \
|
||||||
case $$MAKEFLAGS in \
|
case $$MAKEFLAGS in \
|
||||||
*\\[\ \ ]*) \
|
*\\[\ \ ]*) \
|
||||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
bs=\\; \
|
||||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||||
*) \
|
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||||
for am__flg in $$MAKEFLAGS; do \
|
|
||||||
case $$am__flg in \
|
|
||||||
*=*|--*) ;; \
|
|
||||||
*n*) am__dry=yes; break;; \
|
|
||||||
esac; \
|
|
||||||
done;; \
|
|
||||||
esac; \
|
esac; \
|
||||||
test $$am__dry = yes; \
|
fi; \
|
||||||
}
|
skip_next=no; \
|
||||||
|
strip_trailopt () \
|
||||||
|
{ \
|
||||||
|
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||||
|
}; \
|
||||||
|
for flg in $$sane_makeflags; do \
|
||||||
|
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||||
|
case $$flg in \
|
||||||
|
*=*|--*) continue;; \
|
||||||
|
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||||
|
-*I?*) strip_trailopt 'I';; \
|
||||||
|
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||||
|
-*O?*) strip_trailopt 'O';; \
|
||||||
|
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||||
|
-*l?*) strip_trailopt 'l';; \
|
||||||
|
-[dEDm]) skip_next=yes;; \
|
||||||
|
-[JT]) skip_next=yes;; \
|
||||||
|
esac; \
|
||||||
|
case $$flg in \
|
||||||
|
*$$target_option*) has_opt=yes; break;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
test $$has_opt = yes
|
||||||
|
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||||
|
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
@ -330,6 +358,7 @@ uninstall-libLIBRARIES:
|
|||||||
|
|
||||||
clean-libLIBRARIES:
|
clean-libLIBRARIES:
|
||||||
-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
|
-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
|
||||||
|
|
||||||
libdst.a: $(libdst_a_OBJECTS) $(libdst_a_DEPENDENCIES) $(EXTRA_libdst_a_DEPENDENCIES)
|
libdst.a: $(libdst_a_OBJECTS) $(libdst_a_DEPENDENCIES) $(EXTRA_libdst_a_DEPENDENCIES)
|
||||||
$(AM_V_at)-rm -f libdst.a
|
$(AM_V_at)-rm -f libdst.a
|
||||||
$(AM_V_AR)$(libdst_a_AR) libdst.a $(libdst_a_OBJECTS) $(libdst_a_LIBADD)
|
$(AM_V_AR)$(libdst_a_AR) libdst.a $(libdst_a_OBJECTS) $(libdst_a_LIBADD)
|
||||||
@ -353,14 +382,14 @@ distclean-compile:
|
|||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
||||||
|
|
||||||
.c.obj:
|
.c.obj:
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
|
|
||||||
ID: $(am__tagged_files)
|
ID: $(am__tagged_files)
|
||||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# Makefile.in generated by automake 1.13.1 from Makefile.am.
|
# Makefile.in generated by automake 1.14 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -15,23 +15,51 @@
|
|||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
|
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
am__make_dryrun = \
|
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||||
{ \
|
am__make_running_with_option = \
|
||||||
am__dry=no; \
|
case $${target_option-} in \
|
||||||
|
?) ;; \
|
||||||
|
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||||
|
"target option '$${target_option-}' specified" >&2; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
has_opt=no; \
|
||||||
|
sane_makeflags=$$MAKEFLAGS; \
|
||||||
|
if $(am__is_gnu_make); then \
|
||||||
|
sane_makeflags=$$MFLAGS; \
|
||||||
|
else \
|
||||||
case $$MAKEFLAGS in \
|
case $$MAKEFLAGS in \
|
||||||
*\\[\ \ ]*) \
|
*\\[\ \ ]*) \
|
||||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
bs=\\; \
|
||||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||||
*) \
|
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||||
for am__flg in $$MAKEFLAGS; do \
|
|
||||||
case $$am__flg in \
|
|
||||||
*=*|--*) ;; \
|
|
||||||
*n*) am__dry=yes; break;; \
|
|
||||||
esac; \
|
|
||||||
done;; \
|
|
||||||
esac; \
|
esac; \
|
||||||
test $$am__dry = yes; \
|
fi; \
|
||||||
}
|
skip_next=no; \
|
||||||
|
strip_trailopt () \
|
||||||
|
{ \
|
||||||
|
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||||
|
}; \
|
||||||
|
for flg in $$sane_makeflags; do \
|
||||||
|
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||||
|
case $$flg in \
|
||||||
|
*=*|--*) continue;; \
|
||||||
|
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||||
|
-*I?*) strip_trailopt 'I';; \
|
||||||
|
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||||
|
-*O?*) strip_trailopt 'O';; \
|
||||||
|
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||||
|
-*l?*) strip_trailopt 'l';; \
|
||||||
|
-[dEDm]) skip_next=yes;; \
|
||||||
|
-[JT]) skip_next=yes;; \
|
||||||
|
esac; \
|
||||||
|
case $$flg in \
|
||||||
|
*$$target_option*) has_opt=yes; break;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
test $$has_opt = yes
|
||||||
|
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||||
|
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
@ -279,8 +307,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
|||||||
$(am__aclocal_m4_deps):
|
$(am__aclocal_m4_deps):
|
||||||
|
|
||||||
config.h: stamp-h1
|
config.h: stamp-h1
|
||||||
@if test ! -f $@; then rm -f stamp-h1; else :; fi
|
@test -f $@ || rm -f stamp-h1
|
||||||
@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
|
@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
|
||||||
|
|
||||||
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
||||||
@rm -f stamp-h1
|
@rm -f stamp-h1
|
||||||
|
@ -646,6 +646,7 @@ struct lease_state {
|
|||||||
#define DDNS_UPDATE_STYLE_NONE 0
|
#define DDNS_UPDATE_STYLE_NONE 0
|
||||||
#define DDNS_UPDATE_STYLE_AD_HOC 1
|
#define DDNS_UPDATE_STYLE_AD_HOC 1
|
||||||
#define DDNS_UPDATE_STYLE_INTERIM 2
|
#define DDNS_UPDATE_STYLE_INTERIM 2
|
||||||
|
#define DDNS_UPDATE_STYLE_STANDARD 3
|
||||||
|
|
||||||
/* Server option names. */
|
/* Server option names. */
|
||||||
|
|
||||||
@ -1658,6 +1659,9 @@ typedef struct dhcp_ddns_cb {
|
|||||||
|
|
||||||
void *transaction;
|
void *transaction;
|
||||||
void *dataspace;
|
void *dataspace;
|
||||||
|
|
||||||
|
dns_rdataclass_t dhcid_class;
|
||||||
|
char *lease_tag;
|
||||||
} dhcp_ddns_cb_t;
|
} dhcp_ddns_cb_t;
|
||||||
|
|
||||||
extern struct ipv6_pool **pools;
|
extern struct ipv6_pool **pools;
|
||||||
@ -2087,11 +2091,6 @@ struct expression *parse_domain_list(struct parse *cfile, int);
|
|||||||
|
|
||||||
|
|
||||||
/* tree.c */
|
/* tree.c */
|
||||||
#if defined (NSUPDATE)
|
|
||||||
extern struct __res_state resolver_state;
|
|
||||||
extern int resolver_inited;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern struct binding_scope *global_scope;
|
extern struct binding_scope *global_scope;
|
||||||
pair cons (caddr_t, pair);
|
pair cons (caddr_t, pair);
|
||||||
int make_const_option_cache (struct option_cache **, struct buffer **,
|
int make_const_option_cache (struct option_cache **, struct buffer **,
|
||||||
@ -2119,15 +2118,6 @@ int evaluate_expression (struct binding_value **, struct packet *,
|
|||||||
struct binding_scope **, struct expression *,
|
struct binding_scope **, struct expression *,
|
||||||
const char *, int);
|
const char *, int);
|
||||||
int binding_value_dereference (struct binding_value **, const char *, int);
|
int binding_value_dereference (struct binding_value **, const char *, int);
|
||||||
#if defined (NSUPDATE_OLD)
|
|
||||||
int evaluate_dns_expression (ns_updrec **, struct packet *,
|
|
||||||
struct lease *,
|
|
||||||
struct client_state *,
|
|
||||||
struct option_state *,
|
|
||||||
struct option_state *,
|
|
||||||
struct binding_scope **,
|
|
||||||
struct expression *);
|
|
||||||
#endif
|
|
||||||
int evaluate_boolean_expression (int *,
|
int evaluate_boolean_expression (int *,
|
||||||
struct packet *, struct lease *,
|
struct packet *, struct lease *,
|
||||||
struct client_state *,
|
struct client_state *,
|
||||||
@ -2817,9 +2807,9 @@ void client_dns_remove(struct client_state *client, struct iaddr *addr);
|
|||||||
|
|
||||||
void dhcpv4_client_assignments(void);
|
void dhcpv4_client_assignments(void);
|
||||||
void dhcpv6_client_assignments(void);
|
void dhcpv6_client_assignments(void);
|
||||||
|
void form_duid(struct data_string *duid, const char *file, int line);
|
||||||
|
|
||||||
/* dhc6.c */
|
/* dhc6.c */
|
||||||
void form_duid(struct data_string *duid, const char *file, int line);
|
|
||||||
void dhc6_lease_destroy(struct dhc6_lease **src, const char *file, int line);
|
void dhc6_lease_destroy(struct dhc6_lease **src, const char *file, int line);
|
||||||
void start_init6(struct client_state *client);
|
void start_init6(struct client_state *client);
|
||||||
void start_info_request6(struct client_state *client);
|
void start_info_request6(struct client_state *client);
|
||||||
@ -2946,21 +2936,18 @@ int icmp_echorequest (struct iaddr *);
|
|||||||
isc_result_t icmp_echoreply (omapi_object_t *);
|
isc_result_t icmp_echoreply (omapi_object_t *);
|
||||||
|
|
||||||
/* dns.c */
|
/* dns.c */
|
||||||
#if defined (NSUPDATE)
|
|
||||||
isc_result_t find_tsig_key (ns_tsig_key **, const char *, struct dns_zone *);
|
|
||||||
void tkey_free (ns_tsig_key **);
|
|
||||||
#endif
|
|
||||||
isc_result_t enter_dns_zone (struct dns_zone *);
|
isc_result_t enter_dns_zone (struct dns_zone *);
|
||||||
isc_result_t dns_zone_lookup (struct dns_zone **, const char *);
|
isc_result_t dns_zone_lookup (struct dns_zone **, const char *);
|
||||||
int dns_zone_dereference (struct dns_zone **, const char *, int);
|
int dns_zone_dereference (struct dns_zone **, const char *, int);
|
||||||
#if defined (NSUPDATE)
|
#if defined (NSUPDATE)
|
||||||
#define FIND_FORWARD 0
|
#define FIND_FORWARD 0
|
||||||
#define FIND_REVERSE 1
|
#define FIND_REVERSE 1
|
||||||
|
isc_result_t find_tsig_key (ns_tsig_key **, const char *, struct dns_zone *);
|
||||||
|
void tkey_free (ns_tsig_key **);
|
||||||
isc_result_t find_cached_zone (dhcp_ddns_cb_t *, int);
|
isc_result_t find_cached_zone (dhcp_ddns_cb_t *, int);
|
||||||
void forget_zone (struct dns_zone **);
|
void forget_zone (struct dns_zone **);
|
||||||
void repudiate_zone (struct dns_zone **);
|
void repudiate_zone (struct dns_zone **);
|
||||||
//void cache_found_zone (ns_class, char *, struct in_addr *, int);
|
int get_dhcid (dhcp_ddns_cb_t *, int, const u_int8_t *, unsigned);
|
||||||
int get_dhcid (struct data_string *, int, const u_int8_t *, unsigned);
|
|
||||||
void dhcid_tolease (struct data_string *, struct data_string *);
|
void dhcid_tolease (struct data_string *, struct data_string *);
|
||||||
isc_result_t dhcid_fromlease (struct data_string *, struct data_string *);
|
isc_result_t dhcid_fromlease (struct data_string *, struct data_string *);
|
||||||
isc_result_t ddns_update_fwd(struct data_string *, struct iaddr,
|
isc_result_t ddns_update_fwd(struct data_string *, struct iaddr,
|
||||||
@ -2970,6 +2957,16 @@ isc_result_t ddns_remove_fwd(struct data_string *,
|
|||||||
struct iaddr, struct data_string *);
|
struct iaddr, struct data_string *);
|
||||||
#endif /* NSUPDATE */
|
#endif /* NSUPDATE */
|
||||||
|
|
||||||
|
dhcp_ddns_cb_t *ddns_cb_alloc(const char *file, int line);
|
||||||
|
void ddns_cb_free (dhcp_ddns_cb_t *ddns_cb, const char *file, int line);
|
||||||
|
void ddns_cb_forget_zone (dhcp_ddns_cb_t *ddns_cb);
|
||||||
|
isc_result_t
|
||||||
|
ddns_modify_fwd(dhcp_ddns_cb_t *ddns_cb, const char *file, int line);
|
||||||
|
isc_result_t
|
||||||
|
ddns_modify_ptr(dhcp_ddns_cb_t *ddns_cb, const char *file, int line);
|
||||||
|
void
|
||||||
|
ddns_cancel(dhcp_ddns_cb_t *ddns_cb, const char *file, int line);
|
||||||
|
|
||||||
/* resolv.c */
|
/* resolv.c */
|
||||||
extern char path_resolv_conf [];
|
extern char path_resolv_conf [];
|
||||||
extern struct name_server *name_servers;
|
extern struct name_server *name_servers;
|
||||||
@ -3337,21 +3334,6 @@ void dump_subnets (void);
|
|||||||
void free_everything (void);
|
void free_everything (void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* nsupdate.c */
|
|
||||||
char *ddns_rev_name (struct lease *, struct lease_state *, struct packet *);
|
|
||||||
char *ddns_fwd_name (struct lease *, struct lease_state *, struct packet *);
|
|
||||||
int nsupdateA (const char *, const unsigned char *, u_int32_t, int);
|
|
||||||
int nsupdatePTR (const char *, const unsigned char *, u_int32_t, int);
|
|
||||||
void nsupdate (struct lease *, struct lease_state *, struct packet *, int);
|
|
||||||
int updateA (const struct data_string *, const struct data_string *,
|
|
||||||
unsigned int, struct lease *);
|
|
||||||
int updatePTR (const struct data_string *, const struct data_string *,
|
|
||||||
unsigned int, struct lease *);
|
|
||||||
int deleteA (const struct data_string *, const struct data_string *,
|
|
||||||
struct lease *);
|
|
||||||
int deletePTR (const struct data_string *, const struct data_string *,
|
|
||||||
struct lease *);
|
|
||||||
|
|
||||||
/* failover.c */
|
/* failover.c */
|
||||||
#if defined (FAILOVER_PROTOCOL)
|
#if defined (FAILOVER_PROTOCOL)
|
||||||
extern dhcp_failover_state_t *failover_states;
|
extern dhcp_failover_state_t *failover_states;
|
||||||
@ -3618,20 +3600,5 @@ void mark_hosts_unavailable(void);
|
|||||||
void mark_phosts_unavailable(void);
|
void mark_phosts_unavailable(void);
|
||||||
void mark_interfaces_unavailable(void);
|
void mark_interfaces_unavailable(void);
|
||||||
|
|
||||||
dhcp_ddns_cb_t *ddns_cb_alloc(const char *file, int line);
|
|
||||||
void ddns_cb_free (dhcp_ddns_cb_t *ddns_cb, const char *file, int line);
|
|
||||||
void ddns_cb_forget_zone (dhcp_ddns_cb_t *ddns_cb);
|
|
||||||
|
|
||||||
//void *key_from_zone(struct dns_zone *zone);
|
|
||||||
|
|
||||||
isc_result_t
|
|
||||||
ddns_modify_fwd(dhcp_ddns_cb_t *ddns_cb, const char *file, int line);
|
|
||||||
|
|
||||||
isc_result_t
|
|
||||||
ddns_modify_ptr(dhcp_ddns_cb_t *ddns_cb, const char *file, int line);
|
|
||||||
|
|
||||||
void
|
|
||||||
ddns_cancel(dhcp_ddns_cb_t *ddns_cb, const char *file, int line);
|
|
||||||
|
|
||||||
#define MAX_ADDRESS_STRING_LEN \
|
#define MAX_ADDRESS_STRING_LEN \
|
||||||
(sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255"))
|
(sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255"))
|
||||||
|
@ -33,6 +33,11 @@
|
|||||||
* ``http://www.nominum.com''.
|
* ``http://www.nominum.com''.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The following tokens have been deprecated and aren't in use anymore.
|
||||||
|
* They have been left in place to avoid disturbing the code.
|
||||||
|
* DNS_UPDATE, DNS_DELETE, NS_UPDATE, UPDATED_DNS_RR
|
||||||
|
*/
|
||||||
enum dhcp_token {
|
enum dhcp_token {
|
||||||
SEMI = ';',
|
SEMI = ';',
|
||||||
DOT = '.',
|
DOT = '.',
|
||||||
|
@ -275,3 +275,16 @@
|
|||||||
Care should be taken before enabling this option. */
|
Care should be taken before enabling this option. */
|
||||||
|
|
||||||
/* #define SERVER_ID_CHECK */
|
/* #define SERVER_ID_CHECK */
|
||||||
|
|
||||||
|
/* Include code to do a slow transition of DDNS records
|
||||||
|
from the interim to the standard version, or backwards.
|
||||||
|
The normal code will handle removing an old style record
|
||||||
|
when the name on a lease is being changed. This adds code
|
||||||
|
to handle the case where the name isn't being changed but
|
||||||
|
the old record should be removed to allow a new record to
|
||||||
|
be added. This is the slow transition as leases are only
|
||||||
|
updated as a client touches them. A fast transition would
|
||||||
|
entail updating all the records at once, probably at start
|
||||||
|
up. */
|
||||||
|
#define DDNS_UPDATE_SLOW_TRANSITION
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
Definitions for address trees... */
|
Definitions for address trees... */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2011 by Internet Systems Consortium, Inc. ("ISC")
|
* Copyright (c) 2011,2013 by Internet Systems Consortium, Inc. ("ISC")
|
||||||
* Copyright (c) 2004,2007-2009 by Internet Systems Consortium, Inc. ("ISC")
|
* Copyright (c) 2004,2007-2009 by Internet Systems Consortium, Inc. ("ISC")
|
||||||
* Copyright (c) 1996-2003 by Internet Software Consortium
|
* Copyright (c) 1996-2003 by Internet Software Consortium
|
||||||
*
|
*
|
||||||
@ -116,9 +116,6 @@ struct binding_value {
|
|||||||
struct data_string data;
|
struct data_string data;
|
||||||
unsigned long intval;
|
unsigned long intval;
|
||||||
int boolean;
|
int boolean;
|
||||||
#if defined (NSUPDATE_OLD)
|
|
||||||
ns_updrec *dns;
|
|
||||||
#endif
|
|
||||||
struct fundef *fundef;
|
struct fundef *fundef;
|
||||||
struct binding_value *bv;
|
struct binding_value *bv;
|
||||||
} value;
|
} value;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
# Makefile.in generated by automake 1.14 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||||
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
@ -14,15 +14,57 @@
|
|||||||
|
|
||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
|
|
||||||
srcdir = @srcdir@
|
|
||||||
top_srcdir = @top_srcdir@
|
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
|
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||||
|
am__make_running_with_option = \
|
||||||
|
case $${target_option-} in \
|
||||||
|
?) ;; \
|
||||||
|
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||||
|
"target option '$${target_option-}' specified" >&2; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
has_opt=no; \
|
||||||
|
sane_makeflags=$$MAKEFLAGS; \
|
||||||
|
if $(am__is_gnu_make); then \
|
||||||
|
sane_makeflags=$$MFLAGS; \
|
||||||
|
else \
|
||||||
|
case $$MAKEFLAGS in \
|
||||||
|
*\\[\ \ ]*) \
|
||||||
|
bs=\\; \
|
||||||
|
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||||
|
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||||
|
esac; \
|
||||||
|
fi; \
|
||||||
|
skip_next=no; \
|
||||||
|
strip_trailopt () \
|
||||||
|
{ \
|
||||||
|
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||||
|
}; \
|
||||||
|
for flg in $$sane_makeflags; do \
|
||||||
|
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||||
|
case $$flg in \
|
||||||
|
*=*|--*) continue;; \
|
||||||
|
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||||
|
-*I?*) strip_trailopt 'I';; \
|
||||||
|
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||||
|
-*O?*) strip_trailopt 'O';; \
|
||||||
|
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||||
|
-*l?*) strip_trailopt 'l';; \
|
||||||
|
-[dEDm]) skip_next=yes;; \
|
||||||
|
-[JT]) skip_next=yes;; \
|
||||||
|
esac; \
|
||||||
|
case $$flg in \
|
||||||
|
*$$target_option*) has_opt=yes; break;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
test $$has_opt = yes
|
||||||
|
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||||
|
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
top_builddir = ..
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
INSTALL = @INSTALL@
|
|
||||||
install_sh_DATA = $(install_sh) -c -m 644
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
install_sh_PROGRAM = $(install_sh) -c
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
install_sh_SCRIPT = $(install_sh) -c
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
@ -34,8 +76,11 @@ POST_INSTALL = :
|
|||||||
NORMAL_UNINSTALL = :
|
NORMAL_UNINSTALL = :
|
||||||
PRE_UNINSTALL = :
|
PRE_UNINSTALL = :
|
||||||
POST_UNINSTALL = :
|
POST_UNINSTALL = :
|
||||||
|
build_triplet = @build@
|
||||||
|
host_triplet = @host@
|
||||||
subdir = minires
|
subdir = minires
|
||||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
||||||
|
$(top_srcdir)/depcomp
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
@ -43,9 +88,14 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|||||||
mkinstalldirs = $(install_sh) -d
|
mkinstalldirs = $(install_sh) -d
|
||||||
CONFIG_HEADER = $(top_builddir)/includes/config.h
|
CONFIG_HEADER = $(top_builddir)/includes/config.h
|
||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES =
|
||||||
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
LIBRARIES = $(noinst_LIBRARIES)
|
LIBRARIES = $(noinst_LIBRARIES)
|
||||||
AR = ar
|
AR = ar
|
||||||
ARFLAGS = cru
|
ARFLAGS = cru
|
||||||
|
AM_V_AR = $(am__v_AR_@AM_V@)
|
||||||
|
am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
|
||||||
|
am__v_AR_0 = @echo " AR " $@;
|
||||||
|
am__v_AR_1 =
|
||||||
libres_a_AR = $(AR) $(ARFLAGS)
|
libres_a_AR = $(AR) $(ARFLAGS)
|
||||||
libres_a_LIBADD =
|
libres_a_LIBADD =
|
||||||
am_libres_a_OBJECTS = res_mkupdate.$(OBJEXT) res_init.$(OBJEXT) \
|
am_libres_a_OBJECTS = res_mkupdate.$(OBJEXT) res_init.$(OBJEXT) \
|
||||||
@ -55,22 +105,66 @@ am_libres_a_OBJECTS = res_mkupdate.$(OBJEXT) res_init.$(OBJEXT) \
|
|||||||
ns_parse.$(OBJEXT) ns_sign.$(OBJEXT) ns_name.$(OBJEXT) \
|
ns_parse.$(OBJEXT) ns_sign.$(OBJEXT) ns_name.$(OBJEXT) \
|
||||||
ns_samedomain.$(OBJEXT) ns_verify.$(OBJEXT)
|
ns_samedomain.$(OBJEXT) ns_verify.$(OBJEXT)
|
||||||
libres_a_OBJECTS = $(am_libres_a_OBJECTS)
|
libres_a_OBJECTS = $(am_libres_a_OBJECTS)
|
||||||
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/includes
|
AM_V_P = $(am__v_P_@AM_V@)
|
||||||
|
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||||
|
am__v_P_0 = false
|
||||||
|
am__v_P_1 = :
|
||||||
|
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||||
|
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||||
|
am__v_GEN_0 = @echo " GEN " $@;
|
||||||
|
am__v_GEN_1 =
|
||||||
|
AM_V_at = $(am__v_at_@AM_V@)
|
||||||
|
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||||
|
am__v_at_0 = @
|
||||||
|
am__v_at_1 =
|
||||||
|
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
|
||||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||||
am__depfiles_maybe = depfiles
|
am__depfiles_maybe = depfiles
|
||||||
|
am__mv = mv -f
|
||||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
AM_V_CC = $(am__v_CC_@AM_V@)
|
||||||
|
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
|
||||||
|
am__v_CC_0 = @echo " CC " $@;
|
||||||
|
am__v_CC_1 =
|
||||||
CCLD = $(CC)
|
CCLD = $(CC)
|
||||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
||||||
|
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||||
|
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||||
|
am__v_CCLD_1 =
|
||||||
SOURCES = $(libres_a_SOURCES)
|
SOURCES = $(libres_a_SOURCES)
|
||||||
DIST_SOURCES = $(libres_a_SOURCES)
|
DIST_SOURCES = $(libres_a_SOURCES)
|
||||||
|
am__can_run_installinfo = \
|
||||||
|
case $$AM_UPDATE_INFO_DIR in \
|
||||||
|
n|no|NO) false;; \
|
||||||
|
*) (install-info --version) >/dev/null 2>&1;; \
|
||||||
|
esac
|
||||||
|
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||||
|
# Read a list of newline-separated strings from the standard input,
|
||||||
|
# and print each of them once, without duplicates. Input order is
|
||||||
|
# *not* preserved.
|
||||||
|
am__uniquify_input = $(AWK) '\
|
||||||
|
BEGIN { nonempty = 0; } \
|
||||||
|
{ items[$$0] = 1; nonempty = 1; } \
|
||||||
|
END { if (nonempty) { for (i in items) print i; }; } \
|
||||||
|
'
|
||||||
|
# Make sure the list of sources is unique. This is necessary because,
|
||||||
|
# e.g., the same source file might be shared among _SOURCES variables
|
||||||
|
# for different programs/libraries.
|
||||||
|
am__define_uniq_tagged_files = \
|
||||||
|
list='$(am__tagged_files)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | $(am__uniquify_input)`
|
||||||
ETAGS = etags
|
ETAGS = etags
|
||||||
CTAGS = ctags
|
CTAGS = ctags
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
ACLOCAL = @ACLOCAL@
|
ACLOCAL = @ACLOCAL@
|
||||||
AMDEP_FALSE = @AMDEP_FALSE@
|
|
||||||
AMDEP_TRUE = @AMDEP_TRUE@
|
|
||||||
AMTAR = @AMTAR@
|
AMTAR = @AMTAR@
|
||||||
|
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||||
|
ATF_CFLAGS = @ATF_CFLAGS@
|
||||||
|
ATF_LDFLAGS = @ATF_LDFLAGS@
|
||||||
AUTOCONF = @AUTOCONF@
|
AUTOCONF = @AUTOCONF@
|
||||||
AUTOHEADER = @AUTOHEADER@
|
AUTOHEADER = @AUTOHEADER@
|
||||||
AUTOMAKE = @AUTOMAKE@
|
AUTOMAKE = @AUTOMAKE@
|
||||||
@ -89,21 +183,26 @@ ECHO_T = @ECHO_T@
|
|||||||
EGREP = @EGREP@
|
EGREP = @EGREP@
|
||||||
EXEEXT = @EXEEXT@
|
EXEEXT = @EXEEXT@
|
||||||
GREP = @GREP@
|
GREP = @GREP@
|
||||||
|
INSTALL = @INSTALL@
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LDAP_CFLAGS = @LDAP_CFLAGS@
|
||||||
LDFLAGS = @LDFLAGS@
|
LDFLAGS = @LDFLAGS@
|
||||||
LIBOBJS = @LIBOBJS@
|
LIBOBJS = @LIBOBJS@
|
||||||
LIBS = @LIBS@
|
LIBS = @LIBS@
|
||||||
LTLIBOBJS = @LTLIBOBJS@
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
MAINT = @MAINT@
|
||||||
MAKEINFO = @MAKEINFO@
|
MAKEINFO = @MAKEINFO@
|
||||||
|
MKDIR_P = @MKDIR_P@
|
||||||
OBJEXT = @OBJEXT@
|
OBJEXT = @OBJEXT@
|
||||||
PACKAGE = @PACKAGE@
|
PACKAGE = @PACKAGE@
|
||||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
PACKAGE_NAME = @PACKAGE_NAME@
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
PACKAGE_STRING = @PACKAGE_STRING@
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
RANLIB = @RANLIB@
|
RANLIB = @RANLIB@
|
||||||
@ -111,24 +210,35 @@ SET_MAKE = @SET_MAKE@
|
|||||||
SHELL = @SHELL@
|
SHELL = @SHELL@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
VERSION = @VERSION@
|
VERSION = @VERSION@
|
||||||
|
abs_builddir = @abs_builddir@
|
||||||
|
abs_srcdir = @abs_srcdir@
|
||||||
|
abs_top_builddir = @abs_top_builddir@
|
||||||
|
abs_top_srcdir = @abs_top_srcdir@
|
||||||
ac_ct_CC = @ac_ct_CC@
|
ac_ct_CC = @ac_ct_CC@
|
||||||
ac_prefix_program = @ac_prefix_program@
|
ac_prefix_program = @ac_prefix_program@
|
||||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
|
||||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
|
||||||
am__include = @am__include@
|
am__include = @am__include@
|
||||||
am__leading_dot = @am__leading_dot@
|
am__leading_dot = @am__leading_dot@
|
||||||
am__quote = @am__quote@
|
am__quote = @am__quote@
|
||||||
am__tar = @am__tar@
|
am__tar = @am__tar@
|
||||||
am__untar = @am__untar@
|
am__untar = @am__untar@
|
||||||
bindir = @bindir@
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
build_alias = @build_alias@
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
builddir = @builddir@
|
||||||
byte_order = @byte_order@
|
byte_order = @byte_order@
|
||||||
datadir = @datadir@
|
datadir = @datadir@
|
||||||
datarootdir = @datarootdir@
|
datarootdir = @datarootdir@
|
||||||
docdir = @docdir@
|
docdir = @docdir@
|
||||||
dvidir = @dvidir@
|
dvidir = @dvidir@
|
||||||
exec_prefix = @exec_prefix@
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
host_alias = @host_alias@
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
htmldir = @htmldir@
|
htmldir = @htmldir@
|
||||||
includedir = @includedir@
|
includedir = @includedir@
|
||||||
infodir = @infodir@
|
infodir = @infodir@
|
||||||
@ -146,8 +256,12 @@ program_transform_name = @program_transform_name@
|
|||||||
psdir = @psdir@
|
psdir = @psdir@
|
||||||
sbindir = @sbindir@
|
sbindir = @sbindir@
|
||||||
sharedstatedir = @sharedstatedir@
|
sharedstatedir = @sharedstatedir@
|
||||||
|
srcdir = @srcdir@
|
||||||
sysconfdir = @sysconfdir@
|
sysconfdir = @sysconfdir@
|
||||||
target_alias = @target_alias@
|
target_alias = @target_alias@
|
||||||
|
top_build_prefix = @top_build_prefix@
|
||||||
|
top_builddir = @top_builddir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
AM_CPPFLAGS = -DMINIRES_LIB -DHMAC_MD5
|
AM_CPPFLAGS = -DMINIRES_LIB -DHMAC_MD5
|
||||||
noinst_LIBRARIES = libres.a
|
noinst_LIBRARIES = libres.a
|
||||||
libres_a_SOURCES = res_mkupdate.c res_init.c res_update.c res_send.c \
|
libres_a_SOURCES = res_mkupdate.c res_init.c res_update.c res_send.c \
|
||||||
@ -159,18 +273,18 @@ all: all-am
|
|||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
.SUFFIXES: .c .o .obj
|
.SUFFIXES: .c .o .obj
|
||||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
@for dep in $?; do \
|
@for dep in $?; do \
|
||||||
case '$(am__configure_deps)' in \
|
case '$(am__configure_deps)' in \
|
||||||
*$$dep*) \
|
*$$dep*) \
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||||
&& exit 0; \
|
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||||
exit 1;; \
|
exit 1;; \
|
||||||
esac; \
|
esac; \
|
||||||
done; \
|
done; \
|
||||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign minires/Makefile'; \
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign minires/Makefile'; \
|
||||||
cd $(top_srcdir) && \
|
$(am__cd) $(top_srcdir) && \
|
||||||
$(AUTOMAKE) --foreign minires/Makefile
|
$(AUTOMAKE) --foreign minires/Makefile
|
||||||
.PRECIOUS: Makefile
|
.PRECIOUS: Makefile
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
@case '$?' in \
|
@case '$?' in \
|
||||||
@ -184,17 +298,19 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
|||||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
$(top_srcdir)/configure: $(am__configure_deps)
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
|
|
||||||
clean-noinstLIBRARIES:
|
clean-noinstLIBRARIES:
|
||||||
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
|
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
|
||||||
libres.a: $(libres_a_OBJECTS) $(libres_a_DEPENDENCIES)
|
|
||||||
-rm -f libres.a
|
libres.a: $(libres_a_OBJECTS) $(libres_a_DEPENDENCIES) $(EXTRA_libres_a_DEPENDENCIES)
|
||||||
$(libres_a_AR) libres.a $(libres_a_OBJECTS) $(libres_a_LIBADD)
|
$(AM_V_at)-rm -f libres.a
|
||||||
$(RANLIB) libres.a
|
$(AM_V_AR)$(libres_a_AR) libres.a $(libres_a_OBJECTS) $(libres_a_LIBADD)
|
||||||
|
$(AM_V_at)$(RANLIB) libres.a
|
||||||
|
|
||||||
mostlyclean-compile:
|
mostlyclean-compile:
|
||||||
-rm -f *.$(OBJEXT)
|
-rm -f *.$(OBJEXT)
|
||||||
@ -219,92 +335,98 @@ distclean-compile:
|
|||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/res_update.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/res_update.Po@am__quote@
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
||||||
|
|
||||||
.c.obj:
|
.c.obj:
|
||||||
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
uninstall-info-am:
|
|
||||||
|
|
||||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
ID: $(am__tagged_files)
|
||||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||||
unique=`for i in $$list; do \
|
tags: tags-am
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
TAGS: tags
|
||||||
done | \
|
|
||||||
$(AWK) ' { files[$$0] = 1; } \
|
|
||||||
END { for (i in files) print i; }'`; \
|
|
||||||
mkid -fID $$unique
|
|
||||||
tags: TAGS
|
|
||||||
|
|
||||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||||
$(TAGS_FILES) $(LISP)
|
set x; \
|
||||||
tags=; \
|
|
||||||
here=`pwd`; \
|
here=`pwd`; \
|
||||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
$(am__define_uniq_tagged_files); \
|
||||||
unique=`for i in $$list; do \
|
shift; \
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||||
done | \
|
|
||||||
$(AWK) ' { files[$$0] = 1; } \
|
|
||||||
END { for (i in files) print i; }'`; \
|
|
||||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
|
||||||
test -n "$$unique" || unique=$$empty_fix; \
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
if test $$# -gt 0; then \
|
||||||
$$tags $$unique; \
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
"$$@" $$unique; \
|
||||||
|
else \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$unique; \
|
||||||
|
fi; \
|
||||||
fi
|
fi
|
||||||
ctags: CTAGS
|
ctags: ctags-am
|
||||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
|
||||||
$(TAGS_FILES) $(LISP)
|
CTAGS: ctags
|
||||||
tags=; \
|
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||||
here=`pwd`; \
|
$(am__define_uniq_tagged_files); \
|
||||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
test -z "$(CTAGS_ARGS)$$unique" \
|
||||||
unique=`for i in $$list; do \
|
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
|
||||||
done | \
|
|
||||||
$(AWK) ' { files[$$0] = 1; } \
|
|
||||||
END { for (i in files) print i; }'`; \
|
|
||||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
|
||||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
$$tags $$unique
|
$$unique
|
||||||
|
|
||||||
GTAGS:
|
GTAGS:
|
||||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
&& cd $(top_srcdir) \
|
&& $(am__cd) $(top_srcdir) \
|
||||||
&& gtags -i $(GTAGS_ARGS) $$here
|
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||||
|
cscopelist: cscopelist-am
|
||||||
|
|
||||||
|
cscopelist-am: $(am__tagged_files)
|
||||||
|
list='$(am__tagged_files)'; \
|
||||||
|
case "$(srcdir)" in \
|
||||||
|
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||||
|
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||||
|
esac; \
|
||||||
|
for i in $$list; do \
|
||||||
|
if test -f "$$i"; then \
|
||||||
|
echo "$(subdir)/$$i"; \
|
||||||
|
else \
|
||||||
|
echo "$$sdir/$$i"; \
|
||||||
|
fi; \
|
||||||
|
done >> $(top_builddir)/cscope.files
|
||||||
|
|
||||||
distclean-tags:
|
distclean-tags:
|
||||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
|
||||||
distdir: $(DISTFILES)
|
distdir: $(DISTFILES)
|
||||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
list='$(DISTFILES)'; for file in $$list; do \
|
list='$(DISTFILES)'; \
|
||||||
case $$file in \
|
dist_files=`for file in $$list; do echo $$file; done | \
|
||||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
sed -e "s|^$$srcdirstrip/||;t" \
|
||||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||||
esac; \
|
case $$dist_files in \
|
||||||
|
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||||
|
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||||
|
sort -u` ;; \
|
||||||
|
esac; \
|
||||||
|
for file in $$dist_files; do \
|
||||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
|
||||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
|
||||||
dir="/$$dir"; \
|
|
||||||
$(mkdir_p) "$(distdir)$$dir"; \
|
|
||||||
else \
|
|
||||||
dir=''; \
|
|
||||||
fi; \
|
|
||||||
if test -d $$d/$$file; then \
|
if test -d $$d/$$file; then \
|
||||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
if test -d "$(distdir)/$$file"; then \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
fi; \
|
fi; \
|
||||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
else \
|
else \
|
||||||
test -f $(distdir)/$$file \
|
test -f "$(distdir)/$$file" \
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||||
|| exit 1; \
|
|| exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
@ -322,16 +444,22 @@ install-am: all-am
|
|||||||
|
|
||||||
installcheck: installcheck-am
|
installcheck: installcheck-am
|
||||||
install-strip:
|
install-strip:
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
if test -z '$(STRIP)'; then \
|
||||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
`test -z '$(STRIP)' || \
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
install; \
|
||||||
|
else \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||||
|
fi
|
||||||
mostlyclean-generic:
|
mostlyclean-generic:
|
||||||
|
|
||||||
clean-generic:
|
clean-generic:
|
||||||
|
|
||||||
distclean-generic:
|
distclean-generic:
|
||||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||||
|
|
||||||
maintainer-clean-generic:
|
maintainer-clean-generic:
|
||||||
@echo "This command is intended for maintainers to use"
|
@echo "This command is intended for maintainers to use"
|
||||||
@ -352,18 +480,38 @@ dvi-am:
|
|||||||
|
|
||||||
html: html-am
|
html: html-am
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
info: info-am
|
info: info-am
|
||||||
|
|
||||||
info-am:
|
info-am:
|
||||||
|
|
||||||
install-data-am:
|
install-data-am:
|
||||||
|
|
||||||
|
install-dvi: install-dvi-am
|
||||||
|
|
||||||
|
install-dvi-am:
|
||||||
|
|
||||||
install-exec-am:
|
install-exec-am:
|
||||||
|
|
||||||
|
install-html: install-html-am
|
||||||
|
|
||||||
|
install-html-am:
|
||||||
|
|
||||||
install-info: install-info-am
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-info-am:
|
||||||
|
|
||||||
install-man:
|
install-man:
|
||||||
|
|
||||||
|
install-pdf: install-pdf-am
|
||||||
|
|
||||||
|
install-pdf-am:
|
||||||
|
|
||||||
|
install-ps: install-ps-am
|
||||||
|
|
||||||
|
install-ps-am:
|
||||||
|
|
||||||
installcheck-am:
|
installcheck-am:
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-am
|
maintainer-clean: maintainer-clean-am
|
||||||
@ -383,18 +531,23 @@ ps: ps-am
|
|||||||
|
|
||||||
ps-am:
|
ps-am:
|
||||||
|
|
||||||
uninstall-am: uninstall-info-am
|
uninstall-am:
|
||||||
|
|
||||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
.MAKE: install-am install-strip
|
||||||
clean-noinstLIBRARIES ctags distclean distclean-compile \
|
|
||||||
distclean-generic distclean-tags distdir dvi dvi-am html \
|
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
|
||||||
html-am info info-am install install-am install-data \
|
clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \
|
||||||
install-data-am install-exec install-exec-am install-info \
|
distclean-compile distclean-generic distclean-tags distdir dvi \
|
||||||
install-info-am install-man install-strip installcheck \
|
dvi-am html html-am info info-am install install-am \
|
||||||
installcheck-am installdirs maintainer-clean \
|
install-data install-data-am install-dvi install-dvi-am \
|
||||||
|
install-exec install-exec-am install-html install-html-am \
|
||||||
|
install-info install-info-am install-man install-pdf \
|
||||||
|
install-pdf-am install-ps install-ps-am install-strip \
|
||||||
|
installcheck installcheck-am installdirs maintainer-clean \
|
||||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||||
mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
|
mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
|
||||||
uninstall-am uninstall-info-am
|
uninstall-am
|
||||||
|
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# Makefile.in generated by automake 1.13.1 from Makefile.am.
|
# Makefile.in generated by automake 1.14 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -16,23 +16,51 @@
|
|||||||
|
|
||||||
|
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
am__make_dryrun = \
|
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||||
{ \
|
am__make_running_with_option = \
|
||||||
am__dry=no; \
|
case $${target_option-} in \
|
||||||
|
?) ;; \
|
||||||
|
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||||
|
"target option '$${target_option-}' specified" >&2; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
has_opt=no; \
|
||||||
|
sane_makeflags=$$MAKEFLAGS; \
|
||||||
|
if $(am__is_gnu_make); then \
|
||||||
|
sane_makeflags=$$MFLAGS; \
|
||||||
|
else \
|
||||||
case $$MAKEFLAGS in \
|
case $$MAKEFLAGS in \
|
||||||
*\\[\ \ ]*) \
|
*\\[\ \ ]*) \
|
||||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
bs=\\; \
|
||||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||||
*) \
|
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||||
for am__flg in $$MAKEFLAGS; do \
|
|
||||||
case $$am__flg in \
|
|
||||||
*=*|--*) ;; \
|
|
||||||
*n*) am__dry=yes; break;; \
|
|
||||||
esac; \
|
|
||||||
done;; \
|
|
||||||
esac; \
|
esac; \
|
||||||
test $$am__dry = yes; \
|
fi; \
|
||||||
}
|
skip_next=no; \
|
||||||
|
strip_trailopt () \
|
||||||
|
{ \
|
||||||
|
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||||
|
}; \
|
||||||
|
for flg in $$sane_makeflags; do \
|
||||||
|
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||||
|
case $$flg in \
|
||||||
|
*=*|--*) continue;; \
|
||||||
|
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||||
|
-*I?*) strip_trailopt 'I';; \
|
||||||
|
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||||
|
-*O?*) strip_trailopt 'O';; \
|
||||||
|
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||||
|
-*l?*) strip_trailopt 'l';; \
|
||||||
|
-[dEDm]) skip_next=yes;; \
|
||||||
|
-[JT]) skip_next=yes;; \
|
||||||
|
esac; \
|
||||||
|
case $$flg in \
|
||||||
|
*$$target_option*) has_opt=yes; break;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
test $$has_opt = yes
|
||||||
|
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||||
|
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
@ -349,6 +377,7 @@ uninstall-libLIBRARIES:
|
|||||||
|
|
||||||
clean-libLIBRARIES:
|
clean-libLIBRARIES:
|
||||||
-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
|
-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
|
||||||
|
|
||||||
libomapi.a: $(libomapi_a_OBJECTS) $(libomapi_a_DEPENDENCIES) $(EXTRA_libomapi_a_DEPENDENCIES)
|
libomapi.a: $(libomapi_a_OBJECTS) $(libomapi_a_DEPENDENCIES) $(EXTRA_libomapi_a_DEPENDENCIES)
|
||||||
$(AM_V_at)-rm -f libomapi.a
|
$(AM_V_at)-rm -f libomapi.a
|
||||||
$(AM_V_AR)$(libomapi_a_AR) libomapi.a $(libomapi_a_OBJECTS) $(libomapi_a_LIBADD)
|
$(AM_V_AR)$(libomapi_a_AR) libomapi.a $(libomapi_a_OBJECTS) $(libomapi_a_LIBADD)
|
||||||
@ -356,6 +385,7 @@ libomapi.a: $(libomapi_a_OBJECTS) $(libomapi_a_DEPENDENCIES) $(EXTRA_libomapi_a_
|
|||||||
|
|
||||||
clean-noinstPROGRAMS:
|
clean-noinstPROGRAMS:
|
||||||
-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
|
-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
|
||||||
|
|
||||||
svtest$(EXEEXT): $(svtest_OBJECTS) $(svtest_DEPENDENCIES) $(EXTRA_svtest_DEPENDENCIES)
|
svtest$(EXEEXT): $(svtest_OBJECTS) $(svtest_DEPENDENCIES) $(EXTRA_svtest_DEPENDENCIES)
|
||||||
@rm -f svtest$(EXEEXT)
|
@rm -f svtest$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(svtest_OBJECTS) $(svtest_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(svtest_OBJECTS) $(svtest_LDADD) $(LIBS)
|
||||||
@ -394,14 +424,14 @@ distclean-compile:
|
|||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
||||||
|
|
||||||
.c.obj:
|
.c.obj:
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
install-man3: $(man_MANS)
|
install-man3: $(man_MANS)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
@list1=''; \
|
@list1=''; \
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# Makefile.in generated by automake 1.13.1 from Makefile.am.
|
# Makefile.in generated by automake 1.14 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -15,23 +15,51 @@
|
|||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
|
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
am__make_dryrun = \
|
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||||
{ \
|
am__make_running_with_option = \
|
||||||
am__dry=no; \
|
case $${target_option-} in \
|
||||||
|
?) ;; \
|
||||||
|
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||||
|
"target option '$${target_option-}' specified" >&2; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
has_opt=no; \
|
||||||
|
sane_makeflags=$$MAKEFLAGS; \
|
||||||
|
if $(am__is_gnu_make); then \
|
||||||
|
sane_makeflags=$$MFLAGS; \
|
||||||
|
else \
|
||||||
case $$MAKEFLAGS in \
|
case $$MAKEFLAGS in \
|
||||||
*\\[\ \ ]*) \
|
*\\[\ \ ]*) \
|
||||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
bs=\\; \
|
||||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||||
*) \
|
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||||
for am__flg in $$MAKEFLAGS; do \
|
|
||||||
case $$am__flg in \
|
|
||||||
*=*|--*) ;; \
|
|
||||||
*n*) am__dry=yes; break;; \
|
|
||||||
esac; \
|
|
||||||
done;; \
|
|
||||||
esac; \
|
esac; \
|
||||||
test $$am__dry = yes; \
|
fi; \
|
||||||
}
|
skip_next=no; \
|
||||||
|
strip_trailopt () \
|
||||||
|
{ \
|
||||||
|
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||||
|
}; \
|
||||||
|
for flg in $$sane_makeflags; do \
|
||||||
|
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||||
|
case $$flg in \
|
||||||
|
*=*|--*) continue;; \
|
||||||
|
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||||
|
-*I?*) strip_trailopt 'I';; \
|
||||||
|
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||||
|
-*O?*) strip_trailopt 'O';; \
|
||||||
|
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||||
|
-*l?*) strip_trailopt 'l';; \
|
||||||
|
-[dEDm]) skip_next=yes;; \
|
||||||
|
-[JT]) skip_next=yes;; \
|
||||||
|
esac; \
|
||||||
|
case $$flg in \
|
||||||
|
*$$target_option*) has_opt=yes; break;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
test $$has_opt = yes
|
||||||
|
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||||
|
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
@ -338,6 +366,7 @@ uninstall-sbinPROGRAMS:
|
|||||||
|
|
||||||
clean-sbinPROGRAMS:
|
clean-sbinPROGRAMS:
|
||||||
-test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS)
|
-test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS)
|
||||||
|
|
||||||
dhcrelay$(EXEEXT): $(dhcrelay_OBJECTS) $(dhcrelay_DEPENDENCIES) $(EXTRA_dhcrelay_DEPENDENCIES)
|
dhcrelay$(EXEEXT): $(dhcrelay_OBJECTS) $(dhcrelay_DEPENDENCIES) $(EXTRA_dhcrelay_DEPENDENCIES)
|
||||||
@rm -f dhcrelay$(EXEEXT)
|
@rm -f dhcrelay$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(dhcrelay_OBJECTS) $(dhcrelay_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(dhcrelay_OBJECTS) $(dhcrelay_LDADD) $(LIBS)
|
||||||
@ -355,14 +384,14 @@ distclean-compile:
|
|||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
||||||
|
|
||||||
.c.obj:
|
.c.obj:
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
install-man8: $(man_MANS)
|
install-man8: $(man_MANS)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
@list1=''; \
|
@list1=''; \
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# Makefile.in generated by automake 1.13.1 from Makefile.am.
|
# Makefile.in generated by automake 1.14 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -16,23 +16,51 @@
|
|||||||
|
|
||||||
|
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
am__make_dryrun = \
|
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||||
{ \
|
am__make_running_with_option = \
|
||||||
am__dry=no; \
|
case $${target_option-} in \
|
||||||
|
?) ;; \
|
||||||
|
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||||
|
"target option '$${target_option-}' specified" >&2; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
has_opt=no; \
|
||||||
|
sane_makeflags=$$MAKEFLAGS; \
|
||||||
|
if $(am__is_gnu_make); then \
|
||||||
|
sane_makeflags=$$MFLAGS; \
|
||||||
|
else \
|
||||||
case $$MAKEFLAGS in \
|
case $$MAKEFLAGS in \
|
||||||
*\\[\ \ ]*) \
|
*\\[\ \ ]*) \
|
||||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
bs=\\; \
|
||||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||||
*) \
|
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||||
for am__flg in $$MAKEFLAGS; do \
|
|
||||||
case $$am__flg in \
|
|
||||||
*=*|--*) ;; \
|
|
||||||
*n*) am__dry=yes; break;; \
|
|
||||||
esac; \
|
|
||||||
done;; \
|
|
||||||
esac; \
|
esac; \
|
||||||
test $$am__dry = yes; \
|
fi; \
|
||||||
}
|
skip_next=no; \
|
||||||
|
strip_trailopt () \
|
||||||
|
{ \
|
||||||
|
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||||
|
}; \
|
||||||
|
for flg in $$sane_makeflags; do \
|
||||||
|
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||||
|
case $$flg in \
|
||||||
|
*=*|--*) continue;; \
|
||||||
|
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||||
|
-*I?*) strip_trailopt 'I';; \
|
||||||
|
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||||
|
-*O?*) strip_trailopt 'O';; \
|
||||||
|
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||||
|
-*l?*) strip_trailopt 'l';; \
|
||||||
|
-[dEDm]) skip_next=yes;; \
|
||||||
|
-[JT]) skip_next=yes;; \
|
||||||
|
esac; \
|
||||||
|
case $$flg in \
|
||||||
|
*$$target_option*) has_opt=yes; break;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
test $$has_opt = yes
|
||||||
|
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||||
|
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
@ -411,6 +439,7 @@ uninstall-sbinPROGRAMS:
|
|||||||
|
|
||||||
clean-sbinPROGRAMS:
|
clean-sbinPROGRAMS:
|
||||||
-test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS)
|
-test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS)
|
||||||
|
|
||||||
dhcpd$(EXEEXT): $(dhcpd_OBJECTS) $(dhcpd_DEPENDENCIES) $(EXTRA_dhcpd_DEPENDENCIES)
|
dhcpd$(EXEEXT): $(dhcpd_OBJECTS) $(dhcpd_DEPENDENCIES) $(EXTRA_dhcpd_DEPENDENCIES)
|
||||||
@rm -f dhcpd$(EXEEXT)
|
@rm -f dhcpd$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(dhcpd_LINK) $(dhcpd_OBJECTS) $(dhcpd_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(dhcpd_LINK) $(dhcpd_OBJECTS) $(dhcpd_LDADD) $(LIBS)
|
||||||
@ -444,14 +473,14 @@ distclean-compile:
|
|||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
||||||
|
|
||||||
.c.obj:
|
.c.obj:
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
|
|
||||||
dhcpd-dhcpd.o: dhcpd.c
|
dhcpd-dhcpd.o: dhcpd.c
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dhcpd_CFLAGS) $(CFLAGS) -MT dhcpd-dhcpd.o -MD -MP -MF $(DEPDIR)/dhcpd-dhcpd.Tpo -c -o dhcpd-dhcpd.o `test -f 'dhcpd.c' || echo '$(srcdir)/'`dhcpd.c
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(dhcpd_CFLAGS) $(CFLAGS) -MT dhcpd-dhcpd.o -MD -MP -MF $(DEPDIR)/dhcpd-dhcpd.Tpo -c -o dhcpd-dhcpd.o `test -f 'dhcpd.c' || echo '$(srcdir)/'`dhcpd.c
|
||||||
@ -805,13 +834,12 @@ uninstall-dist_sysconfDATA:
|
|||||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||||
$(am__recursive_targets):
|
$(am__recursive_targets):
|
||||||
@fail= failcom='exit 1'; \
|
@fail=; \
|
||||||
for f in x $$MAKEFLAGS; do \
|
if $(am__make_keepgoing); then \
|
||||||
case $$f in \
|
failcom='fail=yes'; \
|
||||||
*=* | --[!k]*);; \
|
else \
|
||||||
*k*) failcom='fail=yes';; \
|
failcom='exit 1'; \
|
||||||
esac; \
|
fi; \
|
||||||
done; \
|
|
||||||
dot_seen=no; \
|
dot_seen=no; \
|
||||||
target=`echo $@ | sed s/-recursive//`; \
|
target=`echo $@ | sed s/-recursive//`; \
|
||||||
case "$@" in \
|
case "$@" in \
|
||||||
|
174
server/ddns.c
174
server/ddns.c
@ -38,6 +38,9 @@
|
|||||||
#include "dst/md5.h"
|
#include "dst/md5.h"
|
||||||
#include <dns/result.h>
|
#include <dns/result.h>
|
||||||
|
|
||||||
|
char *ddns_standard_tag = "ddns-dhcid";
|
||||||
|
char *ddns_interim_tag = "ddns-txt";
|
||||||
|
|
||||||
#ifdef NSUPDATE
|
#ifdef NSUPDATE
|
||||||
|
|
||||||
static void ddns_fwd_srv_connector(struct lease *lease,
|
static void ddns_fwd_srv_connector(struct lease *lease,
|
||||||
@ -73,16 +76,13 @@ ddns_updates(struct packet *packet, struct lease *lease, struct lease *old,
|
|||||||
struct data_string ddns_domainname;
|
struct data_string ddns_domainname;
|
||||||
struct data_string old_ddns_fwd_name;
|
struct data_string old_ddns_fwd_name;
|
||||||
struct data_string ddns_fwd_name;
|
struct data_string ddns_fwd_name;
|
||||||
//struct data_string ddns_rev_name;
|
|
||||||
struct data_string ddns_dhcid;
|
struct data_string ddns_dhcid;
|
||||||
struct binding_scope **scope = NULL;
|
struct binding_scope **scope = NULL;
|
||||||
//struct iaddr addr;
|
|
||||||
struct data_string d1;
|
struct data_string d1;
|
||||||
struct option_cache *oc;
|
struct option_cache *oc;
|
||||||
int s1, s2;
|
int s1, s2;
|
||||||
int result = 0;
|
int result = 0;
|
||||||
int server_updates_a = 1;
|
int server_updates_a = 1;
|
||||||
//int server_updates_ptr = 1;
|
|
||||||
struct buffer *bp = (struct buffer *)0;
|
struct buffer *bp = (struct buffer *)0;
|
||||||
int ignorep = 0, client_ignorep = 0;
|
int ignorep = 0, client_ignorep = 0;
|
||||||
int rev_name_len;
|
int rev_name_len;
|
||||||
@ -91,8 +91,9 @@ ddns_updates(struct packet *packet, struct lease *lease, struct lease *old,
|
|||||||
dhcp_ddns_cb_t *ddns_cb;
|
dhcp_ddns_cb_t *ddns_cb;
|
||||||
int do_remove = 0;
|
int do_remove = 0;
|
||||||
|
|
||||||
if (ddns_update_style != 2)
|
if ((ddns_update_style != DDNS_UPDATE_STYLE_STANDARD) &&
|
||||||
return 0;
|
(ddns_update_style != DDNS_UPDATE_STYLE_INTERIM))
|
||||||
|
return (0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* sigh, I want to cancel any previous udpates before we do anything
|
* sigh, I want to cancel any previous udpates before we do anything
|
||||||
@ -151,7 +152,6 @@ ddns_updates(struct packet *packet, struct lease *lease, struct lease *old,
|
|||||||
memset (&ddns_domainname, 0, sizeof (ddns_domainname));
|
memset (&ddns_domainname, 0, sizeof (ddns_domainname));
|
||||||
memset (&old_ddns_fwd_name, 0, sizeof (ddns_fwd_name));
|
memset (&old_ddns_fwd_name, 0, sizeof (ddns_fwd_name));
|
||||||
memset (&ddns_fwd_name, 0, sizeof (ddns_fwd_name));
|
memset (&ddns_fwd_name, 0, sizeof (ddns_fwd_name));
|
||||||
//memset (&ddns_rev_name, 0, sizeof (ddns_rev_name));
|
|
||||||
memset (&ddns_dhcid, 0, sizeof (ddns_dhcid));
|
memset (&ddns_dhcid, 0, sizeof (ddns_dhcid));
|
||||||
|
|
||||||
/* If we are allowed to accept the client's update of its own A
|
/* If we are allowed to accept the client's update of its own A
|
||||||
@ -265,36 +265,23 @@ ddns_updates(struct packet *packet, struct lease *lease, struct lease *old,
|
|||||||
goto in;
|
goto in;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* See if there's a DHCID on the lease, and if not
|
#if defined (DDNS_UPDATE_SLOW_TRANSITION)
|
||||||
* then potentially look for 'on events' for ad-hoc ddns.
|
/*
|
||||||
|
* If the slow transition code is enabled check to see
|
||||||
|
* if the stored type (standard or interim doesn't
|
||||||
|
* match the type currently in use. If it doesn't
|
||||||
|
* try to remove and replace the DNS record
|
||||||
*/
|
*/
|
||||||
if (!find_bound_string(&ddns_dhcid, *scope, "ddns-txt") &&
|
if (((ddns_update_style == DDNS_UPDATE_STYLE_STANDARD) &&
|
||||||
(old != NULL)) {
|
find_bound_string(&ddns_dhcid, *scope, ddns_interim_tag)) ||
|
||||||
/* If there's no DHCID, the update was probably
|
((ddns_update_style == DDNS_UPDATE_STYLE_INTERIM) &&
|
||||||
done with the old-style ad-hoc DDNS updates.
|
find_bound_string(&ddns_dhcid, *scope, ddns_standard_tag))) {
|
||||||
So if the expiry and release events look like
|
|
||||||
they're the same, run them. This should delete
|
|
||||||
the old DDNS data. */
|
|
||||||
if (old->on_star.on_expiry ==
|
|
||||||
old->on_star.on_release) {
|
|
||||||
execute_statements(NULL, NULL, lease, NULL,
|
|
||||||
NULL, NULL, scope,
|
|
||||||
old->on_star.on_expiry,
|
|
||||||
NULL);
|
|
||||||
if (old->on_star.on_expiry)
|
|
||||||
executable_statement_dereference
|
|
||||||
(&old->on_star.on_expiry,
|
|
||||||
MDL);
|
|
||||||
if (old->on_star.on_release)
|
|
||||||
executable_statement_dereference
|
|
||||||
(&old->on_star.on_release,
|
|
||||||
MDL);
|
|
||||||
/* Now, install the DDNS data the new way. */
|
|
||||||
goto in;
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
data_string_forget(&ddns_dhcid, MDL);
|
data_string_forget(&ddns_dhcid, MDL);
|
||||||
|
do_remove = 1;
|
||||||
|
goto in;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* See if the administrator wants to do updates even
|
/* See if the administrator wants to do updates even
|
||||||
in cases where the update already appears to have been
|
in cases where the update already appears to have been
|
||||||
done. */
|
done. */
|
||||||
@ -491,23 +478,69 @@ ddns_updates(struct packet *packet, struct lease *lease, struct lease *old,
|
|||||||
data_string_forget(&d1, MDL);
|
data_string_forget(&d1, MDL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* copy the string now so we can pass it to the dhcid routines
|
||||||
|
* via the ddns_cb pointer
|
||||||
|
*/
|
||||||
|
data_string_copy(&ddns_cb->fwd_name, &ddns_fwd_name, MDL);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If we are updating the A record, compute the DHCID value.
|
* If we are updating the A record, compute the DHCID value.
|
||||||
|
* We have two options for computing the DHCID value, the older
|
||||||
|
* interim version and the newer standard version. The interim
|
||||||
|
* has some issues but is left as is to avoid compatibility issues.
|
||||||
|
*
|
||||||
|
* We select the type of DHCID to construct and the information to
|
||||||
|
* use for the digest based on 4701 section 3.3
|
||||||
*/
|
*/
|
||||||
if ((ddns_cb->flags & DDNS_UPDATE_ADDR) != 0) {
|
if ((ddns_cb->flags & DDNS_UPDATE_ADDR) != 0) {
|
||||||
if (lease6 != NULL)
|
int ddns_type;
|
||||||
result = get_dhcid(&ddns_cb->dhcid, 2,
|
int ddns_len;
|
||||||
lease6->ia->iaid_duid.data,
|
if (ddns_update_style == DDNS_UPDATE_STYLE_STANDARD) {
|
||||||
lease6->ia->iaid_duid.len);
|
/* The standard style */
|
||||||
else if ((lease != NULL) && (lease->uid != NULL) &&
|
ddns_cb->lease_tag = ddns_standard_tag;
|
||||||
(lease->uid_len != 0))
|
ddns_cb->dhcid_class = dns_rdatatype_dhcid;
|
||||||
result = get_dhcid (&ddns_cb->dhcid,
|
ddns_type = 1;
|
||||||
DHO_DHCP_CLIENT_IDENTIFIER,
|
ddns_len = 4;
|
||||||
lease -> uid, lease -> uid_len);
|
} else {
|
||||||
else if (lease != NULL)
|
/* The older interim style */
|
||||||
result = get_dhcid (&ddns_cb->dhcid, 0,
|
ddns_cb->lease_tag = ddns_interim_tag;
|
||||||
lease -> hardware_addr.hbuf,
|
ddns_cb->dhcid_class = dns_rdatatype_txt;
|
||||||
lease -> hardware_addr.hlen);
|
/* for backwards compatibility */
|
||||||
|
ddns_type = DHO_DHCP_CLIENT_IDENTIFIER;
|
||||||
|
/* IAID incorrectly included */
|
||||||
|
ddns_len = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (lease6 != NULL) {
|
||||||
|
if (lease6->ia->iaid_duid.len < ddns_len)
|
||||||
|
goto badfqdn;
|
||||||
|
result = get_dhcid(ddns_cb, 2,
|
||||||
|
lease6->ia->iaid_duid.data + ddns_len,
|
||||||
|
lease6->ia->iaid_duid.len - ddns_len);
|
||||||
|
} else if ((lease != NULL) &&
|
||||||
|
(lease->uid != NULL) &&
|
||||||
|
(lease->uid_len != 0)) {
|
||||||
|
/* If this is standard check for an RFC 4361
|
||||||
|
* compliant client identifier
|
||||||
|
*/
|
||||||
|
if ((ddns_update_style == DDNS_UPDATE_STYLE_STANDARD) &&
|
||||||
|
(lease->uid[0] == 255)) {
|
||||||
|
if (lease->uid_len < 5)
|
||||||
|
goto badfqdn;
|
||||||
|
result = get_dhcid(ddns_cb, 2,
|
||||||
|
lease->uid + 5,
|
||||||
|
lease->uid_len - 5);
|
||||||
|
} else {
|
||||||
|
result = get_dhcid(ddns_cb, ddns_type,
|
||||||
|
lease->uid,
|
||||||
|
lease->uid_len);
|
||||||
|
}
|
||||||
|
} else if (lease != NULL)
|
||||||
|
result = get_dhcid(ddns_cb, 0,
|
||||||
|
lease->hardware_addr.hbuf,
|
||||||
|
lease->hardware_addr.hlen);
|
||||||
else
|
else
|
||||||
log_fatal("Impossible condition at %s:%d.", MDL);
|
log_fatal("Impossible condition at %s:%d.", MDL);
|
||||||
|
|
||||||
@ -519,8 +552,6 @@ ddns_updates(struct packet *packet, struct lease *lease, struct lease *old,
|
|||||||
* Perform updates.
|
* Perform updates.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
data_string_copy(&ddns_cb->fwd_name, &ddns_fwd_name, MDL);
|
|
||||||
|
|
||||||
if (ddns_cb->flags && DDNS_UPDATE_ADDR) {
|
if (ddns_cb->flags && DDNS_UPDATE_ADDR) {
|
||||||
oc = lookup_option(&server_universe, options,
|
oc = lookup_option(&server_universe, options,
|
||||||
SV_DDNS_CONFLICT_DETECT);
|
SV_DDNS_CONFLICT_DETECT);
|
||||||
@ -713,8 +744,6 @@ ddns_updates(struct packet *packet, struct lease *lease, struct lease *old,
|
|||||||
data_string_forget(&ddns_domainname, MDL);
|
data_string_forget(&ddns_domainname, MDL);
|
||||||
data_string_forget(&old_ddns_fwd_name, MDL);
|
data_string_forget(&old_ddns_fwd_name, MDL);
|
||||||
data_string_forget(&ddns_fwd_name, MDL);
|
data_string_forget(&ddns_fwd_name, MDL);
|
||||||
//data_string_forget(&ddns_rev_name, MDL);
|
|
||||||
//data_string_forget(&ddns_dhcid, MDL);
|
|
||||||
if (bp)
|
if (bp)
|
||||||
buffer_dereference(&bp, MDL);
|
buffer_dereference(&bp, MDL);
|
||||||
|
|
||||||
@ -828,18 +857,21 @@ ddns_update_lease_text(dhcp_ddns_cb_t *ddns_cb,
|
|||||||
case DDNS_STATE_ADD_FW_NXDOMAIN:
|
case DDNS_STATE_ADD_FW_NXDOMAIN:
|
||||||
bind_ds_value(scope, "ddns-fwd-name", &ddns_cb->fwd_name);
|
bind_ds_value(scope, "ddns-fwd-name", &ddns_cb->fwd_name);
|
||||||
|
|
||||||
/* convert from dns version to lease version of dhcid */
|
if (ddns_cb->lease_tag == ddns_standard_tag) {
|
||||||
memset(&lease_dhcid, 0, sizeof(lease_dhcid));
|
bind_ds_value(scope, ddns_standard_tag, &ddns_cb->dhcid);
|
||||||
dhcid_tolease(&ddns_cb->dhcid, &lease_dhcid);
|
} else {
|
||||||
bind_ds_value(scope, "ddns-txt", &lease_dhcid);
|
/* convert from dns version to lease version of dhcid */
|
||||||
data_string_forget(&lease_dhcid, MDL);
|
memset(&lease_dhcid, 0, sizeof(lease_dhcid));
|
||||||
|
dhcid_tolease(&ddns_cb->dhcid, &lease_dhcid);
|
||||||
|
bind_ds_value(scope, ddns_interim_tag, &lease_dhcid);
|
||||||
|
data_string_forget(&lease_dhcid, MDL);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DDNS_STATE_REM_FW_NXRR:
|
case DDNS_STATE_REM_FW_NXRR:
|
||||||
case DDNS_STATE_REM_FW_YXDHCID:
|
case DDNS_STATE_REM_FW_YXDHCID:
|
||||||
unset(*scope, "ddns-fwd-name");
|
unset(*scope, "ddns-fwd-name");
|
||||||
unset(*scope, "ddns-txt");
|
unset(*scope, ddns_cb->lease_tag);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1797,7 +1829,8 @@ ddns_removals(struct lease *lease,
|
|||||||
if (*scope == NULL)
|
if (*scope == NULL)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (ddns_update_style != 2)
|
if ((ddns_update_style != DDNS_UPDATE_STYLE_STANDARD) &&
|
||||||
|
(ddns_update_style != DDNS_UPDATE_STYLE_INTERIM))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
/* Assume that we are removing both records */
|
/* Assume that we are removing both records */
|
||||||
@ -1829,15 +1862,22 @@ ddns_removals(struct lease *lease,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Find the ptr name and copy it to the control block. If we don't
|
* Find the txt or dhcid tag and copy it to the control block. If we don't
|
||||||
* have it this isn't an interim or rfc3??? record so we can't delete
|
* have one this isn't an interim or standard record so we can't delete
|
||||||
* the A record using this mechanism but we can delete the ptr record.
|
* the A record using this mechanism but we can delete the ptr record.
|
||||||
* In this case we will attempt to do any requested next step.
|
* In this case we will attempt to do any requested next step.
|
||||||
*/
|
*/
|
||||||
memset(&leaseid, 0, sizeof(leaseid));
|
memset(&leaseid, 0, sizeof(leaseid));
|
||||||
if (!find_bound_string (&leaseid, *scope, "ddns-txt")) {
|
if (find_bound_string (&leaseid, *scope, ddns_standard_tag)) {
|
||||||
ddns_cb->flags &= ~DDNS_UPDATE_ADDR;
|
/* We have a standard tag */
|
||||||
} else {
|
ddns_cb->lease_tag = ddns_standard_tag;
|
||||||
|
ddns_cb->dhcid_class = dns_rdatatype_dhcid;
|
||||||
|
data_string_copy(&ddns_cb->dhcid, &leaseid, MDL);
|
||||||
|
data_string_forget(&leaseid, MDL);
|
||||||
|
} else if (find_bound_string (&leaseid, *scope, ddns_interim_tag)) {
|
||||||
|
/* we have an interim tag */
|
||||||
|
ddns_cb->lease_tag = ddns_interim_tag;
|
||||||
|
ddns_cb->dhcid_class = dns_rdatatype_txt;
|
||||||
if (dhcid_fromlease(&ddns_cb->dhcid, &leaseid) !=
|
if (dhcid_fromlease(&ddns_cb->dhcid, &leaseid) !=
|
||||||
ISC_R_SUCCESS) {
|
ISC_R_SUCCESS) {
|
||||||
/* We couldn't convert the dhcid from the lease
|
/* We couldn't convert the dhcid from the lease
|
||||||
@ -1847,7 +1887,9 @@ ddns_removals(struct lease *lease,
|
|||||||
ddns_cb->flags &= ~DDNS_UPDATE_ADDR;
|
ddns_cb->flags &= ~DDNS_UPDATE_ADDR;
|
||||||
}
|
}
|
||||||
data_string_forget(&leaseid, MDL);
|
data_string_forget(&leaseid, MDL);
|
||||||
}
|
} else {
|
||||||
|
ddns_cb->flags &= ~DDNS_UPDATE_ADDR;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Find the rev name and copy it to the control block. If we don't
|
* Find the rev name and copy it to the control block. If we don't
|
||||||
@ -1894,7 +1936,7 @@ ddns_removals(struct lease *lease,
|
|||||||
else {
|
else {
|
||||||
/*remove info from scope */
|
/*remove info from scope */
|
||||||
unset(*scope, "ddns-fwd-name");
|
unset(*scope, "ddns-fwd-name");
|
||||||
unset(*scope, "ddns-txt");
|
unset(*scope, ddns_cb->lease_tag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
126
server/dhcpd.c
126
server/dhcpd.c
@ -76,86 +76,6 @@ option server.ddns-hostname = \n\
|
|||||||
option server.ddns-domainname = config-option domain-name; \n\
|
option server.ddns-domainname = config-option domain-name; \n\
|
||||||
option server.ddns-rev-domainname = \"in-addr.arpa.\";";
|
option server.ddns-rev-domainname = \"in-addr.arpa.\";";
|
||||||
|
|
||||||
/* This is the old-style name service updater that is executed
|
|
||||||
whenever a lease is committed. It does not follow the DHCP-DNS
|
|
||||||
draft at all. */
|
|
||||||
|
|
||||||
char old_nsupdate [] = " \n\
|
|
||||||
on commit { \n\
|
|
||||||
if (not static and \n\
|
|
||||||
((config-option server.ddns-updates = null) or \n\
|
|
||||||
(config-option server.ddns-updates != 0))) { \n\
|
|
||||||
set new-ddns-fwd-name = \n\
|
|
||||||
concat (pick (config-option server.ddns-hostname, \n\
|
|
||||||
option host-name), \".\", \n\
|
|
||||||
pick (config-option server.ddns-domainname, \n\
|
|
||||||
config-option domain-name)); \n\
|
|
||||||
if (defined (ddns-fwd-name) and ddns-fwd-name != new-ddns-fwd-name) { \n\
|
|
||||||
switch (ns-update (delete (IN, A, ddns-fwd-name, leased-address))) { \n\
|
|
||||||
case NOERROR: \n\
|
|
||||||
unset ddns-fwd-name; \n\
|
|
||||||
on expiry or release { \n\
|
|
||||||
} \n\
|
|
||||||
} \n\
|
|
||||||
} \n\
|
|
||||||
\n\
|
|
||||||
if (not defined (ddns-fwd-name)) { \n\
|
|
||||||
set ddns-fwd-name = new-ddns-fwd-name; \n\
|
|
||||||
if defined (ddns-fwd-name) { \n\
|
|
||||||
switch (ns-update (not exists (IN, A, ddns-fwd-name, null), \n\
|
|
||||||
add (IN, A, ddns-fwd-name, leased-address, \n\
|
|
||||||
lease-time / 2))) { \n\
|
|
||||||
default: \n\
|
|
||||||
unset ddns-fwd-name; \n\
|
|
||||||
break; \n\
|
|
||||||
\n\
|
|
||||||
case NOERROR: \n\
|
|
||||||
set ddns-rev-name = \n\
|
|
||||||
concat (binary-to-ascii (10, 8, \".\", \n\
|
|
||||||
reverse (1, \n\
|
|
||||||
leased-address)), \".\", \n\
|
|
||||||
pick (config-option server.ddns-rev-domainname, \n\
|
|
||||||
\"in-addr.arpa.\")); \n\
|
|
||||||
switch (ns-update (delete (IN, PTR, ddns-rev-name, null), \n\
|
|
||||||
add (IN, PTR, ddns-rev-name, ddns-fwd-name, \n\
|
|
||||||
lease-time / 2))) \n\
|
|
||||||
{ \n\
|
|
||||||
default: \n\
|
|
||||||
unset ddns-rev-name; \n\
|
|
||||||
on release or expiry { \n\
|
|
||||||
switch (ns-update (delete (IN, A, ddns-fwd-name, \n\
|
|
||||||
leased-address))) { \n\
|
|
||||||
case NOERROR: \n\
|
|
||||||
unset ddns-fwd-name; \n\
|
|
||||||
break; \n\
|
|
||||||
} \n\
|
|
||||||
on release or expiry; \n\
|
|
||||||
} \n\
|
|
||||||
break; \n\
|
|
||||||
\n\
|
|
||||||
case NOERROR: \n\
|
|
||||||
on release or expiry { \n\
|
|
||||||
switch (ns-update (delete (IN, PTR, ddns-rev-name, null))) {\n\
|
|
||||||
case NOERROR: \n\
|
|
||||||
unset ddns-rev-name; \n\
|
|
||||||
break; \n\
|
|
||||||
} \n\
|
|
||||||
switch (ns-update (delete (IN, A, ddns-fwd-name, \n\
|
|
||||||
leased-address))) { \n\
|
|
||||||
case NOERROR: \n\
|
|
||||||
unset ddns-fwd-name; \n\
|
|
||||||
break; \n\
|
|
||||||
} \n\
|
|
||||||
on release or expiry; \n\
|
|
||||||
} \n\
|
|
||||||
} \n\
|
|
||||||
} \n\
|
|
||||||
} \n\
|
|
||||||
} \n\
|
|
||||||
unset new-ddns-fwd-name; \n\
|
|
||||||
} \n\
|
|
||||||
}";
|
|
||||||
|
|
||||||
#endif /* NSUPDATE */
|
#endif /* NSUPDATE */
|
||||||
int ddns_update_style;
|
int ddns_update_style;
|
||||||
|
|
||||||
@ -875,9 +795,6 @@ void postconf_initialization (int quiet)
|
|||||||
struct option_cache *oc;
|
struct option_cache *oc;
|
||||||
char *s;
|
char *s;
|
||||||
isc_result_t result;
|
isc_result_t result;
|
||||||
#if defined (NSUPDATE)
|
|
||||||
struct parse *parse;
|
|
||||||
#endif
|
|
||||||
int tmp;
|
int tmp;
|
||||||
|
|
||||||
/* Now try to get the lease file name. */
|
/* Now try to get the lease file name. */
|
||||||
@ -1133,49 +1050,6 @@ void postconf_initialization (int quiet)
|
|||||||
|
|
||||||
/* Don't need the options anymore. */
|
/* Don't need the options anymore. */
|
||||||
option_state_dereference (&options, MDL);
|
option_state_dereference (&options, MDL);
|
||||||
|
|
||||||
#if defined (NSUPDATE)
|
|
||||||
/* If old-style ddns updates have been requested, parse the
|
|
||||||
old-style ddns updater. */
|
|
||||||
if (ddns_update_style == 1) {
|
|
||||||
struct executable_statement **e, *s;
|
|
||||||
|
|
||||||
if (root_group -> statements) {
|
|
||||||
s = (struct executable_statement *)0;
|
|
||||||
if (!executable_statement_allocate (&s, MDL))
|
|
||||||
log_fatal ("no memory for ddns updater");
|
|
||||||
executable_statement_reference
|
|
||||||
(&s -> next, root_group -> statements, MDL);
|
|
||||||
executable_statement_dereference
|
|
||||||
(&root_group -> statements, MDL);
|
|
||||||
executable_statement_reference
|
|
||||||
(&root_group -> statements, s, MDL);
|
|
||||||
s -> op = statements_statement;
|
|
||||||
e = &s -> data.statements;
|
|
||||||
executable_statement_dereference (&s, MDL);
|
|
||||||
} else {
|
|
||||||
e = &root_group -> statements;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set up the standard name service updater routine. */
|
|
||||||
parse = NULL;
|
|
||||||
result = new_parse(&parse, -1, old_nsupdate,
|
|
||||||
sizeof(old_nsupdate) - 1,
|
|
||||||
"old name service update routine", 0);
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
log_fatal ("can't begin parsing old ddns updater!");
|
|
||||||
|
|
||||||
if (parse != NULL) {
|
|
||||||
tmp = 0;
|
|
||||||
if (!(parse_executable_statements(e, parse, &tmp,
|
|
||||||
context_any))) {
|
|
||||||
end_parse(&parse);
|
|
||||||
log_fatal("can't parse standard ddns updater!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
end_parse(&parse);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void postdb_startup (void)
|
void postdb_startup (void)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.\" dhcpd.conf.5
|
.\" dhcpd.conf.5
|
||||||
.\"
|
.\"
|
||||||
.\" Copyright (c) 2004-2012 by Internet Systems Consortium, Inc. ("ISC")
|
.\" Copyright (c) 2004-2013 by Internet Systems Consortium, Inc. ("ISC")
|
||||||
.\" Copyright (c) 1996-2003 by Internet Software Consortium
|
.\" Copyright (c) 1996-2003 by Internet Software Consortium
|
||||||
.\"
|
.\"
|
||||||
.\" Permission to use, copy, modify, and distribute this software for any
|
.\" Permission to use, copy, modify, and distribute this software for any
|
||||||
@ -1039,7 +1039,7 @@ class "customer" {
|
|||||||
.fi
|
.fi
|
||||||
.PP
|
.PP
|
||||||
Now whenever a request comes in from a customer site, the circuit ID
|
Now whenever a request comes in from a customer site, the circuit ID
|
||||||
option will be checked against the class's hash table. If a subclass
|
option will be checked against the class\'s hash table. If a subclass
|
||||||
is found that matches the circuit ID, the client will be classified in
|
is found that matches the circuit ID, the client will be classified in
|
||||||
that subclass and treated accordingly. If no subclass is found
|
that subclass and treated accordingly. If no subclass is found
|
||||||
matching the circuit ID, a new one will be created and logged in the
|
matching the circuit ID, a new one will be created and logged in the
|
||||||
@ -1085,115 +1085,24 @@ the Domain Name System to be updated. These updates are RFC 2136
|
|||||||
compliant so any DNS server supporting RFC 2136 should be able to
|
compliant so any DNS server supporting RFC 2136 should be able to
|
||||||
accept updates from the DHCP server.
|
accept updates from the DHCP server.
|
||||||
.PP
|
.PP
|
||||||
Two DNS update schemes are currently implemented, and another is
|
There are two DNS schemes implemented. The interim option is
|
||||||
planned. The two that are currently implemented are the ad-hoc DNS
|
based on draft revisions of the DDNS documents while the standard
|
||||||
update mode and the interim DHCP-DNS interaction draft update mode.
|
option is based on the RFCs for DHCP-DNS interaction and DHCIDs.
|
||||||
In the future we plan to add a third mode which will be the standard
|
A third option, ad-hoc, was deprecated and has now been removed
|
||||||
DNS update method based on the RFCS for DHCP-DNS interaction and DHCID
|
from the code base. The DHCP server must be configured to use
|
||||||
The DHCP server must be configured to use one of the two
|
one of the two currently-supported methods, or not to do DNS updates.
|
||||||
currently-supported methods, or not to do dns updates.
|
.PP
|
||||||
This can be done with the
|
New installations should use the standard option. Older
|
||||||
|
installations may want to continue using the interim option for
|
||||||
|
backwards compatibility with the DNS database until the database
|
||||||
|
can be updated. This can be done with the
|
||||||
.I ddns-update-style
|
.I ddns-update-style
|
||||||
configuration parameter.
|
configuration parameter.
|
||||||
.SH THE AD-HOC DNS UPDATE SCHEME
|
.SH THE DNS UPDATE SCHEME
|
||||||
The ad-hoc Dynamic DNS update scheme is
|
the interim and standard DNS update schemes operate mostly according
|
||||||
.B now deprecated
|
to work from the IETF. The interim version was based on the drafts
|
||||||
and
|
in progress at the time while the standard is based on the completed
|
||||||
.B
|
RFCs. The standard RFCs are:
|
||||||
does not work.
|
|
||||||
In future releases of the ISC DHCP server, this scheme will not likely be
|
|
||||||
available. The interim scheme works, allows for failover, and should now be
|
|
||||||
used. The following description is left here for informational purposes
|
|
||||||
only.
|
|
||||||
.PP
|
|
||||||
The ad-hoc Dynamic DNS update scheme implemented in this version of
|
|
||||||
the ISC DHCP server is a prototype design, which does not
|
|
||||||
have much to do with the standard update method that is being
|
|
||||||
standardized in the IETF DHC working group, but rather implements some
|
|
||||||
very basic, yet useful, update capabilities. This mode
|
|
||||||
.B does not work
|
|
||||||
with the
|
|
||||||
.I failover protocol
|
|
||||||
because it does not account for the possibility of two different DHCP
|
|
||||||
servers updating the same set of DNS records.
|
|
||||||
.PP
|
|
||||||
For the ad-hoc DNS update method, the client's FQDN is derived in two
|
|
||||||
parts. First, the hostname is determined. Then, the domain name is
|
|
||||||
determined, and appended to the hostname.
|
|
||||||
.PP
|
|
||||||
The DHCP server determines the client's hostname by first looking for
|
|
||||||
a \fIddns-hostname\fR configuration option, and using that if it is
|
|
||||||
present. If no such option is present, the server looks for a
|
|
||||||
valid hostname in the FQDN option sent by the client. If one is
|
|
||||||
found, it is used; otherwise, if the client sent a host-name option,
|
|
||||||
that is used. Otherwise, if there is a host declaration that applies
|
|
||||||
to the client, the name from that declaration will be used. If none
|
|
||||||
of these applies, the server will not have a hostname for the client,
|
|
||||||
and will not be able to do a DNS update.
|
|
||||||
.PP
|
|
||||||
The domain name is determined from the
|
|
||||||
.I ddns-domainname
|
|
||||||
configuration option. The default configuration for this option is:
|
|
||||||
.nf
|
|
||||||
.sp 1
|
|
||||||
option server.ddns-domainname = config-option domain-name;
|
|
||||||
|
|
||||||
.fi
|
|
||||||
So if this configuration option is not configured to a different
|
|
||||||
value (over-riding the above default), or if a domain-name option
|
|
||||||
has not been configured for the client's scope, then the server will
|
|
||||||
not attempt to perform a DNS update.
|
|
||||||
.PP
|
|
||||||
The client's fully-qualified domain name, derived as we have
|
|
||||||
described, is used as the name on which an "A" record will be stored.
|
|
||||||
The A record will contain the IP address that the client was assigned
|
|
||||||
in its lease. If there is already an A record with the same name in
|
|
||||||
the DNS server, no update of either the A or PTR records will occur -
|
|
||||||
this prevents a client from claiming that its hostname is the name of
|
|
||||||
some network server. For example, if you have a fileserver called
|
|
||||||
"fs.sneedville.edu", and the client claims its hostname is "fs", no
|
|
||||||
DNS update will be done for that client, and an error message will be
|
|
||||||
logged.
|
|
||||||
.PP
|
|
||||||
If the A record update succeeds, a PTR record update for the assigned
|
|
||||||
IP address will be done, pointing to the A record. This update is
|
|
||||||
unconditional - it will be done even if another PTR record of the same
|
|
||||||
name exists. Since the IP address has been assigned to the DHCP
|
|
||||||
server, this should be safe.
|
|
||||||
.PP
|
|
||||||
Please note that the current implementation assumes clients only have
|
|
||||||
a single network interface. A client with two network interfaces
|
|
||||||
will see unpredictable behavior. This is considered a bug, and will
|
|
||||||
be fixed in a later release. It may be helpful to enable the
|
|
||||||
.I one-lease-per-client
|
|
||||||
parameter so that roaming clients do not trigger this same behavior.
|
|
||||||
.PP
|
|
||||||
The DHCP protocol normally involves a four-packet exchange - first the
|
|
||||||
client sends a DHCPDISCOVER message, then the server sends a
|
|
||||||
DHCPOFFER, then the client sends a DHCPREQUEST, then the server sends
|
|
||||||
a DHCPACK. In the current version of the server, the server will do
|
|
||||||
a DNS update after it has received the DHCPREQUEST, and before it has
|
|
||||||
sent the DHCPACK. It only sends the DNS update if it has not sent
|
|
||||||
one for the client's address before, in order to minimize the impact
|
|
||||||
on the DHCP server.
|
|
||||||
.PP
|
|
||||||
When the client's lease expires, the DHCP server (if it is operating
|
|
||||||
at the time, or when next it operates) will remove the client's A and
|
|
||||||
PTR records from the DNS database. If the client releases its lease
|
|
||||||
by sending a DHCPRELEASE message, the server will likewise remove the
|
|
||||||
A and PTR records.
|
|
||||||
.SH THE INTERIM DNS UPDATE SCHEME
|
|
||||||
The interim DNS update scheme operates mostly according to several
|
|
||||||
drafts considered by the IETF. While the drafts have since become
|
|
||||||
RFCs the code was written before they were finalized and there are
|
|
||||||
some differences between our code and the final RFCs. We plan to
|
|
||||||
update our code, probably adding a standard DNS update option, at
|
|
||||||
some time. The basic framework is similar with the main material
|
|
||||||
difference being that a DHCID RR was assigned in the RFCs whereas
|
|
||||||
our code continues to use an experimental TXT record. The format
|
|
||||||
of the TXT record bears a resemblance to the DHCID RR but it is not
|
|
||||||
equivalent (MD5 vs SHA1, field length differences etc).
|
|
||||||
The standard RFCs are:
|
|
||||||
.PP
|
.PP
|
||||||
.nf
|
.nf
|
||||||
.ce 3
|
.ce 3
|
||||||
@ -1211,15 +1120,17 @@ draft-ietf-dhc-fqdn-option-??.txt
|
|||||||
draft-ietf-dhc-ddns-resolution-??.txt
|
draft-ietf-dhc-ddns-resolution-??.txt
|
||||||
.fi
|
.fi
|
||||||
.PP
|
.PP
|
||||||
Because our implementation is slightly different than the standard, we
|
The basic framework for the two schemes is similar with the main
|
||||||
will briefly document the operation of this update style here.
|
material difference being that a DHCID RR is used in the standard
|
||||||
|
version while the interim versions uses a TXT RR. The format
|
||||||
|
of the TXT record bears a resemblance to the DHCID RR but it is not
|
||||||
|
equivalent (MD5 vs SHA2, field length differences etc).
|
||||||
.PP
|
.PP
|
||||||
The first point to understand about this style of DNS update is that
|
In these two schemes the DHCP server does not necessarily
|
||||||
unlike the ad-hoc style, the DHCP server does not necessarily
|
|
||||||
always update both the A and the PTR records. The FQDN option
|
always update both the A and the PTR records. The FQDN option
|
||||||
includes a flag which, when sent by the client, indicates that the
|
includes a flag which, when sent by the client, indicates that the
|
||||||
client wishes to update its own A record. In that case, the server
|
client wishes to update its own A record. In that case, the server
|
||||||
can be configured either to honor the client's intentions or ignore
|
can be configured either to honor the client\'s intentions or ignore
|
||||||
them. This is done with the statement \fIallow client-updates;\fR or
|
them. This is done with the statement \fIallow client-updates;\fR or
|
||||||
the statement \fIignore client-updates;\fR. By default, client
|
the statement \fIignore client-updates;\fR. By default, client
|
||||||
updates are allowed.
|
updates are allowed.
|
||||||
@ -1239,15 +1150,14 @@ IP address, it can update its own A record, assuming that the
|
|||||||
"radish.org" DNS server will allow it to do so.
|
"radish.org" DNS server will allow it to do so.
|
||||||
.PP
|
.PP
|
||||||
If the server is configured not to allow client updates, or if the
|
If the server is configured not to allow client updates, or if the
|
||||||
client doesn't want to do its own update, the server will simply
|
client doesn\'t want to do its own update, the server will simply
|
||||||
choose a name for the client from either the \fBfqdn\fR option (if present)
|
choose a name for the client from either the \fBfqdn\fR option (if present)
|
||||||
or the hostname option (if present). It will use its own
|
or the hostname option (if present). It will use its own
|
||||||
domain name for the client, just as in the ad-hoc update scheme.
|
domain name for the client. It will then update both the A and PTR
|
||||||
It will then update both the A and PTR record, using the name that it
|
record, using the name that it chose for the client. If the client
|
||||||
chose for the client. If the client sends a fully-qualified domain
|
sends a fully-qualified domain name in the \fBfqdn\fR option, the
|
||||||
name in the \fBfqdn\fR option, the server uses only the leftmost part of the
|
server uses only the leftmost part of the domain name - in the
|
||||||
domain name - in the example above, "jschmoe" instead of
|
example above, "jschmoe" instead of "jschmoe.radish.org".
|
||||||
"jschmoe.radish.org".
|
|
||||||
.PP
|
.PP
|
||||||
Further, if the \fIignore client-updates;\fR directive is used, then
|
Further, if the \fIignore client-updates;\fR directive is used, then
|
||||||
the server will in addition send a response in the DHCP packet, using
|
the server will in addition send a response in the DHCP packet, using
|
||||||
@ -1257,49 +1167,41 @@ response is sent which indicates the client may not perform updates.
|
|||||||
.PP
|
.PP
|
||||||
Also, if the
|
Also, if the
|
||||||
.I use-host-decl-names
|
.I use-host-decl-names
|
||||||
configuration option is enabled, then the host declaration's
|
configuration option is enabled, then the host declaration\'s
|
||||||
.I hostname
|
.I hostname
|
||||||
will be used in place of the
|
will be used in place of the
|
||||||
.I hostname
|
.I hostname
|
||||||
option, and the same rules will apply as described above.
|
option, and the same rules will apply as described above.
|
||||||
.PP
|
.PP
|
||||||
The other difference between the ad-hoc scheme and the interim
|
Both the standard and interim options also include a method to
|
||||||
scheme is that with the interim scheme, a method is used that
|
allow more than one DHCP server to update the DNS database without
|
||||||
allows more than one DHCP server to update the DNS database without
|
accidentally deleting A records that shouldn\'t be deleted nor failing
|
||||||
accidentally deleting A records that shouldn't be deleted nor failing
|
to add A records that should be added. For the standard option the
|
||||||
to add A records that should be added. The scheme works as follows:
|
method works as follows:
|
||||||
.PP
|
.PP
|
||||||
When the DHCP server issues a client a new lease, it creates a text
|
When the DHCP server issues a client a new lease, it creates a text
|
||||||
string that is an MD5 hash over the DHCP client's identification (see
|
string that is an SHA hash over the DHCP client\'s identification (see
|
||||||
draft-ietf-dnsext-dhcid-rr-??.txt for details). The update adds an A
|
RFCs 4701 & 4702 for details). The update attempts to add an A
|
||||||
record with the name the server chose and a TXT record containing the
|
record with the name the server chose and a DHCID record containing the
|
||||||
hashed identifier string (hashid). If this update succeeds, the
|
hashed identifier string (hashid). If this update succeeds, the
|
||||||
server is done.
|
server is done.
|
||||||
.PP
|
.PP
|
||||||
If the update fails because the A record already exists, then the DHCP
|
If the update fails because the A record already exists, then the DHCP
|
||||||
server attempts to add the A record with the prerequisite that there
|
server attempts to add the A record with the prerequisite that there
|
||||||
must be a TXT record in the same name as the new A record, and that
|
must be a DHCID record in the same name as the new A record, and that
|
||||||
TXT record's contents must be equal to hashid. If this update
|
DHCID record\'s contents must be equal to hashid. If this update
|
||||||
succeeds, then the client has its A record and PTR record. If it
|
succeeds, then the client has its A record and PTR record. If it
|
||||||
fails, then the name the client has been assigned (or requested) is in
|
fails, then the name the client has been assigned (or requested) is in
|
||||||
use, and can't be used by the client. At this point the DHCP server
|
use, and can\'t be used by the client. At this point the DHCP server
|
||||||
gives up trying to do a DNS update for the client until the client
|
gives up trying to do a DNS update for the client until the client
|
||||||
chooses a new name.
|
chooses a new name.
|
||||||
.PP
|
.PP
|
||||||
The interim DNS update scheme is called interim for two reasons.
|
The server also does not update very aggressively. Because each
|
||||||
First, it does not quite follow the RFCs. The RFCs call for a
|
DNS update involves a round trip to the DNS server, there is a cost
|
||||||
new DHCID RRtype while he interim DNS update scheme uses a TXT record.
|
associated with doing updates even if they do not actually modify
|
||||||
The ddns-resolution draft called for the DHCP server to put a DHCID RR
|
the DNS database. So the DHCP server tracks whether or not it has
|
||||||
on the PTR record, but the \fIinterim\fR update method does not do this.
|
updated the record in the past (this information is stored on the
|
||||||
In the final RFC this requirement was relaxed such that a server may
|
lease) and does not attempt to update records that it
|
||||||
add a DHCID RR to the PTR record.
|
|
||||||
.PP
|
|
||||||
In addition to these differences, the server also does not update very
|
|
||||||
aggressively. Because each DNS update involves a round trip to the
|
|
||||||
DNS server, there is a cost associated with doing updates even if they
|
|
||||||
do not actually modify the DNS database. So the DHCP server tracks
|
|
||||||
whether or not it has updated the record in the past (this information
|
|
||||||
is stored on the lease) and does not attempt to update records that it
|
|
||||||
thinks it has already updated.
|
thinks it has already updated.
|
||||||
.PP
|
.PP
|
||||||
This can lead to cases where the DHCP server adds a record, and then
|
This can lead to cases where the DHCP server adds a record, and then
|
||||||
@ -1308,6 +1210,15 @@ never again updates the DNS because it thinks the data is already
|
|||||||
there. In this case the data can be removed from the lease through
|
there. In this case the data can be removed from the lease through
|
||||||
operator intervention, and once this has been done, the DNS will be
|
operator intervention, and once this has been done, the DNS will be
|
||||||
updated the next time the client renews.
|
updated the next time the client renews.
|
||||||
|
.PP
|
||||||
|
The interim DNS update scheme was written before the RFCs were finalized
|
||||||
|
and does not quite follow them. The RFCs call for a new DHCID RRtype
|
||||||
|
while he interim DNS update scheme uses a TXT record. In addition
|
||||||
|
the ddns-resolution draft called for the DHCP server to put a DHCID RR
|
||||||
|
on the PTR record, but the \fIinterim\fR update method does not do this.
|
||||||
|
In the final RFC this requirement was relaxed such that a server may
|
||||||
|
add a DHCID RR to the PTR record.
|
||||||
|
.PP
|
||||||
.SH DYNAMIC DNS UPDATE SECURITY
|
.SH DYNAMIC DNS UPDATE SECURITY
|
||||||
.PP
|
.PP
|
||||||
When you set your DNS server up to allow updates from the DHCP server,
|
When you set your DNS server up to allow updates from the DHCP server,
|
||||||
@ -1389,24 +1300,15 @@ Also keep in mind that zone names in your DHCP configuration should end in a
|
|||||||
configuration, zone names are not encapsulated in quotes where there are in
|
configuration, zone names are not encapsulated in quotes where there are in
|
||||||
the DNS configuration.
|
the DNS configuration.
|
||||||
.PP
|
.PP
|
||||||
You should choose your own secret key, of course. The ISC BIND 8 and
|
You should choose your own secret key, of course. The ISC BIND 9
|
||||||
9 distributions come with a program for generating secret keys called
|
distribution comes with a program for generating secret keys called
|
||||||
dnssec-keygen. The version that comes with BIND 9 is likely to produce a
|
dnssec-keygen. If you are using BIND 9\'s
|
||||||
substantially more random key, so we recommend you use that one even
|
|
||||||
if you are not using BIND 9 as your DNS server. If you are using BIND 9's
|
|
||||||
dnssec-keygen, the above key would be created as follows:
|
dnssec-keygen, the above key would be created as follows:
|
||||||
.PP
|
.PP
|
||||||
.nf
|
.nf
|
||||||
dnssec-keygen -a HMAC-MD5 -b 128 -n USER DHCP_UPDATER
|
dnssec-keygen -a HMAC-MD5 -b 128 -n USER DHCP_UPDATER
|
||||||
.fi
|
.fi
|
||||||
.PP
|
.PP
|
||||||
If you are using the BIND 8 dnskeygen program, the following command will
|
|
||||||
generate a key as seen above:
|
|
||||||
.PP
|
|
||||||
.nf
|
|
||||||
dnskeygen -H 128 -u -c -n DHCP_UPDATER
|
|
||||||
.fi
|
|
||||||
.PP
|
|
||||||
You may wish to enable logging of DNS updates on your DNS server.
|
You may wish to enable logging of DNS updates on your DNS server.
|
||||||
To do so, you might write a logging statement like the following:
|
To do so, you might write a logging statement like the following:
|
||||||
.PP
|
.PP
|
||||||
@ -1448,15 +1350,7 @@ and the expiry event, when the commitment expires.
|
|||||||
To declare a set of statements to execute when an event happens, you
|
To declare a set of statements to execute when an event happens, you
|
||||||
must use the \fBon\fR statement, followed by the name of the event,
|
must use the \fBon\fR statement, followed by the name of the event,
|
||||||
followed by a series of statements to execute when the event happens,
|
followed by a series of statements to execute when the event happens,
|
||||||
enclosed in braces. Events are used to implement DNS
|
enclosed in braces.
|
||||||
updates, so you should not define your own event handlers if you are
|
|
||||||
using the built-in DNS update mechanism.
|
|
||||||
.PP
|
|
||||||
The built-in version of the DNS update mechanism is in a text
|
|
||||||
string towards the top of server/dhcpd.c. If you want to use events
|
|
||||||
for things other than DNS updates, and you also want DNS updates, you
|
|
||||||
will have to start out by copying this code into your dhcpd.conf file
|
|
||||||
and modifying it.
|
|
||||||
.SH REFERENCE: DECLARATIONS
|
.SH REFERENCE: DECLARATIONS
|
||||||
.PP
|
.PP
|
||||||
.B The
|
.B The
|
||||||
@ -2103,7 +1997,7 @@ The \fIddns-update-style\fR parameter
|
|||||||
.PP
|
.PP
|
||||||
The
|
The
|
||||||
.I style
|
.I style
|
||||||
parameter must be one of \fBad-hoc\fR, \fBinterim\fR or \fBnone\fR.
|
parameter must be one of \fBstandard\fR, \fBinterim\fR or \fBnone\fR.
|
||||||
The \fIddns-update-style\fR statement is only meaningful in the outer
|
The \fIddns-update-style\fR statement is only meaningful in the outer
|
||||||
scope - it is evaluated once after reading the dhcpd.conf file, rather
|
scope - it is evaluated once after reading the dhcpd.conf file, rather
|
||||||
than each time a client is assigned an IP address, so there is no way
|
than each time a client is assigned an IP address, so there is no way
|
||||||
@ -2204,16 +2098,15 @@ statement
|
|||||||
.B do-forward-updates \fIflag\fB;\fR
|
.B do-forward-updates \fIflag\fB;\fR
|
||||||
.PP
|
.PP
|
||||||
The \fIdo-forward-updates\fR statement instructs the DHCP server as
|
The \fIdo-forward-updates\fR statement instructs the DHCP server as
|
||||||
to whether it should attempt to update a DHCP client's A record
|
to whether it should attempt to update a DHCP client\'s A record
|
||||||
when the client acquires or renews a lease. This statement has no
|
when the client acquires or renews a lease. This statement has no
|
||||||
effect unless DNS updates are enabled and \fBddns-update-style\fR is
|
effect unless DNS updates are enabled. Forward updates are enabled
|
||||||
set to \fBinterim\fR. Forward updates are enabled by default. If
|
by default. If this statement is used to disable forward updates,
|
||||||
this statement is used to disable forward updates, the DHCP server
|
the DHCP server will never attempt to update the client\'s A record,
|
||||||
will never attempt to update the client's A record, and will only ever
|
and will only ever attempt to update the client\'s PTR record if the
|
||||||
attempt to update the client's PTR record if the client supplies an
|
client supplies an FQDN that should be placed in the PTR record using
|
||||||
FQDN that should be placed in the PTR record using the \fBfqdn\fR option.
|
the \fBfqdn\fR option. If forward updates are enabled, the DHCP server
|
||||||
If forward updates are enabled, the DHCP server will still honor the
|
will still honor the setting of the \fBclient-updates\fR flag.
|
||||||
setting of the \fBclient-updates\fR flag.
|
|
||||||
.RE
|
.RE
|
||||||
.PP
|
.PP
|
||||||
The
|
The
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
Tables of information only used by server... */
|
Tables of information only used by server... */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2004-2011 by Internet Systems Consortium, Inc. ("ISC")
|
* Copyright (c) 2004-2011,2013 by Internet Systems Consortium, Inc. ("ISC")
|
||||||
* Copyright (c) 1995-2003 by Internet Software Consortium
|
* Copyright (c) 1995-2003 by Internet Software Consortium
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and distribute this software for any
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
@ -330,6 +330,7 @@ struct enumeration_value ddns_styles_values [] = {
|
|||||||
{ "none", 0 },
|
{ "none", 0 },
|
||||||
{ "ad-hoc", 1 },
|
{ "ad-hoc", 1 },
|
||||||
{ "interim", 2 },
|
{ "interim", 2 },
|
||||||
|
{ "standard", 3 },
|
||||||
{ (char *)0, 0 }
|
{ (char *)0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# Makefile.in generated by automake 1.13.1 from Makefile.am.
|
# Makefile.in generated by automake 1.14 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -14,23 +14,51 @@
|
|||||||
|
|
||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
am__make_dryrun = \
|
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||||
{ \
|
am__make_running_with_option = \
|
||||||
am__dry=no; \
|
case $${target_option-} in \
|
||||||
|
?) ;; \
|
||||||
|
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||||
|
"target option '$${target_option-}' specified" >&2; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
has_opt=no; \
|
||||||
|
sane_makeflags=$$MAKEFLAGS; \
|
||||||
|
if $(am__is_gnu_make); then \
|
||||||
|
sane_makeflags=$$MFLAGS; \
|
||||||
|
else \
|
||||||
case $$MAKEFLAGS in \
|
case $$MAKEFLAGS in \
|
||||||
*\\[\ \ ]*) \
|
*\\[\ \ ]*) \
|
||||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
bs=\\; \
|
||||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||||
*) \
|
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||||
for am__flg in $$MAKEFLAGS; do \
|
|
||||||
case $$am__flg in \
|
|
||||||
*=*|--*) ;; \
|
|
||||||
*n*) am__dry=yes; break;; \
|
|
||||||
esac; \
|
|
||||||
done;; \
|
|
||||||
esac; \
|
esac; \
|
||||||
test $$am__dry = yes; \
|
fi; \
|
||||||
}
|
skip_next=no; \
|
||||||
|
strip_trailopt () \
|
||||||
|
{ \
|
||||||
|
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||||
|
}; \
|
||||||
|
for flg in $$sane_makeflags; do \
|
||||||
|
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||||
|
case $$flg in \
|
||||||
|
*=*|--*) continue;; \
|
||||||
|
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||||
|
-*I?*) strip_trailopt 'I';; \
|
||||||
|
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||||
|
-*O?*) strip_trailopt 'O';; \
|
||||||
|
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||||
|
-*l?*) strip_trailopt 'l';; \
|
||||||
|
-[dEDm]) skip_next=yes;; \
|
||||||
|
-[JT]) skip_next=yes;; \
|
||||||
|
esac; \
|
||||||
|
case $$flg in \
|
||||||
|
*$$target_option*) has_opt=yes; break;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
test $$has_opt = yes
|
||||||
|
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||||
|
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
@ -589,15 +617,19 @@ $(am__aclocal_m4_deps):
|
|||||||
|
|
||||||
clean-checkPROGRAMS:
|
clean-checkPROGRAMS:
|
||||||
-test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
|
-test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
|
||||||
|
|
||||||
dhcpd_unittests$(EXEEXT): $(dhcpd_unittests_OBJECTS) $(dhcpd_unittests_DEPENDENCIES) $(EXTRA_dhcpd_unittests_DEPENDENCIES)
|
dhcpd_unittests$(EXEEXT): $(dhcpd_unittests_OBJECTS) $(dhcpd_unittests_DEPENDENCIES) $(EXTRA_dhcpd_unittests_DEPENDENCIES)
|
||||||
@rm -f dhcpd_unittests$(EXEEXT)
|
@rm -f dhcpd_unittests$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(dhcpd_unittests_LINK) $(dhcpd_unittests_OBJECTS) $(dhcpd_unittests_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(dhcpd_unittests_LINK) $(dhcpd_unittests_OBJECTS) $(dhcpd_unittests_LDADD) $(LIBS)
|
||||||
|
|
||||||
hash_unittests$(EXEEXT): $(hash_unittests_OBJECTS) $(hash_unittests_DEPENDENCIES) $(EXTRA_hash_unittests_DEPENDENCIES)
|
hash_unittests$(EXEEXT): $(hash_unittests_OBJECTS) $(hash_unittests_DEPENDENCIES) $(EXTRA_hash_unittests_DEPENDENCIES)
|
||||||
@rm -f hash_unittests$(EXEEXT)
|
@rm -f hash_unittests$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(hash_unittests_OBJECTS) $(hash_unittests_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(hash_unittests_OBJECTS) $(hash_unittests_LDADD) $(LIBS)
|
||||||
|
|
||||||
legacy_unittests$(EXEEXT): $(legacy_unittests_OBJECTS) $(legacy_unittests_DEPENDENCIES) $(EXTRA_legacy_unittests_DEPENDENCIES)
|
legacy_unittests$(EXEEXT): $(legacy_unittests_OBJECTS) $(legacy_unittests_DEPENDENCIES) $(EXTRA_legacy_unittests_DEPENDENCIES)
|
||||||
@rm -f legacy_unittests$(EXEEXT)
|
@rm -f legacy_unittests$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(legacy_unittests_OBJECTS) $(legacy_unittests_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(legacy_unittests_OBJECTS) $(legacy_unittests_LDADD) $(LIBS)
|
||||||
|
|
||||||
load_bal_unittests$(EXEEXT): $(load_bal_unittests_OBJECTS) $(load_bal_unittests_DEPENDENCIES) $(EXTRA_load_bal_unittests_DEPENDENCIES)
|
load_bal_unittests$(EXEEXT): $(load_bal_unittests_OBJECTS) $(load_bal_unittests_DEPENDENCIES) $(EXTRA_load_bal_unittests_DEPENDENCIES)
|
||||||
@rm -f load_bal_unittests$(EXEEXT)
|
@rm -f load_bal_unittests$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(load_bal_unittests_OBJECTS) $(load_bal_unittests_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(load_bal_unittests_OBJECTS) $(load_bal_unittests_LDADD) $(LIBS)
|
||||||
@ -635,14 +667,14 @@ distclean-compile:
|
|||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
||||||
|
|
||||||
.c.obj:
|
.c.obj:
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
|
|
||||||
dhcp.o: ../dhcp.c
|
dhcp.o: ../dhcp.c
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dhcp.o -MD -MP -MF $(DEPDIR)/dhcp.Tpo -c -o dhcp.o `test -f '../dhcp.c' || echo '$(srcdir)/'`../dhcp.c
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dhcp.o -MD -MP -MF $(DEPDIR)/dhcp.Tpo -c -o dhcp.o `test -f '../dhcp.c' || echo '$(srcdir)/'`../dhcp.c
|
||||||
@ -889,13 +921,12 @@ dhcpd.obj: ../dhcpd.c
|
|||||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||||
$(am__recursive_targets):
|
$(am__recursive_targets):
|
||||||
@fail= failcom='exit 1'; \
|
@fail=; \
|
||||||
for f in x $$MAKEFLAGS; do \
|
if $(am__make_keepgoing); then \
|
||||||
case $$f in \
|
failcom='fail=yes'; \
|
||||||
*=* | --[!k]*);; \
|
else \
|
||||||
*k*) failcom='fail=yes';; \
|
failcom='exit 1'; \
|
||||||
esac; \
|
fi; \
|
||||||
done; \
|
|
||||||
dot_seen=no; \
|
dot_seen=no; \
|
||||||
target=`echo $@ | sed s/-recursive//`; \
|
target=`echo $@ | sed s/-recursive//`; \
|
||||||
case "$@" in \
|
case "$@" in \
|
||||||
@ -991,7 +1022,7 @@ distclean-tags:
|
|||||||
$(MAKE) $(AM_MAKEFLAGS) $<
|
$(MAKE) $(AM_MAKEFLAGS) $<
|
||||||
|
|
||||||
# Leading 'am--fnord' is there to ensure the list of targets does not
|
# Leading 'am--fnord' is there to ensure the list of targets does not
|
||||||
# exand to empty, as could happen e.g. with make check TESTS=''.
|
# expand to empty, as could happen e.g. with make check TESTS=''.
|
||||||
am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
|
am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
|
||||||
am--force-recheck:
|
am--force-recheck:
|
||||||
@:
|
@:
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# Makefile.in generated by automake 1.13.1 from Makefile.am.
|
# Makefile.in generated by automake 1.14 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -14,23 +14,51 @@
|
|||||||
|
|
||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
am__make_dryrun = \
|
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||||
{ \
|
am__make_running_with_option = \
|
||||||
am__dry=no; \
|
case $${target_option-} in \
|
||||||
|
?) ;; \
|
||||||
|
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||||
|
"target option '$${target_option-}' specified" >&2; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
has_opt=no; \
|
||||||
|
sane_makeflags=$$MAKEFLAGS; \
|
||||||
|
if $(am__is_gnu_make); then \
|
||||||
|
sane_makeflags=$$MFLAGS; \
|
||||||
|
else \
|
||||||
case $$MAKEFLAGS in \
|
case $$MAKEFLAGS in \
|
||||||
*\\[\ \ ]*) \
|
*\\[\ \ ]*) \
|
||||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
bs=\\; \
|
||||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||||
*) \
|
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||||
for am__flg in $$MAKEFLAGS; do \
|
|
||||||
case $$am__flg in \
|
|
||||||
*=*|--*) ;; \
|
|
||||||
*n*) am__dry=yes; break;; \
|
|
||||||
esac; \
|
|
||||||
done;; \
|
|
||||||
esac; \
|
esac; \
|
||||||
test $$am__dry = yes; \
|
fi; \
|
||||||
}
|
skip_next=no; \
|
||||||
|
strip_trailopt () \
|
||||||
|
{ \
|
||||||
|
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||||
|
}; \
|
||||||
|
for flg in $$sane_makeflags; do \
|
||||||
|
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||||
|
case $$flg in \
|
||||||
|
*=*|--*) continue;; \
|
||||||
|
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||||
|
-*I?*) strip_trailopt 'I';; \
|
||||||
|
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||||
|
-*O?*) strip_trailopt 'O';; \
|
||||||
|
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||||
|
-*l?*) strip_trailopt 'l';; \
|
||||||
|
-[dEDm]) skip_next=yes;; \
|
||||||
|
-[JT]) skip_next=yes;; \
|
||||||
|
esac; \
|
||||||
|
case $$flg in \
|
||||||
|
*$$target_option*) has_opt=yes; break;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
test $$has_opt = yes
|
||||||
|
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||||
|
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
@ -295,6 +323,7 @@ $(am__aclocal_m4_deps):
|
|||||||
|
|
||||||
clean-checkLIBRARIES:
|
clean-checkLIBRARIES:
|
||||||
-test -z "$(check_LIBRARIES)" || rm -f $(check_LIBRARIES)
|
-test -z "$(check_LIBRARIES)" || rm -f $(check_LIBRARIES)
|
||||||
|
|
||||||
libt_api.a: $(libt_api_a_OBJECTS) $(libt_api_a_DEPENDENCIES) $(EXTRA_libt_api_a_DEPENDENCIES)
|
libt_api.a: $(libt_api_a_OBJECTS) $(libt_api_a_DEPENDENCIES) $(EXTRA_libt_api_a_DEPENDENCIES)
|
||||||
$(AM_V_at)-rm -f libt_api.a
|
$(AM_V_at)-rm -f libt_api.a
|
||||||
$(AM_V_AR)$(libt_api_a_AR) libt_api.a $(libt_api_a_OBJECTS) $(libt_api_a_LIBADD)
|
$(AM_V_AR)$(libt_api_a_AR) libt_api.a $(libt_api_a_OBJECTS) $(libt_api_a_LIBADD)
|
||||||
@ -314,14 +343,14 @@ distclean-compile:
|
|||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
||||||
|
|
||||||
.c.obj:
|
.c.obj:
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
|
|
||||||
ID: $(am__tagged_files)
|
ID: $(am__tagged_files)
|
||||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||||
|
Loading…
x
Reference in New Issue
Block a user