Allow metric plugins to define the layer2-data items they need.
authorHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Fri, 1 Dec 2017 06:58:28 +0000 (07:58 +0100)
committerHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Fri, 1 Dec 2017 06:58:28 +0000 (07:58 +0100)
src-plugins/nhdp/ff_dat_metric/ff_dat_metric.c
src-plugins/nhdp/nhdp/nhdp_domain.h

index ff76632..85d5e79 100644 (file)
@@ -298,6 +298,10 @@ static struct oonf_timer_class _hello_lost_info = {
 };
 
 /* nhdp metric handler */
+static const enum oonf_layer2_neighbor_index _required_l2neigh[] = {
+  OONF_LAYER2_NEIGH_RX_BITRATE,
+};
+
 static struct nhdp_domain_metric _datff_handler = {
   .name = OONF_FF_DAT_METRIC_SUBSYSTEM,
 
@@ -310,6 +314,9 @@ static struct nhdp_domain_metric _datff_handler = {
 
   .enable = _cb_enable_metric,
   .disable = _cb_disable_metric,
+
+  .required_l2neigh_data = _required_l2neigh,
+  .required_l2neigh_count = ARRAYSIZE(_required_l2neigh),
 };
 
 /* Temporary buffer to sort incoming link speed for median calculation */
index 5d06d70..8258fa4 100644 (file)
@@ -49,6 +49,7 @@
 #include "common/common_types.h"
 #include "common/list.h"
 #include "subsystems/oonf_rfc5444.h"
+#include "subsystems/oonf_layer2.h"
 
 #include "nhdp/nhdp_interfaces.h"
 #include "nhdp/nhdp_db.h"
@@ -103,6 +104,18 @@ struct nhdp_domain_metric {
   /*! true if metrics should not be handled by nhdp reader/writer */
   bool no_default_handling;
 
+  /*! array of layer2 interface values this metric requires */
+  const enum oonf_layer2_network_index *required_l2net_data;
+
+  /*! number of required layer2 interface values */
+  size_t required_l2net_count;
+
+  /*! array of layer2 neighbor values this metric requires */
+  const enum oonf_layer2_neighbor_index *required_l2neigh_data;
+
+  /*! number of required layer2 neighbor values */
+  size_t required_l2neigh_count;
+
   /**
    * callback to convert link metric into string representation
    * @param buf buffer to put string into