-indentation
[oweals/gnunet.git] / src / transport / transport.h
index 2e7bd8372fd159d69e454e01e84071fbe3af1951..cbbefb7e183d8b1b7f9722ae80811bbb11ee7b6a 100644 (file)
@@ -68,8 +68,6 @@
  *
  * @param cls closure
  * @param peer the peer that connected
- * @param ats performance data
- * @param ats_count number of entries in ats (excluding 0-termination)
  * @param bandwidth_in inbound bandwidth in NBO
  * @param bandwidth_out outbound bandwidth in NBO
  *
@@ -77,8 +75,6 @@
 
 typedef void (*NotifyConnect) (void *cls,
                               const struct GNUNET_PeerIdentity *peer,
-                              const struct GNUNET_ATS_Information *ats,
-                              uint32_t ats_count,
                               struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in,
                               struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out);
 
@@ -125,12 +121,6 @@ struct ConnectInfoMessage
    */
   struct GNUNET_MessageHeader header;
 
-  /**
-   * Number of ATS key-value pairs that follow this struct
-   * (excluding the 0-terminator).
-   */
-  uint32_t ats_count GNUNET_PACKED;
-
   /**
    * Identity of the new neighbour.
    */
@@ -186,9 +176,9 @@ struct TransportRequestConnectMessage
   struct GNUNET_MessageHeader header;
 
   /**
-   * For alignment.
+   * Connect (GNUNET_YES) or connect (GNUNET_NO).
    */
-  uint32_t reserved;
+  uint32_t connect;
 
   /**
    * Identity of the peer we would like to connect to.
@@ -234,12 +224,6 @@ struct InboundMessage
    */
   struct GNUNET_MessageHeader header;
 
-  /**
-   * Number of ATS key-value pairs that follow this struct
-   * (excluding the 0-terminator).
-   */
-  uint32_t ats_count GNUNET_PACKED;
-
   /**
    * Which peer sent the message?
    */
@@ -292,6 +276,33 @@ struct SendOkMessage
 
 };
 
+/**
+ * Message used to notify the transport API about an address to string
+ * conversion. Message is followed by the string with the humand-readable
+ * address.  For each lookup, multiple results may be returned.  The
+ * last message must have a @e res of #GNUNET_OK and an @e addr_len
+ * of zero.
+ */
+struct AddressToStringResultMessage
+{
+
+  /**
+   * Type will be #GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_TO_STRING_REPLY
+   */
+  struct GNUNET_MessageHeader header;
+
+  /**
+   * #GNUNET_OK if the conversion succeeded,
+   * #GNUNET_SYSERR if it failed
+   */
+  uint32_t res GNUNET_PACKED;
+
+  /**
+   * Length of the following string, zero if @e is #GNUNET_SYSERR
+   */
+  uint32_t addr_len GNUNET_PACKED;
+};
+
 
 /**
  * Message used to notify the transport service about a message
@@ -301,14 +312,14 @@ struct OutboundMessage
 {
 
   /**
-   * Type will be GNUNET_MESSAGE_TYPE_TRANSPORT_SEND
+   * Type will be #GNUNET_MESSAGE_TYPE_TRANSPORT_SEND
    */
   struct GNUNET_MessageHeader header;
 
   /**
-   * Message priority.
+   * Always zero.
    */
-  uint32_t priority GNUNET_PACKED;
+  uint32_t reserved GNUNET_PACKED;
 
   /**
    * Allowed delay.
@@ -332,7 +343,7 @@ struct AddressLookupMessage
 {
 
   /**
-   * Type will be GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_TO_STRING
+   * Type will be #GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_TO_STRING
    */
   struct GNUNET_MessageHeader header;
 
@@ -348,23 +359,29 @@ struct AddressLookupMessage
   uint16_t addrlen GNUNET_PACKED;
 
   /**
-   * timeout to give up.
+   * timeout to give up (for DNS resolution timeout mostly)
    */
   struct GNUNET_TIME_RelativeNBO timeout;
 
-  /* followed by 'addrlen' bytes of the actual address, then
+  /* followed by @e addrlen bytes of the actual address, then
    * followed by the 0-terminated name of the transport */
 };
 
 
 /**
- * Message from the library to the transport service
- * asking for human readable addresses known for a peer.
+ * Message from the transport service to the library containing information
+ * about a peer. Information contained are:
+ * - current address used to communicate with this peer
+ * - state
+ * - state timeout
+ *
+ * Memory layout:
+ * [AddressIterateResponseMessage][address[addrlen]][transportname[pluginlen]]
  */
