4.3.1b1
This commit is contained in:
		
							parent
							
								
									6b7e125d8b
								
							
						
					
					
						commit
						7b69e548fb
					
				| @ -1,7 +1,7 @@ | ||||
| diff -up dhcp-4.3.0a1/client/dhc6.c.PPP dhcp-4.3.0a1/client/dhc6.c
 | ||||
| --- dhcp-4.3.0a1/client/dhc6.c.PPP	2013-12-19 16:16:45.925550229 +0100
 | ||||
| +++ dhcp-4.3.0a1/client/dhc6.c	2013-12-19 16:16:45.930550159 +0100
 | ||||
| @@ -5080,7 +5080,8 @@ make_client6_options(struct client_state
 | ||||
| diff -up dhcp-4.3.1b1/client/dhc6.c.mRfpsB dhcp-4.3.1b1/client/dhc6.c
 | ||||
| --- dhcp-4.3.1b1/client/dhc6.c.mRfpsB	2014-07-10 17:48:03.779424870 +0200
 | ||||
| +++ dhcp-4.3.1b1/client/dhc6.c	2014-07-10 17:48:03.795424644 +0200
 | ||||
| @@ -5088,7 +5088,8 @@ make_client6_options(struct client_state
 | ||||
|  	 */ | ||||
|  	if ((oc = lookup_option(&dhcpv6_universe, *op, | ||||
|  				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)) | ||||
|  			log_fatal("Failure assembling a DUID."); | ||||
|   | ||||
| diff -up dhcp-4.3.0a1/client/dhclient.c.PPP dhcp-4.3.0a1/client/dhclient.c
 | ||||
| --- dhcp-4.3.0a1/client/dhclient.c.PPP	2013-12-19 16:16:45.932550131 +0100
 | ||||
| +++ dhcp-4.3.0a1/client/dhclient.c	2013-12-19 16:27:38.334473958 +0100
 | ||||
| @@ -926,8 +926,8 @@ main(int argc, char **argv) {
 | ||||
| diff -up dhcp-4.3.1b1/client/dhclient.c.mRfpsB dhcp-4.3.1b1/client/dhclient.c
 | ||||
| --- dhcp-4.3.1b1/client/dhclient.c.mRfpsB	2014-07-10 17:39:25.853763858 +0200
 | ||||
| +++ dhcp-4.3.1b1/client/dhclient.c	2014-07-10 17:49:49.882925843 +0200
 | ||||
| @@ -948,8 +948,8 @@ main(int argc, char **argv) {
 | ||||
|  			if (default_duid.buffer != NULL) | ||||
|  				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 | ||||
|   * 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) | ||||
|  { | ||||
|  	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) | ||||
|  		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) || | ||||
|  	    (ip->hw_address.hlen > sizeof(ip->hw_address.hbuf))) | ||||
|  		log_fatal("Impossible hardware address length at %s:%d.", MDL); | ||||
| @@ -3272,6 +3281,8 @@ form_duid(struct data_string *duid, cons
 | ||||
|  		memcpy(duid->buffer->data + 4, ip->hw_address.hbuf + 1, | ||||
|  		       ip->hw_address.hlen - 1); | ||||
| @@ -3323,6 +3332,8 @@ form_duid(struct data_string *duid, cons
 | ||||
|  		log_info("Created duid %s.", str); | ||||
|  		dfree(str, MDL); | ||||
|  	} | ||||
| +	
 | ||||
| +	return ISC_R_SUCCESS;
 | ||||
|  } | ||||
|   | ||||
|  /* 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
 | ||||
| --- dhcp-4.3.0a1/common/bpf.c.PPP	2013-12-19 16:16:45.868551024 +0100
 | ||||
| +++ dhcp-4.3.0a1/common/bpf.c	2013-12-19 16:16:45.934550103 +0100
 | ||||
| @@ -602,6 +602,22 @@ get_hw_addr(const char *name, struct har
 | ||||
| diff -up dhcp-4.3.1b1/common/bpf.c.mRfpsB dhcp-4.3.1b1/common/bpf.c
 | ||||
| --- dhcp-4.3.1b1/common/bpf.c.mRfpsB	2014-07-10 17:39:25.797764653 +0200
 | ||||
| +++ dhcp-4.3.1b1/common/bpf.c	2014-07-10 17:48:03.797424616 +0200
 | ||||
| @@ -600,6 +600,22 @@ get_hw_addr(const char *name, struct har
 | ||||
|                          memcpy(&hw->hbuf[1], LLADDR(sa), sa->sdl_alen); | ||||
|                          break; | ||||
|  #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: | ||||
|                          log_fatal("Unsupported device type %d for \"%s\"", | ||||
|                                    sa->sdl_type, name); | ||||
| diff -up dhcp-4.3.0a1/common/lpf.c.PPP dhcp-4.3.0a1/common/lpf.c
 | ||||
| --- dhcp-4.3.0a1/common/lpf.c.PPP	2013-12-19 16:16:45.848551303 +0100
 | ||||
| +++ dhcp-4.3.0a1/common/lpf.c	2013-12-19 16:16:45.934550103 +0100
 | ||||
| diff -up dhcp-4.3.1b1/common/lpf.c.mRfpsB dhcp-4.3.1b1/common/lpf.c
 | ||||
| --- dhcp-4.3.1b1/common/lpf.c.mRfpsB	2014-07-10 17:39:25.744765404 +0200
 | ||||
| +++ 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
 | ||||
|  			hw->hbuf[0] = HTYPE_FDDI; | ||||
|  			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: | ||||
|  			log_fatal("Unsupported device type %ld for \"%s\"", | ||||
|  				  (long int)sa->sa_family, name); | ||||
| diff -up dhcp-4.3.0a1/includes/dhcp.h.PPP dhcp-4.3.0a1/includes/dhcp.h
 | ||||
| --- dhcp-4.3.0a1/includes/dhcp.h.PPP	2013-12-19 16:16:45.919550313 +0100
 | ||||
| +++ dhcp-4.3.0a1/includes/dhcp.h	2013-12-19 16:16:45.936550076 +0100
 | ||||
| @@ -85,6 +85,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.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
 | ||||
| diff -up dhcp-4.3.1b1/includes/dhcpd.h.mRfpsB dhcp-4.3.1b1/includes/dhcpd.h
 | ||||
| --- dhcp-4.3.1b1/includes/dhcpd.h.mRfpsB	2014-07-10 17:48:03.761425124 +0200
 | ||||
| +++ dhcp-4.3.1b1/includes/dhcpd.h	2014-07-10 17:48:03.798424601 +0200
 | ||||
| @@ -2839,7 +2839,7 @@ void client_dns_remove(struct client_sta
 | ||||
|   | ||||
|  void dhcpv4_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 */ | ||||
|  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
 | ||||
| --- dhcp-4.3.0a1/server/dhcpv6.c.PPP	2013-12-19 16:16:45.901550564 +0100
 | ||||
| +++ dhcp-4.3.0a1/server/dhcpv6.c	2013-12-19 16:16:45.937550062 +0100
 | ||||
| @@ -307,6 +307,9 @@ generate_new_server_duid(void) {
 | ||||
| diff -up dhcp-4.3.1b1/includes/dhcp.h.mRfpsB dhcp-4.3.1b1/includes/dhcp.h
 | ||||
| --- dhcp-4.3.1b1/includes/dhcp.h.mRfpsB	2014-07-10 17:48:03.761425124 +0200
 | ||||
| +++ dhcp-4.3.1b1/includes/dhcp.h	2014-07-10 17:48:03.798424601 +0200
 | ||||
| @@ -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) { | ||||
|  			break; | ||||
|  		} | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| diff -up dhcp-4.3.0a1/server/dhcpv6.c.UseMulticast dhcp-4.3.0a1/server/dhcpv6.c
 | ||||
| --- dhcp-4.3.0a1/server/dhcpv6.c.UseMulticast	2013-12-11 01:25:12.000000000 +0100
 | ||||
| +++ dhcp-4.3.0a1/server/dhcpv6.c	2013-12-19 15:54:46.934932371 +0100
 | ||||
| @@ -353,6 +353,48 @@ generate_new_server_duid(void) {
 | ||||
| diff -up dhcp-4.3.1b1/server/dhcpv6.c.UseMulticast dhcp-4.3.1b1/server/dhcpv6.c
 | ||||
| --- dhcp-4.3.1b1/server/dhcpv6.c.UseMulticast	2014-07-02 19:58:40.000000000 +0200
 | ||||
| +++ dhcp-4.3.1b1/server/dhcpv6.c	2014-07-10 18:20:03.066256219 +0200
 | ||||
| @@ -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. | ||||
|   */ | ||||
|  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); | ||||
|  	} | ||||
|   | ||||
| @ -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): | ||||
|  	 * | ||||
| @@ -1523,8 +1615,8 @@ 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
 | ||||
| @@ -1619,6 +1717,7 @@ lease_to_client(struct data_string *repl
 | ||||
|  	 * Having stored the client's IA's, store any options that | ||||
|  	 * 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, | ||||
|  				       sizeof(reply.buf) - reply.cursor, | ||||
|  				       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. | ||||
|   */ | ||||
|   | ||||
| @ -134,7 +136,7 @@ diff -up dhcp-4.3.0a1/server/dhcpv6.c.UseMulticast dhcp-4.3.0a1/server/dhcpv6.c | ||||
|  static void | ||||
|  dhcpv6_request(struct data_string *reply_ret, struct packet *packet) { | ||||
|  	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. | ||||
|   */ | ||||
|   | ||||
| @ -142,7 +144,7 @@ diff -up dhcp-4.3.0a1/server/dhcpv6.c.UseMulticast dhcp-4.3.0a1/server/dhcpv6.c | ||||
|  static void | ||||
|  dhcpv6_renew(struct data_string *reply, struct packet *packet) { | ||||
|  	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; | ||||
|  	} | ||||
|   | ||||
| @ -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 | ||||
| @@ -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. | ||||
|  	 */ | ||||
| @ -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->buffer = NULL; | ||||
|  	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. | ||||
|   */ | ||||
|   | ||||
| @ -229,7 +231,7 @@ diff -up dhcp-4.3.0a1/server/dhcpv6.c.UseMulticast dhcp-4.3.0a1/server/dhcpv6.c | ||||
|  /* TODO: IA_TA */ | ||||
|  static void | ||||
|  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. | ||||
|   */ | ||||
|   | ||||
|  | ||||
| @ -1,39 +1,7 @@ | ||||
| diff -up dhcp-4.3.0a1/client/Makefile.am.capability dhcp-4.3.0a1/client/Makefile.am
 | ||||
| --- dhcp-4.3.0a1/client/Makefile.am.capability	2013-12-19 16:15:26.549657115 +0100
 | ||||
| +++ dhcp-4.3.0a1/client/Makefile.am	2013-12-19 16:16:04.126133091 +0100
 | ||||
| @@ -4,7 +4,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.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
 | ||||
| diff -up dhcp-4.3.1b1/client/dhclient.8.zzftXp dhcp-4.3.1b1/client/dhclient.8
 | ||||
| --- dhcp-4.3.1b1/client/dhclient.8.zzftXp	2014-07-10 17:38:26.938599402 +0200
 | ||||
| +++ dhcp-4.3.1b1/client/dhclient.8	2014-07-10 17:39:25.852763873 +0200
 | ||||
| @@ -128,6 +128,9 @@ dhclient - Dynamic Host Configuration Pr
 | ||||
|  .B -w | ||||
|  ] | ||||
|  [ | ||||
| @ -43,7 +11,7 @@ diff -up dhcp-4.3.0a1/client/dhclient.8.capability dhcp-4.3.0a1/client/dhclient. | ||||
|  .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. | ||||
|   | ||||
|  .TP | ||||
| @ -76,9 +44,9 @@ diff -up dhcp-4.3.0a1/client/dhclient.8.capability dhcp-4.3.0a1/client/dhclient. | ||||
|  .BI \-B | ||||
|  Set the BOOTP broadcast flag in request packets so servers will always | ||||
|  broadcast replies. | ||||
| diff -up dhcp-4.3.0a1/client/dhclient.c.capability dhcp-4.3.0a1/client/dhclient.c
 | ||||
| --- dhcp-4.3.0a1/client/dhclient.c.capability	2013-12-19 16:15:26.532657352 +0100
 | ||||
| +++ dhcp-4.3.0a1/client/dhclient.c	2013-12-19 16:15:26.551657087 +0100
 | ||||
| diff -up dhcp-4.3.1b1/client/dhclient.c.zzftXp dhcp-4.3.1b1/client/dhclient.c
 | ||||
| --- dhcp-4.3.1b1/client/dhclient.c.zzftXp	2014-07-10 17:39:25.797764653 +0200
 | ||||
| +++ dhcp-4.3.1b1/client/dhclient.c	2014-07-10 17:39:25.853763858 +0200
 | ||||
| @@ -39,6 +39,10 @@
 | ||||
|  #include <limits.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 | ||||
|   * 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; | ||||
|  	char *arg_conf = NULL; | ||||
|  	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. */ | ||||
|  	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]; | ||||
| @ -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] == '-') { | ||||
|  		    usage(); | ||||
|  		} 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; | ||||
|  	} | ||||
|   | ||||
| @ -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. */ | ||||
|  	initialize_common_option_spaces(); | ||||
|   | ||||
| diff -up dhcp-4.3.0a1/configure.ac.capability dhcp-4.3.0a1/configure.ac
 | ||||
| --- dhcp-4.3.0a1/configure.ac.capability	2013-12-19 16:15:26.475658147 +0100
 | ||||
| +++ dhcp-4.3.0a1/configure.ac	2013-12-19 16:15:26.552657074 +0100
 | ||||
| @@ -489,6 +489,41 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
 | ||||
| diff -up dhcp-4.3.1b1/client/dhclient-script.8.zzftXp dhcp-4.3.1b1/client/dhclient-script.8
 | ||||
| --- dhcp-4.3.1b1/client/dhclient-script.8.zzftXp	2014-07-10 17:39:25.761765163 +0200
 | ||||
| +++ dhcp-4.3.1b1/client/dhclient-script.8	2014-07-10 17:39:25.851763887 +0200
 | ||||
| @@ -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. | ||||
|  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 | ||||
|  AC_SEARCH_LIBS(socket, [socket]) | ||||
|  AC_SEARCH_LIBS(inet_ntoa, [nsl]) | ||||
| diff -up dhcp-4.3.0a1/relay/Makefile.am.capability dhcp-4.3.0a1/relay/Makefile.am
 | ||||
| --- dhcp-4.3.0a1/relay/Makefile.am.capability	2013-12-19 16:15:26.552657074 +0100
 | ||||
| +++ dhcp-4.3.0a1/relay/Makefile.am	2013-12-19 16:16:26.159825841 +0100
 | ||||
| @@ -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) | ||||
| 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 @@
 | ||||
| diff -up dhcp-4.3.1b1/relay/dhcrelay.c.zzftXp dhcp-4.3.1b1/relay/dhcrelay.c
 | ||||
| --- dhcp-4.3.1b1/relay/dhcrelay.c.zzftXp	2014-07-10 17:39:25.799764624 +0200
 | ||||
| +++ dhcp-4.3.1b1/relay/dhcrelay.c	2014-07-10 17:40:19.191007421 +0200
 | ||||
| @@ -31,6 +31,11 @@
 | ||||
|  #include <signal.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 max_lease_time = 86400; /* 24 hours... */ | ||||
|  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(); | ||||
|  			dhcrelay_sub_id = argv[i]; | ||||
|  #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")) { | ||||
|  			if (++i == argc) | ||||
|  				usage(); | ||||
| @@ -452,6 +461,17 @@ main(int argc, char **argv) {
 | ||||
| @@ -446,6 +455,17 @@ main(int argc, char **argv) {
 | ||||
|  #endif | ||||
|  	} | ||||
|   | ||||
| @ -232,9 +220,9 @@ diff -up dhcp-4.3.0a1/relay/dhcrelay.c.capability dhcp-4.3.0a1/relay/dhcrelay.c | ||||
|  	if (!quiet) { | ||||
|  		log_info("%s %s", message, PACKAGE_VERSION); | ||||
|  		log_info(copyright); | ||||
| @@ -601,6 +621,15 @@ main(int argc, char **argv) {
 | ||||
|  	signal(SIGINT, dhcp_signal_handler);   /* control-c */ | ||||
| @@ -598,6 +618,15 @@ main(int argc, char **argv) {
 | ||||
|  	signal(SIGTERM, dhcp_signal_handler);  /* kill */ | ||||
|  #endif | ||||
|   | ||||
| +#ifdef HAVE_LIBCAP_NG
 | ||||
| +	/* 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... */ | ||||
|  	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) | ||||
|  | ||||
| @ -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; | ||||
| @ -1,7 +1,7 @@ | ||||
| diff -up dhcp-4.3.0a1/client/dhclient.c.backoff dhcp-4.3.0a1/client/dhclient.c
 | ||||
| --- dhcp-4.3.0a1/client/dhclient.c.backoff	2013-12-19 15:11:11.310534716 +0100
 | ||||
| +++ dhcp-4.3.0a1/client/dhclient.c	2013-12-19 15:11:11.315534646 +0100
 | ||||
| @@ -1250,6 +1250,8 @@ void state_init (cpp)
 | ||||
| diff -up dhcp-4.3.1b1/client/dhclient.c.JwFUZj dhcp-4.3.1b1/client/dhclient.c
 | ||||
| --- dhcp-4.3.1b1/client/dhclient.c.JwFUZj	2014-07-10 17:38:50.511265091 +0200
 | ||||
| +++ dhcp-4.3.1b1/client/dhclient.c	2014-07-10 17:39:16.164901267 +0200
 | ||||
| @@ -1281,6 +1281,8 @@ void state_init (cpp)
 | ||||
|  	void *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); | ||||
|   | ||||
| @@ -1262,9 +1264,18 @@ void state_init (cpp)
 | ||||
| @@ -1293,9 +1295,18 @@ void state_init (cpp)
 | ||||
|  	client -> first_sending = cur_time; | ||||
|  	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)
 | ||||
|  		send_decline (client); | ||||
|  		destroy_client_lease (client -> new); | ||||
|  		client -> new = (struct client_lease *)0; | ||||
| +		client -> state = S_DECLINED;
 | ||||
|  		state_init (client); | ||||
|  		return; | ||||
|  	} | ||||
| @@ -4001,6 +4013,7 @@ void client_location_changed ()
 | ||||
| @@ -1592,6 +1603,7 @@ void bind_lease (client)
 | ||||
|  					 "try (declined).  Exiting."); | ||||
|  			exit(2); | ||||
|  		} else { | ||||
| +			client -> state = S_DECLINED;
 | ||||
|  			state_init(client); | ||||
|  			return; | ||||
|  		} | ||||
| @@ -4059,6 +4071,7 @@ void client_location_changed ()
 | ||||
|  			      case S_INIT: | ||||
|  			      case S_REBINDING: | ||||
|  			      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; | ||||
|  			} | ||||
|  			client -> state = S_INIT; | ||||
| diff -up dhcp-4.3.0a1/includes/dhcpd.h.backoff dhcp-4.3.0a1/includes/dhcpd.h
 | ||||
| --- dhcp-4.3.0a1/includes/dhcpd.h.backoff	2013-12-19 15:11:11.305534786 +0100
 | ||||
| +++ dhcp-4.3.0a1/includes/dhcpd.h	2013-12-19 15:11:11.316534632 +0100
 | ||||
| @@ -1088,7 +1088,8 @@ enum dhcp_state {
 | ||||
| diff -up dhcp-4.3.1b1/includes/dhcpd.h.JwFUZj dhcp-4.3.1b1/includes/dhcpd.h
 | ||||
| --- dhcp-4.3.1b1/includes/dhcpd.h.JwFUZj	2014-07-10 17:38:26.941599360 +0200
 | ||||
| +++ dhcp-4.3.1b1/includes/dhcpd.h	2014-07-10 17:38:50.526264878 +0200
 | ||||
| @@ -1087,7 +1087,8 @@ enum dhcp_state {
 | ||||
|  	S_BOUND = 5, | ||||
|  	S_RENEWING = 6, | ||||
|  	S_REBINDING = 7, | ||||
|  | ||||
| @ -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. */ | ||||
| @ -1,7 +1,7 @@ | ||||
| diff -up dhcp-4.3.0a1/client/clparse.c.options dhcp-4.3.0a1/client/clparse.c
 | ||||
| --- dhcp-4.3.0a1/client/clparse.c.options	2013-12-11 01:25:12.000000000 +0100
 | ||||
| +++ dhcp-4.3.0a1/client/clparse.c	2013-12-19 14:50:15.011193031 +0100
 | ||||
| @@ -154,6 +154,7 @@ isc_result_t read_client_conf ()
 | ||||
| diff -up dhcp-4.3.1b1/client/clparse.c.fLPqYB dhcp-4.3.1b1/client/clparse.c
 | ||||
| --- dhcp-4.3.1b1/client/clparse.c.fLPqYB	2014-07-02 19:58:38.000000000 +0200
 | ||||
| +++ dhcp-4.3.1b1/client/clparse.c	2014-07-10 17:38:26.938599402 +0200
 | ||||
| @@ -148,6 +148,7 @@ isc_result_t read_client_conf ()
 | ||||
|  	/* Requested lease time, used by DHCPv6 (DHCPv4 uses the option cache) | ||||
|  	 */ | ||||
|  	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); | ||||
|  	if (!top_level_config.on_receipt) | ||||
| @@ -320,7 +321,8 @@ void read_client_leases ()
 | ||||
| @@ -353,7 +354,8 @@ void read_client_leases ()
 | ||||
|  	interface-declaration | | ||||
|  	LEASE 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) | ||||
|  	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); | ||||
|  		return; | ||||
|   | ||||
| @ -32,10 +32,10 @@ diff -up dhcp-4.3.0a1/client/clparse.c.options dhcp-4.3.0a1/client/clparse.c | ||||
|  	      default: | ||||
|  		lose = 0; | ||||
|  		stmt = (struct executable_statement *)0; | ||||
| diff -up dhcp-4.3.0a1/client/dhclient.8.options dhcp-4.3.0a1/client/dhclient.8
 | ||||
| --- dhcp-4.3.0a1/client/dhclient.8.options	2013-12-11 01:25:12.000000000 +0100
 | ||||
| +++ dhcp-4.3.0a1/client/dhclient.8	2013-12-19 14:50:15.010193045 +0100
 | ||||
| @@ -124,6 +124,33 @@ dhclient - Dynamic Host Configuration Pr
 | ||||
| diff -up dhcp-4.3.1b1/client/dhclient.8.fLPqYB dhcp-4.3.1b1/client/dhclient.8
 | ||||
| --- dhcp-4.3.1b1/client/dhclient.8.fLPqYB	2014-07-02 19:58:38.000000000 +0200
 | ||||
| +++ dhcp-4.3.1b1/client/dhclient.8	2014-07-10 17:38:26.938599402 +0200
 | ||||
| @@ -128,6 +128,33 @@ dhclient - Dynamic Host Configuration Pr
 | ||||
|  .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 | ||||
|  ] | ||||
|  [ | ||||
| @@ -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 | ||||
|  has been added or removed, so that the client can attempt to configure an IP | ||||
|  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 | ||||
|  .BI \-n | ||||
|  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
 | ||||
| --- dhcp-4.3.0a1/client/dhclient.c.options	2013-12-13 22:24:38.000000000 +0100
 | ||||
| +++ dhcp-4.3.0a1/client/dhclient.c	2013-12-19 14:50:15.012193017 +0100
 | ||||
| diff -up dhcp-4.3.1b1/client/dhclient.c.fLPqYB dhcp-4.3.1b1/client/dhclient.c
 | ||||
| --- dhcp-4.3.1b1/client/dhclient.c.fLPqYB	2014-07-02 19:58:38.000000000 +0200
 | ||||
| +++ dhcp-4.3.1b1/client/dhclient.c	2014-07-10 17:38:44.520350055 +0200
 | ||||
| @@ -39,6 +39,12 @@
 | ||||
|  #include <limits.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 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_pd = 0; | ||||
|  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); | ||||
|   | ||||
| @@ -123,6 +132,15 @@ main(int argc, char **argv) {
 | ||||
| @@ -125,6 +134,15 @@ main(int argc, char **argv) {
 | ||||
|  	int local_family_set = 0; | ||||
|  #endif /* DHCPv6 */ | ||||
|  	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. */ | ||||
|  	memset(&default_duid, 0, sizeof(default_duid)); | ||||
| @@ -313,6 +331,88 @@ main(int argc, char **argv) {
 | ||||
|  		} else if (!strcmp(argv[i], "--version")) { | ||||
|  			log_info("isc-dhclient-%s", PACKAGE_VERSION); | ||||
| @@ -325,6 +343,88 @@ main(int argc, char **argv) {
 | ||||
|  					 strlen(PACKAGE_VERSION))); | ||||
|  			IGNORE_RET(write(STDERR_FILENO, "\n", 1)); | ||||
|  			exit(0); | ||||
| +		} else if (!strcmp(argv[i], "-C")) {
 | ||||
| +			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] == '-') { | ||||
|  		    usage(); | ||||
|  		} 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. */ | ||||
|  	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. */ | ||||
|  	read_client_leases(); | ||||
|   | ||||
| @@ -730,6 +980,10 @@ static void usage()
 | ||||
|  		  "                [-s server-addr] [-cf config-file] " | ||||
|  		  "[-lf lease-file]\n" | ||||
| @@ -756,6 +1006,10 @@ static void usage()
 | ||||
|  		  "                [-s server-addr] [-cf config-file]\n" | ||||
|  		  "                [-df duid-file] [-lf lease-file]\n" | ||||
|  		  "                [-pf pid-file] [--no-pid] [-e VAR=val]\n" | ||||
| +		  "                [-C <dhcp-client-identifier>] [-B]\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]"); | ||||
|  } | ||||
|   | ||||
| @@ -2489,7 +2743,8 @@ void make_discover (client, lease)
 | ||||
| @@ -2531,7 +2785,8 @@ void make_discover (client, lease)
 | ||||
|  	client -> packet.xid = random (); | ||||
|  	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; | ||||
|  	else | ||||
|  		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 { | ||||
|  		memset (&client -> packet.ciaddr, 0, | ||||
|  			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; | ||||
|  		else | ||||
|  			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.xid = client -> xid; | ||||
|  	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; | ||||
|  	else | ||||
|  		client -> packet.flags = htons (BOOTP_BROADCAST); | ||||
| diff -up dhcp-4.3.0a1/common/conflex.c.options dhcp-4.3.0a1/common/conflex.c
 | ||||
| --- dhcp-4.3.0a1/common/conflex.c.options	2013-12-11 01:25:12.000000000 +0100
 | ||||
| +++ dhcp-4.3.0a1/common/conflex.c	2013-12-19 14:50:15.013193003 +0100
 | ||||
| @@ -817,6 +817,8 @@ intern(char *atom, enum dhcp_token dfv)
 | ||||
| diff -up dhcp-4.3.1b1/common/conflex.c.fLPqYB dhcp-4.3.1b1/common/conflex.c
 | ||||
| --- dhcp-4.3.1b1/common/conflex.c.fLPqYB	2014-07-02 19:58:38.000000000 +0200
 | ||||
| +++ dhcp-4.3.1b1/common/conflex.c	2014-07-10 17:38:26.940599374 +0200
 | ||||
| @@ -811,6 +811,8 @@ intern(char *atom, enum dhcp_token dfv)
 | ||||
|  			return BALANCE; | ||||
|  		if (!strcasecmp (atom + 1, "ound")) | ||||
|  			return BOUND; | ||||
| @ -481,10 +481,10 @@ diff -up dhcp-4.3.0a1/common/conflex.c.options dhcp-4.3.0a1/common/conflex.c | ||||
|  		break; | ||||
|  	      case 'c': | ||||
|  		if (!strcasecmp(atom + 1, "ase")) | ||||
| diff -up dhcp-4.3.0a1/includes/dhcpd.h.options dhcp-4.3.0a1/includes/dhcpd.h
 | ||||
| --- dhcp-4.3.0a1/includes/dhcpd.h.options	2013-12-13 21:49:44.000000000 +0100
 | ||||
| +++ dhcp-4.3.0a1/includes/dhcpd.h	2013-12-19 14:50:15.014192989 +0100
 | ||||
| @@ -1153,6 +1153,9 @@ struct client_config {
 | ||||
| diff -up dhcp-4.3.1b1/includes/dhcpd.h.fLPqYB dhcp-4.3.1b1/includes/dhcpd.h
 | ||||
| --- dhcp-4.3.1b1/includes/dhcpd.h.fLPqYB	2014-07-02 19:58:39.000000000 +0200
 | ||||
| +++ dhcp-4.3.1b1/includes/dhcpd.h	2014-07-10 17:38:26.941599360 +0200
 | ||||
| @@ -1152,6 +1152,9 @@ struct client_config {
 | ||||
|  	int do_forward_update;		/* If nonzero, and if we have the | ||||
|  					   information we need, update the | ||||
|  					   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... */ | ||||
| diff -up dhcp-4.3.0a1/includes/dhctoken.h.options dhcp-4.3.0a1/includes/dhctoken.h
 | ||||
| --- dhcp-4.3.0a1/includes/dhctoken.h.options	2013-12-19 14:50:15.014192989 +0100
 | ||||
| +++ dhcp-4.3.0a1/includes/dhctoken.h	2013-12-19 14:51:57.472758577 +0100
 | ||||
| @@ -373,7 +373,8 @@ enum dhcp_token {
 | ||||
| diff -up dhcp-4.3.1b1/includes/dhctoken.h.fLPqYB dhcp-4.3.1b1/includes/dhctoken.h
 | ||||
| --- dhcp-4.3.1b1/includes/dhctoken.h.fLPqYB	2014-07-02 19:58:39.000000000 +0200
 | ||||
| +++ dhcp-4.3.1b1/includes/dhctoken.h	2014-07-10 17:38:26.942599346 +0200
 | ||||
| @@ -367,7 +367,8 @@ enum dhcp_token {
 | ||||
|  	TOKEN_INFINIBAND = 668, | ||||
|  	POOL6 = 669, | ||||
|  	V6RELAY = 670, | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| diff -up dhcp-4.3.0/client/dhclient.8.duidv4 dhcp-4.3.0/client/dhclient.8
 | ||||
| --- dhcp-4.3.0/client/dhclient.8.duidv4	2014-02-18 15:52:44.564123664 +0100
 | ||||
| +++ dhcp-4.3.0/client/dhclient.8	2014-02-18 15:52:44.629122766 +0100
 | ||||
| @@ -454,6 +454,9 @@ used to construct a RFC4361 style client
 | ||||
| diff -up dhcp-4.3.1b1/client/dhclient.8.KrJcIv dhcp-4.3.1b1/client/dhclient.8
 | ||||
| --- dhcp-4.3.1b1/client/dhclient.8.KrJcIv	2014-07-10 17:39:25.852763873 +0200
 | ||||
| +++ dhcp-4.3.1b1/client/dhclient.8	2014-07-10 17:54:26.841012988 +0200
 | ||||
| @@ -458,6 +458,9 @@ used to construct a RFC4361 style client
 | ||||
|  in the client's messages.  This client id can be overridden by | ||||
|  setting a client id in the configuration file.  Overridding the | ||||
|  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 | ||||
|  .BI \-I | ||||
|  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
 | ||||
| --- dhcp-4.3.0/client/dhclient.c.duidv4	2014-02-18 15:52:44.626122807 +0100
 | ||||
| +++ dhcp-4.3.0/client/dhclient.c	2014-02-18 15:52:44.630122752 +0100
 | ||||
| @@ -72,7 +72,7 @@ struct sockaddr_in sockaddr_broadcast;
 | ||||
| diff -up dhcp-4.3.1b1/client/dhclient.c.KrJcIv dhcp-4.3.1b1/client/dhclient.c
 | ||||
| --- dhcp-4.3.1b1/client/dhclient.c.KrJcIv	2014-07-10 17:54:26.829013157 +0200
 | ||||
| +++ dhcp-4.3.1b1/client/dhclient.c	2014-07-10 17:55:50.155835918 +0200
 | ||||
| @@ -73,7 +73,7 @@ struct sockaddr_in sockaddr_broadcast;
 | ||||
|  struct in_addr giaddr; | ||||
|  struct data_string default_duid; | ||||
|  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; | ||||
|   | ||||
|  /* 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 */ | ||||
| @ -32,15 +32,15 @@ diff -up dhcp-4.3.0/client/dhclient.c.duidv4 dhcp-4.3.0/client/dhclient.c | ||||
|  } | ||||
|   | ||||
|  /* 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; | ||||
|  	int len; | ||||
|  	char *str; | ||||
| +	unsigned hlen;
 | ||||
|   | ||||
|  	/* For now, just use the first interface on the list. */ | ||||
|  	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) | ||||
|  		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 '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 | ||||
|  	 * 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) | ||||
|  		len += 4; | ||||
|  	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]); | ||||
|  		putULong(duid->buffer->data + 4, cur_time - DUID_TIME_EPOCH); | ||||
|  		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);
 | ||||
| +		       hlen - 1);
 | ||||
|  	} | ||||
|  	 | ||||
|  	return ISC_R_SUCCESS; | ||||
|   | ||||
|  	str = quotify_buf(duid->data, duid->len, MDL); | ||||
|  | ||||
| @ -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); | ||||
| @ -1,7 +1,7 @@ | ||||
| diff -up dhcp-4.3.0a1/common/discover.c.getifaddrs dhcp-4.3.0a1/common/discover.c
 | ||||
| --- dhcp-4.3.0a1/common/discover.c.getifaddrs	2013-12-11 01:25:12.000000000 +0100
 | ||||
| +++ dhcp-4.3.0a1/common/discover.c	2013-12-20 13:38:59.995493253 +0100
 | ||||
| @@ -376,391 +376,13 @@ end_iface_scan(struct iface_conf_list *i
 | ||||
| diff -up dhcp-4.3.1b1/common/discover.c.AyFwkY dhcp-4.3.1b1/common/discover.c
 | ||||
| --- dhcp-4.3.1b1/common/discover.c.AyFwkY	2014-07-02 19:58:38.000000000 +0200
 | ||||
| +++ dhcp-4.3.1b1/common/discover.c	2014-07-10 17:58:21.588696480 +0200
 | ||||
| @@ -373,391 +373,13 @@ end_iface_scan(struct iface_conf_list *i
 | ||||
|  	ifaces->sock = -1; | ||||
|  } | ||||
|   | ||||
| @ -43,7 +43,7 @@ diff -up dhcp-4.3.0a1/common/discover.c.getifaddrs dhcp-4.3.0a1/common/discover. | ||||
| - */
 | ||||
| -int 
 | ||||
| -begin_iface_scan(struct iface_conf_list *ifaces) {
 | ||||
| -	char buf[256];
 | ||||
| -	char buf[IF_LINE_LENGTH];
 | ||||
| -	int len;
 | ||||
| -	int i;
 | ||||
| -
 | ||||
| @ -116,7 +116,7 @@ diff -up dhcp-4.3.0a1/common/discover.c.getifaddrs dhcp-4.3.0a1/common/discover. | ||||
| - */
 | ||||
| -static int
 | ||||
| -next_iface4(struct iface_info *info, int *err, struct iface_conf_list *ifaces) {
 | ||||
| -	char buf[256];
 | ||||
| -	char buf[IF_LINE_LENGTH];
 | ||||
| -	int len;
 | ||||
| -	char *p;
 | ||||
| -	char *name;
 | ||||
| @ -240,7 +240,7 @@ diff -up dhcp-4.3.0a1/common/discover.c.getifaddrs dhcp-4.3.0a1/common/discover. | ||||
| - */
 | ||||
| -static int
 | ||||
| -next_iface6(struct iface_info *info, int *err, struct iface_conf_list *ifaces) {
 | ||||
| -	char buf[256];
 | ||||
| -	char buf[IF_LINE_LENGTH];
 | ||||
| -	int len;
 | ||||
| -	char *p;
 | ||||
| -	char *name;
 | ||||
| @ -394,7 +394,7 @@ diff -up dhcp-4.3.0a1/common/discover.c.getifaddrs dhcp-4.3.0a1/common/discover. | ||||
|   * function. | ||||
|   * | ||||
|   * 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 | ||||
|  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) { | ||||
|  		*err = 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; | ||||
|  	} | ||||
|  	strcpy(info->name, ifaces->next->ifa_name); | ||||
|  | ||||
| @ -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)); | ||||
| @ -1,16 +1,16 @@ | ||||
| diff -up dhcp-4.3.0a1/client/dhclient.c.lpf-ib dhcp-4.3.0a1/client/dhclient.c
 | ||||
| --- dhcp-4.3.0a1/client/dhclient.c.lpf-ib	2013-12-20 14:03:30.337992402 +0100
 | ||||
| +++ dhcp-4.3.0a1/client/dhclient.c	2013-12-20 14:03:30.345992290 +0100
 | ||||
| @@ -113,6 +113,8 @@ static int check_domain_name_list(const
 | ||||
| diff -up dhcp-4.3.1b1/client/dhclient.c.bmgpWV dhcp-4.3.1b1/client/dhclient.c
 | ||||
| --- dhcp-4.3.1b1/client/dhclient.c.bmgpWV	2014-07-10 17:50:26.922402550 +0200
 | ||||
| +++ dhcp-4.3.1b1/client/dhclient.c	2014-07-10 17:53:43.629623477 +0200
 | ||||
| @@ -114,6 +114,8 @@ static int check_domain_name_list(const
 | ||||
|  static int check_option_values(struct universe *universe, unsigned int opt, | ||||
|  			       const char *ptr, size_t len); | ||||
|   | ||||
| +static void setup_ib_interface(struct interface_info *ip);
 | ||||
| +
 | ||||
|  #ifndef UNIT_TEST | ||||
|  int | ||||
|  main(int argc, char **argv) { | ||||
|  	int fd; | ||||
| @@ -915,6 +917,13 @@ main(int argc, char **argv) {
 | ||||
| @@ -937,6 +939,13 @@ main(int argc, char **argv) {
 | ||||
|  	} | ||||
|  	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 | ||||
| @@ -1199,6 +1208,29 @@ int find_subnet (struct subnet **sp,
 | ||||
| @@ -1230,6 +1239,29 @@ int find_subnet (struct subnet **sp,
 | ||||
|  	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: | ||||
|   * | ||||
|   * 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
 | ||||
| --- dhcp-4.3.0a1/common/bpf.c.lpf-ib	2013-12-20 14:03:30.330992500 +0100
 | ||||
| +++ dhcp-4.3.0a1/common/bpf.c	2013-12-20 14:03:30.345992290 +0100
 | ||||
| diff -up dhcp-4.3.1b1/common/bpf.c.bmgpWV dhcp-4.3.1b1/common/bpf.c
 | ||||
| --- dhcp-4.3.1b1/common/bpf.c.bmgpWV	2014-07-10 17:48:03.797424616 +0200
 | ||||
| +++ 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 [] = {
 | ||||
|  	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) | ||||
|  struct bpf_insn dhcp_bpf_tr_filter [] = { | ||||
|          /* 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
 | ||||
| --- dhcp-4.3.0a1/common/lpf.c.lpf-ib	2013-12-20 14:03:30.331992486 +0100
 | ||||
| +++ dhcp-4.3.0a1/common/lpf.c	2013-12-20 14:03:30.346992276 +0100
 | ||||
| diff -up dhcp-4.3.1b1/common/lpf.c.bmgpWV dhcp-4.3.1b1/common/lpf.c
 | ||||
| --- dhcp-4.3.1b1/common/lpf.c.bmgpWV	2014-07-10 17:48:03.797424616 +0200
 | ||||
| +++ dhcp-4.3.1b1/common/lpf.c	2014-07-10 17:52:57.706272281 +0200
 | ||||
| @@ -46,6 +46,17 @@
 | ||||
|  #if defined (USE_LPF_RECEIVE) || defined (USE_LPF_HWADDR) | ||||
|  #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);
 | ||||
|  } | ||||
|  #endif | ||||
| diff -up dhcp-4.3.0a1/common/socket.c.lpf-ib dhcp-4.3.0a1/common/socket.c
 | ||||
| --- dhcp-4.3.0a1/common/socket.c.lpf-ib	2013-12-11 01:25:12.000000000 +0100
 | ||||
| +++ dhcp-4.3.0a1/common/socket.c	2013-12-20 14:04:54.904811982 +0100
 | ||||
| @@ -328,7 +328,7 @@ void if_register_send (info)
 | ||||
| diff -up dhcp-4.3.1b1/common/socket.c.bmgpWV dhcp-4.3.1b1/common/socket.c
 | ||||
| --- dhcp-4.3.1b1/common/socket.c.bmgpWV	2014-07-02 19:58:38.000000000 +0200
 | ||||
| +++ dhcp-4.3.1b1/common/socket.c	2014-07-10 17:52:57.706272281 +0200
 | ||||
| @@ -322,7 +322,7 @@ void if_register_send (info)
 | ||||
|  	info->wfdesc = if_register_socket(info, AF_INET, 0, NULL); | ||||
|  	/* If this is a normal IPv4 address, get the hardware address. */ | ||||
|  	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) | ||||
|  	/* Fallback only registers for send, but may need to receive as | ||||
|  	   well. */ | ||||
| @@ -391,7 +391,7 @@ void if_register_receive (info)
 | ||||
| @@ -385,7 +385,7 @@ void if_register_receive (info)
 | ||||
|  #endif /* IP_PKTINFO... */ | ||||
|  	/* If this is a normal IPv4 address, get the hardware address. */ | ||||
|  	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) | ||||
|  		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_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 (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->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 (info->shared_network != NULL) { | ||||
| diff -up dhcp-4.3.0a1/includes/dhcpd.h.lpf-ib dhcp-4.3.0a1/includes/dhcpd.h
 | ||||
| --- dhcp-4.3.0a1/includes/dhcpd.h.lpf-ib	2013-12-20 14:03:30.338992388 +0100
 | ||||
| +++ dhcp-4.3.0a1/includes/dhcpd.h	2013-12-20 14:03:30.348992248 +0100
 | ||||
| @@ -1249,6 +1249,7 @@ struct interface_info {
 | ||||
| diff -up dhcp-4.3.1b1/includes/dhcpd.h.bmgpWV dhcp-4.3.1b1/includes/dhcpd.h
 | ||||
| --- dhcp-4.3.1b1/includes/dhcpd.h.bmgpWV	2014-07-10 17:50:26.923402536 +0200
 | ||||
| +++ dhcp-4.3.1b1/includes/dhcpd.h	2014-07-10 17:52:57.707272266 +0200
 | ||||
| @@ -1248,6 +1248,7 @@ struct interface_info {
 | ||||
|  	struct shared_network *shared_network; | ||||
|  				/* Networks connected to this interface. */ | ||||
|  	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 | ||||
|  					 * interface. | ||||
|  					 */ | ||||
| @@ -2425,7 +2426,7 @@ void print_dns_status (int, struct dhcp_
 | ||||
| @@ -2439,7 +2440,7 @@ void print_dns_status (int, struct dhcp_
 | ||||
|  #endif | ||||
|  const char *print_time(TIME); | ||||
|   | ||||
|  | ||||
| @ -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 *, | ||||
| @ -1,7 +1,7 @@ | ||||
| diff -up dhcp-4.3.0a1/client/dhclient.c.paranoia dhcp-4.3.0a1/client/dhclient.c
 | ||||
| --- dhcp-4.3.0a1/client/dhclient.c.paranoia	2013-12-19 16:30:21.401211512 +0100
 | ||||
| +++ dhcp-4.3.0a1/client/dhclient.c	2013-12-19 16:30:21.409211401 +0100
 | ||||
| @@ -1712,11 +1712,6 @@ int write_host (host)
 | ||||
| diff -up dhcp-4.3.1b1/client/dhclient.c.dlTsyN dhcp-4.3.1b1/client/dhclient.c
 | ||||
| --- dhcp-4.3.1b1/client/dhclient.c.dlTsyN	2014-07-10 17:49:49.882925843 +0200
 | ||||
| +++ dhcp-4.3.1b1/client/dhclient.c	2014-07-10 17:50:26.922402550 +0200
 | ||||
| @@ -1748,11 +1748,6 @@ int write_host (host)
 | ||||
|  	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) | ||||
|  	struct packet *packet; | ||||
|  { | ||||
| diff -up dhcp-4.3.0a1/includes/dhcpd.h.paranoia dhcp-4.3.0a1/includes/dhcpd.h
 | ||||
| --- dhcp-4.3.0a1/includes/dhcpd.h.paranoia	2013-12-19 16:30:21.403211484 +0100
 | ||||
| +++ dhcp-4.3.0a1/includes/dhcpd.h	2013-12-19 16:30:21.410211387 +0100
 | ||||
| @@ -2851,7 +2851,11 @@ void commit_leases_timeout (void *);
 | ||||
| diff -up dhcp-4.3.1b1/includes/dhcpd.h.dlTsyN dhcp-4.3.1b1/includes/dhcpd.h
 | ||||
| --- dhcp-4.3.1b1/includes/dhcpd.h.dlTsyN	2014-07-10 17:48:03.798424601 +0200
 | ||||
| +++ dhcp-4.3.1b1/includes/dhcpd.h	2014-07-10 17:50:26.923402536 +0200
 | ||||
| @@ -2866,7 +2866,11 @@ void commit_leases_timeout (void *);
 | ||||
|  void commit_leases_readerdry(void *); | ||||
|  int commit_leases (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 group_writer (struct group_object *); | ||||
|  int write_ia(const struct ia_xx *); | ||||
| diff -up dhcp-4.3.0a1/server/confpars.c.paranoia dhcp-4.3.0a1/server/confpars.c
 | ||||
| --- dhcp-4.3.0a1/server/confpars.c.paranoia	2013-12-19 16:30:21.346212275 +0100
 | ||||
| +++ dhcp-4.3.0a1/server/confpars.c	2013-12-19 16:30:21.412211359 +0100
 | ||||
| @@ -225,7 +225,11 @@ void trace_conf_input (trace_type_t *tty
 | ||||
| diff -up dhcp-4.3.1b1/server/confpars.c.dlTsyN dhcp-4.3.1b1/server/confpars.c
 | ||||
| --- dhcp-4.3.1b1/server/confpars.c.dlTsyN	2014-07-10 17:39:25.801764596 +0200
 | ||||
| +++ dhcp-4.3.1b1/server/confpars.c	2014-07-10 17:50:26.924402522 +0200
 | ||||
| @@ -219,7 +219,11 @@ void trace_conf_input (trace_type_t *tty
 | ||||
|  	} | ||||
|   | ||||
|  	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; | ||||
|  		postdb_startup (); | ||||
|  	} | ||||
| diff -up dhcp-4.3.0a1/server/db.c.paranoia dhcp-4.3.0a1/server/db.c
 | ||||
| --- dhcp-4.3.0a1/server/db.c.paranoia	2013-12-19 16:30:21.346212275 +0100
 | ||||
| +++ dhcp-4.3.0a1/server/db.c	2013-12-19 16:30:21.412211359 +0100
 | ||||
| @@ -48,6 +48,10 @@ static int counting = 0;
 | ||||
| diff -up dhcp-4.3.1b1/server/db.c.dlTsyN dhcp-4.3.1b1/server/db.c
 | ||||
| --- dhcp-4.3.1b1/server/db.c.dlTsyN	2014-07-10 17:39:25.801764596 +0200
 | ||||
| +++ dhcp-4.3.1b1/server/db.c	2014-07-10 17:50:26.925402508 +0200
 | ||||
| @@ -42,6 +42,10 @@ static int counting = 0;
 | ||||
|  static int count = 0; | ||||
|  TIME write_time; | ||||
|  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. | ||||
|   */ | ||||
| @@ -1052,8 +1056,11 @@ int commit_leases_timed()
 | ||||
| @@ -1046,8 +1050,11 @@ int commit_leases_timed()
 | ||||
|  	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; | ||||
|   | ||||
| @@ -1072,6 +1079,11 @@ void db_startup (testp)
 | ||||
| @@ -1066,6 +1073,11 @@ void db_startup (testp)
 | ||||
|  	} | ||||
|  #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 we're playing back, there is no lease file, so we can'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"); | ||||
|  		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) { | ||||
|  		log_error("Can't fdopen new lease file: %m"); | ||||
|  		close(db_fd); | ||||
| diff -up dhcp-4.3.0a1/server/dhcpd.8.paranoia dhcp-4.3.0a1/server/dhcpd.8
 | ||||
| --- dhcp-4.3.0a1/server/dhcpd.8.paranoia	2013-12-11 01:01:03.000000000 +0100
 | ||||
| +++ dhcp-4.3.0a1/server/dhcpd.8	2013-12-19 16:30:21.413211345 +0100
 | ||||
| diff -up dhcp-4.3.1b1/server/dhcpd.8.dlTsyN dhcp-4.3.1b1/server/dhcpd.8
 | ||||
| --- dhcp-4.3.1b1/server/dhcpd.8.dlTsyN	2014-07-02 19:58:39.000000000 +0200
 | ||||
| +++ dhcp-4.3.1b1/server/dhcpd.8	2014-07-10 17:50:26.925402508 +0200
 | ||||
| @@ -82,6 +82,18 @@ dhcpd - Dynamic Host Configuration Proto
 | ||||
|  .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 | ||||
|  .I Modifying default file 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
 | ||||
| --- dhcp-4.3.0a1/server/dhcpd.c.paranoia	2013-12-19 16:30:21.347212261 +0100
 | ||||
| +++ dhcp-4.3.0a1/server/dhcpd.c	2013-12-19 16:30:21.414211331 +0100
 | ||||
| @@ -623,7 +623,11 @@ main(int argc, char **argv) {
 | ||||
| diff -up dhcp-4.3.1b1/server/dhcpd.c.dlTsyN dhcp-4.3.1b1/server/dhcpd.c
 | ||||
| --- dhcp-4.3.1b1/server/dhcpd.c.dlTsyN	2014-07-10 17:39:25.802764582 +0200
 | ||||
| +++ dhcp-4.3.1b1/server/dhcpd.c	2014-07-10 17:52:35.341588248 +0200
 | ||||
| @@ -628,7 +628,11 @@ main(int argc, char **argv) {
 | ||||
|  	group_write_hook = group_writer; | ||||
|   | ||||
|  	/* 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) | ||||
|  		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) | ||||
|  | ||||
| @ -1,25 +1,7 @@ | ||||
| diff -up dhcp-4.3.0a1/Makefile.am.remove-bind dhcp-4.3.0a1/Makefile.am
 | ||||
| --- dhcp-4.3.0a1/Makefile.am.remove-bind	2013-12-13 21:49:44.000000000 +0100
 | ||||
| +++ dhcp-4.3.0a1/Makefile.am	2013-12-19 14:23:48.907263942 +0100
 | ||||
| @@ -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.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
 | ||||
| diff -up dhcp-4.3.1b1/client/Makefile.am.brGmwh dhcp-4.3.1b1/client/Makefile.am
 | ||||
| --- dhcp-4.3.1b1/client/Makefile.am.brGmwh	2014-07-02 19:58:38.000000000 +0200
 | ||||
| +++ dhcp-4.3.1b1/client/Makefile.am	2014-07-10 17:36:30.484250976 +0200
 | ||||
| @@ -10,8 +10,8 @@ dhclient_SOURCES = clparse.c dhclient.c
 | ||||
|  		   scripts/bsdos scripts/freebsd scripts/linux scripts/macos \ | ||||
|  		   scripts/netbsd scripts/nextstep scripts/openbsd \ | ||||
|  		   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 | ||||
|  EXTRA_DIST = $(man_MANS) | ||||
|   | ||||
| diff -up dhcp-4.3.0a1/common/tests/Makefile.am.remove-bind dhcp-4.3.0a1/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.0a1/common/tests/Makefile.am	2013-12-19 14:33:01.260634412 +0100
 | ||||
| @@ -13,15 +13,14 @@ ATF_TESTS += alloc_unittest dns_unittest
 | ||||
| diff -up dhcp-4.3.1b1/common/tests/Makefile.am.brGmwh dhcp-4.3.1b1/common/tests/Makefile.am
 | ||||
| --- dhcp-4.3.1b1/common/tests/Makefile.am.brGmwh	2014-07-10 17:36:30.485250962 +0200
 | ||||
| +++ dhcp-4.3.1b1/common/tests/Makefile.am	2014-07-10 17:38:04.010924566 +0200
 | ||||
| @@ -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_LDADD = $(ATF_LDFLAGS) | ||||
|  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  \ | ||||
| -	../../omapip/libomapi.a ../../bind/lib/libirs.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 \
 | ||||
| +	$(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export
 | ||||
|  check: $(ATF_TESTS) | ||||
|  	atf-run | atf-report | ||||
|   | ||||
| diff -up dhcp-4.3.0a1/configure.ac.remove-bind dhcp-4.3.0a1/configure.ac
 | ||||
| --- dhcp-4.3.0a1/configure.ac.remove-bind	2013-12-19 14:23:48.906263956 +0100
 | ||||
| +++ dhcp-4.3.0a1/configure.ac	2013-12-19 14:37:44.358723889 +0100
 | ||||
| @@ -552,20 +552,37 @@ AC_CHECK_MEMBER(struct msghdr.msg_contro
 | ||||
| diff -up dhcp-4.3.1b1/configure.ac.brGmwh dhcp-4.3.1b1/configure.ac
 | ||||
| --- dhcp-4.3.1b1/configure.ac.brGmwh	2014-07-02 20:01:26.000000000 +0200
 | ||||
| +++ dhcp-4.3.1b1/configure.ac	2014-07-10 17:36:30.485250962 +0200
 | ||||
| @@ -562,20 +562,37 @@ AC_CHECK_MEMBER(struct msghdr.msg_contro
 | ||||
|   | ||||
|  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. | ||||
|  AC_ARG_WITH(ldap, | ||||
| @@ -600,7 +617,7 @@ fi
 | ||||
| @@ -610,7 +627,7 @@ fi
 | ||||
|  CFLAGS="$CFLAGS $STD_CWARNINGS" | ||||
|   | ||||
|  # 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 | ||||
|  *-darwin*) | ||||
| diff -up dhcp-4.3.0a1/dhcpctl/Makefile.am.remove-bind dhcp-4.3.0a1/dhcpctl/Makefile.am
 | ||||
| --- dhcp-4.3.0a1/dhcpctl/Makefile.am.remove-bind	2013-12-19 14:23:48.906263956 +0100
 | ||||
| +++ dhcp-4.3.0a1/dhcpctl/Makefile.am	2013-12-19 14:40:06.497754274 +0100
 | ||||
| diff -up dhcp-4.3.1b1/dhcpctl/Makefile.am.brGmwh dhcp-4.3.1b1/dhcpctl/Makefile.am
 | ||||
| --- dhcp-4.3.1b1/dhcpctl/Makefile.am.brGmwh	2014-07-02 19:58:38.000000000 +0200
 | ||||
| +++ dhcp-4.3.1b1/dhcpctl/Makefile.am	2014-07-10 17:36:30.485250962 +0200
 | ||||
| @@ -6,12 +6,9 @@ EXTRA_DIST = $(man_MANS)
 | ||||
|   | ||||
|  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/libisccfg.a ../bind/lib/libisc.a
 | ||||
| +	       $(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
 | ||||
| --- dhcp-4.3.0a1/omapip/Makefile.am.remove-bind	2013-12-19 14:23:48.908263928 +0100
 | ||||
| +++ dhcp-4.3.0a1/omapip/Makefile.am	2013-12-19 14:40:51.440118923 +0100
 | ||||
| diff -up dhcp-4.3.1b1/Makefile.am.brGmwh dhcp-4.3.1b1/Makefile.am
 | ||||
| --- dhcp-4.3.1b1/Makefile.am.brGmwh	2014-07-02 19:58:38.000000000 +0200
 | ||||
| +++ 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
 | ||||
|  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 \
 | ||||
| +	       $(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
 | ||||
| --- dhcp-4.3.0a1/relay/Makefile.am.remove-bind	2013-12-19 14:23:48.908263928 +0100
 | ||||
| +++ dhcp-4.3.0a1/relay/Makefile.am	2013-12-19 14:41:27.302612345 +0100
 | ||||
| diff -up dhcp-4.3.1b1/relay/Makefile.am.brGmwh dhcp-4.3.1b1/relay/Makefile.am
 | ||||
| --- dhcp-4.3.1b1/relay/Makefile.am.brGmwh	2014-07-02 19:58:39.000000000 +0200
 | ||||
| +++ dhcp-4.3.1b1/relay/Makefile.am	2014-07-10 17:36:30.486250948 +0200
 | ||||
| @@ -3,8 +3,7 @@ AM_CPPFLAGS = -DLOCALSTATEDIR='"@localst
 | ||||
|  sbin_PROGRAMS = dhcrelay | ||||
|  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 | ||||
|  EXTRA_DIST = $(man_MANS) | ||||
|   | ||||
| diff -up dhcp-4.3.0a1/server/Makefile.am.remove-bind dhcp-4.3.0a1/server/Makefile.am
 | ||||
| --- dhcp-4.3.0a1/server/Makefile.am.remove-bind	2013-12-19 14:23:48.910263900 +0100
 | ||||
| +++ dhcp-4.3.0a1/server/Makefile.am	2013-12-19 14:42:18.065895883 +0100
 | ||||
| diff -up dhcp-4.3.1b1/server/Makefile.am.brGmwh dhcp-4.3.1b1/server/Makefile.am
 | ||||
| --- dhcp-4.3.1b1/server/Makefile.am.brGmwh	2014-07-02 19:58:39.000000000 +0200
 | ||||
| +++ 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
 | ||||
|  		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 | ||||
|  EXTRA_DIST = $(man_MANS) | ||||
|   | ||||
| diff -up dhcp-4.3.0a1/server/tests/Makefile.am.remove-bind dhcp-4.3.0a1/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.0a1/server/tests/Makefile.am	2013-12-19 14:43:32.943840285 +0100
 | ||||
| diff -up dhcp-4.3.1b1/server/tests/Makefile.am.brGmwh dhcp-4.3.1b1/server/tests/Makefile.am
 | ||||
| --- dhcp-4.3.1b1/server/tests/Makefile.am.brGmwh	2014-07-02 19:58:40.000000000 +0200
 | ||||
| +++ 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
 | ||||
|            ../ldap.c ../ldap_casa.c ../dhcpd.c | ||||
|   | ||||
|  | ||||
| @ -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); | ||||
|  	} | ||||
| @ -1,7 +1,7 @@ | ||||
| diff -up dhcp-4.3.0a1/client/Makefile.am.sharedlib dhcp-4.3.0a1/client/Makefile.am
 | ||||
| --- dhcp-4.3.0a1/client/Makefile.am.sharedlib	2013-12-20 14:23:14.303534850 +0100
 | ||||
| +++ dhcp-4.3.0a1/client/Makefile.am	2013-12-20 14:23:14.312534725 +0100
 | ||||
| @@ -4,7 +4,7 @@ dhclient_SOURCES = clparse.c dhclient.c
 | ||||
| diff -up dhcp-4.3.1b1/client/Makefile.am.uCWMBl dhcp-4.3.1b1/client/Makefile.am
 | ||||
| --- dhcp-4.3.1b1/client/Makefile.am.uCWMBl	2014-07-10 17:36:30.484250976 +0200
 | ||||
| +++ dhcp-4.3.1b1/client/Makefile.am	2014-07-10 17:38:10.778828583 +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 | ||||
| @ -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 | ||||
|  man_MANS = dhclient.8 dhclient-script.8 dhclient.conf.5 dhclient.leases.5 | ||||
|  EXTRA_DIST = $(man_MANS) | ||||
| diff -up dhcp-4.3.0a1/common/tests/Makefile.am.sharedlib dhcp-4.3.0a1/common/tests/Makefile.am
 | ||||
| --- dhcp-4.3.0a1/common/tests/Makefile.am.sharedlib	2013-12-20 14:23:14.304534836 +0100
 | ||||
| +++ dhcp-4.3.0a1/common/tests/Makefile.am	2013-12-20 14:23:14.313534711 +0100
 | ||||
| @@ -13,13 +13,13 @@ ATF_TESTS += alloc_unittest dns_unittest
 | ||||
| diff -up dhcp-4.3.1b1/common/tests/Makefile.am.uCWMBl dhcp-4.3.1b1/common/tests/Makefile.am
 | ||||
| --- dhcp-4.3.1b1/common/tests/Makefile.am.uCWMBl	2014-07-10 17:38:10.779828569 +0200
 | ||||
| +++ dhcp-4.3.1b1/common/tests/Makefile.am	2014-07-10 17:38:21.355678580 +0200
 | ||||
| @@ -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_LDADD = $(ATF_LDFLAGS) | ||||
|  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_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.la \
 | ||||
|  	$(BIND9_LIBDIR) -lirs-export -ldns-export -lisccfg-export -lisc-export | ||||
|  check: $(ATF_TESTS) | ||||
|  	atf-run | atf-report | ||||
| diff -up dhcp-4.3.0a1/configure.ac.sharedlib dhcp-4.3.0a1/configure.ac
 | ||||
| --- dhcp-4.3.0a1/configure.ac.sharedlib	2013-12-20 14:23:14.308534781 +0100
 | ||||
| +++ dhcp-4.3.0a1/configure.ac	2013-12-20 14:23:14.313534711 +0100
 | ||||
| diff -up dhcp-4.3.1b1/configure.ac.uCWMBl dhcp-4.3.1b1/configure.ac
 | ||||
| --- dhcp-4.3.1b1/configure.ac.uCWMBl	2014-07-10 17:38:10.766828753 +0200
 | ||||
| +++ dhcp-4.3.1b1/configure.ac	2014-07-10 17:38:10.779828569 +0200
 | ||||
| @@ -39,7 +39,8 @@ fi
 | ||||
|  # Use this to define _GNU_SOURCE to pull in the IPv6 Advanced Socket API. | ||||
|  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]) | ||||
|   | ||||
|  # 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
 | ||||
| --- dhcp-4.3.0a1/dhcpctl/Makefile.am.sharedlib	2013-12-20 14:23:14.304534836 +0100
 | ||||
| +++ dhcp-4.3.0a1/dhcpctl/Makefile.am	2013-12-20 14:23:21.998428024 +0100
 | ||||
| diff -up dhcp-4.3.1b1/dhcpctl/Makefile.am.uCWMBl dhcp-4.3.1b1/dhcpctl/Makefile.am
 | ||||
| --- dhcp-4.3.1b1/dhcpctl/Makefile.am.uCWMBl	2014-07-10 17:36:30.485250962 +0200
 | ||||
| +++ dhcp-4.3.1b1/dhcpctl/Makefile.am	2014-07-10 17:38:10.780828554 +0200
 | ||||
| @@ -1,14 +1,14 @@
 | ||||
|  bin_PROGRAMS = omshell | ||||
| -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.la ../common/libdhcp.a ../omapip/libomapi.la \
 | ||||
|  	       $(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
 | ||||
| --- dhcp-4.3.0a1/omapip/Makefile.am.sharedlib	2013-12-20 14:23:14.304534836 +0100
 | ||||
| +++ dhcp-4.3.0a1/omapip/Makefile.am	2013-12-20 14:23:14.313534711 +0100
 | ||||
| diff -up dhcp-4.3.1b1/omapip/Makefile.am.uCWMBl dhcp-4.3.1b1/omapip/Makefile.am
 | ||||
| --- dhcp-4.3.1b1/omapip/Makefile.am.uCWMBl	2014-07-10 17:36:30.486250948 +0200
 | ||||
| +++ dhcp-4.3.1b1/omapip/Makefile.am	2014-07-10 17:38:10.780828554 +0200
 | ||||
| @@ -1,7 +1,7 @@
 | ||||
| -lib_LIBRARIES = libomapi.a
 | ||||
| +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.la \
 | ||||
|  	       $(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
 | ||||
| --- dhcp-4.3.0a1/relay/Makefile.am.sharedlib	2013-12-20 14:23:14.305534822 +0100
 | ||||
| +++ dhcp-4.3.0a1/relay/Makefile.am	2013-12-20 14:23:14.314534697 +0100
 | ||||
| diff -up dhcp-4.3.1b1/relay/Makefile.am.uCWMBl dhcp-4.3.1b1/relay/Makefile.am
 | ||||
| --- dhcp-4.3.1b1/relay/Makefile.am.uCWMBl	2014-07-10 17:36:30.486250948 +0200
 | ||||
| +++ dhcp-4.3.1b1/relay/Makefile.am	2014-07-10 17:38:10.780828554 +0200
 | ||||
| @@ -2,7 +2,7 @@ AM_CPPFLAGS = -DLOCALSTATEDIR='"@localst
 | ||||
|   | ||||
|  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 | ||||
|  man_MANS = dhcrelay.8 | ||||
|  EXTRA_DIST = $(man_MANS) | ||||
| diff -up dhcp-4.3.0a1/server/Makefile.am.sharedlib dhcp-4.3.0a1/server/Makefile.am
 | ||||
| --- dhcp-4.3.0a1/server/Makefile.am.sharedlib	2013-12-20 14:23:14.305534822 +0100
 | ||||
| +++ dhcp-4.3.0a1/server/Makefile.am	2013-12-20 14:23:14.314534697 +0100
 | ||||
| diff -up dhcp-4.3.1b1/server/Makefile.am.uCWMBl dhcp-4.3.1b1/server/Makefile.am
 | ||||
| --- dhcp-4.3.1b1/server/Makefile.am.uCWMBl	2014-07-10 17:36:30.486250948 +0200
 | ||||
| +++ 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
 | ||||
|  		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 | ||||
|  man_MANS = dhcpd.8 dhcpd.conf.5 dhcpd.leases.5 | ||||
|  EXTRA_DIST = $(man_MANS) | ||||
| diff -up dhcp-4.3.0a1/server/tests/Makefile.am.sharedlib dhcp-4.3.0a1/server/tests/Makefile.am
 | ||||
| --- dhcp-4.3.0a1/server/tests/Makefile.am.sharedlib	2013-12-20 14:23:14.305534822 +0100
 | ||||
| +++ dhcp-4.3.0a1/server/tests/Makefile.am	2013-12-20 14:23:14.314534697 +0100
 | ||||
| diff -up dhcp-4.3.1b1/server/tests/Makefile.am.uCWMBl dhcp-4.3.1b1/server/tests/Makefile.am
 | ||||
| --- dhcp-4.3.1b1/server/tests/Makefile.am.uCWMBl	2014-07-10 17:36:30.486250948 +0200
 | ||||
| +++ 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
 | ||||
|            ../ddns.c ../dhcpleasequery.c ../dhcpv6.c ../mdb6.c        \ | ||||
|            ../ldap.c ../ldap_casa.c ../dhcpd.c | ||||
|  | ||||
| @ -1,19 +1,7 @@ | ||||
| diff -up dhcp-4.3.0a1/Makefile.am.systemtap dhcp-4.3.0a1/Makefile.am
 | ||||
| --- dhcp-4.3.0a1/Makefile.am.systemtap	2013-12-20 13:30:26.149645305 +0100
 | ||||
| +++ dhcp-4.3.0a1/Makefile.am	2013-12-20 13:30:26.307643109 +0100
 | ||||
| @@ -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.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
 | ||||
| diff -up dhcp-4.3.1b1/configure.ac.systemtap dhcp-4.3.1b1/configure.ac
 | ||||
| --- dhcp-4.3.1b1/configure.ac.systemtap	2014-07-10 18:31:05.966880404 +0200
 | ||||
| +++ dhcp-4.3.1b1/configure.ac	2014-07-10 18:31:06.027879541 +0200
 | ||||
| @@ -534,6 +534,35 @@ else
 | ||||
|      AC_MSG_RESULT(no) | ||||
|  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 | ||||
|  AC_SEARCH_LIBS(socket, [socket]) | ||||
|  AC_SEARCH_LIBS(inet_ntoa, [nsl]) | ||||
| @@ -675,6 +704,7 @@ AC_CONFIG_FILES([
 | ||||
| @@ -686,6 +715,7 @@ AC_CONFIG_FILES([
 | ||||
|    tests/Makefile | ||||
|    server/tests/Makefile | ||||
|    doc/devel/doxyfile | ||||
| @ -57,9 +45,437 @@ diff -up dhcp-4.3.0a1/configure.ac.systemtap dhcp-4.3.0a1/configure.ac | ||||
|  ]) | ||||
|  AC_OUTPUT | ||||
|   | ||||
| diff -up dhcp-4.3.0a1/server/Makefile.am.systemtap dhcp-4.3.0a1/server/Makefile.am
 | ||||
| --- dhcp-4.3.0a1/server/Makefile.am.systemtap	2013-12-20 13:30:26.156645207 +0100
 | ||||
| +++ dhcp-4.3.0a1/server/Makefile.am	2013-12-20 13:34:16.057447630 +0100
 | ||||
| diff -up dhcp-4.3.1b1/Makefile.am.systemtap dhcp-4.3.1b1/Makefile.am
 | ||||
| --- dhcp-4.3.1b1/Makefile.am.systemtap	2014-07-10 18:31:05.891881465 +0200
 | ||||
| +++ 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
 | ||||
|  sbin_PROGRAMS = dhcpd | ||||
|  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
 | ||||
| +endif
 | ||||
| diff -up dhcp-4.3.0a1/server/dhcp.c.systemtap dhcp-4.3.0a1/server/dhcp.c
 | ||||
| --- dhcp-4.3.0a1/server/dhcp.c.systemtap	2013-12-20 13:30:26.182644846 +0100
 | ||||
| +++ dhcp-4.3.0a1/server/dhcp.c	2013-12-20 13:32:22.909022163 +0100
 | ||||
| @@ -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
 | ||||
| diff -up dhcp-4.3.1b1/server/probes.d.systemtap dhcp-4.3.1b1/server/probes.d
 | ||||
| --- dhcp-4.3.1b1/server/probes.d.systemtap	2014-07-10 18:31:06.034879442 +0200
 | ||||
| +++ dhcp-4.3.1b1/server/probes.d	2014-07-10 18:31:06.034879442 +0200
 | ||||
| @@ -0,0 +1,43 @@
 | ||||
| +provider dhcpd {
 | ||||
| +	 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_done();
 | ||||
| +};
 | ||||
| diff -up dhcp-4.3.0a1/server/tests/Makefile.am.systemtap dhcp-4.3.0a1/server/tests/Makefile.am
 | ||||
| --- dhcp-4.3.0a1/server/tests/Makefile.am.systemtap	2013-12-20 13:30:26.315642998 +0100
 | ||||
| +++ dhcp-4.3.0a1/server/tests/Makefile.am	2013-12-20 13:34:57.263873891 +0100
 | ||||
| diff -up dhcp-4.3.1b1/server/tests/Makefile.am.systemtap dhcp-4.3.1b1/server/tests/Makefile.am
 | ||||
| --- dhcp-4.3.1b1/server/tests/Makefile.am.systemtap	2014-07-10 18:31:05.895881408 +0200
 | ||||
| +++ 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
 | ||||
|            $(top_builddir)/dhcpctl/libdhcpctl.la \ | ||||
|            $(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 = | ||||
|  TESTS =  | ||||
|  if HAVE_ATF | ||||
| diff -up dhcp-4.3.0a1/server/trace.h.systemtap dhcp-4.3.0a1/server/trace.h
 | ||||
| --- dhcp-4.3.0a1/server/trace.h.systemtap	2013-12-20 13:30:26.315642998 +0100
 | ||||
| +++ dhcp-4.3.0a1/server/trace.h	2013-12-20 13:30:26.315642998 +0100
 | ||||
| diff -up dhcp-4.3.1b1/server/trace.h.systemtap dhcp-4.3.1b1/server/trace.h
 | ||||
| --- dhcp-4.3.1b1/server/trace.h.systemtap	2014-07-10 18:31:06.034879442 +0200
 | ||||
| +++ dhcp-4.3.1b1/server/trace.h	2014-07-10 18:31:06.034879442 +0200
 | ||||
| @@ -0,0 +1,11 @@
 | ||||
| +// 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
 | ||||
| +#define TRACE(probe)
 | ||||
| +#endif
 | ||||
| diff -up dhcp-4.3.0a1/tapset/Makefile.am.systemtap dhcp-4.3.0a1/tapset/Makefile.am
 | ||||
| --- dhcp-4.3.0a1/tapset/Makefile.am.systemtap	2013-12-20 13:30:26.315642998 +0100
 | ||||
| +++ dhcp-4.3.0a1/tapset/Makefile.am	2013-12-20 13:30:26.315642998 +0100
 | ||||
| @@ -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
 | ||||
| diff -up dhcp-4.3.1b1/tapset/dhcpd.stp.systemtap dhcp-4.3.1b1/tapset/dhcpd.stp
 | ||||
| --- dhcp-4.3.1b1/tapset/dhcpd.stp.systemtap	2014-07-10 18:31:06.035879428 +0200
 | ||||
| +++ dhcp-4.3.1b1/tapset/dhcpd.stp	2014-07-10 18:31:06.035879428 +0200
 | ||||
| @@ -0,0 +1,212 @@
 | ||||
| +/* dhcpd tapset
 | ||||
| +   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);
 | ||||
| +}
 | ||||
| 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
 | ||||
| +
 | ||||
|  | ||||
							
								
								
									
										49
									
								
								dhcp.spec
									
									
									
									
									
								
							
							
						
						
									
										49
									
								
								dhcp.spec
									
									
									
									
									
								
							| @ -9,16 +9,16 @@ | ||||
| 
 | ||||
| 
 | ||||
| #%%global patchver P2 | ||||
| #%%global prever rc1 | ||||
| %global prever b1 | ||||
| 
 | ||||
| #%%global VERSION %{version}-%{patchver} | ||||
| #%%global VERSION %{version}%{prever} | ||||
| %global VERSION %{version} | ||||
| #%%global VERSION %{version} | ||||
| %global VERSION %{version}%{prever} | ||||
| 
 | ||||
| Summary:  Dynamic host configuration protocol software | ||||
| Name:     dhcp | ||||
| Version:  4.3.0 | ||||
| Release:  15%{?dist} | ||||
| Version:  4.3.1 | ||||
| Release:  0.1.%{prever}%{?dist} | ||||
| # NEVER CHANGE THE EPOCH on this package.  The previous maintainer (prior to | ||||
| # 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. | ||||
| @ -53,10 +53,8 @@ Patch13:  dhcp-garbage-chars.patch | ||||
| Patch14:  dhcp-add_timeout_when_NULL.patch | ||||
| Patch15:  dhcp-64_bit_lease_parse.patch | ||||
| Patch16:  dhcp-capability.patch | ||||
| Patch17:  dhcp-logpid.patch | ||||
| Patch18:  dhcp-UseMulticast.patch | ||||
| Patch19:  dhcp-sendDecline.patch | ||||
| Patch20:  dhcp-retransmission.patch | ||||
| Patch21:  dhcp-rfc3442-classless-static-routes.patch | ||||
| Patch22:  dhcp-honor-expired.patch | ||||
| Patch23:  dhcp-PPP.patch | ||||
| @ -67,15 +65,11 @@ Patch27:  dhcp-improved-xid.patch | ||||
| Patch28:  dhcp-gpxe-cid.patch | ||||
| Patch29:  dhcp-duidv4.patch | ||||
| Patch30:  dhcp-systemtap.patch | ||||
| Patch31:  dhcp-dhclient-decline-onetry.patch | ||||
| Patch33:  dhcp-getifaddrs.patch | ||||
| Patch34:  dhcp-omapi-leak.patch | ||||
| Patch35:  dhcp-failOverPeer.patch | ||||
| Patch36:  dhcp-interval.patch | ||||
| Patch37:  dhcp-conflex-do-forward-updates.patch | ||||
| Patch38:  dhcp-dupl-key.patch | ||||
| Patch39:  dhcp-range6.patch | ||||
| Patch40:  dhcp-next-server.patch | ||||
| Patch41:  dhcp-no-subnet-error2info.patch | ||||
| Patch42:  dhcp-ffff-checksum.patch | ||||
| Patch43:  dhcp-sd_notify.patch | ||||
| @ -252,10 +246,6 @@ rm -rf includes/isc-dhcp | ||||
| # dhclient (#517649, #546765), dhcpd/dhcrelay (#699713) | ||||
| %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 | ||||
| # (unless we set unicast option) and respond with Reply | ||||
| # with UseMulticast Status Code option (#573090) | ||||
| @ -268,13 +258,6 @@ rm -rf includes/isc-dhcp | ||||
| # (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #21237]) | ||||
| %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) | ||||
| # (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #24572]) | ||||
| %patch21 -p1 -b .rfc3442 | ||||
| @ -288,7 +271,6 @@ rm -rf includes/isc-dhcp | ||||
| %patch23 -p1 -b .PPP | ||||
| 
 | ||||
| # 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) | ||||
| %patch24 -p1 -b .paranoia | ||||
| 
 | ||||
| @ -306,11 +288,6 @@ rm -rf includes/isc-dhcp | ||||
| # http://sourceware.org/systemtap/wiki/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) | ||||
| # (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #28761]) | ||||
| %patch33 -p1 -b .getifaddrs | ||||
| @ -327,22 +304,10 @@ rm -rf includes/isc-dhcp | ||||
| # (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #28038]) | ||||
| %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) | ||||
| # (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #32453]) | ||||
| %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. | ||||
| %patch41 -p1 -b .error2info | ||||
| 
 | ||||
| @ -390,6 +355,7 @@ CFLAGS="%{optflags} -fno-strict-aliasing" \ | ||||
|     --with-ldapcrypto \ | ||||
|     --with-libbind=%{_includedir} --with-libbind-libs=%{_libdir} \ | ||||
|     --disable-static \ | ||||
|     --enable-log-pid \ | ||||
| %if %sdt | ||||
|     --enable-systemtap \ | ||||
|     --with-tapset-install-dir=%{tapsetdir} \ | ||||
| @ -624,6 +590,9 @@ done | ||||
| %doc doc/html/ | ||||
| 
 | ||||
| %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 | ||||
| - dhclient-script: fix issue with classless static routes that breaks Fedora 20 on GCE cloud (#1102830) | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user