/**
* Initial message from a client to a testing control service.
*/
- struct GNUNET_TESTBED_InitMessage
+struct GNUNET_TESTBED_InitMessage
{
/**
- * Type is GNUNET_MESSAGE_TYPE_TESTBED_INIT
+ * Type is #GNUNET_MESSAGE_TYPE_TESTBED_INIT
*/
struct GNUNET_MessageHeader header;
};
-/**
- * Message to testing service: configure service sharing
- * at a host.
- */
-struct GNUNET_TESTBED_ConfigureSharedServiceMessage
-{
-
- /**
- * Type is GNUNET_MESSAGE_TYPE_TESTBED_SHARE_SERVICE
- */
- 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
*/
struct GNUNET_TESTBED_ControllerLinkResponse
{
-
+
/**
* Type is GNUNET_MESSAGE_TYPE_TESTBED_LINK_CONTROLLERS_RESULT
*/
struct GNUNET_MessageHeader header;
/**
- * Unique operation id
+ * On which host should the peer be started?
*/
- uint64_t operation_id GNUNET_PACKED;
+ uint32_t host_id GNUNET_PACKED;
/**
- * On which host should the peer be started?
+ * Unique operation id
*/
- uint32_t host_id GNUNET_PACKED;
+ uint64_t operation_id GNUNET_PACKED;
/**
* Unique ID for the peer.
/**
* Size of the uncompressed configuration
*/
- uint32_t config_size GNUNET_PACKED;
+ uint16_t config_size GNUNET_PACKED;
/* followed by serialized peer configuration;
* gzip'ed configuration file in INI format */
{
/**
- * Type is GNUNET_MESSAGE_TYPDE_TESTBED_RECONFIGURE_PEER
+ * Type is #GNUNET_MESSAGE_TYPE_TESTBED_RECONFIGURE_PEER
*/
struct GNUNET_MessageHeader header;
*/
uint64_t operation_id GNUNET_PACKED;
+ /**
+ * The length of the serialized configuration when uncompressed
+ */
+ uint16_t config_size GNUNET_PACKED;
+
/* followed by serialized peer configuration;
* gzip'ed configuration file in INI format */
{
/**
- * Type is GNUNET_MESSAGE_TYPE_TESTBED_START_PEER
+ * Type is #GNUNET_MESSAGE_TYPE_TESTBED_START_PEER
*/
struct GNUNET_MessageHeader header;
{
/**
- * Type is GNUNET_MESSAGE_TYPE_TESTBED_STOP_PEER
+ * Type is #GNUNET_MESSAGE_TYPE_TESTBED_STOP_PEER
*/
struct GNUNET_MessageHeader header;
{
/**
- * Type is GNUNET_MESSAGE_TYPE_TESTBED_DESTROY_PEER
+ * Type is #GNUNET_MESSAGE_TYPE_TESTBED_DESTROY_PEER
*/
struct GNUNET_MessageHeader header;
{
/**
- * Type is GNUNET_MESSAGE_TYPE_TESTBED_CONFIGURE_UNDERLAY_LINK
+ * Type is #GNUNET_MESSAGE_TYPE_TESTBED_CONFIGURE_UNDERLAY_LINK
*/
struct GNUNET_MessageHeader header;
{
/**
- * Type is GNUNET_MESSAGE_TYPE_TESTBED_OVERLAY_CONNECT
+ * Type is #GNUNET_MESSAGE_TYPE_TESTBED_OVERLAY_CONNECT
*/
struct GNUNET_MessageHeader header;
struct GNUNET_TESTBED_RemoteOverlayConnectMessage
{
/**
- * Type is GNUNET_MESSAGE_TYPE_TESTBED_REMOTE_OVERLAY_CONNECT
+ * Type is #GNUNET_MESSAGE_TYPE_TESTBED_REMOTE_OVERLAY_CONNECT
*/
struct GNUNET_MessageHeader header;
* To be followed by the HELLO message of A
*/
struct GNUNET_MessageHeader hello[0];
+ // FIXME: we usually do not use this gcc-hack as some
+ // compilers / tools really get messed up by it...
};
{
/**
- * Type is GNUNET_MESSAGE_TYPE_TESTBED_PEER_EVENT
+ * Type is #GNUNET_MESSAGE_TYPE_TESTBED_PEER_EVENT
*/
struct GNUNET_MessageHeader header;
/**
- * 'enum GNUNET_TESTBED_EventType' (in NBO);
- * either GNUNET_TESTBED_ET_PEER_START or GNUNET_TESTBED_ET_PEER_STOP.
+ * `enum GNUNET_TESTBED_EventType` (in NBO);
+ * either #GNUNET_TESTBED_ET_PEER_START or #GNUNET_TESTBED_ET_PEER_STOP.
*/
int32_t event_type GNUNET_PACKED;
{
/**
- * Type is GNUNET_MESSAGE_TYPE_TESTBED_GET_PEER_CONFIGURATION
+ * Type is GNUNET_MESSAGE_TYPE_TESTBED_GET_PEER_INFORMATION
*/
struct GNUNET_MessageHeader header;
{
/**
- * Type is GNUNET_MESSAGE_TYPE_TESTBED_PEER_CONFIGURATION
+ * Type is #GNUNET_MESSAGE_TYPE_TESTBED_PEER_INFORMATION
*/
struct GNUNET_MessageHeader header;
/**
- * Reply to GNUNET_MESSAGE_TYPE_TESTBED_GET_SLAVE_CONFIG message
+ * Reply to #GNUNET_MESSAGE_TYPE_TESTBED_GET_SLAVE_CONFIG message
*/
struct GNUNET_TESTBED_SlaveConfiguration
{
* set this to 1 to start the service; 0 to stop the service
*/
uint8_t start;
-
+
/**
* The NULL-terminated name of the service to start/stop follows here
*/
};
+/**************************************/
+/* Barriers IPC messages and protocol */
+/**************************************/
+
+
+/**
+ * The environmental variable which when available refers to the configuration
+ * file the local testbed controller is using
+ */
+#define ENV_TESTBED_CONFIG "GNUNET_TESTBED_CONTROLLER_CONFIG"
+
+
+/**
+ * Message to initialise a barrier
+ */
+struct GNUNET_TESTBED_BarrierInit
+{
+ /**
+ * Type is GNUNET_MESSAGE_TYPE_TESTBED_BARRIER_INIT
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * The quorum percentage needed for crossing the barrier
+ */
+ uint8_t quorum;
+
+ /**
+ * name of the barrier. Non NULL-terminated.
+ */
+ char name[0];
+};
+
+
+/**
+ * Message to cancel a barrier
+ */
+struct GNUNET_TESTBED_BarrierCancel
+{
+ /**
+ * Type is GNUNET_MESSAGE_TYPE_TESTBED_BARRIER_CANCEL
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * The barrier name. Non NULL terminated
+ */
+ char name[0];
+};
+
+
+/**
+ * Message for signalling status changes of a barrier
+ */
+struct GNUNET_TESTBED_BarrierStatusMsg
+{
+ /**
+ * Type is GNUNET_MESSAGE_TYPE_TESTBED_BARRIER_STATUS
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * status. Use enumerated values of enum BarrierStatus
+ */
+ uint16_t status GNUNET_PACKED;
+
+ /**
+ * strlen of the barrier name
+ */
+ uint16_t name_len GNUNET_PACKED;
+
+ /**
+ * the barrier name (NULL terminated) concatenated with an error message (NULL
+ * terminated) if the status were to indicate an error
+ */
+ char data[0];
+};
+
+
+/**
+ * Message sent from peers to the testbed-barrier service to indicate that they
+ * have reached a barrier and are waiting for it to be crossed
+ */
+struct GNUNET_TESTBED_BarrierWait
+{
+ /**
+ * Type is GNUNET_MESSAGE_TYPE_TESTBED_BARRIER_WAIT
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * The name of the barrier they have reached. Non-NULL terminated.
+ */
+ char name[0];
+};
+
+
GNUNET_NETWORK_STRUCT_END
#endif
/* end of testbed.h */