psyc: in-order message delivery
[oweals/gnunet.git] / src / ats / gnunet-service-ats_addresses.h
index 887eeee812566ef74492a5069c28d0a430be8805..aa0b919ea477f8d47f2f4d03161866ea82861415 100644 (file)
@@ -312,6 +312,8 @@ struct ATS_Address
    */
   uint32_t session_id;
 
+  uint32_t local_address_info;
+
   /**
    * Address
    */
@@ -362,6 +364,16 @@ struct ATS_Address
    */
   struct GNUNET_TIME_Absolute blocked_until;
 
+  /**
+   * Time when address had last activity (update, in uses)
+   */
+  struct GNUNET_TIME_Absolute t_last_activity;
+
+  /**
+   * Time when address was added
+   */
+  struct GNUNET_TIME_Absolute t_added;
+
   /**
    * Is this the active address for this peer?
    */
@@ -380,6 +392,10 @@ struct ATS_Address
 };
 
 
+/**
+ * Handle for ATS address component
+ */
+struct GAS_Addresses_Handle;
 
 /**
  * Initialize address subsystem. The addresses subsystem manages the addresses
@@ -411,15 +427,21 @@ GAS_addresses_done (struct GAS_Addresses_Handle *handle);
  * @param plugin_name transport plugin name
  * @param plugin_addr plugin address
  * @param plugin_addr_len length of the plugin address
+ * @param local_address_info the local address for the address
  * @param session_id session id, can be 0
  * @param atsi performance information for this address
  * @param atsi_count number of performance information contained
  */
 void
 GAS_addresses_add (struct GAS_Addresses_Handle *handle,
-    const struct GNUNET_PeerIdentity *peer, const char *plugin_name,
-    const void *plugin_addr, size_t plugin_addr_len, uint32_t session_id,
-    const struct GNUNET_ATS_Information *atsi, uint32_t atsi_count);
+    const struct GNUNET_PeerIdentity *peer,
+    const char *plugin_name,
+    const void *plugin_addr,
+    size_t plugin_addr_len,
+    uint32_t local_address_info,
+    uint32_t session_id,
+    const struct GNUNET_ATS_Information *atsi,
+    uint32_t atsi_count);
 
 /**
  * Notification about active use of an address.
@@ -436,6 +458,7 @@ GAS_addresses_add (struct GAS_Addresses_Handle *handle,
  * @param plugin_name transport plugin name
  * @param plugin_addr plugin address
  * @param plugin_addr_len length of the plugin address
+ * @param local_address_info the local address for the address
  * @param session_id session id, can be 0
  * @param in_use GNUNET_YES if GNUNET_NO
  * @return GNUNET_SYSERR on failure (address unknown ...)
@@ -443,7 +466,9 @@ GAS_addresses_add (struct GAS_Addresses_Handle *handle,
 int
 GAS_addresses_in_use (struct GAS_Addresses_Handle *handle,
     const struct GNUNET_PeerIdentity *peer, const char *plugin_name,
-    const void *plugin_addr, size_t plugin_addr_len, uint32_t session_id,
+    const void *plugin_addr, size_t plugin_addr_len,
+    uint32_t local_address_info,
+    uint32_t session_id,
     int in_use);
 
 /**
@@ -457,6 +482,7 @@ GAS_addresses_in_use (struct GAS_Addresses_Handle *handle,
  * @param plugin_name transport plugin name
  * @param plugin_addr plugin address
  * @param plugin_addr_len length of the plugin address
+ * @param local_address_info the local address for the address
  * @param session_id session id, can be 0
  * @param atsi performance information for this address
  * @param atsi_count number of performance information contained
@@ -464,7 +490,8 @@ GAS_addresses_in_use (struct GAS_Addresses_Handle *handle,
 void
 GAS_addresses_update (struct GAS_Addresses_Handle *handle,
     const struct GNUNET_PeerIdentity *peer, const char *plugin_name,
-    const void *plugin_addr, size_t plugin_addr_len, uint32_t session_id,
+    const void *plugin_addr, size_t plugin_addr_len,
+    uint32_t local_address_info, uint32_t session_id,
     const struct GNUNET_ATS_Information *atsi, uint32_t atsi_count);
 
 /**
@@ -476,11 +503,13 @@ GAS_addresses_update (struct GAS_Addresses_Handle *handle,
  * @param plugin_addr plugin address
  * @param plugin_addr_len length of the plugin address
  * @param session_id session id, can be 0
+ * @param local_address_info the local address for the address
  */
 void
 GAS_addresses_destroy (struct GAS_Addresses_Handle *handle,
     const struct GNUNET_PeerIdentity *peer, const char *plugin_name,
-    const void *plugin_addr, size_t plugin_addr_len, uint32_t session_id);
+    const void *plugin_addr, size_t plugin_addr_len,
+    uint32_t local_address_info, uint32_t session_id);
 
 /**
  * Remove all addresses