Blame SOURCES/dhcp-4.2.5-systemtap.patch

fad460
diff -up dhcp-4.2.5b1/configure.ac.systemtap dhcp-4.2.5b1/configure.ac
fad460
--- dhcp-4.2.5b1/configure.ac.systemtap	2012-12-17 16:56:40.563881316 +0100
fad460
+++ dhcp-4.2.5b1/configure.ac	2012-12-17 16:56:40.597880870 +0100
fad460
@@ -554,6 +554,35 @@ else
fad460
     AC_MSG_RESULT(no)
fad460
 fi
fad460
 
fad460
+AC_MSG_CHECKING([whether to include systemtap tracing support])
fad460
+AC_ARG_ENABLE([systemtap],
fad460
+              [AS_HELP_STRING([--enable-systemtap],
fad460
+                              [Enable inclusion of systemtap trace support])],
fad460
+              [ENABLE_SYSTEMTAP="${enableval}"], [ENABLE_SYSTEMTAP='no'])
fad460
+AM_CONDITIONAL([ENABLE_SYSTEMTAP], [test x$ENABLE_SYSTEMTAP = xyes])
fad460
+AC_MSG_RESULT(${ENABLE_SYSTEMTAP})
fad460
+
fad460
+if test "x${ENABLE_SYSTEMTAP}" = xyes; then
fad460
+  # Additional configuration for --enable-systemtap is HERE
fad460
+  AC_CHECK_PROGS(DTRACE, dtrace)
fad460
+  if test -z "$DTRACE"; then
fad460
+    AC_MSG_ERROR([dtrace not found])
fad460
+  fi
fad460
+  AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='yes'],
fad460
+                [SDT_H_FOUND='no';
fad460
+                   AC_MSG_ERROR([systemtap support needs sys/sdt.h header])])
fad460
+  AC_DEFINE([HAVE_SYSTEMTAP], [1], [Define to 1 if using SystemTap probes.])
fad460
+  AC_ARG_WITH([tapset-install-dir],
fad460
+	      [AS_HELP_STRING([--with-tapset-install-dir], 
fad460
+	         [The absolute path where the tapset dir will be installed])],
fad460
+	      [if test "x${withval}" = x; then
fad460
+		 ABS_TAPSET_DIR="\$(datadir)/systemtap/tapset"
fad460
+	       else
fad460
+		 ABS_TAPSET_DIR="${withval}"
fad460
+	       fi], [ABS_TAPSET_DIR="\$(datadir)/systemtap/tapset"])
fad460
+  AC_SUBST(ABS_TAPSET_DIR)
fad460
+fi
fad460
+
fad460
 # Solaris needs some libraries for functions
fad460
 AC_SEARCH_LIBS(socket, [socket])
fad460
 AC_SEARCH_LIBS(inet_ntoa, [nsl])
fad460
@@ -701,6 +730,7 @@ AC_OUTPUT([
fad460
   tests/Makefile
fad460
   server/tests/Makefile
fad460
   doc/devel/doxyfile
fad460
+  tapset/Makefile
fad460
 ])
fad460
 
fad460
 sh util/bindvar.sh
fad460
diff -up dhcp-4.2.5b1/Makefile.am.systemtap dhcp-4.2.5b1/Makefile.am
fad460
--- dhcp-4.2.5b1/Makefile.am.systemtap	2012-12-17 16:56:40.461882654 +0100
fad460
+++ dhcp-4.2.5b1/Makefile.am	2012-12-17 16:56:40.597880870 +0100
fad460
@@ -30,5 +30,8 @@ endif
fad460
 
fad460
 SUBDIRS += includes tests common omapip client dhcpctl relay server
fad460
 
fad460
+SUBDIRS += tapset
fad460
+#DIST_SUBDIRS = $(SUBDIRS)
fad460
+
fad460
 nobase_include_HEADERS = dhcpctl/dhcpctl.h
fad460
 
fad460
diff -up dhcp-4.2.5b1/server/dhcp.c.systemtap dhcp-4.2.5b1/server/dhcp.c
fad460
--- dhcp-4.2.5b1/server/dhcp.c.systemtap	2012-12-17 16:56:40.483882364 +0100
fad460
+++ dhcp-4.2.5b1/server/dhcp.c	2012-12-17 16:56:40.599880842 +0100
fad460
@@ -36,7 +36,7 @@
fad460
 #include <errno.h>
fad460
 #include <limits.h>
fad460
 #include <sys/time.h>
