-allow caller ID to differ from zone used for resolution
[oweals/gnunet.git] / src / transport / transport.h
index beea4031ea944e7e960a60bb7d472afe847fe9a3..68c685c295e7c622469d45e32f7e81fc0cb290b8 100644 (file)
@@ -176,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.
@@ -276,6 +276,32 @@ struct SendOkMessage
 
 };
 
+/**
+ * Message used to notify the transport API about an address to string
+ * conversion. Message is followed by the string with length strlen
+ */
+struct AddressToStringResultMessage
+{
+
+  /**
+   * Type will be GNUNET_MESSAGE_TYPE_TRANSPORT_SEND_OK
+   */
+  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
+   */
+  uint32_t addr_len GNUNET_PACKED;
+};
+
+
+
 
 /**
  * Message used to notify the transport service about a message
@@ -285,14 +311,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.
@@ -341,15 +367,20 @@ struct AddressLookupMessage
 };
 
 
-#if 0
 /**
- * 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 PeerLookupMessage
+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;
 
@@ -359,16 +390,59 @@ struct PeerLookupMessage
   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;
+
+  struct GNUNET_TIME_AbsoluteNBO last_validation;
+
+  struct GNUNET_TIME_AbsoluteNBO valid_until;
+
+  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;
+
 };
-#endif
 
 
 /**
@@ -378,7 +452,7 @@ struct PeerLookupMessage
 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;
 
@@ -387,11 +461,6 @@ struct PeerMonitorMessage
    */
   uint32_t one_shot;
 
-  /**
-   * timeout to give up.  FIXME: remove in the future
-   */
-  struct GNUNET_TIME_AbsoluteNBO timeout;
-
   /**
    * The identity of the peer to look up.
    */
@@ -460,6 +529,11 @@ struct PeerIterateResponseMessage
    */
   struct GNUNET_TIME_AbsoluteNBO state_timeout;
 
+  /**
+   * Local info about the address
+   */
+  uint32_t local_address_info GNUNET_PACKED;
+
   /**
    * State this peer is in as #GNUNET_TRANSPORT_PeerState enumeration element
    */