gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r34105 - in gnunet/src: include sensor sensor/sensors


From: gnunet
Subject: [GNUnet-SVN] r34105 - in gnunet/src: include sensor sensor/sensors
Date: Mon, 4 Aug 2014 15:55:10 +0200

Author: otarabai
Date: 2014-08-04 15:55:10 +0200 (Mon, 04 Aug 2014)
New Revision: 34105

Modified:
   gnunet/src/include/gnunet_sensor_util_lib.h
   gnunet/src/sensor/gnunet-service-sensor-analysis.c
   gnunet/src/sensor/gnunet-service-sensor-reporting.c
   gnunet/src/sensor/gnunet-service-sensor.c
   gnunet/src/sensor/sensor.conf.in
   gnunet/src/sensor/sensor.h
   gnunet/src/sensor/sensor_util_lib.c
   gnunet/src/sensor/sensors/average-ping-rtt
   gnunet/src/sensor/sensors/core-peers-connected
   gnunet/src/sensor/sensors/datacache-bytes-stored
   gnunet/src/sensor/sensors/dht-peers-connected
   gnunet/src/sensor/sensors/fs-peers-connected
   gnunet/src/sensor/sensors/gnunet-version
   gnunet/src/sensor/sensors/known-peers
   gnunet/src/sensor/sensors/nse
   gnunet/src/sensor/sensors/peerstore-memory
   gnunet/src/sensor/sensors/transport-bytes-received
   gnunet/src/sensor/sensors/transport-http-connections
   gnunet/src/sensor/sensors/transport-https-connections
   gnunet/src/sensor/sensors/transport-peers-connected
   gnunet/src/sensor/sensors/transport-tcp-bytes-transmitted
   gnunet/src/sensor/sensors/transport-tcp-sessions-active
Log:
sensor: towards p2p anomaly reporting


Modified: gnunet/src/include/gnunet_sensor_util_lib.h
===================================================================
--- gnunet/src/include/gnunet_sensor_util_lib.h 2014-08-04 11:06:52 UTC (rev 
34104)
+++ gnunet/src/include/gnunet_sensor_util_lib.h 2014-08-04 13:55:10 UTC (rev 
34105)
@@ -47,78 +47,78 @@
    */
   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_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 @@
 };
 
 GNUNET_NETWORK_STRUCT_END
+
 /**
  * Given two version numbers as major and minor, compare them.
  *

Modified: gnunet/src/sensor/gnunet-service-sensor-analysis.c
===================================================================
--- gnunet/src/sensor/gnunet-service-sensor-analysis.c  2014-08-04 11:06:52 UTC 
(rev 34104)
+++ gnunet/src/sensor/gnunet-service-sensor-analysis.c  2014-08-04 13:55:10 UTC 
(rev 34105)
@@ -31,36 +31,52 @@
 
 #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 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 @@
 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 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 @@
     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 @@
   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_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;

Modified: gnunet/src/sensor/gnunet-service-sensor-reporting.c
===================================================================
--- gnunet/src/sensor/gnunet-service-sensor-reporting.c 2014-08-04 11:06:52 UTC 
(rev 34104)
+++ gnunet/src/sensor/gnunet-service-sensor-reporting.c 2014-08-04 13:55:10 UTC 
(rev 34105)
@@ -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 @@
 /**
  * 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 @@
  * 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 @@
 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 @@
     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 @@
  * @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 @@
   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 @@
 /**
  * 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 @@
 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 @@
                        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;
 }
 

Modified: gnunet/src/sensor/gnunet-service-sensor.c
===================================================================
--- gnunet/src/sensor/gnunet-service-sensor.c   2014-08-04 11:06:52 UTC (rev 
34104)
+++ gnunet/src/sensor/gnunet-service-sensor.c   2014-08-04 13:55:10 UTC (rev 
34105)
@@ -554,7 +554,7 @@
   else
   {
     sensorinfo->running = GNUNET_NO;
-    GNUNET_break (0);           //shouldn't happen
+    GNUNET_break (0);           /* shouldn't happen */
   }
 }
 