fad460
-
fad460
+#include "trace.h"
fad460
 static void commit_leases_ackout(void *foo);
fad460
 static void maybe_return_agent_options(struct packet *packet,
fad460
 				       struct option_state *options);
fad460
@@ -275,6 +275,8 @@ void dhcpdiscover (packet, ms_nulltp)
fad460
 	dhcp_failover_state_t *peer;
fad460
 #endif
fad460
 
fad460
+	TRACE(DHCPD_DISCOVER_START());
fad460
+
fad460
 	find_lease (&lease, packet, packet -> shared_network,
fad460
 		    0, &peer_has_leases, (struct lease *)0, MDL);
fad460
 
fad460
@@ -399,6 +401,8 @@ void dhcpdiscover (packet, ms_nulltp)
fad460
       out:
fad460
 	if (lease)
fad460
 		lease_dereference (&lease, MDL);
fad460
+
fad460
+	TRACE(DHCPD_DISCOVER_DONE());
fad460
 }
fad460
 
fad460
 void dhcprequest (packet, ms_nulltp, ip_lease)
fad460
@@ -421,6 +425,8 @@ void dhcprequest (packet, ms_nulltp, ip_
fad460
 #endif
fad460
 	int have_requested_addr = 0;
fad460
 
fad460
+	TRACE(DHCPD_REQUEST_START());
fad460
+
fad460
 	oc = lookup_option (&dhcp_universe, packet -> options,
fad460
 			    DHO_DHCP_REQUESTED_ADDRESS);
fad460
 	memset (&data, 0, sizeof data);
fad460
@@ -700,6 +706,9 @@ void dhcprequest (packet, ms_nulltp, ip_
fad460
 		log_info ("%s: unknown lease %s.", msgbuf, piaddr (cip));
fad460
 
fad460
       out:
fad460
+
fad460
+	TRACE(DHCPD_REQUEST_DONE());
fad460
+
fad460
 	if (subnet)
fad460
 		subnet_dereference (&subnet, MDL);
fad460
 	if (lease)
fad460
@@ -718,6 +727,7 @@ void dhcprelease (packet, ms_nulltp)
fad460
 	const char *s;
fad460
 	char msgbuf [1024], cstr[16]; /* XXX */
fad460
 
fad460
+	TRACE(DHCPD_RELEASE_START());
fad460
 
fad460
 	/* DHCPRELEASE must not specify address in requested-address
fad460
 	   option, but old protocol specs weren't explicit about this,
fad460
@@ -842,6 +852,8 @@ void dhcprelease (packet, ms_nulltp)
fad460
 #endif
fad460
 	if (lease)
fad460
 		lease_dereference (&lease, MDL);
fad460
+
fad460
+	TRACE(DHCPD_RELEASE_DONE());
fad460
 }
fad460
 
fad460
 void dhcpdecline (packet, ms_nulltp)
fad460
@@ -859,6 +871,8 @@ void dhcpdecline (packet, ms_nulltp)
fad460
 	struct option_cache *oc;
fad460
 	struct data_string data;
fad460
 
fad460
+	TRACE(DHCPD_DECLINE_START());
fad460
+
fad460
 	/* DHCPDECLINE must specify address. */
fad460
 	if (!(oc = lookup_option (&dhcp_universe, packet -> options,
fad460
 				  DHO_DHCP_REQUESTED_ADDRESS)))
fad460
@@ -970,6 +984,8 @@ void dhcpdecline (packet, ms_nulltp)
fad460
 		option_state_dereference (&options, MDL);
fad460
 	if (lease)
fad460
 		lease_dereference (&lease, MDL);
fad460
+
fad460
+	TRACE(DHCPD_DECLINE_DONE());
fad460
 }
fad460
 
fad460
 void dhcpinform (packet, ms_nulltp)
fad460
@@ -993,6 +1009,8 @@ void dhcpinform (packet, ms_nulltp)
fad460
 	struct interface_info *interface;
fad460
 	int result;
fad460
 
fad460
+	TRACE(DHCPD_INFORM_START());
fad460
+
fad460
 	/* The client should set ciaddr to its IP address, but apparently
fad460
 	   it's common for clients not to do this, so we'll use their IP
fad460
 	   source address if they didn't set ciaddr. */
fad460
@@ -1350,6 +1368,8 @@ void dhcpinform (packet, ms_nulltp)
fad460
 
fad460
 	if (subnet)
fad460
 		subnet_dereference (&subnet, MDL);
fad460
+
fad460
+	TRACE(DHCPD_INFORM_DONE());
fad460
 }
fad460
 
fad460
 void nak_lease (packet, cip)
fad460
@@ -1366,6 +1386,8 @@ void nak_lease (packet, cip)
fad460
 	struct option_state *options = (struct option_state *)0;
fad460
 	struct option_cache *oc = (struct option_cache *)0;
fad460
 
fad460
+	TRACE(DHCPD_NAK_LEASE_START());
fad460
+
fad460
 	option_state_allocate (&options, MDL);
fad460
 	memset (&outgoing, 0, sizeof outgoing);
fad460
 	memset (&raw, 0, sizeof raw);
fad460
@@ -1532,6 +1554,7 @@ void nak_lease (packet, cip)
fad460
                            packet->interface->name);
fad460
         }
fad460
 
fad460
+	TRACE(DHCPD_NAK_LEASE_DONE());
fad460
 }
fad460
 
fad460
 void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp)
fad460
@@ -1573,6 +1596,8 @@ void ack_lease (packet, lease, offer, wh
fad460
 	if (lease -> state)
fad460
 		return;
fad460
 
fad460
+	TRACE(DHCPD_ACK_LEASE_START());
fad460
+
fad460
 	/* Save original cltt for comparison later. */
fad460
 	lease_cltt = lease->cltt;
fad460
 
fad460
@@ -2936,6 +2961,8 @@ void ack_lease (packet, lease, offer, wh
fad460
 #endif
fad460
 			dhcp_reply(lease);
fad460
 	}
fad460
+
fad460
+	TRACE(DHCPD_ACK_LEASE_DONE());
fad460
 }
fad460
 
fad460
 /*
fad460
@@ -3088,6 +3115,8 @@ void dhcp_reply (lease)
fad460
 	if (!state)
fad460
 		log_fatal ("dhcp_reply was supplied lease with no state!");
fad460
 
fad460
+	TRACE(DHCPD_REPLY_START());
fad460
+
fad460
 	/* Compose a response for the client... */
fad460
 	memset (&raw, 0, sizeof raw);
fad460
 	memset (&d1, 0, sizeof d1);
fad460
@@ -3309,6 +3338,8 @@ void dhcp_reply (lease)
fad460
 
fad460
 	free_lease_state (state, MDL);
fad460
 	lease -> state = (struct lease_state *)0;
fad460
+
fad460
+	TRACE(DHCPD_REPLY_DONE());
fad460
 }
fad460
 
