diff --git a/Makefile.am b/Makefile.am index 65b6ba2..b1f14be 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,7 @@ ## Makefile.am -- Process this file with automake to produce Makefile.in AUTOMAKE_OPTIONS = gnu +ACLOCAL_AMFLAGS = -I m4 EXTRA_DIST = \ .version \ @@ -39,7 +40,7 @@ edit_cmd = sed \ $(PATHFILES): Makefile @ rm -f $@ $@.tmp - $(AM_V_at) mkdir -p $$(dirname $@) + $(AM_V_at) test -d $(dir $@) || mkdir -p $(dir $@) $(AM_V_GEN) srcdir=''; \ test -f ./$@.in || srcdir=$(srcdir)/; \ $(edit_cmd) $${srcdir}$@.in >$@.tmp diff --git a/NEWS b/NEWS index 624e0f2..7e9a424 100644 --- a/NEWS +++ b/NEWS @@ -7,40 +7,6 @@ Please send dhcpd-pools bug reports to kerolasa@iki.fi. gpg: Signature is crated using RSA key ID 8ED396E37E38D471A00530D3A9553245FDE9B739. - -Version 3.3 -Belkacem Daheb (2): - add start, end and hostname printing support for xml and json - getdata output: add start, end and hostname printing support for xml and json - -M. van Brummelen (1): - docs: fix manual page groff warning - -Sami Kerola (9): - update project web page - website: use https - chore: update web links - getdata: only emit warning when config include file cannot be read - gnulib: update bootstrap and gitignore files - build-sys: quote subshell execution in the autotools file - build-sys: update bootstrap from gnulib - output: update html javascripts - release: 3.3 - -luisδμ (1): - fix: avoid generation of unvalid JSON in summary - -Version 3.2 -Jean Benoit (1): - contrib: snmptest.pl SNMPwalk can't access to all variables/wrong sort - -Sami Kerola (5): - contrib: point out where one can find zabbix template - build-sys: update .gitignore files - config: remove unnecessary padding - build-sys: autotools and gnulib related updates - build-sys: routine update - release: 3.2 Version 3.1 Mark Sangster (1): diff --git a/README b/README index 5953fba..6a9ae41 100644 --- a/README +++ b/README @@ -28,7 +28,7 @@ Quick start. Dependencies to other projects. - https://www.gnu.org/software/gnulib/ + http://www.gnu.org/software/gnulib/ You can avoid repeated gnulib downloads by setting GNULIB_SRCDIR environment variable. For example: @@ -39,7 +39,7 @@ Dependencies to other projects. Assumign detached gnulib please remember to git pull the latest updates before building dhcpd-pools. - https://troydhanson.github.io/uthash/ + http://uthash.sourceforge.net/ See quick start. diff --git a/THANKS b/THANKS index 2aec631..e91502a 100644 --- a/THANKS +++ b/THANKS @@ -47,8 +47,3 @@ José Bollo Sebastián Cramatte Mark Sangster Brent Swingle -Mathieu Morier -Jean Benoit -Belkacem Daheb -Björn Lässig -Luisδμ diff --git a/bootstrap b/bootstrap index 6f289d7..3d1bc08 100755 --- a/bootstrap +++ b/bootstrap @@ -1,67 +1,34 @@ #! /bin/sh -# DO NOT EDIT! GENERATED AUTOMATICALLY! +# Print a version string. +scriptversion=2019-01-04.17; # UTC # Bootstrap this package from checked-out sources. -scriptversion=2024-07-04.10; # UTC +# Copyright (C) 2003-2020 Free Software Foundation, Inc. -# Copyright (C) 2003-2025 Free Software Foundation, Inc. -# # 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 3 of the License, 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 . # Originally written by Paul Eggert. The canonical version of this -# script is maintained as top/bootstrap in gnulib. However, to be -# useful to your package, you should place a copy of it under version -# control in the top-level directory of your package. The intent is -# that all customization can be done with a bootstrap.conf file also -# maintained in your version control; gnulib comes with a template -# build-aux/bootstrap.conf to get you started. - -# Please report bugs or propose patches to bug-gnulib@gnu.org. - -me="$0" -medir=`dirname "$me"` - -# Read the function library and the configuration. - -# A library of shell functions for autopull.sh, autogen.sh, and bootstrap. - -scriptlibversion=2025-02-16.12; # UTC - -# Copyright (C) 2003-2025 Free Software Foundation, Inc. -# -# 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 3 of the License, 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 . - -# Originally written by Paul Eggert. The canonical version of this -# script is maintained as top/bootstrap-funclib.sh in gnulib. However, -# to be useful to your package, you should place a copy of it under -# version control in the top-level directory of your package. The +# script is maintained as build-aux/bootstrap in gnulib, however, to +# be useful to your project, you should place a copy of it under +# version control in the top-level directory of your project. The # intent is that all customization can be done with a bootstrap.conf # file also maintained in your version control; gnulib comes with a # template build-aux/bootstrap.conf to get you started. +# Please report bugs or propose patches to bug-gnulib@gnu.org. + nl=' ' @@ -69,17 +36,82 @@ nl=' LC_ALL=C export LC_ALL +# Ensure that CDPATH is not set. Otherwise, the output from cd +# would cause trouble in at least one use below. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +local_gl_dir=gl + # Honor $PERL, but work even if there is none. PERL="${PERL-perl}" -default_gnulib_url=https://git.savannah.gnu.org/git/gnulib.git +me=$0 -# Copyright year, for the --version output. -copyright_year=`echo "$scriptlibversion" | sed -e 's/[^0-9].*//'` -copyright="Copyright (C) ${copyright_year} Free Software Foundation, Inc. -License GPLv3+: GNU GPL version 3 or later . -This is free software: you are free to change and redistribute it. -There is NO WARRANTY, to the extent permitted by law." +default_gnulib_url=git://git.sv.gnu.org/gnulib + +usage() { + cat </dev/null) -if test -z "$package"; then - package=$(sed -n "$extract_package_name" configure.ac) \ - || die 'cannot find package name in configure.ac' -fi -package=$(echo "$package" | sed "$normalize_package_name") +package=$(sed -n "$extract_package_name" configure.ac) \ + || die 'cannot find package name in configure.ac' gnulib_name=lib$package build_aux=build-aux @@ -215,12 +225,14 @@ COPYRIGHT_HOLDER='Free Software Foundation, Inc.' MSGID_BUGS_ADDRESS=bug-$package@gnu.org # Files we don't want to import. -# XXX Not used. excluded_files= # File that should exist in the top directory of a checked out hierarchy, # but not in a distribution tarball. -checkout_only_file=project.doap +checkout_only_file=TODO + +# Whether to use copies instead of symlinks. +copy=false # Set this to '.cvsignore .gitignore' in bootstrap.conf if you want # those files to be generated in directories like lib/, m4/, and po/. @@ -232,13 +244,8 @@ vc_ignore=auto # default. bootstrap_sync=false -# Override the default configuration, if necessary. -# Make sure that bootstrap.conf is sourced from the current directory -# if we were invoked as "sh bootstrap". -conffile=`dirname "$me"`/bootstrap.conf -test -r "$conffile" && . "$conffile" - -# ------------------------- Build-time prerequisites ------------------------- +# Use git to update gnulib sources +use_git=true check_exists() { if test "$1" = "--verbose"; then @@ -255,6 +262,151 @@ check_exists() { test $? -lt 126 } +# find_tool ENVVAR NAMES... +# ------------------------- +# Search for a required program. Use the value of ENVVAR, if set, +# otherwise find the first of the NAMES that can be run. +# If found, set ENVVAR to the program name, die otherwise. +# +# FIXME: code duplication, see also gnu-web-doc-update. +find_tool () +{ + find_tool_envvar=$1 + shift + find_tool_names=$@ + eval "find_tool_res=\$$find_tool_envvar" + if test x"$find_tool_res" = x; then + for i; do + if check_exists $i; then + find_tool_res=$i + break + fi + done + fi + if test x"$find_tool_res" = x; then + warn_ "one of these is required: $find_tool_names;" + die "alternatively set $find_tool_envvar to a compatible tool" + fi + eval "$find_tool_envvar=\$find_tool_res" + eval "export $find_tool_envvar" +} + +# Override the default configuration, if necessary. +# Make sure that bootstrap.conf is sourced from the current directory +# if we were invoked as "sh bootstrap". +case "$0" in + */*) test -r "$0.conf" && . "$0.conf" ;; + *) test -r "$0.conf" && . ./"$0.conf" ;; +esac + +if test "$vc_ignore" = auto; then + vc_ignore= + test -d .git && vc_ignore=.gitignore + test -d CVS && vc_ignore="$vc_ignore .cvsignore" +fi + +if test x"$gnulib_modules$gnulib_files$gnulib_extra_files" = x; then + use_gnulib=false +else + use_gnulib=true +fi + +# Translate configuration into internal form. + +# Parse options. + +for option +do + case $option in + --help) + usage + exit;; + --gnulib-srcdir=*) + GNULIB_SRCDIR=${option#--gnulib-srcdir=};; + --skip-po) + SKIP_PO=t;; + --force) + checkout_only_file=;; + --copy) + copy=true;; + --bootstrap-sync) + bootstrap_sync=true;; + --no-bootstrap-sync) + bootstrap_sync=false;; + --no-git) + use_git=false;; + *) + die "$option: unknown option";; + esac +done + +$use_git || test -d "$GNULIB_SRCDIR" \ + || die "Error: --no-git requires --gnulib-srcdir" + +if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then + die "Bootstrapping from a non-checked-out distribution is risky." +fi + +# Strip blank and comment lines to leave significant entries. +gitignore_entries() { + sed '/^#/d; /^$/d' "$@" +} + +# If $STR is not already on a line by itself in $FILE, insert it at the start. +# Entries are inserted at the start of the ignore list to ensure existing +# entries starting with ! are not overridden. Such entries support +# whitelisting exceptions after a more generic blacklist pattern. +insert_if_absent() { + file=$1 + str=$2 + test -f $file || touch $file + test -r $file || die "Error: failed to read ignore file: $file" + duplicate_entries=$(gitignore_entries $file | sort | uniq -d) + if [ "$duplicate_entries" ] ; then + die "Error: Duplicate entries in $file: " $duplicate_entries + fi + linesold=$(gitignore_entries $file | wc -l) + linesnew=$( { echo "$str"; cat $file; } | gitignore_entries | sort -u | wc -l) + if [ $linesold != $linesnew ] ; then + { echo "$str" | cat - $file > $file.bak && mv $file.bak $file; } \ + || die "insert_if_absent $file $str: failed" + fi +} + +# Adjust $PATTERN for $VC_IGNORE_FILE and insert it with +# insert_if_absent. +insert_vc_ignore() { + vc_ignore_file="$1" + pattern="$2" + case $vc_ignore_file in + *.gitignore) + # A .gitignore entry that does not start with '/' applies + # recursively to subdirectories, so prepend '/' to every + # .gitignore entry. + pattern=$(echo "$pattern" | sed s,^,/,);; + esac + insert_if_absent "$vc_ignore_file" "$pattern" +} + +# Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac. +found_aux_dir=no +grep '^[ ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'\])' configure.ac \ + >/dev/null && found_aux_dir=yes +grep '^[ ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \ + >/dev/null && found_aux_dir=yes +test $found_aux_dir = yes \ + || die "configure.ac lacks 'AC_CONFIG_AUX_DIR([$build_aux])'; add it" + +# If $build_aux doesn't exist, create it now, otherwise some bits +# below will malfunction. If creating it, also mark it as ignored. +if test ! -d $build_aux; then + mkdir $build_aux + for dot_ig in x $vc_ignore; do + test $dot_ig = x && continue + insert_vc_ignore $dot_ig $build_aux + done +fi + # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old @@ -282,7 +434,7 @@ sort_ver() { # sort -V is not generally available elif [ "$p2" -gt "$p1" ] 2>/dev/null; then # numeric comparison echo "$1 $2" else # numeric, then lexicographic comparison - lp=$(printf "%s\n%s\n" "$p1" "$p2" | LANG=C sort -n | tail -n1) + lp=$(printf "$p1\n$p2\n" | LANG=C sort -n | tail -n1) if [ "$lp" = "$p2" ]; then echo "$1 $2" else @@ -329,9 +481,9 @@ check_versions() { if test "$app" = libtool; then app=libtoolize fi - # Exempt git if git is not needed. + # Exempt git if --no-git is in effect. if test "$app" = git; then - $check_git || continue + $use_git || continue fi # Honor $APP variables ($TAR, $AUTOCONF, etc.) appvar=$(echo $app | LC_ALL=C tr '[a-z]-' '[A-Z]_') @@ -345,7 +497,7 @@ check_versions() { # Handle the still-experimental Automake-NG programs specially. # They remain named as the mainstream Automake programs ("automake", # and "aclocal") to avoid gratuitous incompatibilities with - # preexisting usages (by, say, autoreconf, or custom autogen.sh + # pre-existing usages (by, say, autoreconf, or custom autogen.sh # scripts), but correctly identify themselves (as being part of # "GNU automake-ng") when asked their version. case $app in @@ -404,86 +556,81 @@ print_versions() { # can't depend on column -t } -# check_build_prerequisites check_git -check_build_prerequisites() -{ - check_git="$1" +# Find sha1sum, named gsha1sum on MacPorts, shasum on Mac OS X 10.6. +# Also find the compatible sha1 utility on the BSDs +if test x"$SKIP_PO" = x; then + find_tool SHA1SUM sha1sum gsha1sum shasum sha1 +fi - # gnulib-tool requires at least automake and autoconf. - # If either is not listed, add it (with minimum version) as a prerequisite. +use_libtool=0 +# We'd like to use grep -E, to see if any of LT_INIT, +# AC_PROG_LIBTOOL, AM_PROG_LIBTOOL is used in configure.ac, +# but that's not portable enough (e.g., for Solaris). +grep '^[ ]*A[CM]_PROG_LIBTOOL' configure.ac >/dev/null \ + && use_libtool=1 +grep '^[ ]*LT_INIT' configure.ac >/dev/null \ + && use_libtool=1 +if test $use_libtool = 1; then + find_tool LIBTOOLIZE glibtoolize libtoolize +fi + +# gnulib-tool requires at least automake and autoconf. +# If either is not listed, add it (with minimum version) as a prerequisite. +case $buildreq in + *automake*) ;; + *) buildreq="automake 1.9 +$buildreq" ;; +esac +case $buildreq in + *autoconf*) ;; + *) buildreq="autoconf 2.59 +$buildreq" ;; +esac + +# When we can deduce that gnulib-tool will require patch, +# and when patch is not already listed as a prerequisite, add it, too. +if test -d "$local_gl_dir" \ + && ! find "$local_gl_dir" -name '*.diff' -exec false {} +; then case $buildreq in - *automake*) ;; - *) buildreq="automake 1.9 -$buildreq" ;; - esac - case $buildreq in - *autoconf*) ;; - *) buildreq="autoconf 2.59 + *patch*) ;; + *) buildreq="patch - $buildreq" ;; esac +fi - # When we can deduce that gnulib-tool will require patch, - # and when patch is not already listed as a prerequisite, add it, too. - if test -d "$local_gl_dir" \ - && ! find "$local_gl_dir" -name '*.diff' -exec false {} +; then - case $buildreq in - *patch*) ;; - *) buildreq="patch - -$buildreq" ;; - esac +if ! printf "$buildreq" | check_versions; then + echo >&2 + if test -f README-prereq; then + die "See README-prereq for how to get the prerequisite programs" + else + die "Please install the prerequisite programs" fi +fi - if ! printf '%s' "$buildreq" | check_versions; then - echo >&2 - if test -f README-prereq; then - die "See README-prereq for how to get the prerequisite programs" - else - die "Please install the prerequisite programs" - fi +# Warn the user if autom4te appears to be broken; this causes known +# issues with at least gettext 0.18.3. +probe=$(echo 'm4_quote([hi])' | autom4te -l M4sugar -t 'm4_quote:$%' -) +if test "x$probe" != xhi; then + warn_ "WARNING: your autom4te wrapper eats stdin;" + warn_ "if bootstrap fails, consider upgrading your autotools" +fi + +echo "$0: Bootstrapping from checked-out $package sources..." + +# See if we can use gnulib's git-merge-changelog merge driver. +if $use_git && test -d .git && check_exists git; then + if git config merge.merge-changelog.driver >/dev/null ; then + : + elif check_exists git-merge-changelog; then + echo "$0: initializing git-merge-changelog driver" + git config merge.merge-changelog.name 'GNU-style ChangeLog merge driver' + git config merge.merge-changelog.driver 'git-merge-changelog %O %A %B' + else + echo "$0: consider installing git-merge-changelog from gnulib" fi +fi - # Warn the user if autom4te appears to be broken; this causes known - # issues with at least gettext 0.18.3. - probe=$(echo 'm4_quote([hi])' | autom4te -l M4sugar -t 'm4_quote:$%' -) - if test "x$probe" != xhi; then - warn_ "WARNING: your autom4te wrapper eats stdin;" - warn_ "if bootstrap fails, consider upgrading your autotools" - fi -} -# find_tool ENVVAR NAMES... -# ------------------------- -# Search for a required program. Use the value of ENVVAR, if set, -# otherwise find the first of the NAMES that can be run. -# If found, set ENVVAR to the program name, die otherwise. -# -# FIXME: code duplication, see also gnu-web-doc-update. -find_tool () -{ - find_tool_envvar=$1 - shift - find_tool_names=$@ - eval "find_tool_res=\$$find_tool_envvar" - if test x"$find_tool_res" = x; then - for i; do - if check_exists $i; then - find_tool_res=$i - break - fi - done - fi - if test x"$find_tool_res" = x; then - warn_ "one of these is required: $find_tool_names;" - die "alternatively set $find_tool_envvar to a compatible tool" - fi - eval "$find_tool_envvar=\$find_tool_res" - eval "export $find_tool_envvar" -} - -# --------------------- Preparing GNULIB_SRCDIR for use. --------------------- -# This is part of autopull.sh, but bootstrap needs it too, for self-upgrading. - -# cleanup_gnulib fails, removing the directory $gnulib_path first. cleanup_gnulib() { status=$? rm -fr "$gnulib_path" @@ -494,421 +641,95 @@ git_modules_config () { test -f .gitmodules && git config --file .gitmodules "$@" } -prepare_GNULIB_SRCDIR () -{ - if test -n "$GNULIB_SRCDIR"; then - # Use GNULIB_SRCDIR directly. - # We already checked that $GNULIB_SRCDIR references a directory. - # Verify that it contains a gnulib checkout. - test -f "$GNULIB_SRCDIR/gnulib-tool" \ - || die "Error: --gnulib-srcdir or \$GNULIB_SRCDIR is specified," \ - "but does not contain gnulib-tool" - if test -n "$GNULIB_REVISION" && $use_git; then - # The 'git checkout "$GNULIB_REVISION"' command succeeds if the - # GNULIB_REVISION is a commit hash that exists locally, or if it is - # branch name that can be fetched from origin. It fails, however, - # if the GNULIB_REVISION is a commit hash that only exists in - # origin. In this case, we need a 'git fetch' and then retry - # 'git checkout "$GNULIB_REVISION"'. - git -C "$GNULIB_SRCDIR" checkout "$GNULIB_REVISION" 2>/dev/null \ - || { git -C "$GNULIB_SRCDIR" fetch origin \ - && git -C "$GNULIB_SRCDIR" checkout "$GNULIB_REVISION"; } \ - || exit $? - fi - else - if ! $use_git; then - die "Error: --no-git is specified," \ - "but neither --gnulib-srcdir nor \$GNULIB_SRCDIR is specified" - fi - if git submodule -h | grep -- --reference > /dev/null; then - : - else - die "git version is too old, git >= 1.6.4 is required" - fi +if $use_gnulib; then + if $use_git; then gnulib_path=$(git_modules_config submodule.gnulib.path) - if test -n "$gnulib_path"; then - # A submodule 'gnulib' is configured. - # Get gnulib files. Populate $gnulib_path, updating the submodule. - if test -n "$GNULIB_REFDIR" && test -d "$GNULIB_REFDIR"/.git; then - # Use GNULIB_REFDIR as a reference. - echo "$0: getting gnulib files..." - git submodule update --init --reference "$GNULIB_REFDIR" "$gnulib_path"\ - || exit $? + test -z "$gnulib_path" && gnulib_path=gnulib + fi + + # Get gnulib files. Populate $GNULIB_SRCDIR, possibly updating a + # submodule, for use in the rest of the script. + + case ${GNULIB_SRCDIR--} in + -) + # Note that $use_git is necessarily true in this case. + if git_modules_config submodule.gnulib.url >/dev/null; then + echo "$0: getting gnulib files..." + git submodule init -- "$gnulib_path" || exit $? + git submodule update -- "$gnulib_path" || exit $? + + elif [ ! -d "$gnulib_path" ]; then + echo "$0: getting gnulib files..." + + trap cleanup_gnulib 1 2 13 15 + + shallow= + if test -z "$GNULIB_REVISION"; then + git clone -h 2>&1 | grep -- --depth > /dev/null && shallow='--depth 2' + fi + git clone $shallow ${GNULIB_URL:-$default_gnulib_url} "$gnulib_path" \ + || cleanup_gnulib + + trap - 1 2 13 15 + fi + GNULIB_SRCDIR=$gnulib_path + ;; + *) + # Use GNULIB_SRCDIR directly or as a reference. + if $use_git && test -d "$GNULIB_SRCDIR"/.git && \ + git_modules_config submodule.gnulib.url >/dev/null; then + echo "$0: getting gnulib files..." + if git submodule -h|grep -- --reference > /dev/null; then + # Prefer the one-liner available in git 1.6.4 or newer. + git submodule update --init --reference "$GNULIB_SRCDIR" \ + "$gnulib_path" || exit $? else - # GNULIB_REFDIR is not set or not usable. Ignore it. - if git_modules_config submodule.gnulib.url >/dev/null; then - echo "$0: getting gnulib files..." - git submodule init -- "$gnulib_path" || exit $? + # This fallback allows at least git 1.5.5. + if test -f "$gnulib_path"/gnulib-tool; then + # Since file already exists, assume submodule init already complete. git submodule update -- "$gnulib_path" || exit $? else - die "Error: submodule 'gnulib' has no configured url" - fi - fi - else - gnulib_path='gnulib' - if test ! -d "$gnulib_path"; then - # The subdirectory 'gnulib' does not yet exist. Clone into it. - echo "$0: getting gnulib files..." - trap cleanup_gnulib HUP INT PIPE TERM - gnulib_url=${GNULIB_URL:-$default_gnulib_url} - if test -n "$GNULIB_REFDIR" && test -d "$GNULIB_REFDIR"/.git; then - # Use GNULIB_REFDIR as a reference. - git clone "$GNULIB_REFDIR" "$gnulib_path" \ - && git -C "$gnulib_path" remote set-url origin "$gnulib_url" \ - && if test -z "$GNULIB_REVISION"; then - git -C "$gnulib_path" pull origin \ - && { - # We want the default branch of "$gnulib_url" (since that's - # the behaviour if GNULIB_REFDIR is not specified), not the - # current branch of "$GNULIB_REFDIR". - default_branch=`LC_ALL=C git -C "$gnulib_path" \ - remote show origin \ - | sed -n -e 's/^ *HEAD branch: //p'` - test -n "$default_branch" || default_branch='master' - git -C "$gnulib_path" checkout "$default_branch" - } - else - # The 'git checkout "$GNULIB_REVISION"' command succeeds if the - # GNULIB_REVISION is a commit hash that exists locally, or if it - # is a branch name that can be fetched from origin. It fails, - # however, if the GNULIB_REVISION is a commit hash that only - # exists in origin. In this case, we need a 'git fetch' and then - # retry 'git checkout "$GNULIB_REVISION"'. - git -C "$gnulib_path" checkout "$GNULIB_REVISION" 2>/dev/null \ - || { git -C "$gnulib_path" fetch origin \ - && git -C "$gnulib_path" checkout "$GNULIB_REVISION"; } - fi \ - || cleanup_gnulib - else - # GNULIB_REFDIR is not set or not usable. Ignore it. - shallow='--depth 2' - if test -z "$GNULIB_REVISION"; then - git clone $shallow "$gnulib_url" "$gnulib_path" \ - || cleanup_gnulib - else - # Only want a shallow checkout of $GNULIB_REVISION, but git does not - # support cloning by commit hash. So attempt a shallow fetch by - # commit hash to minimize the amount of data downloaded and changes - # needed to be processed, which can drastically reduce download and - # processing time for checkout. If the fetch by commit fails, a - # shallow fetch cannot be performed because we do not know what the - # depth of the commit is without fetching all commits. So fall back - # to fetching all commits. - # $GNULIB_REVISION can be a commit id, a tag name, or a branch name. - mkdir -p "$gnulib_path" - # Use a -c option to silence an annoying message - # "hint: Using 'master' as the name for the initial branch." - # (cf. ). - git -C "$gnulib_path" -c init.defaultBranch=master init - git -C "$gnulib_path" remote add origin "$gnulib_url" - if git -C "$gnulib_path" fetch $shallow origin "$GNULIB_REVISION" - then - # "git fetch" of the specific commit succeeded. - git -C "$gnulib_path" reset --hard FETCH_HEAD \ - || cleanup_gnulib - # "git fetch" does not fetch tags (at least in git version 2.43). - # If $GNULIB_REVISION is a tag (not a commit id or branch name), - # add the tag explicitly. - revision=`git -C "$gnulib_path" log -1 --pretty=format:%H` - branch=`LC_ALL=C git -C "$gnulib_path" remote show origin \ - | sed -n -e 's/^ \([^ ]*\) * tracked$/\1/p'` - test "$revision" = "$GNULIB_REVISION" \ - || test "$branch" = "$GNULIB_REVISION" \ - || git -C "$gnulib_path" tag "$GNULIB_REVISION" - else - # Fetch the entire repository. - git -C "$gnulib_path" fetch origin \ - || cleanup_gnulib - git -C "$gnulib_path" checkout "$GNULIB_REVISION" \ - || cleanup_gnulib - fi - fi - fi - trap - HUP INT PIPE TERM - else - # The subdirectory 'gnulib' already exists. - if test -n "$GNULIB_REVISION"; then - if test -d "$gnulib_path/.git"; then - # The 'git checkout "$GNULIB_REVISION"' command succeeds if the - # GNULIB_REVISION is a commit hash that exists locally, or if it - # is a branch name that can be fetched from origin. It fails, - # however, if the GNULIB_REVISION is a commit hash that only - # exists in origin. In this case, we need a 'git fetch' and then - # retry 'git checkout "$GNULIB_REVISION"'. - git -C "$gnulib_path" checkout "$GNULIB_REVISION" 2>/dev/null \ - || { git -C "$gnulib_path" fetch origin \ - && git -C "$gnulib_path" checkout "$GNULIB_REVISION"; } \ + # Older git can't clone into an empty directory. + rmdir "$gnulib_path" 2>/dev/null + git clone --reference "$GNULIB_SRCDIR" \ + "$(git_modules_config submodule.gnulib.url)" "$gnulib_path" \ + && git submodule init -- "$gnulib_path" \ + && git submodule update -- "$gnulib_path" \ || exit $? - else - die "Error: GNULIB_REVISION is specified in bootstrap.conf," \ - "but '$gnulib_path' contains no git history" - fi fi fi + GNULIB_SRCDIR=$gnulib_path fi - # Verify that $gnulib_path contains a gnulib checkout. - test -f "$gnulib_path/gnulib-tool" \ - || die "Error: '$gnulib_path' is supposed to contain a gnulib checkout," \ - "but does not contain gnulib-tool" - GNULIB_SRCDIR=$gnulib_path - fi - # $GNULIB_SRCDIR now points to the version of gnulib to use, and - # we no longer need to use git or $gnulib_path below here. -} - -# -------- Upgrading bootstrap to the version found in GNULIB_SRCDIR. -------- - -upgrade_bootstrap () -{ - if test -f "$medir"/bootstrap-funclib.sh; then - update_lib=true - { cmp -s "$medir"/bootstrap "$GNULIB_SRCDIR/top/bootstrap" \ - && cmp -s "$medir"/bootstrap-funclib.sh \ - "$GNULIB_SRCDIR/top/bootstrap-funclib.sh" \ - && cmp -s "$medir"/autopull.sh "$GNULIB_SRCDIR/top/autopull.sh" \ - && cmp -s "$medir"/autogen.sh "$GNULIB_SRCDIR/top/autogen.sh"; \ - } - else - update_lib=false - cmp -s "$medir"/bootstrap "$GNULIB_SRCDIR/build-aux/bootstrap" - fi || { - if $update_lib; then - echo "$0: updating bootstrap & companions and restarting..." - else - echo "$0: updating bootstrap and restarting..." - fi - case $(sh -c 'echo "$1"' -- a) in - a) ignored=--;; - *) ignored=ignored;; - esac - u=$update_lib - exec sh -c \ - '{ if '$u' && test -f "$1"; then cp "$1" "$3"; else cp "$2" "$3"; fi; } && - { if '$u' && test -f "$4"; then cp "$4" "$5"; else rm -f "$5"; fi; } && - { if '$u' && test -f "$6"; then cp "$6" "$7"; else rm -f "$7"; fi; } && - { if '$u' && test -f "$8"; then cp "$8" "$9"; else rm -f "$9"; fi; } && - shift && shift && shift && shift && shift && - shift && shift && shift && shift && - exec "${CONFIG_SHELL-/bin/sh}" "$@"' \ - $ignored \ - "$GNULIB_SRCDIR/top/bootstrap" "$GNULIB_SRCDIR/build-aux/bootstrap" \ - "$medir/bootstrap" \ - "$GNULIB_SRCDIR/top/bootstrap-funclib.sh" "$medir/bootstrap-funclib.sh" \ - "$GNULIB_SRCDIR/top/autopull.sh" "$medir/autopull.sh" \ - "$GNULIB_SRCDIR/top/autogen.sh" "$medir/autogen.sh" \ - "$0" "$@" --no-bootstrap-sync - } -} - -# ---------------------------------------------------------------------------- - -if test x"$gnulib_modules$gnulib_files$gnulib_extra_files" = x; then - use_gnulib=false -else - use_gnulib=true -fi - -# -------- Fetch auxiliary files from the network. -------------------------- - -autopull_usage() { - cat </dev/null 2>&1 && unset CDPATH - - # Parse options. - - # Use git to update gnulib sources - use_git=true - - for option - do - case $option in - --help) - autopull_usage - return;; - --version) - set -e - echo "autopull.sh $scriptlibversion" - echo "$copyright" - return 0 - ;; - --skip-po) - SKIP_PO=t;; - --force) - checkout_only_file=;; - --bootstrap-sync) - bootstrap_sync=true;; - --no-bootstrap-sync) - bootstrap_sync=false;; - --no-git) - use_git=false;; - *) - bootstrap_option_hook $option || die "$option: unknown option";; - esac - done - - $use_git || test -n "$GNULIB_SRCDIR" \ - || die "Error: --no-git requires \$GNULIB_SRCDIR environment variable" \ - "or --gnulib-srcdir option" - test -z "$GNULIB_SRCDIR" || test -d "$GNULIB_SRCDIR" \ - || die "Error: \$GNULIB_SRCDIR environment variable" \ - "or --gnulib-srcdir option is specified," \ - "but does not denote a directory" - - if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then - die "Running this script from a non-checked-out distribution is risky." - fi - - check_build_prerequisites $use_git - - if $use_gnulib || $bootstrap_sync; then - prepare_GNULIB_SRCDIR - if $bootstrap_sync; then - upgrade_bootstrap "$@" - fi - fi - - # Find sha1sum, named gsha1sum on MacPorts, shasum on Mac OS X 10.6. - # Also find the compatible sha1 utility on the BSDs - if test x"$SKIP_PO" = x; then - find_tool SHA1SUM sha1sum gsha1sum shasum sha1 - fi - - # See if we can use gnulib's git-merge-changelog merge driver. - if $use_git && test -d .git && check_exists git; then - if git config merge.merge-changelog.driver >/dev/null ; then - : - elif check_exists git-merge-changelog; then - echo "$0: initializing git-merge-changelog driver" - git config merge.merge-changelog.name 'GNU-style ChangeLog merge driver' - git config merge.merge-changelog.driver 'git-merge-changelog %O %A %B' - else - echo "$0: consider installing git-merge-changelog from gnulib" - fi - fi - - case $SKIP_PO in - '') - if test -d po; then - update_po_files po $package || return - fi - - if test -d runtime-po; then - update_po_files runtime-po $package-runtime || return - fi;; + ;; esac - # --------------------------------------------------------------------------- - - bootstrap_post_pull_hook \ - || die "bootstrap_post_pull_hook failed" - - # Don't proceed if there are uninitialized submodules. In particular, - # autogen.sh will remove dangling links, which might be links into - # uninitialized submodules. - # But it's OK if the 'gnulib' submodule is uninitialized, as long as - # GNULIB_SRCDIR is set. - if $use_git; then - # Uninitialized submodules are listed with an initial dash. - uninitialized=`git submodule | grep '^-' | awk '{ print $2 }'` - if test -n "$GNULIB_SRCDIR"; then - uninitialized=`echo "$uninitialized" | grep -v '^gnulib$'` - fi - if test -n "$uninitialized"; then - uninit_comma=`echo "$uninitialized" | tr '\n' ',' | sed -e 's|,$|.|'` - die "Some git submodules are not initialized: "$uninit_comma \ - "Either use option '--no-git'," \ - "or run 'git submodule update --init' and bootstrap again." - fi + if test -d "$GNULIB_SRCDIR"/.git && test -n "$GNULIB_REVISION" \ + && ! git_modules_config submodule.gnulib.url >/dev/null; then + (cd "$GNULIB_SRCDIR" && git checkout "$GNULIB_REVISION") || cleanup_gnulib fi - if test -f "$medir"/autogen.sh; then - echo "$0: done. Now you can run '$medir/autogen.sh'." - fi -} + # $GNULIB_SRCDIR now points to the version of gnulib to use, and + # we no longer need to use git or $gnulib_path below here. -# ----------------------------- Get translations. ----------------------------- + if $bootstrap_sync; then + cmp -s "$0" "$GNULIB_SRCDIR/build-aux/bootstrap" || { + echo "$0: updating bootstrap and restarting..." + case $(sh -c 'echo "$1"' -- a) in + a) ignored=--;; + *) ignored=ignored;; + esac + exec sh -c \ + 'cp "$1" "$2" && shift && exec "${CONFIG_SHELL-/bin/sh}" "$@"' \ + $ignored "$GNULIB_SRCDIR/build-aux/bootstrap" \ + "$0" "$@" --no-bootstrap-sync + } + fi + + gnulib_tool=$GNULIB_SRCDIR/gnulib-tool + <$gnulib_tool || exit $? +fi + +# Get translations. download_po_files() { subdir=$1 @@ -937,7 +758,9 @@ update_po_files() { && ls "$ref_po_dir"/*.po 2>/dev/null | sed 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS" || return - for po in x $(ls $ref_po_dir | sed -n 's/\.po$//p'); do + langs=$(cd $ref_po_dir && echo *.po | sed 's/\.po//g') + test "$langs" = '*' && langs=x + for po in $langs; do case $po in x) continue;; esac new_po="$ref_po_dir/$po.po" cksum_file="$ref_po_dir/$po.s1" @@ -951,99 +774,16 @@ update_po_files() { done } -# -------- Generate files automatically from existing sources. -------------- - -autogen_usage() { - cat < /dev/null 2>&1 - elif test -d .svn; then - svn log -r HEAD "$file" > /dev/null 2>&1 - elif test -d CVS; then - grep -F "/${file##*/}/" "$parent/CVS/Entries" 2>/dev/null | - grep '^/[^/]*/[0-9]' > /dev/null - else - warn_ "no version control for $file?" - false +case $SKIP_PO in +'') + if test -d po; then + update_po_files po $package || exit fi -} -# Strip blank and comment lines to leave significant entries. -gitignore_entries() { - sed '/^#/d; /^$/d' "$@" -} - -# If $STR is not already on a line by itself in $FILE, insert it at the start. -# Entries are inserted at the start of the ignore list to ensure existing -# entries starting with ! are not overridden. Such entries support -# whitelisting exceptions after a more generic blacklist pattern. -insert_if_absent() { - file=$1 - str=$2 - test -f $file || touch $file - test -r $file || die "Error: failed to read ignore file: $file" - duplicate_entries=$(gitignore_entries $file | sort | uniq -d) - if [ "$duplicate_entries" ] ; then - die "Error: Duplicate entries in $file: " $duplicate_entries - fi - linesold=$(gitignore_entries $file | wc -l) - linesnew=$( { echo "$str"; cat $file; } | gitignore_entries | sort -u | wc -l) - if [ $linesold != $linesnew ] ; then - { echo "$str" | cat - $file > $file.bak && mv $file.bak $file; } \ - || die "insert_if_absent $file $str: failed" - fi -} - -# Adjust $PATTERN for $VC_IGNORE_FILE and insert it with -# insert_if_absent. -insert_vc_ignore() { - vc_ignore_file="$1" - pattern="$2" - case $vc_ignore_file in - *.gitignore) - # A .gitignore entry that does not start with '/' applies - # recursively to subdirectories, so prepend '/' to every - # .gitignore entry. - pattern=$(echo "$pattern" | sed s,^,/,);; - esac - insert_if_absent "$vc_ignore_file" "$pattern" -} + if test -d runtime-po; then + update_po_files runtime-po $package-runtime || exit + fi;; +esac symlink_to_dir() { @@ -1065,7 +805,7 @@ symlink_to_dir() for dot_ig in x $vc_ignore; do test $dot_ig = x && continue ig=$parent/$dot_ig - insert_vc_ignore $ig "${dst_dir##*/}/" + insert_vc_ignore $ig "${dst_dir##*/}" done fi @@ -1114,516 +854,219 @@ symlink_to_dir() } } -# Regenerate all autogeneratable files that are omitted from the -# version control repository. In particular, regenerate all -# aclocal.m4, config.h.in, Makefile.in, configure files with new -# versions of autoconf or automake. -autogen() -{ - # Ensure that CDPATH is not set. Otherwise, the output from cd - # would cause trouble in at least one use below. - (unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - # Environment variables that may be set by the user. - : "${AUTOPOINT=autopoint}" - : "${AUTORECONF=autoreconf}" - - if test "$vc_ignore" = auto; then - vc_ignore= - test -d .git && vc_ignore=.gitignore - test -d CVS && vc_ignore="$vc_ignore .cvsignore" +version_controlled_file() { + parent=$1 + file=$2 + if test -d .git; then + git rm -n "$file" > /dev/null 2>&1 + elif test -d .svn; then + svn log -r HEAD "$file" > /dev/null 2>&1 + elif test -d CVS; then + grep -F "/${file##*/}/" "$parent/CVS/Entries" 2>/dev/null | + grep '^/[^/]*/[0-9]' > /dev/null + else + warn_ "no version control for $file?" + false fi +} +# NOTE: we have to be careful to run both autopoint and libtoolize +# before gnulib-tool, since gnulib-tool is likely to provide newer +# versions of files "installed" by these two programs. +# Then, *after* gnulib-tool (see below), we have to be careful to +# run autoreconf in such a way that it does not run either of these +# two just-pre-run programs. - # Parse options. +# Import from gettext. +with_gettext=yes +grep '^[ ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \ + with_gettext=no - # Whether to use copies instead of symlinks. - copy=false +if test $with_gettext = yes || test $use_libtool = 1; then - for option - do - case $option in - --help) - autogen_usage - return;; - --version) - set -e - echo "autogen.sh $scriptlibversion" - echo "$copyright" - return 0 - ;; - --force) - checkout_only_file=;; - --copy) - copy=true;; - *) - bootstrap_option_hook $option || die "$option: unknown option";; - esac - done + tempbase=.bootstrap$$ + trap "rm -f $tempbase.0 $tempbase.1" 1 2 13 15 - test -z "$GNULIB_SRCDIR" || test -d "$GNULIB_SRCDIR" \ - || die "Error: \$GNULIB_SRCDIR environment variable or --gnulib-srcdir" \ - "option is specified, but does not denote a directory" - - if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then - die "Running this script from a non-checked-out distribution is risky." - fi - - if $use_gnulib; then - if test -z "$GNULIB_SRCDIR"; then - gnulib_path=$(test -f .gitmodules && - git config --file .gitmodules submodule.gnulib.path) - test -z "$gnulib_path" && gnulib_path=gnulib - GNULIB_SRCDIR=$gnulib_path - fi - fi - - # Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac. - found_aux_dir=no - grep '^[ ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'])' configure.ac \ - >/dev/null && found_aux_dir=yes - grep '^[ ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \ - >/dev/null && found_aux_dir=yes - test $found_aux_dir = yes \ - || die "configure.ac lacks 'AC_CONFIG_AUX_DIR([$build_aux])'; add it" - - # If $build_aux doesn't exist, create it now, otherwise some bits - # below will malfunction. If creating it, also mark it as ignored. - if test ! -d $build_aux; then - mkdir $build_aux - for dot_ig in x $vc_ignore; do - test $dot_ig = x && continue - insert_vc_ignore $dot_ig $build_aux/ - done - fi - - check_build_prerequisites false - - use_libtool=0 - # We'd like to use grep -E, to see if any of LT_INIT, - # AC_PROG_LIBTOOL, AM_PROG_LIBTOOL is used in configure.ac, - # but that's not portable enough (e.g., for Solaris). - grep '^[ ]*A[CM]_PROG_LIBTOOL' configure.ac >/dev/null \ - && use_libtool=1 - grep '^[ ]*LT_INIT' configure.ac >/dev/null \ - && use_libtool=1 - if test $use_libtool = 1; then - find_tool LIBTOOLIZE glibtoolize libtoolize - fi - - if $use_gnulib; then - gnulib_tool=$GNULIB_SRCDIR/gnulib-tool - <$gnulib_tool || return - fi - - # NOTE: we have to be careful to run both autopoint and libtoolize - # before gnulib-tool, since gnulib-tool is likely to provide newer - # versions of files "installed" by these two programs. - # Then, *after* gnulib-tool (see below), we have to be careful to - # run autoreconf in such a way that it does not run either of these - # two just-pre-run programs. - - # Import from gettext. - with_gettext=yes - grep '^[ ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \ - with_gettext=no - - if test $with_gettext = yes || test $use_libtool = 1; then - - tempbase=.bootstrap$$ - trap "rm -f $tempbase.0 $tempbase.1" HUP INT PIPE TERM - - > $tempbase.0 > $tempbase.1 && - find . ! -type d -print | sort > $tempbase.0 || return - - if test $with_gettext = yes; then - # Released autopoint has the tendency to install macros that have been - # obsoleted in current gnulib, so run this before gnulib-tool. - echo "$0: $AUTOPOINT --force" - $AUTOPOINT --force || return - fi - - # Autoreconf runs aclocal before libtoolize, which causes spurious - # warnings if the initial aclocal is confused by the libtoolized - # (or worse out-of-date) macro directory. - # libtoolize 1.9b added the --install option; but we support back - # to libtoolize 1.5.22, where the install action was default. - if test $use_libtool = 1; then - install= - case $($LIBTOOLIZE --help) in - *--install*) install=--install ;; - esac - echo "running: $LIBTOOLIZE $install --copy" - $LIBTOOLIZE $install --copy - fi - - find . ! -type d -print | sort >$tempbase.1 - old_IFS=$IFS - IFS=$nl - for file in $(comm -13 $tempbase.0 $tempbase.1); do - IFS=$old_IFS - parent=${file%/*} - version_controlled_file "$parent" "$file" || { - for dot_ig in x $vc_ignore; do - test $dot_ig = x && continue - ig=$parent/$dot_ig - insert_vc_ignore "$ig" "${file##*/}" - done - } - done - IFS=$old_IFS - - rm -f $tempbase.0 $tempbase.1 - trap - HUP INT PIPE TERM - fi - - # Import from gnulib. - - if $use_gnulib; then - gnulib_tool_options="\ - --no-changelog\ - --aux-dir=$build_aux\ - --doc-base=$doc_base\ - --lib=$gnulib_name\ - --m4-base=$m4_base/\ - --source-base=$source_base/\ - --tests-base=$tests_base\ - --local-dir=$local_gl_dir\ - $gnulib_tool_option_extras\ - " - if test $use_libtool = 1; then - case "$gnulib_tool_options " in - *' --libtool '*) ;; - *) gnulib_tool_options="$gnulib_tool_options --libtool" ;; - esac - fi - echo "$0: $gnulib_tool $gnulib_tool_options --import ..." - $gnulib_tool $gnulib_tool_options --import $gnulib_modules \ - || die "gnulib-tool failed" - - if test $with_gettext = yes && test ! -f $m4_base/gettext.m4; then - # The gnulib-tool invocation has removed $m4_base/gettext.m4, that the - # AUTOPOINT invocation had installed. This can occur when the gnulib - # module 'gettext' was previously present but is now not present any more. - # Repeat the AUTOPOINT invocation and the gnulib-tool invocation. - - echo "$0: $AUTOPOINT --force" - $AUTOPOINT --force || return - - echo "$0: $gnulib_tool $gnulib_tool_options --import ..." - $gnulib_tool $gnulib_tool_options --import $gnulib_modules \ - || die "gnulib-tool failed" - fi - - for file in $gnulib_files; do - symlink_to_dir "$GNULIB_SRCDIR" $file \ - || die "failed to symlink $file" - done - fi - - bootstrap_post_import_hook \ - || die "bootstrap_post_import_hook failed" - - # Remove any dangling symlink matching "*.m4" or "*.[ch]" in some - # gnulib-populated directories. Such .m4 files would cause aclocal to fail. - # The following requires GNU find 4.2.3 or newer. Considering the usual - # portability constraints of this script, that may seem a very demanding - # requirement, but it should be ok. Ignore any failure, which is fine, - # since this is only a convenience to help developers avoid the relatively - # unusual case in which a symlinked-to .m4 file is git-removed from gnulib - # between successive runs of this script. - find "$m4_base" "$source_base" \ - -depth \( -name '*.m4' -o -name '*.[ch]' \) \ - -type l -xtype l -delete > /dev/null 2>&1 - - # Invoke autoreconf with --force --install to ensure upgrades of tools - # such as ylwrap. - AUTORECONFFLAGS="--verbose --install --force -I $m4_base $ACLOCAL_FLAGS" - AUTORECONFFLAGS="$AUTORECONFFLAGS --no-recursive" - - # Tell autoreconf not to invoke autopoint or libtoolize; they were run above. - echo "running: AUTOPOINT=true LIBTOOLIZE=true $AUTORECONF $AUTORECONFFLAGS" - AUTOPOINT=true LIBTOOLIZE=true $AUTORECONF $AUTORECONFFLAGS \ - || die "autoreconf failed" - - # Get some extra files from gnulib, overriding existing files. - for file in $gnulib_extra_files; do - case $file in - */INSTALL) dst=INSTALL;; - build-aux/*) dst=$build_aux/${file#build-aux/};; - *) dst=$file;; - esac - symlink_to_dir "$GNULIB_SRCDIR" $file $dst \ - || die "failed to symlink $file" - done + > $tempbase.0 > $tempbase.1 && + find . ! -type d -print | sort > $tempbase.0 || exit if test $with_gettext = yes; then - # Create gettext configuration. - echo "$0: Creating po/Makevars from po/Makevars.template ..." - rm -f po/Makevars + # Released autopoint has the tendency to install macros that have been + # obsoleted in current gnulib, so run this before gnulib-tool. + echo "$0: $AUTOPOINT --force" + $AUTOPOINT --force || exit + fi + + # Autoreconf runs aclocal before libtoolize, which causes spurious + # warnings if the initial aclocal is confused by the libtoolized + # (or worse out-of-date) macro directory. + # libtoolize 1.9b added the --install option; but we support back + # to libtoolize 1.5.22, where the install action was default. + if test $use_libtool = 1; then + install= + case $($LIBTOOLIZE --help) in + *--install*) install=--install ;; + esac + echo "running: $LIBTOOLIZE $install --copy" + $LIBTOOLIZE $install --copy + fi + + find . ! -type d -print | sort >$tempbase.1 + old_IFS=$IFS + IFS=$nl + for file in $(comm -13 $tempbase.0 $tempbase.1); do + IFS=$old_IFS + parent=${file%/*} + version_controlled_file "$parent" "$file" || { + for dot_ig in x $vc_ignore; do + test $dot_ig = x && continue + ig=$parent/$dot_ig + insert_vc_ignore "$ig" "${file##*/}" + done + } + done + IFS=$old_IFS + + rm -f $tempbase.0 $tempbase.1 + trap - 1 2 13 15 +fi + +# Import from gnulib. + +if $use_gnulib; then + gnulib_tool_options="\ + --no-changelog\ + --aux-dir=$build_aux\ + --doc-base=$doc_base\ + --lib=$gnulib_name\ + --m4-base=$m4_base/\ + --source-base=$source_base/\ + --tests-base=$tests_base\ + --local-dir=$local_gl_dir\ + $gnulib_tool_option_extras\ + " + if test $use_libtool = 1; then + case "$gnulib_tool_options " in + *' --libtool '*) ;; + *) gnulib_tool_options="$gnulib_tool_options --libtool" ;; + esac + fi + echo "$0: $gnulib_tool $gnulib_tool_options --import ..." + $gnulib_tool $gnulib_tool_options --import $gnulib_modules \ + || die "gnulib-tool failed" + + for file in $gnulib_files; do + symlink_to_dir "$GNULIB_SRCDIR" $file \ + || die "failed to symlink $file" + done +fi + +bootstrap_post_import_hook \ + || die "bootstrap_post_import_hook failed" + +# Don't proceed if there are uninitialized submodules. In particular, +# the next step will remove dangling links, which might be links into +# uninitialized submodules. +# +# Uninitialized submodules are listed with an initial dash. +if $use_git && git submodule | grep '^-' >/dev/null; then + die "some git submodules are not initialized. " \ + "Run 'git submodule init' and bootstrap again." +fi + +# Remove any dangling symlink matching "*.m4" or "*.[ch]" in some +# gnulib-populated directories. Such .m4 files would cause aclocal to fail. +# The following requires GNU find 4.2.3 or newer. Considering the usual +# portability constraints of this script, that may seem a very demanding +# requirement, but it should be ok. Ignore any failure, which is fine, +# since this is only a convenience to help developers avoid the relatively +# unusual case in which a symlinked-to .m4 file is git-removed from gnulib +# between successive runs of this script. +find "$m4_base" "$source_base" \ + -depth \( -name '*.m4' -o -name '*.[ch]' \) \ + -type l -xtype l -delete > /dev/null 2>&1 + +# Invoke autoreconf with --force --install to ensure upgrades of tools +# such as ylwrap. +AUTORECONFFLAGS="--verbose --install --force -I $m4_base $ACLOCAL_FLAGS" + +# Some systems (RHEL 5) are using ancient autotools, for which the +# --no-recursive option had not been invented. Detect that lack and +# omit the option when it's not supported. FIXME in 2017: remove this +# hack when RHEL 5 autotools are updated, or when they become irrelevant. +case $($AUTORECONF --help) in + *--no-recursive*) AUTORECONFFLAGS="$AUTORECONFFLAGS --no-recursive";; +esac + +# Tell autoreconf not to invoke autopoint or libtoolize; they were run above. +echo "running: AUTOPOINT=true LIBTOOLIZE=true $AUTORECONF $AUTORECONFFLAGS" +AUTOPOINT=true LIBTOOLIZE=true $AUTORECONF $AUTORECONFFLAGS \ + || die "autoreconf failed" + +# Get some extra files from gnulib, overriding existing files. +for file in $gnulib_extra_files; do + case $file in + */INSTALL) dst=INSTALL;; + build-aux/*) dst=$build_aux/${file#build-aux/};; + *) dst=$file;; + esac + symlink_to_dir "$GNULIB_SRCDIR" $file $dst \ + || die "failed to symlink $file" +done + +if test $with_gettext = yes; then + # Create gettext configuration. + echo "$0: Creating po/Makevars from po/Makevars.template ..." + rm -f po/Makevars + sed ' + /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/ + /^COPYRIGHT_HOLDER *=/s/=.*/= '"$COPYRIGHT_HOLDER"'/ + /^MSGID_BUGS_ADDRESS *=/s|=.*|= '"$MSGID_BUGS_ADDRESS"'| + /^XGETTEXT_OPTIONS *=/{ + s/$/ \\/ + a\ + '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+} + } + ' po/Makevars.template >po/Makevars \ + || die 'cannot generate po/Makevars' + + # If the 'gettext' module is in use, grab the latest Makefile.in.in. + # If only the 'gettext-h' module is in use, assume autopoint already + # put the correct version of this file into place. + case $gnulib_modules in + *gettext-h*) ;; + *gettext*) + cp $GNULIB_SRCDIR/build-aux/po/Makefile.in.in po/Makefile.in.in \ + || die "cannot create po/Makefile.in.in" + ;; + esac + + if test -d runtime-po; then + # Similarly for runtime-po/Makevars, but not quite the same. + rm -f runtime-po/Makevars sed ' - /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/ - /^COPYRIGHT_HOLDER *=/s/=.*/= '"$COPYRIGHT_HOLDER"'/ - /^MSGID_BUGS_ADDRESS *=/s|=.*|= '"$MSGID_BUGS_ADDRESS"'| + /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/ + /^subdir *=.*/s/=.*/= runtime-po/ + /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/ /^XGETTEXT_OPTIONS *=/{ s/$/ \\/ a\ - '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+} + '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+} } - ' po/Makevars.template >po/Makevars \ - || die 'cannot generate po/Makevars' + ' po/Makevars.template >runtime-po/Makevars \ + || die 'cannot generate runtime-po/Makevars' - # If the 'gettext' module is in use, grab the latest Makefile.in.in. - # If only the 'gettext-h' module is in use, assume autopoint already - # put the correct version of this file into place. - case $gnulib_modules in - *gettext-h*) ;; - *gettext*) - cp $GNULIB_SRCDIR/build-aux/po/Makefile.in.in po/Makefile.in.in \ - || die "cannot create po/Makefile.in.in" - ;; - esac - - if test -d runtime-po; then - # Similarly for runtime-po/Makevars, but not quite the same. - rm -f runtime-po/Makevars - sed ' - /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/ - /^subdir *=.*/s/=.*/= runtime-po/ - /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/ - /^XGETTEXT_OPTIONS *=/{ - s/$/ \\/ - a\ - '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+} - } - ' po/Makevars.template >runtime-po/Makevars \ - || die 'cannot generate runtime-po/Makevars' - - # Copy identical files from po to runtime-po. - cp -p po/Makefile.in.in po/*-quot po/*.header po/*.sed po/*.sin runtime-po - fi + # Copy identical files from po to runtime-po. + (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po) fi - - bootstrap_epilogue - - echo "$0: done. Now you can run './configure'." -} - -# ---------------------------------------------------------------------------- - -# Local Variables: -# eval: (add-hook 'before-save-hook 'time-stamp nil t) -# time-stamp-start: "scriptlibversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC0" -# time-stamp-end: "; # UTC" -# End: - -usage() { - cat <' configure.ac > /dev/null && gettext_external=1 -grep '^[ ]*AM_GNU_GETTEXT(\[external]' configure.ac > /dev/null && +grep '^[ ]*AM_GNU_GETTEXT(\[external\]' configure.ac > /dev/null && gettext_external=1 if test $gettext_external = 1; then diff --git a/build-aux/git-version-gen b/build-aux/git-version-gen index a44f5d5..3468247 100755 --- a/build-aux/git-version-gen +++ b/build-aux/git-version-gen @@ -1,12 +1,12 @@ #!/bin/sh # Print a version string. -scriptversion=2022-01-27.18; # UTC +scriptversion=2012-12-31.23; # UTC -# Copyright (C) 2007-2022 Free Software Foundation, Inc. +# Copyright (C) 2007-2013 Free Software Foundation, Inc. # # 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 3 of the License, or +# the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, @@ -15,9 +15,9 @@ scriptversion=2022-01-27.18; # UTC # 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 . +# along with this program. If not, see . -# This script is derived from GIT-VERSION-GEN from GIT: https://git-scm.com/. +# This script is derived from GIT-VERSION-GEN from GIT: http://git.or.cz/. # It may be run two ways: # - from a git repository in which the "git describe" command below # produces useful output (thus requiring at least one signed tag) @@ -65,21 +65,19 @@ scriptversion=2022-01-27.18; # UTC # EXTRA_DIST = $(top_srcdir)/.version # BUILT_SOURCES = $(top_srcdir)/.version # $(top_srcdir)/.version: -# echo '$(VERSION)' > $@-t -# mv $@-t $@ +# echo $(VERSION) > $@-t && mv $@-t $@ # dist-hook: -# echo '$(VERSION)' > $(distdir)/.tarball-version +# echo $(VERSION) > $(distdir)/.tarball-version me=$0 -year=`expr "$scriptversion" : '\([^-]*\)'` version="git-version-gen $scriptversion -Copyright (C) ${year} Free Software Foundation, Inc. -License GPLv3+: GNU GPL version 3 or later . -This is free software: you are free to change and redistribute it. -There is NO WARRANTY, to the extent permitted by law." +Copyright 2011 Free Software Foundation, Inc. +There is NO warranty. You may redistribute this software +under the terms of the GNU General Public License. +For more information about these matters, see the files named COPYING." usage="\ Usage: $me [OPTION]... \$srcdir/.tarball-version [TAG-NORMALIZATION-SED-SCRIPT] @@ -87,9 +85,8 @@ Print a version string. Options: - --prefix PREFIX prefix of git tags (default 'v') - --fallback VERSION - fallback version to use if \"git --version\" fails + --prefix prefix of git tags (default 'v') + --fallback fallback version to use if \"git --version\" fails --help display this help and exit --version output version information and exit @@ -103,8 +100,8 @@ while test $# -gt 0; do case $1 in --help) echo "$usage"; exit 0;; --version) echo "$version"; exit 0;; - --prefix) shift; prefix=${1?};; - --fallback) shift; fallback=${1?};; + --prefix) shift; prefix="$1";; + --fallback) shift; fallback="$1";; -*) echo "$0: Unknown option '$1'." >&2 echo "$0: Try '--help' for more information." >&2 @@ -143,9 +140,11 @@ then v=`cat $tarball_version_file` || v= case $v in *$nl*) v= ;; # reject multi-line output + [0-9]*) ;; + *) v= ;; esac test "x$v" = x \ - && echo "$0: WARNING: $tarball_version_file is damaged" 1>&2 + && echo "$0: WARNING: $tarball_version_file is missing or damaged" 1>&2 fi if test "x$v" != x @@ -167,10 +166,9 @@ then # tag or the previous older version that did not? # Newer: v6.10-77-g0f8faeb # Older: v6.10-g0f8faeb - vprefix=`expr "X$v" : 'X\(.*\)-g[^-]*$'` || vprefix=$v - case $vprefix in - *-*) : git describe is probably okay three part flavor ;; - *) + case $v in + *-*-*) : git describe is okay three part flavor ;; + *-*) : git describe is older two part flavor # Recreate the number of commits and rewrite such that the # result is the same as if we were using the newer version @@ -185,9 +183,9 @@ then ;; esac - # Change the penultimate "-" to ".", for version-comparing tools. - # Remove the "g" to save a byte. - v=`echo "$v" | sed 's/-\([^-]*\)-g\([^-]*\)$/.\1-\2/'`; + # Change the first '-' to a '.', so version-comparing tools work properly. + # Remove the "g" in git describe's output string, to save a byte. + v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`; v_from_git=1 elif test "x$fallback" = x || git --version >/dev/null 2>&1; then v=UNKNOWN @@ -201,7 +199,7 @@ v=`echo "$v" |sed "s/^$prefix//"` # string we're using came from git. I.e., skip the test if it's "UNKNOWN" # or if it came from .tarball-version. if test "x$v_from_git" != x; then - # Don't declare a version "dirty" merely because a timestamp has changed. + # Don't declare a version "dirty" merely because a time stamp has changed. git update-index --refresh > /dev/null 2>&1 dirty=`exec 2>/dev/null;git diff-index --name-only HEAD` || dirty= @@ -216,12 +214,12 @@ if test "x$v_from_git" != x; then fi # Omit the trailing newline, so that m4_esyscmd can use the result directly. -printf %s "$v" +echo "$v" | tr -d "$nl" # Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC0" +# time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: diff --git a/configure.ac b/configure.ac index 818bee9..92ff82c 100644 --- a/configure.ac +++ b/configure.ac @@ -2,11 +2,11 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) -AC_CONFIG_MACRO_DIRS([m4]) +AC_CONFIG_MACRO_DIR([m4]) AC_INIT([dhcpd-pools], [m4_esyscmd([build-aux/git-version-gen .tarball-version])], [kerolasa@iki.fi],[], - [https://dhcpd-pools.sourceforge.net/]) + [http://dhcpd-pools.sourceforge.net/]) PACKAGE_MAINTAINER="Sami Kerola" AC_SUBST([PACKAGE_MAINTAINER]) AC_CONFIG_AUX_DIR([build-aux]) diff --git a/contrib/PKGBUILD b/contrib/PKGBUILD index 08770a4..6fbb5cf 100644 --- a/contrib/PKGBUILD +++ b/contrib/PKGBUILD @@ -7,7 +7,7 @@ pkgver=0 pkgrel=1 pkgdesc="ISC dhcpd lease status utility" arch=('i686' 'x86_64') -url=https://dhcpd-pools.sourceforge.net/ +url=http://dhcpd-pools.sourceforge.net/ license=('BSD') depends=('pacman') makedepends=('uthash' 'git') diff --git a/contrib/snmptest.pl b/contrib/snmptest.pl index 54093c7..c77b882 100644 --- a/contrib/snmptest.pl +++ b/contrib/snmptest.pl @@ -23,10 +23,9 @@ # you set $dbg to 1 then output will be generated in /tmp. use strict; -use NetSNMP::OID; # Version info: -my $SNMPver = "snmp1.1"; +my $SNMPver = "snmp1.0"; my $DHCPver = "dhcp1.0"; my $VERSION = "$SNMPver/$DHCPver"; # @@ -194,7 +193,7 @@ sub ParseDataFile () { } close IN; if ($dbg) { - foreach (sort Oidcmp @validoidlist) { print DBG "ValidOID: $_\n"; } + foreach (sort @validoidlist) { print DBG "ValidOID: $_\n"; } } if ($dbg) { @@ -371,7 +370,7 @@ sub GetData ($) { @userquery = split (/\./, $userqueryoid); my $found = 0; - foreach (sort Oidcmp @validoidlist) { + foreach (sort @validoidlist) { $next = $_; print DBG "Comparing $userqueryoid vs. $_\n" if $dbg; @validoid = split (/\./, $_); @@ -433,12 +432,6 @@ sub Pong { $line = 0; } -sub Oidcmp { - my $oida = new NetSNMP::OID($a); - my $oidb = new NetSNMP::OID($b); - snmp_oid_compare($oida, $oidb); -} - ################################## START ################################## # # Main diff --git a/contrib/zabbix.txt b/contrib/zabbix.txt deleted file mode 100644 index 9ea279a..0000000 --- a/contrib/zabbix.txt +++ /dev/null @@ -1,4 +0,0 @@ -Zabbix 5 template, and instructions how to use it, can be found from -Mathieu's repository. - -https://github.com/mmorier86/dhcpd-pools-zabbix-template diff --git a/lib/.gitignore b/lib/.gitignore index e2e741c..03b1c1f 100644 --- a/lib/.gitignore +++ b/lib/.gitignore @@ -1,22 +1,13 @@ /alloca.h /alloca.in.h /arg-nonnull.h -/arpa/ -/arpa_inet.c +/arpa/inet.h /arpa_inet.in.h -/assert.in.h -/attribute.h /basename-lgpl.c -/basename-lgpl.h -/c32is-impl.h -/c32isprint.c -/calloc.c /c-ctype.c /c-ctype.h /c++defs.h /cdefs.h -/cloexec.c -/cloexec.h /close.c /closeout.c /closeout.h @@ -26,15 +17,15 @@ /c-strcaseeq.h /c-strcase.h /c-strncasecmp.c -/dup2.c +/dirname.h +/dirname-lgpl.c +/dosname.h /errno.in.h /error.c /error.h -/error.in.h /exitfail.c /exitfail.h /fclose.c -/fcntl.c /fcntl.h /fcntl.in.h /fd-hook.c @@ -45,7 +36,6 @@ /flexmember.h /float.c /float+.h -/float.h /float.in.h /fopen.c /fpending.c @@ -53,15 +43,11 @@ /fpurge.c /freading.c /freading.h -/free.c /fseek.c /fseeko.c /fstat.c /ftell.c /ftello.c -/getdtablesize.c -/getlocalename_l-unsafe.c -/getlocalename_l-unsafe.h /getopt1.c /getopt.c /getopt-cdefs.in.h @@ -74,14 +60,11 @@ /getprogname.c /getprogname.h /gettext.h +/glthread/* /hard-locale.c /hard-locale.h -/ialloc.c -/ialloc.h -/idx.h /inet_pton.c /intprops.h -/intprops-internal.h /inttypes.h /inttypes.in.h /isnan.c @@ -93,60 +76,16 @@ /lc-charset-dispatch.h /libc-config.h /libdhcpd_pools.la -/libdhcpd_pools_la-arpa_inet.lo -/libdhcpd_pools_la-basename-lgpl.lo -/libdhcpd_pools_la-c32isprint.lo -/libdhcpd_pools_la-c-ctype.lo -/libdhcpd_pools_la-cloexec.lo -/libdhcpd_pools_la-closeout.lo -/libdhcpd_pools_la-close-stream.lo -/libdhcpd_pools_la-c-strcasecmp.lo -/libdhcpd_pools_la-exitfail.lo -/libdhcpd_pools_la-fclose.lo -/libdhcpd_pools_la-fcntl.lo -/libdhcpd_pools_la-fd-hook.lo -/libdhcpd_pools_la-fflush.lo -/libdhcpd_pools_la-float.lo -/libdhcpd_pools_la-fopen.lo -/libdhcpd_pools_la-fpurge.lo -/libdhcpd_pools_la-freading.lo -/libdhcpd_pools_la-fseek.lo -/libdhcpd_pools_la-fseeko.lo -/libdhcpd_pools_la-getprogname.lo -/libdhcpd_pools_la-hard-locale.lo -/libdhcpd_pools_la-ialloc.lo -/libdhcpd_pools_la-localcharset.lo -/libdhcpd_pools_la-malloca.lo -/libdhcpd_pools_la-math.lo -/libdhcpd_pools_la-mbrtoc32.lo -/libdhcpd_pools_la-mbrtowc.lo -/libdhcpd_pools_la-mbszero.lo -/libdhcpd_pools_la-mktime.lo -/libdhcpd_pools_la-nstrftime.lo -/libdhcpd_pools_la-progname.lo -/libdhcpd_pools_la-quotearg.lo -/libdhcpd_pools_la-reallocarray.lo -/libdhcpd_pools_la-realloc.lo -/libdhcpd_pools_la-setlocale_null.lo -/libdhcpd_pools_la-setlocale_null-unlocked.lo -/libdhcpd_pools_la-stat-time.lo -/libdhcpd_pools_la-stdlib.lo -/libdhcpd_pools_la-sys_socket.lo -/libdhcpd_pools_la-timegm.lo -/libdhcpd_pools_la-time_rz.lo -/libdhcpd_pools_la-unistd.lo -/libdhcpd_pools_la-wctype-h.lo -/libdhcpd_pools_la-xalloc-die.lo -/libdhcpd_pools_la-xmalloc.lo /.libs/ /limits.h /limits.in.h +/*.lo /localcharset.c /localcharset.h /locale.h /locale.in.h -/localename.h -/localename-unsafe.c +/localtime-buffer.c +/localtime-buffer.h /lseek.c /Makefile.am /malloca.c @@ -155,12 +94,10 @@ /math.c /math.h /math.in.h -/mbrtoc32.c /mbrtowc.c /mbrtowc-impl.h /mbrtowc-impl-utf8.h /mbsinit.c -/mbszero.c /mbtowc-lock.c /mbtowc-lock.h /memchr.c @@ -175,36 +112,29 @@ /netinet_in.in.h /_Noreturn.h /nstrftime.c -/open.c /pathmax.h /progname.c /progname.h /quotearg.c /quotearg.h /quote.h -/reallocarray.c /realloc.c /setenv.c /setlocale-lock.c /setlocale_null.c /setlocale_null.h -/setlocale_null-unlocked.c /stat.c /stat-time.c /stat-time.h /stat-w32.c /stat-w32.h -/stdckdint.h -/stdckdint.in.h -/stddef.h +/stdalign.in.h +/stdbool.in.h /stddef.in.h /stdint.in.h /stdio.h /stdio-impl.h /stdio.in.h -/stdio-read.c -/stdio-write.c -/stdlib.c /stdlib.h /stdlib.in.h /stpncpy.c @@ -213,18 +143,21 @@ /strerror.c /strerror-override.c /strerror-override.h -/strftime.c /strftime.h /string.h /string.in.h +/stripslash.c /strstr.c /strtod.c /str-two-way.h -/sys/ /sys_socket.c +/sys/socket.h /sys_socket.in.h +/sys/stat.h /sys_stat.in.h +/sys/types.h /sys_types.in.h +/sys/uio.h /sys_uio.in.h /timegm.c /time.h @@ -233,21 +166,11 @@ /time_r.c /time_rz.c /tzset.c -/uchar.h -/uchar.in.h -/unictype/ -/unictype/bitmap.h -/unictype/ctype_print.c -/unictype/ctype_print.h -/unictype/.gitignore -/unictype.h -/unictype.in.h /unistd.c /unistd.h /unistd.in.h -/unitypes.h -/unitypes.in.h /unsetenv.c +/unused-parameter.h /verify.h /warn-on-use.h /wchar.h @@ -256,6 +179,14 @@ /wctype-h.c /wctype.in.h /windows-initguard.h +/windows-mutex.c +/windows-mutex.h +/windows-once.c +/windows-once.h +/windows-recmutex.c +/windows-recmutex.h +/windows-rwlock.c +/windows-rwlock.h /xalloc-die.c /xalloc.h /xalloc-oversized.h diff --git a/man/dhcpd-pools.1.in b/man/dhcpd-pools.1.in index 5001e24..2179163 100644 --- a/man/dhcpd-pools.1.in +++ b/man/dhcpd-pools.1.in @@ -1,5 +1,4 @@ -'\" t -.TH DHCPD-POOLS "1" "2024-08-09" "@VERSION@" "User Commands" +.TH DHCPD-POOLS "1" "2017-11-15" "@VERSION@" "User Commands" .SH NAME dhcpd-pools \- ISC dhcpd pools usage analysis .SH SYNOPSIS diff --git a/project.doap b/project.doap index b9f0a8a..e3cf0f6 100644 --- a/project.doap +++ b/project.doap @@ -3,9 +3,9 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:foaf="http://xmlns.com/foaf/0.1/"> - + dhcpd-pools - + This is dhcpd-pools ISC dhcp shared network and pool range usage analysis tool. Purpose of command is to count usage ratio of each diff --git a/src/dhcpd-pools.c b/src/dhcpd-pools.c index 1373053..1488541 100644 --- a/src/dhcpd-pools.c +++ b/src/dhcpd-pools.c @@ -343,7 +343,8 @@ int main(int argc, char **argv) .header_limit = 8, .ranges_size = 64, .ip_version = IPvUNKNOWN, - .color_mode = color_auto + .color_mode = color_auto, + 0 }; int ret_val; diff --git a/src/dhcpd-pools.h b/src/dhcpd-pools.h index aff6b6a..36ec255 100644 --- a/src/dhcpd-pools.h +++ b/src/dhcpd-pools.h @@ -102,9 +102,6 @@ enum prefix_t { PREFIX_BINDING_STATE_ACTIVE, PREFIX_BINDING_STATE_BACKUP, PREFIX_HARDWARE_ETHERNET, - PREFIX_STARTS, - PREFIX_ENDS, - PREFIX_HOSTNAME, NUM_OF_PREFIX }; @@ -130,6 +127,7 @@ struct shared_network_t { double backups; struct shared_network_t *next; int netmask; + uint32_t pad; }; /*! \struct range_t @@ -154,6 +152,7 @@ struct output_helper_t { double tcp; double bup; int status; + uint32_t pad; }; /*! \struct status_counts_t @@ -183,9 +182,7 @@ struct leases_t { char *ethernet; UT_hash_handle hh; enum ltype type; - char *ends; - char *starts; - char *hostname; + uint32_t pad; }; /*! \enum limbits @@ -254,7 +251,8 @@ struct conf_t { skip_critical:1, /*!< Skip critical values from output. */ skip_minsize:1, /*!< Skip alarming values that are below minsize from output. */ skip_suppressed:1, /*!< Skip alarming values that are suppressed with --snet-alarms option, or they are shared networks without IP availability. */ - color_mode:2; /*!< Indicator if colors should be used in output. */ + color_mode:2, /*!< Indicator if colors should be used in output. */ + pad_bits:4; }; /* Function prototypes */ diff --git a/src/getdata.c b/src/getdata.c index 31734de..7863a6b 100644 --- a/src/getdata.c +++ b/src/getdata.c @@ -83,7 +83,7 @@ enum isc_conf_parser { int parse_leases(struct conf_t *state) { FILE *dhcpd_leases; - char *line, *ipstring, macstring[20], *stop, endsstr[30], startsstr[30], hostnamestr[MAXLEN]; + char *line, *ipstring, macstring[20], *stop; union ipaddr_t addr; struct leases_t *lease; @@ -100,9 +100,6 @@ int parse_leases(struct conf_t *state) line[0] = '\0'; ipstring = xmalloc(sizeof(char) * MAXLEN); ipstring[0] = '\0'; - endsstr[0] = '\0'; - startsstr[0] = '\0'; - hostnamestr[0] = '\0'; while (!feof(dhcpd_leases)) { if (!fgets(line, MAXLEN, dhcpd_leases) && ferror(dhcpd_leases)) error(EXIT_FAILURE, errno, "parse_leases: %s", state->dhcpdlease_file); @@ -145,35 +142,8 @@ int parse_leases(struct conf_t *state) break; memcpy(macstring, line + 20, 17); macstring[17] = '\0'; - if ((lease = find_lease(state, &addr)) != NULL) { + if ((lease = find_lease(state, &addr)) != NULL) lease->ethernet = xstrdup(macstring); - lease->starts = xstrdup(startsstr); - startsstr[0] = '\0'; - lease->ends = xstrdup(endsstr); - endsstr[0] = '\0'; - } - break; - case PREFIX_ENDS: - if (state->print_mac_addreses == 0) - break; - strncpy(endsstr, line + 7, sizeof(endsstr)-1); - endsstr[strlen(endsstr)-2] = '\0'; - break; - case PREFIX_STARTS: - if (state->print_mac_addreses == 0) - break; - strncpy(startsstr, line + 9, sizeof(startsstr)-1); - startsstr[strlen(startsstr)-2] = '\0'; - break; - case PREFIX_HOSTNAME: - if (state->print_mac_addreses == 0) - break; - strncpy(hostnamestr, line + 19, sizeof(hostnamestr)-1); - hostnamestr[strlen(hostnamestr)-3] = '\0'; - if ((lease = find_lease(state, &addr)) != NULL) { - lease->hostname = xstrdup(hostnamestr); - } - hostnamestr[0] = '\0'; break; default: /* do nothing */ ; @@ -241,14 +211,8 @@ void parse_config(struct conf_t *state, const int is_include, const char *restri shared_p->name = state->shared_net_root->name; /* Open configuration file */ dhcpd_config = fopen(config_file, "r"); - if (dhcpd_config == NULL) { - if (is_include) { - error(0, errno, "cannot open inlude: %s", config_file); - return; - } - /* config if from command line, just exit with error */ + if (dhcpd_config == NULL) error(EXIT_FAILURE, errno, "parse_config: %s", config_file); - } #ifdef HAVE_POSIX_FADVISE # ifdef POSIX_FADV_SEQUENTIAL if (posix_fadvise(fileno(dhcpd_config), 0, 0, POSIX_FADV_SEQUENTIAL) != 0) diff --git a/src/hash.c b/src/hash.c index eb434df..77ecd79 100644 --- a/src/hash.c +++ b/src/hash.c @@ -66,9 +66,6 @@ void add_lease_v4(struct conf_t *state, union ipaddr_t *addr, enum ltype type) l->type = type; HASH_ADD_INT(state->leases, ip.v4, l); l->ethernet = NULL; - l->ends = NULL; - l->starts = NULL; - l->hostname = NULL; } void add_lease_v6(struct conf_t *state, union ipaddr_t *addr, enum ltype type) @@ -80,9 +77,6 @@ void add_lease_v6(struct conf_t *state, union ipaddr_t *addr, enum ltype type) l->type = type; HASH_ADD_V6(state->leases, ip.v6, l); l->ethernet = NULL; - l->ends = NULL; - l->starts = NULL; - l->hostname = NULL; } /*! \brief Find pointer to lease from hash array. @@ -116,9 +110,6 @@ struct leases_t *find_lease_v6(struct conf_t *state, union ipaddr_t *addr) void delete_lease(struct conf_t *state, struct leases_t *lease) { free(lease->ethernet); - free(lease->ends); - free(lease->starts); - free(lease->hostname); HASH_DEL(state->leases, lease); free(lease); } @@ -131,9 +122,6 @@ void delete_all_leases(struct conf_t *state) HASH_ITER(hh, state->leases, l, tmp) { free(l->ethernet); - free(l->ends); - free(l->starts); - free(l->hostname); HASH_DEL(state->leases, l); free(l); } @@ -146,9 +134,6 @@ void delete_all_leases(struct conf_t *state) l = state->leases; free(l->ethernet); - free(l->ends); - free(l->starts); - free(l->hostname); HASH_DEL(state->leases, l); /* leases advances to next on delete */ free(l); } diff --git a/src/mustach.c b/src/mustach.c index b197a83..45eb7a4 100644 --- a/src/mustach.c +++ b/src/mustach.c @@ -8,7 +8,7 @@ you may not use this file except in compliance with the License. You may obtain a copy of the License at - https://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, @@ -19,8 +19,6 @@ #define _GNU_SOURCE -#include "config.h" - #include #include #include diff --git a/src/mustach.h b/src/mustach.h index 0ceba16..32288a1 100644 --- a/src/mustach.h +++ b/src/mustach.h @@ -8,7 +8,7 @@ you may not use this file except in compliance with the License. You may obtain a copy of the License at - https://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, diff --git a/src/other.c b/src/other.c index b319a2d..21a19f4 100644 --- a/src/other.c +++ b/src/other.c @@ -417,12 +417,6 @@ int } if (!memcmp("lease ", str, 6)) return PREFIX_LEASE; - else if (!memcmp(" starts ", str, 9)) - return PREFIX_STARTS; - else if (!memcmp(" ends ", str, 7)) - return PREFIX_ENDS; - else if (!memcmp(" client-hostname ", str, 18)) - return PREFIX_HOSTNAME; return NUM_OF_PREFIX; } @@ -478,12 +472,6 @@ int } if (!memcmp(" iaaddr ", str, 9)) return PREFIX_LEASE; - else if (!memcmp(" starts ", str, 9)) - return PREFIX_STARTS; - else if (!memcmp(" ends ", str, 7)) - return PREFIX_ENDS; - else if (!memcmp(" client-hostname ", str, 18)) - return PREFIX_HOSTNAME; return NUM_OF_PREFIX; } diff --git a/src/output.c b/src/output.c index 4ff0a90..2d7f28d 100644 --- a/src/output.c +++ b/src/output.c @@ -387,19 +387,7 @@ static int output_xml(struct conf_t *state) if (l->ethernet != NULL) { fputs(l->ethernet, outfile); } - fputs("\n\t", outfile); - if (l->starts != NULL) { - fputs(l->starts, outfile); - } - fputs("\n\t", outfile); - if (l->ends != NULL) { - fputs(l->ends, outfile); - } - fputs("\n\t", outfile); - if (l->hostname != NULL) { - fputs(l->hostname, outfile); - } - fputs("\n\n", outfile); + fputs("\n\n", outfile); } } } @@ -493,18 +481,6 @@ static int output_json(struct conf_t *state) if (l->ethernet != NULL) { fputs(l->ethernet, outfile); } - fputs("\", \"starts\":\"", outfile); - if (l->starts != NULL) { - fputs(l->starts, outfile); - } - fputs("\", \"ends\":\"", outfile); - if (l->ends != NULL) { - fputs(l->ends, outfile); - } - fputs("\", \"hostname\":\"", outfile); - if (l->hostname != NULL) { - fputs(l->hostname, outfile); - } fputs("\" }", outfile); } } @@ -611,15 +587,9 @@ static int output_json(struct conf_t *state) fprintf(outfile, " \"touched\":%g,\n", state->shared_net_root->touched); fprintf(outfile, " \"free\":%g,\n", state->shared_net_root->available - state->shared_net_root->used); - if (fpclassify(state->shared_net_root->available) == FP_ZERO) - fprintf(outfile, " \"percent\":\"%g\",\n", oh.percent); - else - fprintf(outfile, " \"percent\":%g,\n", oh.percent); + fprintf(outfile, " \"percent\":%g,\n", oh.percent); fprintf(outfile, " \"touch_count\":%g,\n", oh.tc); - if (fpclassify(state->shared_net_root->available) == FP_ZERO) - fprintf(outfile, " \"touch_percent\":\"%g\",\n", oh.tcp); - else - fprintf(outfile, " \"touch_percent\":%g,\n", oh.tcp); + fprintf(outfile, " \"touch_percent\":%g,\n", oh.tcp); if (state->backups_found == 1) { fprintf(outfile, " \"backup_count\":%g,\n", state->shared_net_root->backups); @@ -658,8 +628,8 @@ static void html_header(struct conf_t *state, FILE *restrict f) fprintf(f, "\n"); fprintf(f, "\n"); fprintf(f, "\n"); - fprintf(f, "\n"); - fprintf(f, "\n"); + fprintf(f, "\n"); + fprintf(f, "\n"); fprintf(f, "\n"); @@ -682,8 +652,8 @@ static void html_footer(FILE *restrict f) fprintf(f, "Generated using %s
\n", PACKAGE_STRING); fprintf(f, "More info at %s\n", PACKAGE_URL, PACKAGE_URL); fprintf(f, "
\n"); - fprintf(f, "\n"); - fprintf(f, "\n"); + fprintf(f, "\n"); + fprintf(f, "\n"); fprintf(f, "\n"); fprintf(f, "\n"); fprintf(f, "\n"); diff --git a/tests/expected/errors b/tests/expected/errors index 6903ac6..b85e282 100644 --- a/tests/expected/errors +++ b/tests/expected/errors @@ -7,16 +7,7 @@ dhcpd-pools: unknown color mode: 'sometimes' === IPv5 dhcpd-pools: unknown --ip-version argument: 5 === missing conf -dhcpd-pools: cannot open inlude: ./tests/confs/complete_NXFILE: No such file or directory -Ranges: -shared net name first ip last ip max cur percent touch t+c t+c perc - -Shared networks: -name max cur percent touch t+c t+c perc - -Sum of all ranges: -name max cur percent touch t+c t+c perc -All networks 0 0 nan 0 0 nan +dhcpd-pools: parse_config: ./tests/confs/complete_NXFILE: No such file or directory === missing leases dhcpd-pools: parse_leases: ./tests/leases/complete_NXFILE: No such file or directory === html table diff --git a/tests/expected/formats b/tests/expected/formats index 4023f89..9008b93 100644 --- a/tests/expected/formats +++ b/tests/expected/formats @@ -23,8 +23,8 @@ All networks 100 43 43.000 0 43 43.000 - - + + @@ -176,10 +176,10 @@ table.dhcpd-pools th { text-transform: capitalize }
- - + + diff --git a/tests/expected/same-twice-json b/tests/expected/same-twice-json index f23d1b0..f572972 100644 --- a/tests/expected/same-twice-json +++ b/tests/expected/same-twice-json @@ -1,6 +1,6 @@ { "active_leases": [ - { "ip":"10.0.0.5", "macaddress":"00:00:00:00:00:00", "starts":"", "ends":"", "hostname":"" } + { "ip":"10.0.0.5", "macaddress":"00:00:00:00:00:00" } ], "subnets": [ { "location":"All networks", "range":"10.0.0.1 - 10.0.0.10", "first_ip":"10.0.0.1", "last_ip":"10.0.0.10", "defined":10, "used":1, "touched":0, "free":9, "percent":10, "touch_count":1, "touch_percent":10, "status":0 } diff --git a/tests/expected/same-twice-xml b/tests/expected/same-twice-xml index 7897f7f..93612d6 100644 --- a/tests/expected/same-twice-xml +++ b/tests/expected/same-twice-xml @@ -2,9 +2,6 @@ 10.0.0.5 00:00:00:00:00:00 - - - All networks diff --git a/webpages/dhcpd-pools.awk b/webpages/dhcpd-pools.awk index 9c1f299..38d5f18 100644 --- a/webpages/dhcpd-pools.awk +++ b/webpages/dhcpd-pools.awk @@ -4,11 +4,12 @@ # analysis algorithm is sane. This script is no longer # maintained, and can be considered as historic reference. # -# Licensed under the Open Software License version 1.0 -# https://opensource.org/license/osl-1-0/ +# Licensed under the Open Software License version 1.1 +# http://opensource.org/licenses/osl.php # # Sami Kerola # +# Latest version is available from http://www.iki.fi/kerolasa/dhcp/ # This is version 1.4 BEGIN { diff --git a/webpages/index.html b/webpages/index.html index 7d5b748..088c546 100644 --- a/webpages/index.html +++ b/webpages/index.html @@ -30,7 +30,7 @@ font-variant: normal; -
+

ISC dhcpd lease analysis and reporting

This is dhcpd-pools ISC dhcp @@ -49,18 +49,9 @@ any significant difference in getting analysis done.

prompt> ./dhcpd-pools --config=/etc/dhcpd.conf --leases=/var/lib/dhcp/dhcpd.leases --format=H --color=always --warning=40 --critical=50 --output=sampleoutput.html +href="http://dhcpd-pools.sourceforge.net/sampleoutput.html">sampleoutput.html

-

Is dhcpd-pools still developed?

-

In short no, it is not.

-

-ISC DHCPD has reached -EOL. Users are Kea DHCP server instead. Kea has native -statistics, so it does not require this tool and therefore the -dhcpd-pools is obsolte. -

Where I can get dhcpd-pools?

Download release package @@ -70,11 +61,11 @@ file.

git clone git://git.code.sf.net/p/dhcpd-pools/code dhcpd-pools

See also -SourceForge project page.

+SourceForge project page.

Documentation

The dhcpd-pools -manual page, and -Doxygen software +manual page, and +Doxygen software reference documentation are available online.

Getting the output you need

    @@ -89,8 +80,8 @@ try:
  1. Start filtering output. Options to try:
    --skip --limit
  2. Change --format -option to what you need, and maybe include ---perfdata if you want nagios alarm +option to what you need, and maybe include --perfdata if you want nagios alarm format.
  3. Done.
@@ -99,33 +90,33 @@ format.

The program was written because -DHCPStatus, -DHCP Usage Statistics, -reportdhcp.pl, -lease_analyzer and -dhcpd-snmp +DHCPStatus, +DHCP Usage Statistics, +reportdhcp.pl, +lease_analyzer and +dhcpd-snmp where too slow to handle huge number of leases. There is also difference in printed details. The dhcpd-pools does not print quite as much information as some other tools.

Notice that this utility is not the same as -dhcpd-pool +dhcpd-pool that is maintained by Trond Hasle Amundsen.

Just for laugh, obsolete awk proof of concept (version 1.4) -dhcpd-pools.awk

+dhcpd-pools.awk

Where to send questions, bug reports, code contributions...

-

Sami Kerola +

Sami Kerola <kerolasa@iki.fi>

-Sat Nov 26 09:58:28 GMT 2022 +Wed Nov 15 12:47:30 GMT 2017 3.0 FreeBSD License - -
+ +
0
-
+
5 ( 2 ratings )
diff --git a/webpages/robots.txt b/webpages/robots.txt index c9eedb4..25e6762 100644 --- a/webpages/robots.txt +++ b/webpages/robots.txt @@ -1,3 +1,3 @@ -Sitemap: https://dhcpd-pools.sourceforge.net/sitemap.txt +Sitemap: http://dhcpd-pools.sourceforge.net/sitemap.txt User-agent: * Disallow: diff --git a/webpages/sampleoutput.html b/webpages/sampleoutput.html index d27d3b6..af4d3d8 100644 --- a/webpages/sampleoutput.html +++ b/webpages/sampleoutput.html @@ -5,8 +5,8 @@ - - + + @@ -14,7 +14,7 @@ table.dhcpd-pools th { text-transform: capitalize }

ISC DHCPD status

-File tests/leases/formats was last modified at 2025-04-15T14:32:48+0100
+File samples/dhcpd.leases was last modified at 2017-11-11T23:59:04+0000

Sum of all

@@ -27,6 +27,8 @@ table.dhcpd-pools th { text-transform: capitalize } + + @@ -39,6 +41,8 @@ table.dhcpd-pools th { text-transform: capitalize } + +
touch t+c t+c percbubu perc
0 43 43.000243.000
@@ -54,6 +58,8 @@ table.dhcpd-pools th { text-transform: capitalize } touch t+c t+c perc +bu +bu perc @@ -66,6 +72,8 @@ table.dhcpd-pools th { text-transform: capitalize } 0 21 52.500 +1 +2.500 example2 @@ -76,6 +84,8 @@ table.dhcpd-pools th { text-transform: capitalize } 0 17 42.500 +0 +0.000 @@ -93,6 +103,8 @@ table.dhcpd-pools th { text-transform: capitalize } touch t+c t+c perc +bu +bu perc @@ -107,6 +119,8 @@ table.dhcpd-pools th { text-transform: capitalize } 0 11 55.000 +1 +5.000 example1 @@ -119,6 +133,8 @@ table.dhcpd-pools th { text-transform: capitalize } 0 10 50.000 +0 +0.000 example2 @@ -131,6 +147,8 @@ table.dhcpd-pools th { text-transform: capitalize } 0 8 40.000 +0 +0.000 example2 @@ -143,6 +161,8 @@ table.dhcpd-pools th { text-transform: capitalize } 0 9 45.000 +0 +0.000 All networks @@ -155,15 +175,17 @@ table.dhcpd-pools th { text-transform: capitalize } 0 5 25.000 +1 +5.000
-Generated using dhcpd-pools 3.3
-More info at https://dhcpd-pools.sourceforge.net/ +Generated using dhcpd-pools 3.0
+More info at http://dhcpd-pools.sourceforge.net/
- - + + diff --git a/webpages/sitemap.txt b/webpages/sitemap.txt index 28f6306..f1f9fb4 100644 --- a/webpages/sitemap.txt +++ b/webpages/sitemap.txt @@ -1,546 +1,546 @@ -https://dhcpd-pools.sourceforge.net/ -https://dhcpd-pools.sourceforge.net/dhcpd-pools.awk -https://dhcpd-pools.sourceforge.net/man.html -https://dhcpd-pools.sourceforge.net/doxygen/alloca_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/alloca_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/alloca_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/alloca_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/analyze_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/annotated.html -https://dhcpd-pools.sourceforge.net/doxygen/arg-nonnull_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/arg-nonnull_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/arpa__inet_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/arpa__inet_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/basename-lgpl_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/c_09_09defs_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/c_09_09defs_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/classes.html -https://dhcpd-pools.sourceforge.net/doxygen/close_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/closeout_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/closeout_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/closeout_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/close-stream_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/close-stream_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/close-stream_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/config_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/config_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/configmake_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/configmake_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/c-strcasecmp_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/c-strcaseeq_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/c-strcaseeq_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/c-strncasecmp_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/dir_000000_000001.html -https://dhcpd-pools.sourceforge.net/doxygen/dir_000001_000002.html -https://dhcpd-pools.sourceforge.net/doxygen/dir_1dacc5f4fcb865f1d9e042339dad3519.html -https://dhcpd-pools.sourceforge.net/doxygen/dir_97aefd0d527b934f1d99a682da8fe6a9.html -https://dhcpd-pools.sourceforge.net/doxygen/dir_fb441f6c77667ce4c9ebd4a5c47eafac.html -https://dhcpd-pools.sourceforge.net/doxygen/dirname_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/dirname_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/dirname-lgpl_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/dosname_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/dosname_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/doxygen.css -https://dhcpd-pools.sourceforge.net/doxygen/errno_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/errno_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/error_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/error_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/error_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/exitfail_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/exitfail_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/exitfail_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/fclose_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/fcntl_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/fcntl_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/fcntl_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/fcntl_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/fdopen_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/fflush_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/filename_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/filename_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/files.html -https://dhcpd-pools.sourceforge.net/doxygen/flexmember_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/flexmember_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/float_09_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/float_09_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/float_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/float_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/float_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/fopen_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/fpending_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/fpending_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/fpending_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/fpurge_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/freading_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/freading_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/freading_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/fseek_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/fseeko_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/fstat_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/ftell_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/ftello_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/functions_func.html -https://dhcpd-pools.sourceforge.net/doxygen/functions.html -https://dhcpd-pools.sourceforge.net/doxygen/functions_vars.html -https://dhcpd-pools.sourceforge.net/doxygen/getdata_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/getopt1_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/getopt_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/getopt_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/getopt_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/getopt-cdefs_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/getopt-cdefs_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/getopt-core_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/getopt-core_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/getopt-ext_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/getopt-ext_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-core_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-core_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-ext_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-ext_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/getprogname_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/getprogname_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/getprogname_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/gettext_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/gettext_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_a.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_b.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_c.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_a.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_b.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_c.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_d.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_e.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_f.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_g.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_h.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_i.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_k.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_l.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_m.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_n.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_o.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_p.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_r.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_s.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_t.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_u.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_v.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_w.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_x.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_y.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_d.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_e.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_enum.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_eval.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_f.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_func_a.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_func_b.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_func_c.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_func_d.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_func_e.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_func_f.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_func_g.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_func_h.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_func.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_func_i.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_func_l.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_func_m.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_func_n.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_func_o.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_func_p.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_func_q.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_func_r.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_func_s.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_func_t.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_func_u.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_func_x.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_g.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_h.html -https://dhcpd-pools.sourceforge.net/doxygen/globals.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_i.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_k.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_l.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_m.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_n.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_o.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_p.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_q.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_r.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_s.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_t.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_type.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_u.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_vars.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_v.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_w.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_x.html -https://dhcpd-pools.sourceforge.net/doxygen/globals_y.html -https://dhcpd-pools.sourceforge.net/doxygen/graph_legend.html -https://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/hash_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/index.html -https://dhcpd-pools.sourceforge.net/doxygen/inet_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/inet_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/inet__pton_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/intprops_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/intprops_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/introduction_8dox.html -https://dhcpd-pools.sourceforge.net/doxygen/isnan_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/isnand_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/isnanf_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/isnanl_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/itold_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/limits_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/limits_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/limits_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/limits_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/localcharset_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/localcharset_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/localcharset_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/lseek_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/malloc_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/malloca_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/malloca_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/malloca_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/math_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/math_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/math_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/math_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/math_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/mbrtowc_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/mbsinit_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/memchr_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/minmax_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/minmax_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/mktime_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/mktime-internal_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/mktime-internal_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/mustach_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/mustach_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/mustach_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/netinet__in_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/netinet__in_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/__Noreturn_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/__Noreturn_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/nstrftime_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/other_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/output_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/pathmax_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/pathmax_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/progname_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/progname_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/progname_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/quote_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/quote_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/realloc_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/sampleoutput.html -https://dhcpd-pools.sourceforge.net/doxygen/search -https://dhcpd-pools.sourceforge.net/doxygen/search/all_0.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_10.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_11.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_12.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_13.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_14.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_15.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_16.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_17.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_18.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_1.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_2.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_3.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_4.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_5.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_6.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_7.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_8.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_9.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_a.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_b.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_c.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_d.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_e.html -https://dhcpd-pools.sourceforge.net/doxygen/search/all_f.html -https://dhcpd-pools.sourceforge.net/doxygen/search/classes_0.html -https://dhcpd-pools.sourceforge.net/doxygen/search/classes_1.html -https://dhcpd-pools.sourceforge.net/doxygen/search/classes_2.html -https://dhcpd-pools.sourceforge.net/doxygen/search/classes_3.html -https://dhcpd-pools.sourceforge.net/doxygen/search/classes_4.html -https://dhcpd-pools.sourceforge.net/doxygen/search/classes_5.html -https://dhcpd-pools.sourceforge.net/doxygen/search/classes_6.html -https://dhcpd-pools.sourceforge.net/doxygen/search/classes_7.html -https://dhcpd-pools.sourceforge.net/doxygen/search/classes_8.html -https://dhcpd-pools.sourceforge.net/doxygen/search/classes_9.html -https://dhcpd-pools.sourceforge.net/doxygen/search/classes_a.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_0.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_10.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_11.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_12.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_13.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_14.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_15.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_16.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_17.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_1.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_2.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_3.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_4.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_5.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_6.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_7.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_8.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_9.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_a.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_b.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_c.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_d.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_e.html -https://dhcpd-pools.sourceforge.net/doxygen/search/defines_f.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enums_0.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enums_1.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enums_2.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enums_3.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enums_4.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enums_5.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enums_6.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_0.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_1.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_2.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_3.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_4.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_5.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_6.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_7.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_8.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_9.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_a.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_b.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_c.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_d.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_e.html -https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_f.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_0.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_10.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_11.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_12.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_13.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_14.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_15.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_16.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_1.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_2.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_3.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_4.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_5.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_6.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_7.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_8.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_9.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_a.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_b.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_c.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_d.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_e.html -https://dhcpd-pools.sourceforge.net/doxygen/search/files_f.html -https://dhcpd-pools.sourceforge.net/doxygen/search/functions_0.html -https://dhcpd-pools.sourceforge.net/doxygen/search/functions_10.html -https://dhcpd-pools.sourceforge.net/doxygen/search/functions_11.html -https://dhcpd-pools.sourceforge.net/doxygen/search/functions_12.html -https://dhcpd-pools.sourceforge.net/doxygen/search/functions_13.html -https://dhcpd-pools.sourceforge.net/doxygen/search/functions_14.html -https://dhcpd-pools.sourceforge.net/doxygen/search/functions_1.html -https://dhcpd-pools.sourceforge.net/doxygen/search/functions_2.html -https://dhcpd-pools.sourceforge.net/doxygen/search/functions_3.html -https://dhcpd-pools.sourceforge.net/doxygen/search/functions_4.html -https://dhcpd-pools.sourceforge.net/doxygen/search/functions_5.html -https://dhcpd-pools.sourceforge.net/doxygen/search/functions_6.html -https://dhcpd-pools.sourceforge.net/doxygen/search/functions_7.html -https://dhcpd-pools.sourceforge.net/doxygen/search/functions_8.html -https://dhcpd-pools.sourceforge.net/doxygen/search/functions_9.html -https://dhcpd-pools.sourceforge.net/doxygen/search/functions_a.html -https://dhcpd-pools.sourceforge.net/doxygen/search/functions_b.html -https://dhcpd-pools.sourceforge.net/doxygen/search/functions_c.html -https://dhcpd-pools.sourceforge.net/doxygen/search/functions_d.html -https://dhcpd-pools.sourceforge.net/doxygen/search/functions_e.html -https://dhcpd-pools.sourceforge.net/doxygen/search/functions_f.html -https://dhcpd-pools.sourceforge.net/doxygen/search/nomatches.html -https://dhcpd-pools.sourceforge.net/doxygen/search/search.css -https://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_0.html -https://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_1.html -https://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_2.html -https://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_3.html -https://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_4.html -https://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_5.html -https://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_6.html -https://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_7.html -https://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_8.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_0.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_10.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_11.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_12.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_13.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_14.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_15.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_16.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_1.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_2.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_3.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_4.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_5.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_6.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_7.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_8.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_9.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_a.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_b.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_c.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_d.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_e.html -https://dhcpd-pools.sourceforge.net/doxygen/search/variables_f.html -https://dhcpd-pools.sourceforge.net/doxygen/setenv_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/socket_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/socket_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/sort_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/stat_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/stat_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/stat_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/stat-w32_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/stat-w32_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/stat-w32_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/stdalign_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/stdalign_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/stdbool_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/stdbool_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/stddef_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/stddef_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/stdint_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/stdint_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/stdio_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/stdio_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/stdio_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/stdio_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/stdio-impl_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/stdio-impl_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/stdlib_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/stdlib_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/stdlib_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/stdlib_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/stpncpy_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/strdup_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/streq_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/streq_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/strerror_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/strftime_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/strftime_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/string_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/string_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/string_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/string_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/stripslash_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/strstr_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/strtod_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/structconf__t.html -https://dhcpd-pools.sourceforge.net/doxygen/structexpl.html -https://dhcpd-pools.sourceforge.net/doxygen/struct__getopt__data.html -https://dhcpd-pools.sourceforge.net/doxygen/structiovec.html -https://dhcpd-pools.sourceforge.net/doxygen/structleases__t.html -https://dhcpd-pools.sourceforge.net/doxygen/structmsghdr.html -https://dhcpd-pools.sourceforge.net/doxygen/structmustach__itf.html -https://dhcpd-pools.sourceforge.net/doxygen/structoption.html -https://dhcpd-pools.sourceforge.net/doxygen/structoutput__helper__t.html -https://dhcpd-pools.sourceforge.net/doxygen/structoutput__sort.html -https://dhcpd-pools.sourceforge.net/doxygen/structquoting__options.html -https://dhcpd-pools.sourceforge.net/doxygen/structrange__t.html -https://dhcpd-pools.sourceforge.net/doxygen/structshared__network__t.html -https://dhcpd-pools.sourceforge.net/doxygen/structslotvec.html -https://dhcpd-pools.sourceforge.net/doxygen/structsockaddr__storage.html -https://dhcpd-pools.sourceforge.net/doxygen/structtimespec.html -https://dhcpd-pools.sourceforge.net/doxygen/struct____time__t__must__be__integral.html -https://dhcpd-pools.sourceforge.net/doxygen/structtm__zone.html -https://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/sys__stat_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/sys__stat_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/sys__types_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/sys__types_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/sys__uio_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/sys__uio_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/tabs.css -https://dhcpd-pools.sourceforge.net/doxygen/time_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/time_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/time_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/time_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/timegm_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/time-internal_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/time-internal_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/time__r_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/types_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/types_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/tzset_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/uio_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/uio_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/unionipaddr__t.html -https://dhcpd-pools.sourceforge.net/doxygen/unionmemory__double.html -https://dhcpd-pools.sourceforge.net/doxygen/unionrpl__max__align__t.html -https://dhcpd-pools.sourceforge.net/doxygen/unistd_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/unistd_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/unistd_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/unistd_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/unistd_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/unsetenv_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/unused-parameter_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/unused-parameter_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/verify_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/verify_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/warn-on-use_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/warn-on-use_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/wchar_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/wchar_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/wchar_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/wchar_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/wctype_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/wctype_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/wctype-h_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/xalloc-die_8c.html -https://dhcpd-pools.sourceforge.net/doxygen/xalloc-oversized_8h.html -https://dhcpd-pools.sourceforge.net/doxygen/xalloc-oversized_8h_source.html -https://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c.html +http://dhcpd-pools.sourceforge.net/ +http://dhcpd-pools.sourceforge.net/dhcpd-pools.awk +http://dhcpd-pools.sourceforge.net/man.html +http://dhcpd-pools.sourceforge.net/doxygen/alloca_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/alloca_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/alloca_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/alloca_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/analyze_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/annotated.html +http://dhcpd-pools.sourceforge.net/doxygen/arg-nonnull_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/arg-nonnull_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/arpa__inet_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/arpa__inet_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/basename-lgpl_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/c_09_09defs_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/c_09_09defs_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/classes.html +http://dhcpd-pools.sourceforge.net/doxygen/close_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/closeout_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/closeout_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/closeout_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/config_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/config_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/configmake_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/configmake_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/c-strcasecmp_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/c-strcaseeq_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/c-strcaseeq_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/c-strncasecmp_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/dir_000000_000001.html +http://dhcpd-pools.sourceforge.net/doxygen/dir_000001_000002.html +http://dhcpd-pools.sourceforge.net/doxygen/dir_1dacc5f4fcb865f1d9e042339dad3519.html +http://dhcpd-pools.sourceforge.net/doxygen/dir_97aefd0d527b934f1d99a682da8fe6a9.html +http://dhcpd-pools.sourceforge.net/doxygen/dir_fb441f6c77667ce4c9ebd4a5c47eafac.html +http://dhcpd-pools.sourceforge.net/doxygen/dirname_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/dirname_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/dirname-lgpl_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/dosname_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/dosname_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/doxygen.css +http://dhcpd-pools.sourceforge.net/doxygen/errno_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/errno_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/error_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/error_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/error_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/exitfail_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/exitfail_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/exitfail_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/fclose_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/fdopen_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/fflush_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/filename_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/filename_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/files.html +http://dhcpd-pools.sourceforge.net/doxygen/flexmember_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/flexmember_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/float_09_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/float_09_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/float_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/float_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/float_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/fopen_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/fpending_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/fpending_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/fpending_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/fpurge_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/freading_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/freading_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/freading_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/fseek_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/fseeko_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/fstat_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/ftell_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/ftello_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/functions_func.html +http://dhcpd-pools.sourceforge.net/doxygen/functions.html +http://dhcpd-pools.sourceforge.net/doxygen/functions_vars.html +http://dhcpd-pools.sourceforge.net/doxygen/getdata_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt1_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt-cdefs_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt-cdefs_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt-core_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt-core_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt-ext_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt-ext_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-core_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-core_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-ext_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-ext_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/gettext_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/gettext_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_a.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_b.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_c.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_a.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_b.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_c.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_d.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_e.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_f.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_g.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_h.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_i.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_k.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_l.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_m.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_n.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_o.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_p.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_r.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_s.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_t.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_u.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_v.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_w.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_x.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_y.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_d.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_e.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_enum.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_eval.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_f.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_a.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_b.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_c.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_d.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_e.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_f.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_g.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_h.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_i.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_l.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_m.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_n.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_o.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_p.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_q.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_r.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_s.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_t.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_u.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_x.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_g.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_h.html +http://dhcpd-pools.sourceforge.net/doxygen/globals.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_i.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_k.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_l.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_m.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_n.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_o.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_p.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_q.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_r.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_s.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_t.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_type.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_u.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_vars.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_v.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_w.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_x.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_y.html +http://dhcpd-pools.sourceforge.net/doxygen/graph_legend.html +http://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/hash_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/index.html +http://dhcpd-pools.sourceforge.net/doxygen/inet_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/inet_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/inet__pton_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/intprops_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/intprops_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/introduction_8dox.html +http://dhcpd-pools.sourceforge.net/doxygen/isnan_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/isnand_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/isnanf_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/isnanl_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/itold_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/limits_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/limits_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/limits_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/limits_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/lseek_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/malloc_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/malloca_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/malloca_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/malloca_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/math_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/math_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/math_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/math_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/math_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/mbrtowc_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/mbsinit_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/memchr_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/minmax_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/minmax_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/mktime_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/mktime-internal_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/mktime-internal_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/mustach_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/mustach_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/mustach_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/netinet__in_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/netinet__in_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/__Noreturn_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/__Noreturn_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/nstrftime_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/other_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/output_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/pathmax_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/pathmax_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/progname_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/progname_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/progname_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/quote_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/quote_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/realloc_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/sampleoutput.html +http://dhcpd-pools.sourceforge.net/doxygen/search +http://dhcpd-pools.sourceforge.net/doxygen/search/all_0.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_10.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_11.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_12.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_13.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_14.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_15.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_16.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_17.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_18.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_1.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_2.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_3.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_4.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_5.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_6.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_7.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_8.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_9.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_a.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_b.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_c.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_d.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_e.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_f.html +http://dhcpd-pools.sourceforge.net/doxygen/search/classes_0.html +http://dhcpd-pools.sourceforge.net/doxygen/search/classes_1.html +http://dhcpd-pools.sourceforge.net/doxygen/search/classes_2.html +http://dhcpd-pools.sourceforge.net/doxygen/search/classes_3.html +http://dhcpd-pools.sourceforge.net/doxygen/search/classes_4.html +http://dhcpd-pools.sourceforge.net/doxygen/search/classes_5.html +http://dhcpd-pools.sourceforge.net/doxygen/search/classes_6.html +http://dhcpd-pools.sourceforge.net/doxygen/search/classes_7.html +http://dhcpd-pools.sourceforge.net/doxygen/search/classes_8.html +http://dhcpd-pools.sourceforge.net/doxygen/search/classes_9.html +http://dhcpd-pools.sourceforge.net/doxygen/search/classes_a.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_0.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_10.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_11.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_12.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_13.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_14.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_15.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_16.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_17.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_1.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_2.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_3.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_4.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_5.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_6.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_7.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_8.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_9.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_a.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_b.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_c.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_d.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_e.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_f.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enums_0.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enums_1.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enums_2.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enums_3.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enums_4.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enums_5.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enums_6.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_0.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_1.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_2.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_3.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_4.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_5.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_6.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_7.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_8.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_9.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_a.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_b.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_c.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_d.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_e.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_f.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_0.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_10.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_11.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_12.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_13.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_14.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_15.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_16.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_1.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_2.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_3.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_4.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_5.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_6.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_7.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_8.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_9.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_a.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_b.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_c.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_d.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_e.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_f.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_0.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_10.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_11.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_12.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_13.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_14.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_1.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_2.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_3.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_4.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_5.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_6.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_7.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_8.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_9.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_a.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_b.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_c.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_d.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_e.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_f.html +http://dhcpd-pools.sourceforge.net/doxygen/search/nomatches.html +http://dhcpd-pools.sourceforge.net/doxygen/search/search.css +http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_0.html +http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_1.html +http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_2.html +http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_3.html +http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_4.html +http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_5.html +http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_6.html +http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_7.html +http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_8.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_0.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_10.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_11.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_12.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_13.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_14.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_15.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_16.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_1.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_2.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_3.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_4.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_5.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_6.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_7.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_8.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_9.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_a.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_b.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_c.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_d.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_e.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_f.html +http://dhcpd-pools.sourceforge.net/doxygen/setenv_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/socket_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/socket_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/sort_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/stat_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/stat_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/stat_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stat-w32_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/stat-w32_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/stat-w32_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stdalign_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/stdalign_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stdbool_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/stdbool_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stddef_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/stddef_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stdint_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/stdint_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stdio_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/stdio_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stdio_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/stdio_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stdio-impl_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/stdio-impl_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stpncpy_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/strdup_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/streq_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/streq_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/strerror_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/strftime_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/strftime_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/string_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/string_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/string_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/string_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stripslash_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/strstr_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/strtod_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/structconf__t.html +http://dhcpd-pools.sourceforge.net/doxygen/structexpl.html +http://dhcpd-pools.sourceforge.net/doxygen/struct__getopt__data.html +http://dhcpd-pools.sourceforge.net/doxygen/structiovec.html +http://dhcpd-pools.sourceforge.net/doxygen/structleases__t.html +http://dhcpd-pools.sourceforge.net/doxygen/structmsghdr.html +http://dhcpd-pools.sourceforge.net/doxygen/structmustach__itf.html +http://dhcpd-pools.sourceforge.net/doxygen/structoption.html +http://dhcpd-pools.sourceforge.net/doxygen/structoutput__helper__t.html +http://dhcpd-pools.sourceforge.net/doxygen/structoutput__sort.html +http://dhcpd-pools.sourceforge.net/doxygen/structquoting__options.html +http://dhcpd-pools.sourceforge.net/doxygen/structrange__t.html +http://dhcpd-pools.sourceforge.net/doxygen/structshared__network__t.html +http://dhcpd-pools.sourceforge.net/doxygen/structslotvec.html +http://dhcpd-pools.sourceforge.net/doxygen/structsockaddr__storage.html +http://dhcpd-pools.sourceforge.net/doxygen/structtimespec.html +http://dhcpd-pools.sourceforge.net/doxygen/struct____time__t__must__be__integral.html +http://dhcpd-pools.sourceforge.net/doxygen/structtm__zone.html +http://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/sys__stat_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/sys__stat_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/sys__types_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/sys__types_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/sys__uio_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/sys__uio_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/tabs.css +http://dhcpd-pools.sourceforge.net/doxygen/time_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/time_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/time_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/time_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/timegm_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/time-internal_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/time-internal_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/time__r_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/types_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/types_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/tzset_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/uio_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/uio_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/unionipaddr__t.html +http://dhcpd-pools.sourceforge.net/doxygen/unionmemory__double.html +http://dhcpd-pools.sourceforge.net/doxygen/unionrpl__max__align__t.html +http://dhcpd-pools.sourceforge.net/doxygen/unistd_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/unistd_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/unistd_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/unistd_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/unistd_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/unsetenv_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/unused-parameter_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/unused-parameter_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/verify_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/verify_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/warn-on-use_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/warn-on-use_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/wchar_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/wchar_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/wchar_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/wchar_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/wctype_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/wctype_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/wctype-h_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/xalloc-die_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/xalloc-oversized_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/xalloc-oversized_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c.html