X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fats%2Fats.h;h=56117e5437342ec8f0e0b92693fd5d693998b585;hb=98ac2b34f979cf10da24c984e690dabf7b34794b;hp=482b7b4b3388e25283bac6ef585ac4538c2c9862;hpb=b2e99dd91c01b5fcc16b3b1031df897aeec05eef;p=oweals%2Fgnunet.git diff --git a/src/ats/ats.h b/src/ats/ats.h index 482b7b4b3..56117e543 100644 --- a/src/ats/ats.h +++ b/src/ats/ats.h @@ -1,6 +1,6 @@ /* This file is part of GNUnet. - (C) 2010-2015 Christian Grothoff (and other contributing authors) + Copyright (C) 2010-2015 GNUnet e.V. GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published @@ -14,8 +14,8 @@ You should have received a copy of the GNU General Public License along with GNUnet; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /** * @file ats/ats.h @@ -27,6 +27,8 @@ #define ATS_H #include "gnunet_util_lib.h" +#include "gnunet_ats_service.h" + /** * Flag used to indicate which type of client is connecting @@ -80,7 +82,7 @@ struct ClientStartMessage /** - * Scheduling client to ATS service: we would like to have + * Connectivity client to ATS service: we would like to have * address suggestions for this peer. */ struct RequestAddressMessage @@ -93,9 +95,9 @@ struct RequestAddressMessage struct GNUNET_MessageHeader header; /** - * Always zero. + * How "strong" is our need for an address for this peer? */ - uint32_t reserved GNUNET_PACKED; + uint32_t strength GNUNET_PACKED; /** * Peer to get address suggestions for. @@ -105,30 +107,7 @@ struct RequestAddressMessage /** - * Scheduling client to ATS service: reset backoff for - * address suggestions to this peer. - */ -struct ResetBackoffMessage -{ - /** - * Type is #GNUNET_MESSAGE_TYPE_ATS_RESET_BACKOFF. - */ - struct GNUNET_MessageHeader header; - - /** - * Always zero. - */ - uint32_t reserved GNUNET_PACKED; - - /** - * Peer to reset backoff for. - */ - struct GNUNET_PeerIdentity peer; -}; - - -/** - * ATS client to ATS service: here is another address you can use. + * Scheduling client to ATS service: here is another address you can use. */ struct AddressAddMessage { @@ -137,16 +116,6 @@ struct AddressAddMessage */ struct GNUNET_MessageHeader header; - /** - * Length of the `struct GNUNET_ATS_Information` array that follows this struct. - */ - uint32_t ats_count GNUNET_PACKED; - - /** - * Identity of the peer that this address is for. - */ - struct GNUNET_PeerIdentity peer; - /** * Number of bytes in the address that follows this struct. */ @@ -157,6 +126,11 @@ struct AddressAddMessage */ uint16_t plugin_name_length GNUNET_PACKED; + /** + * Identity of the peer that this address is for. + */ + struct GNUNET_PeerIdentity peer; + /** * Internal number this client will henceforth use to * refer to this address. @@ -169,8 +143,12 @@ struct AddressAddMessage */ uint32_t address_local_info GNUNET_PACKED; + /** + * Performance properties of the address. + */ + struct GNUNET_ATS_PropertiesNBO properties; + /* followed by: - * - struct GNUNET_ATS_Information [ats_count]; * - char address[address_length] * - char plugin_name[plugin_name_length] (including '\0'-termination). */ @@ -189,41 +167,6 @@ struct AddressUpdateMessage */ struct GNUNET_MessageHeader header; - /** - * Length of the `struct GNUNET_ATS_Information` array that follows. - */ - uint32_t ats_count GNUNET_PACKED; - - /** - * Which peer is this about? (Technically redundant, as the - * @e session_id should be sufficient, but enables ATS service - * to find the session faster). - */ - struct GNUNET_PeerIdentity peer; - - /** - * Internal number this client uses to refer to this address. - */ - uint32_t session_id GNUNET_PACKED; - - /* followed by: - * - struct GNUNET_ATS_Information [ats_count]; - */ - -}; - - -/** - * Message sent from ATS client to ATS service to notify - * it if we started (or stopped) using an address. - */ -struct AddressUseMessage -{ - /** - * Type is #GNUNET_MESSAGE_TYPE_ATS_ADDRESS_IN_USE. - */ - struct GNUNET_MessageHeader header; - /** * Internal number this client uses to refer to this address. */ @@ -237,9 +180,9 @@ struct AddressUseMessage struct GNUNET_PeerIdentity peer; /** - * #GNUNET_YES or #GNUNET_NO. + * Performance properties of the address. */ - uint32_t in_use GNUNET_PACKED; + struct GNUNET_ATS_PropertiesNBO properties; }; @@ -275,7 +218,7 @@ struct AddressDestroyedMessage * Message sent by ATS service to client to confirm that it is done * using the given session ID. */ -struct SessionReleaseMessage +struct GNUNET_ATS_SessionReleaseMessage { /** * Type is #GNUNET_MESSAGE_TYPE_ATS_SESSION_RELEASE. @@ -335,30 +278,63 @@ struct AddressSuggestionMessage }; - - +/** + * + */ struct PeerInformationMessage { + /** + * Type is #GNUNET_MESSAGE_TYPE_ATS_PEER_INFORMATION + */ struct GNUNET_MessageHeader header; - uint32_t ats_count GNUNET_PACKED; - - uint32_t address_active GNUNET_PACKED; + /** + * + */ + uint16_t address_length GNUNET_PACKED; - uint32_t id GNUNET_PACKED; + /** + * + */ + uint16_t plugin_name_length GNUNET_PACKED; + /** + * + */ struct GNUNET_PeerIdentity peer; - uint16_t address_length GNUNET_PACKED; + /** + * + */ + uint32_t address_active GNUNET_PACKED; - uint16_t plugin_name_length GNUNET_PACKED; + /** + * + */ + uint32_t id GNUNET_PACKED; + /** + * + */ struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out; + /** + * + */ struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in; + /** + * Performance properties of the address. + */ + struct GNUNET_ATS_PropertiesNBO properties; + + /** + * Local-only information of the address, see + * `enum GNUNET_HELLO_AddressInfo`. + */ + uint32_t address_local_info GNUNET_PACKED; + /* followed by: - * - struct GNUNET_ATS_Information [ats_count]; * - char address[address_length] * - char plugin_name[plugin_name_length] (including '\0'-termination). */ @@ -395,44 +371,95 @@ struct AddressListRequestMessage }; +/** + * + */ struct ReservationRequestMessage { + /** + * Type is #GNUNET_MESSAGE_TYPE_ATS_RESERVATION_REQUEST + */ struct GNUNET_MessageHeader header; + /** + * + */ int32_t amount GNUNET_PACKED; + /** + * + */ struct GNUNET_PeerIdentity peer; }; - +/** + * + */ struct ReservationResultMessage { + /** + * Type is #GNUNET_MESSAGE_TYPE_ATS_RESERVATION_RESULT + */ struct GNUNET_MessageHeader header; + /** + * + */ int32_t amount GNUNET_PACKED; + /** + * + */ struct GNUNET_PeerIdentity peer; + /** + * + */ struct GNUNET_TIME_RelativeNBO res_delay; }; + +/** + * Variable-size entry in a `struct ChangePreferenceMessage` or + * `struct FeedbackPreferenceMessage`. + */ struct PreferenceInformation { + /** + * An `enum GNUNET_ATS_PreferenceKind` in NBO. + */ uint32_t preference_kind GNUNET_PACKED; + /** + * Degree of preference (or appreciation) for this @e + * preference_kind being expressed. + */ float preference_value GNUNET_PACKED; }; +/** + * Client to ATS: I have a performance preference for a peer. + */ struct ChangePreferenceMessage { + /** + * Type is #GNUNET_MESSAGE_TYPE_ATS_PREFERENCE_CHANGE. + */ struct GNUNET_MessageHeader header; + /** + * How many `struct PreferenceInformation` entries follow + * this struct? + */ uint32_t num_preferences GNUNET_PACKED; + /** + * Which peer is the preference being expressed for? + */ struct GNUNET_PeerIdentity peer; /* followed by 'num_preferences' @@ -445,6 +472,9 @@ struct ChangePreferenceMessage */ struct FeedbackPreferenceMessage { + /** + * Type is #GNUNET_MESSAGE_TYPE_ATS_PREFERENCE_FEEDBACK. + */ struct GNUNET_MessageHeader header; /**