- Fill in Elapsed Time Option in Release/Decline messages (#582939)
This commit is contained in:
parent
ed7e418d35
commit
33f7324460
@ -460,20 +460,24 @@ diff -up dhcp-4.1.1/client/dhclient.8.man dhcp-4.1.1/client/dhclient.8
|
|||||||
diff -up dhcp-4.1.1/client/dhclient.conf.5.man dhcp-4.1.1/client/dhclient.conf.5
|
diff -up dhcp-4.1.1/client/dhclient.conf.5.man dhcp-4.1.1/client/dhclient.conf.5
|
||||||
--- dhcp-4.1.1/client/dhclient.conf.5.man 2009-07-23 21:02:09.000000000 +0200
|
--- dhcp-4.1.1/client/dhclient.conf.5.man 2009-07-23 21:02:09.000000000 +0200
|
||||||
+++ dhcp-4.1.1/client/dhclient.conf.5 2010-02-25 17:43:16.000000000 +0100
|
+++ dhcp-4.1.1/client/dhclient.conf.5 2010-02-25 17:43:16.000000000 +0100
|
||||||
@@ -186,9 +186,9 @@ responding to the client send the client
|
@@ -184,11 +184,12 @@ are called \fIDHCP Options\fR. DHCP Opt
|
||||||
|
The request statement causes the client to request that any server
|
||||||
|
responding to the client send the client its values for the specified
|
||||||
options. Only the option names should be specified in the request
|
options. Only the option names should be specified in the request
|
||||||
statement - not option parameters. By default, the DHCP server
|
-statement - not option parameters. By default, the DHCP server
|
||||||
|
+statement - not option parameters. By default, the DHCPv4 client
|
||||||
requests the subnet-mask, broadcast-address, time-offset, routers,
|
requests the subnet-mask, broadcast-address, time-offset, routers,
|
||||||
-domain-name, domain-name-servers and host-name options. Note that if
|
-domain-name, domain-name-servers and host-name options. Note that if
|
||||||
-you enter a 'request' statement, you over-ride this default and these
|
-you enter a 'request' statement, you over-ride this default and these
|
||||||
-options will not be requested.
|
-options will not be requested.
|
||||||
+domain-name, domain-name-servers, host-name, nis-domain, nis-servers, ntp-servers,
|
+domain-name, domain-name-servers, host-name, nis-domain, nis-servers,
|
||||||
+and interface-mtu options. Note that if you enter a 'request' statement,
|
+ntp-servers and interface-mtu options. The DHCPv6 client requests by default
|
||||||
|
+name-servers and domain-search. Note that if you enter a 'request' statement,
|
||||||
+you over-ride this default and these options will not be requested.
|
+you over-ride this default and these options will not be requested.
|
||||||
.PP
|
.PP
|
||||||
In some cases, it may be desirable to send no parameter request list
|
In some cases, it may be desirable to send no parameter request list
|
||||||
at all. To do this, simply write the request statement but specify
|
at all. To do this, simply write the request statement but specify
|
||||||
@@ -239,17 +239,6 @@ than the default requested lease time, w
|
@@ -239,17 +240,6 @@ than the default requested lease time, w
|
||||||
obvious use for this statement is to send information to the server
|
obvious use for this statement is to send information to the server
|
||||||
that will allow it to differentiate between this client and other
|
that will allow it to differentiate between this client and other
|
||||||
clients or kinds of clients.
|
clients or kinds of clients.
|
||||||
@ -491,7 +495,7 @@ diff -up dhcp-4.1.1/client/dhclient.conf.5.man dhcp-4.1.1/client/dhclient.conf.5
|
|||||||
.SH DYNAMIC DNS
|
.SH DYNAMIC DNS
|
||||||
The client now has some very limited support for doing DNS updates
|
The client now has some very limited support for doing DNS updates
|
||||||
when a lease is acquired. This is prototypical, and probably doesn't
|
when a lease is acquired. This is prototypical, and probably doesn't
|
||||||
@@ -659,6 +659,18 @@ database and will record the media type
|
@@ -659,6 +649,18 @@ database and will record the media type
|
||||||
Whenever the client tries to renew the lease, it will use that same
|
Whenever the client tries to renew the lease, it will use that same
|
||||||
media type. The lease must expire before the client will go back to
|
media type. The lease must expire before the client will go back to
|
||||||
cycling through media types.
|
cycling through media types.
|
||||||
@ -510,7 +514,7 @@ diff -up dhcp-4.1.1/client/dhclient.conf.5.man dhcp-4.1.1/client/dhclient.conf.5
|
|||||||
.SH SAMPLE
|
.SH SAMPLE
|
||||||
The following configuration file is used on a laptop running NetBSD
|
The following configuration file is used on a laptop running NetBSD
|
||||||
1.3. The laptop has an IP alias of 192.5.5.213, and has one
|
1.3. The laptop has an IP alias of 192.5.5.213, and has one
|
||||||
@@ -680,10 +692,10 @@ interface "ep0" {
|
@@ -680,10 +682,10 @@ interface "ep0" {
|
||||||
send host-name "andare.fugue.com";
|
send host-name "andare.fugue.com";
|
||||||
send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
|
send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
|
||||||
send dhcp-lease-time 3600;
|
send dhcp-lease-time 3600;
|
||||||
|
46
dhcp-4.1.1-release6-elapsed.patch
Normal file
46
dhcp-4.1.1-release6-elapsed.patch
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
diff -up dhcp-4.1.1/client/dhc6.c.release6-elapsed dhcp-4.1.1/client/dhc6.c
|
||||||
|
--- dhcp-4.1.1/client/dhc6.c.release6-elapsed 2010-04-19 11:55:59.000000000 +0200
|
||||||
|
+++ dhcp-4.1.1/client/dhc6.c 2010-04-19 12:00:00.000000000 +0200
|
||||||
|
@@ -2174,7 +2174,7 @@ do_release6(void *input)
|
||||||
|
struct client_state *client;
|
||||||
|
struct data_string ds;
|
||||||
|
int send_ret;
|
||||||
|
- struct timeval tv;
|
||||||
|
+ struct timeval elapsed, tv;
|
||||||
|
|
||||||
|
client = input;
|
||||||
|
|
||||||
|
@@ -2194,6 +2194,14 @@ do_release6(void *input)
|
||||||
|
client->start_time.tv_usec = cur_tv.tv_usec;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* elapsed = cur - start */
|
||||||
|
+ elapsed.tv_sec = cur_tv.tv_sec - client->start_time.tv_sec;
|
||||||
|
+ elapsed.tv_usec = cur_tv.tv_usec - client->start_time.tv_usec;
|
||||||
|
+ if (elapsed.tv_usec < 0) {
|
||||||
|
+ elapsed.tv_sec -= 1;
|
||||||
|
+ elapsed.tv_usec += 1000000;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Don't use unicast as we don't know if we still have an
|
||||||
|
* available address with enough scope.
|
||||||
|
@@ -2210,6 +2218,18 @@ do_release6(void *input)
|
||||||
|
ds.buffer->data[0] = DHCPV6_RELEASE;
|
||||||
|
memcpy(ds.buffer->data + 1, client->dhcpv6_transaction_id, 3);
|
||||||
|
|
||||||
|
+ /* Form an elapsed option. */
|
||||||
|
+ /* Maximum value is 65535 1/100s coded as 0xffff. */
|
||||||
|
+ if ((elapsed.tv_sec < 0) || (elapsed.tv_sec > 655) ||
|
||||||
|
+ ((elapsed.tv_sec == 655) && (elapsed.tv_usec > 350000))) {
|
||||||
|
+ client->elapsed = 0xffff;
|
||||||
|
+ } else {
|
||||||
|
+ client->elapsed = elapsed.tv_sec * 100;
|
||||||
|
+ client->elapsed += elapsed.tv_usec / 10000;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ client->elapsed = htons(client->elapsed);
|
||||||
|
+
|
||||||
|
log_debug("XMT: Forming Release.");
|
||||||
|
make_client6_options(client, &client->sent_options,
|
||||||
|
client->active_lease, DHCPV6_RELEASE);
|
@ -1,6 +1,6 @@
|
|||||||
diff -up dhcp-4.1.1/client/dhc6.c.sendDecline dhcp-4.1.1/client/dhc6.c
|
diff -up dhcp-4.1.1/client/dhc6.c.sendDecline dhcp-4.1.1/client/dhc6.c
|
||||||
--- dhcp-4.1.1/client/dhc6.c.sendDecline 2009-07-25 00:04:51.000000000 +0200
|
--- dhcp-4.1.1/client/dhc6.c.sendDecline 2009-07-25 00:04:51.000000000 +0200
|
||||||
+++ dhcp-4.1.1/client/dhc6.c 2010-03-24 10:41:31.000000000 +0100
|
+++ dhcp-4.1.1/client/dhc6.c 2010-04-19 11:42:42.000000000 +0200
|
||||||
@@ -95,6 +95,8 @@ void do_select6(void *input);
|
@@ -95,6 +95,8 @@ void do_select6(void *input);
|
||||||
void do_refresh6(void *input);
|
void do_refresh6(void *input);
|
||||||
static void do_release6(void *input);
|
static void do_release6(void *input);
|
||||||
@ -45,7 +45,7 @@ diff -up dhcp-4.1.1/client/dhc6.c.sendDecline dhcp-4.1.1/client/dhc6.c
|
|||||||
- if (client->active_lease == NULL)
|
- if (client->active_lease == NULL)
|
||||||
- return;
|
- return;
|
||||||
+ if ((client->state == S_STOPPED) ||
|
+ if ((client->state == S_STOPPED) ||
|
||||||
+ (client->state == S_DECLINED)) {
|
+ (client->state == S_DECLINED)) {
|
||||||
+
|
+
|
||||||
+ if (client->active_lease != NULL) {
|
+ if (client->active_lease != NULL) {
|
||||||
+ dhc6_lease_destroy(&client->active_lease, MDL);
|
+ dhc6_lease_destroy(&client->active_lease, MDL);
|
||||||
@ -79,7 +79,7 @@ diff -up dhcp-4.1.1/client/dhc6.c.sendDecline dhcp-4.1.1/client/dhc6.c
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* XXX: maybe we should loop on the old values instead? */
|
/* XXX: maybe we should loop on the old values instead? */
|
||||||
@@ -4509,6 +4524,134 @@ start_bound(struct client_state *client)
|
@@ -4509,6 +4524,151 @@ start_bound(struct client_state *client)
|
||||||
dhc6_check_times(client);
|
dhc6_check_times(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,7 +122,7 @@ diff -up dhcp-4.1.1/client/dhc6.c.sendDecline dhcp-4.1.1/client/dhc6.c
|
|||||||
+ struct client_state *client;
|
+ struct client_state *client;
|
||||||
+ struct data_string ds;
|
+ struct data_string ds;
|
||||||
+ int send_ret;
|
+ int send_ret;
|
||||||
+ struct timeval tv;
|
+ struct timeval elapsed, tv;
|
||||||
+
|
+
|
||||||
+ client = input;
|
+ client = input;
|
||||||
+
|
+
|
||||||
@ -142,6 +142,14 @@ diff -up dhcp-4.1.1/client/dhc6.c.sendDecline dhcp-4.1.1/client/dhc6.c
|
|||||||
+ client->start_time.tv_usec = cur_tv.tv_usec;
|
+ client->start_time.tv_usec = cur_tv.tv_usec;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
+ /* elapsed = cur - start */
|
||||||
|
+ elapsed.tv_sec = cur_tv.tv_sec - client->start_time.tv_sec;
|
||||||
|
+ elapsed.tv_usec = cur_tv.tv_usec - client->start_time.tv_usec;
|
||||||
|
+ if (elapsed.tv_usec < 0) {
|
||||||
|
+ elapsed.tv_sec -= 1;
|
||||||
|
+ elapsed.tv_usec += 1000000;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
+ memset(&ds, 0, sizeof(ds));
|
+ memset(&ds, 0, sizeof(ds));
|
||||||
+ if (!buffer_allocate(&ds.buffer, 4, MDL)) {
|
+ if (!buffer_allocate(&ds.buffer, 4, MDL)) {
|
||||||
+ log_error("Unable to allocate memory for Decline.");
|
+ log_error("Unable to allocate memory for Decline.");
|
||||||
@ -153,6 +161,18 @@ diff -up dhcp-4.1.1/client/dhc6.c.sendDecline dhcp-4.1.1/client/dhc6.c
|
|||||||
+ ds.buffer->data[0] = DHCPV6_DECLINE;
|
+ ds.buffer->data[0] = DHCPV6_DECLINE;
|
||||||
+ memcpy(ds.buffer->data + 1, client->dhcpv6_transaction_id, 3);
|
+ memcpy(ds.buffer->data + 1, client->dhcpv6_transaction_id, 3);
|
||||||
+
|
+
|
||||||
|
+ /* Form an elapsed option. */
|
||||||
|
+ /* Maximum value is 65535 1/100s coded as 0xffff. */
|
||||||
|
+ if ((elapsed.tv_sec < 0) || (elapsed.tv_sec > 655) ||
|
||||||
|
+ ((elapsed.tv_sec == 655) && (elapsed.tv_usec > 350000))) {
|
||||||
|
+ client->elapsed = 0xffff;
|
||||||
|
+ } else {
|
||||||
|
+ client->elapsed = elapsed.tv_sec * 100;
|
||||||
|
+ client->elapsed += elapsed.tv_usec / 10000;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ client->elapsed = htons(client->elapsed);
|
||||||
|
+
|
||||||
+ log_debug("XMT: Forming Decline.");
|
+ log_debug("XMT: Forming Decline.");
|
||||||
+ make_client6_options(client, &client->sent_options,
|
+ make_client6_options(client, &client->sent_options,
|
||||||
+ client->active_lease, DHCPV6_DECLINE);
|
+ client->active_lease, DHCPV6_DECLINE);
|
||||||
@ -203,9 +223,6 @@ diff -up dhcp-4.1.1/client/dhc6.c.sendDecline dhcp-4.1.1/client/dhc6.c
|
|||||||
+ if (client->active_lease != NULL) {
|
+ if (client->active_lease != NULL) {
|
||||||
+ dhc6_lease_destroy(&client->active_lease, MDL);
|
+ dhc6_lease_destroy(&client->active_lease, MDL);
|
||||||
+ client->active_lease = NULL;
|
+ client->active_lease = NULL;
|
||||||
+ /* We should never wait for nothing!? */
|
|
||||||
+ if (stopping_finished())
|
|
||||||
+ exit(0);
|
|
||||||
+ }
|
+ }
|
||||||
+ start_init6(client);
|
+ start_init6(client);
|
||||||
+ return;
|
+ return;
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
Summary: Dynamic host configuration protocol software
|
Summary: Dynamic host configuration protocol software
|
||||||
Name: dhcp
|
Name: dhcp
|
||||||
Version: %{basever}
|
Version: %{basever}
|
||||||
Release: 16%{?dist}
|
Release: 17%{?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.
|
||||||
@ -57,6 +57,7 @@ Patch21: %{name}-4.1.1-logpid.patch
|
|||||||
Patch22: %{name}-4.1.1-UseMulticast.patch
|
Patch22: %{name}-4.1.1-UseMulticast.patch
|
||||||
Patch23: %{name}-4.1.1-sendDecline.patch
|
Patch23: %{name}-4.1.1-sendDecline.patch
|
||||||
Patch24: %{name}-4.1.1-retransmission.patch
|
Patch24: %{name}-4.1.1-retransmission.patch
|
||||||
|
Patch25: %{name}-4.1.1-release6-elapsed.patch
|
||||||
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||||
BuildRequires: autoconf
|
BuildRequires: autoconf
|
||||||
@ -224,6 +225,9 @@ libdhcpctl and libomapi static libraries are also included in this package.
|
|||||||
# upon reaching the MRD rather than at some point after it (#559153)
|
# upon reaching the MRD rather than at some point after it (#559153)
|
||||||
%patch24 -p1 -b .retransmission
|
%patch24 -p1 -b .retransmission
|
||||||
|
|
||||||
|
# Fill in Elapsed Time Option in Release message (#582939)
|
||||||
|
%patch25 -p1 -b .release6-elapsed
|
||||||
|
|
||||||
# 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 0755 ldap-for-dhcp-%{ldappatchver}/dhcpd-conf-to-ldap contrib/
|
%{__install} -p -m 0755 ldap-for-dhcp-%{ldappatchver}/dhcpd-conf-to-ldap contrib/
|
||||||
|
|
||||||
@ -506,6 +510,9 @@ fi
|
|||||||
%attr(0644,root,root) %{_mandir}/man3/omapi.3.gz
|
%attr(0644,root,root) %{_mandir}/man3/omapi.3.gz
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Apr 19 2010 Jiri Popelka <jpopelka@redhat.com> - 12:4.1.1-17
|
||||||
|
- Fill in Elapsed Time Option in Release/Decline messages (#582939)
|
||||||
|
|
||||||
* Thu Mar 25 2010 Jiri Popelka <jpopelka@redhat.com> - 12:4.1.1-16
|
* Thu Mar 25 2010 Jiri Popelka <jpopelka@redhat.com> - 12:4.1.1-16
|
||||||
- In client initiated message exchanges stop retransmission
|
- In client initiated message exchanges stop retransmission
|
||||||
upon reaching the MRD rather than at some point after it (#559153)
|
upon reaching the MRD rather than at some point after it (#559153)
|
||||||
|
Loading…
Reference in New Issue
Block a user