From b510c934e38ef0eb4ea959af5be94f4490ddb667 Mon Sep 17 00:00:00 2001 From: Sree Harsha Totakura Date: Fri, 29 Jun 2012 15:26:52 +0000 Subject: [PATCH] -host registration with controller --- src/testbed/testbed_api.c | 8 ++++---- src/testbed/testbed_api_hosts.c | 23 +++++++++++++++-------- src/testbed/testbed_api_hosts.h | 12 +++++++++--- 3 files changed, 28 insertions(+), 15 deletions(-) diff --git a/src/testbed/testbed_api.c b/src/testbed/testbed_api.c index 6f5ed2d6e..20e6810af 100644 --- a/src/testbed/testbed_api.c +++ b/src/testbed/testbed_api.c @@ -255,7 +255,7 @@ handle_addhostconfirm (struct GNUNET_TESTBED_Controller *c, if (sizeof (struct GNUNET_TESTBED_HostConfirmedMessage) == msg_size) { LOG_DEBUG ("Host %u successfully registered\n", ntohl (msg->host_id)); - GNUNET_TESTBED_mark_host_as_registered_ (rh->host); + GNUNET_TESTBED_mark_host_as_registered_ (rh->host, c); rh->cc (rh->cc_cls, NULL); GNUNET_free (rh); return GNUNET_OK; @@ -541,7 +541,7 @@ GNUNET_TESTBED_register_host (struct GNUNET_TESTBED_Controller *controller, if (NULL != controller->rh) return NULL; hostname = GNUNET_TESTBED_host_get_hostname_ (host); - if (GNUNET_YES == GNUNET_TESTBED_is_host_registered_ (host)) + if (GNUNET_YES == GNUNET_TESTBED_is_host_registered_ (host, controller)) { LOG (GNUNET_ERROR_TYPE_WARNING, "Host hostname: %s already registered\n", @@ -638,9 +638,9 @@ GNUNET_TESTBED_controller_link (struct GNUNET_TESTBED_Controller *master, uint16_t msg_size; GNUNET_assert (GNUNET_YES == - GNUNET_TESTBED_is_host_registered_ (delegated_host)); + GNUNET_TESTBED_is_host_registered_ (delegated_host, master)); GNUNET_assert (GNUNET_YES == - GNUNET_TESTBED_is_host_registered_ (slave_host)); + GNUNET_TESTBED_is_host_registered_ (slave_host, master)); config = GNUNET_CONFIGURATION_serialize (slave_cfg, &config_size); cc_size = compressBound ((uLong) config_size); cconfig = GNUNET_malloc (cc_size); diff --git a/src/testbed/testbed_api_hosts.c b/src/testbed/testbed_api_hosts.c index 766a87ad2..3df6e14fe 100644 --- a/src/testbed/testbed_api_hosts.c +++ b/src/testbed/testbed_api_hosts.c @@ -63,6 +63,11 @@ struct GNUNET_TESTBED_Host */ const char *username; + /** + * The controller at which this host is registered + */ + const struct GNUNET_TESTBED_Controller *controller; + /** * Global ID we use to refer to a host on the network */ @@ -73,10 +78,6 @@ struct GNUNET_TESTBED_Host */ uint16_t port; - /** - * Set this flag to 1 if host is registered with a controller; 0 if not - */ - uint8_t is_registered; }; @@ -385,11 +386,14 @@ GNUNET_TESTBED_host_stop_ (struct GNUNET_TESTBED_HelperHandle *handle) * Marks a host as registered with a controller * * @param host the host to mark + * @param controller the controller at which this host is registered */ void -GNUNET_TESTBED_mark_host_as_registered_ (struct GNUNET_TESTBED_Host *host) +GNUNET_TESTBED_mark_host_as_registered_ (struct GNUNET_TESTBED_Host *host, + const struct GNUNET_TESTBED_Controller + *controller) { - host->is_registered = 1; + host->controller = controller; } @@ -397,12 +401,15 @@ GNUNET_TESTBED_mark_host_as_registered_ (struct GNUNET_TESTBED_Host *host) * Checks whether a host has been registered * * @param host the host to check + * @param controller the controller at which host's registration is checked * @return GNUNET_YES if registered; GNUNET_NO if not */ int -GNUNET_TESTBED_is_host_registered_ (const struct GNUNET_TESTBED_Host *host) +GNUNET_TESTBED_is_host_registered_ (const struct GNUNET_TESTBED_Host *host, + const struct GNUNET_TESTBED_Controller + *controller) { - return (1 == host->is_registered) ? GNUNET_YES : GNUNET_NO; + return (controller == host->controller) ? GNUNET_YES : GNUNET_NO; } diff --git a/src/testbed/testbed_api_hosts.h b/src/testbed/testbed_api_hosts.h index db7392b49..c941608f4 100644 --- a/src/testbed/testbed_api_hosts.h +++ b/src/testbed/testbed_api_hosts.h @@ -129,19 +129,25 @@ GNUNET_TESTBED_host_stop_ (struct GNUNET_TESTBED_HelperHandle *handle); * Marks a host as registered with a controller * * @param host the host to mark + * @param controller the controller at which this host is registered */ void -GNUNET_TESTBED_mark_host_as_registered_ (struct GNUNET_TESTBED_Host *host); +GNUNET_TESTBED_mark_host_as_registered_ (struct GNUNET_TESTBED_Host *host, + const struct GNUNET_TESTBED_Controller + *controller); /** - * Checks whether a host has been registered + * Checks whether a host has been registered with the given controller * * @param host the host to check + * @param controller the controller at which host's registration is checked * @return GNUNET_YES if registered; GNUNET_NO if not */ int -GNUNET_TESTBED_is_host_registered_ (const struct GNUNET_TESTBED_Host *host); +GNUNET_TESTBED_is_host_registered_ (const struct GNUNET_TESTBED_Host *host, + const struct GNUNET_TESTBED_Controller + *controller); #endif /* end of testbed_api_hosts.h */ -- 2.25.1