- Enable LDAP/SSL support in dhcpd (#467740)

- Do not calculate a prefix for an address we did not receive (#473885)
- Removed libdhcp4client because libdhcp has been removed from Fedora
This commit is contained in:
David Cantrell 2008-12-04 22:08:05 +00:00
parent e2381ffe75
commit 5c6578cbb4
6 changed files with 67 additions and 1500 deletions

View File

@ -215,7 +215,7 @@ dhconfig() {
[ ! "${old_ip_address}" = "${new_ip_address}" ]; then [ ! "${old_ip_address}" = "${new_ip_address}" ]; then
# IP address changed. Bringing down the interface will delete all # IP address changed. Bringing down the interface will delete all
# routes, and clear the ARP cache. # routes, and clear the ARP cache.
ip -family inet addr flush dev ${interface} ip -family inet addr flush dev ${interface} >/dev/null 2>&1
ip -family inet link set dev ${interface} down ip -family inet link set dev ${interface} down
fi fi
@ -319,7 +319,7 @@ dhconfig() {
if [ ! "${new_ip_address}" = "${alias_ip_address}" ] && if [ ! "${new_ip_address}" = "${alias_ip_address}" ] &&
[ -n "${alias_ip_address}" ]; then [ -n "${alias_ip_address}" ]; then
ip -family inet addr flush dev ${interface}:0 ip -family inet addr flush dev ${interface}:0 >/dev/null 2>&1
ip -family inet addr add ${alias_ip_address}/${alias_prefix} dev ${interface}:0 ip -family inet addr add ${alias_ip_address}/${alias_prefix} dev ${interface}:0
ip route replace ${alias_ip_address}/32 dev ${interface}:0 ip route replace ${alias_ip_address}/32 dev ${interface}:0
fi fi
@ -413,6 +413,15 @@ dhconfig() {
fi fi
} }
get_prefix() {
ip="${1}"
nm="${2}"
if [ -n "${ip}" -a -n "${nm}" ]; then
ipcalc -s -p ${ip} ${nm} | cut -d '=' -f 2
fi
}
# #
# ### MAIN # ### MAIN
@ -450,24 +459,13 @@ if [ -f /etc/sysconfig/networking/network ]; then
. /etc/sysconfig/networking/network . /etc/sysconfig/networking/network
fi fi
CONFIG="${interface}" CONFIG="/etc/sysconfig/network-scripts/ifcfg-${interface}"
need_config ${CONFIG} need_config ${CONFIG}
source_config >/dev/null 2>&1
if [ -f "${CONFIG}" ]; then new_prefix="$(get_prefix ${new_ip_address} ${new_subnet_mask})"
source_config old_prefix="$(get_prefix ${old_ip_address} ${new_subnet_mask})"
fi alias_prefix="$(get_prefix ${alias_ip_address} ${alias_subnet_mask})"
if [ -n "${new_subnet_mask}" ]; then
new_prefix="$(ipcalc -p ${new_ip_address} ${new_subnet_mask} | cut -d '=' -f 2)"
fi
if [ -n "${old_subnet_mask}" ]; then
old_prefix="$(ipcalc -p ${old_ip_address} ${new_subnet_mask} | cut -d '=' -f 2)"
fi
if [ -n "${alias_subnet_mask}" ]; then
alias_prefix="$(ipcalc -p ${alias_ip_address} ${alias_subnet_mask} | cut -d '=' -f 2)"
fi
case "${reason}" in case "${reason}" in
MEDIUM) MEDIUM)
@ -484,7 +482,7 @@ case "${reason}" in
if [ "${keep_old_ip}" = "yes" ]; then if [ "${keep_old_ip}" = "yes" ]; then
ip -family inet link set ${interface} up ip -family inet link set ${interface} up
else else
ip -family inet addr flush dev ${interface} ip -family inet addr flush dev ${interface} >/dev/null 2>&1
ip -family inet link set ${interface} up ip -family inet link set ${interface} up
fi fi
@ -556,7 +554,7 @@ case "${reason}" in
if [ -n "${old_ip_address}" ]; then if [ -n "${old_ip_address}" ]; then
# Shut down interface, which will delete routes and clear arp cache. # Shut down interface, which will delete routes and clear arp cache.
ip -family inet addr flush dev ${interface} ip -family inet addr flush dev ${interface} >/dev/null 2>&1
ip -family inet link set ${interface} down ip -family inet link set ${interface} down
fi fi
@ -571,7 +569,7 @@ case "${reason}" in
TIMEOUT) TIMEOUT)
if [ -n "${new_routers}" ]; then if [ -n "${new_routers}" ]; then
if [ -n "${alias_ip_address}" ]; then if [ -n "${alias_ip_address}" ]; then
ip -family inet addr flush dev ${interface}:0 ip -family inet addr flush dev ${interface}:0 >/dev/null 2>&1
fi fi
ip -family inet addr add ${new_ip_address}/${new_prefix} broadcast ${new_broadcast_address} dev ${interface} ip -family inet addr add ${new_ip_address}/${new_prefix} broadcast ${new_broadcast_address} dev ${interface}
@ -582,7 +580,7 @@ case "${reason}" in
exit_with_hooks 0 exit_with_hooks 0
fi fi
ip -family inet addr flush dev ${interface} ip -family inet addr flush dev ${interface} >/dev/null 2>&1
ip -family inet link set ${interface} down ip -family inet link set ${interface} down
exit_with_hooks 1 exit_with_hooks 1
else else