fad460
 int find_lease (struct lease **lp,
fad460
@@ -3331,6 +3362,8 @@ int find_lease (struct lease **lp,
fad460
 	struct data_string client_identifier;
fad460
 	struct hardware h;
fad460
 
fad460
+	TRACE(DHCPD_FIND_LEASE_START());
fad460
+
fad460
 #if defined(FAILOVER_PROTOCOL)
fad460
 	/* Quick check to see if the peer has leases. */
fad460
 	if (peer_has_leases) {
fad460
@@ -4058,6 +4091,9 @@ int find_lease (struct lease **lp,
fad460
 #if defined (DEBUG_FIND_LEASE)
fad460
 	log_info ("Not returning a lease.");
fad460
 #endif
fad460
+
fad460
+	TRACE(DHCPD_FIND_LEASE_DONE());
fad460
+
fad460
 	return 0;
fad460
 }
fad460
 
fad460
diff -up dhcp-4.2.5b1/server/dhcpd.c.systemtap dhcp-4.2.5b1/server/dhcpd.c
fad460
--- dhcp-4.2.5b1/server/dhcpd.c.systemtap	2012-12-17 16:56:40.578881119 +0100
fad460
+++ dhcp-4.2.5b1/server/dhcpd.c	2012-12-17 16:56:40.599880842 +0100
fad460
@@ -58,6 +58,8 @@ static const char url [] =
fad460
 #  undef group
fad460
 #endif /* PARANOIA */
fad460
 
fad460
+#include "trace.h"
fad460
+
fad460
 #ifndef UNIT_TEST
fad460
 static void usage(void);
fad460
 #endif
fad460
@@ -865,6 +867,7 @@ main(int argc, char **argv) {
fad460
 	omapi_set_int_value ((omapi_object_t *)dhcp_control_object,
fad460
 			     (omapi_object_t *)0, "state", server_running);
fad460
 
fad460
+        TRACE(DHCPD_MAIN());
fad460
 	/* Receive packets and dispatch them... */
fad460
 	dispatch ();
fad460
 
fad460
diff -up dhcp-4.2.5b1/server/dhcpv6.c.systemtap dhcp-4.2.5b1/server/dhcpv6.c
fad460
--- dhcp-4.2.5b1/server/dhcpv6.c.systemtap	2012-12-17 16:56:40.571881210 +0100
fad460
+++ dhcp-4.2.5b1/server/dhcpv6.c	2012-12-17 16:56:40.601880816 +0100
fad460
@@ -15,6 +15,7 @@
fad460
  */
fad460
 
fad460
 #include "dhcpd.h"
fad460
+#include "trace.h"
fad460
 
fad460
 #ifdef DHCPv6
fad460
 
fad460
@@ -4212,6 +4213,8 @@ static void
fad460
 dhcpv6_solicit(struct data_string *reply_ret, struct packet *packet) {
fad460
 	struct data_string client_id;
fad460
 
fad460
+	TRACE(DHCPD_6_SOLICIT_START());
fad460
+
fad460
 	/* 
fad460
 	 * Validate our input.
fad460
 	 */
fad460
@@ -4225,6 +4228,8 @@ dhcpv6_solicit(struct data_string *reply
fad460
 	 * Clean up.
fad460
 	 */
fad460
 	data_string_forget(&client_id, MDL);
fad460
+
fad460
+	TRACE(DHCPD_6_SOLICIT_DONE());
fad460
 }
fad460
 
fad460
 /*
fad460
@@ -4238,6 +4243,8 @@ dhcpv6_request(struct data_string *reply
fad460
 	struct data_string client_id;
fad460
 	struct data_string server_id;
fad460
 
fad460
+	TRACE(DHCPD_6_REQUEST_START());
fad460
+
fad460
 	/*
fad460
 	 * Validate our input.
fad460
 	 */
fad460
@@ -4255,6 +4262,8 @@ dhcpv6_request(struct data_string *reply
fad460
 	 */
fad460
 	data_string_forget(&client_id, MDL);
fad460
 	data_string_forget(&server_id, MDL);
fad460
+
fad460
+	TRACE(DHCPD_6_REQUEST_DONE());
fad460
 }
fad460
 
fad460
 /* Find a DHCPv6 packet's shared network from hints in the packet.
fad460
@@ -4367,6 +4376,8 @@ dhcpv6_confirm(struct data_string *reply
fad460
 	struct dhcpv6_packet *reply = (struct dhcpv6_packet *)reply_data;
fad460
 	int reply_ofs = (int)(offsetof(struct dhcpv6_packet, options));
fad460
 
fad460
+	TRACE(DHCPD_6_CONFIRM_START());
fad460
+
fad460
 	/* 
fad460
 	 * Basic client message validation.
fad460
 	 */
fad460
@@ -4553,6 +4564,8 @@ exit:
fad460
 		option_state_dereference(&cli_enc_opt_state, MDL);
fad460
 	if (opt_state != NULL)
fad460
 		option_state_dereference(&opt_state, MDL);
fad460
+
fad460
+	TRACE(DHCPD_6_CONFIRM_DONE());
fad460
 }
fad460
 
fad460
 /*
fad460
@@ -4567,6 +4580,8 @@ dhcpv6_renew(struct data_string *reply,
fad460
 	struct data_string client_id;
fad460
 	struct data_string server_id;
fad460
 
fad460
+	TRACE(DHCPD_6_RENEW_START());
fad460
+
fad460
 	/* 
fad460
 	 * Validate the request.
fad460
 	 */
fad460
@@ -4584,6 +4599,8 @@ dhcpv6_renew(struct data_string *reply,
fad460
 	 */
fad460
 	data_string_forget(&server_id, MDL);
fad460
 	data_string_forget(&client_id, MDL);
fad460
+
fad460
+	TRACE(DHCPD_6_RENEW_DONE());
fad460
 }
fad460
 
fad460
 /*
fad460
@@ -4597,6 +4614,8 @@ static void
fad460
 dhcpv6_rebind(struct data_string *reply, struct packet *packet) {
fad460
 	struct data_string client_id;
fad460
 
fad460
+	TRACE(DHCPD_6_REBIND_START());
fad460
+
fad460
 	if (!valid_client_msg(packet, &client_id)) {
fad460
 		return;
fad460
 	}
fad460
@@ -4604,6 +4623,8 @@ dhcpv6_rebind(struct data_string *reply,
fad460
 	lease_to_client(reply, packet, &client_id, NULL);
fad460
 
fad460
 	data_string_forget(&client_id, MDL);
fad460
+
fad460
+	TRACE(DHCPD_6_REBIND_DONE());
fad460
 }
fad460
 
fad460
 static void
fad460
@@ -5048,6 +5069,8 @@ dhcpv6_decline(struct data_string *reply
fad460
 	struct data_string client_id;
fad460
 	struct data_string server_id;
fad460
 
fad460
+	TRACE(DHCPD_6_DECLINE_START());
fad460
+
fad460
 	/* 
fad460
 	 * Validate our input.
fad460
 	 */
fad460
@@ -5068,6 +5091,8 @@ dhcpv6_decline(struct data_string *reply
fad460
 
fad460
 	data_string_forget(&server_id, MDL);
fad460
 	data_string_forget(&client_id, MDL);
fad460
+
fad460
+	TRACE(DHCPD_6_DECLINE_DONE());
fad460
 }
fad460
 
fad460
 static void
fad460
@@ -5516,6 +5541,8 @@ dhcpv6_release(struct data_string *reply
fad460
 	struct data_string client_id;
fad460
 	struct data_string server_id;
fad460
 
fad460
+	TRACE(DHCPD_6_RELEASE_START());
fad460
+
fad460
 	/* 
fad460
 	 * Validate our input.
fad460
 	 */
fad460
@@ -5537,6 +5564,8 @@ dhcpv6_release(struct data_string *reply
fad460
 
fad460
 	data_string_forget(&server_id, MDL);
fad460
 	data_string_forget(&client_id, MDL);
fad460
+
fad460
+	TRACE(DHCPD_6_RELEASE_DONE());
fad460
 }
fad460
 
fad460
 /*
fad460
@@ -5549,6 +5578,8 @@ dhcpv6_information_request(struct data_s
fad460
 	struct data_string client_id;
fad460
 	struct data_string server_id;
fad460
 
fad460
+	TRACE(DHCPD_6_INFORMATION_REQUEST_START());
fad460
+
fad460
 	/*
fad460
 	 * Validate our input.
fad460
 	 */
fad460
@@ -5580,6 +5611,8 @@ dhcpv6_information_request(struct data_s
fad460
 		data_string_forget(&client_id, MDL);
fad460
 	}
fad460
 	data_string_forget(&server_id, MDL);
fad460
+
fad460
+	TRACE(DHCPD_6_INFORMATION_REQUEST_DONE());
fad460
 }
fad460
 
fad460
 /* 
fad460
@@ -5608,6 +5641,8 @@ dhcpv6_relay_forw(struct data_string *re
fad460
 	struct dhcpv6_relay_packet *reply;
fad460
 	int reply_ofs;
fad460
 
fad460
+	TRACE(DHCPD_6_RELAY_FORW_START());
fad460
+
fad460
 	/* 
fad460
 	 * Initialize variables for early exit.
fad460
 	 */
fad460
@@ -5867,6 +5902,8 @@ exit:
fad460
 	if (enc_packet != NULL) {
fad460
 		packet_dereference(&enc_packet, MDL);
fad460
 	}
fad460
+
fad460
+	TRACE(DHCPD_6_RELAY_FORW_DONE());
fad460
 }
fad460
 
fad460
 static void
fad460
diff -up dhcp-4.2.5b1/server/failover.c.systemtap dhcp-4.2.5b1/server/failover.c
fad460
--- dhcp-4.2.5b1/server/failover.c.systemtap	2012-12-05 02:17:39.000000000 +0100
fad460
+++ dhcp-4.2.5b1/server/failover.c	2012-12-17 16:56:40.603880790 +0100
fad460
@@ -36,6 +36,8 @@
fad460
 #include "dhcpd.h"
fad460
 #include <omapip/omapip_p.h>
fad460
 
fad460
+#include "trace.h"
fad460
+
fad460
 #if defined (FAILOVER_PROTOCOL)
fad460
 dhcp_failover_state_t *failover_states;
fad460
 static isc_result_t do_a_failover_option (omapi_object_t *,
fad460
@@ -1712,6 +1714,8 @@ isc_result_t dhcp_failover_set_state (dh
fad460
     struct lease *l;
fad460
     struct timeval tv;
fad460
 
fad460
+    TRACE(DHCPD_FAILOVER_SET_STATE_START(state->me.state, new_state));
fad460
+
fad460
     /* If we're in certain states where we're sending updates, and the peer
fad460
      * state changes, we need to re-schedule any pending updates just to
fad460
      * be on the safe side.  This results in retransmission.
fad460
@@ -1939,6 +1943,8 @@ isc_result_t dhcp_failover_set_state (dh
fad460
 	    break;
fad460
     }
fad460
 
fad460
+    TRACE(DHCPD_FAILOVER_SET_STATE_DONE());
fad460
+
fad460
     return ISC_R_SUCCESS;
fad460
 }
fad460
 
fad460
@@ -2422,6 +2428,8 @@ dhcp_failover_pool_dobalance(dhcp_failov
fad460
 	if (state -> me.state != normal)
fad460
 		return 0;
fad460
 
fad460
+	TRACE(DHCPD_FAILOVER_POOL_DOBALANCE_START());
fad460
+
fad460
 	state->last_balance = cur_time;
fad460
 
fad460
 	for (s = shared_networks ; s ; s = s->next) {
fad460
@@ -2582,6 +2590,8 @@ dhcp_failover_pool_dobalance(dhcp_failov
fad460
 	if (leases_queued)
fad460
 		commit_leases();
fad460
 
fad460
+	TRACE(DHCPD_FAILOVER_POOL_DOBALANCE_DONE());
fad460
+
fad460
 	return leases_queued;
fad460
 }
fad460
 
fad460
diff -up dhcp-4.2.5b1/server/Makefile.am.systemtap dhcp-4.2.5b1/server/Makefile.am
fad460
--- dhcp-4.2.5b1/server/Makefile.am.systemtap	2012-12-17 16:56:40.563881316 +0100
fad460
+++ dhcp-4.2.5b1/server/Makefile.am	2012-12-17 16:56:40.603880790 +0100
fad460
@@ -10,7 +10,7 @@ dist_sysconf_DATA = dhcpd.conf.example
fad460
 sbin_PROGRAMS = dhcpd
fad460
 dhcpd_SOURCES = dhcpd.c dhcp.c bootp.c confpars.c db.c class.c failover.c \
fad460
 		omapi.c mdb.c stables.c salloc.c ddns.c dhcpleasequery.c \
fad460
-		dhcpv6.c mdb6.c ldap.c ldap_casa.c
fad460
+		dhcpv6.c mdb6.c ldap.c ldap_casa.c probes.d trace.h
fad460
 
fad460
 dhcpd_CFLAGS = $(LDAP_CFLAGS)
fad460
 dhcpd_LDADD = ../common/libdhcp.a ../omapip/libomapi.la \
fad460
@@ -19,3 +19,13 @@ dhcpd_LDADD = ../common/libdhcp.a ../oma
fad460
 man_MANS = dhcpd.8 dhcpd.conf.5 dhcpd.leases.5
fad460
 EXTRA_DIST = $(man_MANS)
fad460
 
fad460
+if ENABLE_SYSTEMTAP
fad460
+BUILT_SOURCES = probes.h
fad460
+probes.h: probes.d
fad460
+	$(DTRACE) -C -h -s $< -o $@
fad460
+
fad460
+probes.o: probes.d
fad460
+	$(DTRACE) -C -G -s $< -o $@
fad460
+
fad460
+dhcpd_LDADD += probes.o
fad460
+endif
fad460
diff -up dhcp-4.2.5b1/server/probes.d.systemtap dhcp-4.2.5b1/server/probes.d
fad460
--- dhcp-4.2.5b1/server/probes.d.systemtap	2012-12-17 16:56:40.603880790 +0100
fad460
+++ dhcp-4.2.5b1/server/probes.d	2012-12-17 16:56:40.603880790 +0100
fad460
@@ -0,0 +1,43 @@
fad460
+provider dhcpd {
fad460
+	 probe main();
fad460
+	 probe discover_start()
fad460
+	 probe discover_done()
fad460
+	 probe request_start()
fad460
+	 probe request_done()
fad460
+	 probe release_start()
fad460
+	 probe release_done()
fad460
+	 probe decline_start()
fad460
+	 probe decline_done()
fad460
+	 probe inform_start()
fad460
+	 probe inform_done()
fad460
+	 probe nak_lease_start()
fad460
+	 probe nak_lease_done()
fad460
+	 probe ack_lease_start()
fad460
+	 probe ack_lease_done()
fad460
+	 probe reply_start()
fad460
+	 probe reply_done()
fad460
+	 probe find_lease_start()
fad460
+	 probe find_lease_done()
fad460
+	 probe 6_solicit_start()
fad460
+	 probe 6_solicit_done()
fad460
+	 probe 6_request_start()
fad460
+	 probe 6_request_done()
fad460
+	 probe 6_confirm_start()
fad460
+	 probe 6_confirm_done()
fad460
+	 probe 6_renew_start()
fad460
+	 probe 6_renew_done()
fad460
+	 probe 6_rebind_start()
fad460
+	 probe 6_rebind_done()
fad460
+	 probe 6_decline_start()
fad460
+	 probe 6_decline_done()
fad460
+	 probe 6_release_start()
fad460
+	 probe 6_release_done()
fad460
+	 probe 6_information_request_start()
fad460
+	 probe 6_information_request_done()
fad460
+	 probe 6_relay_forw_start()
fad460
+	 probe 6_relay_forw_done()
fad460
+	 probe failover_pool_dobalance_start()
fad460
+	 probe failover_pool_dobalance_done()
fad460
+	 probe failover_set_state_start(int, int) /* state, new_state */
fad460
+	 probe failover_set_state_done()
fad460
+};
fad460
diff -up dhcp-4.2.5b1/server/tests/Makefile.am.systemtap dhcp-4.2.5b1/server/tests/Makefile.am
fad460
--- dhcp-4.2.5b1/server/tests/Makefile.am.systemtap	2012-12-17 16:56:40.564881302 +0100
fad460
+++ dhcp-4.2.5b1/server/tests/Makefile.am	2012-12-17 16:56:57.505650518 +0100
fad460
@@ -20,6 +20,10 @@ DHCPSRC = ../dhcp.c ../bootp.c ../confpa
fad460
 DHCPLIBS = $(top_builddir)/common/libdhcp.a $(top_builddir)/omapip/libomapi.la    \
fad460
           $(top_builddir)/dhcpctl/libdhcpctl.la $(BIND9_LIBDIR) -ldns-export -lisc-export
fad460
 
fad460
+if ENABLE_SYSTEMTAP
fad460
+DHCPLIBS += ../probes.o
fad460
+endif
fad460
+
fad460
 ATF_TESTS =
fad460
 TESTS = 
fad460
 if HAVE_ATF
fad460
diff -up dhcp-4.2.5b1/server/trace.h.systemtap dhcp-4.2.5b1/server/trace.h
fad460
--- dhcp-4.2.5b1/server/trace.h.systemtap	2012-12-17 16:56:40.604880777 +0100
fad460
+++ dhcp-4.2.5b1/server/trace.h	2012-12-17 16:56:40.604880777 +0100
fad460
@@ -0,0 +1,11 @@
fad460
+// trace.h
fad460
+
fad460
+#include "config.h"
fad460
+#ifdef HAVE_SYSTEMTAP
fad460
+// include the generated probes header and put markers in code
fad460
+#include "probes.h"
fad460
+#define TRACE(probe) probe
fad460
+#else
fad460
+// Wrap the probe to allow it to be removed when no systemtap available
fad460
+#define TRACE(probe)
fad460
+#endif
fad460
diff -up dhcp-4.2.5b1/tapset/dhcpd.stp.systemtap dhcp-4.2.5b1/tapset/dhcpd.stp
fad460
--- dhcp-4.2.5b1/tapset/dhcpd.stp.systemtap	2012-12-17 16:56:40.604880777 +0100
fad460
+++ dhcp-4.2.5b1/tapset/dhcpd.stp	2012-12-17 16:56:40.604880777 +0100
fad460
@@ -0,0 +1,212 @@
fad460
+/* dhcpd tapset
fad460
+   Copyright (C) 2011, Red Hat Inc.
fad460
+ */
fad460
+
fad460
+probe dhcpd_main = process("dhcpd").mark("main")
fad460
+{
fad460
+  probestr = sprintf("%s(locals: %s)", $$name, $$locals);
fad460
+  
fad460
+}
fad460
+
fad460
+probe dhcpd_discover_start = process("dhcpd").mark("discover_start")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_discover_done = process("dhcpd").mark("discover_done")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_request_start = process("dhcpd").mark("request_start")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_request_done = process("dhcpd").mark("request_done")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_release_start = process("dhcpd").mark("release_start")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_release_done = process("dhcpd").mark("release_done")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_decline_start = process("dhcpd").mark("decline_start")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_decline_done = process("dhcpd").mark("decline_done")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_inform_start = process("dhcpd").mark("inform_start")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_inform_done = process("dhcpd").mark("inform_done")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_nak_lease_start = process("dhcpd").mark("nak_lease_start")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_nak_lease_done = process("dhcpd").mark("nak_lease_done")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_ack_lease_start = process("dhcpd").mark("ack_lease_start")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_ack_lease_done = process("dhcpd").mark("ack_lease_done")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_reply_start = process("dhcpd").mark("reply_start")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_reply_done = process("dhcpd").mark("reply_done")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_find_lease_start = process("dhcpd").mark("find_lease_start")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_find_lease_done = process("dhcpd").mark("find_lease_done")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_6_solicit_start = process("dhcpd").mark("6_solicit_start")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_6_solicit_done = process("dhcpd").mark("6_solicit_done")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_6_request_start = process("dhcpd").mark("6_request_start")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_6_request_done = process("dhcpd").mark("6_request_done")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_6_confirm_start = process("dhcpd").mark("6_confirm_start")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_6_confirm_done = process("dhcpd").mark("6_confirm_done")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_6_renew_start = process("dhcpd").mark("6_renew_start")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_6_renew_done = process("dhcpd").mark("6_renew_done")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_6_rebind_start = process("dhcpd").mark("6_rebind_start")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_6_rebind_done = process("dhcpd").mark("6_rebind_done")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_6_decline_start = process("dhcpd").mark("6_decline_start")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_6_decline_done = process("dhcpd").mark("6_decline_done")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_6_release_start = process("dhcpd").mark("6_release_start")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_6_release_done = process("dhcpd").mark("6_release_done")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_6_information_request_start = process("dhcpd").mark("6_information_request_start")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_6_information_request_done = process("dhcpd").mark("6_information_request_done")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_6_relay_forw_start = process("dhcpd").mark("6_relay_forw_start")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_6_relay_forw_done = process("dhcpd").mark("6_relay_forw_done")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_failover_pool_dobalance_start = process("dhcpd").mark("failover_pool_dobalance_start")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+probe dhcpd_failover_pool_dobalance_done = process("dhcpd").mark("failover_pool_dobalance_done")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
+
fad460
+
fad460
+probe dhcpd_failover_set_state_start = process("dhcpd").mark("failover_set_state_start")
fad460
+{
fad460
+  state = $arg1;
fad460
+  new_state = $arg2;
fad460
+  probestr = sprintf("%s(state=%d, new_state=%d)", $$name, state, new_state);
fad460
+}
fad460
+
fad460
+probe dhcpd_failover_set_state_done = process("dhcpd").mark("failover_set_state_done")
fad460
+{
fad460
+  probestr = sprintf("%s", $$name);
fad460
+}
fad460
diff -up dhcp-4.2.5b1/tapset/Makefile.am.systemtap dhcp-4.2.5b1/tapset/Makefile.am
fad460
--- dhcp-4.2.5b1/tapset/Makefile.am.systemtap	2012-12-17 16:56:40.604880777 +0100
fad460
+++ dhcp-4.2.5b1/tapset/Makefile.am	2012-12-17 16:56:40.604880777 +0100
fad460
@@ -0,0 +1,26 @@
fad460
+# Makefile.am for dhcp/tapset
fad460
+# Jiri Popelka
fad460
+
fad460
+.PHONY: clean-local install-data-hook uninstall-local
fad460
+
fad460
+#
fad460
+EXTRA_DIST = dhcpd.stp
fad460
+TAPSET_FILES = $(EXTRA_DIST)
fad460
+TAPSET_INSTALL_DIR = $(DESTDIR)@ABS_TAPSET_DIR@
fad460
+
fad460
+if ENABLE_SYSTEMTAP
fad460
+all-local: $(TAPSET_FILES)
fad460
+
fad460
+clean-local:
fad460
+
fad460
+install-data-hook:
fad460
+	$(MKDIR_P) $(TAPSET_INSTALL_DIR)
fad460
+	$(INSTALL_DATA) $(TAPSET_FILES) $(TAPSET_INSTALL_DIR)
fad460
+
fad460
+uninstall-local:
fad460
+	@list='$(TAPSET_FILES)'; for p in $$list; do \
fad460
+	  echo " rm -f '$(TAPSET_INSTALL_DIR)/$$p'"; \
fad460
+	  rm -f "$(TAPSET_INSTALL_DIR)/$$p"; \
fad460
+	done
fad460
+endif
fad460
+