SHA256
1
0
forked from pool/dhcp

- Update to ISC dhcp-4.2.5 release. See RELNOTES file for the

complete list of changes -- digest of fixes not in dhcp-4.2.4-P2:
  - Correct code to calculate rebind timing values in client
    [ISC-Bugs #29062]
  - Fix some issues in the code for parsing and printing options.
    [ISC-Bugs #22625,#27289,#27296,#27314]
  - Update the memory leakage debug code to work with v6.
    [ISC-Bugs #30297]
  - Relax the requirements for deleting an A or AAAA record.
    This relaxation was codified in RFC 4703. [ISC-Bugs #30734]
  - Modify the failover code to handle incorrect peer names better.
    [ISC-Bugs #30320]
  - Fix a set of issues that were discovered via a code inspection
    tool. [ISC-Bugs #23833]
  - Parsing unquoted base64 strings improved. [ISC-Bugs #23048]
  - The client now passes information about the options it requested
    from the server to the script code via environment variables.
    These variables are of the form requested_<option_name>=1 with
    the option name being the same as used in the new_* and old_*
    variables. [ISC-Bugs #29068]
  - Check the status value when trying to read from a connection to
    see if it may have been closed.  If it appears closed don't try
    to read from it again.  This avoids a potential busy-wait like
    loop when the peer names are mismatched. [ISC-Bugs #31231]
  - Remove an unused variable to keep compilers happy.
    [ISC-Bugs #31983]
- Removed obsolete parsing and printing option patch
  [dhcp-4.2.4-parsing-and-printing-options.patch]
- Merged dhcp-4.2.2-dhclient-send-hostname-rml.diff
  [dhcp-4.2.5-dhclient-send-hostname-rml.patch]

OBS-URL: https://build.opensuse.org/package/show/network:dhcp/dhcp?expand=0&rev=96
This commit is contained in:
Marius Tomaschewski 2013-01-11 11:58:29 +00:00 committed by Git OBS Bridge
parent 6d8716fb66
commit 58f1b21b5d
13 changed files with 368 additions and 322 deletions

View File

@ -346,7 +346,7 @@ dhclient)
new_broadcast_arg="brd +"
fi
if [ x$new_interface_mtu != x -a \
$(( $new_interface_mtu )) -lt 576 ] ;
$(( $new_interface_mtu )) -le 576 ] ;
then
# 68 is the minimal legal value, but 576 the real life minimum
unset new_interface_mtu

View File

@ -0,0 +1,82 @@
From 633817ad53adbdeb4054b750e1f0bd4ce58f341b Mon Sep 17 00:00:00 2001
From: Marius Tomaschewski <mt@suse.de>
Date: Thu, 20 Dec 2012 10:25:53 +0100
Subject: [PATCH] Ignore SIGPIPE to not die in socket code
References: bnc#794578
Upstream: sent [ISC-Bugs #32222]
Installed SIG_IGN handler for SIGPIPE to not die before
the errno==EPIPE checks in the socket code are reached.
Unlike isc_app_start(), the isc_app_ctxstart() used by
dhcp, does not set any signal handlers.
Reported upstream as [ISC-Bugs #32222], IMO regression
to [ISC-Bugs #22269] as the SO_NOSIGPIPE socket option
isn't available e.g. on Linux.
Signed-off-by: Marius Tomaschewski <mt@suse.de>
---
omapip/isclib.c | 33 ++++++++++++++++++++++++++++++++-
1 Datei geändert, 32 Zeilen hinzugefügt(+), 1 Zeile entfernt(-)
diff --git a/omapip/isclib.c b/omapip/isclib.c
index 1534dde..27bb887 100644
--- a/omapip/isclib.c
+++ b/omapip/isclib.c
@@ -28,6 +28,7 @@
#include "dhcpd.h"
#include <sys/time.h>
+#include <signal.h>
dhcp_context_t dhcp_gbl_ctx;
@@ -67,6 +68,23 @@ isclib_cleanup(void)
return;
}
+static isc_result_t
+handle_signal(int sig, void (*handler)(int)) {
+ struct sigaction sa;
+
+ memset(&sa, 0, sizeof(sa));
+ sa.sa_handler = handler;
+
+ if (sigfillset(&sa.sa_mask) != 0 ||
+ sigaction(sig, &sa, NULL) < 0) {
+ log_error("handle_signal() %d setup: %s",
+ sig, strerror(errno));
+ return (ISC_R_UNEXPECTED);
+ }
+
+ return (ISC_R_SUCCESS);
+}
+
isc_result_t
dhcp_context_create(void) {
isc_result_t result;
@@ -104,7 +122,20 @@ dhcp_context_create(void) {
result = isc_app_ctxstart(dhcp_gbl_ctx.actx);
if (result != ISC_R_SUCCESS)
- return (result);
+ goto cleanup;
+
+ /*
+ * Always ignore SIGPIPE.
+ * Otherwise we will die before the errno == EPIPE
+ * checks in the socket code are reached.
+ *
+ * Note: unlike isc_app_start(), isc_app_ctxstart()
+ * does not set any signal handlers.
+ */
+ result = handle_signal(SIGPIPE, SIG_IGN);
+ if (result != ISC_R_SUCCESS)
+ goto cleanup;
+
dhcp_gbl_ctx.actx_started = ISC_TRUE;
result = isc_taskmgr_createinctx(dhcp_gbl_ctx.mctx,
--
1.7.10.4

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a992dc0b04df14fbd780dd34e744b73ce8054a05bf69ff47d5bc64e9b6a98eec
size 8027212

View File

@ -0,0 +1,112 @@
From 29ef7e3c25a709e8f0daadc41f34360ac6d88435 Mon Sep 17 00:00:00 2001
From: Marius Tomaschewski <mt@suse.de>
Date: Tue, 27 Nov 2012 17:44:06 +0100
References: bnc#791289
Upstream: sent [ISC-Bugs #31992]
Subject: [PATCH] Fixed linux interface discovery using getifaddrs
Unlike dhcp 3.x, dhcp 4.x scans interfaces from /proc/net/dev,
which provides only true interface names. When the address set
on the interface has a label assigned (linux 2.0 alias interface
compatibility), then the SIOCGIFADDR requires the label / alias
name as argument instead of the interface name to return this
address. When this is the only address assigned to an interface,
dhcp-server is unable to find any address and fails to start.
Changed to use getifaddrs() function, which retrieves all IP
addresses on linux systems and is available since GLIBC 2.3.
Signed-off-by: Marius Tomaschewski <mt@suse.de>
---
common/discover.c | 51 ++++++++++++++++++++++++++++++++++++++++++++-------
1 Datei geändert, 44 Zeilen hinzugefügt(+), 7 Zeilen entfernt(-)
diff --git a/common/discover.c b/common/discover.c
index 1d84219..cbcb1b9 100644
--- a/common/discover.c
+++ b/common/discover.c
@@ -379,7 +379,7 @@ end_iface_scan(struct iface_conf_list *ifaces) {
ifaces->sock = -1;
}
-#elif __linux /* !HAVE_SIOCGLIFCONF */
+#elif __linux && !(defined(__GNUC_PREREQ) && __GNUC_PREREQ(2,3)) /* !HAVE_SIOCGLIFCONF */
/*
* Linux support
* -------------
@@ -388,6 +388,14 @@ end_iface_scan(struct iface_conf_list *ifaces) {
* about interfaces, along with selected ioctl() calls.
*
* Linux low level access is documented in the netdevice man page.
+ *
+ * Note: Use getifaddrs instead
+ * Unfortunately this discover discards all interfaces where the
+ * only address has a label assigned (linux 2.0 alias interface
+ * compatibility) as the SIOCGIFADDR requires the the alias name
+ * (eth0:0) in ifr_name to fetch the address and /proc/net/dev
+ * on linux > 2.0 lists only the interface names (eth0) without
+ * any aliases.
*/
/*
@@ -760,11 +768,11 @@ end_iface_scan(struct iface_conf_list *ifaces) {
#else
/*
- * BSD support
- * -----------
+ * BSD & Linux support
+ * -------------------
*
* FreeBSD, NetBSD, OpenBSD, and OS X all have the getifaddrs()
- * function.
+ * function. Linux has it since glibc 2.3.
*
* The getifaddrs() man page describes the use.
*/
@@ -821,10 +829,39 @@ next_iface(struct iface_info *info, int *err, struct iface_conf_list *ifaces) {
*err = 1;
return 0;
}
- strcpy(info->name, ifaces->next->ifa_name);
- memcpy(&info->addr, ifaces->next->ifa_addr,
- ifaces->next->ifa_addr->sa_len);
+ info->addr.ss_family = AF_UNSPEC;
info->flags = ifaces->next->ifa_flags;
+#ifdef __linux
+ if (strchr(ifaces->next->ifa_name, ':')) {
+ /*
+ * the name contains a ':', which may
+ * be a IPv4 "alias interface" label;
+ * resolve to the true interface name
+ */
+ if_indextoname(if_nametoindex(ifaces->next->ifa_name),
+ info->name);
+ } else {
+ strcpy(info->name, ifaces->next->ifa_name);
+ }
+
+ if (ifaces->next->ifa_addr != NULL) {
+ if (ifaces->next->ifa_addr->sa_family == AF_INET) {
+ memcpy(&info->addr, ifaces->next->ifa_addr,
+ sizeof(struct sockaddr_in));
+ } else
+ if (ifaces->next->ifa_addr->sa_family == AF_INET6) {
+ memcpy(&info->addr, ifaces->next->ifa_addr,
+ sizeof(struct sockaddr_in6));
+ }
+ /* else e.g. AF_PACKET / link layer address */
+ }
+#else
+ strcpy(info->name, ifaces->next->ifa_name);
+ if (ifaces->next->ifa_addr != NULL) {
+ memcpy(&info->addr, ifaces->next->ifa_addr,
+ ifaces->next->ifa_addr->sa_len);
+ }
+#endif
ifaces->next = ifaces->next->ifa_next;
*err = 0;
return 1;
--
1.7.10.4

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3143784b9de510e9ef0ec4010ce00904308600d8fa2d23cacb240ec5592e81af
size 10882

View File

@ -1,298 +0,0 @@
From 29c3de8d0973c66c9c8261c0f3d0deeccfd29994 Mon Sep 17 00:00:00 2001
From: Marius Tomaschewski <mt@suse.de>
Date: Tue, 12 Jun 2012 10:01:10 +0200
Subject: [PATCH] dhcp-4.2.4-parsing-and-printing-options
- Fix some issues in the code for parsing and printing options.
[ISC-Bugs #27314] - properly parse a zero length option from
a lease file.
[ISC-Bugs #22796] - properly determine if we parsed a 16 or 32 bit
value in evaluate_numeric_expression (extract-int).
[ISC-Bugs #22625] - properly print options that have several fields
followed by an array of something for example "fIa"
[ISC-Bugs #27289] - properly parse options in declarations that have
several fields followed by an array of something for example "fIa"
This patch obsoletes the following (bnc#739696) patches:
- dhclient: parse_option_param: Bad format a
[complete, upstream corrected version]
- zero-length option lease parse error in dhclient6
[upstream accepted variant]
- properly determine if we parsed a 16 or 32 bit value
[additional upstream patch]
---
client/dhclient.c | 19 +++++++++++++---
common/options.c | 60 +++++++++++++++++++++++++++++++++++++++++++++-------
common/parse.c | 23 ++++++++++++++++---
common/tables.c | 7 +++--
common/tree.c | 35 ++++++++++++++++++++----------
5 files changed, 113 insertions(+), 31 deletions(-)
diff --git a/client/dhclient.c b/client/dhclient.c
index f920c64..025337a 100644
--- a/client/dhclient.c
+++ b/client/dhclient.c
@@ -2793,10 +2793,21 @@ void write_lease_option (struct option_cache *oc,
}
if (evaluate_option_cache (&ds, packet, lease, client_state,
in_options, cfg_options, scope, oc, MDL)) {
- fprintf(leaseFile, "%soption %s%s%s %s;\n", preamble,
- name, dot, oc->option->name,
- pretty_print_option(oc->option, ds.data, ds.len,
- 1, 1));
+ /* The option name */
+ fprintf(leaseFile, "%soption %s%s%s", preamble,
+ name, dot, oc->option->name);
+
+ /* The option value if there is one */
+ if ((oc->option->format == NULL) ||
+ (oc->option->format[0] != 'Z')) {
+ fprintf(leaseFile, " %s",
+ pretty_print_option(oc->option, ds.data,
+ ds.len, 1, 1));
+ }
+
+ /* The closing semi-colon and newline */
+ fprintf(leaseFile, ";\n");
+
data_string_forget (&ds, MDL);
}
}
diff --git a/common/options.c b/common/options.c
index bc9bb97..fa27688 100644
--- a/common/options.c
+++ b/common/options.c
@@ -1683,6 +1683,8 @@ const char *pretty_print_option (option, data, len, emit_commas, emit_quotes)
const unsigned char *dp = data;
char comma;
unsigned long tval;
+ isc_boolean_t a_array = ISC_FALSE;
+ int len_used;
if (emit_commas)
comma = ',';
@@ -1707,6 +1709,8 @@ const char *pretty_print_option (option, data, len, emit_commas, emit_quotes)
fmtbuf [l] = option -> format [i];
switch (option -> format [i]) {
case 'a':
+ a_array = ISC_TRUE;
+ /* Fall through */
case 'A':
--numelem;
fmtbuf [l] = 0;
@@ -1735,6 +1739,8 @@ const char *pretty_print_option (option, data, len, emit_commas, emit_quotes)
hunksize++;
comma = ':';
numhunk = 0;
+ a_array = ISC_TRUE;
+ hunkinc = 1;
}
fmtbuf [l + 1] = 0;
break;
@@ -1828,13 +1834,34 @@ const char *pretty_print_option (option, data, len, emit_commas, emit_quotes)
len - hunksize);
/* If this is an array, compute its size. */
- if (!numhunk)
- numhunk = len / hunksize;
- /* See if we got an exact number of hunks. */
- if (numhunk > 0 && numhunk * hunksize < len)
- log_error ("%s: %d extra bytes at end of array\n",
- option -> name,
- len - numhunk * hunksize);
+ if (numhunk == 0) {
+ if (a_array == ISC_TRUE) {
+ /*
+ * It is an 'a' type array - we repeat the
+ * last format type. A binary string for 'X'
+ * is also like this. hunkinc is the size
+ * of the last format type and we add 1 to
+ * cover the entire first record.
+ */
+ numhunk = ((len - hunksize) / hunkinc) + 1;
+ len_used = hunksize + ((numhunk - 1) * hunkinc);
+ } else {
+ /*
+ * It is an 'A' type array - we repeat the
+ * entire record
+ */
+ numhunk = len / hunksize;
+ len_used = numhunk * hunksize;
+ }
+
+ /* See if we got an exact number of hunks. */
+ if (len_used < len) {
+ log_error ("%s: %d extra bytes at end of array\n",
+ option -> name,
+ len - len_used);
+ }
+ }
+
/* A one-hunk array prints the same as a single hunk. */
if (numhunk < 0)
@@ -1842,7 +1869,24 @@ const char *pretty_print_option (option, data, len, emit_commas, emit_quotes)
/* Cycle through the array (or hunk) printing the data. */
for (i = 0; i < numhunk; i++) {
- for (j = 0; j < numelem; j++) {
+ if ((a_array == ISC_TRUE) && (i != 0) && (numelem > 0)) {
+ /*
+ * For 'a' type of arrays we repeat
+ * only the last format character
+ * We should never hit the case of numelem == 0
+ * but let's include the check to be safe.
+ */
+ j = numelem - 1;
+ } else {
+ /*
+ * for other types of arrays or the first
+ * time through for 'a' types, we go through
+ * the entire set of format characters.
+ */
+ j = 0;
+ }
+
+ for (; j < numelem; j++) {
switch (fmtbuf [j]) {
case 't':
/* endbuf-1 leaves room for NULL. */
diff --git a/common/parse.c b/common/parse.c
index 434085a..f72c0d6 100644
--- a/common/parse.c
+++ b/common/parse.c
@@ -5518,11 +5518,26 @@ int parse_option_decl (oc, cfile)
if (status != ISC_R_SUCCESS || option == NULL)
return 0;
+ fmt = option->format;
+
/* Parse the option data... */
do {
- for (fmt = option -> format; *fmt; fmt++) {
- if (*fmt == 'A')
+ for (; *fmt; fmt++) {
+ if (*fmt == 'A') {
+ /* 'A' is an array of records, start at
+ * the beginning
+ */
+ fmt = option->format;
+ break;
+ }
+
+ if (*fmt == 'a') {
+ /* 'a' is an array of the last field,
+ * back up one format character
+ */
+ fmt--;
break;
+ }
if (*fmt == 'o' && fmt != option -> format)
continue;
switch (*fmt) {
@@ -5718,7 +5733,7 @@ int parse_option_decl (oc, cfile)
goto alloc;
case 'Z': /* Zero-length option */
- token = next_token(&val, (unsigned *)0, cfile);
+ token = peek_token(&val, (unsigned *)0, cfile);
if (token != SEMI) {
parse_warn(cfile,
"semicolon expected.");
@@ -5735,7 +5750,7 @@ int parse_option_decl (oc, cfile)
}
}
token = next_token (&val, (unsigned *)0, cfile);
- } while (*fmt == 'A' && token == COMMA);
+ } while (*fmt && token == COMMA);
if (token != SEMI) {
parse_warn (cfile, "semicolon expected.");
diff --git a/common/tables.c b/common/tables.c
index c820d83..d224dc1 100644
--- a/common/tables.c
+++ b/common/tables.c
@@ -64,9 +64,10 @@ HASH_FUNCTIONS (option_code, const unsigned *, struct option,
some event. The special all-ones value means 'infinite'. May either
be printed as a decimal, eg, "3600", or as this name, eg, "infinite".
f - flag (true or false)
- A - array of whatever precedes (e.g., IA means array of IP addresses)
- a - array of the preceding character (e.g., IIa means two or more IP
- addresses)
+ A - array of all that precedes (e.g., fIA means array of records of
+ a flag and an IP address)
+ a - array of the preceding character (e.g., fIa means a single flag
+ followed by an array of IP addresses)
U - name of an option space (universe)
F - implicit flag - the presence of the option indicates that the
flag is true.
diff --git a/common/tree.c b/common/tree.c
index 3c978b0..7754398 100644
--- a/common/tree.c
+++ b/common/tree.c
@@ -2409,6 +2409,7 @@ int evaluate_numeric_expression (result, packet, lease, client_state,
struct binding *binding;
struct binding_value *bv;
unsigned long ileft, iright;
+ int rc = 0;
switch (expr -> op) {
case expr_check:
@@ -2477,32 +2478,42 @@ int evaluate_numeric_expression (result, packet, lease, client_state,
status = (evaluate_data_expression
(&data, packet, lease, client_state, in_options,
cfg_options, scope, expr -> data.extract_int, MDL));
- if (status && data.len >= 2)
+ if (status && data.len >= 2) {
*result = getUShort (data.data);
+ rc = 1;
+ }
#if defined (DEBUG_EXPRESSIONS)
- log_debug ("num: extract_int16 (%s) = %ld",
- ((status && data.len >= 2) ?
- print_hex_1 (data.len, data.data, 60) : "NULL"),
- *result);
+ if (rc == 1) {
+ log_debug ("num: extract_int16 (%s) = %ld",
+ print_hex_1(data.len, data.data, 60)
+ *result);
+ } else {
+ log_debug ("num: extract_int16 (NULL) = NULL");
+ }
#endif
if (status) data_string_forget (&data, MDL);
- return (status && data.len >= 2);
+ return (rc);
case expr_extract_int32:
memset (&data, 0, sizeof data);
status = (evaluate_data_expression
(&data, packet, lease, client_state, in_options,
cfg_options, scope, expr -> data.extract_int, MDL));
- if (status && data.len >= 4)
+ if (status && data.len >= 4) {
*result = getULong (data.data);
+ rc = 1;
+ }
#if defined (DEBUG_EXPRESSIONS)
- log_debug ("num: extract_int32 (%s) = %ld",
- ((status && data.len >= 4) ?
- print_hex_1 (data.len, data.data, 60) : "NULL"),
- *result);
+ if (rc == 1) {
+ log_debug ("num: extract_int32 (%s) = %ld",
+ print_hex_1 (data.len, data.data, 60),
+ *result);
+ } else {
+ log_debug ("num: extract_int32 (NULL) = NULL");
+ }
#endif
if (status) data_string_forget (&data, MDL);
- return (status && data.len >= 4);
+ return (rc);
case expr_const_int:
*result = expr -> data.const_int;
--
1.7.7

View File

@ -1,5 +1,15 @@
From ebc6e17683e4a4d7f2316c1ea46d680955df7d26 Mon Sep 17 00:00:00 2001
From: Marius Tomaschewski <mt@suse.de>
Date: Thu, 18 Aug 2011 10:49:07 +0200
Subject: [PATCH] dhcp-4.2.5-dhclient-send-hostname-rml
---
client/dhclient.8 | 8 ++++++++
client/dhclient.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++--
2 Dateien geändert, 56 Zeilen hinzugefügt(+), 2 Zeilen entfernt(-)
diff --git a/client/dhclient.8 b/client/dhclient.8
index 6306b08..1394c38 100644
index 3539591..4a7647a 100644
--- a/client/dhclient.8
+++ b/client/dhclient.8
@@ -60,6 +60,10 @@ dhclient - Dynamic Host Configuration Protocol Client
@ -11,21 +21,21 @@ index 6306b08..1394c38 100644
+]
+[
.B -p
.I port
.I port-number
]
@@ -299,6 +303,10 @@ PID file. When shutdown via this method
.B dhclient-script(8)
will be executed with the specific reason for calling the script set.
@@ -316,6 +320,10 @@ transmits these messages to 255.255.255.255 (the IP limited broadcast
address). Overriding this is mostly useful for debugging purposes. This
feature is not supported in DHCPv6 (\fB-6\fR) mode.
.TP
+.BI \-H \ hostname
+This flag may be used to specify a client hostname that should be sent to
+the DHCP server. Note, that this option is a SUSE/Novell extension.
+.TP
.BI \-p \ port
The UDP port number on which the DHCP client should listen and transmit.
If unspecified,
.BI \-g \ relay
.\" mockup relay
Set the giaddr field of all packets to the \fIrelay\fR IP address
diff --git a/client/dhclient.c b/client/dhclient.c
index 9b53f07..9fd7ccc 100644
index 0c1ed24..de93499 100644
--- a/client/dhclient.c
+++ b/client/dhclient.c
@@ -119,6 +119,7 @@ main(int argc, char **argv) {
@ -107,3 +117,6 @@ index 9b53f07..9fd7ccc 100644
#endif /* DHCPv6 */
" [-s server-addr] [-cf config-file] "
"[-lf lease-file]\n"
--
1.7.10.4

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b300b487032a9eac6a0935351ef45415d58aaf1a196408a6209f43e72e70e622
size 16766

3
dhcp-4.2.5.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:771a5cffb1fd1392d25926e22e1c58a006e2ad02ecd77d136096e5e366a5b6bc
size 8258824

11
dhcp-4.2.5.tar.gz.asc Normal file
View File

@ -0,0 +1,11 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
iQEcBAABAgAGBQJQ7X+pAAoJEKv5WqfJazUKeaQH/134banTGLmI/lOsmaWzB/kJ
jKYRQ20N6oGTn52pJhMLK9SAJML/MjYr84sJxCZSN7IirSOd0OEUKk2N4A3kKlGj
DteALPgG9cDIu8huVc4ZUKfbAl6Gr4irWBBWcRbXK8CnH+9Z3OjaaEilEOqfJl9d
fV8e38YNDaLyo4mH8lLyByPYqTBnt6FGYJH6kzO9a9rvWQQ0hAMGX9hUAQTJRJbP
j6ZOL807qcZFhy16bpVz3IFTZ17rbV3cYwP4e8fYjN9W3evOpN+GUtgwI/WSgAiH
1LL74Iq3nyptCrS544avIQGjHX64fgahYWP9VQvCzsL9bWnEXIMoaHNhmUd/Wdo=
=D0E8
-----END PGP SIGNATURE-----

View File

@ -1,3 +1,63 @@
-------------------------------------------------------------------
Fri Jan 11 10:54:28 UTC 2013 - mt@suse.com
- Update to ISC dhcp-4.2.5 release. See RELNOTES file for the
complete list of changes -- digest of fixes not in dhcp-4.2.4-P2:
- Correct code to calculate rebind timing values in client
[ISC-Bugs #29062]
- Fix some issues in the code for parsing and printing options.
[ISC-Bugs #22625,#27289,#27296,#27314]
- Update the memory leakage debug code to work with v6.
[ISC-Bugs #30297]
- Relax the requirements for deleting an A or AAAA record.
This relaxation was codified in RFC 4703. [ISC-Bugs #30734]
- Modify the failover code to handle incorrect peer names better.
[ISC-Bugs #30320]
- Fix a set of issues that were discovered via a code inspection
tool. [ISC-Bugs #23833]
- Parsing unquoted base64 strings improved. [ISC-Bugs #23048]
- The client now passes information about the options it requested
from the server to the script code via environment variables.
These variables are of the form requested_<option_name>=1 with
the option name being the same as used in the new_* and old_*
variables. [ISC-Bugs #29068]
- Check the status value when trying to read from a connection to
see if it may have been closed. If it appears closed don't try
to read from it again. This avoids a potential busy-wait like
loop when the peer names are mismatched. [ISC-Bugs #31231]
- Remove an unused variable to keep compilers happy.
[ISC-Bugs #31983]
- Removed obsolete parsing and printing option patch
[dhcp-4.2.4-parsing-and-printing-options.patch]
- Merged dhcp-4.2.2-dhclient-send-hostname-rml.diff
[dhcp-4.2.5-dhclient-send-hostname-rml.patch]
- Fixed discovery of interfaces, which have only addresses with
a label assigned (linux 2.0 "alias interfaces" compatibility)
by switching to use the getifaddrs() as on BSD (bnc#791289,
reported upstream as [ISC-Bugs #31992]).
[dhcp-4.2.4-interface-discovery-using-getifaddrs.patch]
- Applied a patch to ignore SIGPIPE instead to die in socket code
before the errno==EPIPE checks are reached (bnc#794578, upstream
report [ISC-Bugs #32222])
[dhcp-4.2.4-P2-do-not-die-on-sigpipe.patch]
- Updated ldap patch to 4.2.5-ldap-mt01 providing following fixes:
- Fixed parse buffer handling code to not avoid truncation of
config > ~8k from bigger ldap objects. Fixed to free the ldap
config buffer passed to the config parser and append new config,
while the parser is in saved state (bnc#788787).
- Fixed subclass name-ref and data quoting/escaping (bnc#788787).
- Fixed memory leaks on ldap_read_config errors (bnc#788787).
- Fixed a memleak while subnet range processing, fixed to reset
bufix variable in ldap_read_function to 0 and to set buflen to
the complete length (do not discard last character, usually \n).
This caused a parsing error at further run of the function,
e.g. while processing the second dhcpService container that the
dhcpServer object may refer to (bnc#784640).
[dhcp-4.2.5-ldap-mt01.patch.bz2]
- Fixed dhclient-script to discard MTU lower-equal 576 rather
than lower-than (bnc#791280).
- Verify GPG source archive signatures.
-------------------------------------------------------------------
Thu Sep 20 12:26:53 UTC 2012 - mt@suse.com

55
dhcp.keyring Normal file
View File

@ -0,0 +1,55 @@
pub 2048R/C96B350A 2011-10-27 [expires: 2013-02-01]
uid Internet Systems Consortium, Inc. (Signing key, 2012) (http://www.isc.org/) <codesign@isc.org>
uid [jpeg image of size 37431]
sub 2048R/B5053426 2011-10-27 [expires: 2013-02-01]
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (FreeBSD)
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
=WEoZ
-----END PGP PUBLIC KEY BLOCK-----

View File

@ -1,7 +1,7 @@
#
# spec file for package dhcp
#
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -16,7 +16,7 @@
#
%define isc_version 4.2.4-P2
%define isc_version 4.2.5
%define susefw2dir %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services
%define omc_prefix /usr/share/omc
%define omc_svcdir %{omc_prefix}/svcinfo.d
@ -36,13 +36,15 @@ BuildRequires: openldap2-devel
%endif
BuildRequires: dos2unix
BuildRequires: libtool
Version: 4.2.4.P2
Version: 4.2.5
Release: 0.<RELEASE0>
Summary: Common Files Used by ISC DHCP Software
License: BSD-3-Clause
Group: Productivity/Networking/Boot/Servers
Url: http://www.isc.org/software/dhcp
Source0: dhcp-%{isc_version}.tar.bz2
Source0: dhcp-%{isc_version}.tar.gz
Source1: dhcp-%{isc_version}.tar.gz.asc
Source2: %{name}.keyring
#
Source10: rc.dhcpd
Source11: rc.dhcpd6
@ -78,19 +80,23 @@ Patch12: dhcp-4.2.2-man-includes.diff
Patch13: dhcp-4.1.1-tmpfile.diff
Patch15: contrib-lease-path.diff
Patch20: dhcp-4.1.1-dhclient-exec-filedes.diff
Patch21: dhcp-4.2.2-dhclient-send-hostname-rml.diff
## patch repo lives here: http://www.suse.de/~mt/git/dhcp-ldap.git/
Patch30: dhcp-4.2.4-ldap-patch-mt01.patch.bz2
Patch21: dhcp-4.2.5-dhclient-send-hostname-rml.patch
## my patch repo lives here: http://users.suse.com/~mt/dhcp-ldap/dhcp-ldap.git/
Patch30: dhcp-4.2.5-ldap-mt01.patch.bz2
Patch40: dhcp-4.1.1-P1-lpf-bind-msg-fix.diff
Patch44: dhcp-4.2.2-xen-checksum.diff
Patch45: dhcp-4.2.4-dhclient-option-checks.bnc675052.diff
Patch46: dhcp-4.2.2-close-on-exec.diff
Patch47: dhcp-4.2.2-quiet-dhclient.bnc711420.diff
Patch48: dhcp-4.2.3-P1-dhclient-log-pid.diff
Patch49: dhcp-4.2.4-parsing-and-printing-options.patch
Patch49: dhcp-4.2.4-interface-discovery-using-getifaddrs.patch
Patch50: dhcp-4.2.4-P2-do-not-die-on-sigpipe.patch
##
PreReq: /bin/touch /sbin/chkconfig sysconfig
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if 0%{?suse_version} > 1220
BuildRequires: gpg-offline
%endif
%package server
Summary: ISC DHCP Server
@ -196,6 +202,9 @@ Authors:
%prep
%if 0%{?gpg_verify:1}
%gpg_verify %{S:1}
%endif
%setup -q -n %{name}-%{isc_version} -a 44 -a 45
##
%patch10 -p1
@ -215,6 +224,7 @@ Authors:
%patch47 -p1
%patch48 -p1
%patch49 -p1
%patch50 -p1
##
find . -type f -name \*.cat\* -exec rm -f {} \;
dos2unix contrib/ms2isc/*
@ -372,6 +382,7 @@ install -m0644 $RPM_SOURCE_DIR/DDNS-howto.txt .
cp doc/examples/* ./examples/
rm -f doc/{References.xml,Makefile*}
rm -f contrib/dhcp.spec
rm -f $RPM_BUILD_ROOT/etc/{dhcpd,dhclient}.conf.example
%pre server
/usr/sbin/useradd -r -g nogroup -s /bin/false -c "DHCP server daemon" -d /var/lib/dhcp dhcpd 2> /dev/null ||: