aboutsummaryrefslogtreecommitdiff
path: root/src/sensor
diff options
context:
space:
mode:
authorOmar Tarabai <tarabai@devegypt.com>2014-08-04 13:55:10 +0000
committerOmar Tarabai <tarabai@devegypt.com>2014-08-04 13:55:10 +0000
commitf70a3e885ab86875a3c1215d755e3f3dd0030a1b (patch)
treec98daefbcb452032b75f38c72e5835d981019e39 /src/sensor
parent4371b0fcd9b50f78ca27ac48adf2f4663b2dfc9b (diff)
downloadgnunet-f70a3e885ab86875a3c1215d755e3f3dd0030a1b.tar.gz
gnunet-f70a3e885ab86875a3c1215d755e3f3dd0030a1b.zip
sensor: towards p2p anomaly reporting
Diffstat (limited to 'src/sensor')
-rw-r--r--src/sensor/gnunet-service-sensor-analysis.c95
-rw-r--r--src/sensor/gnunet-service-sensor-reporting.c151
-rw-r--r--src/sensor/gnunet-service-sensor.c3
-rw-r--r--src/sensor/sensor.conf.in5
-rw-r--r--src/sensor/sensor.h4
-rw-r--r--src/sensor/sensor_util_lib.c61
-rw-r--r--src/sensor/sensors/average-ping-rtt9
-rw-r--r--src/sensor/sensors/core-peers-connected9
-rw-r--r--src/sensor/sensors/datacache-bytes-stored9
-rw-r--r--src/sensor/sensors/dht-peers-connected9
-rw-r--r--src/sensor/sensors/fs-peers-connected9
-rw-r--r--src/sensor/sensors/gnunet-version9
-rw-r--r--src/sensor/sensors/known-peers9
-rw-r--r--src/sensor/sensors/nse9
-rw-r--r--src/sensor/sensors/peerstore-memory11
-rw-r--r--src/sensor/sensors/transport-bytes-received9
-rw-r--r--src/sensor/sensors/transport-http-connections9
-rw-r--r--src/sensor/sensors/transport-https-connections9
-rw-r--r--src/sensor/sensors/transport-peers-connected9
-rw-r--r--src/sensor/sensors/transport-tcp-bytes-transmitted9
-rw-r--r--src/sensor/sensors/transport-tcp-sessions-active9
21 files changed, 237 insertions, 219 deletions
diff --git a/src/sensor/gnunet-service-sensor-analysis.c b/src/sensor/gnunet-service-sensor-analysis.c
index f4a1269a4..175fc259c 100644
--- a/src/sensor/gnunet-service-sensor-analysis.c
+++ b/src/sensor/gnunet-service-sensor-analysis.c
@@ -31,35 +31,51 @@
31 31
32#define LOG(kind,...) GNUNET_log_from (kind, "sensor-analysis",__VA_ARGS__) 32#define LOG(kind,...) GNUNET_log_from (kind, "sensor-analysis",__VA_ARGS__)
33 33
34/* 34/**
35 * Carries information about the analysis model 35 * Carries information about the analysis model
36 * corresponding to one sensor 36 * corresponding to one sensor
37 */ 37 */
38struct SensorModel 38struct SensorModel
39{ 39{
40 40
41 /* 41 /**
42 * DLL 42 * DLL
43 */ 43 */
44 struct SensorModel *prev; 44 struct SensorModel *prev;
45 45
46 /* 46 /**
47 * DLL 47 * DLL
48 */ 48 */
49 struct SensorModel *next; 49 struct SensorModel *next;
50 50
51 /* 51 /**
52 * Pointer to sensor info structure 52 * Pointer to sensor info structure
53 */ 53 */
54 struct GNUNET_SENSOR_SensorInfo *sensor; 54 struct GNUNET_SENSOR_SensorInfo *sensor;
55 55
56 /* 56 /**
57 * Watcher of sensor values 57 * Watcher of sensor values
58 */ 58 */
59 struct GNUNET_PEERSTORE_WatchContext *wc; 59 struct GNUNET_PEERSTORE_WatchContext *wc;
60 60
61 /* 61 /**
62 * Closure for model plugin 62 * State of sensor. #GNUNET_YES if anomalous, #GNUNET_NO otherwise.
63 */
64 int anomalous;
65
66 /**
67 * Number of anomalous readings (positive) received in a row.
68 */
69 int positive_count;
70
71 /**
72 * Number of non-anomalous (negative) readings received in a row.
73 */
74 int negative_count;
75
76 /**
77 * Closure for model plugin.
78 * Usually, the instance of the model created for this sensor.
63 */ 79 */
64 void *cls; 80 void *cls;
65 81
@@ -75,22 +91,22 @@ static const struct GNUNET_CONFIGURATION_Handle *cfg;
75 */ 91 */
76static char *model_lib_name; 92static char *model_lib_name;
77 93
78/* 94/**
79 * Model handle 95 * Model handle
80 */ 96 */
81static struct GNUNET_SENSOR_ModelFunctions *model_api; 97static struct GNUNET_SENSOR_ModelFunctions *model_api;
82 98
83/* 99/**
84 * Handle to peerstore service 100 * Handle to peerstore service
85 */ 101 */
86static struct GNUNET_PEERSTORE_Handle *peerstore; 102static struct GNUNET_PEERSTORE_Handle *peerstore;
87 103
88/* 104/**
89 * Head of DLL of created models 105 * Head of DLL of created models
90 */ 106 */
91static struct SensorModel *models_head; 107static struct SensorModel *models_head;
92 108
93/* 109/**
94 * Tail of DLL of created models 110 * Tail of DLL of created models
95 */ 111 */
96static struct SensorModel *models_tail; 112static struct SensorModel *models_tail;
@@ -101,6 +117,12 @@ static struct SensorModel *models_tail;
101struct GNUNET_PeerIdentity peerid; 117struct GNUNET_PeerIdentity peerid;
102 118
103/** 119/**
120 * How many subsequent values required to flip anomaly label.
121 * E.g. After 3 subsequent anomaly reports, status change to anomalous.
122 */
123unsigned long long confirmation_count;
124
125/**
104 * Destroy a created model 126 * Destroy a created model
105 */ 127 */
106static void 128static void
@@ -155,11 +177,16 @@ SENSOR_analysis_stop ()
155 177
156/** 178/**
157 * Sensor value watch callback 179 * Sensor value watch callback
180 *
181 * @param cls Sensor model struct
182 * @param record Received record from peerstore, should contain new sensor value
183 * @param emsg Error message from peerstore if any, NULL if no errors
184 * @return #GNUNET_YES
158 */ 185 */
159static int 186static int
160sensor_watcher (void *cls, struct GNUNET_PEERSTORE_Record *record, char *emsg) 187sensor_watcher (void *cls, struct GNUNET_PEERSTORE_Record *record, char *emsg)
161{ 188{
162 struct SensorModel *sensor_model = cls; 189 struct SensorModel *model = cls;
163 double *val; 190 double *val;
164 int anomalous; 191 int anomalous;
165 192
@@ -171,15 +198,41 @@ sensor_watcher (void *cls, struct GNUNET_PEERSTORE_Record *record, char *emsg)
171 return GNUNET_YES; 198 return GNUNET_YES;
172 } 199 }
173 val = (double *) (record->value); 200 val = (double *) (record->value);
174 anomalous = model_api->feed_model (sensor_model->cls, *val); 201 anomalous = model_api->feed_model (model->cls, *val);
175 if (GNUNET_YES == anomalous) 202 if (GNUNET_YES == anomalous)
176 { 203 {
177 LOG (GNUNET_ERROR_TYPE_WARNING, 204 model->positive_count++;
178 "Anomaly detected in sensor `%s', value: %f.\n", 205 model->negative_count = 0;
179 sensor_model->sensor->name, *val); 206 if (GNUNET_NO == model->anomalous &&
207 model->positive_count >= confirmation_count)
208 {
209 model->anomalous = GNUNET_YES;
210 LOG (GNUNET_ERROR_TYPE_WARNING,
211 "Anomaly state started for sensor `%s'.\n", model->sensor->name);
212 GNUNET_PEERSTORE_store (peerstore, "senosr-analysis", &peerid,
213 model->sensor->name, &model->anomalous,
214 sizeof (model->anomalous),
215 GNUNET_TIME_UNIT_FOREVER_ABS,
216 GNUNET_PEERSTORE_STOREOPTION_REPLACE, NULL, NULL);
217 }
180 } 218 }
181 else 219 else
182 LOG (GNUNET_ERROR_TYPE_DEBUG, "Value non-anomalous.\n"); 220 {
221 model->negative_count++;
222 model->positive_count = 0;
223 if (GNUNET_YES == model->anomalous &&
224 model->negative_count >= confirmation_count)
225 {
226 model->anomalous = GNUNET_NO;
227 LOG (GNUNET_ERROR_TYPE_INFO, "Anomaly state stopped for sensor `%s'.\n",
228 model->sensor->name);
229 GNUNET_PEERSTORE_store (peerstore, "senosr-analysis", &peerid,
230 model->sensor->name, &model->anomalous,
231 sizeof (model->anomalous),
232 GNUNET_TIME_UNIT_FOREVER_ABS,
233 GNUNET_PEERSTORE_STOREOPTION_REPLACE, NULL, NULL);
234 }
235 }
183 return GNUNET_YES; 236 return GNUNET_YES;
184} 237}
185 238
@@ -206,6 +259,9 @@ init_sensor_model (void *cls, const struct GNUNET_HashCode *key, void *value)
206 sensor_model->wc = 259 sensor_model->wc =
207 GNUNET_PEERSTORE_watch (peerstore, "sensor", &peerid, sensor->name, 260 GNUNET_PEERSTORE_watch (peerstore, "sensor", &peerid, sensor->name,
208 &sensor_watcher, sensor_model); 261 &sensor_watcher, sensor_model);
262 sensor_model->anomalous = GNUNET_NO;
263 sensor_model->positive_count = 0;
264 sensor_model->negative_count = 0;
209 sensor_model->cls = model_api->create_model (model_api->cls); 265 sensor_model->cls = model_api->create_model (model_api->cls);
210 GNUNET_CONTAINER_DLL_insert (models_head, models_tail, sensor_model); 266 GNUNET_CONTAINER_DLL_insert (models_head, models_tail, sensor_model);
211 LOG (GNUNET_ERROR_TYPE_DEBUG, "Created sensor model for `%s'.\n", 267 LOG (GNUNET_ERROR_TYPE_DEBUG, "Created sensor model for `%s'.\n",
@@ -255,6 +311,11 @@ SENSOR_analysis_start (const struct GNUNET_CONFIGURATION_Handle *c,
255 SENSOR_analysis_stop (); 311 SENSOR_analysis_stop ();
256 return GNUNET_SYSERR; 312 return GNUNET_SYSERR;
257 } 313 }
314 if (GNUNET_OK !=
315 GNUNET_CONFIGURATION_get_value_number (cfg, "sensor-analysis",
316 "CONFIRMATION_COUNT",
317 &confirmation_count))
318 confirmation_count = 1;
258 GNUNET_CRYPTO_get_peer_identity (cfg, &peerid); 319 GNUNET_CRYPTO_get_peer_identity (cfg, &peerid);
259 GNUNET_CONTAINER_multihashmap_iterate (sensors, &init_sensor_model, NULL); 320 GNUNET_CONTAINER_multihashmap_iterate (sensors, &init_sensor_model, NULL);
260 return GNUNET_OK; 321 return GNUNET_OK;
diff --git a/src/sensor/gnunet-service-sensor-reporting.c b/src/sensor/gnunet-service-sensor-reporting.c
index b935328d4..9bcf9904b 100644
--- a/src/sensor/gnunet-service-sensor-reporting.c
+++ b/src/sensor/gnunet-service-sensor-reporting.c
@@ -41,18 +41,18 @@
41/** 41/**
42 * Context of reporting operations 42 * Context of reporting operations
43 */ 43 */
44struct ReportingContext 44struct ValueReportingContext
45{ 45{
46 46
47 /** 47 /**
48 * DLL 48 * DLL
49 */ 49 */
50 struct ReportingContext *prev; 50 struct ValueReportingContext *prev;
51 51
52 /** 52 /**
53 * DLL 53 * DLL
54 */ 54 */
55 struct ReportingContext *next; 55 struct ValueReportingContext *next;
56 56
57 /** 57 /**
58 * Sensor information 58 * Sensor information
@@ -165,12 +165,12 @@ static struct GNUNET_CADET_Handle *cadet;
165/** 165/**
166 * Head of DLL of all reporting contexts 166 * Head of DLL of all reporting contexts
167 */ 167 */
168struct ReportingContext *rc_head; 168struct ValueReportingContext *vrc_head;
169 169
170/** 170/**
171 * Tail of DLL of all reporting contexts 171 * Tail of DLL of all reporting contexts
172 */ 172 */
173struct ReportingContext *rc_tail; 173struct ValueReportingContext *vrc_tail;
174 174
175/** 175/**
176 * Head of DLL of all cadet channels 176 * Head of DLL of all cadet channels
@@ -186,24 +186,24 @@ struct CadetChannelContext *cc_tail;
186 * Destroy a reporting context structure 186 * Destroy a reporting context structure
187 */ 187 */
188static void 188static void
189destroy_reporting_context (struct ReportingContext *rc) 189destroy_reporting_context (struct ValueReportingContext *vrc)
190{ 190{
191 if (NULL != rc->wc) 191 if (NULL != vrc->wc)
192 { 192 {
193 GNUNET_PEERSTORE_watch_cancel (rc->wc); 193 GNUNET_PEERSTORE_watch_cancel (vrc->wc);
194 rc->wc = NULL; 194 vrc->wc = NULL;
195 } 195 }
196 if (GNUNET_SCHEDULER_NO_TASK != rc->cp_task) 196 if (GNUNET_SCHEDULER_NO_TASK != vrc->cp_task)
197 { 197 {
198 GNUNET_SCHEDULER_cancel (rc->cp_task); 198 GNUNET_SCHEDULER_cancel (vrc->cp_task);
199 rc->cp_task = GNUNET_SCHEDULER_NO_TASK; 199 vrc->cp_task = GNUNET_SCHEDULER_NO_TASK;
200 } 200 }
201 if (NULL != rc->last_value) 201 if (NULL != vrc->last_value)
202 { 202 {
203 GNUNET_free (rc->last_value); 203 GNUNET_free (vrc->last_value);
204 rc->last_value_size = 0; 204 vrc->last_value_size = 0;
205 } 205 }
206 GNUNET_free (rc); 206 GNUNET_free (vrc);
207} 207}
208 208
209 209
@@ -239,7 +239,7 @@ destroy_cadet_channel_context (struct CadetChannelContext *cc)
239void 239void
240SENSOR_reporting_stop () 240SENSOR_reporting_stop ()
241{ 241{
242 struct ReportingContext *rc; 242 struct ValueReportingContext *vrc;
243 struct CadetChannelContext *cc; 243 struct CadetChannelContext *cc;
244 244
245 LOG (GNUNET_ERROR_TYPE_DEBUG, "Stopping sensor reporting module.\n"); 245 LOG (GNUNET_ERROR_TYPE_DEBUG, "Stopping sensor reporting module.\n");
@@ -249,11 +249,11 @@ SENSOR_reporting_stop ()
249 GNUNET_CONTAINER_DLL_remove (cc_head, cc_tail, cc); 249 GNUNET_CONTAINER_DLL_remove (cc_head, cc_tail, cc);
250 destroy_cadet_channel_context (cc); 250 destroy_cadet_channel_context (cc);
251 } 251 }
252 while (NULL != rc_head) 252 while (NULL != vrc_head)
253 { 253 {
254 rc = rc_head; 254 vrc = vrc_head;
255 GNUNET_CONTAINER_DLL_remove (rc_head, rc_tail, rc); 255 GNUNET_CONTAINER_DLL_remove (vrc_head, vrc_tail, vrc);
256 destroy_reporting_context (rc); 256 destroy_reporting_context (vrc);
257 } 257 }
258 if (NULL != peerstore) 258 if (NULL != peerstore)
259 { 259 {
@@ -308,7 +308,7 @@ get_cadet_channel (struct GNUNET_PeerIdentity pid)
308 * @return size of created message 308 * @return size of created message
309 */ 309 */
310static size_t 310static size_t
311construct_reading_message (struct ReportingContext *rc, 311construct_reading_message (struct ValueReportingContext *vrc,
312 struct GNUNET_SENSOR_ReadingMessage **msg) 312 struct GNUNET_SENSOR_ReadingMessage **msg)
313{ 313{
314 struct GNUNET_SENSOR_ReadingMessage *ret; 314 struct GNUNET_SENSOR_ReadingMessage *ret;
@@ -316,22 +316,22 @@ construct_reading_message (struct ReportingContext *rc,
316 uint16_t total_size; 316 uint16_t total_size;
317 void *dummy; 317 void *dummy;
318 318
319 sensorname_size = strlen (rc->sensor->name) + 1; 319 sensorname_size = strlen (vrc->sensor->name) + 1;
320 total_size = 320 total_size =
321 sizeof (struct GNUNET_SENSOR_ReadingMessage) + sensorname_size + 321 sizeof (struct GNUNET_SENSOR_ReadingMessage) + sensorname_size +
322 rc->last_value_size; 322 vrc->last_value_size;
323 ret = GNUNET_malloc (total_size); 323 ret = GNUNET_malloc (total_size);
324 ret->header.size = htons (total_size); 324 ret->header.size = htons (total_size);
325 ret->header.type = htons (GNUNET_MESSAGE_TYPE_SENSOR_READING); 325 ret->header.type = htons (GNUNET_MESSAGE_TYPE_SENSOR_READING);
326 ret->sensorname_size = htons (sensorname_size); 326 ret->sensorname_size = htons (sensorname_size);
327 ret->sensorversion_major = htons (rc->sensor->version_major); 327 ret->sensorversion_major = htons (vrc->sensor->version_major);
328 ret->sensorversion_minor = htons (rc->sensor->version_minor); 328 ret->sensorversion_minor = htons (vrc->sensor->version_minor);
329 ret->timestamp = GNUNET_htobe64 (rc->timestamp); 329 ret->timestamp = GNUNET_htobe64 (vrc->timestamp);
330 ret->value_size = htons (rc->last_value_size); 330 ret->value_size = htons (vrc->last_value_size);
331 dummy = &ret[1]; 331 dummy = &ret[1];
332 memcpy (dummy, rc->sensor->name, sensorname_size); 332 memcpy (dummy, vrc->sensor->name, sensorname_size);
333 dummy += sensorname_size; 333 dummy += sensorname_size;
334 memcpy (dummy, rc->last_value, rc->last_value_size); 334 memcpy (dummy, vrc->last_value, vrc->last_value_size);
335 *msg = ret; 335 *msg = ret;
336 return total_size; 336 return total_size;
337} 337}
@@ -382,59 +382,59 @@ do_report_collection_point (void *cls, size_t size, void *buf)
382/** 382/**
383 * Task scheduled to send values to collection point 383 * Task scheduled to send values to collection point
384 * 384 *
385 * @param cls closure, a `struct CollectionReportingContext *` 385 * @param cls closure, a `struct ValueReportingContext *`
386 * @param tc unused 386 * @param tc unused
387 */ 387 */
388static void 388static void
389report_collection_point (void *cls, 389report_collection_point (void *cls,
390 const struct GNUNET_SCHEDULER_TaskContext *tc) 390 const struct GNUNET_SCHEDULER_TaskContext *tc)
391{ 391{
392 struct ReportingContext *rc = cls; 392 struct ValueReportingContext *vrc = cls;
393 struct GNUNET_SENSOR_SensorInfo *sensor = rc->sensor; 393 struct GNUNET_SENSOR_SensorInfo *sensor = vrc->sensor;
394 struct CadetChannelContext *cc; 394 struct CadetChannelContext *cc;
395 struct GNUNET_SENSOR_ReadingMessage *msg; 395 struct GNUNET_SENSOR_ReadingMessage *msg;
396 size_t msg_size; 396 size_t msg_size;
397 397
398 rc->cp_task = GNUNET_SCHEDULER_NO_TASK; 398 vrc->cp_task = GNUNET_SCHEDULER_NO_TASK;
399 if (0 == rc->last_value_size) /* Did not receive a sensor value yet */ 399 if (0 == vrc->last_value_size) /* Did not receive a sensor value yet */
400 { 400 {
401 LOG (GNUNET_ERROR_TYPE_WARNING, 401 LOG (GNUNET_ERROR_TYPE_WARNING,
402 "Did not receive a value from `%s' to report yet.\n", 402 "Did not receive a value from `%s' to report yet.\n",
403 rc->sensor->name); 403 vrc->sensor->name);
404 rc->cp_task = 404 vrc->cp_task =
405 GNUNET_SCHEDULER_add_delayed (sensor->collection_interval, 405 GNUNET_SCHEDULER_add_delayed (sensor->value_reporting_interval,
406 &report_collection_point, rc); 406 &report_collection_point, vrc);
407 return; 407 return;
408 } 408 }
409 LOG (GNUNET_ERROR_TYPE_DEBUG, 409 LOG (GNUNET_ERROR_TYPE_DEBUG,
410 "Now trying to report last seen value of `%s' " "to collection point.\n", 410 "Now trying to report last seen value of `%s' " "to collection point.\n",
411 rc->sensor->name); 411 vrc->sensor->name);
412 GNUNET_assert (NULL != sensor->collection_point); 412 GNUNET_assert (NULL != sensor->collection_point);
413 cc = get_cadet_channel (*sensor->collection_point); 413 cc = get_cadet_channel (*sensor->collection_point);
414 if (GNUNET_YES == cc->sending) 414 if (GNUNET_YES == cc->sending)
415 { 415 {
416 LOG (GNUNET_ERROR_TYPE_DEBUG, 416 LOG (GNUNET_ERROR_TYPE_DEBUG,
417 "Cadet channel to collection point busy, " 417 "Cadet channel to collection point busy, "
418 "trying again for sensor `%s' after %d seconds.\n", rc->sensor->name, 418 "trying again for sensor `%s' after %d seconds.\n", vrc->sensor->name,
419 COLLECTION_RETRY); 419 COLLECTION_RETRY);
420 rc->cp_task = 420 vrc->cp_task =
421 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply 421 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
422 (GNUNET_TIME_UNIT_SECONDS, 422 (GNUNET_TIME_UNIT_SECONDS,
423 COLLECTION_RETRY), 423 COLLECTION_RETRY),
424 &report_collection_point, rc); 424 &report_collection_point, vrc);
425 return; 425 return;
426 } 426 }
427 msg_size = construct_reading_message (rc, &msg); 427 msg_size = construct_reading_message (vrc, &msg);
428 cc->sending = GNUNET_YES; 428 cc->sending = GNUNET_YES;
429 cc->pending_msg = msg; 429 cc->pending_msg = msg;
430 cc->pending_msg_size = msg_size; 430 cc->pending_msg_size = msg_size;
431 cc->th = 431 cc->th =
432 GNUNET_CADET_notify_transmit_ready (cc->c, GNUNET_YES, 432 GNUNET_CADET_notify_transmit_ready (cc->c, GNUNET_YES,
433 sensor->collection_interval, msg_size, 433 sensor->value_reporting_interval, msg_size,
434 &do_report_collection_point, cc); 434 &do_report_collection_point, cc);
435 rc->cp_task = 435 vrc->cp_task =
436 GNUNET_SCHEDULER_add_delayed (sensor->collection_interval, 436 GNUNET_SCHEDULER_add_delayed (sensor->value_reporting_interval,
437 &report_collection_point, rc); 437 &report_collection_point, vrc);
438} 438}
439 439
440 440
@@ -444,23 +444,23 @@ report_collection_point (void *cls,
444static int 444static int
445sensor_watch_cb (void *cls, struct GNUNET_PEERSTORE_Record *record, char *emsg) 445sensor_watch_cb (void *cls, struct GNUNET_PEERSTORE_Record *record, char *emsg)
446{ 446{
447 struct ReportingContext *rc = cls; 447 struct ValueReportingContext *vrc = cls;
448 448
449 if (NULL != emsg) 449 if (NULL != emsg)
450 return GNUNET_YES; 450 return GNUNET_YES;
451 if (NULL != rc->last_value) 451 if (NULL != vrc->last_value)
452 { 452 {
453 GNUNET_free (rc->last_value); 453 GNUNET_free (vrc->last_value);
454 rc->last_value_size = 0; 454 vrc->last_value_size = 0;
455 } 455 }
456 rc->last_value = GNUNET_malloc (record->value_size); 456 vrc->last_value = GNUNET_malloc (record->value_size);
457 memcpy (rc->last_value, record->value, record->value_size); 457 memcpy (vrc->last_value, record->value, record->value_size);
458 rc->last_value_size = record->value_size; 458 vrc->last_value_size = record->value_size;
459 rc->timestamp = GNUNET_TIME_absolute_get ().abs_value_us; 459 vrc->timestamp = GNUNET_TIME_absolute_get ().abs_value_us;
460 LOG (GNUNET_ERROR_TYPE_DEBUG, 460 LOG (GNUNET_ERROR_TYPE_DEBUG,
461 "Received a sensor `%s' watch value at " "timestamp %" PRIu64 461 "Received a sensor `%s' watch value at " "timestamp %" PRIu64
462 ", updating notification last_value.\n", rc->sensor->name, 462 ", updating notification last_value.\n", vrc->sensor->name,
463 rc->timestamp); 463 vrc->timestamp);
464 return GNUNET_YES; 464 return GNUNET_YES;
465} 465}
466 466
@@ -479,38 +479,31 @@ init_sensor_reporting (void *cls, const struct GNUNET_HashCode *key,
479 void *value) 479 void *value)
480{ 480{
481 struct GNUNET_SENSOR_SensorInfo *sensor = value; 481 struct GNUNET_SENSOR_SensorInfo *sensor = value;
482 struct ReportingContext *rc; 482 struct ValueReportingContext *vrc;
483 483
484 if (NULL == sensor->collection_point && GNUNET_NO == sensor->p2p_report) 484 if (NULL == sensor->collection_point ||
485 (GNUNET_NO == sensor->report_values && GNUNET_NO == sensor->report_anomalies))
485 return GNUNET_YES; 486 return GNUNET_YES;
486 rc = GNUNET_new (struct ReportingContext); 487 vrc = GNUNET_new (struct ValueReportingContext);
487 rc->sensor = sensor; 488 vrc->sensor = sensor;
488 rc->last_value = NULL; 489 vrc->last_value = NULL;
489 rc->last_value_size = 0; 490 vrc->last_value_size = 0;
490 rc->wc = 491 vrc->wc =
491 GNUNET_PEERSTORE_watch (peerstore, "sensor", &mypeerid, sensor->name, 492 GNUNET_PEERSTORE_watch (peerstore, "sensor", &mypeerid, sensor->name,
492 &sensor_watch_cb, rc); 493 &sensor_watch_cb, vrc);
493 if (NULL != sensor->collection_point) 494 if (NULL != sensor->collection_point)
494 { 495 {
495 LOG (GNUNET_ERROR_TYPE_INFO, 496 LOG (GNUNET_ERROR_TYPE_INFO,
496 "Will start reporting sensor `%s' values to " 497 "Will start reporting sensor `%s' values to "
497 "collection point `%s' every %s.\n", sensor->name, 498 "collection point `%s' every %s.\n", sensor->name,
498 GNUNET_i2s_full (sensor->collection_point), 499 GNUNET_i2s_full (sensor->collection_point),
499 GNUNET_STRINGS_relative_time_to_string (sensor->collection_interval, 500 GNUNET_STRINGS_relative_time_to_string (sensor->value_reporting_interval,
500 GNUNET_YES)); 501 GNUNET_YES));
501 rc->cp_task = 502 vrc->cp_task =
502 GNUNET_SCHEDULER_add_delayed (sensor->collection_interval, 503 GNUNET_SCHEDULER_add_delayed (sensor->value_reporting_interval,
503 &report_collection_point, rc); 504 &report_collection_point, vrc);
504 } 505 }
505 if (GNUNET_YES == sensor->p2p_report) 506 GNUNET_CONTAINER_DLL_insert (vrc_head, vrc_tail, vrc);
506 {
507 LOG (GNUNET_ERROR_TYPE_INFO,
508 "Will start reporting sensor `%s' values to p2p network every %s.\n",
509 sensor->name,
510 GNUNET_STRINGS_relative_time_to_string (sensor->p2p_interval,
511 GNUNET_YES));
512 }
513 GNUNET_CONTAINER_DLL_insert (rc_head, rc_tail, rc);
514 return GNUNET_YES; 507 return GNUNET_YES;
515} 508}
516 509
diff --git a/src/sensor/gnunet-service-sensor.c b/src/sensor/gnunet-service-sensor.c
index 24cb8d2aa..d9f3670d4 100644
--- a/src/sensor/gnunet-service-sensor.c
+++ b/src/sensor/gnunet-service-sensor.c
@@ -554,7 +554,7 @@ sensor_run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
554 else 554 else
555 { 555 {
556 sensorinfo->running = GNUNET_NO; 556 sensorinfo->running = GNUNET_NO;
557 GNUNET_break (0); //shouldn't happen 557 GNUNET_break (0); /* shouldn't happen */
558 } 558 }
559} 559}
560 560
@@ -596,7 +596,6 @@ schedule_sensor (void *cls, const struct GNUNET_HashCode *key, void *value)
596 596
597/** 597/**
598 * Starts the execution of all enabled sensors 598 * Starts the execution of all enabled sensors
599 *
600 */ 599 */
601static void 600static void
602schedule_all_sensors () 601schedule_all_sensors ()
diff --git a/src/sensor/sensor.conf.in b/src/sensor/sensor.conf.in
index a8531a58d..fcb914afe 100644
--- a/src/sensor/sensor.conf.in
+++ b/src/sensor/sensor.conf.in
@@ -9,7 +9,10 @@ UNIX_MATCH_GID = YES
9#UPDATE_POINTS = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 9#UPDATE_POINTS = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0
10 10
11[sensor-analysis] 11[sensor-analysis]
12model = gaussian 12MODEL = gaussian
13# How many subsequent values required to flip anomaly label. (Default: 1)
14# E.g. After 3 subsequent anomaly reports, status change to anomalous.
15CONFIRMATION_COUNT = 3
13 16
14[sensor-model-gaussian] 17[sensor-model-gaussian]
15TRAINING_WINDOW = 1000 18TRAINING_WINDOW = 1000
diff --git a/src/sensor/sensor.h b/src/sensor/sensor.h
index 633f18e03..0fdb5a6e2 100644
--- a/src/sensor/sensor.h
+++ b/src/sensor/sensor.h
@@ -61,7 +61,6 @@ GNUNET_NETWORK_STRUCT_BEGIN
61}; 61};
62 62
63GNUNET_NETWORK_STRUCT_END 63GNUNET_NETWORK_STRUCT_END
64
65/** 64/**
66 * Stop the sensor analysis module 65 * Stop the sensor analysis module
67 */ 66 */
@@ -117,5 +116,4 @@ SENSOR_update_stop ();
117 */ 116 */
118int 117int
119SENSOR_update_start (const struct GNUNET_CONFIGURATION_Handle *c, 118SENSOR_update_start (const struct GNUNET_CONFIGURATION_Handle *c,
120 struct GNUNET_CONTAINER_MultiHashMap *s, 119 struct GNUNET_CONTAINER_MultiHashMap *s, void (*cb) ());
121 void (*cb) ());
diff --git a/src/sensor/sensor_util_lib.c b/src/sensor/sensor_util_lib.c
index 756c193ef..d12698c3a 100644
--- a/src/sensor/sensor_util_lib.c
+++ b/src/sensor/sensor_util_lib.c
@@ -150,8 +150,6 @@ load_sensor_from_cfg (struct GNUNET_CONFIGURATION_Handle *cfg,
150 &starttime_str)) 150 &starttime_str))
151 { 151 {
152 GNUNET_STRINGS_fancy_time_to_absolute (starttime_str, sensor->start_time); 152 GNUNET_STRINGS_fancy_time_to_absolute (starttime_str, sensor->start_time);
153 LOG (GNUNET_ERROR_TYPE_DEBUG, "Start time loaded: `%s'. Parsed: %d\n",
154 starttime_str, (NULL != sensor->start_time));
155 GNUNET_free (starttime_str); 153 GNUNET_free (starttime_str);
156 } 154 }
157 //end time 155 //end time
@@ -161,8 +159,6 @@ load_sensor_from_cfg (struct GNUNET_CONFIGURATION_Handle *cfg,
161 &endtime_str)) 159 &endtime_str))
162 { 160 {
163 GNUNET_STRINGS_fancy_time_to_absolute (endtime_str, sensor->end_time); 161 GNUNET_STRINGS_fancy_time_to_absolute (endtime_str, sensor->end_time);
164 LOG (GNUNET_ERROR_TYPE_DEBUG, "End time loaded: `%s'. Parsed: %d\n",
165 endtime_str, (NULL != sensor->end_time));
166 GNUNET_free (endtime_str); 162 GNUNET_free (endtime_str);
167 } 163 }
168 //interval 164 //interval
@@ -259,53 +255,37 @@ load_sensor_from_cfg (struct GNUNET_CONFIGURATION_Handle *cfg,
259 GNUNET_free (sensor); 255 GNUNET_free (sensor);
260 return NULL; 256 return NULL;
261 } 257 }
262 //reporting mechanism 258 //reporting
263 sensor->collection_point = NULL; 259 sensor->collection_point = NULL;
260 sensor->report_values = GNUNET_NO;
261 sensor->report_anomalies = GNUNET_NO;
264 if (GNUNET_OK == 262 if (GNUNET_OK ==
265 GNUNET_CONFIGURATION_get_value_string (cfg, sectionname, 263 GNUNET_CONFIGURATION_get_value_string (cfg, sectionname,
266 "COLLECTION_POINT", &dummy)) 264 "COLLECTION_POINT", &dummy))
267 { 265 {
268 if (GNUNET_OK != 266 if (GNUNET_OK ==
269 GNUNET_CONFIGURATION_get_value_number (cfg, sectionname, 267 GNUNET_CRYPTO_eddsa_public_key_from_string (dummy, strlen (dummy),
270 "COLLECTION_INTERVAL", 268 &public_key))
271 &time_sec))
272 {
273 LOG (GNUNET_ERROR_TYPE_ERROR,
274 _("Error reading sensor collection interval\n"));
275 }
276 else
277 { 269 {
278 sensor->collection_interval = 270 sensor->collection_point = GNUNET_new (struct GNUNET_PeerIdentity);
279 GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, time_sec); 271
272 sensor->collection_point->public_key = public_key;
280 if (GNUNET_OK == 273 if (GNUNET_OK ==
281 GNUNET_CRYPTO_eddsa_public_key_from_string (dummy, strlen (dummy), 274 GNUNET_CONFIGURATION_get_value_number (cfg, sectionname,
282 &public_key)) 275 "VALUE_COLLECTION_INTERVAL",
276 &time_sec))
283 { 277 {
284 sensor->collection_point = GNUNET_new (struct GNUNET_PeerIdentity); 278 sensor->report_values = GNUNET_YES;
285 279 sensor->value_reporting_interval =
286 sensor->collection_point->public_key = public_key; 280 GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, time_sec);
287 } 281 }
282 if (GNUNET_YES ==
283 GNUNET_CONFIGURATION_get_value_yesno (cfg, sectionname,
284 "REPORT_ANOMALIES"))
285 sensor->report_anomalies = GNUNET_YES;
288 } 286 }
289 GNUNET_free (dummy); 287 GNUNET_free (dummy);
290 } 288 }
291 sensor->p2p_report = GNUNET_NO;
292 if (GNUNET_YES ==
293 GNUNET_CONFIGURATION_get_value_yesno (cfg, sectionname, "P2P_REPORT"))
294 {
295 if (GNUNET_OK !=
296 GNUNET_CONFIGURATION_get_value_number (cfg, sectionname, "P2P_INTERVAL",
297 &time_sec))
298 {
299 LOG (GNUNET_ERROR_TYPE_ERROR,
300 _("Error reading sensor p2p reporting interval\n"));
301 }
302 else
303 {
304 sensor->p2p_interval =
305 GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, time_sec);
306 sensor->p2p_report = GNUNET_YES;
307 }
308 }
309 //execution task 289 //execution task
310 sensor->execution_task = GNUNET_SCHEDULER_NO_TASK; 290 sensor->execution_task = GNUNET_SCHEDULER_NO_TASK;
311 //running 291 //running
@@ -490,8 +470,7 @@ GNUNET_SENSOR_load_all_sensors ()
490 "Loading sensor definitions from directory `%s'\n", sensordir); 470 "Loading sensor definitions from directory `%s'\n", sensordir);
491 GNUNET_assert (GNUNET_YES == 471 GNUNET_assert (GNUNET_YES ==
492 GNUNET_DISK_directory_test (sensordir, GNUNET_YES)); 472 GNUNET_DISK_directory_test (sensordir, GNUNET_YES));
493 473 /* read all files in sensors directory */
494 //read all files in sensors directory
495 GNUNET_DISK_directory_scan (sensordir, &reload_sensors_dir_cb, sensors); 474 GNUNET_DISK_directory_scan (sensordir, &reload_sensors_dir_cb, sensors);
496 LOG (GNUNET_ERROR_TYPE_INFO, "Loaded %d sensors from directory `%s'\n", 475 LOG (GNUNET_ERROR_TYPE_INFO, "Loaded %d sensors from directory `%s'\n",
497 GNUNET_CONTAINER_multihashmap_size (sensors), sensordir); 476 GNUNET_CONTAINER_multihashmap_size (sensors), sensordir);
diff --git a/src/sensor/sensors/average-ping-rtt b/src/sensor/sensors/average-ping-rtt
index f929b8cf4..7a4b5ca67 100644
--- a/src/sensor/sensors/average-ping-rtt
+++ b/src/sensor/sensors/average-ping-rtt
@@ -24,9 +24,8 @@ EXT_PROCESS = avgping.sh
24 24
25EXPECTED_DATATYPE = numeric 25EXPECTED_DATATYPE = numeric
26 26
27# Reporting mechanism 27# Reporting:
28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0
29#COLLECTION_INTERVAL = 7200 29# Comment or remove next line to disable reporting sensor values to collection point
30 30#VALUE_COLLECTION_INTERVAL = 7200
31P2P_REPORT = NO 31REPORT_ANOMALIES = YES
32#P2P_INTERVAL = 300
diff --git a/src/sensor/sensors/core-peers-connected b/src/sensor/sensors/core-peers-connected
index 2ea388b65..51bf7f7d3 100644
--- a/src/sensor/sensors/core-peers-connected
+++ b/src/sensor/sensors/core-peers-connected
@@ -24,9 +24,8 @@ GNUNET_STAT_NAME = # peers connected
24 24
25EXPECTED_DATATYPE = numeric 25EXPECTED_DATATYPE = numeric
26 26
27# Reporting mechanism 27# Reporting:
28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0
29#COLLECTION_INTERVAL = 120 29# Comment or remove next line to disable reporting sensor values to collection point
30 30#VALUE_COLLECTION_INTERVAL = 120
31P2P_REPORT = NO 31REPORT_ANOMALIES = YES
32#P2P_INTERVAL =
diff --git a/src/sensor/sensors/datacache-bytes-stored b/src/sensor/sensors/datacache-bytes-stored
index 3ba7e293d..9601f5280 100644
--- a/src/sensor/sensors/datacache-bytes-stored
+++ b/src/sensor/sensors/datacache-bytes-stored
@@ -24,9 +24,8 @@ GNUNET_STAT_NAME = # bytes stored
24 24
25EXPECTED_DATATYPE = numeric 25EXPECTED_DATATYPE = numeric
26 26
27# Reporting mechanism 27# Reporting:
28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0
29#COLLECTION_INTERVAL = 120 29# Comment or remove next line to disable reporting sensor values to collection point
30 30#VALUE_COLLECTION_INTERVAL = 120
31P2P_REPORT = NO 31REPORT_ANOMALIES = YES
32#P2P_INTERVAL =
diff --git a/src/sensor/sensors/dht-peers-connected b/src/sensor/sensors/dht-peers-connected
index 21ba05e7c..6e4d448ae 100644
--- a/src/sensor/sensors/dht-peers-connected
+++ b/src/sensor/sensors/dht-peers-connected
@@ -24,9 +24,8 @@ GNUNET_STAT_NAME = # peers connected
24 24
25EXPECTED_DATATYPE = numeric 25EXPECTED_DATATYPE = numeric
26 26
27# Reporting mechanism 27# Reporting:
28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0
29#COLLECTION_INTERVAL = 120 29# Comment or remove next line to disable reporting sensor values to collection point
30 30#VALUE_COLLECTION_INTERVAL = 120
31P2P_REPORT = NO 31REPORT_ANOMALIES = YES
32#P2P_INTERVAL =
diff --git a/src/sensor/sensors/fs-peers-connected b/src/sensor/sensors/fs-peers-connected
index 24f4abb9e..1a3cb127b 100644
--- a/src/sensor/sensors/fs-peers-connected
+++ b/src/sensor/sensors/fs-peers-connected
@@ -24,9 +24,8 @@ GNUNET_STAT_NAME = # peers connected
24 24
25EXPECTED_DATATYPE = numeric 25EXPECTED_DATATYPE = numeric
26 26
27# Reporting mechanism 27# Reporting:
28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0
29#COLLECTION_INTERVAL = 120 29# Comment or remove next line to disable reporting sensor values to collection point
30 30#VALUE_COLLECTION_INTERVAL = 120
31P2P_REPORT = NO 31REPORT_ANOMALIES = YES
32#P2P_INTERVAL =
diff --git a/src/sensor/sensors/gnunet-version b/src/sensor/sensors/gnunet-version
index ecb71ac59..271b738d4 100644
--- a/src/sensor/sensors/gnunet-version
+++ b/src/sensor/sensors/gnunet-version
@@ -24,9 +24,8 @@ EXT_ARGS = -v
24 24
25EXPECTED_DATATYPE = string 25EXPECTED_DATATYPE = string
26 26
27# Reporting mechanism 27# Reporting:
28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0
29#COLLECTION_INTERVAL = 86400 29# Comment or remove next line to disable reporting sensor values to collection point
30 30#VALUE_COLLECTION_INTERVAL = 120
31P2P_REPORT = NO 31REPORT_ANOMALIES = YES
32#P2P_INTERVAL =
diff --git a/src/sensor/sensors/known-peers b/src/sensor/sensors/known-peers
index 2ee85b1d6..fda106330 100644
--- a/src/sensor/sensors/known-peers
+++ b/src/sensor/sensors/known-peers
@@ -24,9 +24,8 @@ GNUNET_STAT_NAME = # peers known
24 24
25EXPECTED_DATATYPE = numeric 25EXPECTED_DATATYPE = numeric
26 26
27# Reporting mechanism 27# Reporting:
28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0
29#COLLECTION_INTERVAL = 120 29# Comment or remove next line to disable reporting sensor values to collection point
30 30#VALUE_COLLECTION_INTERVAL = 120
31P2P_REPORT = NO 31REPORT_ANOMALIES = YES
32#P2P_INTERVAL =
diff --git a/src/sensor/sensors/nse b/src/sensor/sensors/nse
index 2ba89b9a0..8cede34cb 100644
--- a/src/sensor/sensors/nse
+++ b/src/sensor/sensors/nse
@@ -24,9 +24,8 @@ GNUNET_STAT_NAME = # nodes in the network (estimate)
24 24
25EXPECTED_DATATYPE = numeric 25EXPECTED_DATATYPE = numeric
26 26
27# Reporting mechanism 27# Reporting:
28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0
29#COLLECTION_INTERVAL = 120 29# Comment or remove next line to disable reporting sensor values to collection point
30 30#VALUE_COLLECTION_INTERVAL = 120
31P2P_REPORT = NO 31REPORT_ANOMALIES = YES
32#P2P_INTERVAL =
diff --git a/src/sensor/sensors/peerstore-memory b/src/sensor/sensors/peerstore-memory
index 380fe0cec..0a60866ad 100644
--- a/src/sensor/sensors/peerstore-memory
+++ b/src/sensor/sensors/peerstore-memory
@@ -24,9 +24,8 @@ EXT_PROCESS = peerstore-memory.sh
24 24
25EXPECTED_DATATYPE = numeric 25EXPECTED_DATATYPE = numeric
26 26
27# Reporting mechanism 27# Reporting:
28COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0
29COLLECTION_INTERVAL = 61 29# Comment or remove next line to disable reporting sensor values to collection point
30 30#VALUE_COLLECTION_INTERVAL = 120
31P2P_REPORT = NO 31REPORT_ANOMALIES = YES
32#P2P_INTERVAL =
diff --git a/src/sensor/sensors/transport-bytes-received b/src/sensor/sensors/transport-bytes-received
index b9005b6f3..d247f6572 100644
--- a/src/sensor/sensors/transport-bytes-received
+++ b/src/sensor/sensors/transport-bytes-received
@@ -24,9 +24,8 @@ GNUNET_STAT_NAME = # bytes total received
24 24
25EXPECTED_DATATYPE = numeric 25EXPECTED_DATATYPE = numeric
26 26
27# Reporting mechanism 27# Reporting:
28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0
29#COLLECTION_INTERVAL = 120 29# Comment or remove next line to disable reporting sensor values to collection point
30 30#VALUE_COLLECTION_INTERVAL = 120
31P2P_REPORT = NO 31REPORT_ANOMALIES = YES
32#P2P_INTERVAL =
diff --git a/src/sensor/sensors/transport-http-connections b/src/sensor/sensors/transport-http-connections
index 56971d44c..6d8d7d95a 100644
--- a/src/sensor/sensors/transport-http-connections
+++ b/src/sensor/sensors/transport-http-connections
@@ -24,9 +24,8 @@ GNUNET_STAT_NAME = # HTTP client connections
24 24
25EXPECTED_DATATYPE = numeric 25EXPECTED_DATATYPE = numeric
26 26
27# Reporting mechanism 27# Reporting:
28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0
29#COLLECTION_INTERVAL = 120 29# Comment or remove next line to disable reporting sensor values to collection point
30 30#VALUE_COLLECTION_INTERVAL = 120
31P2P_REPORT = NO 31REPORT_ANOMALIES = YES
32#P2P_INTERVAL =
diff --git a/src/sensor/sensors/transport-https-connections b/src/sensor/sensors/transport-https-connections
index 028b52bba..44af29b4b 100644
--- a/src/sensor/sensors/transport-https-connections
+++ b/src/sensor/sensors/transport-https-connections
@@ -24,9 +24,8 @@ GNUNET_STAT_NAME = # HTTPS client connections
24 24
25EXPECTED_DATATYPE = numeric 25EXPECTED_DATATYPE = numeric
26 26
27# Reporting mechanism 27# Reporting:
28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0
29#COLLECTION_INTERVAL = 120 29# Comment or remove next line to disable reporting sensor values to collection point
30 30#VALUE_COLLECTION_INTERVAL = 120
31P2P_REPORT = NO 31REPORT_ANOMALIES = YES
32#P2P_INTERVAL =
diff --git a/src/sensor/sensors/transport-peers-connected b/src/sensor/sensors/transport-peers-connected
index d7917b631..fd18919ba 100644
--- a/src/sensor/sensors/transport-peers-connected
+++ b/src/sensor/sensors/transport-peers-connected
@@ -24,9 +24,8 @@ GNUNET_STAT_NAME = # peers connected
24 24
25EXPECTED_DATATYPE = numeric 25EXPECTED_DATATYPE = numeric
26 26
27# Reporting mechanism 27# Reporting:
28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0
29#COLLECTION_INTERVAL = 120 29# Comment or remove next line to disable reporting sensor values to collection point
30 30#VALUE_COLLECTION_INTERVAL = 120
31P2P_REPORT = NO 31REPORT_ANOMALIES = YES
32#P2P_INTERVAL =
diff --git a/src/sensor/sensors/transport-tcp-bytes-transmitted b/src/sensor/sensors/transport-tcp-bytes-transmitted
index 22194373d..5452d7ac0 100644
--- a/src/sensor/sensors/transport-tcp-bytes-transmitted
+++ b/src/sensor/sensors/transport-tcp-bytes-transmitted
@@ -24,9 +24,8 @@ GNUNET_STAT_NAME = # bytes transmitted via TCP
24 24
25EXPECTED_DATATYPE = numeric 25EXPECTED_DATATYPE = numeric
26 26
27# Reporting mechanism 27# Reporting:
28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0
29#COLLECTION_INTERVAL = 120 29# Comment or remove next line to disable reporting sensor values to collection point
30 30#VALUE_COLLECTION_INTERVAL = 120
31P2P_REPORT = NO 31REPORT_ANOMALIES = YES
32#P2P_INTERVAL =
diff --git a/src/sensor/sensors/transport-tcp-sessions-active b/src/sensor/sensors/transport-tcp-sessions-active
index fe8527f91..5dd9c6d35 100644
--- a/src/sensor/sensors/transport-tcp-sessions-active
+++ b/src/sensor/sensors/transport-tcp-sessions-active
@@ -24,9 +24,8 @@ GNUNET_STAT_NAME = # TCP sessions active
24 24
25EXPECTED_DATATYPE = numeric 25EXPECTED_DATATYPE = numeric
26 26
27# Reporting mechanism 27# Reporting:
28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 28#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0
29#COLLECTION_INTERVAL = 120 29# Comment or remove next line to disable reporting sensor values to collection point
30 30#VALUE_COLLECTION_INTERVAL = 120
31P2P_REPORT = NO 31REPORT_ANOMALIES = YES
32#P2P_INTERVAL =