rpms/dhcp/devel dhcp-4.1.1-retransmission.patch, NONE, 1.1 dhcp.spec, 1.299, 1.300

Jiří Popelka jpopelka at fedoraproject.org
Thu Mar 25 18:46:08 UTC 2010


Author: jpopelka

Update of /cvs/pkgs/rpms/dhcp/devel
In directory cvs01.phx2.fedoraproject.org:/tmp/cvs-serv27328

Modified Files:
	dhcp.spec 
Added Files:
	dhcp-4.1.1-retransmission.patch 
Log Message:
* Thu Mar 25 2010 Jiri Popelka <jpopelka at redhat.com> - 12:4.1.1-16
- In client initiated message exchanges stop retransmission
  upon reaching the MRD rather than at some point after it (#559153)


dhcp-4.1.1-retransmission.patch:
 dhc6.c |   23 +++++++++++------------
 1 file changed, 11 insertions(+), 12 deletions(-)

--- NEW FILE dhcp-4.1.1-retransmission.patch ---
diff -up dhcp-4.1.1/client/dhc6.c.retransmission dhcp-4.1.1/client/dhc6.c
--- dhcp-4.1.1/client/dhc6.c.retransmission	2010-03-25 18:32:17.000000000 +0100
+++ dhcp-4.1.1/client/dhc6.c	2010-03-25 18:33:54.000000000 +0100
@@ -354,7 +354,7 @@ dhc6_retrans_init(struct client_state *c
 static void
 dhc6_retrans_advance(struct client_state *client)
 {
-	struct timeval elapsed;
+	struct timeval elapsed, elapsed_after_RT;
 
 	/* elapsed = cur - start */
 	elapsed.tv_sec = cur_tv.tv_sec - client->start_time.tv_sec;
@@ -371,6 +371,8 @@ dhc6_retrans_advance(struct client_state
 		elapsed.tv_sec += 1;
 		elapsed.tv_usec -= 1000000;
 	}
+	elapsed_after_RT.tv_sec = elapsed.tv_sec;
+	elapsed_after_RT.tv_usec = elapsed.tv_usec;
 
 	/*
 	 * RT for each subsequent message transmission is based on the previous
@@ -408,13 +410,10 @@ dhc6_retrans_advance(struct client_state
 		elapsed.tv_usec -= 1000000;
 	}
 	if (elapsed.tv_sec >= client->MRD) {
-		/*
-		 * wake at RT + cur = start + MRD
-		 */
-		client->RT = client->MRD +
-			(client->start_time.tv_sec - cur_tv.tv_sec);
-		client->RT = client->RT * 100 +
-			(client->start_time.tv_usec - cur_tv.tv_usec) / 10000;
+		client->RT = client->MRD - elapsed_after_RT.tv_sec;
+		client->RT = client->RT * 100 - elapsed_after_RT.tv_usec / 10000;
+		if (client->RT < 0)
+			client->RT = 0;
 	}
 	client->txcount++;
 }
@@ -1502,7 +1501,7 @@ do_init6(void *input)
 		elapsed.tv_usec += 1000000;
 	}
 	/* Check if finished (-1 argument). */
-	if ((client->MRD != 0) && (elapsed.tv_sec > client->MRD)) {
+	if ((client->MRD != 0) && (elapsed.tv_sec >= client->MRD)) {
 		log_info("Max retransmission duration exceeded.");
 		client->state = S_STOPPED;
 		if (client->active_lease != NULL) {
@@ -1922,7 +1921,7 @@ do_info_request6(void *input)
 		elapsed.tv_usec += 1000000;
 	}
 	/* Check if finished (-1 argument). */
-	if ((client->MRD != 0) && (elapsed.tv_sec > client->MRD)) {
+	if ((client->MRD != 0) && (elapsed.tv_sec >= client->MRD)) {
 		log_info("Max retransmission duration exceeded.");
 		exit(2);
 	}
@@ -2043,7 +2042,7 @@ do_confirm6(void *input)
 		elapsed.tv_sec -= 1;
 		elapsed.tv_usec += 1000000;
 	}
-	if ((client->MRD != 0) && (elapsed.tv_sec > client->MRD)) {
+	if ((client->MRD != 0) && (elapsed.tv_sec >= client->MRD)) {
 		log_info("Max retransmission duration exceeded.");
 		start_bound(client);
 		return;
@@ -3290,7 +3289,7 @@ do_select6(void *input)
 		elapsed.tv_sec -= 1;
 		elapsed.tv_usec += 1000000;
 	}
-	if ((client->MRD != 0) && (elapsed.tv_sec > client->MRD)) {
+	if ((client->MRD != 0) && (elapsed.tv_sec >= client->MRD)) {
 		log_info("Max retransmission duration exceeded.");
 		abort = ISC_TRUE;
 	}


Index: dhcp.spec
===================================================================
RCS file: /cvs/pkgs/rpms/dhcp/devel/dhcp.spec,v
retrieving revision 1.299
retrieving revision 1.300
diff -u -p -r1.299 -r1.300
--- dhcp.spec	24 Mar 2010 11:06:45 -0000	1.299
+++ dhcp.spec	25 Mar 2010 18:46:07 -0000	1.300
@@ -13,7 +13,7 @@
 Summary:  Dynamic host configuration protocol software
 Name:     dhcp
 Version:  %{basever}
-Release:  15%{?dist}
+Release:  16%{?dist}
 # NEVER CHANGE THE EPOCH on this package.  The previous maintainer (prior to
 # 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.
@@ -56,6 +56,7 @@ Patch20:  %{name}-4.1.1-capability.patch
 Patch21:  %{name}-4.1.1-logpid.patch
 Patch22:  %{name}-4.1.1-UseMulticast.patch
 Patch23:  %{name}-4.1.1-sendDecline.patch
+Patch24:  %{name}-4.1.1-retransmission.patch
 
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires: autoconf
@@ -219,6 +220,10 @@ libdhcpctl and libomapi static libraries
 # as described in section 18.1.7 of RFC-3315 (#559147)
 %patch23 -p1 -b .sendDecline
 
+# In client initiated message exchanges stop retransmission
+# upon reaching the MRD rather than at some point after it (#559153)
+%patch24 -p1 -b .retransmission
+
 # Copy in documentation and example scripts for LDAP patch to dhcpd
 %{__install} -p -m 0755 ldap-for-dhcp-%{ldappatchver}/dhcpd-conf-to-ldap contrib/
 
@@ -501,6 +506,10 @@ fi
 %attr(0644,root,root) %{_mandir}/man3/omapi.3.gz
 
 %changelog
+* Thu Mar 25 2010 Jiri Popelka <jpopelka at redhat.com> - 12:4.1.1-16
+- In client initiated message exchanges stop retransmission
+  upon reaching the MRD rather than at some point after it (#559153)
+
 * Wed Mar 24 2010 Jiri Popelka <jpopelka at redhat.com> - 12:4.1.1-15
 - In dhclient-script check whether bound address
   passed duplicate address detection (DAD) (#559147)



More information about the scm-commits mailing list