aboutsummaryrefslogtreecommitdiff
path: root/src/sensor
diff options
context:
space:
mode:
authorOmar Tarabai <tarabai@devegypt.com>2014-08-11 15:29:49 +0000
committerOmar Tarabai <tarabai@devegypt.com>2014-08-11 15:29:49 +0000
commit321e66a9d999edaed3fff1a707d212f750fb40a1 (patch)
tree90f2e9853a45b56c28525c4d7a1219f540bc032b /src/sensor
parent1183a75a1a5d862f575d58c8873a9036a0fd3dbb (diff)
downloadgnunet-321e66a9d999edaed3fff1a707d212f750fb40a1.tar.gz
gnunet-321e66a9d999edaed3fff1a707d212f750fb40a1.zip
sensor: starting modules controllable from config
Diffstat (limited to 'src/sensor')
-rw-r--r--src/sensor/gnunet-service-sensor.c68
-rw-r--r--src/sensor/gnunet-service-sensor_monitoring.c62
-rw-r--r--src/sensor/gnunet-service-sensor_reporting.c29
-rw-r--r--src/sensor/sensor.conf.in6
-rw-r--r--src/sensor/sensor.h4
5 files changed, 112 insertions, 57 deletions
diff --git a/src/sensor/gnunet-service-sensor.c b/src/sensor/gnunet-service-sensor.c
index 047ad9183..b404d4806 100644
--- a/src/sensor/gnunet-service-sensor.c
+++ b/src/sensor/gnunet-service-sensor.c
@@ -42,6 +42,26 @@ static char *sensor_dir;
42 */ 42 */
43static struct GNUNET_CONTAINER_MultiHashMap *sensors; 43static struct GNUNET_CONTAINER_MultiHashMap *sensors;
44 44
45/**
46 * Start the monitoring module ?
47 */
48static int start_monitoring;
49
50/**
51 * Start the analysis module ?
52 */
53static int start_analysis;
54
55/**
56 * Start the reporting module ?
57 */
58static int start_reporting;
59
60/**
61 * Start the update module ?
62 */
63static int start_update;
64
45 65
46/** 66/**
47 * Resets the service by stopping components, reloading sensors and starting 67 * Resets the service by stopping components, reloading sensors and starting
@@ -57,10 +77,14 @@ reset ();
57static void 77static void
58stop () 78stop ()
59{ 79{
60 SENSOR_update_stop (); 80 if (GNUNET_YES == start_update)
61 SENSOR_analysis_stop (); 81 SENSOR_update_stop ();
62 SENSOR_reporting_stop (); 82 if (GNUNET_YES == start_analysis)
63 SENSOR_monitoring_stop (); 83 SENSOR_analysis_stop ();
84 if (GNUNET_YES == start_reporting)
85 SENSOR_reporting_stop ();
86 if (GNUNET_YES == start_monitoring)
87 SENSOR_monitoring_stop ();
64 GNUNET_SENSOR_destroy_sensors (sensors); 88 GNUNET_SENSOR_destroy_sensors (sensors);
65} 89}
66 90
@@ -230,10 +254,14 @@ static void
230start () 254start ()
231{ 255{
232 sensors = GNUNET_SENSOR_load_all_sensors (sensor_dir); 256 sensors = GNUNET_SENSOR_load_all_sensors (sensor_dir);
233 SENSOR_monitoring_start (cfg, sensors); 257 if (GNUNET_YES == start_monitoring)
234 SENSOR_reporting_start (cfg, sensors); 258 SENSOR_monitoring_start (cfg, sensors);
235 SENSOR_analysis_start (cfg, sensors); 259 if (GNUNET_YES == start_reporting)
236 SENSOR_update_start (cfg, sensors, &reset); 260 SENSOR_reporting_start (cfg, sensors);
261 if (GNUNET_YES == start_analysis)
262 SENSOR_analysis_start (cfg, sensors);
263 if (GNUNET_YES == start_update)
264 SENSOR_update_start (cfg, sensors, &reset);
237} 265}
238 266
239 267
@@ -263,6 +291,30 @@ run (void *cls, struct GNUNET_SERVER_Handle *server,
263 { 291 {
264 sensor_dir = GNUNET_SENSOR_get_default_sensor_dir (); 292 sensor_dir = GNUNET_SENSOR_get_default_sensor_dir ();
265 } 293 }
294 start_monitoring = GNUNET_YES;
295 start_analysis = GNUNET_YES;
296 start_reporting = GNUNET_YES;
297 start_update = GNUNET_YES;
298 if (GNUNET_NO ==
299 GNUNET_CONFIGURATION_get_value_yesno (cfg, "SENSOR", "START_MONITORING"))
300 {
301 start_monitoring = GNUNET_NO;
302 }
303 if (GNUNET_NO ==
304 GNUNET_CONFIGURATION_get_value_yesno (cfg, "SENSOR", "START_REPORTING"))
305 {
306 start_reporting = GNUNET_NO;
307 }
308 if (GNUNET_NO ==
309 GNUNET_CONFIGURATION_get_value_yesno (cfg, "SENSOR", "START_ANALYSIS"))
310 {
311 start_analysis = GNUNET_NO;
312 }
313 if (GNUNET_NO ==
314 GNUNET_CONFIGURATION_get_value_yesno (cfg, "SENSOR", "START_UPDATE"))
315 {
316 start_update = GNUNET_NO;
317 }
266 GNUNET_SERVER_add_handlers (server, handlers); 318 GNUNET_SERVER_add_handlers (server, handlers);
267 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, &shutdown_task, 319 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, &shutdown_task,
268 NULL); 320 NULL);
diff --git a/src/sensor/gnunet-service-sensor_monitoring.c b/src/sensor/gnunet-service-sensor_monitoring.c
index 33173e1ae..c3d5b8007 100644
--- a/src/sensor/gnunet-service-sensor_monitoring.c
+++ b/src/sensor/gnunet-service-sensor_monitoring.c
@@ -98,7 +98,7 @@ static void
98set_sensor_enabled (struct GNUNET_SENSOR_SensorInfo *sensor, int state) 98set_sensor_enabled (struct GNUNET_SENSOR_SensorInfo *sensor, int state)
99{ 99{
100 LOG (GNUNET_ERROR_TYPE_DEBUG, "Sensor `%s': Setting enabled to %d.\n", 100 LOG (GNUNET_ERROR_TYPE_DEBUG, "Sensor `%s': Setting enabled to %d.\n",
101 sensor->name, state); 101 sensor->name, state);
102 sensor->enabled = GNUNET_NO; 102 sensor->enabled = GNUNET_NO;
103 GNUNET_assert (NULL != sensor->cfg); 103 GNUNET_assert (NULL != sensor->cfg);
104 GNUNET_CONFIGURATION_set_value_string (sensor->cfg, sensor->name, "ENABLED", 104 GNUNET_CONFIGURATION_set_value_string (sensor->cfg, sensor->name, "ENABLED",
@@ -119,8 +119,8 @@ should_run_sensor (struct GNUNET_SENSOR_SensorInfo *sensorinfo)
119 119
120 if (GNUNET_NO == sensorinfo->enabled) 120 if (GNUNET_NO == sensorinfo->enabled)
121 { 121 {
122 LOG (GNUNET_ERROR_TYPE_INFO, 122 LOG (GNUNET_ERROR_TYPE_INFO, "Sensor `%s' is disabled, will not run\n",
123 "Sensor `%s' is disabled, will not run\n", sensorinfo->name); 123 sensorinfo->name);
124 return GNUNET_NO; 124 return GNUNET_NO;
125 } 125 }
126 now = GNUNET_TIME_absolute_get (); 126 now = GNUNET_TIME_absolute_get ();
@@ -128,15 +128,15 @@ should_run_sensor (struct GNUNET_SENSOR_SensorInfo *sensorinfo)
128 now.abs_value_us < sensorinfo->start_time->abs_value_us) 128 now.abs_value_us < sensorinfo->start_time->abs_value_us)
129 { 129 {
130 LOG (GNUNET_ERROR_TYPE_INFO, 130 LOG (GNUNET_ERROR_TYPE_INFO,
131 "Start time for sensor `%s' not reached yet, will not run\n", 131 "Start time for sensor `%s' not reached yet, will not run\n",
132 sensorinfo->name); 132 sensorinfo->name);
133 return GNUNET_NO; 133 return GNUNET_NO;
134 } 134 }
135 if (NULL != sensorinfo->end_time && 135 if (NULL != sensorinfo->end_time &&
136 now.abs_value_us >= sensorinfo->end_time->abs_value_us) 136 now.abs_value_us >= sensorinfo->end_time->abs_value_us)
137 { 137 {
138 LOG (GNUNET_ERROR_TYPE_INFO, "Sensor `%s' expired, disabling.\n", 138 LOG (GNUNET_ERROR_TYPE_INFO, "Sensor `%s' expired, disabling.\n",
139 sensorinfo->name); 139 sensorinfo->name);
140 set_sensor_enabled (sensorinfo, GNUNET_NO); 140 set_sensor_enabled (sensorinfo, GNUNET_NO);
141 return GNUNET_NO; 141 return GNUNET_NO;
142 } 142 }
@@ -163,8 +163,8 @@ sensor_statistics_iterator (void *cls, const char *ss, const char *name,
163 struct GNUNET_TIME_Absolute expiry; 163 struct GNUNET_TIME_Absolute expiry;
164 164
165 LOG (GNUNET_ERROR_TYPE_INFO, 165 LOG (GNUNET_ERROR_TYPE_INFO,
166 "Received a value for sensor `%s': %" PRIu64 "\n", 166 "Received a value for sensor `%s': %" PRIu64 "\n", sensorinfo->name,
167 sensorinfo->name, value); 167 value);
168 expiry = GNUNET_TIME_relative_to_absolute (sensorinfo->lifetime); 168 expiry = GNUNET_TIME_relative_to_absolute (sensorinfo->lifetime);
169 GNUNET_PEERSTORE_store (peerstore, "sensor", &peerid, sensorinfo->name, 169 GNUNET_PEERSTORE_store (peerstore, "sensor", &peerid, sensorinfo->name,
170 &dvalue, sizeof (dvalue), expiry, 170 &dvalue, sizeof (dvalue), expiry,
@@ -225,8 +225,7 @@ parse_sensor_value (const char *value, struct GNUNET_SENSOR_SensorInfo *sensor,
225 return strlen (value) + 1; 225 return strlen (value) + 1;
226 } 226 }
227 LOG (GNUNET_ERROR_TYPE_ERROR, 227 LOG (GNUNET_ERROR_TYPE_ERROR,
228 _ 228 _("Unknown value type expected by sensor, this should not happen.\n"));
229 ("Unknown value type expected by sensor, this should not happen.\n"));
230 return 0; 229 return 0;
231} 230}
232 231
@@ -256,13 +255,13 @@ sensor_process_callback (void *cls, const char *line)
256 if (GNUNET_YES == sensorinfo->ext_cmd_value_received) 255 if (GNUNET_YES == sensorinfo->ext_cmd_value_received)
257 return; /* We only want one *valid* value */ 256 return; /* We only want one *valid* value */
258 LOG (GNUNET_ERROR_TYPE_INFO, "Received a value for sensor `%s': %s\n", 257 LOG (GNUNET_ERROR_TYPE_INFO, "Received a value for sensor `%s': %s\n",
259 sensorinfo->name, line); 258 sensorinfo->name, line);
260 valsize = parse_sensor_value (line, sensorinfo, &value); 259 valsize = parse_sensor_value (line, sensorinfo, &value);
261 if (valsize == 0) /* invalid value, FIXME: should we disable the sensor now? */ 260 if (valsize == 0) /* invalid value, FIXME: should we disable the sensor now? */
262 { 261 {
263 LOG (GNUNET_ERROR_TYPE_ERROR, 262 LOG (GNUNET_ERROR_TYPE_ERROR,
264 _("Received an invalid value for sensor `%s': %s\n"), 263 _("Received an invalid value for sensor `%s': %s\n"), sensorinfo->name,
265 sensorinfo->name, line); 264 line);
266 } 265 }
267 else 266 else
268 { 267 {
@@ -316,15 +315,15 @@ sensor_run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
316 if (GNUNET_YES == sensorinfo->running) //FIXME: should we try to kill? 315 if (GNUNET_YES == sensorinfo->running) //FIXME: should we try to kill?
317 { 316 {
318 LOG (GNUNET_ERROR_TYPE_WARNING, 317 LOG (GNUNET_ERROR_TYPE_WARNING,
319 "Sensor `%s' running for too long, will try again next interval\n", 318 "Sensor `%s' running for too long, will try again next interval\n",
320 sensorinfo->name); 319 sensorinfo->name);
321 return; 320 return;
322 } 321 }
323 if (GNUNET_NO == should_run_sensor (sensorinfo)) 322 if (GNUNET_NO == should_run_sensor (sensorinfo))
324 return; 323 return;
325 sensorinfo->running = GNUNET_YES; 324 sensorinfo->running = GNUNET_YES;
326 LOG (GNUNET_ERROR_TYPE_DEBUG, 325 LOG (GNUNET_ERROR_TYPE_DEBUG, "Starting the execution of sensor `%s'\n",
327 "Starting the execution of sensor `%s'\n", sensorinfo->name); 326 sensorinfo->name);
328 if (0 == strcmp ("gnunet-statistics", sensorinfo->source)) 327 if (0 == strcmp ("gnunet-statistics", sensorinfo->source))
329 { 328 {
330 sensorinfo->gnunet_stat_get_handle = GNUNET_STATISTICS_get (statistics, sensorinfo->gnunet_stat_service, sensorinfo->gnunet_stat_name, sensorinfo->interval, //try to get values only for the interval of the sensor 329 sensorinfo->gnunet_stat_get_handle = GNUNET_STATISTICS_get (statistics, sensorinfo->gnunet_stat_service, sensorinfo->gnunet_stat_name, sensorinfo->interval, //try to get values only for the interval of the sensor
@@ -337,9 +336,9 @@ sensor_run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
337 if (GNUNET_YES == is_path (sensorinfo->ext_process)) 336 if (GNUNET_YES == is_path (sensorinfo->ext_process))
338 { 337 {
339 LOG (GNUNET_ERROR_TYPE_ERROR, 338 LOG (GNUNET_ERROR_TYPE_ERROR,
340 _ 339 _
341 ("Sensor `%s': External process should not be a path, disabling sensor.\n"), 340 ("Sensor `%s': External process should not be a path, disabling sensor.\n"),
342 sensorinfo->name); 341 sensorinfo->name);
343 set_sensor_enabled (sensorinfo, GNUNET_NO); 342 set_sensor_enabled (sensorinfo, GNUNET_NO);
344 return; 343 return;
345 } 344 }
@@ -361,9 +360,9 @@ sensor_run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
361 if (GNUNET_SYSERR == check_result) 360 if (GNUNET_SYSERR == check_result)
362 { 361 {
363 LOG (GNUNET_ERROR_TYPE_ERROR, 362 LOG (GNUNET_ERROR_TYPE_ERROR,
364 _ 363 _
365 ("Sensor `%s' process `%s' problem: binary doesn't exist or not executable\n"), 364 ("Sensor `%s' process `%s' problem: binary doesn't exist or not executable\n"),
366 sensorinfo->name, sensorinfo->ext_process); 365 sensorinfo->name, sensorinfo->ext_process);
367 set_sensor_enabled (sensorinfo, GNUNET_NO); 366 set_sensor_enabled (sensorinfo, GNUNET_NO);
368 sensorinfo->running = GNUNET_NO; 367 sensorinfo->running = GNUNET_NO;
369 GNUNET_free (process_path); 368 GNUNET_free (process_path);
@@ -376,7 +375,7 @@ sensor_run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
376 sensorinfo->ext_process, sensorinfo->ext_args, 375 sensorinfo->ext_process, sensorinfo->ext_args,
377 NULL); 376 NULL);
378 LOG (GNUNET_ERROR_TYPE_DEBUG, "Process started for sensor `%s'\n", 377 LOG (GNUNET_ERROR_TYPE_DEBUG, "Process started for sensor `%s'\n",
379 sensorinfo->name); 378 sensorinfo->name);
380 GNUNET_free (process_path); 379 GNUNET_free (process_path);
381 } 380 }
382 else 381 else
@@ -405,14 +404,13 @@ schedule_sensor (void *cls, const struct GNUNET_HashCode *key, void *value)
405 if (GNUNET_NO == should_run_sensor (sensorinfo)) 404 if (GNUNET_NO == should_run_sensor (sensorinfo))
406 return GNUNET_YES; 405 return GNUNET_YES;
407 LOG (GNUNET_ERROR_TYPE_DEBUG, 406 LOG (GNUNET_ERROR_TYPE_DEBUG,
408 "Scheduling sensor `%s' to run after %" PRIu64 " microseconds\n", 407 "Scheduling sensor `%s' to run after %" PRIu64 " microseconds\n",
409 sensorinfo->name, sensorinfo->interval.rel_value_us); 408 sensorinfo->name, sensorinfo->interval.rel_value_us);
410 if (GNUNET_SCHEDULER_NO_TASK != sensorinfo->execution_task) 409 if (GNUNET_SCHEDULER_NO_TASK != sensorinfo->execution_task)
411 { 410 {
412 LOG (GNUNET_ERROR_TYPE_ERROR, 411 LOG (GNUNET_ERROR_TYPE_ERROR,
413 _ 412 _("Sensor `%s' execution task already set, this should not happen\n"),
414 ("Sensor `%s' execution task already set, this should not happen\n"), 413 sensorinfo->name);
415 sensorinfo->name);
416 return GNUNET_NO; 414 return GNUNET_NO;
417 } 415 }
418 sensorinfo->execution_task = 416 sensorinfo->execution_task =
@@ -441,7 +439,7 @@ schedule_all_sensors ()
441 */ 439 */
442int 440int
443SENSOR_monitoring_start (const struct GNUNET_CONFIGURATION_Handle *c, 441SENSOR_monitoring_start (const struct GNUNET_CONFIGURATION_Handle *c,
444 struct GNUNET_CONTAINER_MultiHashMap *s) 442 struct GNUNET_CONTAINER_MultiHashMap *s)
445{ 443{
446 LOG (GNUNET_ERROR_TYPE_DEBUG, "Starting sensor reporting module.\n"); 444 LOG (GNUNET_ERROR_TYPE_DEBUG, "Starting sensor reporting module.\n");
447 GNUNET_assert (NULL != s); 445 GNUNET_assert (NULL != s);
@@ -449,8 +447,8 @@ SENSOR_monitoring_start (const struct GNUNET_CONFIGURATION_Handle *c,
449 cfg = c; 447 cfg = c;
450 statistics = GNUNET_STATISTICS_create ("sensor", cfg); 448 statistics = GNUNET_STATISTICS_create ("sensor", cfg);
451 if (GNUNET_OK != 449 if (GNUNET_OK !=
452 GNUNET_CONFIGURATION_get_value_filename (cfg, "SENSOR", "SENSOR_DIR", 450 GNUNET_CONFIGURATION_get_value_filename (cfg, "SENSOR", "SENSOR_DIR",
453 &sensor_dir)) 451 &sensor_dir))
454 { 452 {
455 sensor_dir = GNUNET_SENSOR_get_default_sensor_dir (); 453 sensor_dir = GNUNET_SENSOR_get_default_sensor_dir ();
456 } 454 }
diff --git a/src/sensor/gnunet-service-sensor_reporting.c b/src/sensor/gnunet-service-sensor_reporting.c
index 15edd149a..611f0d73d 100644
--- a/src/sensor/gnunet-service-sensor_reporting.c
+++ b/src/sensor/gnunet-service-sensor_reporting.c
@@ -524,7 +524,8 @@ create_value_message (struct ValueInfo *vi)
524 struct GNUNET_SENSOR_ValueMessage *vm; 524 struct GNUNET_SENSOR_ValueMessage *vm;
525 struct GNUNET_MQ_Envelope *ev; 525 struct GNUNET_MQ_Envelope *ev;
526 526
527 ev = GNUNET_MQ_msg_extra (vm, vi->last_value_size, GNUNET_MESSAGE_TYPE_SENSOR_READING); 527 ev = GNUNET_MQ_msg_extra (vm, vi->last_value_size,
528 GNUNET_MESSAGE_TYPE_SENSOR_READING);
528 GNUNET_CRYPTO_hash (vi->sensor->name, strlen (vi->sensor->name) + 1, 529 GNUNET_CRYPTO_hash (vi->sensor->name, strlen (vi->sensor->name) + 1,
529 &vm->sensorname_hash); 530 &vm->sensorname_hash);
530 vm->sensorversion_major = htons (vi->sensor->version_major); 531 vm->sensorversion_major = htons (vi->sensor->version_major);
@@ -607,7 +608,7 @@ handle_anomaly_report (void *cls, const struct GNUNET_PeerIdentity *other,
607 } 608 }
608 /* Send anomaly update to collection point */ 609 /* Send anomaly update to collection point */
609 if (NULL != ai->sensor->collection_point && 610 if (NULL != ai->sensor->collection_point &&
610 GNUNET_YES == ai->sensor->report_anomalies) 611 GNUNET_YES == ai->sensor->report_anomalies)
611 { 612 {
612 cadetp = get_cadet_peer (*ai->sensor->collection_point); 613 cadetp = get_cadet_peer (*ai->sensor->collection_point);
613 send_anomaly_report (cadetp->mq, ai); 614 send_anomaly_report (cadetp->mq, ai);
@@ -636,8 +637,7 @@ value_watch_cb (void *cls, struct GNUNET_PEERSTORE_Record *record, char *emsg)
636 637
637 if (NULL != emsg) 638 if (NULL != emsg)
638 { 639 {
639 LOG (GNUNET_ERROR_TYPE_ERROR, 640 LOG (GNUNET_ERROR_TYPE_ERROR, _("PEERSTORE error: %s.\n"), emsg);
640 _("PEERSTORE error: %s.\n"), emsg);
641 return GNUNET_YES; 641 return GNUNET_YES;
642 } 642 }
643 if (NULL != vi->last_value) 643 if (NULL != vi->last_value)
@@ -647,7 +647,7 @@ value_watch_cb (void *cls, struct GNUNET_PEERSTORE_Record *record, char *emsg)
647 } 647 }
648 vi->last_value = GNUNET_memdup (record->value, record->value_size); 648 vi->last_value = GNUNET_memdup (record->value, record->value_size);
649 vi->last_value_size = record->value_size; 649 vi->last_value_size = record->value_size;
650 vi->last_value_timestamp = GNUNET_TIME_absolute_get(); 650 vi->last_value_timestamp = GNUNET_TIME_absolute_get ();
651 vi->last_value_reported = GNUNET_NO; 651 vi->last_value_reported = GNUNET_NO;
652 return GNUNET_YES; 652 return GNUNET_YES;
653} 653}
@@ -772,7 +772,7 @@ cadet_channel_destroyed (void *cls, const struct GNUNET_CADET_Channel *channel,
772 struct CadetPeer *cadetp = channel_ctx; 772 struct CadetPeer *cadetp = channel_ctx;
773 773
774 if (GNUNET_YES == cadetp->destroying) 774 if (GNUNET_YES == cadetp->destroying)
775 return; 775 return;
776 GNUNET_CONTAINER_DLL_remove (cadetp_head, cadetp_tail, cadetp); 776 GNUNET_CONTAINER_DLL_remove (cadetp_head, cadetp_tail, cadetp);
777 cadetp->channel = NULL; 777 cadetp->channel = NULL;
778 destroy_cadet_peer (cadetp); 778 destroy_cadet_peer (cadetp);
@@ -842,12 +842,10 @@ report_value (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
842 vi->reporting_task = 842 vi->reporting_task =
843 GNUNET_SCHEDULER_add_delayed (sensor->value_reporting_interval, 843 GNUNET_SCHEDULER_add_delayed (sensor->value_reporting_interval,
844 &report_value, vi); 844 &report_value, vi);
845 if (0 == vi->last_value_size || 845 if (0 == vi->last_value_size || GNUNET_YES == vi->last_value_reported)
846 GNUNET_YES == vi->last_value_reported)
847 { 846 {
848 LOG (GNUNET_ERROR_TYPE_WARNING, 847 LOG (GNUNET_ERROR_TYPE_WARNING,
849 "Did not receive a fresh value from `%s' to report.\n", 848 "Did not receive a fresh value from `%s' to report.\n", sensor->name);
850 sensor->name);
851 return; 849 return;
852 } 850 }
853 LOG (GNUNET_ERROR_TYPE_DEBUG, 851 LOG (GNUNET_ERROR_TYPE_DEBUG,
@@ -883,6 +881,7 @@ init_sensor_reporting (void *cls, const struct GNUNET_HashCode *key,
883 881
884 /* Create sensor anomaly info context */ 882 /* Create sensor anomaly info context */
885 ai = GNUNET_new (struct AnomalyInfo); 883 ai = GNUNET_new (struct AnomalyInfo);
884
886 ai->sensor = sensor; 885 ai->sensor = sensor;
887 ai->anomalous = GNUNET_NO; 886 ai->anomalous = GNUNET_NO;
888 ai->anomalous_neighbors = 887 ai->anomalous_neighbors =
@@ -902,11 +901,11 @@ init_sensor_reporting (void *cls, const struct GNUNET_HashCode *key,
902 vi->last_value_size = 0; 901 vi->last_value_size = 0;
903 vi->last_value_reported = GNUNET_NO; 902 vi->last_value_reported = GNUNET_NO;
904 vi->wc = 903 vi->wc =
905 GNUNET_PEERSTORE_watch (peerstore, "sensor", &mypeerid, sensor->name, 904 GNUNET_PEERSTORE_watch (peerstore, "sensor", &mypeerid, sensor->name,
906 &value_watch_cb, vi); 905 &value_watch_cb, vi);
907 vi->reporting_task = 906 vi->reporting_task =
908 GNUNET_SCHEDULER_add_delayed (sensor->value_reporting_interval, 907 GNUNET_SCHEDULER_add_delayed (sensor->value_reporting_interval,
909 &report_value, vi); 908 &report_value, vi);
910 GNUNET_CONTAINER_DLL_insert (vi_head, vi_tail, vi); 909 GNUNET_CONTAINER_DLL_insert (vi_head, vi_tail, vi);
911 return GNUNET_YES; 910 return GNUNET_YES;
912} 911}
@@ -921,7 +920,7 @@ init_sensor_reporting (void *cls, const struct GNUNET_HashCode *key,
921 */ 920 */
922int 921int
923SENSOR_reporting_start (const struct GNUNET_CONFIGURATION_Handle *c, 922SENSOR_reporting_start (const struct GNUNET_CONFIGURATION_Handle *c,
924 struct GNUNET_CONTAINER_MultiHashMap *s) 923 struct GNUNET_CONTAINER_MultiHashMap *s)
925{ 924{
926 static struct GNUNET_CORE_MessageHandler core_handlers[] = { 925 static struct GNUNET_CORE_MessageHandler core_handlers[] = {
927 {&handle_anomaly_report, GNUNET_MESSAGE_TYPE_SENSOR_ANOMALY_REPORT, 926 {&handle_anomaly_report, GNUNET_MESSAGE_TYPE_SENSOR_ANOMALY_REPORT,
diff --git a/src/sensor/sensor.conf.in b/src/sensor/sensor.conf.in
index 60a62b650..12b5b4d35 100644
--- a/src/sensor/sensor.conf.in
+++ b/src/sensor/sensor.conf.in
@@ -5,6 +5,12 @@ UNIXPATH = $GNUNET_RUNTIME_DIR/gnunet-service-sensor.sock
5UNIX_MATCH_UID = NO 5UNIX_MATCH_UID = NO
6UNIX_MATCH_GID = YES 6UNIX_MATCH_GID = YES
7 7
8# Which modules to run (default: YES)
9START_MONITORING = YES
10START_REPORTING = YES
11START_ANALYSIS = YES
12STARTING_UPDATE = YES
13
8# Path to directory containing sensor definitions. 14# Path to directory containing sensor definitions.
9# If not set, will load from default location. 15# If not set, will load from default location.
10#SENSOR_DIR = 16#SENSOR_DIR =
diff --git a/src/sensor/sensor.h b/src/sensor/sensor.h
index c5dd3bb1b..0b8daaa2c 100644
--- a/src/sensor/sensor.h
+++ b/src/sensor/sensor.h
@@ -107,7 +107,7 @@ SENSOR_reporting_anomaly_update (struct GNUNET_SENSOR_SensorInfo *sensor,
107 */ 107 */
108int 108int
109SENSOR_reporting_start (const struct GNUNET_CONFIGURATION_Handle *c, 109SENSOR_reporting_start (const struct GNUNET_CONFIGURATION_Handle *c,
110 struct GNUNET_CONTAINER_MultiHashMap *s); 110 struct GNUNET_CONTAINER_MultiHashMap *s);
111 111
112 112
113/** 113/**
@@ -146,4 +146,4 @@ SENSOR_monitoring_stop ();
146 */ 146 */
147int 147int
148SENSOR_monitoring_start (const struct GNUNET_CONFIGURATION_Handle *c, 148SENSOR_monitoring_start (const struct GNUNET_CONFIGURATION_Handle *c,
149 struct GNUNET_CONTAINER_MultiHashMap *s); 149 struct GNUNET_CONTAINER_MultiHashMap *s);