- 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:
parent
6d8716fb66
commit
58f1b21b5d
@ -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
|
||||
|
82
dhcp-4.2.4-P2-do-not-die-on-sigpipe.patch
Normal file
82
dhcp-4.2.4-P2-do-not-die-on-sigpipe.patch
Normal 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
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a992dc0b04df14fbd780dd34e744b73ce8054a05bf69ff47d5bc64e9b6a98eec
|
||||
size 8027212
|
112
dhcp-4.2.4-interface-discovery-using-getifaddrs.patch
Normal file
112
dhcp-4.2.4-interface-discovery-using-getifaddrs.patch
Normal 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
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3143784b9de510e9ef0ec4010ce00904308600d8fa2d23cacb240ec5592e81af
|
||||
size 10882
|
@ -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
|
||||
|
@ -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
|
||||
|
3
dhcp-4.2.5-ldap-mt01.patch.bz2
Normal file
3
dhcp-4.2.5-ldap-mt01.patch.bz2
Normal 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
3
dhcp-4.2.5.tar.gz
Normal 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
11
dhcp-4.2.5.tar.gz.asc
Normal 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-----
|
60
dhcp.changes
60
dhcp.changes
@ -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
55
dhcp.keyring
Normal 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-----
|
27
dhcp.spec
27
dhcp.spec
@ -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 ||:
|
||||
|
Loading…
Reference in New Issue
Block a user