@@ -596,7 +596,6 @@
 
 /**
  * Starts the execution of all enabled sensors
- *
  */
 static void
 schedule_all_sensors ()

Modified: gnunet/src/sensor/sensor.conf.in
===================================================================
--- gnunet/src/sensor/sensor.conf.in    2014-08-04 11:06:52 UTC (rev 34104)
+++ gnunet/src/sensor/sensor.conf.in    2014-08-04 13:55:10 UTC (rev 34105)
@@ -9,7 +9,10 @@
 #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

Modified: gnunet/src/sensor/sensor.h
===================================================================
--- gnunet/src/sensor/sensor.h  2014-08-04 11:06:52 UTC (rev 34104)
+++ gnunet/src/sensor/sensor.h  2014-08-04 13:55:10 UTC (rev 34105)
@@ -61,7 +61,6 @@
 };
 
 GNUNET_NETWORK_STRUCT_END
-
 /**
  * Stop the sensor analysis module
  */
@@ -117,5 +116,4 @@
  */
 int
 SENSOR_update_start (const struct GNUNET_CONFIGURATION_Handle *c,
-                     struct GNUNET_CONTAINER_MultiHashMap *s,
-                     void (*cb) ());
+                     struct GNUNET_CONTAINER_MultiHashMap *s, void (*cb) ());

Modified: gnunet/src/sensor/sensor_util_lib.c
===================================================================
--- gnunet/src/sensor/sensor_util_lib.c 2014-08-04 11:06:52 UTC (rev 34104)
+++ gnunet/src/sensor/sensor_util_lib.c 2014-08-04 13:55:10 UTC (rev 34105)
@@ -150,8 +150,6 @@
                                              &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 @@
                                              &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 @@
     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))
