SHA256
1
0
forked from pool/dhcp

Accepting request 508605 from network:dhcp

1

OBS-URL: https://build.opensuse.org/request/show/508605
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/dhcp?expand=0&rev=104
This commit is contained in:
Dominique Leuenberger 2017-07-08 10:27:37 +00:00 committed by Git OBS Bridge
commit 7dc0fb2fde
13 changed files with 418 additions and 199 deletions

View File

@ -6,10 +6,10 @@ Subject: [PATCH] dhcp-4.3.2-dhclient-send-hostname-or-fqdn
Signed-off-by: Marius Tomaschewski <mt@suse.de>
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 <port>] [-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 <port>] [-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

View File

@ -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

View File

@ -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. */

View File

@ -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

View File

@ -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

View File

@ -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:

View File

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

View File

@ -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-----

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

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

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

@ -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-----

View File

@ -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

View File

@ -1,36 +1,152 @@
pub 2048R/911A4C02 2014-12-02 [verfällt: 2017-01-31]
uid Internet Systems Consortium, Inc. (Signing key, 2015-2016) <codesign@isc.org>
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-----

View File

@ -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