[packages/dhcp] Use upstream dhclient-script

jajcus jajcus at pld-linux.org
Mon Aug 7 14:17:47 CEST 2017


commit 1277724428ecb177e0455797e5574d1e8c5f1c6c
Author: Jacek Konieczny <j.konieczny at 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



More information about the pld-cvs-commit mailing list