void *update_cb_cls;
/**
- * PID of the process that we started last.
+ * PID of the process we used to run gnunet-arm or SSH to start the peer.
*/
- struct GNUNET_OS_Process *proc;
+ struct GNUNET_OS_Process *proc_arm_start;
+
+ /**
+ * PID of the process we used to run gnunet-arm or SSH to stop the peer.
+ */
+ struct GNUNET_OS_Process *proc_arm_stop;
+
+ /**
+ * PID of the process we used to run gnunet-arm or SSH to manage services at the peer.
+ */
+ struct GNUNET_OS_Process *proc_arm_srv_start;
+
+ /**
+ * PID of the process we used to run gnunet-arm or SSH to manage services at the peer.
+ */
+ struct GNUNET_OS_Process *proc_arm_srv_stop;
+
+ /**
+ * PID of the process we used to run copy files
+ */
+ struct GNUNET_OS_Process *proc_arm_copying;
+
+ /**
+ * PID of the process we used to run gnunet-peerinfo.
+ */
+ struct GNUNET_OS_Process *proc_arm_peerinfo;
/**
* Handle to the server.
GNUNET_TESTING_test_daemon_running (struct GNUNET_TESTING_Daemon *daemon);
+/**
+ * Obtain the peer identity of the peer with the given configuration
+ * handle. This function reads the private key of the peer, obtains
+ * the public key and hashes it.
+ *
+ * @param cfg configuration of the peer
+ * @param pid where to store the peer identity
+ * @return GNUNET_OK on success, GNUNET_SYSERR on failure
+ */
+int
+GNUNET_TESTING_get_peer_identity (const struct GNUNET_CONFIGURATION_Handle *cfg,
+ struct GNUNET_PeerIdentity *pid);
+
+
/**
* Restart (stop and start) a GNUnet daemon.
*
int delete_files, int allow_restart);
+
+/**
+ * Create a new configuration using the given configuration
+ * as a template; however, each PORT in the existing cfg
+ * must be renumbered by incrementing "*port". If we run
+ * out of "*port" numbers, return NULL.
+ *
+ * @param cfg template configuration
+ * @param off the current peer offset
+ * @param port port numbers to use, update to reflect
+ * port numbers that were used
+ * @param upnum number to make unix domain socket names unique
+ * @param hostname hostname of the controlling host, to allow control connections from
+ * @param fdnum number used to offset the unix domain socket for grouped processes
+ * (such as statistics or peerinfo, which can be shared among others)
+ *
+ * @return new configuration, NULL on error
+ */
+struct GNUNET_CONFIGURATION_Handle *
+GNUNET_TESTING_create_cfg (const struct GNUNET_CONFIGURATION_Handle *cfg, uint32_t off,
+ uint16_t * port, uint32_t * upnum, const char *hostname,
+ uint32_t * fdnum);
+
/**
* Changes the configuration of a GNUnet daemon.
*