File diff suppressed because it is too large Load Diff

132
dhcp.spec
View File

@ -1,10 +1,23 @@
# vendor string (e.g., Fedora, EL) # vendor string (e.g., Fedora, EL)
%define vvendor Fedora %define vvendor Fedora
# Make it easy for package rebuilders to select LPF or sockets
%define netmethod USE_LPF
%define with_USE_SOCKETS %{?_with_USE_SOCKETS: 1} %{?!_with_USE_SOCKETS: 0}
%if %{with_USE_SOCKETS}
%define netmethod USE_SOCKETS
%endif
%define with_USE_LPF %{?_with_USE_LPF: 1} %{?!_with_USE_LPF: 0}
%if %{with_USE_LPF}
%define netmethod USE_LPF
%endif
Summary: DHCP (Dynamic Host Configuration Protocol) server and relay agent Summary: DHCP (Dynamic Host Configuration Protocol) server and relay agent
Name: dhcp Name: dhcp
Version: 4.0.0 Version: 4.0.0
Release: 31%{?dist} Release: 32%{?dist}
# NEVER CHANGE THE EPOCH on this package. The previous maintainer (prior to # NEVER CHANGE THE EPOCH on this package. The previous maintainer (prior to
# dcantrell maintaining the package) made incorrect use of the epoch and # dcantrell maintaining the package) made incorrect use of the epoch and
# that's why it is at 12 now. It should have never been used, but it was. # that's why it is at 12 now. It should have never been used, but it was.
@ -16,15 +29,12 @@ URL: http://isc.org/products/DHCP/
Source0: ftp://ftp.isc.org/isc/%{name}/%{name}-%{version}.tar.gz Source0: ftp://ftp.isc.org/isc/%{name}/%{name}-%{version}.tar.gz
Source1: dhcpd.init Source1: dhcpd.init
Source2: dhcrelay.init Source2: dhcrelay.init
Source3: libdhcp4client.pc Source3: README.ldap
Source5: README.ldap Source4: draft-ietf-dhc-ldap-schema-01.txt
Source6: draft-ietf-dhc-ldap-schema-01.txt Source5: dhcpd-conf-to-ldap
Source7: dhcpd-conf-to-ldap
Source8: dhclient-script Source8: dhclient-script
Source9: dhcp4client.h Source9: dhcp.schema
Source10: libdhcp_control.h Source10: get-ldap-patch.sh
Source11: dhcp.schema
Source12: get-ldap-patch.sh
Patch0: %{name}-4.0.0-errwarn-message.patch Patch0: %{name}-4.0.0-errwarn-message.patch
Patch1: %{name}-4.0.0-ldap-configuration.patch Patch1: %{name}-4.0.0-ldap-configuration.patch
@ -44,11 +54,10 @@ Patch14: %{name}-4.0.0-manpages.patch
Patch15: %{name}-4.0.0-paths.patch Patch15: %{name}-4.0.0-paths.patch
Patch16: %{name}-4.0.0-NetworkManager-crash.patch Patch16: %{name}-4.0.0-NetworkManager-crash.patch
Patch17: %{name}-4.0.0-CLOEXEC.patch Patch17: %{name}-4.0.0-CLOEXEC.patch
Patch18: %{name}-4.0.0-libdhcp4client.patch Patch18: %{name}-4.0.0-inherit-leases.patch
Patch19: %{name}-4.0.0-inherit-leases.patch Patch19: %{name}-4.0.0-garbage-chars.patch
Patch20: %{name}-4.0.0-garbage-chars.patch Patch20: %{name}-4.0.0-port-validation.patch
Patch21: %{name}-4.0.0-port-validation.patch Patch21: %{name}-4.0.0-invalid-dhclient-conf.patch
Patch22: %{name}-4.0.0-invalid-dhclient-conf.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: autoconf BuildRequires: autoconf
@ -101,29 +110,17 @@ Requires: %{name} = %{epoch}:%{version}-%{release}
Header files and API documentation for using the ISC DHCP libraries. The Header files and API documentation for using the ISC DHCP libraries. The
libdhcpctl and libomapi static libraries are also included in this package. libdhcpctl and libomapi static libraries are also included in this package.
%package -n libdhcp4client
Summary: ISC DHCP IPv4 client in a library for invocation from other programs
Group: Development/Libraries
%description -n libdhcp4client
The Internet Software Consortium (ISC) Dynamic Host Configuration Protocol
(DHCP) Internet Protocol version 4 (IPv4) client software in a library
suitable for linkage with and invocation by other programs.
%package -n libdhcp4client-devel
Summary: Header files for development with the ISC DHCP IPv4 client library
Group: Development/Libraries
Requires: dhcp-devel = %{epoch}:%{version}-%{release}
Requires: libdhcp4client = %{epoch}:%{version}-%{release}
Requires: openldap-devel
Requires: pkgconfig
%description -n libdhcp4client-devel
Header files for development with the Internet Software Consortium (ISC)
Dynamic Host Configuration Protocol (DHCP) Internet Protocol version 4 (IPv4)
client library.
%prep %prep
case "%{netmethod}" in
USE_LPF|USE_SOCKETS)
continue ;;
*)
echo >&2
echo "ERROR: Only --with options supported: USE_LPF, USE_SOCKETS" >&2
echo >&2
exit 1 ;;
esac
%setup -q %setup -q
# Replace the standard ISC warning message about requesting help with an # Replace the standard ISC warning message about requesting help with an
@ -196,36 +193,27 @@ client library.
# Make sure all open file descriptors are closed-on-exec for SELinux (#446632) # Make sure all open file descriptors are closed-on-exec for SELinux (#446632)
%patch17 -p1 %patch17 -p1
# Add the libdhcp4client target (library version of dhclient) # If we have an active lease, do not down the interface (#453982)
%patch18 -p1 %patch18 -p1
# If we have an active lease, do not down the interface (#453982)
%patch19 -p1
# Fix 'garbage in format string' error (#450052) # Fix 'garbage in format string' error (#450052)
%patch20 -p1 %patch19 -p1
# Validate port numbers specified for dhclient, dhcpd, and dhcrelay # Validate port numbers specified for dhclient, dhcpd, and dhcrelay
# to make sure they are within 1-65535, inclusive. (#438149) # to make sure they are within 1-65535, inclusive. (#438149)
%patch21 -p1 %patch20 -p1
# The sample dhclient.conf should say 'supersede domain-search' (#467955) # The sample dhclient.conf should say 'supersede domain-search' (#467955)
%patch22 -p1 %patch21 -p1
# Copy in documentation and example scripts for LDAP patch to dhcpd # Copy in documentation and example scripts for LDAP patch to dhcpd
%{__install} -p -m 0644 %{SOURCE5} . %{__install} -p -m 0644 %{SOURCE3} .
%{__install} -p -m 0644 %{SOURCE6} doc/ %{__install} -p -m 0644 %{SOURCE4} doc/
%{__install} -p -m 0755 %{SOURCE7} contrib/ %{__install} -p -m 0755 %{SOURCE5} contrib/
# Copy in the Fedora/RHEL dhclient script # Copy in the Fedora/RHEL dhclient script
%{__install} -p -m 0755 %{SOURCE8} client/scripts/linux %{__install} -p -m 0755 %{SOURCE8} client/scripts/linux
# Copy in the libdhcp4client headers and Makefile.dist
%{__install} -p -m 0644 %{SOURCE9} includes/
# Copy in libdhcp_control.h to the isc-dhcp includes directory
%{__install} -p -m 0644 %{SOURCE10} includes/isc-dhcp/
# Ensure we don't pick up Perl as a dependency from the scripts and modules # Ensure we don't pick up Perl as a dependency from the scripts and modules
# in the contrib directory (we copy this to /usr/share/doc in the final # in the contrib directory (we copy this to /usr/share/doc in the final
# package). # package).
@ -278,7 +266,7 @@ autoheader
automake --foreign --add-missing --copy automake --foreign --add-missing --copy
%build %build
CFLAGS="%{optflags} -fPIC -D_GNU_SOURCE" \ CFLAGS="%{optflags} -fPIC -D_GNU_SOURCE -DUSE_SSL=1 -D%{netmethod}=1" \
%configure \ %configure \
--disable-dhcpv6 \ --disable-dhcpv6 \
--with-srv-lease-file=%{_localstatedir}/lib/dhcpd/dhcpd.leases \ --with-srv-lease-file=%{_localstatedir}/lib/dhcpd/dhcpd.leases \
@ -288,15 +276,11 @@ CFLAGS="%{optflags} -fPIC -D_GNU_SOURCE" \
--with-relay-pid-file=%{_localstatedir}/run/dhcrelay.pid --with-relay-pid-file=%{_localstatedir}/run/dhcrelay.pid
%{__make} %{?_smp_mflags} %{__make} %{?_smp_mflags}
%{__sed} 's/@DHCP_VERSION@/%{version}/' < %{SOURCE3} > libdhcp4client.pc
%install %install
%{__rm} -rf %{buildroot} %{__rm} -rf %{buildroot}
%{__make} install DESTDIR=%{buildroot} %{__make} install DESTDIR=%{buildroot}
# Remove files we don't want # Remove files we don't want
%{__rm} -rf %{buildroot}%{_libdir}/libdhcp4client.a
%{__rm} -rf %{buildroot}%{_libdir}/libdhcp4client.la
%{__rm} %{buildroot}%{_sysconfdir}/dhclient.conf %{__rm} %{buildroot}%{_sysconfdir}/dhclient.conf
# Install correct dhclient-script # Install correct dhclient-script
@ -304,19 +288,6 @@ CFLAGS="%{optflags} -fPIC -D_GNU_SOURCE" \
%{__mv} %{buildroot}%{_sbindir}/dhclient %{buildroot}/sbin/dhclient %{__mv} %{buildroot}%{_sbindir}/dhclient %{buildroot}/sbin/dhclient
%{__install} -p -m 0755 client/scripts/linux %{buildroot}/sbin/dhclient-script %{__install} -p -m 0755 client/scripts/linux %{buildroot}/sbin/dhclient-script
# Install pkg-config file
%{__install} -p -m 0644 %{SOURCE10} %{buildroot}%{_includedir}/isc-dhcp/
%{__install} -p -m 0644 -D libdhcp4client.pc %{buildroot}%{_libdir}/pkgconfig/libdhcp4client.pc
# Install headers for libdhcp4client-devel
%{__mkdir} -p %{buildroot}%{_includedir}/dhcp4client/minires
%{__install} -p -m 0644 %{SOURCE9} %{buildroot}%{_includedir}/dhcp4client
for hdr in cdefs.h ctrace.h dhcp.h dhcp6.h dhcpd.h dhctoken.h failover.h \
heap.h inet.h minires/minires.h minires/res_update.h \
minires/resolv.h osdep.h site.h statement.h tree.h ; do
%{__install} -p -m 0644 includes/${hdr} %{buildroot}%{_includedir}/dhcp4client/${hdr}
done
# Install init scripts # Install init scripts
%{__mkdir} -p %{buildroot}%{_initrddir} %{__mkdir} -p %{buildroot}%{_initrddir}
%{__install} -p -m 0755 %{SOURCE1} %{buildroot}%{_initrddir}/dhcpd %{__install} -p -m 0755 %{SOURCE1} %{buildroot}%{_initrddir}/dhcpd
@ -356,7 +327,7 @@ EOF
# Install dhcp.schema for LDAP configuration # Install dhcp.schema for LDAP configuration
%{__mkdir} -p %{buildroot}%{_sysconfdir}/openldap/schema %{__mkdir} -p %{buildroot}%{_sysconfdir}/openldap/schema
%{__install} -p -m 0644 -D %{SOURCE11} %{buildroot}%{_sysconfdir}/openldap/schema %{__install} -p -m 0644 -D %{SOURCE9} %{buildroot}%{_sysconfdir}/openldap/schema
%clean %clean
%{__rm} -rf %{buildroot} %{__rm} -rf %{buildroot}
@ -387,10 +358,6 @@ if [ $1 -ge 1 ]; then
/sbin/service dhcrelay condrestart >/dev/null 2>&1 || : /sbin/service dhcrelay condrestart >/dev/null 2>&1 || :
fi fi
%post -n libdhcp4client -p /sbin/ldconfig
%postun -n libdhcp4client -p /sbin/ldconfig
%files %files
%defattr(-,root,root,-) %defattr(-,root,root,-)
%doc LICENSE README README.ldap RELNOTES dhcpd.conf.sample %doc LICENSE README README.ldap RELNOTES dhcpd.conf.sample
@ -438,17 +405,12 @@ fi
%attr(0644,root,root) %{_mandir}/man3/dhcpctl.3.gz %attr(0644,root,root) %{_mandir}/man3/dhcpctl.3.gz
%attr(0644,root,root) %{_mandir}/man3/omapi.3.gz %attr(0644,root,root) %{_mandir}/man3/omapi.3.gz
%files -n libdhcp4client
%defattr(0755,root,root,0755)
%{_libdir}/libdhcp4client-*.*.so.*
%files -n libdhcp4client-devel
%defattr(0644,root,root,0755)
%{_includedir}/dhcp4client
%{_libdir}/pkgconfig/libdhcp4client.pc
%{_libdir}/libdhcp4client.so
%changelog %changelog
* Wed Dec 03 2008 David Cantrell <dcantrell@redhat.com> - 12:4.0.0-32
- Enable LDAP/SSL support in dhcpd (#467740)
- Do not calculate a prefix for an address we did not receive (#473885)
- Removed libdhcp4client because libdhcp has been removed from Fedora
* Wed Oct 29 2008 David Cantrell <dcantrell@redhat.com> - 12:4.0.0-31 * Wed Oct 29 2008 David Cantrell <dcantrell@redhat.com> - 12:4.0.0-31
- Use O_CLOEXEC in open(2) calls and "e" mode in fopen(3) calls, build - Use O_CLOEXEC in open(2) calls and "e" mode in fopen(3) calls, build
with -D_GNU_SOURCE so we pick up O_CLOEXEC (#468984) with -D_GNU_SOURCE so we pick up O_CLOEXEC (#468984)

View File

@ -1,30 +0,0 @@
/* dhcp4client.h
*
* Interface to the ISC dhcp IPv4 client libdhcp4client library.
*
* Copyright (C) 2006 Red Hat, Inc. All rights reserved.
*
* This copyrighted material is made available to anyone wishing to use,
* modify, copy, or redistribute it subject to the terms and conditions of
* the GNU General Public License v.2, or (at your option) any later version.
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY expressed or implied, including the implied warranties 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, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA. Any Red Hat trademarks that are incorporated in the
* source code or documentation are not subject to the GNU General Public
* License and may only be used or replicated with the express permission of
* Red Hat, Inc.
*
* Red Hat Author(s): Jason Vas Dias
* David Cantrell <dcantrell@redhat.com>
*/
/* include libdhcp_control.h or libdhcp.h for this */
extern struct libdhcp_control_s;
/* The ISC IPv4 DHCP client main() function */
extern int dhcpv4_client(struct libdhcp_control_s *dhc_ctl,
int argc, char **argv, char **envp);

View File

@ -1,5 +0,0 @@
Name: libdhcp4client
Description: ISC DHCP IPv4 client library
Version: @DHCP_VERSION@
Libs: -ldhcp4client
Cflags: -I/usr/include/dhcp4client

View File

@ -1,132 +0,0 @@
/* libdhcp_control.h
*
* DHCP client control API for libdhcp, a minimal interface to the
* ISC dhcp IPv4 client libdhcp4client library,
* and to the dhcpv6 DHCPv6 client libdhcp6client library.
*
* Each DHCP client library must include this file to be controlled
* by libdhcp.
*
* Copyright (C) 2006 Red Hat, Inc. All rights reserved.
*
* This copyrighted material is made available to anyone wishing to use,
* modify, copy, or redistribute it subject to the terms and conditions of
* the GNU General Public License v.2, or (at your option) any later version.
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY expressed or implied, including the implied warranties 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, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA. Any Red Hat trademarks that are incorporated in the
* source code or documentation are not subject to the GNU General Public
* License and may only be used or replicated with the express permission of
* Red Hat, Inc.
*
* Red Hat Author(s): Jason Vas Dias
* David Cantrell <dcantrell@redhat.com>
*/
#ifndef LIBDHCP_CONTROL_H
#define LIBDHCP_CONTROL_H
#include <stdarg.h>
#include <stdint.h>
#define LOG_FATAL 8
typedef enum dhcp_state_e {
/* DHCPv4 client states
* third callback arg will be a 'struct client_state *'
*/
DHC4_NBI, /* failed: no broadcast interfaces found */
DHC4_PREINIT, /* configuration started - bring the interface "UP" */
DHC4_BOUND, /* lease obtained */
DHC4_RENEW, /* lease renewed */
DHC4_REBOOT, /* have valid lease, but now obtained a different one */
DHC4_REBIND, /* new, different lease */
DHC4_STOP, /* remove old lease */
DHC4_MEDIUM, /* media selection begun */
DHC4_TIMEOUT, /* timed out contacting DHCP server */
DHC4_FAIL, /* all attempts to contact server timed out, sleeping */
DHC4_EXPIRE, /* lease has expired, renewing */
DHC4_RELEASE, /* releasing lease */
/* This state raised by both clients: */
DHC_TIMEDOUT, /* libdhcp_control timeout has been exceeded */
/* DHCPv6 client states: */
DHC6_BOUND, /* new lease obtained - arg is optinfo * */
DHC6_REBIND, /* existing expired lease rebound - arg is optinfo * */
DHC6_RELEASE /* existing lease expired - arg is dhcp6_iaidaddr*/
} DHCP_State;
struct libdhcp_control_s;
/* ala syslog(3): LOG_EMERG=0 - LOG_DEBUG=7 (+ LOG_FATAL=8 : finished -> 1) */
typedef int (*LIBDHCP_Error_Handler) (struct libdhcp_control_s *ctl,
int priority, const char *fmt,
va_list ap);
/* The DHCP clients will call the users' callback on important state change
* events, with the second arg set to the client DHCP_State, and the third
* arg set to a client specific pointer as described below. */
typedef int (*LIBDHCP_Callback) (struct libdhcp_control_s *control,
enum dhcp_state_e, void*);
typedef struct libdhcp_control_s {
/* the DHCP clients' main loop calls this on state changes */
LIBDHCP_Callback callback;
/* LIBDHCP_Capability bits to enable */
uint16_t capability;
/* set to one to make clients exit their main loop */
uint8_t finished;
/* set to one to decline the lease (DHCPv4 only) */
uint8_t decline;
/* (timeout+now) == time after which clients MUST return */
time_t timeout;
/* clients set this to time(0) on entering main loop */
time_t now;
/* user data pointer */
void *arg;
LIBDHCP_Error_Handler eh;
} LIBDHCP_Control;
/* DHCP client "capabilities" */
typedef enum libdhcp_capability_e {
/* use / do not use persistent lease database files */
DHCP_USE_LEASE_DATABASE = 1,
/* use / do not use pid file */
DHCP_USE_PID_FILE = 2,
/*
* DHCPv6 supports these capabilities in process,
* while the DHCPv4 client will fork and exec the dhclient-script to
* implement them if these bits are set - otherwise, if no bits are set,
* the callback is called and the script is not run.
*/
/* configure interfaces UP/DOWN as required */
DHCP_CONFIGURE_INTERFACES = 4,
/* configure interface addresses as required */
DHCP_CONFIGURE_ADDRESSES = 8,
/* configure routes as required */
DHCP_CONFIGURE_ROUTES = 16,
/* configure resolv.conf as required */
DHCP_CONFIGURE_RESOLVER = 32,
/* DHCPv6 only: */
/* configure radvd.conf & restart radvd as required */
DHCP_CONFIGURE_RADVD = 64,
} LIBDHCP_Capability;
#endif