aboutsummaryrefslogtreecommitdiff
path: root/src/testbed/testbed.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/testbed/testbed.h')
-rw-r--r--src/testbed/testbed.h535
1 files changed, 535 insertions, 0 deletions
diff --git a/src/testbed/testbed.h b/src/testbed/testbed.h
new file mode 100644
index 0000000..b7b10ff
--- /dev/null
+++ b/src/testbed/testbed.h
@@ -0,0 +1,535 @@
+/*
+ This file is part of GNUnet
+ (C) 2012 Christian Grothoff (and other contributing authors)
+
+ GNUnet is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version.
+
+ GNUnet is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GNUnet; see the file COPYING. If not, write to the
+ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ */
+
+/**
+ * @file testbed/testbed.h
+ * @brief IPC messages between testing API and service ("controller")
+ * @author Christian Grothoff
+ */
+
+#ifndef NEW_TESTING_H
+#define NEW_TESTING_H
+
+#include "gnunet_util_lib.h"
+
+
+/**
+ * Initial message from a client to a testing control service.
+ */
+struct GNUNET_TESTBED_Message
+{
+
+ /**
+ * Type is
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * Host ID that the controller is either given
+ * (if this is the dominating client communicating
+ * via stdin) or assumed to have (for peer-connections
+ * between controllers).
+ */
+ uint32_t host_id GNUNET_PACKED;
+
+ /**
+ * Event mask that specifies which events this client
+ * is interested in. In NBO.
+ */
+ uint64_t event_mask GNUNET_PACKED;
+
+};
+
+
+/**
+ * Notify the service about a host that we intend to use.
+ */
+struct GNUNET_TESTBED_AddHostMessage
+{
+
+ /**
+ * Type is
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * Unique ID for the host (in NBO).
+ */
+ uint32_t host_id GNUNET_PACKED;
+
+ /**
+ * SSH port to use, 0 for default (in NBO).
+ */
+ uint16_t ssh_port GNUNET_PACKED;
+
+ /**
+ * Number of bytes in the user name that follows;
+ * 0 to use no user name; otherwise 'strlen (username)',
+ * excluding 0-termination!
+ */
+ uint16_t user_name_length GNUNET_PACKED;
+
+ /* followed by 0-terminated user name */
+
+ /* followed by 0-terminated host name */
+
+};
+
+
+/**
+ * Confirmation from the service that adding a host
+ * worked (or failed).
+ */
+struct GNUNET_TESTBED_HostConfirmedMessage
+{
+
+ /**
+ * Type is
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * Unique ID for the host (in NBO).
+ */
+ uint32_t host_id GNUNET_PACKED;
+
+ /* followed by the 0-terminated error message (on failure)
+ (typical errors include failure to login and
+ host-id already in use) */
+
+};
+
+
+/**
+ * Message to testing service: configure service sharing
+ * at a host.
+ */
+struct GNUNET_TESTBED_ConfigureSharedServiceMessage
+{
+
+ /**
+ * Type is
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * Host that is being configured.
+ */
+ uint32_t host_id GNUNET_PACKED;
+
+ /**
+ * Number of peers that should share a service instance;
+ * 1 for no sharing, 0 to forcefully disable the service.
+ */
+ uint32_t num_peers GNUNET_PACKED;
+
+ /* followed by 0-terminated name of the service */
+
+};
+
+
+/**
+ * Client notifies controller that it should delegate
+ * requests for a particular client to a particular
+ * sub-controller.
+ */
+struct GNUNET_TESTBED_ControllerLinkMessage
+{
+
+ /**
+ * Type is
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * For which host should requests be delegated? NBO.
+ */
+ uint32_t delegated_host_id GNUNET_PACKED;
+
+ /**
+ * Which host is responsible for managing the delegation? NBO
+ */
+ uint32_t slave_host_id GNUNET_PACKED;
+
+ /**
+ * Is the receiving controller the master controller for
+ * the slave host (and thus responsible for starting it?). NBO.
+ */
+ int32_t is_subordinate GNUNET_PACKED;
+
+ /* followed by serialized slave configuration;
+ gzip'ed configuration file in INI format */
+
+};
+
+
+/**
+ * Message sent from client to testing service to
+ * create (configure, but not start) a peer.
+ */
+struct GNUNET_TESTBED_PeerCreateMessage
+{
+
+ /**
+ * Type is
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * On which host should the peer be started?
+ */
+ uint32_t host_id GNUNET_PACKED;
+
+ /**
+ * Unique ID for the peer.
+ */
+ uint32_t peer_id GNUNET_PACKED;
+
+ /* followed by serialized peer configuration;
+ gzip'ed configuration file in INI format */
+
+};
+
+
+/**
+ * Message sent from client to testing service to
+ * reconfigure a (stopped) a peer.
+ */
+struct GNUNET_TESTBED_PeerReconfigureMessage
+{
+
+ /**
+ * Type is
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * Unique ID for the peer.
+ */
+ uint32_t peer_id GNUNET_PACKED;
+
+ /**
+ * Operation ID that is used to identify this operation.
+ */
+ uint64_t operation_id GNUNET_PACKED;
+
+ /* followed by serialized peer configuration;
+ gzip'ed configuration file in INI format */
+
+};
+
+
+/**
+ * Message sent from client to testing service to
+ * start a peer.
+ */
+struct GNUNET_TESTBED_PeerStartMessage
+{
+
+ /**
+ * Type is
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * Unique ID for the peer.
+ */
+ uint32_t peer_id GNUNET_PACKED;
+
+ /**
+ * Operation ID that is used to identify this operation.
+ */
+ uint64_t operation_id GNUNET_PACKED;
+
+};
+
+
+/**
+ * Message sent from client to testing service to
+ * stop a peer.
+ */
+struct GNUNET_TESTBED_PeerStopMessage
+{
+
+ /**
+ * Type is
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * Unique ID for the peer.
+ */
+ uint32_t peer_id GNUNET_PACKED;
+
+ /**
+ * Operation ID that is used to identify this operation.
+ */
+ uint64_t operation_id GNUNET_PACKED;
+
+};
+
+
+/**
+ * Message sent from client to testing service to
+ * destroy a (stopped) peer.
+ */
+struct GNUNET_TESTBED_PeerDestroyMessage
+{
+
+ /**
+ * Type is
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * Unique ID for the peer.
+ */
+ uint32_t peer_id GNUNET_PACKED;
+
+ /**
+ * Operation ID that is used to identify this operation.
+ */
+ uint64_t operation_id GNUNET_PACKED;
+
+};
+
+
+/**
+ * Message sent from client to testing service to
+ * (re)configure a "physical" link between two peers.
+ */
+struct GNUNET_TESTBED_ConfigureUnderlayLinkMessage
+{
+
+ /**
+ * Type is
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * 'enum GNUNET_TESTBED_ConnectOption' of the option to change
+ */
+ int32_t connect_option GNUNET_PACKED;
+
+ /**
+ * Unique ID for the first peer.
+ */
+ uint32_t peer1 GNUNET_PACKED;
+
+ /**
+ * Unique ID for the second peer.
+ */
+ uint32_t peer2 GNUNET_PACKED;
+
+ /**
+ * Operation ID that is used to identify this operation.
+ */
+ uint64_t operation_id GNUNET_PACKED;
+
+ /* followed by option-dependent variable-size values */
+
+};
+
+
+/**
+ * Message sent from client to testing service to
+ * connect two peers.
+ */
+struct GNUNET_TESTBED_OverlayConnectMessage
+{
+
+ /**
+ * Type is
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * Unique ID for the first peer.
+ */
+ uint32_t peer1 GNUNET_PACKED;
+
+ /**
+ * Operation ID that is used to identify this operation.
+ */
+ uint64_t operation_id GNUNET_PACKED;
+
+ /**
+ * Unique ID for the second peer.
+ */
+ uint32_t peer2 GNUNET_PACKED;
+
+};
+
+
+/**
+ * Event notification from a controller to a client.
+ */
+struct GNUNET_TESTBED_PeerEventMessage
+{
+
+ /**
+ * Type is
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * 'enum GNUNET_TESTBED_EventType' (in NBO);
+ * either GNUNET_TESTBED_ET_PEER_START or GNUNET_TESTBED_ET_PEER_STOP.
+ */
+ int32_t event_type GNUNET_PACKED;
+
+ /**
+ * Host where the peer is running.
+ */
+ uint32_t host_id GNUNET_PACKED;
+
+ /**
+ * Peer that was started or stopped.
+ */
+ uint32_t peer_id GNUNET_PACKED;
+
+ /**
+ * Operation ID that is used to identify this operation.
+ */
+ uint64_t operation_id GNUNET_PACKED;
+
+};
+
+
+/**
+ * Event notification from a controller to a client.
+ */
+struct GNUNET_TESTBED_ConnectionEventMessage
+{
+
+ /**
+ * Type is
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * 'enum GNUNET_TESTBED_EventType' (in NBO);
+ * either GNUNET_TESTBED_ET_PEER_CONNECT or GNUNET_TESTBED_ET_PEER_DISCONNECT.
+ */
+ int32_t event_type GNUNET_PACKED;
+
+ /**
+ * First peer.
+ */
+ uint32_t peer1 GNUNET_PACKED;
+
+ /**
+ * Second peer.
+ */
+ uint32_t peer2 GNUNET_PACKED;
+
+ /**
+ * Operation ID that is used to identify this operation.
+ */
+ uint64_t operation_id GNUNET_PACKED;
+
+};
+
+
+/**
+ * Event notification from a controller to a client.
+ */
+struct GNUNET_TESTBED_OperationFailureEventMessage
+{
+
+ /**
+ * Type is
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * 'enum GNUNET_TESTBED_EventType' (in NBO);
+ * GNUNET_TESTBED_ET_OPERATION_FINISHED.
+ */
+ int32_t event_type GNUNET_PACKED;
+
+ /**
+ * Operation ID of the operation that created this event.
+ */
+ uint64_t operation_id GNUNET_PACKED;
+
+ /* followed by 0-terminated error message */
+
+};
+
+
+/**
+ * Event notification from a controller to a client.
+ */
+struct GNUNET_TESTBED_PeerCreateSuccessEventMessage
+{
+
+ /**
+ * Type is
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * Peer identity of the peer that was created.
+ */
+ uint32_t peer_id GNUNET_PACKED;
+
+ /**
+ * Operation ID of the operation that created this event.
+ */
+ uint64_t operation_id GNUNET_PACKED;
+
+ /**
+ * Identity of the peer.
+ */
+ struct GNUNET_PeerIdentity peer_id;
+
+ /* followed by gzip-compressed configuration of the peer */
+
+};
+
+
+/**
+ * Event notification from a controller to a client for
+ * a generic operational success where the operation does
+ * not return any data.
+ */
+struct GNUNET_TESTBED_GenericOperationSuccessEventMessage
+{
+
+ /**
+ * Type is
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * 'enum GNUNET_TESTBED_EventType' (in NBO);
+ * GNUNET_TESTBED_ET_OPERATION_FINISHED.
+ */
+ int32_t event_type GNUNET_PACKED;
+
+ /**
+ * Operation ID of the operation that created this event.
+ */
+ uint64_t operation_id GNUNET_PACKED;
+
+};
+
+#endif