aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2011-10-17 07:12:24 +0000
committerChristian Grothoff <christian@grothoff.org>2011-10-17 07:12:24 +0000
commit4b5e8dcb8d6f0d29fffb823e600c73be404d9b39 (patch)
tree403065ddb639f9322082d7f332558b389f61d654 /src
parent206531cbf35d8a7f017857ae87b305ccf27e8ef7 (diff)
downloadgnunet-4b5e8dcb8d6f0d29fffb823e600c73be404d9b39.tar.gz
gnunet-4b5e8dcb8d6f0d29fffb823e600c73be404d9b39.zip
parse preference change messages
Diffstat (limited to 'src')
-rw-r--r--src/ats/gnunet-service-ats_addresses.c12
-rw-r--r--src/ats/gnunet-service-ats_addresses.h10
-rw-r--r--src/ats/gnunet-service-ats_performance.c27
3 files changed, 46 insertions, 3 deletions
diff --git a/src/ats/gnunet-service-ats_addresses.c b/src/ats/gnunet-service-ats_addresses.c
index 5eb6a4e6e..9c504b26c 100644
--- a/src/ats/gnunet-service-ats_addresses.c
+++ b/src/ats/gnunet-service-ats_addresses.c
@@ -279,6 +279,17 @@ GAS_addresses_request_address (const struct GNUNET_PeerIdentity *peer)
279} 279}
280 280
281 281
282// FIXME: this function should likely end up in the LP-subsystem and
283// not with 'addresses' in the future...
284void
285GAS_addresses_change_preference (const struct GNUNET_PeerIdentity *peer,
286 enum GNUNET_ATS_PreferenceKind kind,
287 float score)
288{
289 // do nothing for now...
290}
291
292
282/** 293/**
283 * Initialize address subsystem. 294 * Initialize address subsystem.
284 * 295 *
@@ -321,7 +332,6 @@ free_address_it (void *cls,
321} 332}
322 333
323 334
324
325/** 335/**
326 * Shutdown address subsystem. 336 * Shutdown address subsystem.
327 */ 337 */
diff --git a/src/ats/gnunet-service-ats_addresses.h b/src/ats/gnunet-service-ats_addresses.h
index 849e9b31a..fdb3df678 100644
--- a/src/ats/gnunet-service-ats_addresses.h
+++ b/src/ats/gnunet-service-ats_addresses.h
@@ -29,6 +29,8 @@
29 29
30#include "gnunet_util_lib.h" 30#include "gnunet_util_lib.h"
31#include "gnunet_transport_service.h" // FIXME... 31#include "gnunet_transport_service.h" // FIXME...
32#include "gnunet_ats_service.h"
33#include "ats.h"
32 34
33/** 35/**
34 * Initialize address subsystem. 36 * Initialize address subsystem.
@@ -73,6 +75,14 @@ void
73GAS_addresses_request_address (const struct GNUNET_PeerIdentity *peer); 75GAS_addresses_request_address (const struct GNUNET_PeerIdentity *peer);
74 76
75 77
78// FIXME: this function should likely end up in the LP-subsystem and
79// not with 'addresses' in the future...
80void
81GAS_addresses_change_preference (const struct GNUNET_PeerIdentity *peer,
82 enum GNUNET_ATS_PreferenceKind kind,
83 float score);
84
85
76/* FIXME: add performance request API */ 86/* FIXME: add performance request API */
77 87
78#endif 88#endif
diff --git a/src/ats/gnunet-service-ats_performance.c b/src/ats/gnunet-service-ats_performance.c
index 8a1ad611c..3a4acc641 100644
--- a/src/ats/gnunet-service-ats_performance.c
+++ b/src/ats/gnunet-service-ats_performance.c
@@ -25,6 +25,7 @@
25 * @author Christian Grothoff 25 * @author Christian Grothoff
26 */ 26 */
27#include "platform.h" 27#include "platform.h"
28#include "gnunet-service-ats_addresses.h"
28#include "gnunet-service-ats_performance.h" 29#include "gnunet-service-ats_performance.h"
29#include "gnunet-service-ats_reservations.h" 30#include "gnunet-service-ats_reservations.h"
30#include "ats.h" 31#include "ats.h"
@@ -242,9 +243,31 @@ void
242GAS_handle_preference_change (void *cls, struct GNUNET_SERVER_Client *client, 243GAS_handle_preference_change (void *cls, struct GNUNET_SERVER_Client *client,
243 const struct GNUNET_MessageHeader *message) 244 const struct GNUNET_MessageHeader *message)
244{ 245{
245 // const struct ChangePreferenceMessage * msg = (const struct ChangePreferenceMessage *) message; 246 const struct ChangePreferenceMessage * msg;
247 const struct PreferenceInformation *pi;
248 uint16_t msize;
249 uint32_t nump;
250 uint32_t i;
251
246 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Received `%s' message\n", "PREFERENCE_CHANGE"); 252 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Received `%s' message\n", "PREFERENCE_CHANGE");
247 // FIXME: implement later (we can safely ignore these for now) 253 msize = ntohs (message->size);
254 if (msize < sizeof (struct ChangePreferenceMessage))
255 {
256 GNUNET_break (0);
257 GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
258 }
259 msg = (const struct ChangePreferenceMessage *) message;
260 nump = ntohl (msg->num_preferences);
261 if (msize != sizeof (struct ChangePreferenceMessage) * nump * sizeof (struct PreferenceInformation))
262 {
263 GNUNET_break (0);
264 GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
265 }
266 pi = (const struct PreferenceInformation *) &msg[1];
267 for (i=0;i<nump;i++)
268 GAS_addresses_change_preference (&msg->peer,
269 (enum GNUNET_ATS_PreferenceKind) ntohl (pi[i].preference_kind),
270 pi[i].preference_value);
248 GNUNET_SERVER_receive_done (client, GNUNET_OK); 271 GNUNET_SERVER_receive_done (client, GNUNET_OK);
249} 272}
250 273