commit 1277724428ecb177e0455797e5574d1e8c5f1c6c Author: Jacek Konieczny <j.koniec...@eggsoft.pl> Date: Mon Aug 7 14:17:01 2017 +0200
Use upstream dhclient-script It contains interface-mtu support and probably other fixes. Release: 2 dhclient_hooks_d.patch | 56 +++++++++ dhcp-dhclient-script | 331 ------------------------------------------------- dhcp.spec | 38 +++--- 3 files changed, 75 insertions(+), 350 deletions(-) --- diff --git a/dhcp.spec b/dhcp.spec index b9bdb6a..3eaf121 100644 --- a/dhcp.spec +++ b/dhcp.spec @@ -20,7 +20,7 @@ Summary(pl.UTF-8): Serwer DHCP Summary(pt_BR.UTF-8): Servidor DHCP (Protocolo de configuração dinâmica de hosts) Name: dhcp Version: %{ver}%{pverdot} -Release: 1 +Release: 2 Epoch: 4 License: MIT Group: Networking/Daemons @@ -35,19 +35,18 @@ Source10: %{name}.schema Source11: %{name}-README.ldap Source12: draft-ietf-dhc-ldap-schema-01.txt Source13: %{name}d-conf-to-ldap -Source14: %{name}-dhclient-script Patch0: %{name}-release-by-ifup.patch -Patch2: %{name}-3.0.3-x-option.patch -Patch3: %{name}-paths.patch -Patch5: %{name}-timeouts.patch -Patch6: %{name}-options.patch -Patch9: %{name}-errwarn-message.patch -Patch10: %{name}-memory.patch -Patch11: %{name}-dhclient-decline-backoff.patch -Patch12: %{name}-unicast-bootp.patch -Patch16: %{name}-default-requested-options.patch - -Patch19: %{name}-manpages.patch +Patch1: %{name}-3.0.3-x-option.patch +Patch2: %{name}-paths.patch +Patch3: %{name}-timeouts.patch +Patch4: %{name}-options.patch +Patch5: %{name}-errwarn-message.patch +Patch6: %{name}-memory.patch +Patch7: %{name}-dhclient-decline-backoff.patch +Patch8: %{name}-unicast-bootp.patch +Patch9: %{name}-default-requested-options.patch +Patch10: %{name}-manpages.patch +Patch11: dhclient_hooks_d.patch URL: http://www.isc.org/sw/dhcp/ BuildRequires: autoconf BuildRequires: automake @@ -200,17 +199,17 @@ komunikacji z działającym serwerem ISC DHCP i jego kontroli. #in that environment to handle options they do not know about in advance - #this is a Red Hat extension to support dhcdbd and NetworkManager. # however, fedora doesn't have this patch anymore, so can drop? -#%%patch2 -p1 +#%%patch1 -p1 +%patch2 -p1 %patch3 -p1 +%patch4 -p1 %patch5 -p1 %patch6 -p1 +%patch7 -p1 +%patch8 -p1 %patch9 -p1 %patch10 -p1 %patch11 -p1 -%patch12 -p1 -%patch16 -p1 - -%patch19 -p1 # Copy in documentation and example scripts for LDAP patch to dhcpd cp -a %{SOURCE11} README.ldap @@ -266,7 +265,8 @@ install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/dhcpd6 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/dhcp-relay install %{SOURCE4} $RPM_BUILD_ROOT/etc/sysconfig/dhcpd install %{SOURCE5} $RPM_BUILD_ROOT/etc/sysconfig/dhcp-relay -install %{SOURCE14} $RPM_BUILD_ROOT/sbin/dhclient-script + +install client/scripts/linux $RPM_BUILD_ROOT/sbin/dhclient-script install server/dhcpd.conf.example $RPM_BUILD_ROOT%{_sysconfdir}/dhcpd.conf install doc/examples/dhcpd-dhcpv6.conf $RPM_BUILD_ROOT%{_sysconfdir}/dhcpd6.conf diff --git a/dhclient_hooks_d.patch b/dhclient_hooks_d.patch new file mode 100644 index 0000000..0544373 --- /dev/null +++ b/dhclient_hooks_d.patch @@ -0,0 +1,56 @@ +diff -dur dhcp-4.3.5.orig/client/scripts/linux dhcp-4.3.5/client/scripts/linux +--- dhcp-4.3.5.orig/client/scripts/linux 2016-09-27 21:16:50.000000000 +0200 ++++ dhcp-4.3.5/client/scripts/linux 2017-08-07 13:26:44.000000000 +0200 +@@ -69,24 +69,44 @@ + + # Must be used on exit. Invokes the local dhcp client exit hooks, if any. + exit_with_hooks() { ++ + exit_status=$1 +- if [ -f /etc/dhclient-exit-hooks ]; then +- . /etc/dhclient-exit-hooks +- fi +-# probably should do something with exit status of the local script ++ ++ for i in /etc/dhclient-exit-hooks.d/*[!~,] ; do ++ [ -f "$i" ] || continue ++ # Don't run *.{rpmsave,rpmorig,rpmnew,swp} scripts ++ [ "${i%.rpmsave}" != "${i}" ] && continue ++ [ "${i%.rpmorig}" != "${i}" ] && continue ++ [ "${i%.rpmnew}" != "${i}" ] && continue ++ [ "${i%.swp}" != "${i}" ] && continue ++ [ "${i%,v}" != "${i}" ] && continue ++ ++ . ${i} ++ done ++ ++ # probably should do something with exit status of the local script + exit $exit_status + } + + # Invoke the local dhcp client enter hooks, if they exist. +-if [ -f /etc/dhclient-enter-hooks ]; then +- exit_status=0 +- . /etc/dhclient-enter-hooks ++exit_status=0 ++for i in /etc/dhclient-enter-hooks.d/*[!~,] ; do ++ [ -f "$i" ] || continue ++ # Don't run *.{rpmsave,rpmorig,rpmnew,swp} scripts ++ [ "${i%.rpmsave}" != "${i}" ] && continue ++ [ "${i%.rpmorig}" != "${i}" ] && continue ++ [ "${i%.rpmnew}" != "${i}" ] && continue ++ [ "${i%.swp}" != "${i}" ] && continue ++ [ "${i%,v}" != "${i}" ] && continue ++ ++ . ${i} ++ + # allow the local script to abort processing of this state + # local script must set exit_status variable to nonzero. + if [ $exit_status -ne 0 ]; then + exit $exit_status + fi +-fi ++done + + ### + ### DHCPv4 Handlers diff --git a/dhcp-dhclient-script b/dhcp-dhclient-script deleted file mode 100644 index 692b1cb..0000000 --- a/dhcp-dhclient-script +++ /dev/null @@ -1,331 +0,0 @@ -#!/bin/sh -# dhclient-script for Linux. Dan Halbert, March, 1997. -# Updated for Linux 2.[12] by Brian J. Murrell, January 1999. - -# Notes: - -# 0. This script is based on the netbsd script supplied with dhcp-970306. - -# 1. This script was modified to work with iproute2 - -if [ -n "$dhc_dbus" -a -x /usr/bin/dbus-send ]; then - /usr/bin/dbus-send \ - --system \ - --dest=com.redhat.dhcp \ - --type=method_call \ - /com/redhat/dhcp/$interface \ - com.redhat.dhcp.set \ - 'string:'"$(unset PATH SHLVL _ PWD dhc_dbus ; env)" - - if [ $(($dhc_dbus & 31)) -eq 31 ]; then - exit 0 - fi -fi - -calc_prefix() -{ - local old_IFS=$IFS - IFS='.' - local netmask=$(echo $1) - IFS=$old_IFS - - local ret=0 - local endp=0 - for n in $netmask ; do - for i in 128 64 32 16 8 4 2 1 ; do - if [ $(($n & $i)) -ne 0 ]; then - if [ $endp -eq 0 ]; then - ret=$(($ret + 1)) - else - echo "32" - return - fi - else - endp=1 - fi - done - done - echo $ret -} - -make_resolv_conf() { - if [ -n "$new_domain_name_servers" ]; then - :> /etc/resolv.conf.dhclient - chmod 644 /etc/resolv.conf.dhclient - if [ -n "$new_domain_search" ]; then - echo search $new_domain_search >> /etc/resolv.conf.dhclient - elif [ -n "$new_domain_name" ]; then - # Note that the DHCP 'Domain Name Option' is really just a domain - # name, and that this practice of using the domain name option as - # a search path is both nonstandard and deprecated. - echo search $new_domain_name >> /etc/resolv.conf.dhclient - fi - for nameserver in $new_domain_name_servers; do - echo nameserver $nameserver >>/etc/resolv.conf.dhclient - done - mv /etc/resolv.conf.dhclient /etc/resolv.conf - elif [ -n "${new_dhcp6_name_servers}" ] ; then - :> /etc/resolv.conf.dhclient6 - chmod 644 /etc/resolv.conf.dhclient6 - - if [ "x${new_dhcp6_domain_search}" != x ] ; then - echo search ${new_dhcp6_domain_search} >> /etc/resolv.conf.dhclient6 - fi - for nameserver in ${new_dhcp6_name_servers} ; do - echo nameserver ${nameserver} >> /etc/resolv.conf.dhclient6 - done - mv /etc/resolv.conf.dhclient6 /etc/resolv.conf - fi -} - -# Must be used on exit. -# Invokes the local dhcp client exit hooks, if any. -exit_with_hooks() { - exit_status=$1 - - for i in /etc/dhclient-exit-hooks.d/*[!~,] ; do - [ -f "$i" ] || continue - # Don't run *.{rpmsave,rpmorig,rpmnew,swp} scripts - [ "${i%.rpmsave}" != "${i}" ] && continue - [ "${i%.rpmorig}" != "${i}" ] && continue - [ "${i%.rpmnew}" != "${i}" ] && continue - [ "${i%.swp}" != "${i}" ] && continue - [ "${i%,v}" != "${i}" ] && continue - - . ${i} - done - # probably should do something with exit status of the local script - exit $exit_status -} - -exit_status=0 -for i in /etc/dhclient-enter-hooks.d/*[!~,] ; do - [ -f "$i" ] || continue - # Don't run *.{rpmsave,rpmorig,rpmnew,swp} scripts - [ "${i%.rpmsave}" != "${i}" ] && continue - [ "${i%.rpmorig}" != "${i}" ] && continue - [ "${i%.rpmnew}" != "${i}" ] && continue - [ "${i%.swp}" != "${i}" ] && continue - [ "${i%,v}" != "${i}" ] && continue - - . ${i} - - if [ $exit_status -ne 0 ]; then - exit $exit_status - fi -done - -### -### DHCPv4 Handlers -### - -if [ -n "$new_broadcast_address" ]; then - new_broadcast_arg="broadcast $new_broadcast_address" -fi -if [ -n "$old_broadcast_address" ]; then - old_broadcast_arg="broadcast $old_broadcast_address" -fi -if [ -n "$new_subnet_mask" ]; then - new_subnet_arg="$(calc_prefix $new_subnet_mask)" -fi -if [ -n "$old_subnet_mask" ]; then - old_subnet_arg="$(calc_prefix $old_subnet_mask)" -fi -if [ -n "$alias_subnet_mask" ]; then - alias_subnet_arg="$(calc_prefix $alias_subnet_mask)" -fi -[ -z "new_subnet_arg" ] && $new_subnet_arg="32" -[ -z "old_subnet_arg" ] && $old_subnet_arg="32" -[ -z "alias_subnet_arg" ] && $alias_subnet_arg="32" - -case "$reason" in - MEDIUM) - # Linux doesn't do mediums (ok, ok, media). - ;; - - PREINIT) - if [ -n "$alias_ip_address" ]; then - /sbin/ip addr del $alias_ip_address/$alias_subnet_arg dev $interface - fi - /sbin/ip link set $interface up - - # We need to give the kernel some time to get the interface up. - sleep 1 - ;; - - BOUND|RENEW|REBIND|REBOOT) - current_hostname=`hostname` - if [ -z "$current_hostname" ]; then - hostname $new_host_name - elif [ "$current_hostname" = "$old_host_name" -a \ - "$new_host_name" != "$old_host_name" ]; then - hostname $new_host_name - fi - - if [ -n "$old_ip_address" -a -n "$alias_ip_address" -a \ - "$alias_ip_address" != "$old_ip_address" ]; then - # Possible new alias. Remove old alias. - /sbin/ip addr del $alias_ip_address/$alias_subnet_arg dev $interface - fi - if [ -n "$old_ip_address" -a "$old_ip_address" != "$new_ip_address" ]; then - # IP address changed. - /sbin/ip addr del $old_ip_address/$old_subnet_arg dev $interface - for router in $old_routers; do - /sbin/ip route del default via $router - done - if [ -n "$old_static_routes" ]; then - set -- $old_static_routes - while [ $# -gt 1 ]; do - /sbin/ip route del $1 via $2 - shift; shift - done - fi - fi - if [ -z "$old_ip_address" -o "$old_ip_address" != "$new_ip_address" -o \ - "$reason" = "BOUND" -o "$reason" = "REBOOT" ]; then - /sbin/ip addr add $new_ip_address/$new_subnet_arg $new_broadcast_arg dev $interface - # Add a network route to the computed network address. - for router in $new_routers; do - /sbin/ip route add default via $router - done - if [ -n "$new_static_routes" ]; then - set -- $new_static_routes - while [ $# -gt 1 ]; do - /sbin/ip route add $1 via $2 - shift; shift - done - fi - fi - if [ -n "$alias_ip_address" -a "$new_ip_address" != "$alias_ip_address" ]; then - /sbin/ip addr add $alias_ip_address/$alias_subnet_arg dev $interface - fi - make_resolv_conf - ;; - - EXPIRE|FAIL|RELEASE|STOP) - if [ -n "$alias_ip_address" ]; then - # Turn off alias interface. - /sbin/ip addr del $alias_ip_address/$alias_subnet_arg dev $interface - fi - if [ -n "$old_ip_address" ]; then - /sbin/ip addr del $old_ip_address/$old_subnet_arg dev $interface - for router in $old_routers; do - /sbin/ip route del default via $router - done - if [ -n "$old_static_routes" ]; then - set -- $old_static_routes - while [ $# -gt 1 ]; do - /sbin/ip route del $1 via $2 - shift; shift - done - fi - fi - if [ -n "$alias_ip_address" ]; then - /sbin/ip addr add $alias_ip_address/$alias_subnet_arg dev $interface - fi - ;; - - TIMEOUT) - if [ -n "$alias_ip_address" ]; then - /sbin/ip addr del $alias_ip_address/$alias_subnet_arg dev $interface - fi - /sbin/ip addr add $new_ip_address/$new_subnet_arg $new_broadcast_arg dev $interface - - set $new_routers - if ping -q -c 1 $1; then - if [ "$new_ip_address" != "$alias_ip_address" ] && \ - [ -n "$alias_ip_address" ]; then - /sbin/ip addr add $alias_ip_address/$alias_subnet_arg dev $interface - fi - for router in $new_routers; do - /sbin/ip route add default via $router - done - if [ -n "$new_static_routes" ]; then - set -- $new_static_routes - while [ $# -gt 1 ]; do - /sbin/ip route add $1 via $2 - shift; shift - done - fi - make_resolv_conf - exit_with_hooks 0 - fi - - /sbin/ip addr del $new_ip_address/$new_subnet_arg dev $interface - for router in $old_routers; do - /sbin/ip route del default via $router - done - if [ -n "$old_static_routes" ]; then - set -- $old_static_routes - while [ $# -gt 1 ]; do - /sbin/ip route del $1 via $2 - shift; shift - done - fi - exit_with_hooks 1 - ;; - - PREINIT6) - # Ensure interface is up. - /sbin/ip link set ${interface} up - - # Remove any stale addresses from aborted clients. - /sbin/ip -f inet6 addr flush dev ${interface} scope global permanent - - exit_with_hooks 0 - ;; - BOUND6) - if [ x${new_ip6_address} = x ] || [ x${new_ip6_prefixlen} = x ] ; then - exit_with_hooks 2; - fi - - /sbin/ip -f inet6 addr add ${new_ip6_address}/${new_ip6_prefixlen} \ - dev ${interface} scope global - - # Check for nameserver options. - make_resolv_conf - - exit_with_hooks 0 - ;; - - RENEW6|REBIND6) - # Make sure nothing has moved around on us. - - # Nameservers/domains/etc. - if [ "x${new_dhcp6_name_servers}" != "x${old_dhcp6_name_servers}" ] || - [ "x${new_dhcp6_domain_search}" != "x${old_dhcp6_domain_search}" ] ; then - make_resolv_conf - fi - - exit_with_hooks 0 - ;; - - DEPREF6) - if [ x${new_ip6_prefixlen} = x ] ; then - exit_with_hooks 2; - fi - - # There doesn't appear to be a way to update an addr to indicate - # preference. - # /sbin/ip -f inet6 addr ??? ${new_ip6_address}/${new_ip6_prefixlen} \ - # dev ${interface} scope global deprecated? - - exit_with_hooks 0 - ;; - - EXPIRE6|RELEASE6|STOP6) - if [ x${old_ip6_address} = x ] || [ x${old_ip6_prefixlen} = x ] ; then - exit_with_hooks 2; - fi - - /sbin/ip -f inet6 addr del ${old_ip6_address}/${old_ip6_prefixlen} \ - dev ${interface} - - exit_with_hooks 0 - ;; - - *) - ;; -esac - -exit_with_hooks 0 ================================================================ ---- gitweb: http://git.pld-linux.org/gitweb.cgi/packages/dhcp.git/commitdiff/1277724428ecb177e0455797e5574d1e8c5f1c6c _______________________________________________ pld-cvs-commit mailing list pld-cvs-commit@lists.pld-linux.org http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit