From 58f1b21b5dbadc1070f8801c13b6bc815122268eff134904a8c17e688490b5c3 Mon Sep 17 00:00:00 2001 From: Marius Tomaschewski Date: Fri, 11 Jan 2013 11:58:29 +0000 Subject: [PATCH] - 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_=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 --- dhclient-script | 2 +- dhcp-4.2.4-P2-do-not-die-on-sigpipe.patch | 82 +++++ dhcp-4.2.4-P2.tar.bz2 | 3 - ...interface-discovery-using-getifaddrs.patch | 112 +++++++ dhcp-4.2.4-ldap-patch-mt01.patch.bz2 | 3 - dhcp-4.2.4-parsing-and-printing-options.patch | 298 ------------------ ...hcp-4.2.5-dhclient-send-hostname-rml.patch | 31 +- dhcp-4.2.5-ldap-mt01.patch.bz2 | 3 + dhcp-4.2.5.tar.gz | 3 + dhcp-4.2.5.tar.gz.asc | 11 + dhcp.changes | 60 ++++ dhcp.keyring | 55 ++++ dhcp.spec | 27 +- 13 files changed, 368 insertions(+), 322 deletions(-) create mode 100644 dhcp-4.2.4-P2-do-not-die-on-sigpipe.patch delete mode 100644 dhcp-4.2.4-P2.tar.bz2 create mode 100644 dhcp-4.2.4-interface-discovery-using-getifaddrs.patch delete mode 100644 dhcp-4.2.4-ldap-patch-mt01.patch.bz2 delete mode 100644 dhcp-4.2.4-parsing-and-printing-options.patch rename dhcp-4.2.2-dhclient-send-hostname-rml.diff => dhcp-4.2.5-dhclient-send-hostname-rml.patch (77%) create mode 100644 dhcp-4.2.5-ldap-mt01.patch.bz2 create mode 100644 dhcp-4.2.5.tar.gz create mode 100644 dhcp-4.2.5.tar.gz.asc create mode 100644 dhcp.keyring diff --git a/dhclient-script b/dhclient-script index 2e71a4f..04de396 100644 --- a/dhclient-script +++ b/dhclient-script @@ -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 diff --git a/dhcp-4.2.4-P2-do-not-die-on-sigpipe.patch b/dhcp-4.2.4-P2-do-not-die-on-sigpipe.patch new file mode 100644 index 0000000..c36fb06 --- /dev/null +++ b/dhcp-4.2.4-P2-do-not-die-on-sigpipe.patch @@ -0,0 +1,82 @@ +From 633817ad53adbdeb4054b750e1f0bd4ce58f341b Mon Sep 17 00:00:00 2001 +From: Marius Tomaschewski +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 +--- + 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 ++#include + + 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 + diff --git a/dhcp-4.2.4-P2.tar.bz2 b/dhcp-4.2.4-P2.tar.bz2 deleted file mode 100644 index 7d767fb..0000000 --- a/dhcp-4.2.4-P2.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a992dc0b04df14fbd780dd34e744b73ce8054a05bf69ff47d5bc64e9b6a98eec -size 8027212 diff --git a/dhcp-4.2.4-interface-discovery-using-getifaddrs.patch b/dhcp-4.2.4-interface-discovery-using-getifaddrs.patch new file mode 100644 index 0000000..9f507b3 --- /dev/null +++ b/dhcp-4.2.4-interface-discovery-using-getifaddrs.patch @@ -0,0 +1,112 @@ +From 29ef7e3c25a709e8f0daadc41f34360ac6d88435 Mon Sep 17 00:00:00 2001 +From: Marius Tomaschewski +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 +--- + 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 + diff --git a/dhcp-4.2.4-ldap-patch-mt01.patch.bz2 b/dhcp-4.2.4-ldap-patch-mt01.patch.bz2 deleted file mode 100644 index 36a8d62..0000000 --- a/dhcp-4.2.4-ldap-patch-mt01.patch.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3143784b9de510e9ef0ec4010ce00904308600d8fa2d23cacb240ec5592e81af -size 10882 diff --git a/dhcp-4.2.4-parsing-and-printing-options.patch b/dhcp-4.2.4-parsing-and-printing-options.patch deleted file mode 100644 index 4d678b7..0000000 --- a/dhcp-4.2.4-parsing-and-printing-options.patch +++ /dev/null @@ -1,298 +0,0 @@ -From 29c3de8d0973c66c9c8261c0f3d0deeccfd29994 Mon Sep 17 00:00:00 2001 -From: Marius Tomaschewski -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 - diff --git a/dhcp-4.2.2-dhclient-send-hostname-rml.diff b/dhcp-4.2.5-dhclient-send-hostname-rml.patch similarity index 77% rename from dhcp-4.2.2-dhclient-send-hostname-rml.diff rename to dhcp-4.2.5-dhclient-send-hostname-rml.patch index 64fac9f..3878423 100644 --- a/dhcp-4.2.2-dhclient-send-hostname-rml.diff +++ b/dhcp-4.2.5-dhclient-send-hostname-rml.patch @@ -1,5 +1,15 @@ +From ebc6e17683e4a4d7f2316c1ea46d680955df7d26 Mon Sep 17 00:00:00 2001 +From: Marius Tomaschewski +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 + diff --git a/dhcp-4.2.5-ldap-mt01.patch.bz2 b/dhcp-4.2.5-ldap-mt01.patch.bz2 new file mode 100644 index 0000000..5a20252 --- /dev/null +++ b/dhcp-4.2.5-ldap-mt01.patch.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b300b487032a9eac6a0935351ef45415d58aaf1a196408a6209f43e72e70e622 +size 16766 diff --git a/dhcp-4.2.5.tar.gz b/dhcp-4.2.5.tar.gz new file mode 100644 index 0000000..fcea089 --- /dev/null +++ b/dhcp-4.2.5.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:771a5cffb1fd1392d25926e22e1c58a006e2ad02ecd77d136096e5e366a5b6bc +size 8258824 diff --git a/dhcp-4.2.5.tar.gz.asc b/dhcp-4.2.5.tar.gz.asc new file mode 100644 index 0000000..f01e62c --- /dev/null +++ b/dhcp-4.2.5.tar.gz.asc @@ -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----- diff --git a/dhcp.changes b/dhcp.changes index 3a2c786..9feb4c4 100644 --- a/dhcp.changes +++ b/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_=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 diff --git a/dhcp.keyring b/dhcp.keyring new file mode 100644 index 0000000..cf38b75 --- /dev/null +++ b/dhcp.keyring @@ -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/) +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----- diff --git a/dhcp.spec b/dhcp.spec index a92884e..ecc9059 100644 --- a/dhcp.spec +++ b/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. 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 ||: