diff options
Diffstat (limited to 'src/testbed/gnunet-service-testbed.c')
-rw-r--r-- | src/testbed/gnunet-service-testbed.c | 56 |
1 files changed, 54 insertions, 2 deletions
diff --git a/src/testbed/gnunet-service-testbed.c b/src/testbed/gnunet-service-testbed.c index f58757596..a9a1f1147 100644 --- a/src/testbed/gnunet-service-testbed.c +++ b/src/testbed/gnunet-service-testbed.c | |||
@@ -29,8 +29,9 @@ | |||
29 | #include "gnunet_server_lib.h" | 29 | #include "gnunet_server_lib.h" |
30 | #include <zlib.h> | 30 | #include <zlib.h> |
31 | 31 | ||
32 | #include "testbed.h" | ||
33 | #include "gnunet_testbed_service.h" | 32 | #include "gnunet_testbed_service.h" |
33 | #include "testbed.h" | ||
34 | #include "testbed_api.h" | ||
34 | #include "testbed_api_hosts.h" | 35 | #include "testbed_api_hosts.h" |
35 | #include "gnunet_testing_lib-new.h" | 36 | #include "gnunet_testing_lib-new.h" |
36 | 37 | ||
@@ -1389,6 +1390,55 @@ handle_peer_stop (void *cls, | |||
1389 | 1390 | ||
1390 | 1391 | ||
1391 | /** | 1392 | /** |
1393 | * Handler for GNUNET_MESSAGE_TYPE_TESTBED_GETPEERCONFIG messages | ||
1394 | * | ||
1395 | * @param cls NULL | ||
1396 | * @param client identification of the client | ||
1397 | * @param message the actual message | ||
1398 | */ | ||
1399 | static void | ||
1400 | handle_peer_get_config (void *cls, | ||
1401 | struct GNUNET_SERVER_Client *client, | ||
1402 | const struct GNUNET_MessageHeader *message) | ||
1403 | { | ||
1404 | const struct GNUNET_TESTBED_PeerGetConfigurationMessage *msg; | ||
1405 | struct GNUNET_TESTBED_PeerConfigurationInformationMessage *reply; | ||
1406 | char *config; | ||
1407 | char *xconfig; | ||
1408 | size_t c_size; | ||
1409 | size_t xc_size; | ||
1410 | uint32_t peer_id; | ||
1411 | uint16_t msize; | ||
1412 | |||
1413 | msg = (const struct GNUNET_TESTBED_PeerGetConfigurationMessage *) message; | ||
1414 | peer_id = ntohl (msg->peer_id); | ||
1415 | if ((peer_id >= peer_list_size) || (NULL == peer_list[peer_id])) | ||
1416 | { | ||
1417 | /* FIXME: return FAILURE message */ | ||
1418 | GNUNET_break (0); | ||
1419 | GNUNET_SERVER_receive_done (client, GNUNET_OK); | ||
1420 | } | ||
1421 | config = GNUNET_CONFIGURATION_serialize (peer_list[peer_id]->cfg, | ||
1422 | &c_size); | ||
1423 | xc_size = GNUNET_TESTBED_compress_config_ (config, c_size, &xconfig); | ||
1424 | GNUNET_free (config); | ||
1425 | msize = xc_size + sizeof (struct | ||
1426 | GNUNET_TESTBED_PeerConfigurationInformationMessage); | ||
1427 | reply = GNUNET_realloc (xconfig, msize); | ||
1428 | (void) memmove (&reply[1], reply, xc_size); | ||
1429 | reply->header.size = htons (msize); | ||
1430 | reply->header.type = htons (GNUNET_MESSAGE_TYPE_TESTBED_PEERCONFIG); | ||
1431 | reply->peer_id = msg->peer_id; | ||
1432 | reply->operation_id = msg->operation_id; | ||
1433 | GNUNET_TESTING_peer_get_identity (peer_list[peer_id]->peer, | ||
1434 | &reply->peer_identity); | ||
1435 | reply->config_size = htons ((uint16_t) c_size); | ||
1436 | queue_message (client, &reply->header); | ||
1437 | GNUNET_SERVER_receive_done (client, GNUNET_OK); | ||
1438 | } | ||
1439 | |||
1440 | |||
1441 | /** | ||
1392 | * Iterator over hash map entries. | 1442 | * Iterator over hash map entries. |
1393 | * | 1443 | * |
1394 | * @param cls closure | 1444 | * @param cls closure |
@@ -1557,7 +1607,9 @@ testbed_run (void *cls, | |||
1557 | {&handle_peer_start, NULL, GNUNET_MESSAGE_TYPE_TESTBED_STARTPEER, | 1607 | {&handle_peer_start, NULL, GNUNET_MESSAGE_TYPE_TESTBED_STARTPEER, |
1558 | sizeof (struct GNUNET_TESTBED_PeerStartMessage)}, | 1608 | sizeof (struct GNUNET_TESTBED_PeerStartMessage)}, |
1559 | {&handle_peer_stop, NULL, GNUNET_MESSAGE_TYPE_TESTBED_STOPPEER, | 1609 | {&handle_peer_stop, NULL, GNUNET_MESSAGE_TYPE_TESTBED_STOPPEER, |
1560 | sizeof (struct GNUNET_TESTBED_PeerStopMessage)}, | 1610 | sizeof (struct GNUNET_TESTBED_PeerStopMessage)}, |
1611 | {&handle_peer_get_config, NULL, GNUNET_MESSAGE_TYPE_TESTBED_GETPEERCONFIG, | ||
1612 | sizeof (struct GNUNET_TESTBED_PeerGetConfigurationMessage)}, | ||
1561 | {NULL} | 1613 | {NULL} |
1562 | }; | 1614 | }; |
1563 | 1615 | ||