+}
+
+
+/**
+ * Define "main" method using service macro.
+ *
+ * @param name name of the service, i.e. "dht" or "xdht"
+ * @param run name of the initializaton method for the service
+ */
+#define GDS_DHT_SERVICE_INIT(name,run) \
+ GNUNET_SERVICE_MAIN \
+ (name, \
+ GNUNET_SERVICE_OPTION_NONE, \
+ run, \
+ &client_connect_cb, \
+ &client_disconnect_cb, \
+ NULL, \
+ GNUNET_MQ_hd_var_size (dht_local_put, \
+ GNUNET_MESSAGE_TYPE_DHT_CLIENT_PUT, \
+ struct GNUNET_DHT_ClientPutMessage, \
+ NULL), \
+ GNUNET_MQ_hd_var_size (dht_local_get, \
+ GNUNET_MESSAGE_TYPE_DHT_CLIENT_GET, \
+ struct GNUNET_DHT_ClientGetMessage, \
+ NULL), \
+ GNUNET_MQ_hd_fixed_size (dht_local_get_stop, \
+ GNUNET_MESSAGE_TYPE_DHT_CLIENT_GET_STOP, \
+ struct GNUNET_DHT_ClientGetStopMessage, \
+ NULL), \
+ GNUNET_MQ_hd_fixed_size (dht_local_monitor, \
+ GNUNET_MESSAGE_TYPE_DHT_MONITOR_START, \
+ struct GNUNET_DHT_MonitorStartStopMessage, \
+ NULL), \
+ GNUNET_MQ_hd_fixed_size (dht_local_monitor_stop, \
+ GNUNET_MESSAGE_TYPE_DHT_MONITOR_STOP, \
+ struct GNUNET_DHT_MonitorStartStopMessage, \
+ NULL), \
+ GNUNET_MQ_hd_var_size (dht_local_get_result_seen, \
+ GNUNET_MESSAGE_TYPE_DHT_CLIENT_GET_RESULTS_KNOWN, \
+ struct GNUNET_DHT_ClientGetResultSeenMessage , \
+ NULL), \
+ GNUNET_MQ_handler_end ())
+
+
+/**
+ * MINIMIZE heap size (way below 128k) since this process doesn't need much.
+ */
+void __attribute__ ((destructor))
+GDS_CLIENTS_done ()
+{