*/
extern struct GNUNET_ATS_SchedulingHandle *GST_ats;
+
+/**
+ * Function to call when a peer's address has changed
+ *
+ * @param cls closure
+ * @param peer peer this update is about,
+ * @param address address, NULL for disconnect notification
+ */
+typedef void
+(*GNUNET_TRANSPORT_NeighbourChangeCallback) (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);
+
+
/**
* Function called by the transport for each received message.
- * This function should also be called with "NULL" for the
- * message to signal that the other peer disconnected.
*
* @param cls closure, const char* with the name of the plugin we received the message from
- * @param peer (claimed) identity of the other peer
+ * @param address address and (claimed) identity of the other peer
* @param message the message, NULL if we only care about
- * learning about the delay until we should receive again -- FIXME!
+ * learning about the delay until we should receive again
* @param session identifier used for this session (NULL for plugins
* that do not offer bi-directional communication to the sender
* using the same "connection")
- * @param sender_address binary address of the sender (if we established the
- * connection or are otherwise sure of it; should be NULL
- * for inbound TCP/UDP connections since it it not clear
- * that we could establish ourselves a connection to that
- * IP address and get the same system)
- * @param sender_address_len number of bytes in sender_address
* @return how long the plugin should wait until receiving more data
* (plugins that do not support this, can ignore the return value)
*/
struct GNUNET_TIME_Relative
GST_receive_callback (void *cls,
- const struct GNUNET_PeerIdentity *peer,
- const struct GNUNET_MessageHeader *message,
- struct Session *session,
- const char *sender_address,
- uint16_t sender_address_len);
+ const struct GNUNET_HELLO_Address *address,
+ struct Session *session,
+ const struct GNUNET_MessageHeader *message);
/**
*
* @param address the address
* @param session the session
+ * @param ats ats information
+ * @param ats_count number of @a ats information
*/
void
GST_ats_add_address (const struct GNUNET_HELLO_Address *address,
- struct Session *session);
+ struct Session *session,
+ const struct GNUNET_ATS_Information *ats,
+ uint32_t ats_count);
/**
* @param address the address
* @param session the session
* @param ats performance information
- * @param ats_count number of elements in ats
+ * @param ats_count number of elements in @a ats
*/
void
GST_ats_update_metrics (const struct GNUNET_PeerIdentity *peer,