100 const char *add_info;
105 add_info =
"GAS_INFO_NONE";
109 add_info =
"GAS_INFO_MLP_FULL";
113 add_info =
"GAS_INFO_MLP_UPDATED";
117 add_info =
"GAS_INFO_PROP_ALL";
121 add_info =
"GAS_INFO_PROP_SINGLE";
125 add_info =
"INVALID";
132 "Solver notifies `%s' with result `%s' `%s'\n",
133 "GAS_OP_SOLVE_START",
140 "Solver notifies `%s' with result `%s'\n",
147 "Solver notifies `%s' with result `%s'\n",
148 "GAS_OP_SOLVE_SETUP_START",
154 "Solver notifies `%s' with result `%s'\n",
155 "GAS_OP_SOLVE_SETUP_STOP",
161 "Solver notifies `%s' with result `%s'\n",
162 "GAS_OP_SOLVE_LP_START",
168 "Solver notifies `%s' with result `%s'\n",
169 "GAS_OP_SOLVE_LP_STOP",
175 "Solver notifies `%s' with result `%s'\n",
176 "GAS_OP_SOLVE_MLP_START",
182 "Solver notifies `%s' with result `%s'\n",
183 "GAS_OP_SOLVE_MLP_STOP",
189 "Solver notifies `%s' with result `%s'\n",
190 "GAS_OP_SOLVE_UPDATE_NOTIFICATION_START",
196 "Solver notifies `%s' with result `%s'\n",
197 "GAS_OP_SOLVE_UPDATE_NOTIFICATION_STOP",
222 "Bandwidth assignment changed for peer %s to %u/%u\n",
246 "Telling transport to disconnect peer `%s'\n",
266 "Bandwidth change too small, not notifying client\n");
271 "Sending bandwidth update for peer `%s': %u/%u\n",
297 static unsigned long long 303 unsigned long long ret;
326 "Could not load %s quota for network `%s': `%s', assigning default bandwidth %llu\n"),
336 _ (
"%s quota configured for network `%s' is %llu\n"),
354 static unsigned long long 361 unsigned long long ret;
382 "No %s-quota configured for network `%s', assigning default bandwidth %llu\n"),
404 unsigned long long *out_dest,
405 unsigned long long *in_dest,
419 "Loaded quota for network `%s' (in/out): %llu %llu\n",
448 "No resource assignment method configured, using proportional approach\n");
465 "libgnunet_plugin_ats_%s",
468 "Initializing solver `%s'\n",
474 _ (
"Failed to initialize solver `%s'!\n"),
GAS_solver_stop_get_preferred_address s_get_stop
Tell solver stop notifying ATS about changes for this peers.
Solving of the LP problem was started MLP solver only.
After the problem was finished, start notifications about changes to addresses.
#define GNUNET_ATS_MaxBandwidthString
Textual equivalent for GNUNET_ATS_MaxBandwidth.
GAS_solver_address_add s_add
Add a new address for a peer to the solver.
static const struct GNUNET_CONFIGURATION_Handle * cfg
Configuration we are using.
const char * GNUNET_NT_to_string(enum GNUNET_NetworkType net)
Convert a enum GNUNET_NetworkType to a string.
The proportional solver had to recalculate for a single network.
uint32_t session_id
Session ID, can never be 0.
struct GNUNET_ATS_Properties properties
ATS performance information for this address.
The setup of the problem as a preparation to solve it was started.
void GAS_plugin_delete_address(struct ATS_Address *address)
Tell the solver that the given address is no longer valid can cannot be used any longer.
void GAS_plugin_new_address(struct ATS_Address *new_address)
Tell the solver that the given address can now be used for talking to the respective peer...
int active
Is this the active address for this peer?
GAS_get_preferences get_preferences
ATS addresses function to obtain preference values.
static unsigned long long parse_quota(const char *quota_str, const char *direction, enum GNUNET_NetworkType network)
Convert quota from text to numeric value.
void GAS_plugin_notify_feedback(struct GNUNET_SERVICE_Client *application, const struct GNUNET_PeerIdentity *peer, const struct GNUNET_TIME_Relative scope, enum GNUNET_ATS_PreferenceKind kind, float score_abs)
Tell the solver that the given client has expressed its appreciation for the past performance of a gi...
struct GNUNET_PeerIdentity peer
Peer ID this address is for.
void GAS_plugin_solver_lock()
Stop instant solving, there are many state updates happening in bulk right now.
GAS_Solver_Status
Status of a GAS_Solver_Operation operation.
The proportional solver had to recalculate for all networks.
No more specific information.
const void * addr
Address (in plugin-specific binary format).
uint32_t last_notified_bw_out
Outbound bandwidth assigned by solver in NBO.
GAS_solver_address_feedback_preference s_feedback
Give feedback about the current assignment.
static int ret
Return value of the commandline.
ats service address: management of ATS properties and preferences normalization
GAS_solver_address_property_changed s_address_update_property
Update the properties of an address in the solver.
#define GNUNET_CONSTANTS_DEFAULT_BW_IN_OUT
Bandwidth (in/out) to assume initially (before either peer has communicated any particular preference...
int GNUNET_STRINGS_fancy_size_to_bytes(const char *fancy_size, unsigned long long *size)
Convert a given fancy human-readable size to bytes.
ats service plugin management
static unsigned int load_quotas(const struct GNUNET_CONFIGURATION_Handle *cfg, unsigned long long *out_dest, unsigned long long *in_dest, int dest_length)
Load quotas for networks from configuration.
A full solution process is performed Quite specific to the MLP solver.
size_t addr_len
Address length, number of bytes in addr.
char * plugin
Plugin name.
Solving of the LP problem is done MLP solver only.
enum GNUNET_GenericReturnValue GNUNET_CONFIGURATION_get_value_string(const struct GNUNET_CONFIGURATION_Handle *cfg, const char *section, const char *option, char **value)
Get a configuration value that should be a string.
void GAS_plugin_notify_preference_changed(const struct GNUNET_PeerIdentity *peer, enum GNUNET_ATS_PreferenceKind kind, double pref_rel)
The preference changed for a peer, update solver.
#define GNUNET_strdup(a)
Wrapper around GNUNET_xstrdup_.
struct GNUNET_STATISTICS_Handle * GSA_stats
Handle for statistics.
GNUNET_NetworkType
Types of networks (with separate quotas) we support.
#define GNUNET_break(cond)
Use this for internal assertion violations that are not fatal (can be handled) but should not occur...
struct GNUNET_STATISTICS_Handle * stats
Statistics handle to be used by the solver.
enum GNUNET_ABD_AlgoDirectionFlags direction
API enum, filled and passed for collect/verify.
void GAS_reservations_set_bandwidth(const struct GNUNET_PeerIdentity *peer, struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
Set the amount of bandwidth the other peer could currently transmit to us (as far as we know) to the ...
void * GNUNET_PLUGIN_unload(const char *library_name, void *arg)
Unload plugin (runs the "done" callback and returns whatever "done" returned).
GAS_Solver_Operation
Operation codes for solver information callback.
Handle to a client that is connected to a service.
void GAS_plugin_solver_unlock()
Resume instant solving, we are done with the bulk state updates.
uint32_t assigned_bw_in
Inbound bandwidth assigned by solver.
Solving of the MLP problem is done MLP solver only.
ats service, inbound bandwidth reservation management
A solution iteration has been started.
void GAS_plugin_notify_property_changed(struct ATS_Address *address)
The relative value for a property changed.
void GAS_scheduling_transmit_address_suggestion(const struct GNUNET_PeerIdentity *peer, uint32_t session_id, struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out, struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
Transmit the given address suggestion and bandwidth update to all scheduling clients.
static enum GNUNET_NetworkType scope
Which network scope do we belong to?
GAS_Solver_Additional_Information
Status of the operation.
int GAS_plugin_init(const struct GNUNET_CONFIGURATION_Handle *cfg)
Initialize plugins subsystem.
GAS_solver_address_delete s_del
Delete an address in the solver.
Solving of the MLP problem was started MLP solver only.
uint16_t status
See PRISM_STATUS_*-constants.
static void bandwidth_changed_cb(void *cls, struct ATS_Address *address)
Callback for solver to notify about assignment changes.
#define GNUNET_ATS_DefaultBandwidth
Default bandwidth assigned to a network : 64 KB/s.
static void solver_info_cb(void *cls, enum GAS_Solver_Operation op, enum GAS_Solver_Status status, enum GAS_Solver_Additional_Information add)
Solver information callback.
unsigned int GAS_connectivity_has_peer(void *cls, const struct GNUNET_PeerIdentity *peer)
Is the given peer in the list of peers for which we have an address request?
void * cls
Closure to pass to all solver functions in this struct.
GAS_solver_address_change_preference s_pref
Change relative preference for quality in solver.
static unsigned long long load_quota(const struct GNUNET_CONFIGURATION_Handle *cfg, enum GNUNET_NetworkType type, const char *direction)
Load quota value from the configuration cfg for the given network type and direction.
static char * plugin
Solver plugin name as string.
int int GNUNET_asprintf(char **buf, const char *format,...) __attribute__((format(printf
Like asprintf, just portable.
#define GNUNET_ATS_MaxBandwidth
Maximum bandwidth assigned to a network : 4095 MB/s.
Address with additional information.
struct GNUNET_TESTBED_Peer * peer
The peer associated with this model.
void GAS_plugin_request_connect_start(const struct GNUNET_PeerIdentity *pid)
Notify the plugin that a request to connect to a particular peer was given to us. ...
void GAS_plugin_done()
Shutdown address subsystem.
struct GNUNET_CONTAINER_MultiPeerMap * GSA_addresses
A multihashmap to store all addresses.
ats service, interaction with 'connecivity' API
void * cls
Closure to pass to all callbacks in this struct.
manage preferences expressed by clients
struct GNUNET_BANDWIDTH_Value32NBO GNUNET_BANDWIDTH_value_init(uint32_t bytes_per_second)
Create a new bandwidth value.
static int add
Desired action is to add a record.
GAS_solver_get_preferred_address s_get
Tell solver to notify ATS if the address to use changes for a specific peer using the bandwidth chang...
unsigned long long in_quota[6]
Array of configured inbound quotas Order according to networks in network array.
A solution iteration has been finished.
enum GNUNET_NetworkType scope
Which network scope does the respective address belong to? This property does not change...
GAS_solver_bulk_start s_bulk_start
Start a bulk operation.
The identity of the host (wraps the signing key of the peer).
#define GNUNET_BANDWIDTH_ZERO
Convenience definition to use for 0-bandwidth.
static struct GNUNET_ATS_PluginEnvironment env
Solver environment.
uint32_t assigned_bw_out
Outbound bandwidth assigned by solver.
const struct GNUNET_CONFIGURATION_Handle * cfg
Configuration handle to be used by the solver.
#define GNUNET_log(kind,...)
GAS_solver_information_callback info_cb
Callback for solver to call with status information, can be NULL.
The setup of the problem as a preparation to solve is finished.
unsigned long long out_quota[6]
Array of configured outbound quotas Order according to networks in network array. ...
An existing solution was reused Quite specific to the MLP solver.
enum GNUNET_TESTBED_UnderlayLinkModelType type
the type of this model
void GAS_plugin_request_connect_stop(const struct GNUNET_PeerIdentity *pid)
Notify the plugin that a request to connect to a particular peer was dropped.
void * GNUNET_PLUGIN_load(const char *library_name, void *arg)
Setup plugin (runs the "init" callback and returns whatever "init" returned).
ats service, interaction with 'scheduling' API
static struct GNUNET_ATS_SolverFunctions * sf
Solver handle.
GNUNET_ATS_PreferenceKind
Enum defining all known preference categories.
static struct GNUNET_ARM_Operation * op
Current operation.
struct GNUNET_CONTAINER_MultiPeerMap * addresses
Hashmap containing all addresses available.
The ATS plugin will pass a pointer to a struct of this type as to the initialization function of the ...
static struct GNUNET_PeerIdentity pid
Identity of the peer we transmit to / connect to.
GAS_solver_bulk_stop s_bulk_stop
Bulk operation done.
static char * address
GNS address for this phone.
GAS_bandwidth_changed_cb bandwidth_changed_cb
ATS addresses callback to be notified about bandwidth assignment changes.
After the problem was finished, notifications about changes to addresses are done.
const double * GAS_preference_get_by_peer(void *cls, const struct GNUNET_PeerIdentity *id)
Get the normalized preference values for a specific peer or the default values if.
const char * GNUNET_i2s(const struct GNUNET_PeerIdentity *pid)
Convert a peer identity to a string (for printing debug messages).
unsigned int network_count
Number of networks available, size of the out_quota and in_quota arrays.
enum GNUNET_HELLO_AddressInfo local_address_info
Field to store local flags.
uint32_t last_notified_bw_in
Inbound bandwidth assigned by solver in NBO.
GAS_get_connectivity get_connectivity
ATS addresses function to obtain preference values.
#define GNUNET_free(ptr)
Wrapper around free.
Time for relative time used by GNUnet, in microseconds.