You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ SPDX-License-Identifier: AGPL3.0-or-later
*/
/**
#include "gnunet_crypto_lib.h"
#include "gnunet_time_lib.h"
-#include "gnunet_transport_service.h"
#include "gnunet_constants.h"
#define DEBUG_TRANSPORT GNUNET_EXTRA_LOGGING
GNUNET_NETWORK_STRUCT_BEGIN
+
/**
* Message from the transport service to the library
* asking to check if both processes agree about this
* in either case, it is now OK for this client to
* send us another message for the given peer.
*/
- uint32_t success GNUNET_PACKED;
+ uint16_t success GNUNET_PACKED;
/**
* Size of message sent
*/
- uint32_t bytes_msg GNUNET_PACKED;
+ uint16_t bytes_msg GNUNET_PACKED;
/**
* Size of message sent over wire
};
+
/**
- * 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.
+ * Message used to notify the transport service about a message
+ * to be transmitted to another peer. The actual message follows.
*/
-struct AddressToStringResultMessage
+struct OutboundMessage
{
/**
- * Type will be #GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_TO_STRING_REPLY
+ * Type will be #GNUNET_MESSAGE_TYPE_TRANSPORT_SEND
*/
struct GNUNET_MessageHeader header;
/**
- * #GNUNET_OK if the conversion succeeded,
- * #GNUNET_SYSERR if it failed
+ * Always zero.
*/
- uint32_t res GNUNET_PACKED;
+ uint32_t reserved GNUNET_PACKED;
/**
- * Length of the following string, zero if @e is #GNUNET_SYSERR
+ * Allowed delay.
*/
- uint32_t addr_len GNUNET_PACKED;
+ struct GNUNET_TIME_RelativeNBO timeout;
+
+ /**
+ * Which peer should receive the message?
+ */
+ struct GNUNET_PeerIdentity peer;
+
};
+
+
+#if !(defined(GNUNET_TRANSPORT_COMMUNICATION_VERSION)||defined(GNUNET_TRANSPORT_CORE_VERSION))
+
+
/**
- * Message used to notify the transport service about a message
- * to be transmitted to another peer. The actual message follows.
+ * 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 OutboundMessage
+struct AddressToStringResultMessage
{
/**
- * Type will be #GNUNET_MESSAGE_TYPE_TRANSPORT_SEND
+ * Type will be #GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_TO_STRING_REPLY
*/
struct GNUNET_MessageHeader header;
/**
- * Always zero.
- */
- uint32_t reserved GNUNET_PACKED;
-
- /**
- * Allowed delay.
+ * #GNUNET_OK if the conversion succeeded,
+ * #GNUNET_SYSERR if it failed
*/
- struct GNUNET_TIME_RelativeNBO timeout;
+ uint32_t res GNUNET_PACKED;
/**
- * Which peer should receive the message?
+ * Length of the following string, zero if @e is #GNUNET_SYSERR
*/
- struct GNUNET_PeerIdentity peer;
-
+ uint32_t addr_len GNUNET_PACKED;
};
};
-
-
-
-
-
-
-
+#else
/* *********************** TNG messages ***************** */
*/
struct GNUNET_MessageHeader header;
+ /**
+ * NBO encoding of `enum GNUNET_TRANSPORT_CommunicatorCharacteristics`
+ */
+ uint32_t cc;
+
/* Followed by the address prefix of the communicator */
};
struct GNUNET_TIME_RelativeNBO expiration;
/**
- * An `enum GNUNET_ATS_Network_Type` in NBO.
+ * An `enum GNUNET_NetworkType` in NBO.
*/
uint32_t nt;
struct GNUNET_PeerIdentity receiver;
/**
- * An `enum GNUNET_ATS_Network_Type` in NBO.
+ * An `enum GNUNET_NetworkType` in NBO.
*/
uint32_t nt;
- // FIXME: add MTU?
+ /**
+ * Maximum transmission unit, in NBO. UINT32_MAX for unlimited.
+ */
+ uint32_t mtu;
+
+ /**
+ * An `enum GNUNET_TRANSPORT_ConnectionStatus` in NBO.
+ */
+ uint32_t cs;
/* followed by UTF-8 encoded, 0-terminated human-readable address */
};
/**
- * Transport tells communicator that it wants a new queue.
+ * Communicator tells transport how queue creation went down.
*/
struct GNUNET_TRANSPORT_CreateQueueResponse
{
};
+/**
+ * Message from communicator to transport service asking for
+ * transmission of a backchannel message with the given peer @e pid
+ * and communicator.
+ */
+struct GNUNET_TRANSPORT_CommunicatorBackchannel
+{
+ /**
+ * Type will be #GNUNET_MESSAGE_TYPE_TRANSPORT_COMMUNICATOR_BACKCHANNEL
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * Always zero, for alignment.
+ */
+ uint32_t reserved;
+
+ /**
+ * Target peer.
+ */
+ struct GNUNET_PeerIdentity pid;
+
+ /* Followed by a `struct GNUNET_MessageHeader` with the encapsulated
+ message to the communicator */
+
+ /* Followed by the 0-terminated string specifying the desired
+ communicator at the target (@e pid) peer */
+};
+
+
+/**
+ * Message from transport to communicator passing along a backchannel
+ * message from the given peer @e pid.
+ */
+struct GNUNET_TRANSPORT_CommunicatorBackchannelIncoming
+{
+ /**
+ * Type will be #GNUNET_MESSAGE_TYPE_TRANSPORT_COMMUNICATOR_BACKCHANNEL_INCOMING
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * Always zero, for alignment.
+ */
+ uint32_t reserved;
+
+ /**
+ * Origin peer.
+ */
+ struct GNUNET_PeerIdentity pid;
+
+ /* Followed by a `struct GNUNET_MessageHeader` with the encapsulated
+ message to the communicator */
+
+};
+
/**
struct GNUNET_MessageHeader header;
/**
- * Network type (an `enum GNUNET_ATS_Network_Type` in NBO).
+ * Network type (an `enum GNUNET_NetworkType` in NBO).
*/
uint32_t nt GNUNET_PACKED;
struct GNUNET_TIME_RelativeNBO rtt;
/**
- * Is inbound (in NBO).
+ * Connection status (in NBO).
*/
- uint32_t is_inbound GNUNET_PACKED;
+ uint32_t cs GNUNET_PACKED;
/**
* Messages pending (in NBO).
*/
uint32_t num_bytes_pending GNUNET_PACKED;
- /* Followed by 0-terminated address of the peer
- (TODO: do we allow no address? If so,
- adjust transport_api2_monitor!) */
+ /* Followed by 0-terminated address of the peer */
};
+/**
+ * Request to verify address.
+ */
+struct GNUNET_TRANSPORT_AddressToVerify
+{
+
+ /**
+ * Type will be #GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_CONSIDER_VERIFY.
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * Reserved. 0.
+ */
+ uint32_t reserved;
+
+ /**
+ * Peer the address is from.
+ */
+ struct GNUNET_PeerIdentity peer;
+
+ /* followed by variable-size raw address */
+};
+#endif
GNUNET_NETWORK_STRUCT_END