summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/transport/gnunet-service-transport.c32
-rw-r--r--src/transport/gnunet-service-transport_clients.c46
-rw-r--r--src/transport/gnunet-service-transport_validation.c102
-rw-r--r--src/transport/gnunet-service-transport_validation.h72
-rw-r--r--src/transport/gnunet-transport.c18
-rw-r--r--src/transport/transport.h9
-rw-r--r--src/transport/transport_api_monitoring.c42
7 files changed, 158 insertions, 163 deletions
diff --git a/src/transport/gnunet-service-transport.c b/src/transport/gnunet-service-transport.c
index 936742e7b..a41aa7f65 100644
--- a/src/transport/gnunet-service-transport.c
+++ b/src/transport/gnunet-service-transport.c
@@ -1009,35 +1009,6 @@ neighbours_changed_notification (void *cls,
GST_clients_broadcast_peer_notification (peer, address, state, state_timeout);
}
-/**
- * Function called to notify transport users that a neighbour peer changed its
- * active address.
- *
- * @param cls closure
- * @param peer peer this update is about (never NULL)
- * @param address address (never NULL)
- * @param last_validation point in time when last validation was performed
- * @param valid_until point in time how long address is valid
- * @param next_validation point in time when next validation will be performed
- * @param state state of validation notification
- */
-static void
-validation_changed_notification (void *cls,
- const struct GNUNET_PeerIdentity *peer,
- const struct GNUNET_HELLO_Address *address,
- struct GNUNET_TIME_Absolute last_validation,
- struct GNUNET_TIME_Absolute valid_until,
- struct GNUNET_TIME_Absolute next_validation,
- enum GNUNET_TRANSPORT_ValidationState state)
-{
- GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
- "Notifying about change for for validation entry for peer `%s' with address `%s'\n",
- GNUNET_i2s (peer),
- (NULL != address) ? GST_plugins_a2s (address) : "<none>");
-
- GST_clients_broadcast_validation_notification (peer, address,
- last_validation, valid_until, next_validation, state);
-}
/**
* Function called when the service shuts down. Unloads our plugins
@@ -1191,9 +1162,10 @@ run (void *cls, struct GNUNET_SERVER_Handle *server,
&neighbours_changed_notification,
(max_fd / 3) * 2);
GST_clients_start (GST_server);
- GST_validation_start (&validation_changed_notification, NULL, (max_fd / 3));
+ GST_validation_start ((max_fd / 3));
}
+
/**
* The main function for the transport service.
*
diff --git a/src/transport/gnunet-service-transport_clients.c b/src/transport/gnunet-service-transport_clients.c
index fc3abdd1a..29d506ab3 100644
--- a/src/transport/gnunet-service-transport_clients.c
+++ b/src/transport/gnunet-service-transport_clients.c
@@ -1115,10 +1115,11 @@ struct IterationContext
int all;
};
+
/**
* Output information of validation entries to the given client.
*
- * @param cls the 'struct IterationContext'
+ * @param cls the `struct IterationContext *`
* @param peer identity of the neighbour
* @param address the address
* @param last_validation point in time when last validation was performed
@@ -1128,12 +1129,12 @@ struct IterationContext
*/
static void
send_validation_information (void *cls,
- const struct GNUNET_PeerIdentity *peer,
- const struct GNUNET_HELLO_Address *address,
- struct GNUNET_TIME_Absolute last_validation,
- struct GNUNET_TIME_Absolute valid_until,
- struct GNUNET_TIME_Absolute next_validation,
- enum GNUNET_TRANSPORT_ValidationState state)
+ const struct GNUNET_PeerIdentity *peer,
+ const struct GNUNET_HELLO_Address *address,
+ struct GNUNET_TIME_Absolute last_validation,
+ struct GNUNET_TIME_Absolute valid_until,
+ struct GNUNET_TIME_Absolute next_validation,
+ enum GNUNET_TRANSPORT_ValidationState state)
{
struct IterationContext *pc = cls;
struct ValidationIterateResponseMessage *msg;
@@ -1158,7 +1159,7 @@ send_validation_information (void *cls,
/**
* Output information of neighbours to the given client.
*
- * @param cls the 'struct PeerIterationContext'
+ * @param cls the `struct PeerIterationContext *`
* @param peer identity of the neighbour
* @param address the address
* @param state current state this peer is in
@@ -1168,12 +1169,12 @@ send_validation_information (void *cls,
*/
static void
send_peer_information (void *cls,
- const struct GNUNET_PeerIdentity *peer,
- const struct GNUNET_HELLO_Address *address,
- enum GNUNET_TRANSPORT_PeerState state,
- struct GNUNET_TIME_Absolute state_timeout,
- struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in,
- struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out)
+ const struct GNUNET_PeerIdentity *peer,
+ const struct GNUNET_HELLO_Address *address,
+ enum GNUNET_TRANSPORT_PeerState state,
+ struct GNUNET_TIME_Absolute state_timeout,
+ struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in,
+ struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out)
{
struct IterationContext *pc = cls;
struct PeerIterateResponseMessage *msg;
@@ -1498,21 +1499,20 @@ GST_clients_broadcast_peer_notification (const struct GNUNET_PeerIdentity *peer,
* @param state state of validation notification
*/
void
-GST_clients_broadcast_validation_notification (
- const struct GNUNET_PeerIdentity *peer,
- const struct GNUNET_HELLO_Address *address,
- struct GNUNET_TIME_Absolute last_validation,
- struct GNUNET_TIME_Absolute valid_until,
- struct GNUNET_TIME_Absolute next_validation,
- enum GNUNET_TRANSPORT_ValidationState state)
+GST_clients_broadcast_validation_notification (const struct GNUNET_PeerIdentity *peer,
+ const struct GNUNET_HELLO_Address *address,
+ struct GNUNET_TIME_Absolute last_validation,
+ struct GNUNET_TIME_Absolute valid_until,
+ struct GNUNET_TIME_Absolute next_validation,
+ enum GNUNET_TRANSPORT_ValidationState state)
{
struct ValidationIterateResponseMessage *msg;
struct MonitoringClient *mc;
static struct GNUNET_PeerIdentity all_zeros;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Sending information about for validation entry for peer `%s' using address `%s'\n",
- GNUNET_i2s(peer), (address != NULL) ? GST_plugins_a2s (address) : "<none>");
+ "Sending information about for validation entry for peer `%s' using address `%s'\n",
+ GNUNET_i2s(peer), (address != NULL) ? GST_plugins_a2s (address) : "<none>");
msg = compose_validation_iterate_response_message (peer, address);
msg->last_validation = GNUNET_TIME_absolute_hton(last_validation);
diff --git a/src/transport/gnunet-service-transport_validation.c b/src/transport/gnunet-service-transport_validation.c
index 7c2675df3..6621ecc67 100644
--- a/src/transport/gnunet-service-transport_validation.c
+++ b/src/transport/gnunet-service-transport_validation.c
@@ -1,6 +1,6 @@
/*
This file is part of GNUnet.
- (C) 2010-2013 Christian Grothoff (and other contributing authors)
+ (C) 2010-2014 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
@@ -24,6 +24,7 @@
* @author Christian Grothoff
*/
#include "platform.h"
+#include "gnunet-service-transport_clients.h"
#include "gnunet-service-transport_validation.h"
#include "gnunet-service-transport_plugins.h"
#include "gnunet-service-transport_hello.h"
@@ -324,7 +325,6 @@ static struct GNUNET_CONTAINER_MultiPeerMap *validation_map;
*/
static struct GNUNET_PEERINFO_NotifyContext *pnc;
-
/**
* Minimum delay between to validations
*/
@@ -345,8 +345,6 @@ static unsigned int validations_fast_start_threshold;
*/
static struct GNUNET_TIME_Absolute validation_next;
-static GST_ValidationChangedCallback validation_entry_changed_cb;
-static void *validation_entry_changed_cb_cls;
/**
* Context for the validation entry match function.
@@ -369,14 +367,16 @@ struct ValidationEntryMatchContext
/**
* Iterate over validation entries until a matching one is found.
*
- * @param cls the 'struct ValidationEntryMatchContext'
+ * @param cls the `struct ValidationEntryMatchContext *`
* @param key peer identity (unused)
- * @param value a 'struct ValidationEntry' to match
- * @return GNUNET_YES if the entry does not match,
- * GNUNET_NO if the entry does match
+ * @param value a `struct ValidationEntry *` to match
+ * @return #GNUNET_YES if the entry does not match,
+ * #GNUNET_NO if the entry does match
*/
static int
-validation_entry_match (void *cls, const struct GNUNET_PeerIdentity * key, void *value)
+validation_entry_match (void *cls,
+ const struct GNUNET_PeerIdentity *key,
+ void *value)
{
struct ValidationEntryMatchContext *vemc = cls;
struct ValidationEntry *ve = value;
@@ -389,22 +389,25 @@ validation_entry_match (void *cls, const struct GNUNET_PeerIdentity * key, void
return GNUNET_YES;
}
+
+/**
+ * A validation entry changed. Update the state and notify
+ * monitors.
+ *
+ * @param ve validation entry that changed
+ * @param state new state
+ */
static void
-validation_entry_changed (struct ValidationEntry *ve, enum GNUNET_TRANSPORT_ValidationState state)
+validation_entry_changed (struct ValidationEntry *ve,
+ enum GNUNET_TRANSPORT_ValidationState state)
{
- char *t_sent = GNUNET_strdup(GNUNET_STRINGS_absolute_time_to_string(ve->send_time));
- char *t_valid = GNUNET_strdup(GNUNET_STRINGS_absolute_time_to_string(ve->valid_until));
- char *t_next = GNUNET_strdup(GNUNET_STRINGS_absolute_time_to_string(ve->next_validation));
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Validation entry changed for peer `%s' address `%s':\n\tSent: %s\n\tValid: %s\n\tNext: %s\n",
- GNUNET_i2s(&ve->pid), GST_plugins_a2s(ve->address),
- t_sent, t_valid, t_next);
ve->state = state;
-
- GNUNET_free (t_sent);
- GNUNET_free (t_valid);
- GNUNET_free (t_next);
- validation_entry_changed_cb (validation_entry_changed_cb_cls, &ve->pid,
- ve->address, ve->send_time, ve->valid_until, ve->next_validation, state);
+ GST_clients_broadcast_validation_notification (&ve->pid,
+ ve->address,
+ ve->send_time,
+ ve->valid_until,
+ ve->next_validation,
+ state);
}
@@ -413,11 +416,13 @@ validation_entry_changed (struct ValidationEntry *ve, enum GNUNET_TRANSPORT_Vali
*
* @param cls (unused)
* @param key peer identity (unused)
- * @param value a 'struct ValidationEntry' to clean up
- * @return GNUNET_YES (continue to iterate)
+ * @param value a `struct ValidationEntry *` to clean up
+ * @return #GNUNET_YES (continue to iterate)
*/
static int
-cleanup_validation_entry (void *cls, const struct GNUNET_PeerIdentity * key, void *value)
+cleanup_validation_entry (void *cls,
+ const struct GNUNET_PeerIdentity *key,
+ void *value)
{
struct ValidationEntry *ve = value;
@@ -579,8 +584,8 @@ transmit_ping_if_allowed (void *cls,
ret = -1;
else
{
- GNUNET_assert (papi->send != NULL);
- GNUNET_assert (papi->get_session != NULL);
+ GNUNET_assert (NULL != papi->send);
+ GNUNET_assert (NULL != papi->get_session);
struct Session * session = papi->get_session(papi->cls, ve->address);
if (session != NULL)
@@ -863,12 +868,10 @@ process_peerinfo_hello (void *cls, const struct GNUNET_PeerIdentity *peer,
/**
* Start the validation subsystem.
*
- * @param cb callback to call with changes to valdidation entries
- * @param cb_cls cls for the callback
* @param max_fds maximum number of fds to use
*/
void
-GST_validation_start (GST_ValidationChangedCallback cb, void *cb_cls, unsigned int max_fds)
+GST_validation_start (unsigned int max_fds)
{
/**
* Initialization for validation throttling
@@ -886,9 +889,8 @@ GST_validation_start (GST_ValidationChangedCallback cb, void *cb_cls, unsigned i
validation_delay.rel_value_us = (GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT.rel_value_us) / (max_fds / 2);
validations_fast_start_threshold = (max_fds / 2);
validations_running = 0;
- validation_entry_changed_cb = cb;
- validation_entry_changed_cb_cls = cb_cls;
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Validation uses a fast start threshold of %u connections and a delay between of %s\n ",
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Validation uses a fast start threshold of %u connections and a delay between of %s\n ",
validations_fast_start_threshold,
GNUNET_STRINGS_relative_time_to_string (validation_delay,
GNUNET_YES));
@@ -1243,7 +1245,7 @@ struct ValidateAddressContext
* Iterator callback to go over all addresses and try to validate them
* (unless blocked or already validated).
*
- * @param cls pointer to a `struct ValidateAddressContext`
+ * @param cls pointer to a `struct ValidateAddressContext *`
* @param address the address
* @param expiration expiration time
* @return #GNUNET_OK (keep the address)
@@ -1277,14 +1279,16 @@ validate_address_iterator (void *cls,
/**
* Add the validated peer address to the HELLO.
*
- * @param cls the 'struct ValidationEntry' with the validated address
- * @param max space in buf
+ * @param cls the `struct ValidationEntry *` with the validated address
+ * @param max space in @a buf
* @param buf where to add the address
- * @return number of bytes written, GNUNET_SYSERR to signal the
+ * @return number of bytes written, #GNUNET_SYSERR to signal the
* end of the iteration.
*/
static ssize_t
-add_valid_peer_address (void *cls, size_t max, void *buf)
+add_valid_peer_address (void *cls,
+ size_t max,
+ void *buf)
{
struct ValidationEntry *ve = cls;
@@ -1375,7 +1379,7 @@ GST_validation_handle_pong (const struct GNUNET_PeerIdentity *sender,
sig_res = GNUNET_SYSERR;
do_verify = GNUNET_YES;
- if (0 != GNUNET_TIME_absolute_get_remaining(ve->pong_sig_valid_until).rel_value_us)
+ if (0 != GNUNET_TIME_absolute_get_remaining (ve->pong_sig_valid_until).rel_value_us)
{
/* We have a cached and valid signature for this peer,
* try to compare instead of verify */
@@ -1416,7 +1420,9 @@ GST_validation_handle_pong (const struct GNUNET_PeerIdentity *sender,
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Validation process successful for peer `%s' with plugin `%s' address `%s'\n",
- GNUNET_i2s (sender), tname, GST_plugins_a2s (ve->address));
+ GNUNET_i2s (sender),
+ tname,
+ GST_plugins_a2s (ve->address));
/* validity achieved, remember it! */
ve->expecting_pong = GNUNET_NO;
ve->valid_until = GNUNET_TIME_relative_to_absolute (HELLO_ADDRESS_EXPIRATION);
@@ -1536,7 +1542,9 @@ struct IteratorContext
* @return #GNUNET_OK (continue to iterate)
*/
static int
-iterate_addresses (void *cls, const struct GNUNET_PeerIdentity *key, void *value)
+iterate_addresses (void *cls,
+ const struct GNUNET_PeerIdentity *key,
+ void *value)
{
struct IteratorContext *ic = cls;
struct ValidationEntry *ve = value;
@@ -1553,7 +1561,7 @@ iterate_addresses (void *cls, const struct GNUNET_PeerIdentity *key, void *value
*
* @param target peer information is requested for
* @param cb function to call; will not be called after this function returns
- * @param cb_cls closure for 'cb'
+ * @param cb_cls closure for @a cb
*/
void
GST_validation_get_addresses (const struct GNUNET_PeerIdentity *target,
@@ -1662,11 +1670,12 @@ struct ValidationIteratorContext
GST_ValidationChangedCallback cb;
/**
- * Closure for 'cb'.
+ * Closure for @e cb.
*/
void *cb_cls;
};
+
static int
validation_entries_iterate (void *cls,
const struct GNUNET_PeerIdentity *key,
@@ -1690,7 +1699,8 @@ validation_entries_iterate (void *cls,
* @param cb_cls closure for cb
*/
void
-GST_validation_iterate (GST_ValidationChangedCallback cb, void *cb_cls)
+GST_validation_iterate (GST_ValidationChangedCallback cb,
+ void *cb_cls)
{
struct ValidationIteratorContext ic;
@@ -1698,7 +1708,9 @@ GST_validation_iterate (GST_ValidationChangedCallback cb, void *cb_cls)
return; /* can happen during shutdown */
ic.cb = cb;
ic.cb_cls = cb_cls;
- GNUNET_CONTAINER_multipeermap_iterate (validation_map, &validation_entries_iterate, &ic);
+ GNUNET_CONTAINER_multipeermap_iterate (validation_map,
+ &validation_entries_iterate,
+ &ic);
}
/* end of file gnunet-service-transport_validation.c */
diff --git a/src/transport/gnunet-service-transport_validation.h b/src/transport/gnunet-service-transport_validation.h
index 71c095c1b..df2ef0ee8 100644
--- a/src/transport/gnunet-service-transport_validation.h
+++ b/src/transport/gnunet-service-transport_validation.h
@@ -32,35 +32,12 @@
#include "gnunet_hello_lib.h"
/**
- * Function called to notify transport users that a neighbour peer changed its
- * active address.
- *
- * @param cls closure
- * @param peer peer this update is about (never NULL)
- * @param address address (never NULL)
- * @param last_validation point in time when last validation was performed
- * @param valid_until point in time how long address is valid
- * @param next_validation point in time when next validation will be performed
- * @param state state of validation notification
- */
-typedef void (*GST_ValidationChangedCallback) (void *cls,
- const struct GNUNET_PeerIdentity *peer,
- const struct GNUNET_HELLO_Address *address,
- struct GNUNET_TIME_Absolute last_validation,
- struct GNUNET_TIME_Absolute valid_until,
- struct GNUNET_TIME_Absolute next_validation,
- enum GNUNET_TRANSPORT_ValidationState state);
-
-
-/**
* Start the validation subsystem.
*
- * @param cb callback to call with changes to valdidation entries
- * @param cb_cls cls for the callback
* @param max_fds maximum number of fds to use
*/
void
-GST_validation_start (GST_ValidationChangedCallback cb, void *cb_cls, unsigned int max_fds);
+GST_validation_start (unsigned int max_fds);
/**
@@ -77,8 +54,8 @@ GST_validation_stop (void);
*
* @param address the address
* @param session the session
- * @param in_use GNUNET_YES if we are now using the address for a connection,
- * GNUNET_NO if we are no longer using the address for a connection
+ * @param in_use #GNUNET_YES if we are now using the address for a connection,
+ * #GNUNET_NO if we are no longer using the address for a connection
*/
void
GST_validation_set_address_use (const struct GNUNET_HELLO_Address *address,
@@ -101,15 +78,39 @@ GST_validation_get_address_latency (const struct GNUNET_PeerIdentity *sender,
const struct GNUNET_HELLO_Address *address,
struct Session *session);
+
+/**
+ * Function called to notify transport users that a neighbour peer changed its
+ * active address.
+ *
+ * @param cls closure
+ * @param peer peer this update is about (never NULL)
+ * @param address address (never NULL)
+ * @param last_validation point in time when last validation was performed
+ * @param valid_until point in time how long address is valid
+ * @param next_validation point in time when next validation will be performed
+ * @param state state of validation notification
+ */
+typedef void
+(*GST_ValidationChangedCallback) (void *cls,
+ const struct GNUNET_PeerIdentity *peer,
+ const struct GNUNET_HELLO_Address *address,
+ struct GNUNET_TIME_Absolute last_validation,
+ struct GNUNET_TIME_Absolute valid_until,
+ struct GNUNET_TIME_Absolute next_validation,
+ enum GNUNET_TRANSPORT_ValidationState state);
+
+
/**
* Iterate over all iteration entries
*
* @param cb function to call
- * @param cb_cls closure for cb
+ * @param cb_cls closure for @a cb
*/
void
GST_validation_iterate (GST_ValidationChangedCallback cb, void *cb_cls);
+
/**
* We've received a PING. If appropriate, generate a PONG.
*
@@ -163,15 +164,12 @@ GST_validation_handle_hello (const struct GNUNET_MessageHeader *hello);
* otherwise a time in the future if we're currently denying re-validation
* @param address the address
*/
-typedef void (*GST_ValidationAddressCallback) (void *cls,
- const struct
- GNUNET_CRYPTO_EddsaPublicKey *public_key,
- struct GNUNET_TIME_Absolute
- valid_until,
- struct GNUNET_TIME_Absolute
- validation_block,
- const struct GNUNET_HELLO_Address
- * address);
+typedef void
+(*GST_ValidationAddressCallback) (void *cls,
+ const struct GNUNET_CRYPTO_EddsaPublicKey *public_key,
+ struct GNUNET_TIME_Absolute valid_until,
+ struct GNUNET_TIME_Absolute validation_block,
+ const struct GNUNET_HELLO_Address *address);
/**
@@ -179,7 +177,7 @@ typedef void (*GST_ValidationAddressCallback) (void *cls,
*
* @param target peer information is requested for
* @param cb function to call; will not be called after this function returns
- * @param cb_cls closure for 'cb'
+ * @param cb_cls closure for @a cb
*/
void
GST_validation_get_addresses (const struct GNUNET_PeerIdentity *target,
diff --git a/src/transport/gnunet-transport.c b/src/transport/gnunet-transport.c
index 80a3e2d15..0fef7784e 100644
--- a/src/transport/gnunet-transport.c
+++ b/src/transport/gnunet-transport.c
@@ -1684,19 +1684,22 @@ testservice_task (void *cls, int result)
monitored_peers = GNUNET_CONTAINER_multipeermap_create (10, GNUNET_NO);
address_resolution_in_progress = GNUNET_YES;
pic = GNUNET_TRANSPORT_monitor_peers (cfg, (NULL == cpid) ? NULL : &pid,
- GNUNET_NO, TIMEOUT, &process_peer_monitoring_cb, (void *) cfg);
+ GNUNET_NO, TIMEOUT,
+ &process_peer_monitoring_cb, (void *) cfg);
}
else if (iterate_validation) /* -d: Print information about validations */
{
vic = GNUNET_TRANSPORT_monitor_validation_entries (cfg,
- (NULL == cpid) ? NULL : &pid,
- GNUNET_YES, TIMEOUT, &process_validation_cb, (void *) cfg);
+ (NULL == cpid) ? NULL : &pid,
+ GNUNET_YES, TIMEOUT,
+ &process_validation_cb, (void *) cfg);
}
else if (monitor_validation) /* -f: Print information about validations continuously */
{
vic = GNUNET_TRANSPORT_monitor_validation_entries (cfg,
- (NULL == cpid) ? NULL : &pid,
- GNUNET_NO, TIMEOUT, &process_validation_cb, (void *) cfg);
+ (NULL == cpid) ? NULL : &pid,
+ GNUNET_NO, TIMEOUT,
+ &process_validation_cb, (void *) cfg);
}
else if (monitor_connects) /* -e : Monitor (dis)connect events continuously */
{
@@ -1706,7 +1709,9 @@ testservice_task (void *cls, int result)
&monitor_notify_disconnect);
if (NULL == handle)
{
- FPRINTF (stderr, "%s", _("Failed to connect to transport service\n"));
+ FPRINTF (stderr,
+ "%s",
+ _("Failed to connect to transport service\n"));
ret = 1;
return;
}
@@ -1721,7 +1726,6 @@ testservice_task (void *cls, int result)
end = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL,
&shutdown_task,
NULL);
-
}
diff --git a/src/transport/transport.h b/src/transport/transport.h
index cbbefb7e1..ceeaf9c0d 100644
--- a/src/transport/transport.h
+++ b/src/transport/transport.h
@@ -416,17 +416,20 @@ struct ValidationIterateResponseMessage
uint32_t state GNUNET_PACKED;
/**
- * FIXME
+ * At what time did we successfully validate the address last.
+ * Will be NEVER if the address failed validation.
*/
struct GNUNET_TIME_AbsoluteNBO last_validation;
/**
- * FIXME
+ * Until when is the address believed to be valid.
+ * Will be ZERO if the address is not belived to be valid.
*/
struct GNUNET_TIME_AbsoluteNBO valid_until;
/**
- * FIXME
+ * When will we next try to validate the address (typically
+ * done before @e valid_until happens).
*/
struct GNUNET_TIME_AbsoluteNBO next_validation;
};
diff --git a/src/transport/transport_api_monitoring.c b/src/transport/transport_api_monitoring.c
index 31f3d4f90..b44bf51b8 100644
--- a/src/transport/transport_api_monitoring.c
+++ b/src/transport/transport_api_monitoring.c
@@ -516,9 +516,12 @@ val_response_processor (void *cls,
GNUNET_break (0);
if (val_ctx->one_shot)
{
- val_ctx->cb (val_ctx->cb_cls, NULL, NULL,
- GNUNET_TIME_UNIT_ZERO_ABS, GNUNET_TIME_UNIT_ZERO_ABS,
- GNUNET_TIME_UNIT_ZERO_ABS, GNUNET_TRANSPORT_VS_NONE);
+ val_ctx->cb (val_ctx->cb_cls,
+ NULL, NULL,
+ GNUNET_TIME_UNIT_ZERO_ABS,
+ GNUNET_TIME_UNIT_ZERO_ABS,
+ GNUNET_TIME_UNIT_ZERO_ABS,
+ GNUNET_TRANSPORT_VS_NONE);
GNUNET_TRANSPORT_monitor_validation_entries_cancel (val_ctx);
}
else
@@ -530,12 +533,16 @@ val_response_processor (void *cls,
/* notify client */
address = GNUNET_HELLO_address_allocate (&vr_msg->peer,
- transport_name, addr, alen, ntohl(vr_msg->local_address_info));
- val_ctx->cb (val_ctx->cb_cls, &vr_msg->peer, address,
- GNUNET_TIME_absolute_ntoh(vr_msg->last_validation),
- GNUNET_TIME_absolute_ntoh(vr_msg->valid_until),
- GNUNET_TIME_absolute_ntoh(vr_msg->next_validation),
- ntohl(vr_msg->state));
+ transport_name,
+ addr, alen,
+ ntohl (vr_msg->local_address_info));
+ val_ctx->cb (val_ctx->cb_cls,
+ &vr_msg->peer,
+ address,
+ GNUNET_TIME_absolute_ntoh (vr_msg->last_validation),
+ GNUNET_TIME_absolute_ntoh (vr_msg->valid_until),
+ GNUNET_TIME_absolute_ntoh (vr_msg->next_validation),
+ ntohl(vr_msg->state));
GNUNET_HELLO_address_free (address);
}
/* expect more replies */
@@ -777,20 +784,19 @@ GNUNET_TRANSPORT_monitor_peers_cancel (struct GNUNET_TRANSPORT_PeerMonitoringCon
* @param cfg configuration to use
* @param peer a specific peer identity to obtain validation entries for,
* NULL for all peers
- * @param one_shot GNUNET_YES to return all entries and then end (with NULL+NULL),
- * GNUNET_NO to monitor validation entries continuously
+ * @param one_shot #GNUNET_YES to return all entries and then end (with NULL+NULL),
+ * #GNUNET_NO to monitor validation entries continuously
* @param timeout how long is the lookup allowed to take at most
* @param validation_callback function to call with the results
* @param validation_callback_cls closure for peer_address_callback
*/
struct GNUNET_TRANSPORT_ValidationMonitoringContext *
-GNUNET_TRANSPORT_monitor_validation_entries (const struct
- GNUNET_CONFIGURATION_Handle *cfg,
- const struct GNUNET_PeerIdentity *peer,
- int one_shot,
- struct GNUNET_TIME_Relative timeout,
- GNUNET_TRANSPORT_ValidationIterateCallback validation_callback,
- void *validation_callback_cls)
+GNUNET_TRANSPORT_monitor_validation_entries (const struct GNUNET_CONFIGURATION_Handle *cfg,
+ const struct GNUNET_PeerIdentity *peer,
+ int one_shot,
+ struct GNUNET_TIME_Relative timeout,
+ GNUNET_TRANSPORT_ValidationIterateCallback validation_callback,
+ void *validation_callback_cls)
{
struct GNUNET_TRANSPORT_ValidationMonitoringContext *val_ctx;
struct GNUNET_CLIENT_Connection *client;