+    if (GNUNET_OK ==
+        GNUNET_CRYPTO_eddsa_public_key_from_string (dummy, strlen (dummy),
+                                                    &public_key))
     {
-      LOG (GNUNET_ERROR_TYPE_ERROR,
-           _("Error reading sensor collection interval\n"));
-    }
-    else
-    {
-      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 @@
        "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);

Modified: gnunet/src/sensor/sensors/average-ping-rtt
===================================================================
--- gnunet/src/sensor/sensors/average-ping-rtt  2014-08-04 11:06:52 UTC (rev 
34104)
+++ gnunet/src/sensor/sensors/average-ping-rtt  2014-08-04 13:55:10 UTC (rev 
34105)
@@ -24,9 +24,8 @@
 
 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

Modified: gnunet/src/sensor/sensors/core-peers-connected
===================================================================
--- gnunet/src/sensor/sensors/core-peers-connected      2014-08-04 11:06:52 UTC 
(rev 34104)
+++ gnunet/src/sensor/sensors/core-peers-connected      2014-08-04 13:55:10 UTC 
(rev 34105)
@@ -24,9 +24,8 @@
 
 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

Modified: gnunet/src/sensor/sensors/datacache-bytes-stored
===================================================================
--- gnunet/src/sensor/sensors/datacache-bytes-stored    2014-08-04 11:06:52 UTC 
(rev 34104)
+++ gnunet/src/sensor/sensors/datacache-bytes-stored    2014-08-04 13:55:10 UTC 
(rev 34105)
@@ -24,9 +24,8 @@
 
 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

Modified: gnunet/src/sensor/sensors/dht-peers-connected
===================================================================
--- gnunet/src/sensor/sensors/dht-peers-connected       2014-08-04 11:06:52 UTC 
(rev 34104)
+++ gnunet/src/sensor/sensors/dht-peers-connected       2014-08-04 13:55:10 UTC 
(rev 34105)
@@ -24,9 +24,8 @@
 
 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

Modified: gnunet/src/sensor/sensors/fs-peers-connected
===================================================================
--- gnunet/src/sensor/sensors/fs-peers-connected        2014-08-04 11:06:52 UTC 
(rev 34104)
+++ gnunet/src/sensor/sensors/fs-peers-connected        2014-08-04 13:55:10 UTC 
(rev 34105)
@@ -24,9 +24,8 @@
 
 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

Modified: gnunet/src/sensor/sensors/gnunet-version
===================================================================
--- gnunet/src/sensor/sensors/gnunet-version    2014-08-04 11:06:52 UTC (rev 
34104)
+++ gnunet/src/sensor/sensors/gnunet-version    2014-08-04 13:55:10 UTC (rev 
34105)
@@ -24,9 +24,8 @@
 
 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

Modified: gnunet/src/sensor/sensors/known-peers
===================================================================
--- gnunet/src/sensor/sensors/known-peers       2014-08-04 11:06:52 UTC (rev 
34104)
+++ gnunet/src/sensor/sensors/known-peers       2014-08-04 13:55:10 UTC (rev 
34105)
@@ -24,9 +24,8 @@
 
 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

Modified: gnunet/src/sensor/sensors/nse
===================================================================
--- gnunet/src/sensor/sensors/nse       2014-08-04 11:06:52 UTC (rev 34104)
+++ gnunet/src/sensor/sensors/nse       2014-08-04 13:55:10 UTC (rev 34105)
@@ -24,9 +24,8 @@
 
 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

Modified: gnunet/src/sensor/sensors/peerstore-memory
===================================================================
--- gnunet/src/sensor/sensors/peerstore-memory  2014-08-04 11:06:52 UTC (rev 
34104)
+++ gnunet/src/sensor/sensors/peerstore-memory  2014-08-04 13:55:10 UTC (rev 
34105)
@@ -24,9 +24,8 @@
 
 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

Modified: gnunet/src/sensor/sensors/transport-bytes-received
===================================================================
--- gnunet/src/sensor/sensors/transport-bytes-received  2014-08-04 11:06:52 UTC 
(rev 34104)
+++ gnunet/src/sensor/sensors/transport-bytes-received  2014-08-04 13:55:10 UTC 
(rev 34105)
@@ -24,9 +24,8 @@
 
 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

Modified: gnunet/src/sensor/sensors/transport-http-connections
===================================================================
--- gnunet/src/sensor/sensors/transport-http-connections        2014-08-04 
11:06:52 UTC (rev 34104)
+++ gnunet/src/sensor/sensors/transport-http-connections        2014-08-04 
13:55:10 UTC (rev 34105)
@@ -24,9 +24,8 @@
 
 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

Modified: gnunet/src/sensor/sensors/transport-https-connections
===================================================================
--- gnunet/src/sensor/sensors/transport-https-connections       2014-08-04 
11:06:52 UTC (rev 34104)
+++ gnunet/src/sensor/sensors/transport-https-connections       2014-08-04 
13:55:10 UTC (rev 34105)
@@ -24,9 +24,8 @@
 
 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

Modified: gnunet/src/sensor/sensors/transport-peers-connected
===================================================================
--- gnunet/src/sensor/sensors/transport-peers-connected 2014-08-04 11:06:52 UTC 
(rev 34104)
+++ gnunet/src/sensor/sensors/transport-peers-connected 2014-08-04 13:55:10 UTC 
(rev 34105)
@@ -24,9 +24,8 @@
 
 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

Modified: gnunet/src/sensor/sensors/transport-tcp-bytes-transmitted
===================================================================
--- gnunet/src/sensor/sensors/transport-tcp-bytes-transmitted   2014-08-04 
11:06:52 UTC (rev 34104)
+++ gnunet/src/sensor/sensors/transport-tcp-bytes-transmitted   2014-08-04 
13:55:10 UTC (rev 34105)
@@ -24,9 +24,8 @@
 
 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

Modified: gnunet/src/sensor/sensors/transport-tcp-sessions-active
===================================================================
--- gnunet/src/sensor/sensors/transport-tcp-sessions-active     2014-08-04 
11:06:52 UTC (rev 34104)
+++ gnunet/src/sensor/sensors/transport-tcp-sessions-active     2014-08-04 
13:55:10 UTC (rev 34105)
@@ -24,9 +24,8 @@
 
 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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]