diff --git a/0006-dhcp-4.3.2-dhclient-send-hostname-or-fqdn.patch b/0006-dhcp-4.3.2-dhclient-send-hostname-or-fqdn.patch index d20ae6f..463174d 100644 --- a/0006-dhcp-4.3.2-dhclient-send-hostname-or-fqdn.patch +++ b/0006-dhcp-4.3.2-dhclient-send-hostname-or-fqdn.patch @@ -6,10 +6,10 @@ Subject: [PATCH] dhcp-4.3.2-dhclient-send-hostname-or-fqdn Signed-off-by: Marius Tomaschewski diff --git a/client/dhclient.8 b/client/dhclient.8 -index 5b05698..d9a26b7 100644 +index cf073b4..6c7296b 100644 --- a/client/dhclient.8 +++ b/client/dhclient.8 -@@ -66,6 +66,10 @@ dhclient - Dynamic Host Configuration Protocol Client +@@ -72,6 +72,10 @@ dhclient - Dynamic Host Configuration Protocol Client .I LL|LLT ] [ @@ -20,7 +20,7 @@ index 5b05698..d9a26b7 100644 .B -p .I port-number ] -@@ -326,6 +330,11 @@ transmits these messages to 255.255.255.255 (the IP limited broadcast +@@ -340,6 +344,11 @@ 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 @@ -33,25 +33,33 @@ index 5b05698..d9a26b7 100644 .\" 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 cf612d1..0e39161 100644 +index 2fb8de8..678379a 100644 --- a/client/dhclient.c +++ b/client/dhclient.c -@@ -124,6 +124,7 @@ main(int argc, char **argv) { +@@ -174,6 +174,7 @@ usage(const char *sfmt, const char *sarg) + #else /* DHCPv6 */ + "[-I1dvrxi] [-nw] [-p ] [-D LL|LLT] \n" + #endif /* DHCPv6 */ ++ " [-H hostname]\n" + " [-s server-addr] [-cf config-file]\n" + " [-df duid-file] [-lf lease-file]\n" + " [-pf pid-file] [--no-pid] [-e VAR=val]\n" +@@ -200,6 +201,7 @@ main(int argc, char **argv) { int no_dhclient_db = 0; int no_dhclient_pid = 0; int no_dhclient_script = 0; + char *dhclient_hostname = NULL; #ifdef DHCPv6 int local_family_set = 0; - #endif /* DHCPv6 */ -@@ -241,6 +242,24 @@ main(int argc, char **argv) { + #ifdef DHCP4o6 +@@ -337,6 +339,24 @@ main(int argc, char **argv) { if (++i == argc) - usage(); + usage(use_noarg, argv[i-1]); mockup_relay = argv[i]; + } else if (!strcmp (argv[i], "-H")) { + size_t len; + if (++i == argc || !argv[i] || *(argv[i]) == '\0') -+ usage (); ++ usage(use_noarg, argv[i-1]); + len = strlen (argv[i]); + if (len > HOST_NAME_MAX) { + log_error("-H option hostname string \"%s\" is too long:" @@ -69,7 +77,7 @@ index cf612d1..0e39161 100644 } else if (!strcmp(argv[i], "-nw")) { nowait = 1; } else if (!strcmp(argv[i], "-n")) { -@@ -510,6 +529,48 @@ main(int argc, char **argv) { +@@ -630,6 +650,48 @@ main(int argc, char **argv) { /* Parse the dhclient.conf file. */ read_client_conf(); @@ -118,14 +126,3 @@ index cf612d1..0e39161 100644 /* Parse the lease database. */ read_client_leases(); -@@ -756,6 +817,7 @@ static void usage() - #else /* DHCPv6 */ - "[-I1dvrxi] [-nw] [-p ] [-D LL|LLT] \n" - #endif /* DHCPv6 */ -+ " [-H hostname]\n" - " [-s server-addr] [-cf config-file]\n" - " [-df duid-file] [-lf lease-file]\n" - " [-pf pid-file] [--no-pid] [-e VAR=val]\n" --- -2.1.4 - diff --git a/0011-Fixed-linux-interface-discovery-using-getifaddrs.patch b/0011-Fixed-linux-interface-discovery-using-getifaddrs.patch index be45ce8..6d4392a 100644 --- a/0011-Fixed-linux-interface-discovery-using-getifaddrs.patch +++ b/0011-Fixed-linux-interface-discovery-using-getifaddrs.patch @@ -14,15 +14,16 @@ 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. + --- common/discover.c | 51 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 44 insertions(+), 7 deletions(-) diff --git a/common/discover.c b/common/discover.c -index 6a0540b..1dcaa02 100644 +index 4463178..c48d67b 100644 --- a/common/discover.c +++ b/common/discover.c -@@ -370,7 +370,7 @@ end_iface_scan(struct iface_conf_list *ifaces) { +@@ -373,7 +373,7 @@ end_iface_scan(struct iface_conf_list *ifaces) { ifaces->sock = -1; } @@ -31,7 +32,7 @@ index 6a0540b..1dcaa02 100644 /* * Linux support * ------------- -@@ -379,6 +379,14 @@ end_iface_scan(struct iface_conf_list *ifaces) { +@@ -382,6 +382,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. @@ -46,7 +47,7 @@ index 6a0540b..1dcaa02 100644 */ /* -@@ -751,11 +759,11 @@ end_iface_scan(struct iface_conf_list *ifaces) { +@@ -755,11 +763,11 @@ end_iface_scan(struct iface_conf_list *ifaces) { #else /* @@ -61,11 +62,11 @@ index 6a0540b..1dcaa02 100644 * * The getifaddrs() man page describes the use. */ -@@ -812,10 +820,39 @@ next_iface(struct iface_info *info, int *err, struct iface_conf_list *ifaces) { - *err = 1; +@@ -817,10 +825,39 @@ next_iface(struct iface_info *info, int *err, struct iface_conf_list *ifaces) { return 0; } -- strcpy(info->name, ifaces->next->ifa_name); + memset(info, 0, sizeof(struct iface_info)); +- strncpy(info->name, ifaces->next->ifa_name, sizeof(info->name) - 1); - memcpy(&info->addr, ifaces->next->ifa_addr, - ifaces->next->ifa_addr->sa_len); + info->addr.ss_family = AF_UNSPEC; @@ -80,7 +81,7 @@ index 6a0540b..1dcaa02 100644 + if_indextoname(if_nametoindex(ifaces->next->ifa_name), + info->name); + } else { -+ strcpy(info->name, ifaces->next->ifa_name); ++ strncpy(info->name, ifaces->next->ifa_name, sizeof(info->name) - 1); + } + + if (ifaces->next->ifa_addr != NULL) { @@ -95,7 +96,7 @@ index 6a0540b..1dcaa02 100644 + /* else e.g. AF_PACKET / link layer address */ + } +#else -+ strcpy(info->name, ifaces->next->ifa_name); ++ strncpy(info->name, ifaces->next->ifa_name, sizeof(info->name) - 1); + if (ifaces->next->ifa_addr != NULL) { + memcpy(&info->addr, ifaces->next->ifa_addr, + ifaces->next->ifa_addr->sa_len); @@ -105,5 +106,5 @@ index 6a0540b..1dcaa02 100644 *err = 0; return 1; -- -1.8.4 +2.13.1 diff --git a/0013-dhcp-4.2.x-dhcpv6-decline-on-DAD-failure.872609.patch b/0013-dhcp-4.2.x-dhcpv6-decline-on-DAD-failure.872609.patch index 2b268eb..f59b224 100644 --- a/0013-dhcp-4.2.x-dhcpv6-decline-on-DAD-failure.872609.patch +++ b/0013-dhcp-4.2.x-dhcpv6-decline-on-DAD-failure.872609.patch @@ -8,10 +8,10 @@ in section 18.1.7 of RFC-3315 (#559147) (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #26735]) diff --git a/client/dhc6.c b/client/dhc6.c -index 8974e7a..f8ad25d 100644 +index c8d16e8..21d0203 100644 --- a/client/dhc6.c +++ b/client/dhc6.c -@@ -96,6 +96,8 @@ void do_select6(void *input); +@@ -115,6 +115,8 @@ void do_select6(void *input); void do_refresh6(void *input); static void do_release6(void *input); static void start_bound(struct client_state *client); @@ -20,7 +20,7 @@ index 8974e7a..f8ad25d 100644 static void start_informed(struct client_state *client); void informed_handler(struct packet *packet, struct client_state *client); void bound_handler(struct packet *packet, struct client_state *client); -@@ -2080,6 +2082,7 @@ start_release6(struct client_state *client) +@@ -2314,6 +2316,7 @@ start_release6(struct client_state *client) cancel_timeout(do_select6, client); cancel_timeout(do_refresh6, client); cancel_timeout(do_release6, client); @@ -28,7 +28,7 @@ index 8974e7a..f8ad25d 100644 client->state = S_STOPPED; /* -@@ -2713,6 +2716,7 @@ dhc6_check_reply(struct client_state *client, struct dhc6_lease *new) +@@ -2968,6 +2971,7 @@ dhc6_check_reply(struct client_state *client, struct dhc6_lease *new) break; case S_STOPPED: @@ -36,7 +36,7 @@ index 8974e7a..f8ad25d 100644 action = dhc6_stop_action; break; -@@ -2814,6 +2818,7 @@ dhc6_check_reply(struct client_state *client, struct dhc6_lease *new) +@@ -3084,6 +3088,7 @@ dhc6_check_reply(struct client_state *client, struct dhc6_lease *new) break; case S_STOPPED: @@ -44,7 +44,7 @@ index 8974e7a..f8ad25d 100644 /* Nothing critical to do at this stage. */ break; -@@ -3804,17 +3809,23 @@ reply_handler(struct packet *packet, struct client_state *client) +@@ -4214,17 +4219,23 @@ reply_handler(struct packet *packet, struct client_state *client) cancel_timeout(do_select6, client); cancel_timeout(do_refresh6, client); cancel_timeout(do_release6, client); @@ -76,7 +76,7 @@ index 8974e7a..f8ad25d 100644 return; } -@@ -4342,7 +4353,11 @@ start_bound(struct client_state *client) +@@ -4798,7 +4809,11 @@ start_bound(struct client_state *client) dhc6_marshall_values("new_", client, lease, ia, addr); script_write_requested6(client); @@ -89,7 +89,7 @@ index 8974e7a..f8ad25d 100644 } /* XXX: maybe we should loop on the old values instead? */ -@@ -4390,6 +4405,149 @@ start_bound(struct client_state *client) +@@ -4851,6 +4866,149 @@ start_bound(struct client_state *client) dhc6_check_times(client); } @@ -131,7 +131,7 @@ index 8974e7a..f8ad25d 100644 +{ + struct client_state *client; + struct data_string ds; -+ int send_ret; ++ int send_ret, added; + struct timeval elapsed, tv; + + client = input; @@ -193,13 +193,13 @@ index 8974e7a..f8ad25d 100644 + /* Append IA's (but don't release temporary addresses). */ + if (wanted_ia_na && + dhc6_add_ia_na(client, &ds, client->active_lease, -+ DHCPV6_DECLINE) != ISC_R_SUCCESS) { ++ DHCPV6_DECLINE, 0, &added) != ISC_R_SUCCESS) { + data_string_forget(&ds, MDL); + goto decline_done; + } + if (wanted_ia_pd && + dhc6_add_ia_pd(client, &ds, client->active_lease, -+ DHCPV6_DECLINE) != ISC_R_SUCCESS) { ++ DHCPV6_DECLINE, 0, &added) != ISC_R_SUCCESS) { + data_string_forget(&ds, MDL); + goto decline_done; + } @@ -240,10 +240,10 @@ index 8974e7a..f8ad25d 100644 * Reconfigure-Request messages and the like. */ diff --git a/includes/dhcpd.h b/includes/dhcpd.h -index a52992b..0eda51d 100644 +index b5bec1c..6d500a3 100644 --- a/includes/dhcpd.h +++ b/includes/dhcpd.h -@@ -1060,7 +1060,8 @@ enum dhcp_state { +@@ -1176,7 +1176,8 @@ enum dhcp_state { S_BOUND = 5, S_RENEWING = 6, S_REBINDING = 7, @@ -252,4 +252,4 @@ index a52992b..0eda51d 100644 + S_DECLINED = 9 }; - /* Authentication and BOOTP policy possibilities (not all values work + /* Possible pending client operations. */ diff --git a/0016-infiniband-support.patch b/0016-infiniband-support.patch index ac2b7a0..241f287 100644 --- a/0016-infiniband-support.patch +++ b/0016-infiniband-support.patch @@ -48,13 +48,14 @@ Date: Tue Mar 25 23:15:58 2014 +0200 References: bnc#870535 + diff --git a/client/dhclient.c b/client/dhclient.c -index 0c77ae2..b438629 100644 +index 3f2f8b2..40d9fe0 100644 --- a/client/dhclient.c +++ b/client/dhclient.c -@@ -104,6 +104,40 @@ static int check_option_values(struct universe *universe, unsigned int opt, - static void dhclient_ddns_cb_free(dhcp_ddns_cb_t *ddns_cb, - char* file, int line); +@@ -71,6 +71,40 @@ int std_dhcid = 0; + assert (state_is == state_shouldbe). */ + #define ASSERT_STATE(state_is, state_shouldbe) {} +static void form_interface_duid(struct data_string *duid, struct interface_info *ip, const char *file, int line); + @@ -91,9 +92,9 @@ index 0c77ae2..b438629 100644 +} + #ifndef UNIT_TEST - int - main(int argc, char **argv) { -@@ -635,6 +669,26 @@ main(int argc, char **argv) { + static const char copyright[] = "Copyright 2004-2016 Internet Systems Consortium."; + static const char arr [] = "All rights reserved."; +@@ -756,6 +790,26 @@ main(int argc, char **argv) { } } @@ -120,7 +121,7 @@ index 0c77ae2..b438629 100644 /* At this point, all the interfaces that the script thinks are relevant should be running, so now we once again call discover_interfaces(), and this time ask it to actually set -@@ -649,19 +703,42 @@ main(int argc, char **argv) { +@@ -770,19 +824,42 @@ main(int argc, char **argv) { Not much entropy, but we're booting, so we're not likely to find anything better. */ seed = 0; @@ -165,7 +166,7 @@ index 0c77ae2..b438629 100644 */ if ((local_family == AF_INET6) || ((local_family == AF_INET) && (duid_v4 == 1))) { -@@ -672,6 +749,20 @@ main(int argc, char **argv) { +@@ -793,6 +870,20 @@ main(int argc, char **argv) { form_duid(&default_duid, MDL); write_duid(&default_duid); } @@ -185,8 +186,8 @@ index 0c77ae2..b438629 100644 + } } - /* Start a configuration state machine for each interface. */ -@@ -1143,15 +1234,22 @@ void dhcpack (packet) + #if defined(DHCPv6) && defined(DHCP4o6) +@@ -1282,15 +1373,22 @@ void dhcpack (packet) if (client -> xid == packet -> raw -> xid) break; } @@ -214,7 +215,7 @@ index 0c77ae2..b438629 100644 } if (client -> state != S_REBOOTING && -@@ -1164,7 +1262,7 @@ void dhcpack (packet) +@@ -1303,7 +1401,7 @@ void dhcpack (packet) return; } @@ -223,7 +224,7 @@ index 0c77ae2..b438629 100644 lease = packet_to_lease (packet, client); if (!lease) { -@@ -1629,15 +1727,21 @@ void dhcpoffer (packet) +@@ -1951,15 +2049,21 @@ void dhcpoffer (packet) /* If we're not receptive to an offer right now, or if the offer has an unrecognizable transaction id, then just drop it. */ if (!client || @@ -250,7 +251,7 @@ index 0c77ae2..b438629 100644 } sprintf (obuf, "%s from %s", name, piaddr (packet -> client_addr)); -@@ -1875,11 +1979,11 @@ void dhcpnak (packet) +@@ -2197,11 +2301,11 @@ void dhcpnak (packet) /* If we're not receptive to an offer right now, or if the offer has an unrecognizable transaction id, then just drop it. */ @@ -267,7 +268,7 @@ index 0c77ae2..b438629 100644 #if defined (DEBUG) log_debug ("DHCPNAK in wrong transaction."); #endif -@@ -1894,9 +1998,15 @@ void dhcpnak (packet) +@@ -2216,9 +2320,15 @@ void dhcpnak (packet) log_debug ("DHCPNAK in wrong state."); #endif return; @@ -284,25 +285,27 @@ index 0c77ae2..b438629 100644 if (!client -> active) { #if defined (DEBUG) -@@ -2023,10 +2133,10 @@ void send_discover (cpp) - client -> packet.secs = htons (65535); - client -> secs = client -> packet.secs; - +@@ -2351,11 +2461,11 @@ void send_discover (cpp) + (long)(client -> interval)); + } else + #endif - log_info ("DHCPDISCOVER on %s to %s port %d interval %ld", - client -> name ? client -> name : client -> interface -> name, - inet_ntoa (sockaddr_broadcast.sin_addr), - ntohs (sockaddr_broadcast.sin_port), (long)(client -> interval)); +- + log_info ("DHCPDISCOVER on %s to %s port %d interval %ld (xid=0x%x)", + client -> name ? client -> name : client -> interface -> name, + inet_ntoa (sockaddr_broadcast.sin_addr), + ntohs (sockaddr_broadcast.sin_port), (long)(client -> interval), client -> xid); - ++ /* Send out a packet. */ - result = send_packet(client->interface, NULL, &client->packet, -@@ -2295,10 +2405,10 @@ void send_request (cpp) - client -> packet.secs = htons (65535); - } - + #if defined(DHCPv6) && defined(DHCP4o6) + if (dhcpv4_over_dhcpv6) { +@@ -2639,10 +2749,10 @@ void send_request (cpp) + log_info ("DHCPREQUEST"); + } else + #endif - log_info ("DHCPREQUEST on %s to %s port %d", + log_info ("DHCPREQUEST on %s to %s port %d (xid=0x%x)", client -> name ? client -> name : client -> interface -> name, @@ -310,25 +313,25 @@ index 0c77ae2..b438629 100644 - ntohs (destination.sin_port)); + ntohs (destination.sin_port), client -> xid); - if (destination.sin_addr.s_addr != INADDR_BROADCAST && - fallback_interface) { -@@ -2338,10 +2448,10 @@ void send_decline (cpp) - - int result; - + #if defined(DHCPv6) && defined(DHCP4o6) + if (dhcpv4_over_dhcpv6) { +@@ -2699,10 +2809,10 @@ void send_decline (cpp) + log_info ("DHCPDECLINE"); + } else + #endif - log_info ("DHCPDECLINE on %s to %s port %d", + log_info ("DHCPDECLINE on %s to %s port %d (xid=0x%x)", client->name ? client->name : client->interface->name, inet_ntoa(sockaddr_broadcast.sin_addr), - ntohs(sockaddr_broadcast.sin_port)); -+ ntohs (sockaddr_broadcast.sin_port), client -> xid); ++ ntohs(sockaddr_broadcast.sin_port), client -> xid); /* Send out a packet. */ - result = send_packet(client->interface, NULL, &client->packet, -@@ -2384,10 +2494,10 @@ void send_release (cpp) - return; - } - + #if defined(DHCPv6) && defined(DHCP4o6) +@@ -2761,10 +2871,10 @@ void send_release (cpp) + log_info ("DHCPRELEASE"); + } else + #endif - log_info ("DHCPRELEASE on %s to %s port %d", + log_info ("DHCPRELEASE on %s to %s port %d (xid=0x%x)", client -> name ? client -> name : client -> interface -> name, @@ -336,9 +339,9 @@ index 0c77ae2..b438629 100644 - ntohs (destination.sin_port)); + ntohs (destination.sin_port), client -> xid); - if (fallback_interface) { - result = send_packet(fallback_interface, NULL, &client->packet, -@@ -2507,10 +2617,17 @@ make_client_options(struct client_state *client, struct client_lease *lease, + #if defined(DHCPv6) && defined(DHCP4o6) + if (dhcpv4_over_dhcpv6) { +@@ -3041,10 +3151,17 @@ make_client_options(struct client_state *client, struct client_lease *lease, * This can be overridden by including a client id in the configuration * file. */ @@ -357,10 +360,10 @@ index 0c77ae2..b438629 100644 memset(&client_identifier, 0, sizeof(client_identifier)); client_identifier.len = 1 + 4 + default_duid.len; if (!buffer_allocate(&client_identifier.buffer, -@@ -2600,12 +2717,13 @@ void make_discover (client, lease) - +@@ -3135,12 +3252,13 @@ void make_discover (client, lease) client -> packet.op = BOOTREQUEST; client -> packet.htype = client -> interface -> hw_address.hbuf [0]; + /* Assumes hw_address is known, otherwise a random value may result */ - client -> packet.hlen = client -> interface -> hw_address.hlen - 1; + if (client -> interface -> hw_address.hlen - 1 <= sizeof(client -> packet.chaddr)) + client -> packet.hlen = client -> interface -> hw_address.hlen - 1; @@ -373,7 +376,7 @@ index 0c77ae2..b438629 100644 client -> packet.flags = 0; else client -> packet.flags = htons (BOOTP_BROADCAST); -@@ -2617,7 +2735,7 @@ void make_discover (client, lease) +@@ -3152,7 +3270,7 @@ void make_discover (client, lease) memset (&(client -> packet.siaddr), 0, sizeof client -> packet.siaddr); client -> packet.giaddr = giaddr; @@ -382,17 +385,17 @@ index 0c77ae2..b438629 100644 memcpy (client -> packet.chaddr, &client -> interface -> hw_address.hbuf [1], (unsigned)(client -> interface -> hw_address.hlen - 1)); -@@ -2673,7 +2791,8 @@ void make_request (client, lease) - +@@ -3209,7 +3327,8 @@ void make_request (client, lease) client -> packet.op = BOOTREQUEST; client -> packet.htype = client -> interface -> hw_address.hbuf [0]; + /* Assumes hw_address is known, otherwise a random value may result */ - client -> packet.hlen = client -> interface -> hw_address.hlen - 1; + if (client -> interface -> hw_address.hlen - 1 <= sizeof(client -> packet.chaddr)) + client -> packet.hlen = client -> interface -> hw_address.hlen - 1; client -> packet.hops = 0; client -> packet.xid = client -> xid; client -> packet.secs = 0; /* Filled in by send_request. */ -@@ -2705,7 +2824,7 @@ void make_request (client, lease) +@@ -3241,7 +3360,7 @@ void make_request (client, lease) else memset (&client -> packet.giaddr, 0, sizeof client -> packet.giaddr); @@ -401,17 +404,17 @@ index 0c77ae2..b438629 100644 memcpy (client -> packet.chaddr, &client -> interface -> hw_address.hbuf [1], (unsigned)(client -> interface -> hw_address.hlen - 1)); -@@ -2747,7 +2866,8 @@ void make_decline (client, lease) - +@@ -3284,7 +3403,8 @@ void make_decline (client, lease) client -> packet.op = BOOTREQUEST; client -> packet.htype = client -> interface -> hw_address.hbuf [0]; + /* Assumes hw_address is known, otherwise a random value may result */ - client -> packet.hlen = client -> interface -> hw_address.hlen - 1; + if (client -> interface -> hw_address.hlen - 1 <= sizeof(client -> packet.chaddr)) + client -> packet.hlen = client -> interface -> hw_address.hlen - 1; client -> packet.hops = 0; client -> packet.xid = client -> xid; client -> packet.secs = 0; /* Filled in by send_request. */ -@@ -2764,9 +2884,10 @@ void make_decline (client, lease) +@@ -3301,9 +3421,10 @@ void make_decline (client, lease) memset (&client -> packet.siaddr, 0, sizeof client -> packet.siaddr); client -> packet.giaddr = giaddr; @@ -425,17 +428,17 @@ index 0c77ae2..b438629 100644 #ifdef DEBUG_PACKET dump_raw ((unsigned char *)&client -> packet, client -> packet_length); -@@ -2808,7 +2929,8 @@ void make_release (client, lease) - +@@ -3346,7 +3467,8 @@ void make_release (client, lease) client -> packet.op = BOOTREQUEST; client -> packet.htype = client -> interface -> hw_address.hbuf [0]; + /* Assumes hw_address is known, otherwise a random value may result */ - client -> packet.hlen = client -> interface -> hw_address.hlen - 1; + if (client -> interface -> hw_address.hlen - 1 <= sizeof(client -> packet.chaddr)) + client -> packet.hlen = client -> interface -> hw_address.hlen - 1; client -> packet.hops = 0; client -> packet.xid = random (); client -> packet.secs = 0; -@@ -2820,9 +2942,10 @@ void make_release (client, lease) +@@ -3358,9 +3480,10 @@ void make_release (client, lease) memset (&client -> packet.siaddr, 0, sizeof client -> packet.siaddr); client -> packet.giaddr = giaddr; @@ -449,7 +452,7 @@ index 0c77ae2..b438629 100644 #ifdef DEBUG_PACKET dump_raw ((unsigned char *)&client -> packet, client -> packet_length); -@@ -2975,17 +3098,13 @@ write_options(struct client_state *client, struct option_state *options, +@@ -3513,17 +3636,13 @@ write_options(struct client_state *client, struct option_state *options, * is not how it is intended. Upcoming rearchitecting the client should * address this "one daemon model." */ @@ -470,7 +473,7 @@ index 0c77ae2..b438629 100644 log_fatal("Impossible condition at %s:%d.", MDL); if ((ip->hw_address.hlen == 0) || -@@ -3033,6 +3152,13 @@ form_duid(struct data_string *duid, const char *file, int line) +@@ -3573,6 +3692,13 @@ form_duid(struct data_string *duid, const char *file, int line) } } @@ -484,7 +487,7 @@ index 0c77ae2..b438629 100644 /* Write the default DUID to the lease store. */ static isc_result_t write_duid(struct data_string *duid) -@@ -4368,7 +4494,8 @@ client_dns_update(struct client_state *client, dhcp_ddns_cb_t *ddns_cb) +@@ -4946,7 +5072,8 @@ client_dns_update(struct client_state *client, dhcp_ddns_cb_t *ddns_cb) NULL, client, client->sent_options, NULL, &global_scope, oc, MDL)) { @@ -495,10 +498,10 @@ index 0c77ae2..b438629 100644 /* * This appears to be an embedded DUID, diff --git a/common/bpf.c b/common/bpf.c -index df9facc..23d416a 100644 +index 34bbd5b..c415c22 100644 --- a/common/bpf.c +++ b/common/bpf.c -@@ -117,7 +117,7 @@ int if_register_bpf (info) +@@ -116,7 +116,7 @@ int if_register_bpf (info) log_fatal ("Can't attach interface %s to bpf device %s: %m", info -> name, filename); @@ -507,7 +510,7 @@ index df9facc..23d416a 100644 return sock; } -@@ -199,11 +199,44 @@ struct bpf_insn dhcp_bpf_filter [] = { +@@ -198,11 +198,44 @@ struct bpf_insn dhcp_bpf_filter [] = { BPF_STMT(BPF_RET+BPF_K, 0), }; @@ -543,7 +546,7 @@ index df9facc..23d416a 100644 +}; + #if defined (DEC_FDDI) - struct bpf_insn *bpf_fddi_filter; + struct bpf_insn *bpf_fddi_filter = NULL; #endif int dhcp_bpf_filter_len = sizeof dhcp_bpf_filter / sizeof (struct bpf_insn); @@ -552,7 +555,7 @@ index df9facc..23d416a 100644 #if defined (HAVE_TR_SUPPORT) struct bpf_insn dhcp_bpf_tr_filter [] = { /* accept all token ring packets due to variable length header */ -@@ -550,7 +583,9 @@ void maybe_setup_fallback () +@@ -549,7 +582,9 @@ void maybe_setup_fallback () #if defined(USE_BPF_RECEIVE) || defined(USE_BPF_HWADDR) void @@ -563,11 +566,33 @@ index df9facc..23d416a 100644 struct ifaddrs *ifa; struct ifaddrs *p; struct sockaddr_dl *sa; +diff --git a/common/discover.c b/common/discover.c +index c48d67b..969ee3e 100644 +--- a/common/discover.c ++++ b/common/discover.c +@@ -1280,7 +1280,7 @@ discover_interfaces(int state) { + if_register_send(tmp); + } else { + /* get_hw_addr() was called by register. */ +- get_hw_addr(tmp->name, &tmp->hw_address); ++ get_hw_addr(tmp); + } + break; + #ifdef DHCPv6 +@@ -1293,7 +1293,7 @@ discover_interfaces(int state) { + so now we have to call it explicitly + to not leave the hardware address unknown + (some code expects it cannot be. */ +- get_hw_addr(tmp->name, &tmp->hw_address); ++ get_hw_addr(tmp); + } else { + if_register_linklocal6(tmp); + } diff --git a/common/dlpi.c b/common/dlpi.c -index 944f21c..5cc2f3b 100644 +index 1014e29..3e6a3d3 100644 --- a/common/dlpi.c +++ b/common/dlpi.c -@@ -1330,7 +1330,9 @@ void maybe_setup_fallback () +@@ -1339,7 +1339,9 @@ void maybe_setup_fallback () #endif /* USE_DLPI_SEND */ void @@ -579,7 +604,7 @@ index 944f21c..5cc2f3b 100644 long buf[DLPI_MAXDLBUF]; union DL_primitives *dlp; diff --git a/common/lpf.c b/common/lpf.c -index 8582f31..745d3c0 100644 +index 123790d..943d679 100644 --- a/common/lpf.c +++ b/common/lpf.c @@ -47,12 +47,22 @@ @@ -912,10 +937,10 @@ index 8582f31..745d3c0 100644 } #endif diff --git a/common/print.c b/common/print.c -index dfe0593..aa7b8e2 100644 +index ce368c4..7dd9f52 100644 --- a/common/print.c +++ b/common/print.c -@@ -162,11 +162,11 @@ char *print_hw_addr (htype, hlen, data) +@@ -173,11 +173,11 @@ char *print_hw_addr (htype, hlen, data) const int hlen; const unsigned char *data; { @@ -981,10 +1006,10 @@ index e8851b4..2c6fb1c 100644 int sock, i; struct lifreq lifr; diff --git a/includes/dhcpd.h b/includes/dhcpd.h -index f0f4b20..0a04f04 100644 +index fa7d6fb..e55309e 100644 --- a/includes/dhcpd.h +++ b/includes/dhcpd.h -@@ -1321,6 +1321,7 @@ struct interface_info { +@@ -1345,6 +1345,7 @@ struct interface_info { struct shared_network *shared_network; /* Networks connected to this interface. */ struct hardware hw_address; /* Its physical address. */ @@ -992,20 +1017,20 @@ index f0f4b20..0a04f04 100644 struct in_addr *addresses; /* Addresses associated with this * interface. */ -@@ -2542,7 +2543,7 @@ void print_dns_status (int, struct dhcp_ddns_cb *, isc_result_t); +@@ -2583,7 +2584,7 @@ void print_dns_status (int, struct dhcp_ddns_cb *, isc_result_t); #endif const char *print_time(TIME); -void get_hw_addr(const char *name, struct hardware *hw); +void get_hw_addr(struct interface_info *info); - - /* socket.c */ - #if defined (USE_SOCKET_SEND) || defined (USE_SOCKET_RECEIVE) \ + char *buf_to_hex (const unsigned char *s, unsigned len, + const char *file, int line); + char *format_lease_id(const unsigned char *s, unsigned len, int format, diff --git a/server/dhcp.c b/server/dhcp.c -index 1f007e2..0f53ac2 100644 +index c9b3632..effa9b1 100644 --- a/server/dhcp.c +++ b/server/dhcp.c -@@ -1806,11 +1806,12 @@ void echo_client_id(packet, lease, in_options, out_options) +@@ -1967,11 +1967,12 @@ void echo_client_id(packet, lease, in_options, out_options) /* Check if echo-client-id is enabled */ oc = lookup_option(&server_universe, in_options, SV_ECHO_CLIENT_ID); @@ -1020,7 +1045,7 @@ index 1f007e2..0f53ac2 100644 struct data_string client_id; unsigned int opcode = DHO_DHCP_CLIENT_IDENTIFIER; -@@ -3592,9 +3593,11 @@ void dhcp_reply (lease) +@@ -3766,9 +3767,11 @@ void dhcp_reply (lease) } else bufs |= 2; /* XXX */ @@ -1036,10 +1061,10 @@ index 1f007e2..0f53ac2 100644 /* See if this is a Microsoft client that NUL-terminates its diff --git a/server/dhcpleasequery.c b/server/dhcpleasequery.c -index 0766b84..c9a1e8b 100644 +index 75a0e72..6207c31 100644 --- a/server/dhcpleasequery.c +++ b/server/dhcpleasequery.c -@@ -295,7 +295,7 @@ dhcpleasequery(struct packet *packet, int ms_nulltp) { +@@ -299,7 +299,7 @@ dhcpleasequery(struct packet *packet, int ms_nulltp) { assoc_ips, nassoc_ips); @@ -1048,7 +1073,7 @@ index 0766b84..c9a1e8b 100644 if (packet->raw->hlen+1 > sizeof(h.hbuf)) { log_info("%s: hardware length too long, " -@@ -405,11 +405,13 @@ dhcpleasequery(struct packet *packet, int ms_nulltp) { +@@ -409,11 +409,13 @@ dhcpleasequery(struct packet *packet, int ms_nulltp) { * Set the hardware address fields. */ @@ -1067,10 +1092,10 @@ index 0766b84..c9a1e8b 100644 /* * Set client identifier option. diff --git a/server/mdb.c b/server/mdb.c -index 9a7da80..539a233 100644 +index 6af6b63..a143452 100644 --- a/server/mdb.c +++ b/server/mdb.c -@@ -619,6 +619,9 @@ int find_hosts_by_haddr (struct host_decl **hp, int htype, +@@ -618,6 +618,9 @@ int find_hosts_by_haddr (struct host_decl **hp, int htype, return ret; #endif @@ -1080,6 +1105,3 @@ index 9a7da80..539a233 100644 h.hlen = hlen + 1; h.hbuf [0] = htype; memcpy (&h.hbuf [1], haddr, hlen); --- -2.1.4 - diff --git a/0017-server-no-success-report-before-send.919959.patch b/0017-server-no-success-report-before-send.919959.patch index bc8502f..a9676bd 100644 --- a/0017-server-no-success-report-before-send.919959.patch +++ b/0017-server-no-success-report-before-send.919959.patch @@ -4,17 +4,14 @@ Date: Mon, 14 Sep 2015 15:31:37 +0200 Subject: [PATCH] server: no success report before send (bsc#919959) References: bsc#919959 ---- - server/dhcp.c | 53 ++++++++++++++++++++++++++++++----------------------- - 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/server/dhcp.c b/server/dhcp.c -index 0f53ac2..3a610e8 100644 +index effa9b1..18297a6 100644 --- a/server/dhcp.c +++ b/server/dhcp.c -@@ -3643,22 +3643,6 @@ void dhcp_reply (lease) - } else - s = (char *)0; +@@ -3859,22 +3859,6 @@ void dhcp_reply (lease) + } + #endif - /* Say what we're doing... */ - log_info ("%s on %s to %s %s%s%svia %s", @@ -32,10 +29,10 @@ index 0f53ac2..3a610e8 100644 - ? inet_ntoa (state -> giaddr) - : state -> ip -> name)); - - /* Set up the hardware address... */ - hto.hlen = lease -> hardware_addr.hlen; - memcpy (hto.hbuf, lease -> hardware_addr.hbuf, hto.hlen); -@@ -3695,12 +3679,13 @@ void dhcp_reply (lease) + #ifdef DEBUG_PACKET + dump_raw ((unsigned char *)&raw, packet_length); + #endif +@@ -3906,12 +3890,13 @@ void dhcp_reply (lease) "packet over %s interface.", MDL, packet_length, fallback_interface->name); @@ -53,7 +50,7 @@ index 0f53ac2..3a610e8 100644 } /* If the client is RENEWING, unicast to the client using the -@@ -3733,11 +3718,13 @@ void dhcp_reply (lease) +@@ -3944,11 +3929,13 @@ void dhcp_reply (lease) " packet over %s interface.", MDL, packet_length, fallback_interface->name); @@ -70,7 +67,7 @@ index 0f53ac2..3a610e8 100644 } /* If it comes from a client that already knows its address -@@ -3765,8 +3752,28 @@ void dhcp_reply (lease) +@@ -3976,8 +3963,28 @@ void dhcp_reply (lease) log_error ("%s:%d: Failed to send %d byte long " "packet over %s interface.", MDL, packet_length, state->ip->name); @@ -99,6 +96,3 @@ index 0f53ac2..3a610e8 100644 /* Free all of the entries in the option_state structure now that we're done with them. */ --- -2.1.4 - diff --git a/dhclient.conf b/dhclient.conf index 023e1e1..a81c6d8 100644 --- a/dhclient.conf +++ b/dhclient.conf @@ -39,13 +39,7 @@ option rfc4833-tz-posix-string code 100 = string; option rfc4833-tz-name code 101 = string; # Request several well known/usefull dhcp options. -request subnet-mask, broadcast-address, routers, - rfc3442-classless-static-routes, - interface-mtu, host-name, domain-name, domain-search, - domain-name-servers, nis-domain, nis-servers, - nds-context, nds-servers, nds-tree-name, - netbios-name-servers, netbios-dd-server, - netbios-node-type, netbios-scope, ntp-servers; +request subnet-mask, broadcast-address, routers, rfc3442-classless-static-routes, interface-mtu, host-name, domain-name, domain-search, domain-name-servers, nis-domain, nis-servers, nds-context, nds-servers, nds-tree-name, netbios-name-servers, netbios-dd-server, netbios-node-type, netbios-scope, ntp-servers; # rfc4833-tz-posix-string, rfc4833-tz-name; # We request above options, require only the IP configuration: diff --git a/dhcp-4.3.3-P1.tar.gz b/dhcp-4.3.3-P1.tar.gz deleted file mode 100644 index cffada6..0000000 --- a/dhcp-4.3.3-P1.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c11e896dffa1bfbc49462965d3f6dec45534e34068603546d9a236f2aa669921 -size 9204043 diff --git a/dhcp-4.3.3-P1.tar.gz.asc b/dhcp-4.3.3-P1.tar.gz.asc deleted file mode 100644 index 3c59ba1..0000000 --- a/dhcp-4.3.3-P1.tar.gz.asc +++ /dev/null @@ -1,11 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.4.11 (GNU/Linux) - -iQEcBAABAgAGBQJWdAE2AAoJEG+m68mRGkwCuAoIAIJDWxX1ENjTOcSP3SLaloIB -0ZMlWF5HvWFDQNoARDAB0k35gYm7Qk3xuqBpboRm8N6z0kVZIj59b9mdK5YeuFBD -qhmXE5AQyGPytyPMmK4x2IDqxksGoz5tUMCXFTX1OA8De8ejTn5XkcIh/wlr7A93 -f3nnFKxKvKeNhyfLyonraZbEhKZ4nGogGEqT5ewQ3BSegrECnFvMTjCwUq58nYM6 -RT8AeATU/MHjLeZcQLByvda9F5VhqUdGnqhEjMJhuI2NCFfMVILXgIZ2Ietl0S2a -I0s0y1wu9I3gPvhlD6VwQsWZWN3v1oV1uGeJS+1HGxrqJUB4QhztiNY0tElL1Y8= -=QT0D ------END PGP SIGNATURE----- diff --git a/dhcp-4.3.5.tar.gz b/dhcp-4.3.5.tar.gz new file mode 100644 index 0000000..eab724a --- /dev/null +++ b/dhcp-4.3.5.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb95936bf15d2393c55dd505bc527d1d4408289cec5a9fa8abb99f7577e7f954 +size 10075147 diff --git a/dhcp-4.3.5.tar.gz.asc b/dhcp-4.3.5.tar.gz.asc new file mode 100644 index 0000000..0202fe1 --- /dev/null +++ b/dhcp-4.3.5.tar.gz.asc @@ -0,0 +1,11 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.11 (GNU/Linux) + +iQEcBAABAgAGBQJX8jrBAAoJEG+m68mRGkwCczcH/1lMdlvf2RX+IfNraDTXWmY1 ++MGk51H7aIJDRDFhiLA1f1ht1hIXJB0gnaOdJxLcqQGUiHPQfVZidDz2XxAjr7S2 +VvV6mfHxO1+oPsaFzCEItDqHk/LJcBDgKWC2cvabNfi5Nyq8rR+Zjn0i509DYFBR +cJYzau7Smse8ZVpUrsdLOtKgNznVPioowqCooiOlzZfYNfKOdwk4z6U8vglLhRL4 +xpfbg373Z78dExeNPqJ97c/tUg2YCnuZGvLfwvI+2Bzrp63TbAnJYB3CnyCj+fS2 +iSH7WACNSqRQoEWxE+vi9kTY0GGVFaonPZSRMT1DKFhBge4TdMCm2STIIOJiPFw= +=xG2q +-----END PGP SIGNATURE----- diff --git a/dhcp.changes b/dhcp.changes index 9e3caff..65db6ae 100644 --- a/dhcp.changes +++ b/dhcp.changes @@ -1,3 +1,98 @@ +------------------------------------------------------------------- +Thu Jul 6 16:17:18 CEST 2017 - ndas@suse.de + +- fixed a typo in nis-servers option name breaking the config file introduced + in previous change to workaround issues in NetworkManager parser. +- Update to dhcp-4.3.5 + + - Corrected a bug which could cause the server to sporadically crash while + loading lease files with the lease-id-format is set to "hex". Our thanks + to Jay Ford, University of Iowa for reporting the issue. + [ISC-Bugs #43185] + - Eliminated a noisy, but otherwise harmless debug log statment that may + appear during server startup when building with --enable-binary-leases + and configuring multiple pools in a shared network. Thanks to Fernando + Soto from BlueCat Networks for reporting the issue and supplying a patch. + [ISC-Bugs #43262] + - Fixed util/bindvar.sh error handling. + [ISC-Bugs #41973] + - Correct error message in relay to use remote id length instead + of circuit id length. + [ISC-Bugs #42556] + - Add logic to test directory Makefiles to avoid copying Attfile(s) + when building within the source tree. This eliminates a noisy but + otherwise harmless error message when running "make check". + [ISC-Bugs #41883] + - Leases are now scrubbed of certain prior use information when pool + re-balancing reassigns them from one FO peer to the other. This + corrects an issue where leases that were offered but not used + by the client retained the client hostname from the original + client. Thanks to Pavel Polacek, Jan Evangelista Purkyne University + for reporting the issue. + [ISC-Bugs #42008] + - In the LDAP code and schema add some missing '6' characters to use + the v6 instead of the v4 versions. Thanks to Denis Taranushin for + reporting this issue and supplying its patch. + [ISC-Bugs #42666] + - Correct how the pick-first-value expression is written to a lease + file. Previously it was written as a concat expression due to + a cut and paste error. + [ISC-Bugs #42253] + - Modify the DDNS code to clean up the PTR record even if there + are issues while cleaning up the A or AAAA records. + [ISC-Bugs #23954] + - Added global configuration parameter, abandon-lease-time, which determines + the amount of time a lease remains abandoned. The default is 84600 seconds. + Additionaly, the server now conducts a ping check (if ping checks are + enabled) prior to offering an abandoned lease to client. Our thanks to + David Zych at University of Illinois for reporting the issue and working + with us to produce a viable solution. + [ISC-Bugs #41815] + - Correct handling of interface names during interface discovery. This + addresses an issue where interface names of 15 characters in length + could lead to crashes or interface recognition errors during startup + of dhcpd, dhclient, and dhcrelay. + [ISC-Bugs #42226] + - Updates to contrib/dhcp-lease-list.pl to make it more friendly. + The updates are: looking for the lease file in more places and skipping + the "processing complete" output when creating machine readable + output. Thanks to Cameron Paine (cbp at null dot net) for the + patch. + [ISC-Bugs #42113] + - When reusing a lease for dhcp-cache-threshold return the hostname + to the original lease. Also if the host pointer, UID or hardware address + change don't allow reuse of the lease. + Thanks to Michael Vincent for reporting this and helping us + verify the problem and fix. + [ISC-Bugs #42849] + - Change dmalloc to use a size_t as the length argument to bring it + in line with the call it will make to malloc(). + [ISC-Bugs #40843] + - If the failover socket can't be bound, close it. Otherwise if the + user configures an incorrect address in the failover stanza the + server will continue to open new sockets every 90 seconds until + it runs out. + [ISC-Bugs #42452] + - Add DHCPv4-mode, dhcrelay command line options, "-iu" and "-id", that + allow interfaces to be upstream or downstream respectively. Upstream + interfaces will accept and forward only BOOTP replies, while downstream + interfaces will accept and forward only BOOTP requests. + [ISC-Bugs #41547] + - Clean up some memory references in the vendor-class construct. + [ISC-Bugs #42984] + [*0006-dhcp-4.3.2-dhclient-send-hostname-or-fqdn.patch, + *0011-Fixed-linux-interface-discovery-using-getifaddrs.patch, + *0013-dhcp-4.2.x-dhcpv6-decline-on-DAD-failure.872609.patch, + *0016-infiniband-support.patch, + *0017-server-no-success-report-before-send.919959.patch] + + +------------------------------------------------------------------- +Mon Jul 3 09:08:32 UTC 2017 - zaitor@opensuse.org + +- Set all requested dhcp options on a single line, so they are + actually requested (boo#1046969, boo#1047004). + ------------------------------------------------------------------- Mon Mar 13 23:53:20 CET 2017 - ndas@suse.de diff --git a/dhcp.keyring b/dhcp.keyring index 5ffc091..515cb63 100644 --- a/dhcp.keyring +++ b/dhcp.keyring @@ -1,36 +1,152 @@ -pub 2048R/911A4C02 2014-12-02 [verfällt: 2017-01-31] -uid Internet Systems Consortium, Inc. (Signing key, 2015-2016) -sig 911A4C02 2014-12-02 [selfsig] -sub 2048R/1BD14881 2014-12-02 [verfällt: 2017-01-31] -sig 911A4C02 2014-12-02 [keybind] -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1.4.11 (GNU/Linux) -mQENBFR9szQBCADAwiKoEyFh32NHLc+c1vGgZ2lDKvXd7MoZZAOM2NUJkaDqt+Xy -537ycGmZRqukpGUsa0fDeqjOq+l4paX3QnW1DEs8ypnWi5Zme4lYHysmNeG33ihe -SMeGRbnZi+9VTho3NGv3iM9gtRMDXTB5wi7OCu0XNypUtR2afP9F9EgRs4nJ5iMz -o5c1y0wH4y+lJ33NCHZDj8ditl64yMbuVlZOD3UxoQqw/8E6T4rHly64g9s6Ld7o -YybSN/hKIXFZRqrTebEd2LwZqGhPQIgYDUdumwvtw6jfrosbMOx0tan3esnxlptl -fbkmOsoi8pPJqlo2VtLBx9XN53ZFMqc/Pj3tABEBAAG0TUludGVybmV0IFN5c3Rl -bXMgQ29uc29ydGl1bSwgSW5jLiAoU2lnbmluZyBrZXksIDIwMTUtMjAxNikgPGNv -ZGVzaWduQGlzYy5vcmc+iQE9BBMBAgAoBQJUfbM0AhsDBQkEEtKABgsJCAcDAgYV -CAIJCgsEFgIDAQIeAQIXgAAKCRBvpuvJkRpMAhD3B/ip18kQSE4//Yt8VMF6kciD -bcCQAOwy45/1frZaX9wS5ri/pdHxB0vw4SwrpJgJEkLGG0sEzRwS87QeFCtGDhIw -J/+5JX6in0cJ+hr2G7DJUpVgKp3Y8lEZ3ch+gAZ3k45uzzoOTT4tm6uXWlkOnlPJ -jUb1s9bVzL9zUsJ7XaV5x4aR3Bw53/izJEIaxWHj1CEjAzRC7wPQpo/EK+fWzFBf -enSCBJEvW1vkomtb1jMdj+uhod1LzFdXHdQjDCSKn/Glpn/YcZ9/LkiUSwNLTpL4 -CxDbEis4QWNDndAR/u9REC1zDW/xQEC3UxsB06Zm9NaWjAHy8s0rOihgoetaroa5 -AQ0EVH2zNAEIAK3gbs1saWWHWGxsPuhOf+x18g0/+N7f4fZE7TTetPNhdOgY0LGx -ul9VHRoZgvPbnm+BZmZhYGMr/oWlTEuF+sa/Dr8SKqVDjYIj0qOzimMLYgaKYV8S -Q8LhUFtUQjm5V5J/FQ97NzO2fPgEIo7JbIVrhsPEms+1gl9yanKW/+HUovl7KUyN -RovfaJdpO4uyuY9CGz875DqE39EhflBWN96bpCUmp9O/VQs4eJTp6pkv2EkMVcEa -dtFXAVFlSFe/OUd83gbVXM9NCRfY98ZJaB2OnI1/lU8OomdHOt+z6h7bdtC/w42q -sjBmu+y2Fth4WXzPd7WbfvVdlMjbBHZLn8EAEQEAAYkBJQQYAQIADwUCVH2zNAIb -DAUJBBLSgAAKCRBvpuvJkRpMAhEXB/0Xq9NqR7vgSZTed7esSMWqOLWZloKdjxys -3BA9h3EXCkF6gMdE4b6OkIUH0V2aFCYJXZmyFol0tq50aETD62aCgCOVtxlkx5VH -tTLl/T1Venf9TDISiEmDBI+3DDqjA3YOH86Fql7Jq+EMZx4e2L50PWWyRR3Lzjp6 -TFe9Xh4rqQJoI0OBtLyX13Nfe/Ar4Z85DX6O1sv/CM0aWkfGbdMAeeHrDVRKaraH -ULyyX4kfu+mZj8AthxMpVDyaHil9WCX1uwGo+6rkiuAMvURbn05h5C92t2QUQJE1 -rvBKpzLEBW8qQq5foo+8yHHWpzue4i4r2uEJ3+FLUsjtlU+3F+Pq -=dem0 +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 +=E+8v -----END PGP PUBLIC KEY BLOCK----- diff --git a/dhcp.spec b/dhcp.spec index 42dfb68..95a89c4 100644 --- a/dhcp.spec +++ b/dhcp.spec @@ -16,7 +16,7 @@ # -%define isc_version 4.3.3-P1 +%define isc_version 4.3.5 %define susefw2dir %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services %define omc_prefix /usr/share/omc %define omc_svcdir %{omc_prefix}/svcinfo.d @@ -41,7 +41,7 @@ BuildRequires: openldap2-devel %endif BuildRequires: dos2unix BuildRequires: libtool -Version: 4.3.3.P1 +Version: 4.3.5 Release: 0 Summary: Common Files Used by ISC DHCP Software License: BSD-3-Clause