This commit is contained in:
Jiri Popelka 2014-07-10 19:01:31 +02:00
parent 6b7e125d8b
commit 7b69e548fb
19 changed files with 839 additions and 1064 deletions

View File

@ -1,7 +1,7 @@
diff -up dhcp-4.3.0a1/client/dhc6.c.PPP dhcp-4.3.0a1/client/dhc6.c diff -up dhcp-4.3.1b1/client/dhc6.c.mRfpsB dhcp-4.3.1b1/client/dhc6.c
--- dhcp-4.3.0a1/client/dhc6.c.PPP 2013-12-19 16:16:45.925550229 +0100 --- dhcp-4.3.1b1/client/dhc6.c.mRfpsB 2014-07-10 17:48:03.779424870 +0200
+++ dhcp-4.3.0a1/client/dhc6.c 2013-12-19 16:16:45.930550159 +0100 +++ dhcp-4.3.1b1/client/dhc6.c 2014-07-10 17:48:03.795424644 +0200
@@ -5080,7 +5080,8 @@ make_client6_options(struct client_state @@ -5088,7 +5088,8 @@ make_client6_options(struct client_state
*/ */
if ((oc = lookup_option(&dhcpv6_universe, *op, if ((oc = lookup_option(&dhcpv6_universe, *op,
D6O_CLIENTID)) == NULL) { D6O_CLIENTID)) == NULL) {
@ -11,10 +11,10 @@ diff -up dhcp-4.3.0a1/client/dhc6.c.PPP dhcp-4.3.0a1/client/dhc6.c
MDL)) MDL))
log_fatal("Failure assembling a DUID."); log_fatal("Failure assembling a DUID.");
diff -up dhcp-4.3.0a1/client/dhclient.c.PPP dhcp-4.3.0a1/client/dhclient.c diff -up dhcp-4.3.1b1/client/dhclient.c.mRfpsB dhcp-4.3.1b1/client/dhclient.c
--- dhcp-4.3.0a1/client/dhclient.c.PPP 2013-12-19 16:16:45.932550131 +0100 --- dhcp-4.3.1b1/client/dhclient.c.mRfpsB 2014-07-10 17:39:25.853763858 +0200
+++ dhcp-4.3.0a1/client/dhclient.c 2013-12-19 16:27:38.334473958 +0100 +++ dhcp-4.3.1b1/client/dhclient.c 2014-07-10 17:49:49.882925843 +0200
@@ -926,8 +926,8 @@ main(int argc, char **argv) { @@ -948,8 +948,8 @@ main(int argc, char **argv) {
if (default_duid.buffer != NULL) if (default_duid.buffer != NULL)
data_string_forget(&default_duid, MDL); data_string_forget(&default_duid, MDL);
@ -25,7 +25,7 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.PPP dhcp-4.3.0a1/client/dhclient.c
} }
} }
@@ -3225,7 +3225,7 @@ write_options(struct client_state *clien @@ -3267,7 +3267,7 @@ write_options(struct client_state *clien
* is not how it is intended. Upcoming rearchitecting the client should * is not how it is intended. Upcoming rearchitecting the client should
* address this "one daemon model." * address this "one daemon model."
*/ */
@ -34,7 +34,7 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.PPP dhcp-4.3.0a1/client/dhclient.c
form_duid(struct data_string *duid, const char *file, int line) form_duid(struct data_string *duid, const char *file, int line)
{ {
struct interface_info *ip; struct interface_info *ip;
@@ -3237,6 +3237,15 @@ form_duid(struct data_string *duid, cons @@ -3280,6 +3280,15 @@ form_duid(struct data_string *duid, cons
if (ip == NULL) if (ip == NULL)
log_fatal("Impossible condition at %s:%d.", MDL); log_fatal("Impossible condition at %s:%d.", MDL);
@ -50,19 +50,19 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.PPP dhcp-4.3.0a1/client/dhclient.c
if ((ip->hw_address.hlen == 0) || if ((ip->hw_address.hlen == 0) ||
(ip->hw_address.hlen > sizeof(ip->hw_address.hbuf))) (ip->hw_address.hlen > sizeof(ip->hw_address.hbuf)))
log_fatal("Impossible hardware address length at %s:%d.", MDL); log_fatal("Impossible hardware address length at %s:%d.", MDL);
@@ -3272,6 +3281,8 @@ form_duid(struct data_string *duid, cons @@ -3323,6 +3332,8 @@ form_duid(struct data_string *duid, cons
memcpy(duid->buffer->data + 4, ip->hw_address.hbuf + 1, log_info("Created duid %s.", str);
ip->hw_address.hlen - 1); dfree(str, MDL);
} }
+ +
+ return ISC_R_SUCCESS; + return ISC_R_SUCCESS;
} }
/* Write the default DUID to the lease store. */ /* Write the default DUID to the lease store. */
diff -up dhcp-4.3.0a1/common/bpf.c.PPP dhcp-4.3.0a1/common/bpf.c diff -up dhcp-4.3.1b1/common/bpf.c.mRfpsB dhcp-4.3.1b1/common/bpf.c
--- dhcp-4.3.0a1/common/bpf.c.PPP 2013-12-19 16:16:45.868551024 +0100 --- dhcp-4.3.1b1/common/bpf.c.mRfpsB 2014-07-10 17:39:25.797764653 +0200
+++ dhcp-4.3.0a1/common/bpf.c 2013-12-19 16:16:45.934550103 +0100 +++ dhcp-4.3.1b1/common/bpf.c 2014-07-10 17:48:03.797424616 +0200
@@ -602,6 +602,22 @@ get_hw_addr(const char *name, struct har @@ -600,6 +600,22 @@ get_hw_addr(const char *name, struct har
memcpy(&hw->hbuf[1], LLADDR(sa), sa->sdl_alen); memcpy(&hw->hbuf[1], LLADDR(sa), sa->sdl_alen);
break; break;
#endif /* IFT_FDDI */ #endif /* IFT_FDDI */
@ -85,9 +85,9 @@ diff -up dhcp-4.3.0a1/common/bpf.c.PPP dhcp-4.3.0a1/common/bpf.c
default: default:
log_fatal("Unsupported device type %d for \"%s\"", log_fatal("Unsupported device type %d for \"%s\"",
sa->sdl_type, name); sa->sdl_type, name);
diff -up dhcp-4.3.0a1/common/lpf.c.PPP dhcp-4.3.0a1/common/lpf.c diff -up dhcp-4.3.1b1/common/lpf.c.mRfpsB dhcp-4.3.1b1/common/lpf.c
--- dhcp-4.3.0a1/common/lpf.c.PPP 2013-12-19 16:16:45.848551303 +0100 --- dhcp-4.3.1b1/common/lpf.c.mRfpsB 2014-07-10 17:39:25.744765404 +0200
+++ dhcp-4.3.0a1/common/lpf.c 2013-12-19 16:16:45.934550103 +0100 +++ dhcp-4.3.1b1/common/lpf.c 2014-07-10 17:48:03.797424616 +0200
@@ -511,6 +511,22 @@ get_hw_addr(const char *name, struct har @@ -511,6 +511,22 @@ get_hw_addr(const char *name, struct har
hw->hbuf[0] = HTYPE_FDDI; hw->hbuf[0] = HTYPE_FDDI;
memcpy(&hw->hbuf[1], sa->sa_data, 6); memcpy(&hw->hbuf[1], sa->sa_data, 6);
@ -111,22 +111,10 @@ diff -up dhcp-4.3.0a1/common/lpf.c.PPP dhcp-4.3.0a1/common/lpf.c
default: default:
log_fatal("Unsupported device type %ld for \"%s\"", log_fatal("Unsupported device type %ld for \"%s\"",
(long int)sa->sa_family, name); (long int)sa->sa_family, name);
diff -up dhcp-4.3.0a1/includes/dhcp.h.PPP dhcp-4.3.0a1/includes/dhcp.h diff -up dhcp-4.3.1b1/includes/dhcpd.h.mRfpsB dhcp-4.3.1b1/includes/dhcpd.h
--- dhcp-4.3.0a1/includes/dhcp.h.PPP 2013-12-19 16:16:45.919550313 +0100 --- dhcp-4.3.1b1/includes/dhcpd.h.mRfpsB 2014-07-10 17:48:03.761425124 +0200
+++ dhcp-4.3.0a1/includes/dhcp.h 2013-12-19 16:16:45.936550076 +0100 +++ dhcp-4.3.1b1/includes/dhcpd.h 2014-07-10 17:48:03.798424601 +0200
@@ -85,6 +85,8 @@ struct dhcp_packet { @@ -2839,7 +2839,7 @@ void client_dns_remove(struct client_sta
* is no standard for this so we
* just steal a type */
+#define HTYPE_RESERVED 0 /* RFC 5494 */
+
/* Magic cookie validating dhcp options field (and bootp vendor
extensions field). */
#define DHCP_OPTIONS_COOKIE "\143\202\123\143"
diff -up dhcp-4.3.0a1/includes/dhcpd.h.PPP dhcp-4.3.0a1/includes/dhcpd.h
--- dhcp-4.3.0a1/includes/dhcpd.h.PPP 2013-12-19 16:16:45.935550090 +0100
+++ dhcp-4.3.0a1/includes/dhcpd.h 2013-12-19 16:28:33.468709007 +0100
@@ -2824,7 +2824,7 @@ void client_dns_remove(struct client_sta
void dhcpv4_client_assignments(void); void dhcpv4_client_assignments(void);
void dhcpv6_client_assignments(void); void dhcpv6_client_assignments(void);
@ -135,10 +123,22 @@ diff -up dhcp-4.3.0a1/includes/dhcpd.h.PPP dhcp-4.3.0a1/includes/dhcpd.h
/* dhc6.c */ /* dhc6.c */
void dhc6_lease_destroy(struct dhc6_lease **src, const char *file, int line); void dhc6_lease_destroy(struct dhc6_lease **src, const char *file, int line);
diff -up dhcp-4.3.0a1/server/dhcpv6.c.PPP dhcp-4.3.0a1/server/dhcpv6.c diff -up dhcp-4.3.1b1/includes/dhcp.h.mRfpsB dhcp-4.3.1b1/includes/dhcp.h
--- dhcp-4.3.0a1/server/dhcpv6.c.PPP 2013-12-19 16:16:45.901550564 +0100 --- dhcp-4.3.1b1/includes/dhcp.h.mRfpsB 2014-07-10 17:48:03.761425124 +0200
+++ dhcp-4.3.0a1/server/dhcpv6.c 2013-12-19 16:16:45.937550062 +0100 +++ dhcp-4.3.1b1/includes/dhcp.h 2014-07-10 17:48:03.798424601 +0200
@@ -307,6 +307,9 @@ generate_new_server_duid(void) { @@ -81,6 +81,8 @@ struct dhcp_packet {
* is no standard for this so we
* just steal a type */
+#define HTYPE_RESERVED 0 /* RFC 5494 */
+
/* Magic cookie validating dhcp options field (and bootp vendor
extensions field). */
#define DHCP_OPTIONS_COOKIE "\143\202\123\143"
diff -up dhcp-4.3.1b1/server/dhcpv6.c.mRfpsB dhcp-4.3.1b1/server/dhcpv6.c
--- dhcp-4.3.1b1/server/dhcpv6.c.mRfpsB 2014-07-10 17:47:31.464881409 +0200
+++ dhcp-4.3.1b1/server/dhcpv6.c 2014-07-10 17:48:03.800424573 +0200
@@ -330,6 +330,9 @@ generate_new_server_duid(void) {
if (p->hw_address.hlen > 0) { if (p->hw_address.hlen > 0) {
break; break;
} }

View File

@ -1,7 +1,7 @@
diff -up dhcp-4.3.0a1/server/dhcpv6.c.UseMulticast dhcp-4.3.0a1/server/dhcpv6.c diff -up dhcp-4.3.1b1/server/dhcpv6.c.UseMulticast dhcp-4.3.1b1/server/dhcpv6.c
--- dhcp-4.3.0a1/server/dhcpv6.c.UseMulticast 2013-12-11 01:25:12.000000000 +0100 --- dhcp-4.3.1b1/server/dhcpv6.c.UseMulticast 2014-07-02 19:58:40.000000000 +0200
+++ dhcp-4.3.0a1/server/dhcpv6.c 2013-12-19 15:54:46.934932371 +0100 +++ dhcp-4.3.1b1/server/dhcpv6.c 2014-07-10 18:20:03.066256219 +0200
@@ -353,6 +353,48 @@ generate_new_server_duid(void) { @@ -376,6 +376,48 @@ generate_new_server_duid(void) {
} }
/* /*
@ -50,7 +50,20 @@ diff -up dhcp-4.3.0a1/server/dhcpv6.c.UseMulticast dhcp-4.3.0a1/server/dhcpv6.c
* Get the client identifier from the packet. * Get the client identifier from the packet.
*/ */
isc_result_t isc_result_t
@@ -1498,6 +1540,56 @@ lease_to_client(struct data_string *repl @@ -706,6 +748,12 @@ static const int required_opts[] = {
D6O_PREFERENCE,
0
};
+static const int required_opts_NAA[] = {
+ D6O_CLIENTID,
+ D6O_SERVERID,
+ D6O_STATUS_CODE,
+ 0
+};
static const int required_opts_solicit[] = {
D6O_CLIENTID,
D6O_SERVERID,
@@ -1587,6 +1635,56 @@ lease_to_client(struct data_string *repl
reply.shared->group, NULL); reply.shared->group, NULL);
} }
@ -107,18 +120,7 @@ diff -up dhcp-4.3.0a1/server/dhcpv6.c.UseMulticast dhcp-4.3.0a1/server/dhcpv6.c
/* /*
* RFC3315 section 17.2.2 (Solicit): * RFC3315 section 17.2.2 (Solicit):
* *
@@ -1523,8 +1615,8 @@ lease_to_client(struct data_string *repl @@ -1619,6 +1717,7 @@ lease_to_client(struct data_string *repl
* Sends a Renew/Rebind if the IA is not in the Reply message.
*/
#if defined (RFC3315_PRE_ERRATA_2010_08)
- if (no_resources_avail && (reply.ia_count != 0) &&
- (reply.packet->dhcpv6_msg_type == DHCPV6_SOLICIT))
+ else if (no_resources_avail && (reply.ia_count != 0) &&
+ (reply.packet->dhcpv6_msg_type == DHCPV6_SOLICIT))
{
/* Set the NoAddrsAvail status code. */
if (!set_status_code(STATUS_NoAddrsAvail,
@@ -1571,6 +1663,7 @@ lease_to_client(struct data_string *repl
* Having stored the client's IA's, store any options that * Having stored the client's IA's, store any options that
* will fit in the remaining space. * will fit in the remaining space.
*/ */
@ -126,7 +128,7 @@ diff -up dhcp-4.3.0a1/server/dhcpv6.c.UseMulticast dhcp-4.3.0a1/server/dhcpv6.c
reply.cursor += store_options6((char *)reply.buf.data + reply.cursor, reply.cursor += store_options6((char *)reply.buf.data + reply.cursor,
sizeof(reply.buf) - reply.cursor, sizeof(reply.buf) - reply.cursor,
reply.opt_state, reply.packet, reply.opt_state, reply.packet,
@@ -4688,7 +4781,6 @@ dhcpv6_solicit(struct data_string *reply @@ -4748,7 +4847,6 @@ dhcpv6_solicit(struct data_string *reply
* Very similar to Solicit handling, except the server DUID is required. * Very similar to Solicit handling, except the server DUID is required.
*/ */
@ -134,7 +136,7 @@ diff -up dhcp-4.3.0a1/server/dhcpv6.c.UseMulticast dhcp-4.3.0a1/server/dhcpv6.c
static void static void
dhcpv6_request(struct data_string *reply_ret, struct packet *packet) { dhcpv6_request(struct data_string *reply_ret, struct packet *packet) {
struct data_string client_id; struct data_string client_id;
@@ -5018,7 +5110,6 @@ exit: @@ -5078,7 +5176,6 @@ exit:
* except for the error code of when addresses don't match. * except for the error code of when addresses don't match.
*/ */
@ -142,7 +144,7 @@ diff -up dhcp-4.3.0a1/server/dhcpv6.c.UseMulticast dhcp-4.3.0a1/server/dhcpv6.c
static void static void
dhcpv6_renew(struct data_string *reply, struct packet *packet) { dhcpv6_renew(struct data_string *reply, struct packet *packet) {
struct data_string client_id; struct data_string client_id;
@@ -5262,18 +5353,60 @@ iterate_over_ia_na(struct data_string *r @@ -5322,18 +5419,60 @@ iterate_over_ia_na(struct data_string *r
goto exit; goto exit;
} }
@ -213,7 +215,7 @@ diff -up dhcp-4.3.0a1/server/dhcpv6.c.UseMulticast dhcp-4.3.0a1/server/dhcpv6.c
/* /*
* Loop through the IA_NA reported by the client, and deal with * Loop through the IA_NA reported by the client, and deal with
@@ -5411,6 +5544,7 @@ iterate_over_ia_na(struct data_string *r @@ -5471,6 +5610,7 @@ iterate_over_ia_na(struct data_string *r
/* /*
* Return our reply to the caller. * Return our reply to the caller.
*/ */
@ -221,7 +223,7 @@ diff -up dhcp-4.3.0a1/server/dhcpv6.c.UseMulticast dhcp-4.3.0a1/server/dhcpv6.c
reply_ret->len = reply_ofs; reply_ret->len = reply_ofs;
reply_ret->buffer = NULL; reply_ret->buffer = NULL;
if (!buffer_allocate(&reply_ret->buffer, reply_ofs, MDL)) { if (!buffer_allocate(&reply_ret->buffer, reply_ofs, MDL)) {
@@ -5456,7 +5590,6 @@ exit: @@ -5516,7 +5656,6 @@ exit:
* we still need to be aware of this possibility. * we still need to be aware of this possibility.
*/ */
@ -229,7 +231,7 @@ diff -up dhcp-4.3.0a1/server/dhcpv6.c.UseMulticast dhcp-4.3.0a1/server/dhcpv6.c
/* TODO: IA_TA */ /* TODO: IA_TA */
static void static void
dhcpv6_decline(struct data_string *reply, struct packet *packet) { dhcpv6_decline(struct data_string *reply, struct packet *packet) {
@@ -5926,7 +6059,6 @@ exit: @@ -5986,7 +6125,6 @@ exit:
* Release means a client is done with the leases. * Release means a client is done with the leases.
*/ */

View File

@ -1,39 +1,7 @@
diff -up dhcp-4.3.0a1/client/Makefile.am.capability dhcp-4.3.0a1/client/Makefile.am diff -up dhcp-4.3.1b1/client/dhclient.8.zzftXp dhcp-4.3.1b1/client/dhclient.8
--- dhcp-4.3.0a1/client/Makefile.am.capability 2013-12-19 16:15:26.549657115 +0100 --- dhcp-4.3.1b1/client/dhclient.8.zzftXp 2014-07-10 17:38:26.938599402 +0200
+++ dhcp-4.3.0a1/client/Makefile.am 2013-12-19 16:16:04.126133091 +0100 +++ dhcp-4.3.1b1/client/dhclient.8 2014-07-10 17:39:25.852763873 +0200
@@ -4,7 +4,7 @@ dhclient_SOURCES = clparse.c dhclient.c @@ -128,6 +128,9 @@ dhclient - Dynamic Host Configuration Pr
scripts/bsdos scripts/freebsd scripts/linux scripts/macos \
scripts/netbsd scripts/nextstep scripts/openbsd \
scripts/solaris scripts/openwrt
-dhclient_LDADD = ../common/libdhcp.a ../omapip/libomapi.la \
+dhclient_LDADD = ../common/libdhcp.a ../omapip/libomapi.la $(CAPNG_LDADD) \
$(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export
man_MANS = dhclient.8 dhclient-script.8 dhclient.conf.5 dhclient.leases.5
EXTRA_DIST = $(man_MANS)
diff -up dhcp-4.3.0a1/client/dhclient-script.8.capability dhcp-4.3.0a1/client/dhclient-script.8
--- dhcp-4.3.0a1/client/dhclient-script.8.capability 2013-12-19 16:15:26.520657520 +0100
+++ dhcp-4.3.0a1/client/dhclient-script.8 2013-12-19 16:15:26.549657115 +0100
@@ -246,6 +246,16 @@ repeatedly initialized to the values pro
the other. Assuming the information provided by both servers is
valid, this shouldn't cause any real problems, but it could be
confusing.
+.PP
+Normally, if dhclient was compiled with libcap-ng support,
+dhclient drops most capabilities immediately upon startup.
+While more secure, this greatly restricts the additional actions that
+hooks in dhclient-script can take. For example, any daemons that
+dhclient-script starts or restarts will inherit the restricted
+capabilities as well, which may interfere with their correct operation.
+Thus, the
+.BI \-nc
+option can be used to prevent dhclient from dropping capabilities.
.SH SEE ALSO
dhclient(8), dhcpd(8), dhcrelay(8), dhclient.conf(5) and
dhclient.leases(5).
diff -up dhcp-4.3.0a1/client/dhclient.8.capability dhcp-4.3.0a1/client/dhclient.8
--- dhcp-4.3.0a1/client/dhclient.8.capability 2013-12-19 16:15:26.482658050 +0100
+++ dhcp-4.3.0a1/client/dhclient.8 2013-12-19 16:15:26.550657101 +0100
@@ -124,6 +124,9 @@ dhclient - Dynamic Host Configuration Pr
.B -w .B -w
] ]
[ [
@ -43,7 +11,7 @@ diff -up dhcp-4.3.0a1/client/dhclient.8.capability dhcp-4.3.0a1/client/dhclient.
.B -B .B -B
] ]
[ [
@@ -300,6 +303,32 @@ has been added or removed, so that the c @@ -304,6 +307,32 @@ has been added or removed, so that the c
address on that interface. address on that interface.
.TP .TP
@ -76,9 +44,9 @@ diff -up dhcp-4.3.0a1/client/dhclient.8.capability dhcp-4.3.0a1/client/dhclient.
.BI \-B .BI \-B
Set the BOOTP broadcast flag in request packets so servers will always Set the BOOTP broadcast flag in request packets so servers will always
broadcast replies. broadcast replies.
diff -up dhcp-4.3.0a1/client/dhclient.c.capability dhcp-4.3.0a1/client/dhclient.c diff -up dhcp-4.3.1b1/client/dhclient.c.zzftXp dhcp-4.3.1b1/client/dhclient.c
--- dhcp-4.3.0a1/client/dhclient.c.capability 2013-12-19 16:15:26.532657352 +0100 --- dhcp-4.3.1b1/client/dhclient.c.zzftXp 2014-07-10 17:39:25.797764653 +0200
+++ dhcp-4.3.0a1/client/dhclient.c 2013-12-19 16:15:26.551657087 +0100 +++ dhcp-4.3.1b1/client/dhclient.c 2014-07-10 17:39:25.853763858 +0200
@@ -39,6 +39,10 @@ @@ -39,6 +39,10 @@
#include <limits.h> #include <limits.h>
#include <dns/result.h> #include <dns/result.h>
@ -90,7 +58,7 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.capability dhcp-4.3.0a1/client/dhclient.
/* /*
* Defined in stdio.h when _GNU_SOURCE is set, but we don't want to define * Defined in stdio.h when _GNU_SOURCE is set, but we don't want to define
* that when building ISC code. * that when building ISC code.
@@ -141,6 +145,9 @@ main(int argc, char **argv) { @@ -143,6 +147,9 @@ main(int argc, char **argv) {
int timeout_arg = 0; int timeout_arg = 0;
char *arg_conf = NULL; char *arg_conf = NULL;
int arg_conf_len = 0; int arg_conf_len = 0;
@ -100,7 +68,7 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.capability dhcp-4.3.0a1/client/dhclient.
/* Initialize client globals. */ /* Initialize client globals. */
memset(&default_duid, 0, sizeof(default_duid)); memset(&default_duid, 0, sizeof(default_duid));
@@ -413,6 +420,10 @@ main(int argc, char **argv) { @@ -425,6 +432,10 @@ main(int argc, char **argv) {
} }
dhclient_request_options = argv[i]; dhclient_request_options = argv[i];
@ -111,7 +79,7 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.capability dhcp-4.3.0a1/client/dhclient.
} else if (argv[i][0] == '-') { } else if (argv[i][0] == '-') {
usage(); usage();
} else if (interfaces_requested < 0) { } else if (interfaces_requested < 0) {
@@ -461,6 +472,19 @@ main(int argc, char **argv) { @@ -473,6 +484,19 @@ main(int argc, char **argv) {
path_dhclient_script = s; path_dhclient_script = s;
} }
@ -131,10 +99,42 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.capability dhcp-4.3.0a1/client/dhclient.
/* Set up the initial dhcp option universe. */ /* Set up the initial dhcp option universe. */
initialize_common_option_spaces(); initialize_common_option_spaces();
diff -up dhcp-4.3.0a1/configure.ac.capability dhcp-4.3.0a1/configure.ac diff -up dhcp-4.3.1b1/client/dhclient-script.8.zzftXp dhcp-4.3.1b1/client/dhclient-script.8
--- dhcp-4.3.0a1/configure.ac.capability 2013-12-19 16:15:26.475658147 +0100 --- dhcp-4.3.1b1/client/dhclient-script.8.zzftXp 2014-07-10 17:39:25.761765163 +0200
+++ dhcp-4.3.0a1/configure.ac 2013-12-19 16:15:26.552657074 +0100 +++ dhcp-4.3.1b1/client/dhclient-script.8 2014-07-10 17:39:25.851763887 +0200
@@ -489,6 +489,41 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], @@ -243,6 +243,16 @@ repeatedly initialized to the values pro
the other. Assuming the information provided by both servers is
valid, this shouldn't cause any real problems, but it could be
confusing.
+.PP
+Normally, if dhclient was compiled with libcap-ng support,
+dhclient drops most capabilities immediately upon startup.
+While more secure, this greatly restricts the additional actions that
+hooks in dhclient-script can take. For example, any daemons that
+dhclient-script starts or restarts will inherit the restricted
+capabilities as well, which may interfere with their correct operation.
+Thus, the
+.BI \-nc
+option can be used to prevent dhclient from dropping capabilities.
.SH SEE ALSO
dhclient(8), dhcpd(8), dhcrelay(8), dhclient.conf(5) and
dhclient.leases(5).
diff -up dhcp-4.3.1b1/client/Makefile.am.zzftXp dhcp-4.3.1b1/client/Makefile.am
--- dhcp-4.3.1b1/client/Makefile.am.zzftXp 2014-07-10 17:38:10.778828583 +0200
+++ dhcp-4.3.1b1/client/Makefile.am 2014-07-10 17:39:25.851763887 +0200
@@ -10,7 +10,7 @@ dhclient_SOURCES = clparse.c dhclient.c
scripts/bsdos scripts/freebsd scripts/linux scripts/macos \
scripts/netbsd scripts/nextstep scripts/openbsd \
scripts/solaris scripts/openwrt
-dhclient_LDADD = ../common/libdhcp.a ../omapip/libomapi.la \
+dhclient_LDADD = ../common/libdhcp.a ../omapip/libomapi.la $(CAPNG_LDADD) \
$(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export
man_MANS = dhclient.8 dhclient-script.8 dhclient.conf.5 dhclient.leases.5
EXTRA_DIST = $(man_MANS)
diff -up dhcp-4.3.1b1/configure.ac.zzftXp dhcp-4.3.1b1/configure.ac
--- dhcp-4.3.1b1/configure.ac.zzftXp 2014-07-10 17:38:10.779828569 +0200
+++ dhcp-4.3.1b1/configure.ac 2014-07-10 17:39:25.854763844 +0200
@@ -499,6 +499,41 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
# Look for optional headers. # Look for optional headers.
AC_CHECK_HEADERS(sys/socket.h net/if_dl.h net/if6.h regex.h) AC_CHECK_HEADERS(sys/socket.h net/if_dl.h net/if6.h regex.h)
@ -176,22 +176,10 @@ diff -up dhcp-4.3.0a1/configure.ac.capability dhcp-4.3.0a1/configure.ac
# Solaris needs some libraries for functions # Solaris needs some libraries for functions
AC_SEARCH_LIBS(socket, [socket]) AC_SEARCH_LIBS(socket, [socket])
AC_SEARCH_LIBS(inet_ntoa, [nsl]) AC_SEARCH_LIBS(inet_ntoa, [nsl])
diff -up dhcp-4.3.0a1/relay/Makefile.am.capability dhcp-4.3.0a1/relay/Makefile.am diff -up dhcp-4.3.1b1/relay/dhcrelay.c.zzftXp dhcp-4.3.1b1/relay/dhcrelay.c
--- dhcp-4.3.0a1/relay/Makefile.am.capability 2013-12-19 16:15:26.552657074 +0100 --- dhcp-4.3.1b1/relay/dhcrelay.c.zzftXp 2014-07-10 17:39:25.799764624 +0200
+++ dhcp-4.3.0a1/relay/Makefile.am 2013-12-19 16:16:26.159825841 +0100 +++ dhcp-4.3.1b1/relay/dhcrelay.c 2014-07-10 17:40:19.191007421 +0200
@@ -2,7 +2,7 @@ AM_CPPFLAGS = -DLOCALSTATEDIR='"@localst @@ -31,6 +31,11 @@
sbin_PROGRAMS = dhcrelay
dhcrelay_SOURCES = dhcrelay.c
-dhcrelay_LDADD = ../common/libdhcp.a ../omapip/libomapi.la \
+dhcrelay_LDADD = ../common/libdhcp.a ../omapip/libomapi.la $(CAPNG_LDADD) \
$(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export
man_MANS = dhcrelay.8
EXTRA_DIST = $(man_MANS)
diff -up dhcp-4.3.0a1/relay/dhcrelay.c.capability dhcp-4.3.0a1/relay/dhcrelay.c
--- dhcp-4.3.0a1/relay/dhcrelay.c.capability 2013-12-19 16:15:26.535657311 +0100
+++ dhcp-4.3.0a1/relay/dhcrelay.c 2013-12-19 16:15:26.553657060 +0100
@@ -37,6 +37,11 @@
#include <signal.h> #include <signal.h>
#include <sys/time.h> #include <sys/time.h>
@ -203,7 +191,7 @@ diff -up dhcp-4.3.0a1/relay/dhcrelay.c.capability dhcp-4.3.0a1/relay/dhcrelay.c
TIME default_lease_time = 43200; /* 12 hours... */ TIME default_lease_time = 43200; /* 12 hours... */
TIME max_lease_time = 86400; /* 24 hours... */ TIME max_lease_time = 86400; /* 24 hours... */
struct tree_cache *global_options[256]; struct tree_cache *global_options[256];
@@ -382,6 +387,10 @@ main(int argc, char **argv) { @@ -376,6 +381,10 @@ main(int argc, char **argv) {
usage(); usage();
dhcrelay_sub_id = argv[i]; dhcrelay_sub_id = argv[i];
#endif #endif
@ -214,7 +202,7 @@ diff -up dhcp-4.3.0a1/relay/dhcrelay.c.capability dhcp-4.3.0a1/relay/dhcrelay.c
} else if (!strcmp(argv[i], "-pf")) { } else if (!strcmp(argv[i], "-pf")) {
if (++i == argc) if (++i == argc)
usage(); usage();
@@ -452,6 +461,17 @@ main(int argc, char **argv) { @@ -446,6 +455,17 @@ main(int argc, char **argv) {
#endif #endif
} }
@ -232,9 +220,9 @@ diff -up dhcp-4.3.0a1/relay/dhcrelay.c.capability dhcp-4.3.0a1/relay/dhcrelay.c
if (!quiet) { if (!quiet) {
log_info("%s %s", message, PACKAGE_VERSION); log_info("%s %s", message, PACKAGE_VERSION);
log_info(copyright); log_info(copyright);
@@ -601,6 +621,15 @@ main(int argc, char **argv) { @@ -598,6 +618,15 @@ main(int argc, char **argv) {
signal(SIGINT, dhcp_signal_handler); /* control-c */
signal(SIGTERM, dhcp_signal_handler); /* kill */ signal(SIGTERM, dhcp_signal_handler); /* kill */
#endif
+#ifdef HAVE_LIBCAP_NG +#ifdef HAVE_LIBCAP_NG
+ /* Drop all capabilities */ + /* Drop all capabilities */
@ -248,3 +236,15 @@ diff -up dhcp-4.3.0a1/relay/dhcrelay.c.capability dhcp-4.3.0a1/relay/dhcrelay.c
/* Start dispatching packets and timeouts... */ /* Start dispatching packets and timeouts... */
dispatch(); dispatch();
diff -up dhcp-4.3.1b1/relay/Makefile.am.zzftXp dhcp-4.3.1b1/relay/Makefile.am
--- dhcp-4.3.1b1/relay/Makefile.am.zzftXp 2014-07-10 17:38:10.780828554 +0200
+++ dhcp-4.3.1b1/relay/Makefile.am 2014-07-10 17:39:25.854763844 +0200
@@ -2,7 +2,7 @@ AM_CPPFLAGS = -DLOCALSTATEDIR='"@localst
sbin_PROGRAMS = dhcrelay
dhcrelay_SOURCES = dhcrelay.c
-dhcrelay_LDADD = ../common/libdhcp.a ../omapip/libomapi.la \
+dhcrelay_LDADD = ../common/libdhcp.a ../omapip/libomapi.la $(CAPNG_LDADD) \
$(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export
man_MANS = dhcrelay.8
EXTRA_DIST = $(man_MANS)

View File

@ -1,12 +0,0 @@
diff -up dhcp-4.3.0a1/common/conflex.c.forward-updates dhcp-4.3.0a1/common/conflex.c
--- dhcp-4.3.0a1/common/conflex.c.forward-updates 2013-12-20 13:52:11.315466686 +0100
+++ dhcp-4.3.0a1/common/conflex.c 2013-12-20 13:52:11.492464218 +0100
@@ -896,7 +896,7 @@ intern(char *atom, enum dhcp_token dfv)
if (!strcasecmp(atom + 7, "list"))
return DOMAIN_LIST;
}
- if (!strcasecmp (atom + 1, "o-forward-update"))
+ if (!strcasecmp (atom + 1, "o-forward-updates"))
return DO_FORWARD_UPDATE;
if (!strcasecmp (atom + 1, "ebug"))
return TOKEN_DEBUG;

View File

@ -1,7 +1,7 @@
diff -up dhcp-4.3.0a1/client/dhclient.c.backoff dhcp-4.3.0a1/client/dhclient.c diff -up dhcp-4.3.1b1/client/dhclient.c.JwFUZj dhcp-4.3.1b1/client/dhclient.c
--- dhcp-4.3.0a1/client/dhclient.c.backoff 2013-12-19 15:11:11.310534716 +0100 --- dhcp-4.3.1b1/client/dhclient.c.JwFUZj 2014-07-10 17:38:50.511265091 +0200
+++ dhcp-4.3.0a1/client/dhclient.c 2013-12-19 15:11:11.315534646 +0100 +++ dhcp-4.3.1b1/client/dhclient.c 2014-07-10 17:39:16.164901267 +0200
@@ -1250,6 +1250,8 @@ void state_init (cpp) @@ -1281,6 +1281,8 @@ void state_init (cpp)
void *cpp; void *cpp;
{ {
struct client_state *client = cpp; struct client_state *client = cpp;
@ -10,7 +10,7 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.backoff dhcp-4.3.0a1/client/dhclient.c
ASSERT_STATE(state, S_INIT); ASSERT_STATE(state, S_INIT);
@@ -1262,9 +1264,18 @@ void state_init (cpp) @@ -1293,9 +1295,18 @@ void state_init (cpp)
client -> first_sending = cur_time; client -> first_sending = cur_time;
client -> interval = client -> config -> initial_interval; client -> interval = client -> config -> initial_interval;
@ -32,15 +32,15 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.backoff dhcp-4.3.0a1/client/dhclient.c
} }
/* /*
@@ -1557,6 +1568,7 @@ void bind_lease (client) @@ -1592,6 +1603,7 @@ void bind_lease (client)
send_decline (client); "try (declined). Exiting.");
destroy_client_lease (client -> new); exit(2);
client -> new = (struct client_lease *)0; } else {
+ client -> state = S_DECLINED; + client -> state = S_DECLINED;
state_init (client); state_init(client);
return; return;
} }
@@ -4001,6 +4013,7 @@ void client_location_changed () @@ -4059,6 +4071,7 @@ void client_location_changed ()
case S_INIT: case S_INIT:
case S_REBINDING: case S_REBINDING:
case S_STOPPED: case S_STOPPED:
@ -48,10 +48,10 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.backoff dhcp-4.3.0a1/client/dhclient.c
break; break;
} }
client -> state = S_INIT; client -> state = S_INIT;
diff -up dhcp-4.3.0a1/includes/dhcpd.h.backoff dhcp-4.3.0a1/includes/dhcpd.h diff -up dhcp-4.3.1b1/includes/dhcpd.h.JwFUZj dhcp-4.3.1b1/includes/dhcpd.h
--- dhcp-4.3.0a1/includes/dhcpd.h.backoff 2013-12-19 15:11:11.305534786 +0100 --- dhcp-4.3.1b1/includes/dhcpd.h.JwFUZj 2014-07-10 17:38:26.941599360 +0200
+++ dhcp-4.3.0a1/includes/dhcpd.h 2013-12-19 15:11:11.316534632 +0100 +++ dhcp-4.3.1b1/includes/dhcpd.h 2014-07-10 17:38:50.526264878 +0200
@@ -1088,7 +1088,8 @@ enum dhcp_state { @@ -1087,7 +1087,8 @@ enum dhcp_state {
S_BOUND = 5, S_BOUND = 5,
S_RENEWING = 6, S_RENEWING = 6,
S_REBINDING = 7, S_REBINDING = 7,

View File

@ -1,27 +0,0 @@
diff -up dhcp-4.3.0a1/client/dhclient.c.decline-onetry dhcp-4.3.0a1/client/dhclient.c
--- dhcp-4.3.0a1/client/dhclient.c.decline-onetry 2013-12-20 13:37:26.382796437 +0100
+++ dhcp-4.3.0a1/client/dhclient.c 2013-12-20 13:37:26.401796172 +0100
@@ -1708,11 +1708,18 @@ void bind_lease (client)
if (script_go (client)) {
make_decline (client, client -> new);
send_decline (client);
- destroy_client_lease (client -> new);
- client -> new = (struct client_lease *)0;
- client -> state = S_DECLINED;
- state_init (client);
- return;
+ if (onetry) {
+ if (!quiet)
+ log_info ("Unable to obtain a lease on first try.%s",
+ " Exiting.");
+ exit (2);
+ } else {
+ destroy_client_lease (client -> new);
+ client -> new = (struct client_lease *)0;
+ client -> state = S_DECLINED;
+ state_init (client);
+ return;
+ }
}
/* Write out the new lease if it has been long enough. */

View File

@ -1,7 +1,7 @@
diff -up dhcp-4.3.0a1/client/clparse.c.options dhcp-4.3.0a1/client/clparse.c diff -up dhcp-4.3.1b1/client/clparse.c.fLPqYB dhcp-4.3.1b1/client/clparse.c
--- dhcp-4.3.0a1/client/clparse.c.options 2013-12-11 01:25:12.000000000 +0100 --- dhcp-4.3.1b1/client/clparse.c.fLPqYB 2014-07-02 19:58:38.000000000 +0200
+++ dhcp-4.3.0a1/client/clparse.c 2013-12-19 14:50:15.011193031 +0100 +++ dhcp-4.3.1b1/client/clparse.c 2014-07-10 17:38:26.938599402 +0200
@@ -154,6 +154,7 @@ isc_result_t read_client_conf () @@ -148,6 +148,7 @@ isc_result_t read_client_conf ()
/* Requested lease time, used by DHCPv6 (DHCPv4 uses the option cache) /* Requested lease time, used by DHCPv6 (DHCPv4 uses the option cache)
*/ */
top_level_config.requested_lease = 7200; top_level_config.requested_lease = 7200;
@ -9,7 +9,7 @@ diff -up dhcp-4.3.0a1/client/clparse.c.options dhcp-4.3.0a1/client/clparse.c
group_allocate (&top_level_config.on_receipt, MDL); group_allocate (&top_level_config.on_receipt, MDL);
if (!top_level_config.on_receipt) if (!top_level_config.on_receipt)
@@ -320,7 +321,8 @@ void read_client_leases () @@ -353,7 +354,8 @@ void read_client_leases ()
interface-declaration | interface-declaration |
LEASE client-lease-statement | LEASE client-lease-statement |
ALIAS client-lease-statement | ALIAS client-lease-statement |
@ -19,7 +19,7 @@ diff -up dhcp-4.3.0a1/client/clparse.c.options dhcp-4.3.0a1/client/clparse.c
void parse_client_statement (cfile, ip, config) void parse_client_statement (cfile, ip, config)
struct parse *cfile; struct parse *cfile;
@@ -738,6 +740,12 @@ void parse_client_statement (cfile, ip, @@ -771,6 +773,12 @@ void parse_client_statement (cfile, ip,
parse_reject_statement (cfile, config); parse_reject_statement (cfile, config);
return; return;
@ -32,10 +32,10 @@ diff -up dhcp-4.3.0a1/client/clparse.c.options dhcp-4.3.0a1/client/clparse.c
default: default:
lose = 0; lose = 0;
stmt = (struct executable_statement *)0; stmt = (struct executable_statement *)0;
diff -up dhcp-4.3.0a1/client/dhclient.8.options dhcp-4.3.0a1/client/dhclient.8 diff -up dhcp-4.3.1b1/client/dhclient.8.fLPqYB dhcp-4.3.1b1/client/dhclient.8
--- dhcp-4.3.0a1/client/dhclient.8.options 2013-12-11 01:25:12.000000000 +0100 --- dhcp-4.3.1b1/client/dhclient.8.fLPqYB 2014-07-02 19:58:38.000000000 +0200
+++ dhcp-4.3.0a1/client/dhclient.8 2013-12-19 14:50:15.010193045 +0100 +++ dhcp-4.3.1b1/client/dhclient.8 2014-07-10 17:38:26.938599402 +0200
@@ -124,6 +124,33 @@ dhclient - Dynamic Host Configuration Pr @@ -128,6 +128,33 @@ dhclient - Dynamic Host Configuration Pr
.B -w .B -w
] ]
[ [
@ -69,7 +69,7 @@ diff -up dhcp-4.3.0a1/client/dhclient.8.options dhcp-4.3.0a1/client/dhclient.8
.B -v .B -v
] ]
[ [
@@ -271,6 +298,69 @@ not to exit when it doesn't find any suc @@ -275,6 +302,69 @@ not to exit when it doesn't find any suc
program can then be used to notify the client when a network interface program can then be used to notify the client when a network interface
has been added or removed, so that the client can attempt to configure an IP has been added or removed, so that the client can attempt to configure an IP
address on that interface. address on that interface.
@ -139,9 +139,9 @@ diff -up dhcp-4.3.0a1/client/dhclient.8.options dhcp-4.3.0a1/client/dhclient.8
.TP .TP
.BI \-n .BI \-n
Do not configure any interfaces. This is most likely to be useful in Do not configure any interfaces. This is most likely to be useful in
diff -up dhcp-4.3.0a1/client/dhclient.c.options dhcp-4.3.0a1/client/dhclient.c diff -up dhcp-4.3.1b1/client/dhclient.c.fLPqYB dhcp-4.3.1b1/client/dhclient.c
--- dhcp-4.3.0a1/client/dhclient.c.options 2013-12-13 22:24:38.000000000 +0100 --- dhcp-4.3.1b1/client/dhclient.c.fLPqYB 2014-07-02 19:58:38.000000000 +0200
+++ dhcp-4.3.0a1/client/dhclient.c 2013-12-19 14:50:15.012193017 +0100 +++ dhcp-4.3.1b1/client/dhclient.c 2014-07-10 17:38:44.520350055 +0200
@@ -39,6 +39,12 @@ @@ -39,6 +39,12 @@
#include <limits.h> #include <limits.h>
#include <dns/result.h> #include <dns/result.h>
@ -155,7 +155,7 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.options dhcp-4.3.0a1/client/dhclient.c
TIME default_lease_time = 43200; /* 12 hours... */ TIME default_lease_time = 43200; /* 12 hours... */
TIME max_lease_time = 86400; /* 24 hours... */ TIME max_lease_time = 86400; /* 24 hours... */
@@ -87,6 +93,9 @@ int wanted_ia_na = -1; /* the absolute @@ -88,6 +94,9 @@ int wanted_ia_na = -1; /* the absolute
int wanted_ia_ta = 0; int wanted_ia_ta = 0;
int wanted_ia_pd = 0; int wanted_ia_pd = 0;
char *mockup_relay = NULL; char *mockup_relay = NULL;
@ -165,7 +165,7 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.options dhcp-4.3.0a1/client/dhclient.c
void run_stateless(int exit_mode); void run_stateless(int exit_mode);
@@ -123,6 +132,15 @@ main(int argc, char **argv) { @@ -125,6 +134,15 @@ main(int argc, char **argv) {
int local_family_set = 0; int local_family_set = 0;
#endif /* DHCPv6 */ #endif /* DHCPv6 */
char *s; char *s;
@ -181,9 +181,9 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.options dhcp-4.3.0a1/client/dhclient.c
/* Initialize client globals. */ /* Initialize client globals. */
memset(&default_duid, 0, sizeof(default_duid)); memset(&default_duid, 0, sizeof(default_duid));
@@ -313,6 +331,88 @@ main(int argc, char **argv) { @@ -325,6 +343,88 @@ main(int argc, char **argv) {
} else if (!strcmp(argv[i], "--version")) { strlen(PACKAGE_VERSION)));
log_info("isc-dhclient-%s", PACKAGE_VERSION); IGNORE_RET(write(STDERR_FILENO, "\n", 1));
exit(0); exit(0);
+ } else if (!strcmp(argv[i], "-C")) { + } else if (!strcmp(argv[i], "-C")) {
+ if ((++i == argc) || (argv[i] == NULL) || (*(argv[i])=='\0')) { + if ((++i == argc) || (argv[i] == NULL) || (*(argv[i])=='\0')) {
@ -270,7 +270,7 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.options dhcp-4.3.0a1/client/dhclient.c
} else if (argv[i][0] == '-') { } else if (argv[i][0] == '-') {
usage(); usage();
} else if (interfaces_requested < 0) { } else if (interfaces_requested < 0) {
@@ -490,6 +590,156 @@ main(int argc, char **argv) { @@ -507,6 +607,156 @@ main(int argc, char **argv) {
/* Parse the dhclient.conf file. */ /* Parse the dhclient.conf file. */
read_client_conf(); read_client_conf();
@ -427,9 +427,9 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.options dhcp-4.3.0a1/client/dhclient.c
/* Parse the lease database. */ /* Parse the lease database. */
read_client_leases(); read_client_leases();
@@ -730,6 +980,10 @@ static void usage() @@ -756,6 +1006,10 @@ static void usage()
" [-s server-addr] [-cf config-file] " " [-s server-addr] [-cf config-file]\n"
"[-lf lease-file]\n" " [-df duid-file] [-lf lease-file]\n"
" [-pf pid-file] [--no-pid] [-e VAR=val]\n" " [-pf pid-file] [--no-pid] [-e VAR=val]\n"
+ " [-C <dhcp-client-identifier>] [-B]\n" + " [-C <dhcp-client-identifier>] [-B]\n"
+ " [-H <host-name> | -F <fqdn.fqdn>] [-timeout <timeout>]\n" + " [-H <host-name> | -F <fqdn.fqdn>] [-timeout <timeout>]\n"
@ -438,7 +438,7 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.options dhcp-4.3.0a1/client/dhclient.c
" [-sf script-file] [interface]"); " [-sf script-file] [interface]");
} }
@@ -2489,7 +2743,8 @@ void make_discover (client, lease) @@ -2531,7 +2785,8 @@ void make_discover (client, lease)
client -> packet.xid = random (); client -> packet.xid = random ();
client -> packet.secs = 0; /* filled in by send_discover. */ client -> packet.secs = 0; /* filled in by send_discover. */
@ -448,7 +448,7 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.options dhcp-4.3.0a1/client/dhclient.c
client -> packet.flags = 0; client -> packet.flags = 0;
else else
client -> packet.flags = htons (BOOTP_BROADCAST); client -> packet.flags = htons (BOOTP_BROADCAST);
@@ -2573,7 +2828,9 @@ void make_request (client, lease) @@ -2615,7 +2870,9 @@ void make_request (client, lease)
} else { } else {
memset (&client -> packet.ciaddr, 0, memset (&client -> packet.ciaddr, 0,
sizeof client -> packet.ciaddr); sizeof client -> packet.ciaddr);
@ -459,7 +459,7 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.options dhcp-4.3.0a1/client/dhclient.c
client -> packet.flags = 0; client -> packet.flags = 0;
else else
client -> packet.flags = htons (BOOTP_BROADCAST); client -> packet.flags = htons (BOOTP_BROADCAST);
@@ -2635,7 +2892,8 @@ void make_decline (client, lease) @@ -2677,7 +2934,8 @@ void make_decline (client, lease)
client -> packet.hops = 0; client -> packet.hops = 0;
client -> packet.xid = client -> xid; client -> packet.xid = client -> xid;
client -> packet.secs = 0; /* Filled in by send_request. */ client -> packet.secs = 0; /* Filled in by send_request. */
@ -469,10 +469,10 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.options dhcp-4.3.0a1/client/dhclient.c
client -> packet.flags = 0; client -> packet.flags = 0;
else else
client -> packet.flags = htons (BOOTP_BROADCAST); client -> packet.flags = htons (BOOTP_BROADCAST);
diff -up dhcp-4.3.0a1/common/conflex.c.options dhcp-4.3.0a1/common/conflex.c diff -up dhcp-4.3.1b1/common/conflex.c.fLPqYB dhcp-4.3.1b1/common/conflex.c
--- dhcp-4.3.0a1/common/conflex.c.options 2013-12-11 01:25:12.000000000 +0100 --- dhcp-4.3.1b1/common/conflex.c.fLPqYB 2014-07-02 19:58:38.000000000 +0200
+++ dhcp-4.3.0a1/common/conflex.c 2013-12-19 14:50:15.013193003 +0100 +++ dhcp-4.3.1b1/common/conflex.c 2014-07-10 17:38:26.940599374 +0200
@@ -817,6 +817,8 @@ intern(char *atom, enum dhcp_token dfv) @@ -811,6 +811,8 @@ intern(char *atom, enum dhcp_token dfv)
return BALANCE; return BALANCE;
if (!strcasecmp (atom + 1, "ound")) if (!strcasecmp (atom + 1, "ound"))
return BOUND; return BOUND;
@ -481,10 +481,10 @@ diff -up dhcp-4.3.0a1/common/conflex.c.options dhcp-4.3.0a1/common/conflex.c
break; break;
case 'c': case 'c':
if (!strcasecmp(atom + 1, "ase")) if (!strcasecmp(atom + 1, "ase"))
diff -up dhcp-4.3.0a1/includes/dhcpd.h.options dhcp-4.3.0a1/includes/dhcpd.h diff -up dhcp-4.3.1b1/includes/dhcpd.h.fLPqYB dhcp-4.3.1b1/includes/dhcpd.h
--- dhcp-4.3.0a1/includes/dhcpd.h.options 2013-12-13 21:49:44.000000000 +0100 --- dhcp-4.3.1b1/includes/dhcpd.h.fLPqYB 2014-07-02 19:58:39.000000000 +0200
+++ dhcp-4.3.0a1/includes/dhcpd.h 2013-12-19 14:50:15.014192989 +0100 +++ dhcp-4.3.1b1/includes/dhcpd.h 2014-07-10 17:38:26.941599360 +0200
@@ -1153,6 +1153,9 @@ struct client_config { @@ -1152,6 +1152,9 @@ struct client_config {
int do_forward_update; /* If nonzero, and if we have the int do_forward_update; /* If nonzero, and if we have the
information we need, update the information we need, update the
A record for the address we get. */ A record for the address we get. */
@ -494,10 +494,10 @@ diff -up dhcp-4.3.0a1/includes/dhcpd.h.options dhcp-4.3.0a1/includes/dhcpd.h
}; };
/* Per-interface state used in the dhcp client... */ /* Per-interface state used in the dhcp client... */
diff -up dhcp-4.3.0a1/includes/dhctoken.h.options dhcp-4.3.0a1/includes/dhctoken.h diff -up dhcp-4.3.1b1/includes/dhctoken.h.fLPqYB dhcp-4.3.1b1/includes/dhctoken.h
--- dhcp-4.3.0a1/includes/dhctoken.h.options 2013-12-19 14:50:15.014192989 +0100 --- dhcp-4.3.1b1/includes/dhctoken.h.fLPqYB 2014-07-02 19:58:39.000000000 +0200
+++ dhcp-4.3.0a1/includes/dhctoken.h 2013-12-19 14:51:57.472758577 +0100 +++ dhcp-4.3.1b1/includes/dhctoken.h 2014-07-10 17:38:26.942599346 +0200
@@ -373,7 +373,8 @@ enum dhcp_token { @@ -367,7 +367,8 @@ enum dhcp_token {
TOKEN_INFINIBAND = 668, TOKEN_INFINIBAND = 668,
POOL6 = 669, POOL6 = 669,
V6RELAY = 670, V6RELAY = 670,

View File

@ -1,7 +1,7 @@
diff -up dhcp-4.3.0/client/dhclient.8.duidv4 dhcp-4.3.0/client/dhclient.8 diff -up dhcp-4.3.1b1/client/dhclient.8.KrJcIv dhcp-4.3.1b1/client/dhclient.8
--- dhcp-4.3.0/client/dhclient.8.duidv4 2014-02-18 15:52:44.564123664 +0100 --- dhcp-4.3.1b1/client/dhclient.8.KrJcIv 2014-07-10 17:39:25.852763873 +0200
+++ dhcp-4.3.0/client/dhclient.8 2014-02-18 15:52:44.629122766 +0100 +++ dhcp-4.3.1b1/client/dhclient.8 2014-07-10 17:54:26.841012988 +0200
@@ -454,6 +454,9 @@ used to construct a RFC4361 style client @@ -458,6 +458,9 @@ used to construct a RFC4361 style client
in the client's messages. This client id can be overridden by in the client's messages. This client id can be overridden by
setting a client id in the configuration file. Overridding the setting a client id in the configuration file. Overridding the
client id in this fashion is discouraged. client id in this fashion is discouraged.
@ -11,10 +11,10 @@ diff -up dhcp-4.3.0/client/dhclient.8.duidv4 dhcp-4.3.0/client/dhclient.8
.TP .TP
.BI \-I .BI \-I
Use the standard DDNS scheme from RFCs 4701 & 4702. Use the standard DDNS scheme from RFCs 4701 & 4702.
diff -up dhcp-4.3.0/client/dhclient.c.duidv4 dhcp-4.3.0/client/dhclient.c diff -up dhcp-4.3.1b1/client/dhclient.c.KrJcIv dhcp-4.3.1b1/client/dhclient.c
--- dhcp-4.3.0/client/dhclient.c.duidv4 2014-02-18 15:52:44.626122807 +0100 --- dhcp-4.3.1b1/client/dhclient.c.KrJcIv 2014-07-10 17:54:26.829013157 +0200
+++ dhcp-4.3.0/client/dhclient.c 2014-02-18 15:52:44.630122752 +0100 +++ dhcp-4.3.1b1/client/dhclient.c 2014-07-10 17:55:50.155835918 +0200
@@ -72,7 +72,7 @@ struct sockaddr_in sockaddr_broadcast; @@ -73,7 +73,7 @@ struct sockaddr_in sockaddr_broadcast;
struct in_addr giaddr; struct in_addr giaddr;
struct data_string default_duid; struct data_string default_duid;
int duid_type = 0; int duid_type = 0;
@ -23,7 +23,7 @@ diff -up dhcp-4.3.0/client/dhclient.c.duidv4 dhcp-4.3.0/client/dhclient.c
int std_dhcid = 0; int std_dhcid = 0;
/* ASSERT_STATE() does nothing now; it used to be /* ASSERT_STATE() does nothing now; it used to be
@@ -1270,7 +1270,7 @@ static void setup_ib_interface(struct in @@ -1301,7 +1301,7 @@ static void setup_ib_interface(struct in
} }
/* No client ID specified */ /* No client ID specified */
@ -32,15 +32,15 @@ diff -up dhcp-4.3.0/client/dhclient.c.duidv4 dhcp-4.3.0/client/dhclient.c
} }
/* Individual States: /* Individual States:
@@ -3299,6 +3299,7 @@ form_duid(struct data_string *duid, cons @@ -3342,6 +3342,7 @@ form_duid(struct data_string *duid, cons
{
struct interface_info *ip; struct interface_info *ip;
int len; int len;
char *str;
+ unsigned hlen; + unsigned hlen;
/* For now, just use the first interface on the list. */ /* For now, just use the first interface on the list. */
ip = interfaces; ip = interfaces;
@@ -3322,6 +3323,11 @@ form_duid(struct data_string *duid, cons @@ -3365,6 +3366,11 @@ form_duid(struct data_string *duid, cons
if (duid_type == 0) if (duid_type == 0)
duid_type = stateless ? DUID_LL : DUID_LLT; duid_type = stateless ? DUID_LL : DUID_LLT;
@ -52,7 +52,7 @@ diff -up dhcp-4.3.0/client/dhclient.c.duidv4 dhcp-4.3.0/client/dhclient.c
/* /*
* 2 bytes for the 'duid type' field. * 2 bytes for the 'duid type' field.
* 2 bytes for the 'htype' field. * 2 bytes for the 'htype' field.
@@ -3329,7 +3335,7 @@ form_duid(struct data_string *duid, cons @@ -3372,7 +3378,7 @@ form_duid(struct data_string *duid, cons
* enough bytes for the hardware address (note that hw_address has * enough bytes for the hardware address (note that hw_address has
* the 'htype' on byte zero). * the 'htype' on byte zero).
*/ */
@ -61,7 +61,7 @@ diff -up dhcp-4.3.0/client/dhclient.c.duidv4 dhcp-4.3.0/client/dhclient.c
if (duid_type == DUID_LLT) if (duid_type == DUID_LLT)
len += 4; len += 4;
if (!buffer_allocate(&duid->buffer, len, MDL)) if (!buffer_allocate(&duid->buffer, len, MDL))
@@ -3343,12 +3349,12 @@ form_duid(struct data_string *duid, cons @@ -3386,12 +3392,12 @@ form_duid(struct data_string *duid, cons
putUShort(duid->buffer->data + 2, ip->hw_address.hbuf[0]); putUShort(duid->buffer->data + 2, ip->hw_address.hbuf[0]);
putULong(duid->buffer->data + 4, cur_time - DUID_TIME_EPOCH); putULong(duid->buffer->data + 4, cur_time - DUID_TIME_EPOCH);
memcpy(duid->buffer->data + 8, ip->hw_address.hbuf + 1, memcpy(duid->buffer->data + 8, ip->hw_address.hbuf + 1,
@ -74,5 +74,5 @@ diff -up dhcp-4.3.0/client/dhclient.c.duidv4 dhcp-4.3.0/client/dhclient.c
- ip->hw_address.hlen - 1); - ip->hw_address.hlen - 1);
+ hlen - 1); + hlen - 1);
} }
return ISC_R_SUCCESS; str = quotify_buf(duid->data, duid->len, MDL);

View File

@ -1,13 +0,0 @@
diff -up dhcp-4.3.0a1/common/parse.c.dupl-key dhcp-4.3.0a1/common/parse.c
--- dhcp-4.3.0a1/common/parse.c.dupl-key 2013-12-20 13:53:01.121772037 +0100
+++ dhcp-4.3.0a1/common/parse.c 2013-12-20 13:53:01.211770781 +0100
@@ -2930,6 +2930,9 @@ int parse_zone (struct dns_zone *zone, s
}
val = key_name;
}
+ if (zone->key)
+ log_fatal("Multiple key definition for zone %s.",
+ zone->name);
if (omapi_auth_key_lookup_name (&zone -> key, val) !=
ISC_R_SUCCESS)
parse_warn (cfile, "unknown key %s", val);

View File

@ -1,7 +1,7 @@
diff -up dhcp-4.3.0a1/common/discover.c.getifaddrs dhcp-4.3.0a1/common/discover.c diff -up dhcp-4.3.1b1/common/discover.c.AyFwkY dhcp-4.3.1b1/common/discover.c
--- dhcp-4.3.0a1/common/discover.c.getifaddrs 2013-12-11 01:25:12.000000000 +0100 --- dhcp-4.3.1b1/common/discover.c.AyFwkY 2014-07-02 19:58:38.000000000 +0200
+++ dhcp-4.3.0a1/common/discover.c 2013-12-20 13:38:59.995493253 +0100 +++ dhcp-4.3.1b1/common/discover.c 2014-07-10 17:58:21.588696480 +0200
@@ -376,391 +376,13 @@ end_iface_scan(struct iface_conf_list *i @@ -373,391 +373,13 @@ end_iface_scan(struct iface_conf_list *i
ifaces->sock = -1; ifaces->sock = -1;
} }
@ -43,7 +43,7 @@ diff -up dhcp-4.3.0a1/common/discover.c.getifaddrs dhcp-4.3.0a1/common/discover.
- */ - */
-int -int
-begin_iface_scan(struct iface_conf_list *ifaces) { -begin_iface_scan(struct iface_conf_list *ifaces) {
- char buf[256]; - char buf[IF_LINE_LENGTH];
- int len; - int len;
- int i; - int i;
- -
@ -116,7 +116,7 @@ diff -up dhcp-4.3.0a1/common/discover.c.getifaddrs dhcp-4.3.0a1/common/discover.
- */ - */
-static int -static int
-next_iface4(struct iface_info *info, int *err, struct iface_conf_list *ifaces) { -next_iface4(struct iface_info *info, int *err, struct iface_conf_list *ifaces) {
- char buf[256]; - char buf[IF_LINE_LENGTH];
- int len; - int len;
- char *p; - char *p;
- char *name; - char *name;
@ -240,7 +240,7 @@ diff -up dhcp-4.3.0a1/common/discover.c.getifaddrs dhcp-4.3.0a1/common/discover.
- */ - */
-static int -static int
-next_iface6(struct iface_info *info, int *err, struct iface_conf_list *ifaces) { -next_iface6(struct iface_info *info, int *err, struct iface_conf_list *ifaces) {
- char buf[256]; - char buf[IF_LINE_LENGTH];
- int len; - int len;
- char *p; - char *p;
- char *name; - char *name;
@ -394,7 +394,7 @@ diff -up dhcp-4.3.0a1/common/discover.c.getifaddrs dhcp-4.3.0a1/common/discover.
* function. * function.
* *
* The getifaddrs() man page describes the use. * The getifaddrs() man page describes the use.
@@ -808,6 +430,8 @@ begin_iface_scan(struct iface_conf_list @@ -805,6 +427,8 @@ begin_iface_scan(struct iface_conf_list
*/ */
int int
next_iface(struct iface_info *info, int *err, struct iface_conf_list *ifaces) { next_iface(struct iface_info *info, int *err, struct iface_conf_list *ifaces) {
@ -403,7 +403,7 @@ diff -up dhcp-4.3.0a1/common/discover.c.getifaddrs dhcp-4.3.0a1/common/discover.
if (ifaces->next == NULL) { if (ifaces->next == NULL) {
*err = 0; *err = 0;
return 0; return 0;
@@ -819,8 +443,20 @@ next_iface(struct iface_info *info, int @@ -816,8 +440,20 @@ next_iface(struct iface_info *info, int
return 0; return 0;
} }
strcpy(info->name, ifaces->next->ifa_name); strcpy(info->name, ifaces->next->ifa_name);

View File

@ -1,12 +0,0 @@
diff -up dhcp-4.3.0a1/client/dhclient.c.logpid dhcp-4.3.0a1/client/dhclient.c
--- dhcp-4.3.0a1/client/dhclient.c.logpid 2013-12-19 15:51:50.588388633 +0100
+++ dhcp-4.3.0a1/client/dhclient.c 2013-12-19 15:51:50.593388563 +0100
@@ -165,7 +165,7 @@ main(int argc, char **argv) {
else if (fd != -1)
close(fd);
- openlog("dhclient", LOG_NDELAY, LOG_DAEMON);
+ openlog("dhclient", LOG_NDELAY | LOG_PID, LOG_DAEMON);
#if !(defined(DEBUG) || defined(__CYGWIN32__))
setlogmask(LOG_UPTO(LOG_INFO));

View File

@ -1,16 +1,16 @@
diff -up dhcp-4.3.0a1/client/dhclient.c.lpf-ib dhcp-4.3.0a1/client/dhclient.c diff -up dhcp-4.3.1b1/client/dhclient.c.bmgpWV dhcp-4.3.1b1/client/dhclient.c
--- dhcp-4.3.0a1/client/dhclient.c.lpf-ib 2013-12-20 14:03:30.337992402 +0100 --- dhcp-4.3.1b1/client/dhclient.c.bmgpWV 2014-07-10 17:50:26.922402550 +0200
+++ dhcp-4.3.0a1/client/dhclient.c 2013-12-20 14:03:30.345992290 +0100 +++ dhcp-4.3.1b1/client/dhclient.c 2014-07-10 17:53:43.629623477 +0200
@@ -113,6 +113,8 @@ static int check_domain_name_list(const @@ -114,6 +114,8 @@ static int check_domain_name_list(const
static int check_option_values(struct universe *universe, unsigned int opt, static int check_option_values(struct universe *universe, unsigned int opt,
const char *ptr, size_t len); const char *ptr, size_t len);
+static void setup_ib_interface(struct interface_info *ip); +static void setup_ib_interface(struct interface_info *ip);
+ +
#ifndef UNIT_TEST
int int
main(int argc, char **argv) { main(int argc, char **argv) {
int fd; @@ -937,6 +939,13 @@ main(int argc, char **argv) {
@@ -915,6 +917,13 @@ main(int argc, char **argv) {
} }
srandom(seed + cur_time + (unsigned)getpid()); srandom(seed + cur_time + (unsigned)getpid());
@ -24,7 +24,7 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.lpf-ib dhcp-4.3.0a1/client/dhclient.c
/* /*
* Establish a default DUID. We always do so for v6 and * Establish a default DUID. We always do so for v6 and
@@ -1199,6 +1208,29 @@ int find_subnet (struct subnet **sp, @@ -1230,6 +1239,29 @@ int find_subnet (struct subnet **sp,
return 0; return 0;
} }
@ -54,9 +54,9 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.lpf-ib dhcp-4.3.0a1/client/dhclient.c
/* Individual States: /* Individual States:
* *
* Each routine is called from the dhclient_state_machine() in one of * Each routine is called from the dhclient_state_machine() in one of
diff -up dhcp-4.3.0a1/common/bpf.c.lpf-ib dhcp-4.3.0a1/common/bpf.c diff -up dhcp-4.3.1b1/common/bpf.c.bmgpWV dhcp-4.3.1b1/common/bpf.c
--- dhcp-4.3.0a1/common/bpf.c.lpf-ib 2013-12-20 14:03:30.330992500 +0100 --- dhcp-4.3.1b1/common/bpf.c.bmgpWV 2014-07-10 17:48:03.797424616 +0200
+++ dhcp-4.3.0a1/common/bpf.c 2013-12-20 14:03:30.345992290 +0100 +++ dhcp-4.3.1b1/common/bpf.c 2014-07-10 17:52:57.705272295 +0200
@@ -199,11 +199,44 @@ struct bpf_insn dhcp_bpf_filter [] = { @@ -199,11 +199,44 @@ struct bpf_insn dhcp_bpf_filter [] = {
BPF_STMT(BPF_RET+BPF_K, 0), BPF_STMT(BPF_RET+BPF_K, 0),
}; };
@ -102,9 +102,9 @@ diff -up dhcp-4.3.0a1/common/bpf.c.lpf-ib dhcp-4.3.0a1/common/bpf.c
#if defined (HAVE_TR_SUPPORT) #if defined (HAVE_TR_SUPPORT)
struct bpf_insn dhcp_bpf_tr_filter [] = { struct bpf_insn dhcp_bpf_tr_filter [] = {
/* accept all token ring packets due to variable length header */ /* accept all token ring packets due to variable length header */
diff -up dhcp-4.3.0a1/common/lpf.c.lpf-ib dhcp-4.3.0a1/common/lpf.c diff -up dhcp-4.3.1b1/common/lpf.c.bmgpWV dhcp-4.3.1b1/common/lpf.c
--- dhcp-4.3.0a1/common/lpf.c.lpf-ib 2013-12-20 14:03:30.331992486 +0100 --- dhcp-4.3.1b1/common/lpf.c.bmgpWV 2014-07-10 17:48:03.797424616 +0200
+++ dhcp-4.3.0a1/common/lpf.c 2013-12-20 14:03:30.346992276 +0100 +++ dhcp-4.3.1b1/common/lpf.c 2014-07-10 17:52:57.706272281 +0200
@@ -46,6 +46,17 @@ @@ -46,6 +46,17 @@
#if defined (USE_LPF_RECEIVE) || defined (USE_LPF_HWADDR) #if defined (USE_LPF_RECEIVE) || defined (USE_LPF_HWADDR)
#include <sys/ioctl.h> #include <sys/ioctl.h>
@ -524,10 +524,10 @@ diff -up dhcp-4.3.0a1/common/lpf.c.lpf-ib dhcp-4.3.0a1/common/lpf.c
+ freeifaddrs(ifaddrs); + freeifaddrs(ifaddrs);
} }
#endif #endif
diff -up dhcp-4.3.0a1/common/socket.c.lpf-ib dhcp-4.3.0a1/common/socket.c diff -up dhcp-4.3.1b1/common/socket.c.bmgpWV dhcp-4.3.1b1/common/socket.c
--- dhcp-4.3.0a1/common/socket.c.lpf-ib 2013-12-11 01:25:12.000000000 +0100 --- dhcp-4.3.1b1/common/socket.c.bmgpWV 2014-07-02 19:58:38.000000000 +0200
+++ dhcp-4.3.0a1/common/socket.c 2013-12-20 14:04:54.904811982 +0100 +++ dhcp-4.3.1b1/common/socket.c 2014-07-10 17:52:57.706272281 +0200
@@ -328,7 +328,7 @@ void if_register_send (info) @@ -322,7 +322,7 @@ void if_register_send (info)
info->wfdesc = if_register_socket(info, AF_INET, 0, NULL); info->wfdesc = if_register_socket(info, AF_INET, 0, NULL);
/* If this is a normal IPv4 address, get the hardware address. */ /* If this is a normal IPv4 address, get the hardware address. */
if (strcmp(info->name, "fallback") != 0) if (strcmp(info->name, "fallback") != 0)
@ -536,7 +536,7 @@ diff -up dhcp-4.3.0a1/common/socket.c.lpf-ib dhcp-4.3.0a1/common/socket.c
#if defined (USE_SOCKET_FALLBACK) #if defined (USE_SOCKET_FALLBACK)
/* Fallback only registers for send, but may need to receive as /* Fallback only registers for send, but may need to receive as
well. */ well. */
@@ -391,7 +391,7 @@ void if_register_receive (info) @@ -385,7 +385,7 @@ void if_register_receive (info)
#endif /* IP_PKTINFO... */ #endif /* IP_PKTINFO... */
/* If this is a normal IPv4 address, get the hardware address. */ /* If this is a normal IPv4 address, get the hardware address. */
if (strcmp(info->name, "fallback") != 0) if (strcmp(info->name, "fallback") != 0)
@ -545,7 +545,7 @@ diff -up dhcp-4.3.0a1/common/socket.c.lpf-ib dhcp-4.3.0a1/common/socket.c
if (!quiet_interface_discovery) if (!quiet_interface_discovery)
log_info ("Listening on Socket/%s%s%s", log_info ("Listening on Socket/%s%s%s",
@@ -505,7 +505,7 @@ if_register6(struct interface_info *info @@ -499,7 +499,7 @@ if_register6(struct interface_info *info
if (req_multi) if (req_multi)
if_register_multicast(info); if_register_multicast(info);
@ -554,7 +554,7 @@ diff -up dhcp-4.3.0a1/common/socket.c.lpf-ib dhcp-4.3.0a1/common/socket.c
if (!quiet_interface_discovery) { if (!quiet_interface_discovery) {
if (info->shared_network != NULL) { if (info->shared_network != NULL) {
@@ -561,7 +561,7 @@ if_register_linklocal6(struct interface_ @@ -555,7 +555,7 @@ if_register_linklocal6(struct interface_
info->rfdesc = sock; info->rfdesc = sock;
info->wfdesc = sock; info->wfdesc = sock;
@ -563,10 +563,10 @@ diff -up dhcp-4.3.0a1/common/socket.c.lpf-ib dhcp-4.3.0a1/common/socket.c
if (!quiet_interface_discovery) { if (!quiet_interface_discovery) {
if (info->shared_network != NULL) { if (info->shared_network != NULL) {
diff -up dhcp-4.3.0a1/includes/dhcpd.h.lpf-ib dhcp-4.3.0a1/includes/dhcpd.h diff -up dhcp-4.3.1b1/includes/dhcpd.h.bmgpWV dhcp-4.3.1b1/includes/dhcpd.h
--- dhcp-4.3.0a1/includes/dhcpd.h.lpf-ib 2013-12-20 14:03:30.338992388 +0100 --- dhcp-4.3.1b1/includes/dhcpd.h.bmgpWV 2014-07-10 17:50:26.923402536 +0200
+++ dhcp-4.3.0a1/includes/dhcpd.h 2013-12-20 14:03:30.348992248 +0100 +++ dhcp-4.3.1b1/includes/dhcpd.h 2014-07-10 17:52:57.707272266 +0200
@@ -1249,6 +1249,7 @@ struct interface_info { @@ -1248,6 +1248,7 @@ struct interface_info {
struct shared_network *shared_network; struct shared_network *shared_network;
/* Networks connected to this interface. */ /* Networks connected to this interface. */
struct hardware hw_address; /* Its physical address. */ struct hardware hw_address; /* Its physical address. */
@ -574,7 +574,7 @@ diff -up dhcp-4.3.0a1/includes/dhcpd.h.lpf-ib dhcp-4.3.0a1/includes/dhcpd.h
struct in_addr *addresses; /* Addresses associated with this struct in_addr *addresses; /* Addresses associated with this
* interface. * interface.
*/ */
@@ -2425,7 +2426,7 @@ void print_dns_status (int, struct dhcp_ @@ -2439,7 +2440,7 @@ void print_dns_status (int, struct dhcp_
#endif #endif
const char *print_time(TIME); const char *print_time(TIME);

View File

@ -1,53 +0,0 @@
diff -up dhcp-4.3.0a1/client/dhclient.c.next-server dhcp-4.3.0a1/client/dhclient.c
--- dhcp-4.3.0a1/client/dhclient.c.next-server 2013-12-20 13:57:06.458349572 +0100
+++ dhcp-4.3.0a1/client/dhclient.c 2013-12-20 13:57:06.500348986 +0100
@@ -1486,7 +1486,7 @@ void state_selecting (cpp)
client -> state = S_REQUESTING;
/* Bind to the address we received. */
- bind_lease (client);
+ bind_lease (client, NULL);
return;
}
@@ -1676,11 +1676,12 @@ void dhcpack (packet)
if (client -> new -> rebind < cur_time)
client -> new -> rebind = TIME_MAX;
- bind_lease (client);
+ bind_lease (client, &packet -> raw -> siaddr);
}
-void bind_lease (client)
+void bind_lease (client, siaddr)
struct client_state *client;
+ struct in_addr *siaddr;
{
struct timeval tv;
@@ -1702,6 +1703,13 @@ void bind_lease (client)
if (client -> alias)
script_write_params (client, "alias_", client -> alias);
+ if (siaddr) {
+ char buf[INET_ADDRSTRLEN];
+
+ if (inet_ntop (AF_INET, (void *) siaddr, buf, sizeof (buf)))
+ client_envadd (client, "new_", "next_server", "%s", buf);
+ }
+
/* If the BOUND/RENEW code detects another machine using the
offered address, it exits nonzero. We need to send a
DHCPDECLINE and toss the lease. */
diff -up dhcp-4.3.0a1/includes/dhcpd.h.next-server dhcp-4.3.0a1/includes/dhcpd.h
--- dhcp-4.3.0a1/includes/dhcpd.h.next-server 2013-12-20 13:57:06.434349907 +0100
+++ dhcp-4.3.0a1/includes/dhcpd.h 2013-12-20 13:57:06.502348958 +0100
@@ -2771,7 +2771,7 @@ void state_bound (void *);
void state_stop (void *);
void state_panic (void *);
-void bind_lease (struct client_state *);
+void bind_lease (struct client_state *, struct in_addr *);
void make_client_options (struct client_state *,
struct client_lease *, u_int8_t *,

View File

@ -1,7 +1,7 @@
diff -up dhcp-4.3.0a1/client/dhclient.c.paranoia dhcp-4.3.0a1/client/dhclient.c diff -up dhcp-4.3.1b1/client/dhclient.c.dlTsyN dhcp-4.3.1b1/client/dhclient.c
--- dhcp-4.3.0a1/client/dhclient.c.paranoia 2013-12-19 16:30:21.401211512 +0100 --- dhcp-4.3.1b1/client/dhclient.c.dlTsyN 2014-07-10 17:49:49.882925843 +0200
+++ dhcp-4.3.0a1/client/dhclient.c 2013-12-19 16:30:21.409211401 +0100 +++ dhcp-4.3.1b1/client/dhclient.c 2014-07-10 17:50:26.922402550 +0200
@@ -1712,11 +1712,6 @@ int write_host (host) @@ -1748,11 +1748,6 @@ int write_host (host)
return 0; return 0;
} }
@ -13,10 +13,10 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.paranoia dhcp-4.3.0a1/client/dhclient.c
void bootp (packet) void bootp (packet)
struct packet *packet; struct packet *packet;
{ {
diff -up dhcp-4.3.0a1/includes/dhcpd.h.paranoia dhcp-4.3.0a1/includes/dhcpd.h diff -up dhcp-4.3.1b1/includes/dhcpd.h.dlTsyN dhcp-4.3.1b1/includes/dhcpd.h
--- dhcp-4.3.0a1/includes/dhcpd.h.paranoia 2013-12-19 16:30:21.403211484 +0100 --- dhcp-4.3.1b1/includes/dhcpd.h.dlTsyN 2014-07-10 17:48:03.798424601 +0200
+++ dhcp-4.3.0a1/includes/dhcpd.h 2013-12-19 16:30:21.410211387 +0100 +++ dhcp-4.3.1b1/includes/dhcpd.h 2014-07-10 17:50:26.923402536 +0200
@@ -2851,7 +2851,11 @@ void commit_leases_timeout (void *); @@ -2866,7 +2866,11 @@ void commit_leases_timeout (void *);
void commit_leases_readerdry(void *); void commit_leases_readerdry(void *);
int commit_leases (void); int commit_leases (void);
int commit_leases_timed (void); int commit_leases_timed (void);
@ -28,10 +28,10 @@ diff -up dhcp-4.3.0a1/includes/dhcpd.h.paranoia dhcp-4.3.0a1/includes/dhcpd.h
int new_lease_file (void); int new_lease_file (void);
int group_writer (struct group_object *); int group_writer (struct group_object *);
int write_ia(const struct ia_xx *); int write_ia(const struct ia_xx *);
diff -up dhcp-4.3.0a1/server/confpars.c.paranoia dhcp-4.3.0a1/server/confpars.c diff -up dhcp-4.3.1b1/server/confpars.c.dlTsyN dhcp-4.3.1b1/server/confpars.c
--- dhcp-4.3.0a1/server/confpars.c.paranoia 2013-12-19 16:30:21.346212275 +0100 --- dhcp-4.3.1b1/server/confpars.c.dlTsyN 2014-07-10 17:39:25.801764596 +0200
+++ dhcp-4.3.0a1/server/confpars.c 2013-12-19 16:30:21.412211359 +0100 +++ dhcp-4.3.1b1/server/confpars.c 2014-07-10 17:50:26.924402522 +0200
@@ -225,7 +225,11 @@ void trace_conf_input (trace_type_t *tty @@ -219,7 +219,11 @@ void trace_conf_input (trace_type_t *tty
} }
if (!leaseconf_initialized && ttype == trace_readleases_type) { if (!leaseconf_initialized && ttype == trace_readleases_type) {
@ -43,10 +43,10 @@ diff -up dhcp-4.3.0a1/server/confpars.c.paranoia dhcp-4.3.0a1/server/confpars.c
leaseconf_initialized = 1; leaseconf_initialized = 1;
postdb_startup (); postdb_startup ();
} }
diff -up dhcp-4.3.0a1/server/db.c.paranoia dhcp-4.3.0a1/server/db.c diff -up dhcp-4.3.1b1/server/db.c.dlTsyN dhcp-4.3.1b1/server/db.c
--- dhcp-4.3.0a1/server/db.c.paranoia 2013-12-19 16:30:21.346212275 +0100 --- dhcp-4.3.1b1/server/db.c.dlTsyN 2014-07-10 17:39:25.801764596 +0200
+++ dhcp-4.3.0a1/server/db.c 2013-12-19 16:30:21.412211359 +0100 +++ dhcp-4.3.1b1/server/db.c 2014-07-10 17:50:26.925402508 +0200
@@ -48,6 +48,10 @@ static int counting = 0; @@ -42,6 +42,10 @@ static int counting = 0;
static int count = 0; static int count = 0;
TIME write_time; TIME write_time;
int lease_file_is_corrupt = 0; int lease_file_is_corrupt = 0;
@ -57,7 +57,7 @@ diff -up dhcp-4.3.0a1/server/db.c.paranoia dhcp-4.3.0a1/server/db.c
/* Write a single binding scope value in parsable format. /* Write a single binding scope value in parsable format.
*/ */
@@ -1052,8 +1056,11 @@ int commit_leases_timed() @@ -1046,8 +1050,11 @@ int commit_leases_timed()
return (1); return (1);
} }
@ -71,7 +71,7 @@ diff -up dhcp-4.3.0a1/server/db.c.paranoia dhcp-4.3.0a1/server/db.c
{ {
isc_result_t status; isc_result_t status;
@@ -1072,6 +1079,11 @@ void db_startup (testp) @@ -1066,6 +1073,11 @@ void db_startup (testp)
} }
#endif #endif
@ -83,7 +83,7 @@ diff -up dhcp-4.3.0a1/server/db.c.paranoia dhcp-4.3.0a1/server/db.c
#if defined (TRACING) #if defined (TRACING)
/* If we're playing back, there is no lease file, so we can't /* If we're playing back, there is no lease file, so we can't
append it, so we create one immediately (maybe this isn't append it, so we create one immediately (maybe this isn't
@@ -1134,6 +1146,17 @@ int new_lease_file () @@ -1128,6 +1140,17 @@ int new_lease_file ()
log_error ("Can't create new lease file: %m"); log_error ("Can't create new lease file: %m");
return 0; return 0;
} }
@ -101,9 +101,9 @@ diff -up dhcp-4.3.0a1/server/db.c.paranoia dhcp-4.3.0a1/server/db.c
if ((new_db_file = fdopen(db_fd, "we")) == NULL) { if ((new_db_file = fdopen(db_fd, "we")) == NULL) {
log_error("Can't fdopen new lease file: %m"); log_error("Can't fdopen new lease file: %m");
close(db_fd); close(db_fd);
diff -up dhcp-4.3.0a1/server/dhcpd.8.paranoia dhcp-4.3.0a1/server/dhcpd.8 diff -up dhcp-4.3.1b1/server/dhcpd.8.dlTsyN dhcp-4.3.1b1/server/dhcpd.8
--- dhcp-4.3.0a1/server/dhcpd.8.paranoia 2013-12-11 01:01:03.000000000 +0100 --- dhcp-4.3.1b1/server/dhcpd.8.dlTsyN 2014-07-02 19:58:39.000000000 +0200
+++ dhcp-4.3.0a1/server/dhcpd.8 2013-12-19 16:30:21.413211345 +0100 +++ dhcp-4.3.1b1/server/dhcpd.8 2014-07-10 17:50:26.925402508 +0200
@@ -82,6 +82,18 @@ dhcpd - Dynamic Host Configuration Proto @@ -82,6 +82,18 @@ dhcpd - Dynamic Host Configuration Proto
.I trace-output-file .I trace-output-file
] ]
@ -139,10 +139,10 @@ diff -up dhcp-4.3.0a1/server/dhcpd.8.paranoia dhcp-4.3.0a1/server/dhcpd.8
.PP .PP
.I Modifying default file locations: .I Modifying default file locations:
The following options can be used to modify the locations The following options can be used to modify the locations
diff -up dhcp-4.3.0a1/server/dhcpd.c.paranoia dhcp-4.3.0a1/server/dhcpd.c diff -up dhcp-4.3.1b1/server/dhcpd.c.dlTsyN dhcp-4.3.1b1/server/dhcpd.c
--- dhcp-4.3.0a1/server/dhcpd.c.paranoia 2013-12-19 16:30:21.347212261 +0100 --- dhcp-4.3.1b1/server/dhcpd.c.dlTsyN 2014-07-10 17:39:25.802764582 +0200
+++ dhcp-4.3.0a1/server/dhcpd.c 2013-12-19 16:30:21.414211331 +0100 +++ dhcp-4.3.1b1/server/dhcpd.c 2014-07-10 17:52:35.341588248 +0200
@@ -623,7 +623,11 @@ main(int argc, char **argv) { @@ -628,7 +628,11 @@ main(int argc, char **argv) {
group_write_hook = group_writer; group_write_hook = group_writer;
/* Start up the database... */ /* Start up the database... */
@ -154,49 +154,3 @@ diff -up dhcp-4.3.0a1/server/dhcpd.c.paranoia dhcp-4.3.0a1/server/dhcpd.c
if (lftest) if (lftest)
exit (0); exit (0);
@@ -694,22 +698,6 @@ main(int argc, char **argv) {
exit (0);
}
-#if defined (PARANOIA)
- /* change uid to the specified one */
-
- if (set_gid) {
- if (setgroups (0, (void *)0))
- log_fatal ("setgroups: %m");
- if (setgid (set_gid))
- log_fatal ("setgid(%d): %m", (int) set_gid);
- }
-
- if (set_uid) {
- if (setuid (set_uid))
- log_fatal ("setuid(%d): %m", (int) set_uid);
- }
-#endif /* PARANOIA */
-
/*
* Deal with pid files. If the user told us
* not to write a file we don't read one either
@@ -746,6 +734,22 @@ main(int argc, char **argv) {
}
}
+#if defined (PARANOIA)
+ /* change uid to the specified one */
+
+ if (set_gid) {
+ if (setgroups (0, (void *)0))
+ log_fatal ("setgroups: %m");
+ if (setgid (set_gid))
+ log_fatal ("setgid(%d): %m", (int) set_gid);
+ }
+
+ if (set_uid) {
+ if (setuid (set_uid))
+ log_fatal ("setuid(%d): %m", (int) set_uid);
+ }
+#endif /* PARANOIA */
+
/* If we were requested to log to stdout on the command line,
keep doing so; otherwise, stop. */
if (log_perror == -1)

View File

@ -1,25 +1,7 @@
diff -up dhcp-4.3.0a1/Makefile.am.remove-bind dhcp-4.3.0a1/Makefile.am diff -up dhcp-4.3.1b1/client/Makefile.am.brGmwh dhcp-4.3.1b1/client/Makefile.am
--- dhcp-4.3.0a1/Makefile.am.remove-bind 2013-12-13 21:49:44.000000000 +0100 --- dhcp-4.3.1b1/client/Makefile.am.brGmwh 2014-07-02 19:58:38.000000000 +0200
+++ dhcp-4.3.0a1/Makefile.am 2013-12-19 14:23:48.907263942 +0100 +++ dhcp-4.3.1b1/client/Makefile.am 2014-07-10 17:36:30.484250976 +0200
@@ -25,7 +25,13 @@ EXTRA_DIST = RELNOTES LICENSE \ @@ -10,8 +10,8 @@ dhclient_SOURCES = clparse.c dhclient.c
bind/Makefile bind/bind.tar.gz bind/version.tmp \
common/tests/Atffile server/tests/Atffile
-SUBDIRS = bind includes tests common dst omapip client dhcpctl relay server
+if BUNDLED_BIND
+SUBDIRS = bind
+else
+SUBDIRS =
+endif
+
+SUBDIRS += includes tests common dst omapip client dhcpctl relay server
nobase_include_HEADERS = dhcpctl/dhcpctl.h
diff -up dhcp-4.3.0a1/client/Makefile.am.remove-bind dhcp-4.3.0a1/client/Makefile.am
--- dhcp-4.3.0a1/client/Makefile.am.remove-bind 2013-12-19 14:23:48.904263983 +0100
+++ dhcp-4.3.0a1/client/Makefile.am 2013-12-19 14:32:27.845095985 +0100
@@ -4,8 +4,8 @@ dhclient_SOURCES = clparse.c dhclient.c
scripts/bsdos scripts/freebsd scripts/linux scripts/macos \ scripts/bsdos scripts/freebsd scripts/linux scripts/macos \
scripts/netbsd scripts/nextstep scripts/openbsd \ scripts/netbsd scripts/nextstep scripts/openbsd \
scripts/solaris scripts/openwrt scripts/solaris scripts/openwrt
@ -30,10 +12,10 @@ diff -up dhcp-4.3.0a1/client/Makefile.am.remove-bind dhcp-4.3.0a1/client/Makefil
man_MANS = dhclient.8 dhclient-script.8 dhclient.conf.5 dhclient.leases.5 man_MANS = dhclient.8 dhclient-script.8 dhclient.conf.5 dhclient.leases.5
EXTRA_DIST = $(man_MANS) EXTRA_DIST = $(man_MANS)
diff -up dhcp-4.3.0a1/common/tests/Makefile.am.remove-bind dhcp-4.3.0a1/common/tests/Makefile.am diff -up dhcp-4.3.1b1/common/tests/Makefile.am.brGmwh dhcp-4.3.1b1/common/tests/Makefile.am
--- dhcp-4.3.0a1/common/tests/Makefile.am.remove-bind 2013-12-19 14:23:48.905263969 +0100 --- dhcp-4.3.1b1/common/tests/Makefile.am.brGmwh 2014-07-10 17:36:30.485250962 +0200
+++ dhcp-4.3.0a1/common/tests/Makefile.am 2013-12-19 14:33:01.260634412 +0100 +++ dhcp-4.3.1b1/common/tests/Makefile.am 2014-07-10 17:38:04.010924566 +0200
@@ -13,15 +13,14 @@ ATF_TESTS += alloc_unittest dns_unittest @@ -13,21 +13,20 @@ ATF_TESTS += alloc_unittest dns_unittest
alloc_unittest_SOURCES = test_alloc.c $(top_srcdir)/tests/t_api_dhcp.c alloc_unittest_SOURCES = test_alloc.c $(top_srcdir)/tests/t_api_dhcp.c
alloc_unittest_LDADD = $(ATF_LDFLAGS) alloc_unittest_LDADD = $(ATF_LDFLAGS)
alloc_unittest_LDADD += ../libdhcp.a \ alloc_unittest_LDADD += ../libdhcp.a \
@ -47,16 +29,24 @@ diff -up dhcp-4.3.0a1/common/tests/Makefile.am.remove-bind dhcp-4.3.0a1/common/t
dns_unittest_LDADD += ../libdhcp.a \ dns_unittest_LDADD += ../libdhcp.a \
- ../../omapip/libomapi.a ../../bind/lib/libirs.a \ - ../../omapip/libomapi.a ../../bind/lib/libirs.a \
- ../../bind/lib/libdns.a ../../bind/lib/libisccfg.a ../../bind/lib/libisc.a - ../../bind/lib/libdns.a ../../bind/lib/libisccfg.a ../../bind/lib/libisc.a
+ ../../omapip/libomapi.a \
+ $(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export
misc_unittest_SOURCES = misc_unittest.c $(top_srcdir)/tests/t_api_dhcp.c
misc_unittest_LDADD = $(ATF_LDFLAGS)
misc_unittest_LDADD += ../libdhcp.a \
- ../../omapip/libomapi.a ../../bind/lib/libirs.a \
- ../../bind/lib/libdns.a ../../bind/lib/libisccfg.a ../../bind/lib/libisc.a
- -
+ ../../omapip/libomapi.a \ + ../../omapip/libomapi.a \
+ $(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export + $(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export
check: $(ATF_TESTS) check: $(ATF_TESTS)
atf-run | atf-report atf-run | atf-report
diff -up dhcp-4.3.0a1/configure.ac.remove-bind dhcp-4.3.0a1/configure.ac diff -up dhcp-4.3.1b1/configure.ac.brGmwh dhcp-4.3.1b1/configure.ac
--- dhcp-4.3.0a1/configure.ac.remove-bind 2013-12-19 14:23:48.906263956 +0100 --- dhcp-4.3.1b1/configure.ac.brGmwh 2014-07-02 20:01:26.000000000 +0200
+++ dhcp-4.3.0a1/configure.ac 2013-12-19 14:37:44.358723889 +0100 +++ dhcp-4.3.1b1/configure.ac 2014-07-10 17:36:30.485250962 +0200
@@ -552,20 +552,37 @@ AC_CHECK_MEMBER(struct msghdr.msg_contro @@ -562,20 +562,37 @@ AC_CHECK_MEMBER(struct msghdr.msg_contro
libbind= libbind=
AC_ARG_WITH(libbind, AC_ARG_WITH(libbind,
@ -99,7 +89,7 @@ diff -up dhcp-4.3.0a1/configure.ac.remove-bind dhcp-4.3.0a1/configure.ac
# OpenLDAP support. # OpenLDAP support.
AC_ARG_WITH(ldap, AC_ARG_WITH(ldap,
@@ -600,7 +617,7 @@ fi @@ -610,7 +627,7 @@ fi
CFLAGS="$CFLAGS $STD_CWARNINGS" CFLAGS="$CFLAGS $STD_CWARNINGS"
# Try to add the bind include directory # Try to add the bind include directory
@ -108,9 +98,9 @@ diff -up dhcp-4.3.0a1/configure.ac.remove-bind dhcp-4.3.0a1/configure.ac
case "$host" in case "$host" in
*-darwin*) *-darwin*)
diff -up dhcp-4.3.0a1/dhcpctl/Makefile.am.remove-bind dhcp-4.3.0a1/dhcpctl/Makefile.am diff -up dhcp-4.3.1b1/dhcpctl/Makefile.am.brGmwh dhcp-4.3.1b1/dhcpctl/Makefile.am
--- dhcp-4.3.0a1/dhcpctl/Makefile.am.remove-bind 2013-12-19 14:23:48.906263956 +0100 --- dhcp-4.3.1b1/dhcpctl/Makefile.am.brGmwh 2014-07-02 19:58:38.000000000 +0200
+++ dhcp-4.3.0a1/dhcpctl/Makefile.am 2013-12-19 14:40:06.497754274 +0100 +++ dhcp-4.3.1b1/dhcpctl/Makefile.am 2014-07-10 17:36:30.485250962 +0200
@@ -6,12 +6,9 @@ EXTRA_DIST = $(man_MANS) @@ -6,12 +6,9 @@ EXTRA_DIST = $(man_MANS)
omshell_SOURCES = omshell.c omshell_SOURCES = omshell.c
@ -126,9 +116,27 @@ diff -up dhcp-4.3.0a1/dhcpctl/Makefile.am.remove-bind dhcp-4.3.0a1/dhcpctl/Makef
- ../bind/lib/libirs.a ../bind/lib/libdns.a \ - ../bind/lib/libirs.a ../bind/lib/libdns.a \
- ../bind/lib/libisccfg.a ../bind/lib/libisc.a - ../bind/lib/libisccfg.a ../bind/lib/libisc.a
+ $(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export + $(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export
diff -up dhcp-4.3.0a1/omapip/Makefile.am.remove-bind dhcp-4.3.0a1/omapip/Makefile.am diff -up dhcp-4.3.1b1/Makefile.am.brGmwh dhcp-4.3.1b1/Makefile.am
--- dhcp-4.3.0a1/omapip/Makefile.am.remove-bind 2013-12-19 14:23:48.908263928 +0100 --- dhcp-4.3.1b1/Makefile.am.brGmwh 2014-07-02 19:58:38.000000000 +0200
+++ dhcp-4.3.0a1/omapip/Makefile.am 2013-12-19 14:40:51.440118923 +0100 +++ dhcp-4.3.1b1/Makefile.am 2014-07-10 17:36:30.484250976 +0200
@@ -25,7 +25,13 @@ EXTRA_DIST = RELNOTES LICENSE \
bind/Makefile bind/bind.tar.gz bind/version.tmp \
common/tests/Atffile server/tests/Atffile
-SUBDIRS = bind includes tests common dst omapip client dhcpctl relay server
+if BUNDLED_BIND
+SUBDIRS = bind
+else
+SUBDIRS =
+endif
+
+SUBDIRS += includes tests common dst omapip client dhcpctl relay server
nobase_include_HEADERS = dhcpctl/dhcpctl.h
diff -up dhcp-4.3.1b1/omapip/Makefile.am.brGmwh dhcp-4.3.1b1/omapip/Makefile.am
--- dhcp-4.3.1b1/omapip/Makefile.am.brGmwh 2014-07-02 19:58:39.000000000 +0200
+++ dhcp-4.3.1b1/omapip/Makefile.am 2014-07-10 17:36:30.486250948 +0200
@@ -10,6 +10,5 @@ man_MANS = omapi.3 @@ -10,6 +10,5 @@ man_MANS = omapi.3
EXTRA_DIST = $(man_MANS) EXTRA_DIST = $(man_MANS)
@ -138,9 +146,9 @@ diff -up dhcp-4.3.0a1/omapip/Makefile.am.remove-bind dhcp-4.3.0a1/omapip/Makefil
- -
+svtest_LDADD = libomapi.a \ +svtest_LDADD = libomapi.a \
+ $(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export + $(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export
diff -up dhcp-4.3.0a1/relay/Makefile.am.remove-bind dhcp-4.3.0a1/relay/Makefile.am diff -up dhcp-4.3.1b1/relay/Makefile.am.brGmwh dhcp-4.3.1b1/relay/Makefile.am
--- dhcp-4.3.0a1/relay/Makefile.am.remove-bind 2013-12-19 14:23:48.908263928 +0100 --- dhcp-4.3.1b1/relay/Makefile.am.brGmwh 2014-07-02 19:58:39.000000000 +0200
+++ dhcp-4.3.0a1/relay/Makefile.am 2013-12-19 14:41:27.302612345 +0100 +++ dhcp-4.3.1b1/relay/Makefile.am 2014-07-10 17:36:30.486250948 +0200
@@ -3,8 +3,7 @@ AM_CPPFLAGS = -DLOCALSTATEDIR='"@localst @@ -3,8 +3,7 @@ AM_CPPFLAGS = -DLOCALSTATEDIR='"@localst
sbin_PROGRAMS = dhcrelay sbin_PROGRAMS = dhcrelay
dhcrelay_SOURCES = dhcrelay.c dhcrelay_SOURCES = dhcrelay.c
@ -151,9 +159,9 @@ diff -up dhcp-4.3.0a1/relay/Makefile.am.remove-bind dhcp-4.3.0a1/relay/Makefile.
man_MANS = dhcrelay.8 man_MANS = dhcrelay.8
EXTRA_DIST = $(man_MANS) EXTRA_DIST = $(man_MANS)
diff -up dhcp-4.3.0a1/server/Makefile.am.remove-bind dhcp-4.3.0a1/server/Makefile.am diff -up dhcp-4.3.1b1/server/Makefile.am.brGmwh dhcp-4.3.1b1/server/Makefile.am
--- dhcp-4.3.0a1/server/Makefile.am.remove-bind 2013-12-19 14:23:48.910263900 +0100 --- dhcp-4.3.1b1/server/Makefile.am.brGmwh 2014-07-02 19:58:39.000000000 +0200
+++ dhcp-4.3.0a1/server/Makefile.am 2013-12-19 14:42:18.065895883 +0100 +++ dhcp-4.3.1b1/server/Makefile.am 2014-07-10 17:36:30.486250948 +0200
@@ -13,10 +13,8 @@ dhcpd_SOURCES = dhcpd.c dhcp.c bootp.c c @@ -13,10 +13,8 @@ dhcpd_SOURCES = dhcpd.c dhcp.c bootp.c c
dhcpv6.c mdb6.c ldap.c ldap_casa.c dhcpv6.c mdb6.c ldap.c ldap_casa.c
@ -167,9 +175,9 @@ diff -up dhcp-4.3.0a1/server/Makefile.am.remove-bind dhcp-4.3.0a1/server/Makefil
man_MANS = dhcpd.8 dhcpd.conf.5 dhcpd.leases.5 man_MANS = dhcpd.8 dhcpd.conf.5 dhcpd.leases.5
EXTRA_DIST = $(man_MANS) EXTRA_DIST = $(man_MANS)
diff -up dhcp-4.3.0a1/server/tests/Makefile.am.remove-bind dhcp-4.3.0a1/server/tests/Makefile.am diff -up dhcp-4.3.1b1/server/tests/Makefile.am.brGmwh dhcp-4.3.1b1/server/tests/Makefile.am
--- dhcp-4.3.0a1/server/tests/Makefile.am.remove-bind 2013-12-19 14:23:48.911263886 +0100 --- dhcp-4.3.1b1/server/tests/Makefile.am.brGmwh 2014-07-02 19:58:40.000000000 +0200
+++ dhcp-4.3.0a1/server/tests/Makefile.am 2013-12-19 14:43:32.943840285 +0100 +++ dhcp-4.3.1b1/server/tests/Makefile.am 2014-07-10 17:36:30.486250948 +0200
@@ -18,9 +18,8 @@ DHCPSRC = ../dhcp.c ../bootp.c ../confpa @@ -18,9 +18,8 @@ DHCPSRC = ../dhcp.c ../bootp.c ../confpa
../ldap.c ../ldap_casa.c ../dhcpd.c ../ldap.c ../ldap_casa.c ../dhcpd.c

View File

@ -1,48 +0,0 @@
diff -up dhcp-4.3.0a1/client/dhc6.c.retransmission dhcp-4.3.0a1/client/dhc6.c
--- dhcp-4.3.0a1/client/dhc6.c.retransmission 2013-12-19 15:57:09.629945386 +0100
+++ dhcp-4.3.0a1/client/dhc6.c 2013-12-19 15:57:09.634945316 +0100
@@ -302,7 +302,7 @@ dhc6_retrans_init(struct client_state *c
static void
dhc6_retrans_advance(struct client_state *client)
{
- struct timeval elapsed;
+ struct timeval elapsed, elapsed_after_RT;
/* elapsed = cur - start */
elapsed.tv_sec = cur_tv.tv_sec - client->start_time.tv_sec;
@@ -319,6 +319,8 @@ dhc6_retrans_advance(struct client_state
elapsed.tv_sec += 1;
elapsed.tv_usec -= 1000000;
}
+ elapsed_after_RT.tv_sec = elapsed.tv_sec;
+ elapsed_after_RT.tv_usec = elapsed.tv_usec;
/*
* RT for each subsequent message transmission is based on the previous
@@ -356,13 +358,10 @@ dhc6_retrans_advance(struct client_state
elapsed.tv_usec -= 1000000;
}
if (elapsed.tv_sec >= client->MRD) {
- /*
- * wake at RT + cur = start + MRD
- */
- client->RT = client->MRD +
- (client->start_time.tv_sec - cur_tv.tv_sec);
- client->RT = client->RT * 100 +
- (client->start_time.tv_usec - cur_tv.tv_usec) / 10000;
+ client->RT = client->MRD - elapsed_after_RT.tv_sec;
+ client->RT = client->RT * 100 - elapsed_after_RT.tv_usec / 10000;
+ if (client->RT < 0)
+ client->RT = 0;
}
client->txcount++;
}
@@ -1439,7 +1438,7 @@ check_timing6 (struct client_state *clie
}
/* Check if finished (-1 argument). */
- if ((client->MRD != 0) && (elapsed.tv_sec > client->MRD)) {
+ if ((client->MRD != 0) && (elapsed.tv_sec >= client->MRD)) {
log_info("Max retransmission duration exceeded.");
return(CHK_TIM_MRD_EXCEEDED);
}

View File

@ -1,7 +1,7 @@
diff -up dhcp-4.3.0a1/client/Makefile.am.sharedlib dhcp-4.3.0a1/client/Makefile.am diff -up dhcp-4.3.1b1/client/Makefile.am.uCWMBl dhcp-4.3.1b1/client/Makefile.am
--- dhcp-4.3.0a1/client/Makefile.am.sharedlib 2013-12-20 14:23:14.303534850 +0100 --- dhcp-4.3.1b1/client/Makefile.am.uCWMBl 2014-07-10 17:36:30.484250976 +0200
+++ dhcp-4.3.0a1/client/Makefile.am 2013-12-20 14:23:14.312534725 +0100 +++ dhcp-4.3.1b1/client/Makefile.am 2014-07-10 17:38:10.778828583 +0200
@@ -4,7 +4,7 @@ dhclient_SOURCES = clparse.c dhclient.c @@ -10,7 +10,7 @@ dhclient_SOURCES = clparse.c dhclient.c
scripts/bsdos scripts/freebsd scripts/linux scripts/macos \ scripts/bsdos scripts/freebsd scripts/linux scripts/macos \
scripts/netbsd scripts/nextstep scripts/openbsd \ scripts/netbsd scripts/nextstep scripts/openbsd \
scripts/solaris scripts/openwrt scripts/solaris scripts/openwrt
@ -10,10 +10,10 @@ diff -up dhcp-4.3.0a1/client/Makefile.am.sharedlib dhcp-4.3.0a1/client/Makefile.
$(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export $(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export
man_MANS = dhclient.8 dhclient-script.8 dhclient.conf.5 dhclient.leases.5 man_MANS = dhclient.8 dhclient-script.8 dhclient.conf.5 dhclient.leases.5
EXTRA_DIST = $(man_MANS) EXTRA_DIST = $(man_MANS)
diff -up dhcp-4.3.0a1/common/tests/Makefile.am.sharedlib dhcp-4.3.0a1/common/tests/Makefile.am diff -up dhcp-4.3.1b1/common/tests/Makefile.am.uCWMBl dhcp-4.3.1b1/common/tests/Makefile.am
--- dhcp-4.3.0a1/common/tests/Makefile.am.sharedlib 2013-12-20 14:23:14.304534836 +0100 --- dhcp-4.3.1b1/common/tests/Makefile.am.uCWMBl 2014-07-10 17:38:10.779828569 +0200
+++ dhcp-4.3.0a1/common/tests/Makefile.am 2013-12-20 14:23:14.313534711 +0100 +++ dhcp-4.3.1b1/common/tests/Makefile.am 2014-07-10 17:38:21.355678580 +0200
@@ -13,13 +13,13 @@ ATF_TESTS += alloc_unittest dns_unittest @@ -13,19 +13,19 @@ ATF_TESTS += alloc_unittest dns_unittest
alloc_unittest_SOURCES = test_alloc.c $(top_srcdir)/tests/t_api_dhcp.c alloc_unittest_SOURCES = test_alloc.c $(top_srcdir)/tests/t_api_dhcp.c
alloc_unittest_LDADD = $(ATF_LDFLAGS) alloc_unittest_LDADD = $(ATF_LDFLAGS)
alloc_unittest_LDADD += ../libdhcp.a \ alloc_unittest_LDADD += ../libdhcp.a \
@ -23,15 +23,22 @@ diff -up dhcp-4.3.0a1/common/tests/Makefile.am.sharedlib dhcp-4.3.0a1/common/tes
dns_unittest_SOURCES = dns_unittest.c $(top_srcdir)/tests/t_api_dhcp.c dns_unittest_SOURCES = dns_unittest.c $(top_srcdir)/tests/t_api_dhcp.c
dns_unittest_LDADD = $(ATF_LDFLAGS) dns_unittest_LDADD = $(ATF_LDFLAGS)
dns_unittest_LDADD += ../libdhcp.a \ -dns_unittest_LDADD += ../libdhcp.a \
+dns_unittest_LDADD += ../libdhcp.la \
../../omapip/libomapi.a \
$(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export
misc_unittest_SOURCES = misc_unittest.c $(top_srcdir)/tests/t_api_dhcp.c
misc_unittest_LDADD = $(ATF_LDFLAGS)
misc_unittest_LDADD += ../libdhcp.a \
- ../../omapip/libomapi.a \ - ../../omapip/libomapi.a \
+ ../../omapip/libomapi.la \ + ../../omapip/libomapi.la \
$(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export $(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export
check: $(ATF_TESTS) check: $(ATF_TESTS)
atf-run | atf-report atf-run | atf-report
diff -up dhcp-4.3.0a1/configure.ac.sharedlib dhcp-4.3.0a1/configure.ac diff -up dhcp-4.3.1b1/configure.ac.uCWMBl dhcp-4.3.1b1/configure.ac
--- dhcp-4.3.0a1/configure.ac.sharedlib 2013-12-20 14:23:14.308534781 +0100 --- dhcp-4.3.1b1/configure.ac.uCWMBl 2014-07-10 17:38:10.766828753 +0200
+++ dhcp-4.3.0a1/configure.ac 2013-12-20 14:23:14.313534711 +0100 +++ dhcp-4.3.1b1/configure.ac 2014-07-10 17:38:10.779828569 +0200
@@ -39,7 +39,8 @@ fi @@ -39,7 +39,8 @@ fi
# Use this to define _GNU_SOURCE to pull in the IPv6 Advanced Socket API. # Use this to define _GNU_SOURCE to pull in the IPv6 Advanced Socket API.
AC_USE_SYSTEM_EXTENSIONS AC_USE_SYSTEM_EXTENSIONS
@ -42,9 +49,9 @@ diff -up dhcp-4.3.0a1/configure.ac.sharedlib dhcp-4.3.0a1/configure.ac
AC_CONFIG_HEADERS([includes/config.h]) AC_CONFIG_HEADERS([includes/config.h])
# we sometimes need to know byte order for building packets # we sometimes need to know byte order for building packets
diff -up dhcp-4.3.0a1/dhcpctl/Makefile.am.sharedlib dhcp-4.3.0a1/dhcpctl/Makefile.am diff -up dhcp-4.3.1b1/dhcpctl/Makefile.am.uCWMBl dhcp-4.3.1b1/dhcpctl/Makefile.am
--- dhcp-4.3.0a1/dhcpctl/Makefile.am.sharedlib 2013-12-20 14:23:14.304534836 +0100 --- dhcp-4.3.1b1/dhcpctl/Makefile.am.uCWMBl 2014-07-10 17:36:30.485250962 +0200
+++ dhcp-4.3.0a1/dhcpctl/Makefile.am 2013-12-20 14:23:21.998428024 +0100 +++ dhcp-4.3.1b1/dhcpctl/Makefile.am 2014-07-10 17:38:10.780828554 +0200
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
bin_PROGRAMS = omshell bin_PROGRAMS = omshell
-lib_LIBRARIES = libdhcpctl.a -lib_LIBRARIES = libdhcpctl.a
@ -64,9 +71,9 @@ diff -up dhcp-4.3.0a1/dhcpctl/Makefile.am.sharedlib dhcp-4.3.0a1/dhcpctl/Makefil
-cltest_LDADD = libdhcpctl.a ../common/libdhcp.a ../omapip/libomapi.a \ -cltest_LDADD = libdhcpctl.a ../common/libdhcp.a ../omapip/libomapi.a \
+cltest_LDADD = libdhcpctl.la ../common/libdhcp.a ../omapip/libomapi.la \ +cltest_LDADD = libdhcpctl.la ../common/libdhcp.a ../omapip/libomapi.la \
$(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export $(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export
diff -up dhcp-4.3.0a1/omapip/Makefile.am.sharedlib dhcp-4.3.0a1/omapip/Makefile.am diff -up dhcp-4.3.1b1/omapip/Makefile.am.uCWMBl dhcp-4.3.1b1/omapip/Makefile.am
--- dhcp-4.3.0a1/omapip/Makefile.am.sharedlib 2013-12-20 14:23:14.304534836 +0100 --- dhcp-4.3.1b1/omapip/Makefile.am.uCWMBl 2014-07-10 17:36:30.486250948 +0200
+++ dhcp-4.3.0a1/omapip/Makefile.am 2013-12-20 14:23:14.313534711 +0100 +++ dhcp-4.3.1b1/omapip/Makefile.am 2014-07-10 17:38:10.780828554 +0200
@@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
-lib_LIBRARIES = libomapi.a -lib_LIBRARIES = libomapi.a
+lib_LTLIBRARIES = libomapi.la +lib_LTLIBRARIES = libomapi.la
@ -84,9 +91,9 @@ diff -up dhcp-4.3.0a1/omapip/Makefile.am.sharedlib dhcp-4.3.0a1/omapip/Makefile.
-svtest_LDADD = libomapi.a \ -svtest_LDADD = libomapi.a \
+svtest_LDADD = libomapi.la \ +svtest_LDADD = libomapi.la \
$(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export $(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export
diff -up dhcp-4.3.0a1/relay/Makefile.am.sharedlib dhcp-4.3.0a1/relay/Makefile.am diff -up dhcp-4.3.1b1/relay/Makefile.am.uCWMBl dhcp-4.3.1b1/relay/Makefile.am
--- dhcp-4.3.0a1/relay/Makefile.am.sharedlib 2013-12-20 14:23:14.305534822 +0100 --- dhcp-4.3.1b1/relay/Makefile.am.uCWMBl 2014-07-10 17:36:30.486250948 +0200
+++ dhcp-4.3.0a1/relay/Makefile.am 2013-12-20 14:23:14.314534697 +0100 +++ dhcp-4.3.1b1/relay/Makefile.am 2014-07-10 17:38:10.780828554 +0200
@@ -2,7 +2,7 @@ AM_CPPFLAGS = -DLOCALSTATEDIR='"@localst @@ -2,7 +2,7 @@ AM_CPPFLAGS = -DLOCALSTATEDIR='"@localst
sbin_PROGRAMS = dhcrelay sbin_PROGRAMS = dhcrelay
@ -96,9 +103,9 @@ diff -up dhcp-4.3.0a1/relay/Makefile.am.sharedlib dhcp-4.3.0a1/relay/Makefile.am
$(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export $(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export
man_MANS = dhcrelay.8 man_MANS = dhcrelay.8
EXTRA_DIST = $(man_MANS) EXTRA_DIST = $(man_MANS)
diff -up dhcp-4.3.0a1/server/Makefile.am.sharedlib dhcp-4.3.0a1/server/Makefile.am diff -up dhcp-4.3.1b1/server/Makefile.am.uCWMBl dhcp-4.3.1b1/server/Makefile.am
--- dhcp-4.3.0a1/server/Makefile.am.sharedlib 2013-12-20 14:23:14.305534822 +0100 --- dhcp-4.3.1b1/server/Makefile.am.uCWMBl 2014-07-10 17:36:30.486250948 +0200
+++ dhcp-4.3.0a1/server/Makefile.am 2013-12-20 14:23:14.314534697 +0100 +++ dhcp-4.3.1b1/server/Makefile.am 2014-07-10 17:38:10.780828554 +0200
@@ -13,7 +13,7 @@ dhcpd_SOURCES = dhcpd.c dhcp.c bootp.c c @@ -13,7 +13,7 @@ dhcpd_SOURCES = dhcpd.c dhcp.c bootp.c c
dhcpv6.c mdb6.c ldap.c ldap_casa.c dhcpv6.c mdb6.c ldap.c ldap_casa.c
@ -108,9 +115,9 @@ diff -up dhcp-4.3.0a1/server/Makefile.am.sharedlib dhcp-4.3.0a1/server/Makefile.
$(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export $(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export
man_MANS = dhcpd.8 dhcpd.conf.5 dhcpd.leases.5 man_MANS = dhcpd.8 dhcpd.conf.5 dhcpd.leases.5
EXTRA_DIST = $(man_MANS) EXTRA_DIST = $(man_MANS)
diff -up dhcp-4.3.0a1/server/tests/Makefile.am.sharedlib dhcp-4.3.0a1/server/tests/Makefile.am diff -up dhcp-4.3.1b1/server/tests/Makefile.am.uCWMBl dhcp-4.3.1b1/server/tests/Makefile.am
--- dhcp-4.3.0a1/server/tests/Makefile.am.sharedlib 2013-12-20 14:23:14.305534822 +0100 --- dhcp-4.3.1b1/server/tests/Makefile.am.uCWMBl 2014-07-10 17:36:30.486250948 +0200
+++ dhcp-4.3.0a1/server/tests/Makefile.am 2013-12-20 14:23:14.314534697 +0100 +++ dhcp-4.3.1b1/server/tests/Makefile.am 2014-07-10 17:38:10.780828554 +0200
@@ -17,8 +17,8 @@ DHCPSRC = ../dhcp.c ../bootp.c ../confpa @@ -17,8 +17,8 @@ DHCPSRC = ../dhcp.c ../bootp.c ../confpa
../ddns.c ../dhcpleasequery.c ../dhcpv6.c ../mdb6.c \ ../ddns.c ../dhcpleasequery.c ../dhcpv6.c ../mdb6.c \
../ldap.c ../ldap_casa.c ../dhcpd.c ../ldap.c ../ldap_casa.c ../dhcpd.c

View File

@ -1,19 +1,7 @@
diff -up dhcp-4.3.0a1/Makefile.am.systemtap dhcp-4.3.0a1/Makefile.am diff -up dhcp-4.3.1b1/configure.ac.systemtap dhcp-4.3.1b1/configure.ac
--- dhcp-4.3.0a1/Makefile.am.systemtap 2013-12-20 13:30:26.149645305 +0100 --- dhcp-4.3.1b1/configure.ac.systemtap 2014-07-10 18:31:05.966880404 +0200
+++ dhcp-4.3.0a1/Makefile.am 2013-12-20 13:30:26.307643109 +0100 +++ dhcp-4.3.1b1/configure.ac 2014-07-10 18:31:06.027879541 +0200
@@ -33,5 +33,8 @@ endif @@ -534,6 +534,35 @@ else
SUBDIRS += includes tests common omapip client dhcpctl relay server
+SUBDIRS += tapset
+#DIST_SUBDIRS = $(SUBDIRS)
+
nobase_include_HEADERS = dhcpctl/dhcpctl.h
diff -up dhcp-4.3.0a1/configure.ac.systemtap dhcp-4.3.0a1/configure.ac
--- dhcp-4.3.0a1/configure.ac.systemtap 2013-12-20 13:30:26.229644193 +0100
+++ dhcp-4.3.0a1/configure.ac 2013-12-20 13:31:39.195630065 +0100
@@ -524,6 +524,35 @@ else
AC_MSG_RESULT(no) AC_MSG_RESULT(no)
fi fi
@ -49,7 +37,7 @@ diff -up dhcp-4.3.0a1/configure.ac.systemtap dhcp-4.3.0a1/configure.ac
# Solaris needs some libraries for functions # Solaris needs some libraries for functions
AC_SEARCH_LIBS(socket, [socket]) AC_SEARCH_LIBS(socket, [socket])
AC_SEARCH_LIBS(inet_ntoa, [nsl]) AC_SEARCH_LIBS(inet_ntoa, [nsl])
@@ -675,6 +704,7 @@ AC_CONFIG_FILES([ @@ -686,6 +715,7 @@ AC_CONFIG_FILES([
tests/Makefile tests/Makefile
server/tests/Makefile server/tests/Makefile
doc/devel/doxyfile doc/devel/doxyfile
@ -57,9 +45,437 @@ diff -up dhcp-4.3.0a1/configure.ac.systemtap dhcp-4.3.0a1/configure.ac
]) ])
AC_OUTPUT AC_OUTPUT
diff -up dhcp-4.3.0a1/server/Makefile.am.systemtap dhcp-4.3.0a1/server/Makefile.am diff -up dhcp-4.3.1b1/Makefile.am.systemtap dhcp-4.3.1b1/Makefile.am
--- dhcp-4.3.0a1/server/Makefile.am.systemtap 2013-12-20 13:30:26.156645207 +0100 --- dhcp-4.3.1b1/Makefile.am.systemtap 2014-07-10 18:31:05.891881465 +0200
+++ dhcp-4.3.0a1/server/Makefile.am 2013-12-20 13:34:16.057447630 +0100 +++ dhcp-4.3.1b1/Makefile.am 2014-07-10 18:31:06.027879541 +0200
@@ -33,5 +33,8 @@ endif
SUBDIRS += includes tests common omapip client dhcpctl relay server
+SUBDIRS += tapset
+#DIST_SUBDIRS = $(SUBDIRS)
+
nobase_include_HEADERS = dhcpctl/dhcpctl.h
diff -up dhcp-4.3.1b1/server/dhcp.c.systemtap dhcp-4.3.1b1/server/dhcp.c
--- dhcp-4.3.1b1/server/dhcp.c.systemtap 2014-07-10 18:31:06.016879697 +0200
+++ dhcp-4.3.1b1/server/dhcp.c 2014-07-10 18:36:07.392617942 +0200
@@ -30,7 +30,7 @@
#include <errno.h>
#include <limits.h>
#include <sys/time.h>
-
+#include "trace.h"
static void commit_leases_ackout(void *foo);
static void maybe_return_agent_options(struct packet *packet,
struct option_state *options);
@@ -303,6 +303,8 @@ void dhcpdiscover (packet, ms_nulltp)
dhcp_failover_state_t *peer;
#endif
+ TRACE(DHCPD_DISCOVER_START());
+
find_lease (&lease, packet, packet -> shared_network,
0, &peer_has_leases, (struct lease *)0, MDL);
@@ -425,6 +427,8 @@ void dhcpdiscover (packet, ms_nulltp)
out:
if (lease)
lease_dereference (&lease, MDL);
+
+ TRACE(DHCPD_DISCOVER_DONE());
}
void dhcprequest (packet, ms_nulltp, ip_lease)
@@ -447,6 +451,8 @@ void dhcprequest (packet, ms_nulltp, ip_
#endif
int have_requested_addr = 0;
+ TRACE(DHCPD_REQUEST_START());
+
oc = lookup_option (&dhcp_universe, packet -> options,
DHO_DHCP_REQUESTED_ADDRESS);
memset (&data, 0, sizeof data);
@@ -724,6 +730,9 @@ void dhcprequest (packet, ms_nulltp, ip_
log_info ("%s: unknown lease %s.", msgbuf, piaddr (cip));
out:
+
+ TRACE(DHCPD_REQUEST_DONE());
+
if (subnet)
subnet_dereference (&subnet, MDL);
if (lease)
@@ -742,6 +751,7 @@ void dhcprelease (packet, ms_nulltp)
const char *s;
char msgbuf [1024], cstr[16]; /* XXX */
+ TRACE(DHCPD_RELEASE_START());
/* DHCPRELEASE must not specify address in requested-address
option, but old protocol specs weren't explicit about this,
@@ -862,6 +872,8 @@ void dhcprelease (packet, ms_nulltp)
#endif
if (lease)
lease_dereference (&lease, MDL);
+
+ TRACE(DHCPD_RELEASE_DONE());
}
void dhcpdecline (packet, ms_nulltp)
@@ -879,6 +891,8 @@ void dhcpdecline (packet, ms_nulltp)
struct option_cache *oc;
struct data_string data;
+ TRACE(DHCPD_DECLINE_START());
+
/* DHCPDECLINE must specify address. */
if (!(oc = lookup_option (&dhcp_universe, packet -> options,
DHO_DHCP_REQUESTED_ADDRESS)))
@@ -985,6 +999,8 @@ void dhcpdecline (packet, ms_nulltp)
option_state_dereference (&options, MDL);
if (lease)
lease_dereference (&lease, MDL);
+
+ TRACE(DHCPD_DECLINE_DONE());
}
void dhcpinform (packet, ms_nulltp)
@@ -1012,6 +1028,8 @@ void dhcpinform (packet, ms_nulltp)
int h_w_fixed_addr = 0;
#endif
+ TRACE(DHCPD_INFORM_START());
+
/* The client should set ciaddr to its IP address, but apparently
it's common for clients not to do this, so we'll use their IP
source address if they didn't set ciaddr. */
@@ -1584,6 +1602,8 @@ void dhcpinform (packet, ms_nulltp)
if (subnet)
subnet_dereference (&subnet, MDL);
+
+ TRACE(DHCPD_INFORM_DONE());
}
void nak_lease (packet, cip)
@@ -1600,6 +1620,8 @@ void nak_lease (packet, cip)
struct option_state *options = (struct option_state *)0;
struct option_cache *oc = (struct option_cache *)0;
+ TRACE(DHCPD_NAK_LEASE_START());
+
option_state_allocate (&options, MDL);
memset (&outgoing, 0, sizeof outgoing);
memset (&raw, 0, sizeof raw);
@@ -1764,6 +1786,7 @@ void nak_lease (packet, cip)
packet->interface->name);
}
+ TRACE(DHCPD_NAK_LEASE_DONE());
}
void check_pool_threshold (packet, lease, state)
@@ -1899,6 +1922,8 @@ void ack_lease (packet, lease, offer, wh
if (lease -> state)
return;
+ TRACE(DHCPD_ACK_LEASE_START());
+
/* Save original cltt for comparison later. */
lease_cltt = lease->cltt;
@@ -3340,6 +3365,8 @@ void ack_lease (packet, lease, offer, wh
#endif
dhcp_reply(lease);
}
+
+ TRACE(DHCPD_ACK_LEASE_DONE());
}
/*
@@ -3492,6 +3519,8 @@ void dhcp_reply (lease)
if (!state)
log_fatal ("dhcp_reply was supplied lease with no state!");
+ TRACE(DHCPD_REPLY_START());
+
/* Compose a response for the client... */
memset (&raw, 0, sizeof raw);
memset (&d1, 0, sizeof d1);
@@ -3713,6 +3742,8 @@ void dhcp_reply (lease)
free_lease_state (state, MDL);
lease -> state = (struct lease_state *)0;
+
+ TRACE(DHCPD_REPLY_DONE());
}
int find_lease (struct lease **lp,
@@ -3735,6 +3766,8 @@ int find_lease (struct lease **lp,
struct data_string client_identifier;
struct hardware h;
+ TRACE(DHCPD_FIND_LEASE_START());
+
#if defined(FAILOVER_PROTOCOL)
/* Quick check to see if the peer has leases. */
if (peer_has_leases) {
@@ -4457,6 +4490,9 @@ int find_lease (struct lease **lp,
#if defined (DEBUG_FIND_LEASE)
log_info ("Not returning a lease.");
#endif
+
+ TRACE(DHCPD_FIND_LEASE_DONE());
+
return 0;
}
diff -up dhcp-4.3.1b1/server/dhcpd.c.systemtap dhcp-4.3.1b1/server/dhcpd.c
--- dhcp-4.3.1b1/server/dhcpd.c.systemtap 2014-07-10 18:31:06.006879838 +0200
+++ dhcp-4.3.1b1/server/dhcpd.c 2014-07-10 18:31:06.030879499 +0200
@@ -52,6 +52,8 @@ static const char url [] =
# undef group
#endif /* PARANOIA */
+#include "trace.h"
+
#ifndef UNIT_TEST
static void usage(void);
#endif
@@ -801,6 +803,8 @@ main(int argc, char **argv) {
/* Log that we are about to start working */
log_info("Server starting service.");
+ TRACE(DHCPD_MAIN());
+
/*
* Receive packets and dispatch them...
* dispatch() will never return.
diff -up dhcp-4.3.1b1/server/dhcpv6.c.systemtap dhcp-4.3.1b1/server/dhcpv6.c
--- dhcp-4.3.1b1/server/dhcpv6.c.systemtap 2014-07-10 18:31:05.998879951 +0200
+++ dhcp-4.3.1b1/server/dhcpv6.c 2014-07-10 18:31:06.032879471 +0200
@@ -17,6 +17,7 @@
/*! \file server/dhcpv6.c */
#include "dhcpd.h"
+#include "trace.h"
#ifdef DHCPv6
@@ -4829,6 +4830,8 @@ static void
dhcpv6_solicit(struct data_string *reply_ret, struct packet *packet) {
struct data_string client_id;
+ TRACE(DHCPD_SIX_SOLICIT_START());
+
/*
* Validate our input.
*/
@@ -4842,6 +4845,8 @@ dhcpv6_solicit(struct data_string *reply
* Clean up.
*/
data_string_forget(&client_id, MDL);
+
+ TRACE(DHCPD_SIX_SOLICIT_DONE());
}
/*
@@ -4855,6 +4860,8 @@ dhcpv6_request(struct data_string *reply
struct data_string client_id;
struct data_string server_id;
+ TRACE(DHCPD_SIX_REQUEST_START());
+
/*
* Validate our input.
*/
@@ -4872,6 +4879,8 @@ dhcpv6_request(struct data_string *reply
*/
data_string_forget(&client_id, MDL);
data_string_forget(&server_id, MDL);
+
+ TRACE(DHCPD_SIX_REQUEST_DONE());
}
/* Find a DHCPv6 packet's shared network from hints in the packet.
@@ -4984,6 +4993,8 @@ dhcpv6_confirm(struct data_string *reply
struct dhcpv6_packet *reply = (struct dhcpv6_packet *)reply_data;
int reply_ofs = (int)(offsetof(struct dhcpv6_packet, options));
+ TRACE(DHCPD_SIX_CONFIRM_START());
+
/*
* Basic client message validation.
*/
@@ -5170,6 +5181,8 @@ exit:
option_state_dereference(&cli_enc_opt_state, MDL);
if (opt_state != NULL)
option_state_dereference(&opt_state, MDL);
+
+ TRACE(DHCPD_SIX_CONFIRM_DONE());
}
/*
@@ -5184,6 +5197,8 @@ dhcpv6_renew(struct data_string *reply,
struct data_string client_id;
struct data_string server_id;
+ TRACE(DHCPD_SIX_RENEW_START());
+
/*
* Validate the request.
*/
@@ -5201,6 +5216,8 @@ dhcpv6_renew(struct data_string *reply,
*/
data_string_forget(&server_id, MDL);
data_string_forget(&client_id, MDL);
+
+ TRACE(DHCPD_SIX_RENEW_DONE());
}
/*
@@ -5214,6 +5231,8 @@ static void
dhcpv6_rebind(struct data_string *reply, struct packet *packet) {
struct data_string client_id;
+ TRACE(DHCPD_SIX_REBIND_START());
+
if (!valid_client_msg(packet, &client_id)) {
return;
}
@@ -5221,6 +5240,8 @@ dhcpv6_rebind(struct data_string *reply,
lease_to_client(reply, packet, &client_id, NULL);
data_string_forget(&client_id, MDL);
+
+ TRACE(DHCPD_SIX_REBIND_DONE());
}
static void
@@ -5665,6 +5686,8 @@ dhcpv6_decline(struct data_string *reply
struct data_string client_id;
struct data_string server_id;
+ TRACE(DHCPD_SIX_DECLINE_START());
+
/*
* Validate our input.
*/
@@ -5685,6 +5708,8 @@ dhcpv6_decline(struct data_string *reply
data_string_forget(&server_id, MDL);
data_string_forget(&client_id, MDL);
+
+ TRACE(DHCPD_SIX_DECLINE_DONE());
}
static void
@@ -6133,6 +6158,8 @@ dhcpv6_release(struct data_string *reply
struct data_string client_id;
struct data_string server_id;
+ TRACE(DHCPD_SIX_RELEASE_START());
+
/*
* Validate our input.
*/
@@ -6154,6 +6181,8 @@ dhcpv6_release(struct data_string *reply
data_string_forget(&server_id, MDL);
data_string_forget(&client_id, MDL);
+
+ TRACE(DHCPD_SIX_RELEASE_DONE());
}
/*
@@ -6166,6 +6195,8 @@ dhcpv6_information_request(struct data_s
struct data_string client_id;
struct data_string server_id;
+ TRACE(DHCPD_SIX_INFORMATION_REQUEST_START());
+
/*
* Validate our input.
*/
@@ -6197,6 +6228,8 @@ dhcpv6_information_request(struct data_s
data_string_forget(&client_id, MDL);
}
data_string_forget(&server_id, MDL);
+
+ TRACE(DHCPD_SIX_INFORMATION_REQUEST_DONE());
}
/*
@@ -6225,6 +6258,8 @@ dhcpv6_relay_forw(struct data_string *re
struct dhcpv6_relay_packet *reply;
int reply_ofs;
+ TRACE(DHCPD_SIX_RELAY_FORW_START());
+
/*
* Initialize variables for early exit.
*/
@@ -6484,6 +6519,8 @@ exit:
if (enc_packet != NULL) {
packet_dereference(&enc_packet, MDL);
}
+
+ TRACE(DHCPD_SIX_RELAY_FORW_DONE());
}
static void
diff -up dhcp-4.3.1b1/server/failover.c.systemtap dhcp-4.3.1b1/server/failover.c
--- dhcp-4.3.1b1/server/failover.c.systemtap 2014-07-02 19:58:40.000000000 +0200
+++ dhcp-4.3.1b1/server/failover.c 2014-07-10 18:31:06.034879442 +0200
@@ -30,6 +30,8 @@
#include "dhcpd.h"
#include <omapip/omapip_p.h>
+#include "trace.h"
+
#if defined (FAILOVER_PROTOCOL)
dhcp_failover_state_t *failover_states;
static isc_result_t do_a_failover_option (omapi_object_t *,
@@ -1704,6 +1706,8 @@ isc_result_t dhcp_failover_set_state (dh
struct lease *l;
struct timeval tv;
+ TRACE(DHCPD_FAILOVER_SET_STATE_START(state->me.state, new_state));
+
/* If we're in certain states where we're sending updates, and the peer
* state changes, we need to re-schedule any pending updates just to
* be on the safe side. This results in retransmission.
@@ -1935,6 +1939,8 @@ isc_result_t dhcp_failover_set_state (dh
break;
}
+ TRACE(DHCPD_FAILOVER_SET_STATE_DONE());
+
return ISC_R_SUCCESS;
}
@@ -2423,6 +2429,8 @@ dhcp_failover_pool_dobalance(dhcp_failov
if (state -> me.state != normal)
return 0;
+ TRACE(DHCPD_FAILOVER_POOL_DOBALANCE_START());
+
state->last_balance = cur_time;
for (s = shared_networks ; s ; s = s->next) {
@@ -2583,6 +2591,8 @@ dhcp_failover_pool_dobalance(dhcp_failov
if (leases_queued)
commit_leases();
+ TRACE(DHCPD_FAILOVER_POOL_DOBALANCE_DONE());
+
return leases_queued;
}
diff -up dhcp-4.3.1b1/server/Makefile.am.systemtap dhcp-4.3.1b1/server/Makefile.am
--- dhcp-4.3.1b1/server/Makefile.am.systemtap 2014-07-10 18:31:05.895881408 +0200
+++ dhcp-4.3.1b1/server/Makefile.am 2014-07-10 18:31:06.028879527 +0200
@@ -10,7 +10,7 @@ dist_sysconf_DATA = dhcpd.conf.example @@ -10,7 +10,7 @@ dist_sysconf_DATA = dhcpd.conf.example
sbin_PROGRAMS = dhcpd sbin_PROGRAMS = dhcpd
dhcpd_SOURCES = dhcpd.c dhcp.c bootp.c confpars.c db.c class.c failover.c \ dhcpd_SOURCES = dhcpd.c dhcp.c bootp.c confpars.c db.c class.c failover.c \
@ -83,425 +499,9 @@ diff -up dhcp-4.3.0a1/server/Makefile.am.systemtap dhcp-4.3.0a1/server/Makefile.
+ +
+dhcpd_LDADD += probes.o +dhcpd_LDADD += probes.o
+endif +endif
diff -up dhcp-4.3.0a1/server/dhcp.c.systemtap dhcp-4.3.0a1/server/dhcp.c diff -up dhcp-4.3.1b1/server/probes.d.systemtap dhcp-4.3.1b1/server/probes.d
--- dhcp-4.3.0a1/server/dhcp.c.systemtap 2013-12-20 13:30:26.182644846 +0100 --- dhcp-4.3.1b1/server/probes.d.systemtap 2014-07-10 18:31:06.034879442 +0200
+++ dhcp-4.3.0a1/server/dhcp.c 2013-12-20 13:32:22.909022163 +0100 +++ dhcp-4.3.1b1/server/probes.d 2014-07-10 18:31:06.034879442 +0200
@@ -36,7 +36,7 @@
#include <errno.h>
#include <limits.h>
#include <sys/time.h>
-
+#include "trace.h"
static void commit_leases_ackout(void *foo);
static void maybe_return_agent_options(struct packet *packet,
struct option_state *options);
@@ -275,6 +275,8 @@ void dhcpdiscover (packet, ms_nulltp)
dhcp_failover_state_t *peer;
#endif
+ TRACE(DHCPD_DISCOVER_START());
+
find_lease (&lease, packet, packet -> shared_network,
0, &peer_has_leases, (struct lease *)0, MDL);
@@ -399,6 +401,8 @@ void dhcpdiscover (packet, ms_nulltp)
out:
if (lease)
lease_dereference (&lease, MDL);
+
+ TRACE(DHCPD_DISCOVER_DONE());
}
void dhcprequest (packet, ms_nulltp, ip_lease)
@@ -421,6 +425,8 @@ void dhcprequest (packet, ms_nulltp, ip_
#endif
int have_requested_addr = 0;
+ TRACE(DHCPD_REQUEST_START());
+
oc = lookup_option (&dhcp_universe, packet -> options,
DHO_DHCP_REQUESTED_ADDRESS);
memset (&data, 0, sizeof data);
@@ -700,6 +706,9 @@ void dhcprequest (packet, ms_nulltp, ip_
log_info ("%s: unknown lease %s.", msgbuf, piaddr (cip));
out:
+
+ TRACE(DHCPD_REQUEST_DONE());
+
if (subnet)
subnet_dereference (&subnet, MDL);
if (lease)
@@ -718,6 +727,7 @@ void dhcprelease (packet, ms_nulltp)
const char *s;
char msgbuf [1024], cstr[16]; /* XXX */
+ TRACE(DHCPD_RELEASE_START());
/* DHCPRELEASE must not specify address in requested-address
option, but old protocol specs weren't explicit about this,
@@ -842,6 +852,8 @@ void dhcprelease (packet, ms_nulltp)
#endif
if (lease)
lease_dereference (&lease, MDL);
+
+ TRACE(DHCPD_RELEASE_DONE());
}
void dhcpdecline (packet, ms_nulltp)
@@ -859,6 +871,8 @@ void dhcpdecline (packet, ms_nulltp)
struct option_cache *oc;
struct data_string data;
+ TRACE(DHCPD_DECLINE_START());
+
/* DHCPDECLINE must specify address. */
if (!(oc = lookup_option (&dhcp_universe, packet -> options,
DHO_DHCP_REQUESTED_ADDRESS)))
@@ -967,6 +981,8 @@ void dhcpdecline (packet, ms_nulltp)
option_state_dereference (&options, MDL);
if (lease)
lease_dereference (&lease, MDL);
+
+ TRACE(DHCPD_DECLINE_DONE());
}
void dhcpinform (packet, ms_nulltp)
@@ -994,6 +1010,8 @@ void dhcpinform (packet, ms_nulltp)
int h_w_fixed_addr = 0;
#endif
+ TRACE(DHCPD_INFORM_START());
+
/* The client should set ciaddr to its IP address, but apparently
it's common for clients not to do this, so we'll use their IP
source address if they didn't set ciaddr. */
@@ -1567,6 +1585,8 @@ void dhcpinform (packet, ms_nulltp)
if (subnet)
subnet_dereference (&subnet, MDL);
+
+ TRACE(DHCPD_INFORM_DONE());
}
void nak_lease (packet, cip)
@@ -1583,6 +1603,8 @@ void nak_lease (packet, cip)
struct option_state *options = (struct option_state *)0;
struct option_cache *oc = (struct option_cache *)0;
+ TRACE(DHCPD_NAK_LEASE_START());
+
option_state_allocate (&options, MDL);
memset (&outgoing, 0, sizeof outgoing);
memset (&raw, 0, sizeof raw);
@@ -1749,6 +1771,7 @@ void nak_lease (packet, cip)
packet->interface->name);
}
+ TRACE(DHCPD_NAK_LEASE_DONE());
}
void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp)
@@ -1792,6 +1815,8 @@ void ack_lease (packet, lease, offer, wh
if (lease -> state)
return;
+ TRACE(DHCPD_ACK_LEASE_START());
+
/* Save original cltt for comparison later. */
lease_cltt = lease->cltt;
@@ -3225,6 +3250,8 @@ void ack_lease (packet, lease, offer, wh
#endif
dhcp_reply(lease);
}
+
+ TRACE(DHCPD_ACK_LEASE_DONE());
}
/*
@@ -3377,6 +3404,8 @@ void dhcp_reply (lease)
if (!state)
log_fatal ("dhcp_reply was supplied lease with no state!");
+ TRACE(DHCPD_REPLY_START());
+
/* Compose a response for the client... */
memset (&raw, 0, sizeof raw);
memset (&d1, 0, sizeof d1);
@@ -3598,6 +3627,8 @@ void dhcp_reply (lease)
free_lease_state (state, MDL);
lease -> state = (struct lease_state *)0;
+
+ TRACE(DHCPD_REPLY_DONE());
}
int find_lease (struct lease **lp,
@@ -3620,6 +3651,8 @@ int find_lease (struct lease **lp,
struct data_string client_identifier;
struct hardware h;
+ TRACE(DHCPD_FIND_LEASE_START());
+
#if defined(FAILOVER_PROTOCOL)
/* Quick check to see if the peer has leases. */
if (peer_has_leases) {
@@ -4347,6 +4380,9 @@ int find_lease (struct lease **lp,
#if defined (DEBUG_FIND_LEASE)
log_info ("Not returning a lease.");
#endif
+
+ TRACE(DHCPD_FIND_LEASE_DONE());
+
return 0;
}
diff -up dhcp-4.3.0a1/server/dhcpd.c.systemtap dhcp-4.3.0a1/server/dhcpd.c
--- dhcp-4.3.0a1/server/dhcpd.c.systemtap 2013-12-20 13:30:26.281643471 +0100
+++ dhcp-4.3.0a1/server/dhcpd.c 2013-12-20 13:33:26.013144200 +0100
@@ -58,6 +58,8 @@ static const char url [] =
# undef group
#endif /* PARANOIA */
+#include "trace.h"
+
#ifndef UNIT_TEST
static void usage(void);
#endif
@@ -793,6 +795,8 @@ main(int argc, char **argv) {
/* Log that we are about to start working */
log_info("Server starting service.");
+ TRACE(DHCPD_MAIN());
+
/*
* Receive packets and dispatch them...
* dispatch() will never return.
diff -up dhcp-4.3.0a1/server/dhcpv6.c.systemtap dhcp-4.3.0a1/server/dhcpv6.c
--- dhcp-4.3.0a1/server/dhcpv6.c.systemtap 2013-12-20 13:30:26.272643596 +0100
+++ dhcp-4.3.0a1/server/dhcpv6.c 2013-12-20 13:33:48.296834064 +0100
@@ -17,6 +17,7 @@
/*! \file server/dhcpv6.c */
#include "dhcpd.h"
+#include "trace.h"
#ifdef DHCPv6
@@ -4763,6 +4764,8 @@ static void
dhcpv6_solicit(struct data_string *reply_ret, struct packet *packet) {
struct data_string client_id;
+ TRACE(DHCPD_SIX_SOLICIT_START());
+
/*
* Validate our input.
*/
@@ -4776,6 +4779,8 @@ dhcpv6_solicit(struct data_string *reply
* Clean up.
*/
data_string_forget(&client_id, MDL);
+
+ TRACE(DHCPD_SIX_SOLICIT_DONE());
}
/*
@@ -4789,6 +4794,8 @@ dhcpv6_request(struct data_string *reply
struct data_string client_id;
struct data_string server_id;
+ TRACE(DHCPD_SIX_REQUEST_START());
+
/*
* Validate our input.
*/
@@ -4806,6 +4813,8 @@ dhcpv6_request(struct data_string *reply
*/
data_string_forget(&client_id, MDL);
data_string_forget(&server_id, MDL);
+
+ TRACE(DHCPD_SIX_REQUEST_DONE());
}
/* Find a DHCPv6 packet's shared network from hints in the packet.
@@ -4918,6 +4927,8 @@ dhcpv6_confirm(struct data_string *reply
struct dhcpv6_packet *reply = (struct dhcpv6_packet *)reply_data;
int reply_ofs = (int)(offsetof(struct dhcpv6_packet, options));
+ TRACE(DHCPD_SIX_CONFIRM_START());
+
/*
* Basic client message validation.
*/
@@ -5104,6 +5115,8 @@ exit:
option_state_dereference(&cli_enc_opt_state, MDL);
if (opt_state != NULL)
option_state_dereference(&opt_state, MDL);
+
+ TRACE(DHCPD_SIX_CONFIRM_DONE());
}
/*
@@ -5118,6 +5131,8 @@ dhcpv6_renew(struct data_string *reply,
struct data_string client_id;
struct data_string server_id;
+ TRACE(DHCPD_SIX_RENEW_START());
+
/*
* Validate the request.
*/
@@ -5135,6 +5150,8 @@ dhcpv6_renew(struct data_string *reply,
*/
data_string_forget(&server_id, MDL);
data_string_forget(&client_id, MDL);
+
+ TRACE(DHCPD_SIX_RENEW_DONE());
}
/*
@@ -5148,6 +5165,8 @@ static void
dhcpv6_rebind(struct data_string *reply, struct packet *packet) {
struct data_string client_id;
+ TRACE(DHCPD_SIX_REBIND_START());
+
if (!valid_client_msg(packet, &client_id)) {
return;
}
@@ -5155,6 +5174,8 @@ dhcpv6_rebind(struct data_string *reply,
lease_to_client(reply, packet, &client_id, NULL);
data_string_forget(&client_id, MDL);
+
+ TRACE(DHCPD_SIX_REBIND_DONE());
}
static void
@@ -5599,6 +5620,8 @@ dhcpv6_decline(struct data_string *reply
struct data_string client_id;
struct data_string server_id;
+ TRACE(DHCPD_SIX_DECLINE_START());
+
/*
* Validate our input.
*/
@@ -5619,6 +5642,8 @@ dhcpv6_decline(struct data_string *reply
data_string_forget(&server_id, MDL);
data_string_forget(&client_id, MDL);
+
+ TRACE(DHCPD_SIX_DECLINE_DONE());
}
static void
@@ -6067,6 +6092,8 @@ dhcpv6_release(struct data_string *reply
struct data_string client_id;
struct data_string server_id;
+ TRACE(DHCPD_SIX_RELEASE_START());
+
/*
* Validate our input.
*/
@@ -6088,6 +6115,8 @@ dhcpv6_release(struct data_string *reply
data_string_forget(&server_id, MDL);
data_string_forget(&client_id, MDL);
+
+ TRACE(DHCPD_SIX_RELEASE_DONE());
}
/*
@@ -6100,6 +6129,8 @@ dhcpv6_information_request(struct data_s
struct data_string client_id;
struct data_string server_id;
+ TRACE(DHCPD_SIX_INFORMATION_REQUEST_START());
+
/*
* Validate our input.
*/
@@ -6131,6 +6162,8 @@ dhcpv6_information_request(struct data_s
data_string_forget(&client_id, MDL);
}
data_string_forget(&server_id, MDL);
+
+ TRACE(DHCPD_SIX_INFORMATION_REQUEST_DONE());
}
/*
@@ -6159,6 +6192,8 @@ dhcpv6_relay_forw(struct data_string *re
struct dhcpv6_relay_packet *reply;
int reply_ofs;
+ TRACE(DHCPD_SIX_RELAY_FORW_START());
+
/*
* Initialize variables for early exit.
*/
@@ -6418,6 +6453,8 @@ exit:
if (enc_packet != NULL) {
packet_dereference(&enc_packet, MDL);
}
+
+ TRACE(DHCPD_SIX_RELAY_FORW_DONE());
}
static void
diff -up dhcp-4.3.0a1/server/failover.c.systemtap dhcp-4.3.0a1/server/failover.c
--- dhcp-4.3.0a1/server/failover.c.systemtap 2013-12-11 01:25:12.000000000 +0100
+++ dhcp-4.3.0a1/server/failover.c 2013-12-20 13:30:26.314643012 +0100
@@ -36,6 +36,8 @@
#include "dhcpd.h"
#include <omapip/omapip_p.h>
+#include "trace.h"
+
#if defined (FAILOVER_PROTOCOL)
dhcp_failover_state_t *failover_states;
static isc_result_t do_a_failover_option (omapi_object_t *,
@@ -1710,6 +1712,8 @@ isc_result_t dhcp_failover_set_state (dh
struct lease *l;
struct timeval tv;
+ TRACE(DHCPD_FAILOVER_SET_STATE_START(state->me.state, new_state));
+
/* If we're in certain states where we're sending updates, and the peer
* state changes, we need to re-schedule any pending updates just to
* be on the safe side. This results in retransmission.
@@ -1941,6 +1945,8 @@ isc_result_t dhcp_failover_set_state (dh
break;
}
+ TRACE(DHCPD_FAILOVER_SET_STATE_DONE());
+
return ISC_R_SUCCESS;
}
@@ -2428,6 +2434,8 @@ dhcp_failover_pool_dobalance(dhcp_failov
if (state -> me.state != normal)
return 0;
+ TRACE(DHCPD_FAILOVER_POOL_DOBALANCE_START());
+
state->last_balance = cur_time;
for (s = shared_networks ; s ; s = s->next) {
@@ -2588,6 +2596,8 @@ dhcp_failover_pool_dobalance(dhcp_failov
if (leases_queued)
commit_leases();
+ TRACE(DHCPD_FAILOVER_POOL_DOBALANCE_DONE());
+
return leases_queued;
}
diff -up dhcp-4.3.0a1/server/probes.d.systemtap dhcp-4.3.0a1/server/probes.d
--- dhcp-4.3.0a1/server/probes.d.systemtap 2013-12-20 13:30:26.314643012 +0100
+++ dhcp-4.3.0a1/server/probes.d 2013-12-20 13:30:26.314643012 +0100
@@ -0,0 +1,43 @@ @@ -0,0 +1,43 @@
+provider dhcpd { +provider dhcpd {
+ probe main(); + probe main();
@ -546,9 +546,9 @@ diff -up dhcp-4.3.0a1/server/probes.d.systemtap dhcp-4.3.0a1/server/probes.d
+ probe failover_set_state_start(int, int); + probe failover_set_state_start(int, int);
+ probe failover_set_state_done(); + probe failover_set_state_done();
+}; +};
diff -up dhcp-4.3.0a1/server/tests/Makefile.am.systemtap dhcp-4.3.0a1/server/tests/Makefile.am diff -up dhcp-4.3.1b1/server/tests/Makefile.am.systemtap dhcp-4.3.1b1/server/tests/Makefile.am
--- dhcp-4.3.0a1/server/tests/Makefile.am.systemtap 2013-12-20 13:30:26.315642998 +0100 --- dhcp-4.3.1b1/server/tests/Makefile.am.systemtap 2014-07-10 18:31:05.895881408 +0200
+++ dhcp-4.3.0a1/server/tests/Makefile.am 2013-12-20 13:34:57.263873891 +0100 +++ dhcp-4.3.1b1/server/tests/Makefile.am 2014-07-10 18:31:06.034879442 +0200
@@ -21,6 +21,10 @@ DHCPLIBS = $(top_builddir)/common/libdhc @@ -21,6 +21,10 @@ DHCPLIBS = $(top_builddir)/common/libdhc
$(top_builddir)/dhcpctl/libdhcpctl.la \ $(top_builddir)/dhcpctl/libdhcpctl.la \
$(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export $(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export
@ -560,9 +560,9 @@ diff -up dhcp-4.3.0a1/server/tests/Makefile.am.systemtap dhcp-4.3.0a1/server/tes
ATF_TESTS = ATF_TESTS =
TESTS = TESTS =
if HAVE_ATF if HAVE_ATF
diff -up dhcp-4.3.0a1/server/trace.h.systemtap dhcp-4.3.0a1/server/trace.h diff -up dhcp-4.3.1b1/server/trace.h.systemtap dhcp-4.3.1b1/server/trace.h
--- dhcp-4.3.0a1/server/trace.h.systemtap 2013-12-20 13:30:26.315642998 +0100 --- dhcp-4.3.1b1/server/trace.h.systemtap 2014-07-10 18:31:06.034879442 +0200
+++ dhcp-4.3.0a1/server/trace.h 2013-12-20 13:30:26.315642998 +0100 +++ dhcp-4.3.1b1/server/trace.h 2014-07-10 18:31:06.034879442 +0200
@@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
+// trace.h +// trace.h
+ +
@ -575,39 +575,9 @@ diff -up dhcp-4.3.0a1/server/trace.h.systemtap dhcp-4.3.0a1/server/trace.h
+// Wrap the probe to allow it to be removed when no systemtap available +// Wrap the probe to allow it to be removed when no systemtap available
+#define TRACE(probe) +#define TRACE(probe)
+#endif +#endif
diff -up dhcp-4.3.0a1/tapset/Makefile.am.systemtap dhcp-4.3.0a1/tapset/Makefile.am diff -up dhcp-4.3.1b1/tapset/dhcpd.stp.systemtap dhcp-4.3.1b1/tapset/dhcpd.stp
--- dhcp-4.3.0a1/tapset/Makefile.am.systemtap 2013-12-20 13:30:26.315642998 +0100 --- dhcp-4.3.1b1/tapset/dhcpd.stp.systemtap 2014-07-10 18:31:06.035879428 +0200
+++ dhcp-4.3.0a1/tapset/Makefile.am 2013-12-20 13:30:26.315642998 +0100 +++ dhcp-4.3.1b1/tapset/dhcpd.stp 2014-07-10 18:31:06.035879428 +0200
@@ -0,0 +1,26 @@
+# Makefile.am for dhcp/tapset
+# Jiri Popelka
+
+.PHONY: clean-local install-data-hook uninstall-local
+
+#
+EXTRA_DIST = dhcpd.stp
+TAPSET_FILES = $(EXTRA_DIST)
+TAPSET_INSTALL_DIR = $(DESTDIR)@ABS_TAPSET_DIR@
+
+if ENABLE_SYSTEMTAP
+all-local: $(TAPSET_FILES)
+
+clean-local:
+
+install-data-hook:
+ $(MKDIR_P) $(TAPSET_INSTALL_DIR)
+ $(INSTALL_DATA) $(TAPSET_FILES) $(TAPSET_INSTALL_DIR)
+
+uninstall-local:
+ @list='$(TAPSET_FILES)'; for p in $$list; do \
+ echo " rm -f '$(TAPSET_INSTALL_DIR)/$$p'"; \
+ rm -f "$(TAPSET_INSTALL_DIR)/$$p"; \
+ done
+endif
+
diff -up dhcp-4.3.0a1/tapset/dhcpd.stp.systemtap dhcp-4.3.0a1/tapset/dhcpd.stp
--- dhcp-4.3.0a1/tapset/dhcpd.stp.systemtap 2013-12-20 13:30:26.315642998 +0100
+++ dhcp-4.3.0a1/tapset/dhcpd.stp 2013-12-20 13:30:26.315642998 +0100
@@ -0,0 +1,212 @@ @@ -0,0 +1,212 @@
+/* dhcpd tapset +/* dhcpd tapset
+ Copyright (C) 2011, Red Hat Inc. + Copyright (C) 2011, Red Hat Inc.
@ -821,3 +791,33 @@ diff -up dhcp-4.3.0a1/tapset/dhcpd.stp.systemtap dhcp-4.3.0a1/tapset/dhcpd.stp
+{ +{
+ probestr = sprintf("%s", $$name); + probestr = sprintf("%s", $$name);
+} +}
diff -up dhcp-4.3.1b1/tapset/Makefile.am.systemtap dhcp-4.3.1b1/tapset/Makefile.am
--- dhcp-4.3.1b1/tapset/Makefile.am.systemtap 2014-07-10 18:31:06.035879428 +0200
+++ dhcp-4.3.1b1/tapset/Makefile.am 2014-07-10 18:31:06.034879442 +0200
@@ -0,0 +1,26 @@
+# Makefile.am for dhcp/tapset
+# Jiri Popelka
+
+.PHONY: clean-local install-data-hook uninstall-local
+
+#
+EXTRA_DIST = dhcpd.stp
+TAPSET_FILES = $(EXTRA_DIST)
+TAPSET_INSTALL_DIR = $(DESTDIR)@ABS_TAPSET_DIR@
+
+if ENABLE_SYSTEMTAP
+all-local: $(TAPSET_FILES)
+
+clean-local:
+
+install-data-hook:
+ $(MKDIR_P) $(TAPSET_INSTALL_DIR)
+ $(INSTALL_DATA) $(TAPSET_FILES) $(TAPSET_INSTALL_DIR)
+
+uninstall-local:
+ @list='$(TAPSET_FILES)'; for p in $$list; do \
+ echo " rm -f '$(TAPSET_INSTALL_DIR)/$$p'"; \
+ rm -f "$(TAPSET_INSTALL_DIR)/$$p"; \
+ done
+endif
+

View File

@ -9,16 +9,16 @@
#%%global patchver P2 #%%global patchver P2
#%%global prever rc1 %global prever b1
#%%global VERSION %{version}-%{patchver} #%%global VERSION %{version}-%{patchver}
#%%global VERSION %{version}%{prever} #%%global VERSION %{version}
%global VERSION %{version} %global VERSION %{version}%{prever}
Summary: Dynamic host configuration protocol software Summary: Dynamic host configuration protocol software
Name: dhcp Name: dhcp
Version: 4.3.0 Version: 4.3.1
Release: 15%{?dist} Release: 0.1.%{prever}%{?dist}
# NEVER CHANGE THE EPOCH on this package. The previous maintainer (prior to # NEVER CHANGE THE EPOCH on this package. The previous maintainer (prior to
# dcantrell maintaining the package) made incorrect use of the epoch and # dcantrell maintaining the package) made incorrect use of the epoch and
# that's why it is at 12 now. It should have never been used, but it was. # that's why it is at 12 now. It should have never been used, but it was.
@ -53,10 +53,8 @@ Patch13: dhcp-garbage-chars.patch
Patch14: dhcp-add_timeout_when_NULL.patch Patch14: dhcp-add_timeout_when_NULL.patch
Patch15: dhcp-64_bit_lease_parse.patch Patch15: dhcp-64_bit_lease_parse.patch
Patch16: dhcp-capability.patch Patch16: dhcp-capability.patch
Patch17: dhcp-logpid.patch
Patch18: dhcp-UseMulticast.patch Patch18: dhcp-UseMulticast.patch
Patch19: dhcp-sendDecline.patch Patch19: dhcp-sendDecline.patch
Patch20: dhcp-retransmission.patch
Patch21: dhcp-rfc3442-classless-static-routes.patch Patch21: dhcp-rfc3442-classless-static-routes.patch
Patch22: dhcp-honor-expired.patch Patch22: dhcp-honor-expired.patch
Patch23: dhcp-PPP.patch Patch23: dhcp-PPP.patch
@ -67,15 +65,11 @@ Patch27: dhcp-improved-xid.patch
Patch28: dhcp-gpxe-cid.patch Patch28: dhcp-gpxe-cid.patch
Patch29: dhcp-duidv4.patch Patch29: dhcp-duidv4.patch
Patch30: dhcp-systemtap.patch Patch30: dhcp-systemtap.patch
Patch31: dhcp-dhclient-decline-onetry.patch
Patch33: dhcp-getifaddrs.patch Patch33: dhcp-getifaddrs.patch
Patch34: dhcp-omapi-leak.patch Patch34: dhcp-omapi-leak.patch
Patch35: dhcp-failOverPeer.patch Patch35: dhcp-failOverPeer.patch
Patch36: dhcp-interval.patch Patch36: dhcp-interval.patch
Patch37: dhcp-conflex-do-forward-updates.patch
Patch38: dhcp-dupl-key.patch
Patch39: dhcp-range6.patch Patch39: dhcp-range6.patch
Patch40: dhcp-next-server.patch
Patch41: dhcp-no-subnet-error2info.patch Patch41: dhcp-no-subnet-error2info.patch
Patch42: dhcp-ffff-checksum.patch Patch42: dhcp-ffff-checksum.patch
Patch43: dhcp-sd_notify.patch Patch43: dhcp-sd_notify.patch
@ -252,10 +246,6 @@ rm -rf includes/isc-dhcp
# dhclient (#517649, #546765), dhcpd/dhcrelay (#699713) # dhclient (#517649, #546765), dhcpd/dhcrelay (#699713)
%patch16 -p1 -b .capability %patch16 -p1 -b .capability
# dhclient logs its pid to make troubleshooting NM managed systems
# with multiple dhclients running easier (#546792)
%patch17 -p1 -b .logpid
# Discard unicast Request/Renew/Release/Decline message # Discard unicast Request/Renew/Release/Decline message
# (unless we set unicast option) and respond with Reply # (unless we set unicast option) and respond with Reply
# with UseMulticast Status Code option (#573090) # with UseMulticast Status Code option (#573090)
@ -268,13 +258,6 @@ rm -rf includes/isc-dhcp
# (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #21237]) # (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #21237])
%patch19 -p1 -b .sendDecline %patch19 -p1 -b .sendDecline
# In client initiated message exchanges stop retransmission
# upon reaching the MRD rather than at some point after it (#559153)
# (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #21238])
# It causes RHBZ#1026565 and because we carry it around *only* to silence TAHI
# tests, un-apply it until I find out how to fix it.
#%%patch20 -p1 -b .retransmission
# RFC 3442 - Classless Static Route Option for DHCPv4 (#516325) # RFC 3442 - Classless Static Route Option for DHCPv4 (#516325)
# (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #24572]) # (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #24572])
%patch21 -p1 -b .rfc3442 %patch21 -p1 -b .rfc3442
@ -288,7 +271,6 @@ rm -rf includes/isc-dhcp
%patch23 -p1 -b .PPP %patch23 -p1 -b .PPP
# dhcpd: BEFORE changing of the effective user/group ID: # dhcpd: BEFORE changing of the effective user/group ID:
# - write PID file (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #25806])
# - chown leases file (#866714) # - chown leases file (#866714)
%patch24 -p1 -b .paranoia %patch24 -p1 -b .paranoia
@ -306,11 +288,6 @@ rm -rf includes/isc-dhcp
# http://sourceware.org/systemtap/wiki/SystemTap # http://sourceware.org/systemtap/wiki/SystemTap
%patch30 -p1 -b .systemtap %patch30 -p1 -b .systemtap
# Send DHCPDECLINE and exit(2) when duplicate address was detected and
# dhclient had been started with '-1' (#756759).
# (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #26735])
%patch31 -p1 -b .decline-onetry
# Use getifaddrs() to scan for interfaces on Linux (#449946) # Use getifaddrs() to scan for interfaces on Linux (#449946)
# (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #28761]) # (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #28761])
%patch33 -p1 -b .getifaddrs %patch33 -p1 -b .getifaddrs
@ -327,22 +304,10 @@ rm -rf includes/isc-dhcp
# (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #28038]) # (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #28038])
%patch36 -p1 -b .interval %patch36 -p1 -b .interval
# do-forward-updates statement wasn't recognized (#863646)
# (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #31328])
%patch37 -p1 -b .forward-updates
# multiple key statements in zone definition causes inappropriate error (#873794)
# (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #31892])
%patch38 -p1 -b .dupl-key
# Make sure range6 is correct for subnet6 where it's declared (#902966) # Make sure range6 is correct for subnet6 where it's declared (#902966)
# (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #32453]) # (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #32453])
%patch39 -p1 -b .range6 %patch39 -p1 -b .range6
# Expose next-server DHCPv4 option to dhclient script
# (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #33098])
%patch40 -p1 -b .next-server
# 'No subnet declaration for <iface>' should be info, not error. # 'No subnet declaration for <iface>' should be info, not error.
%patch41 -p1 -b .error2info %patch41 -p1 -b .error2info
@ -390,6 +355,7 @@ CFLAGS="%{optflags} -fno-strict-aliasing" \
--with-ldapcrypto \ --with-ldapcrypto \
--with-libbind=%{_includedir} --with-libbind-libs=%{_libdir} \ --with-libbind=%{_includedir} --with-libbind-libs=%{_libdir} \
--disable-static \ --disable-static \
--enable-log-pid \
%if %sdt %if %sdt
--enable-systemtap \ --enable-systemtap \
--with-tapset-install-dir=%{tapsetdir} \ --with-tapset-install-dir=%{tapsetdir} \
@ -624,6 +590,9 @@ done
%doc doc/html/ %doc doc/html/
%changelog %changelog
* Thu Jul 10 2014 Jiri Popelka <jpopelka@redhat.com> - 12:4.3.1-0.1.b1
- 4.3.1b1
* Thu Jun 12 2014 Filipe Brandenburger <filbranden@google.com> - 12:4.3.0-15 * Thu Jun 12 2014 Filipe Brandenburger <filbranden@google.com> - 12:4.3.0-15
- dhclient-script: fix issue with classless static routes that breaks Fedora 20 on GCE cloud (#1102830) - dhclient-script: fix issue with classless static routes that breaks Fedora 20 on GCE cloud (#1102830)