diff options
Diffstat (limited to 'src')
22 files changed, 272 insertions, 251 deletions
diff --git a/src/include/gnunet_sensor_util_lib.h b/src/include/gnunet_sensor_util_lib.h index e048cb9f06..b497d05d61 100644 --- a/src/include/gnunet_sensor_util_lib.h +++ b/src/include/gnunet_sensor_util_lib.h @@ -47,78 +47,78 @@ struct GNUNET_SENSOR_SensorInfo */ struct GNUNET_CONFIGURATION_Handle *cfg; - /* + /** * Sensor name */ char *name; - /* + /** * Path to definition file */ char *def_file; - /* + /** * First part of version number */ uint16_t version_major; - /* + /** * Second part of version number */ uint16_t version_minor; - /* + /** * Sensor description */ char *description; - /* + /** * Sensor currently enabled */ int enabled; - /* + /** * Category under which the sensor falls (e.g. tcp, datastore) */ char *category; - /* + /** * When does the sensor become active */ struct GNUNET_TIME_Absolute *start_time; - /* + /** * When does the sensor expire */ struct GNUNET_TIME_Absolute *end_time; - /* + /** * Time interval to collect sensor information (e.g. every 1 min) */ struct GNUNET_TIME_Relative interval; - /* + /** * Lifetime of an information sample after which it is deleted from storage * If not supplied, will default to the interval value */ struct GNUNET_TIME_Relative lifetime; - /* + /** * A set of required peer capabilities for the sensor to collect meaningful information (e.g. ipv6) */ char *capabilities; - /* + /** * Either "gnunet-statistics" or external "process" */ char *source; - /* + /** * Name of the GNUnet service that is the source for the gnunet-statistics entry */ char *gnunet_stat_service; - /* + /** * Name of the gnunet-statistics entry */ char *gnunet_stat_name; @@ -128,59 +128,61 @@ struct GNUNET_SENSOR_SensorInfo */ struct GNUNET_STATISTICS_GetHandle *gnunet_stat_get_handle; - /* + /** * Name of the external process to be executed */ char *ext_process; - /* + /** * Arguments to be passed to the external process */ char *ext_args; - /* + /** * Handle to the external process */ struct GNUNET_OS_CommandHandle *ext_cmd; - /* + /** * Did we already receive a value * from the currently running external * proccess ? #GNUNET_YES / #GNUNET_NO */ int ext_cmd_value_received; - /* + /** * The output datatype to be expected */ char *expected_datatype; - /* + /** * Peer-identity of peer running collection point */ struct GNUNET_PeerIdentity *collection_point; - /* - * Time interval to send sensor information to collection point (e.g. every 30 mins) + /** + * Do we report received sensor values to collection point? + * #GNUNET_YES / #GNUNET_NO */ - struct GNUNET_TIME_Relative collection_interval; + int report_values; - /* - * Flag specifying if value is to be communicated to the p2p network + /** + * Time interval to send sensor values to collection point (e.g. every 30 mins) */ - int p2p_report; + struct GNUNET_TIME_Relative value_reporting_interval; - /* - * Time interval to communicate value to the p2p network + /** + * Do we report anomalies to collection point? + * #GNUNET_YES / #GNUNET_NO */ - struct GNUNET_TIME_Relative p2p_interval; + int report_anomalies; - /* + /** * Execution task (OR GNUNET_SCHEDULER_NO_TASK) */ GNUNET_SCHEDULER_TaskIdentifier execution_task; - /* + /** * Is the sensor being executed */ int running; @@ -296,6 +298,7 @@ struct GNUNET_SENSOR_SensorFullMessage }; GNUNET_NETWORK_STRUCT_END + /** * Given two version numbers as major and minor, compare them. * diff --git a/src/sensor/gnunet-service-sensor-analysis.c b/src/sensor/gnunet-service-sensor-analysis.c index f4a1269a4f..175fc259cb 100644 --- a/src/sensor/gnunet-service-sensor-analysis.c +++ b/src/sensor/gnunet-service-sensor-analysis.c @@ -31,35 +31,51 @@ #define LOG(kind,...) GNUNET_log_from (kind, "sensor-analysis",__VA_ARGS__) -/* +/** * Carries information about the analysis model * corresponding to one sensor */ struct SensorModel { - /* + /** * DLL */ struct SensorModel *prev; - /* + /** * DLL */ struct SensorModel *next; - /* + /** * Pointer to sensor info structure */ struct GNUNET_SENSOR_SensorInfo *sensor; - /* + /** * Watcher of sensor values */ struct GNUNET_PEERSTORE_WatchContext *wc; - /* - * Closure for model plugin + /** + * State of sensor. #GNUNET_YES if anomalous, #GNUNET_NO otherwise. + */ + int anomalous; + + /** + * Number of anomalous readings (positive) received in a row. + */ + int positive_count; + + /** + * Number of non-anomalous (negative) readings received in a row. + */ + int negative_count; + + /** + * Closure for model plugin. + * Usually, the instance of the model created for this sensor. */ void *cls; @@ -75,22 +91,22 @@ static const struct GNUNET_CONFIGURATION_Handle *cfg; */ static char *model_lib_name; -/* +/** * Model handle */ static struct GNUNET_SENSOR_ModelFunctions *model_api; -/* +/** * Handle to peerstore service */ static struct GNUNET_PEERSTORE_Handle *peerstore; -/* +/** * Head of DLL of created models */ static struct SensorModel *models_head; -/* +/** * Tail of DLL of created models */ static struct SensorModel *models_tail; @@ -101,6 +117,12 @@ static struct SensorModel *models_tail; struct GNUNET_PeerIdentity peerid; /** + * How many subsequent values required to flip anomaly label. + * E.g. After 3 subsequent anomaly reports, status change to anomalous. + */ +unsigned long long confirmation_count; + +/** * Destroy a created model */ static void @@ -155,11 +177,16 @@ SENSOR_analysis_stop () /** * Sensor value watch callback + * + * @param cls Sensor model struct + * @param record Received record from peerstore, should contain new sensor value + * @param emsg Error message from peerstore if any, NULL if no errors + * @return #GNUNET_YES */ static int sensor_watcher (void *cls, struct GNUNET_PEERSTORE_Record *record, char *emsg) { - struct SensorModel *sensor_model = cls; + struct SensorModel *model = cls; double *val; int anomalous; @@ -171,15 +198,41 @@ sensor_watcher (void *cls, struct GNUNET_PEERSTORE_Record *record, char *emsg) return GNUNET_YES; } val = (double *) (record->value); - anomalous = model_api->feed_model (sensor_model->cls, *val); + anomalous = model_api->feed_model (model->cls, *val); if (GNUNET_YES == anomalous) { - LOG (GNUNET_ERROR_TYPE_WARNING, - "Anomaly detected in sensor `%s', value: %f.\n", - sensor_model->sensor->name, *val); + model->positive_count++; + model->negative_count = 0; + if (GNUNET_NO == model->anomalous && + model->positive_count >= confirmation_count) + { + model->anomalous = GNUNET_YES; + LOG (GNUNET_ERROR_TYPE_WARNING, + "Anomaly state started for sensor `%s'.\n", model->sensor->name); + GNUNET_PEERSTORE_store (peerstore, "senosr-analysis", &peerid, + model->sensor->name, &model->anomalous, + sizeof (model->anomalous), + GNUNET_TIME_UNIT_FOREVER_ABS, + GNUNET_PEERSTORE_STOREOPTION_REPLACE, NULL, NULL); + } } else - LOG (GNUNET_ERROR_TYPE_DEBUG, "Value non-anomalous.\n"); + { + model->negative_count++; + model->positive_count = 0; + if (GNUNET_YES == model->anomalous && + model->negative_count >= confirmation_count) + { + model->anomalous = GNUNET_NO; + LOG (GNUNET_ERROR_TYPE_INFO, "Anomaly state stopped for sensor `%s'.\n", + model->sensor->name); + GNUNET_PEERSTORE_store (peerstore, "senosr-analysis", &peerid, + model->sensor->name, &model->anomalous, + sizeof (model->anomalous), + GNUNET_TIME_UNIT_FOREVER_ABS, + GNUNET_PEERSTORE_STOREOPTION_REPLACE, NULL, NULL); + } + } return GNUNET_YES; } @@ -206,6 +259,9 @@ init_sensor_model (void *cls, const struct GNUNET_HashCode *key, void *value) sensor_model->wc = GNUNET_PEERSTORE_watch (peerstore, "sensor", &peerid, sensor->name, &sensor_watcher, sensor_model); + sensor_model->anomalous = GNUNET_NO; + sensor_model->positive_count = 0; + sensor_model->negative_count = 0; sensor_model->cls = model_api->create_model (model_api->cls); GNUNET_CONTAINER_DLL_insert (models_head, models_tail, sensor_model); LOG (GNUNET_ERROR_TYPE_DEBUG, "Created sensor model for `%s'.\n", @@ -255,6 +311,11 @@ SENSOR_analysis_start (const struct GNUNET_CONFIGURATION_Handle *c, SENSOR_analysis_stop (); return GNUNET_SYSERR; } + if (GNUNET_OK != + GNUNET_CONFIGURATION_get_value_number (cfg, "sensor-analysis", + "CONFIRMATION_COUNT", + &confirmation_count)) + confirmation_count = 1; GNUNET_CRYPTO_get_peer_identity (cfg, &peerid); GNUNET_CONTAINER_multihashmap_iterate (sensors, &init_sensor_model, NULL); return GNUNET_OK; diff --git a/src/sensor/gnunet-service-sensor-reporting.c b/src/sensor/gnunet-service-sensor-reporting.c index b935328d4b..9bcf9904b8 100644 --- a/src/sensor/gnunet-service-sensor-reporting.c +++ b/src/sensor/gnunet-service-sensor-reporting.c @@ -41,18 +41,18 @@ /** * Context of reporting operations */ -struct ReportingContext +struct ValueReportingContext { /** * DLL */ - struct ReportingContext *prev; + struct ValueReportingContext *prev; /** * DLL */ - struct ReportingContext *next; + struct ValueReportingContext *next; /** * Sensor information @@ -165,12 +165,12 @@ static struct GNUNET_CADET_Handle *cadet; /** * Head of DLL of all reporting contexts */ -struct ReportingContext *rc_head; +struct ValueReportingContext *vrc_head; /** * Tail of DLL of all reporting contexts */ -struct ReportingContext *rc_tail; +struct ValueReportingContext *vrc_tail; /** * Head of DLL of all cadet channels @@ -186,24 +186,24 @@ struct CadetChannelContext *cc_tail; * Destroy a reporting context structure */ static void -destroy_reporting_context (struct ReportingContext *rc) +destroy_reporting_context (struct ValueReportingContext *vrc) { - if (NULL != rc->wc) + if (NULL != vrc->wc) { - GNUNET_PEERSTORE_watch_cancel (rc->wc); - rc->wc = NULL; + GNUNET_PEERSTORE_watch_cancel (vrc->wc); + vrc->wc = NULL; } - if (GNUNET_SCHEDULER_NO_TASK != rc->cp_task) + if (GNUNET_SCHEDULER_NO_TASK != vrc->cp_task) { - GNUNET_SCHEDULER_cancel (rc->cp_task); - rc->cp_task = GNUNET_SCHEDULER_NO_TASK; + GNUNET_SCHEDULER_cancel (vrc->cp_task); + vrc->cp_task = GNUNET_SCHEDULER_NO_TASK; } - if (NULL != rc->last_value) + if (NULL != vrc->last_value) { - GNUNET_free (rc->last_value); - rc->last_value_size = 0; + GNUNET_free (vrc->last_value); + vrc->last_value_size = 0; } - GNUNET_free (rc); + GNUNET_free (vrc); } @@ -239,7 +239,7 @@ destroy_cadet_channel_context (struct CadetChannelContext *cc) void SENSOR_reporting_stop () { - struct ReportingContext *rc; + struct ValueReportingContext *vrc; struct CadetChannelContext *cc; LOG (GNUNET_ERROR_TYPE_DEBUG, "Stopping sensor reporting module.\n"); @@ -249,11 +249,11 @@ SENSOR_reporting_stop () GNUNET_CONTAINER_DLL_remove (cc_head, cc_tail, cc); destroy_cadet_channel_context (cc); } - while (NULL != rc_head) + while (NULL != vrc_head) { - rc = rc_head; - GNUNET_CONTAINER_DLL_remove (rc_head, rc_tail, rc); - destroy_reporting_context (rc); + vrc = vrc_head; + GNUNET_CONTAINER_DLL_remove (vrc_head, vrc_tail, vrc); + destroy_reporting_context (vrc); } if (NULL != peerstore) { @@ -308,7 +308,7 @@ get_cadet_channel (struct GNUNET_PeerIdentity pid) * @return size of created message */ static size_t -construct_reading_message (struct ReportingContext *rc, +construct_reading_message (struct ValueReportingContext *vrc, struct GNUNET_SENSOR_ReadingMessage **msg) { struct GNUNET_SENSOR_ReadingMessage *ret; @@ -316,22 +316,22 @@ construct_reading_message (struct ReportingContext *rc, uint16_t total_size; void *dummy; - sensorname_size = strlen (rc->sensor->name) + 1; + sensorname_size = strlen (vrc->sensor->name) + 1; total_size = sizeof (struct GNUNET_SENSOR_ReadingMessage) + sensorname_size + - rc->last_value_size; + vrc->last_value_size; ret = GNUNET_malloc (total_size); ret->header.size = htons (total_size); ret->header.type = htons (GNUNET_MESSAGE_TYPE_SENSOR_READING); ret->sensorname_size = htons (sensorname_size); - ret->sensorversion_major = htons (rc->sensor->version_major); - ret->sensorversion_minor = htons (rc->sensor->version_minor); - ret->timestamp = GNUNET_htobe64 (rc->timestamp); - ret->value_size = htons (rc->last_value_size); + ret->sensorversion_major = htons (vrc->sensor->version_major); + ret->sensorversion_minor = htons (vrc->sensor->version_minor); + ret->timestamp = GNUNET_htobe64 (vrc->timestamp); + ret->value_size = htons (vrc->last_value_size); dummy = &ret[1]; - memcpy (dummy, rc->sensor->name, sensorname_size); + memcpy (dummy, vrc->sensor->name, sensorname_size); dummy += sensorname_size; - memcpy (dummy, rc->last_value, rc->last_value_size); + memcpy (dummy, vrc->last_value, vrc->last_value_size); *msg = ret; return total_size; } @@ -382,59 +382,59 @@ do_report_collection_point (void *cls, size_t size, void *buf) /** * Task scheduled to send values to collection point * - * @param cls closure, a `struct CollectionReportingContext *` + * @param cls closure, a `struct ValueReportingContext *` * @param tc unused */ static void report_collection_point (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { - struct ReportingContext *rc = cls; - struct GNUNET_SENSOR_SensorInfo *sensor = rc->sensor; + struct ValueReportingContext *vrc = cls; + struct GNUNET_SENSOR_SensorInfo *sensor = vrc->sensor; struct CadetChannelContext *cc; struct GNUNET_SENSOR_ReadingMessage *msg; size_t msg_size; - rc->cp_task = GNUNET_SCHEDULER_NO_TASK; - if (0 == rc->last_value_size) /* Did not receive a sensor value yet */ + vrc->cp_task = GNUNET_SCHEDULER_NO_TASK; + if (0 == vrc->last_value_size) /* Did not receive a sensor value yet */ { LOG (GNUNET_ERROR_TYPE_WARNING, "Did not receive a value from `%s' to report yet.\n", - rc->sensor->name); - rc->cp_task = - GNUNET_SCHEDULER_add_delayed (sensor->collection_interval, - &report_collection_point, rc); + vrc->sensor->name); + vrc->cp_task = + GNUNET_SCHEDULER_add_delayed (sensor->value_reporting_interval, + &report_collection_point, vrc); return; } LOG (GNUNET_ERROR_TYPE_DEBUG, "Now trying to report last seen value of `%s' " "to collection point.\n", - rc->sensor->name); + vrc->sensor->name); GNUNET_assert (NULL != sensor->collection_point); cc = get_cadet_channel (*sensor->collection_point); if (GNUNET_YES == cc->sending) { LOG (GNUNET_ERROR_TYPE_DEBUG, "Cadet channel to collection point busy, " - "trying again for sensor `%s' after %d seconds.\n", rc->sensor->name, + "trying again for sensor `%s' after %d seconds.\n", vrc->sensor->name, COLLECTION_RETRY); - rc->cp_task = + vrc->cp_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, COLLECTION_RETRY), - &report_collection_point, rc); + &report_collection_point, vrc); return; } - msg_size = construct_reading_message (rc, &msg); + msg_size = construct_reading_message (vrc, &msg); cc->sending = GNUNET_YES; cc->pending_msg = msg; cc->pending_msg_size = msg_size; cc->th = GNUNET_CADET_notify_transmit_ready (cc->c, GNUNET_YES, - sensor->collection_interval, msg_size, + sensor->value_reporting_interval, msg_size, &do_report_collection_point, cc); - rc->cp_task = - GNUNET_SCHEDULER_add_delayed (sensor->collection_interval, - &report_collection_point, rc); + vrc->cp_task = + GNUNET_SCHEDULER_add_delayed (sensor->value_reporting_interval, + &report_collection_point, vrc); } @@ -444,23 +444,23 @@ report_collection_point (void *cls, static int sensor_watch_cb (void *cls, struct GNUNET_PEERSTORE_Record *record, char *emsg) { - struct ReportingContext *rc = cls; + struct ValueReportingContext *vrc = cls; if (NULL != emsg) return GNUNET_YES; - if (NULL != rc->last_value) + if (NULL != vrc->last_value) { - GNUNET_free (rc->last_value); - rc->last_value_size = 0; + GNUNET_free (vrc->last_value); + vrc->last_value_size = 0; } - rc->last_value = GNUNET_malloc (record->value_size); - memcpy (rc->last_value, record->value, record->value_size); - rc->last_value_size = record->value_size; - rc->timestamp = GNUNET_TIME_absolute_get ().abs_value_us; + vrc->last_value = GNUNET_malloc (record->value_size); + memcpy (vrc->last_value, record->value, record->value_size); + vrc->last_value_size = record->value_size; + vrc->timestamp = GNUNET_TIME_absolute_get ().abs_value_us; LOG (GNUNET_ERROR_TYPE_DEBUG, "Received a sensor `%s' watch value at " "timestamp %" PRIu64 - ", updating notification last_value.\n", rc->sensor->name, - rc->timestamp); + ", updating notification last_value.\n", vrc->sensor->name, + vrc->timestamp); return GNUNET_YES; } @@ -479,38 +479,31 @@ init_sensor_reporting (void *cls, const struct GNUNET_HashCode *key, void *value) { struct GNUNET_SENSOR_SensorInfo *sensor = value; - struct ReportingContext *rc; + struct ValueReportingContext *vrc; - if (NULL == sensor->collection_point && GNUNET_NO == sensor->p2p_report) + if (NULL == sensor->collection_point || + (GNUNET_NO == sensor->report_values && GNUNET_NO == sensor->report_anomalies)) return GNUNET_YES; - rc = GNUNET_new (struct ReportingContext); - rc->sensor = sensor; - rc->last_value = NULL; - rc->last_value_size = 0; - rc->wc = + vrc = GNUNET_new (struct ValueReportingContext); + vrc->sensor = sensor; + vrc->last_value = NULL; + vrc->last_value_size = 0; + vrc->wc = GNUNET_PEERSTORE_watch (peerstore, "sensor", &mypeerid, sensor->name, - &sensor_watch_cb, rc); + &sensor_watch_cb, vrc); if (NULL != sensor->collection_point) { LOG (GNUNET_ERROR_TYPE_INFO, "Will start reporting sensor `%s' values to " "collection point `%s' every %s.\n", sensor->name, GNUNET_i2s_full (sensor->collection_point), - GNUNET_STRINGS_relative_time_to_string (sensor->collection_interval, + GNUNET_STRINGS_relative_time_to_string (sensor->value_reporting_interval, GNUNET_YES)); - rc->cp_task = - GNUNET_SCHEDULER_add_delayed (sensor->collection_interval, - &report_collection_point, rc); + vrc->cp_task = + GNUNET_SCHEDULER_add_delayed (sensor->value_reporting_interval, + &report_collection_point, vrc); } - if (GNUNET_YES == sensor->p2p_report) - { - LOG (GNUNET_ERROR_TYPE_INFO, - "Will start reporting sensor `%s' values to p2p network every %s.\n", - sensor->name, - GNUNET_STRINGS_relative_time_to_string (sensor->p2p_interval, - GNUNET_YES)); - } - GNUNET_CONTAINER_DLL_insert (rc_head, rc_tail, rc); + GNUNET_CONTAINER_DLL_insert (vrc_head, vrc_tail, vrc); return GNUNET_YES; } diff --git a/src/sensor/gnunet-service-sensor.c b/src/sensor/gnunet-service-sensor.c index 24cb8d2aa4..d9f3670d47 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) else { sensorinfo->running = GNUNET_NO; - GNUNET_break (0); //shouldn't happen + GNUNET_break (0); /* shouldn't happen */ } } @@ -596,7 +596,6 @@ schedule_sensor (void *cls, const struct GNUNET_HashCode *key, void *value) /** * Starts the execution of all enabled sensors - * */ static void schedule_all_sensors () diff --git a/src/sensor/sensor.conf.in b/src/sensor/sensor.conf.in index a8531a58d0..fcb914afe8 100644 --- a/src/sensor/sensor.conf.in +++ b/src/sensor/sensor.conf.in @@ -9,7 +9,10 @@ UNIX_MATCH_GID = YES #UPDATE_POINTS = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 [sensor-analysis] -model = gaussian +MODEL = gaussian +# How many subsequent values required to flip anomaly label. (Default: 1) +# E.g. After 3 subsequent anomaly reports, status change to anomalous. +CONFIRMATION_COUNT = 3 [sensor-model-gaussian] TRAINING_WINDOW = 1000 diff --git a/src/sensor/sensor.h b/src/sensor/sensor.h index 633f18e033..0fdb5a6e28 100644 --- a/src/sensor/sensor.h +++ b/src/sensor/sensor.h @@ -61,7 +61,6 @@ GNUNET_NETWORK_STRUCT_BEGIN }; GNUNET_NETWORK_STRUCT_END - /** * Stop the sensor analysis module */ @@ -117,5 +116,4 @@ SENSOR_update_stop (); */ int SENSOR_update_start (const struct GNUNET_CONFIGURATION_Handle *c, - struct GNUNET_CONTAINER_MultiHashMap *s, - void (*cb) ()); + struct GNUNET_CONTAINER_MultiHashMap *s, void (*cb) ()); diff --git a/src/sensor/sensor_util_lib.c b/src/sensor/sensor_util_lib.c index 756c193ef7..d12698c3ac 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, &starttime_str)) { GNUNET_STRINGS_fancy_time_to_absolute (starttime_str, sensor->start_time); - LOG (GNUNET_ERROR_TYPE_DEBUG, "Start time loaded: `%s'. Parsed: %d\n", - starttime_str, (NULL != sensor->start_time)); GNUNET_free (starttime_str); } //end time @@ -161,8 +159,6 @@ load_sensor_from_cfg (struct GNUNET_CONFIGURATION_Handle *cfg, &endtime_str)) { GNUNET_STRINGS_fancy_time_to_absolute (endtime_str, sensor->end_time); - LOG (GNUNET_ERROR_TYPE_DEBUG, "End time loaded: `%s'. Parsed: %d\n", - endtime_str, (NULL != sensor->end_time)); GNUNET_free (endtime_str); } //interval @@ -259,53 +255,37 @@ load_sensor_from_cfg (struct GNUNET_CONFIGURATION_Handle *cfg, GNUNET_free (sensor); return NULL; } - //reporting mechanism + //reporting sensor->collection_point = NULL; + sensor->report_values = GNUNET_NO; + sensor->report_anomalies = GNUNET_NO; if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (cfg, sectionname, "COLLECTION_POINT", &dummy)) { - if (GNUNET_OK != - GNUNET_CONFIGURATION_get_value_number (cfg, sectionname, - "COLLECTION_INTERVAL", - &time_sec)) - { - LOG (GNUNET_ERROR_TYPE_ERROR, - _("Error reading sensor collection interval\n")); - } - else + if (GNUNET_OK == + GNUNET_CRYPTO_eddsa_public_key_from_string (dummy, strlen (dummy), + &public_key)) { - sensor->collection_interval = - GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, time_sec); + sensor->collection_point = GNUNET_new (struct GNUNET_PeerIdentity); + + sensor->collection_point->public_key = public_key; if (GNUNET_OK == - GNUNET_CRYPTO_eddsa_public_key_from_string (dummy, strlen (dummy), - &public_key)) + GNUNET_CONFIGURATION_get_value_number (cfg, sectionname, + "VALUE_COLLECTION_INTERVAL", + &time_sec)) { - sensor->collection_point = GNUNET_new (struct GNUNET_PeerIdentity); - - sensor->collection_point->public_key = public_key; + sensor->report_values = GNUNET_YES; + sensor->value_reporting_interval = + GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, time_sec); } + if (GNUNET_YES == + GNUNET_CONFIGURATION_get_value_yesno (cfg, sectionname, + "REPORT_ANOMALIES")) + sensor->report_anomalies = GNUNET_YES; } GNUNET_free (dummy); } - sensor->p2p_report = GNUNET_NO; - if (GNUNET_YES == - GNUNET_CONFIGURATION_get_value_yesno (cfg, sectionname, "P2P_REPORT")) - { - if (GNUNET_OK != - GNUNET_CONFIGURATION_get_value_number (cfg, sectionname, "P2P_INTERVAL", - &time_sec)) - { - LOG (GNUNET_ERROR_TYPE_ERROR, - _("Error reading sensor p2p reporting interval\n")); - } - else - { - sensor->p2p_interval = - GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, time_sec); - sensor->p2p_report = GNUNET_YES; - } - } //execution task sensor->execution_task = GNUNET_SCHEDULER_NO_TASK; //running @@ -490,8 +470,7 @@ GNUNET_SENSOR_load_all_sensors () "Loading sensor definitions from directory `%s'\n", sensordir); GNUNET_assert (GNUNET_YES == GNUNET_DISK_directory_test (sensordir, GNUNET_YES)); - - //read all files in sensors directory + /* read all files in sensors directory */ GNUNET_DISK_directory_scan (sensordir, &reload_sensors_dir_cb, sensors); LOG (GNUNET_ERROR_TYPE_INFO, "Loaded %d sensors from directory `%s'\n", GNUNET_CONTAINER_multihashmap_size (sensors), sensordir); diff --git a/src/sensor/sensors/average-ping-rtt b/src/sensor/sensors/average-ping-rtt index f929b8cf45..7a4b5ca670 100644 --- a/src/sensor/sensors/average-ping-rtt +++ b/src/sensor/sensors/average-ping-rtt @@ -24,9 +24,8 @@ EXT_PROCESS = avgping.sh EXPECTED_DATATYPE = numeric -# Reporting mechanism +# Reporting: #COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 -#COLLECTION_INTERVAL = 7200 - -P2P_REPORT = NO -#P2P_INTERVAL = 300 +# Comment or remove next line to disable reporting sensor values to collection point +#VALUE_COLLECTION_INTERVAL = 7200 +REPORT_ANOMALIES = YES diff --git a/src/sensor/sensors/core-peers-connected b/src/sensor/sensors/core-peers-connected index 2ea388b653..51bf7f7d30 100644 --- a/src/sensor/sensors/core-peers-connected +++ b/src/sensor/sensors/core-peers-connected @@ -24,9 +24,8 @@ GNUNET_STAT_NAME = # peers connected EXPECTED_DATATYPE = numeric -# Reporting mechanism +# Reporting: #COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 -#COLLECTION_INTERVAL = 120 - -P2P_REPORT = NO -#P2P_INTERVAL = +# Comment or remove next line to disable reporting sensor values to collection point +#VALUE_COLLECTION_INTERVAL = 120 +REPORT_ANOMALIES = YES diff --git a/src/sensor/sensors/datacache-bytes-stored b/src/sensor/sensors/datacache-bytes-stored index 3ba7e293d6..9601f52807 100644 --- a/src/sensor/sensors/datacache-bytes-stored +++ b/src/sensor/sensors/datacache-bytes-stored @@ -24,9 +24,8 @@ GNUNET_STAT_NAME = # bytes stored EXPECTED_DATATYPE = numeric -# Reporting mechanism +# Reporting: #COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 -#COLLECTION_INTERVAL = 120 - -P2P_REPORT = NO -#P2P_INTERVAL = +# Comment or remove next line to disable reporting sensor values to collection point +#VALUE_COLLECTION_INTERVAL = 120 +REPORT_ANOMALIES = YES diff --git a/src/sensor/sensors/dht-peers-connected b/src/sensor/sensors/dht-peers-connected index 21ba05e7c4..6e4d448ae4 100644 --- a/src/sensor/sensors/dht-peers-connected +++ b/src/sensor/sensors/dht-peers-connected @@ -24,9 +24,8 @@ GNUNET_STAT_NAME = # peers connected EXPECTED_DATATYPE = numeric -# Reporting mechanism +# Reporting: #COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 -#COLLECTION_INTERVAL = 120 - -P2P_REPORT = NO -#P2P_INTERVAL = +# Comment or remove next line to disable reporting sensor values to collection point +#VALUE_COLLECTION_INTERVAL = 120 +REPORT_ANOMALIES = YES diff --git a/src/sensor/sensors/fs-peers-connected b/src/sensor/sensors/fs-peers-connected index 24f4abb9e1..1a3cb127bd 100644 --- a/src/sensor/sensors/fs-peers-connected +++ b/src/sensor/sensors/fs-peers-connected @@ -24,9 +24,8 @@ GNUNET_STAT_NAME = # peers connected EXPECTED_DATATYPE = numeric -# Reporting mechanism +# Reporting: #COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 -#COLLECTION_INTERVAL = 120 - -P2P_REPORT = NO -#P2P_INTERVAL = +# Comment or remove next line to disable reporting sensor values to collection point +#VALUE_COLLECTION_INTERVAL = 120 +REPORT_ANOMALIES = YES diff --git a/src/sensor/sensors/gnunet-version b/src/sensor/sensors/gnunet-version index ecb71ac59d..271b738d4c 100644 --- a/src/sensor/sensors/gnunet-version +++ b/src/sensor/sensors/gnunet-version @@ -24,9 +24,8 @@ EXT_ARGS = -v EXPECTED_DATATYPE = string -# Reporting mechanism +# Reporting: #COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 -#COLLECTION_INTERVAL = 86400 - -P2P_REPORT = NO -#P2P_INTERVAL = +# Comment or remove next line to disable reporting sensor values to collection point +#VALUE_COLLECTION_INTERVAL = 120 +REPORT_ANOMALIES = YES diff --git a/src/sensor/sensors/known-peers b/src/sensor/sensors/known-peers index 2ee85b1d6d..fda1063303 100644 --- a/src/sensor/sensors/known-peers +++ b/src/sensor/sensors/known-peers @@ -24,9 +24,8 @@ GNUNET_STAT_NAME = # peers known EXPECTED_DATATYPE = numeric -# Reporting mechanism +# Reporting: #COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 -#COLLECTION_INTERVAL = 120 - -P2P_REPORT = NO -#P2P_INTERVAL = +# Comment or remove next line to disable reporting sensor values to collection point +#VALUE_COLLECTION_INTERVAL = 120 +REPORT_ANOMALIES = YES diff --git a/src/sensor/sensors/nse b/src/sensor/sensors/nse index 2ba89b9a05..8cede34cb7 100644 --- a/src/sensor/sensors/nse +++ b/src/sensor/sensors/nse @@ -24,9 +24,8 @@ GNUNET_STAT_NAME = # nodes in the network (estimate) EXPECTED_DATATYPE = numeric -# Reporting mechanism +# Reporting: #COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 -#COLLECTION_INTERVAL = 120 - -P2P_REPORT = NO -#P2P_INTERVAL = +# Comment or remove next line to disable reporting sensor values to collection point +#VALUE_COLLECTION_INTERVAL = 120 +REPORT_ANOMALIES = YES diff --git a/src/sensor/sensors/peerstore-memory b/src/sensor/sensors/peerstore-memory index 380fe0cec9..0a60866ada 100644 --- a/src/sensor/sensors/peerstore-memory +++ b/src/sensor/sensors/peerstore-memory @@ -24,9 +24,8 @@ EXT_PROCESS = peerstore-memory.sh EXPECTED_DATATYPE = numeric -# Reporting mechanism -COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 -COLLECTION_INTERVAL = 61 - -P2P_REPORT = NO -#P2P_INTERVAL = +# Reporting: +#COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 +# Comment or remove next line to disable reporting sensor values to collection point +#VALUE_COLLECTION_INTERVAL = 120 +REPORT_ANOMALIES = YES diff --git a/src/sensor/sensors/transport-bytes-received b/src/sensor/sensors/transport-bytes-received index b9005b6f38..d247f6572e 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 EXPECTED_DATATYPE = numeric -# Reporting mechanism +# Reporting: #COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 -#COLLECTION_INTERVAL = 120 - -P2P_REPORT = NO -#P2P_INTERVAL = +# Comment or remove next line to disable reporting sensor values to collection point +#VALUE_COLLECTION_INTERVAL = 120 +REPORT_ANOMALIES = YES diff --git a/src/sensor/sensors/transport-http-connections b/src/sensor/sensors/transport-http-connections index 56971d44c4..6d8d7d95ad 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 EXPECTED_DATATYPE = numeric -# Reporting mechanism +# Reporting: #COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 -#COLLECTION_INTERVAL = 120 - -P2P_REPORT = NO -#P2P_INTERVAL = +# Comment or remove next line to disable reporting sensor values to collection point +#VALUE_COLLECTION_INTERVAL = 120 +REPORT_ANOMALIES = YES diff --git a/src/sensor/sensors/transport-https-connections b/src/sensor/sensors/transport-https-connections index 028b52bbac..44af29b4bd 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 EXPECTED_DATATYPE = numeric -# Reporting mechanism +# Reporting: #COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 -#COLLECTION_INTERVAL = 120 - -P2P_REPORT = NO -#P2P_INTERVAL = +# Comment or remove next line to disable reporting sensor values to collection point +#VALUE_COLLECTION_INTERVAL = 120 +REPORT_ANOMALIES = YES diff --git a/src/sensor/sensors/transport-peers-connected b/src/sensor/sensors/transport-peers-connected index d7917b6318..fd18919ba4 100644 --- a/src/sensor/sensors/transport-peers-connected +++ b/src/sensor/sensors/transport-peers-connected @@ -24,9 +24,8 @@ GNUNET_STAT_NAME = # peers connected EXPECTED_DATATYPE = numeric -# Reporting mechanism +# Reporting: #COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 -#COLLECTION_INTERVAL = 120 - -P2P_REPORT = NO -#P2P_INTERVAL = +# Comment or remove next line to disable reporting sensor values to collection point +#VALUE_COLLECTION_INTERVAL = 120 +REPORT_ANOMALIES = YES diff --git a/src/sensor/sensors/transport-tcp-bytes-transmitted b/src/sensor/sensors/transport-tcp-bytes-transmitted index 22194373da..5452d7ac0a 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 EXPECTED_DATATYPE = numeric -# Reporting mechanism +# Reporting: #COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 -#COLLECTION_INTERVAL = 120 - -P2P_REPORT = NO -#P2P_INTERVAL = +# Comment or remove next line to disable reporting sensor values to collection point +#VALUE_COLLECTION_INTERVAL = 120 +REPORT_ANOMALIES = YES diff --git a/src/sensor/sensors/transport-tcp-sessions-active b/src/sensor/sensors/transport-tcp-sessions-active index fe8527f91a..5dd9c6d352 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 EXPECTED_DATATYPE = numeric -# Reporting mechanism +# Reporting: #COLLECTION_POINT = NCEKA096482PC84GFTG61EHAVXY3BQDTPB5FANATQD5CDADJ2HP0 -#COLLECTION_INTERVAL = 120 - -P2P_REPORT = NO -#P2P_INTERVAL = +# Comment or remove next line to disable reporting sensor values to collection point +#VALUE_COLLECTION_INTERVAL = 120 +REPORT_ANOMALIES = YES |