-struct PeerAddressLookupMessage
+struct ValidationIterateResponseMessage
 {
   /**
-   * Type will be GNUNET_MESSAGE_TYPE_TRANSPORT_PEER_ADDRESS_LOOKUP
+   * Type is #GNUNET_MESSAGE_TYPE_TRANSPORT_MONITOR_VALIDATION_RESPONSE
    */
   struct GNUNET_MessageHeader header;
 
@@ -374,14 +391,67 @@ struct PeerAddressLookupMessage
   uint32_t reserved;
 
   /**
-   * timeout to give up.  FIXME: remove in the future.
+   * Peer identity
    */
-  struct GNUNET_TIME_RelativeNBO timeout;
+  struct GNUNET_PeerIdentity peer;
+
+  /**
+   * Local info about the address
+   */
+  uint32_t local_address_info GNUNET_PACKED;
+
+  /**
+   * Address length
+   */
+  uint32_t addrlen GNUNET_PACKED;
+
+  /**
+   * Length of the plugin name
+   */
+  uint32_t pluginlen GNUNET_PACKED;
+
+  /**
+   * State
+   */
+  uint32_t state GNUNET_PACKED;
+
+  /**
+   * FIXME
+   */
+  struct GNUNET_TIME_AbsoluteNBO last_validation;
+
+  /**
+   * FIXME
+   */
+  struct GNUNET_TIME_AbsoluteNBO valid_until;
+
+  /**
+   * FIXME
+   */
+  struct GNUNET_TIME_AbsoluteNBO next_validation;
+};
+
+/**
+ * Message from the library to the transport service
+ * asking for binary addresses known for a peer.
+ */
+struct ValidationMonitorMessage
+{
+  /**
+   * Type will be #GNUNET_MESSAGE_TYPE_TRANSPORT_MONITOR_VALIDATION_REQUEST
+   */
+  struct GNUNET_MessageHeader header;
+
+  /**
+   * One shot call or continous replies?
+   */
+  uint32_t one_shot;
 
   /**
    * The identity of the peer to look up.
    */
   struct GNUNET_PeerIdentity peer;
+
 };
 
 
@@ -389,10 +459,10 @@ struct PeerAddressLookupMessage
  * Message from the library to the transport service
  * asking for binary addresses known for a peer.
  */
-struct AddressIterateMessage
+struct PeerMonitorMessage
 {
   /**
-   * Type will be GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE
+   * Type will be #GNUNET_MESSAGE_TYPE_TRANSPORT_MONITOR_PEER_REQUEST
    */
   struct GNUNET_MessageHeader header;
 
@@ -402,28 +472,55 @@ struct AddressIterateMessage
   uint32_t one_shot;
 
   /**
-   * timeout to give up.  FIXME: remove in the future
+   * The identity of the peer to look up.
    */
-  struct GNUNET_TIME_AbsoluteNBO timeout;
+  struct GNUNET_PeerIdentity peer;
+
+};
+
+
+/**
+ * Message from the library to the transport service
+ * asking for binary addresses known for a peer.
+ */
+struct TrafficMetricMessage
+{
+  /**
+   * Type will be #GNUNET_MESSAGE_TYPE_TRANSPORT_TRAFFIC_METRIC
+   */
+  struct GNUNET_MessageHeader header;
+
+  /**
+   * SEND, RECEIVE or BOTH?
+   */
+  uint16_t direction;
+
+  /**
+   * Traffic metrics count
+   */
+  uint16_t ats_count;
 
   /**
    * The identity of the peer to look up.
    */
   struct GNUNET_PeerIdentity peer;
-
 };
 
 
 /**
- * Message from the transport service to the library
- * containing binary addresses known for a peer.
+ * Message from the transport service to the library containing information
+ * about a peer. Information contained are:
+ * - current address used to communicate with this peer
+ * - state
+ * - state timeout
+ *
  * Memory layout:
  * [AddressIterateResponseMessage][address[addrlen]][transportname[pluginlen]]
  */
-struct AddressIterateResponseMessage
+struct PeerIterateResponseMessage
 {
   /**
-   * Type will be GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE_RESPONSE
+   * Type is #GNUNET_MESSAGE_TYPE_TRANSPORT_MONITOR_PEER_RESPONSE
    */
   struct GNUNET_MessageHeader header;
 
@@ -432,18 +529,33 @@ struct AddressIterateResponseMessage
    */
   uint32_t reserved;
 
-    /**
+  /**
    * Peer identity
    */
   struct GNUNET_PeerIdentity peer;
 
   /**
-   * address length
+   * Timeout for the state this peer is in
+   */
+  struct GNUNET_TIME_AbsoluteNBO state_timeout;
+
+  /**
+   * Local info about the address
+   */
+  uint32_t local_address_info GNUNET_PACKED;
+
+  /**
+   * State this peer is in as an `enum GNUNET_TRANSPORT_PeerState`
+   */
+  uint32_t state GNUNET_PACKED;
+
+  /**
+   * Address length
    */
   uint32_t addrlen GNUNET_PACKED;
 
   /**
-   * length of the plugin name
+   * Length of the plugin name
    */
   uint32_t pluginlen GNUNET_PACKED;
 
@@ -458,13 +570,13 @@ struct BlacklistMessage
 {
 
   /**
-   * Type will be GNUNET_MESSAGE_TYPE_TRANSPORT_BLACKLIST_QUERY or
-   * GNUNET_MESSAGE_TYPE_TRANSPORT_BLACKLIST_REPLY.
+   * Type will be #GNUNET_MESSAGE_TYPE_TRANSPORT_BLACKLIST_QUERY or
+   * #GNUNET_MESSAGE_TYPE_TRANSPORT_BLACKLIST_REPLY.
    */
   struct GNUNET_MessageHeader header;
 
   /**
-   * 0 for the query, GNUNET_OK (allowed) or GNUNET_SYSERR (disallowed)
+   * 0 for the query, #GNUNET_OK (allowed) or #GNUNET_SYSERR (disallowed)
    * for the response.
    */
   uint32_t is_allowed GNUNET_PACKED;