Switch DLEP default values to new "generic type" data of layer2 subsystem
authorHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Wed, 18 Oct 2017 07:12:47 +0000 (09:12 +0200)
committerHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Wed, 18 Oct 2017 07:12:47 +0000 (09:12 +0200)
src-plugins/generic/dlep/dlep_extension.c
src-plugins/generic/dlep/dlep_extension.h
src-plugins/generic/dlep/dlep_writer.c
src-plugins/generic/dlep/ext_base_metric/metric.c

index ff3b872..ec67a4a 100644 (file)
@@ -254,9 +254,11 @@ int
 dlep_extension_radio_write_session_init_ack(
     struct dlep_extension *ext, struct dlep_session *session,
     const struct netaddr *neigh __attribute__((unused))) {
+  const struct oonf_layer2_metadata *meta;
   struct oonf_layer2_net *l2net;
   struct oonf_layer2_data *l2data;
   size_t i;
+  int idx;
   int result;
 
   /* first make sure defaults are set correctly */
@@ -272,13 +274,14 @@ dlep_extension_radio_write_session_init_ack(
       continue;
     }
 
-    l2data = &l2net->neighdata[ext->neigh_mapping[i].layer2];
+    idx = ext->neigh_mapping[i].layer2;
+    l2data = &l2net->neighdata[idx];
 
 
     if (!oonf_layer2_data_has_value(l2data)) {
-      // TODO: is this always int64?
-      oonf_layer2_data_set_int64(l2data, session->l2_origin,
-          ext->neigh_mapping[i].default_value);
+      meta = oonf_layer2_neigh_metadata_get(idx);
+      oonf_layer2_data_set(l2data, session->l2_origin,
+          meta->type, &ext->neigh_mapping[i].default_value);
     }
   }
 
@@ -288,12 +291,13 @@ dlep_extension_radio_write_session_init_ack(
       continue;
     }
 
-    l2data = &l2net->data[ext->if_mapping[i].layer2];
+    idx = ext->if_mapping[i].layer2;
+    l2data = &l2net->data[idx];
 
     if (!oonf_layer2_data_has_value(l2data)) {
-      // TODO: is this always int64?
-      oonf_layer2_data_set_int64(l2data, session->l2_origin,
-          ext->if_mapping[i].default_value);
+      meta = oonf_layer2_net_metadata_get(idx);
+      oonf_layer2_data_set(l2data, session->l2_origin,
+          meta->type, &ext->if_mapping[i].default_value);
     }
   }
 
index f866590..820059c 100644 (file)
@@ -184,7 +184,7 @@ struct dlep_neighbor_mapping {
   bool mandatory;
 
   /*! default value for mandatory TLVs */
-  uint64_t default_value;
+  union oonf_layer2_value default_value;
 
   /**
    * callback to transform a TLV into layer2 data
@@ -231,7 +231,7 @@ struct dlep_network_mapping {
   bool mandatory;
 
   /*! default value for mandatory TLVs */
-  uint64_t default_value;
+  union oonf_layer2_value default_value;
 
   /**
    * callback to transform a TLV into layer2 data
index 7ca6cba..2b00276 100644 (file)
@@ -392,14 +392,14 @@ dlep_writer_map_identity(struct dlep_writer *writer,
   uint8_t tmp8;
   void *value;
 
-  if (meta->type != oonf_layer2_data_get_type(data)) {
-    /* bad data type */
-    return -1;
-  }
   if (!oonf_layer2_data_has_value(data)) {
     /* no data available */
     return 0;
   }
+  if (meta->type != oonf_layer2_data_get_type(data)) {
+    /* bad data type */
+    return -1;
+  }
 
   switch (oonf_layer2_data_get_type(data)) {
     case OONF_LAYER2_INTEGER_DATA:
index c4d151b..a4b4d0b 100644 (file)
@@ -162,7 +162,7 @@ static struct dlep_neighbor_mapping _neigh_mappings[] = {
         .length        = 8,
 
         .mandatory     = true,
-        .default_value = 0,
+        .default_value.integer = 0,
 
         .from_tlv      = dlep_reader_map_identity,
         .to_tlv        = dlep_writer_map_identity,
@@ -173,7 +173,7 @@ static struct dlep_neighbor_mapping _neigh_mappings[] = {
         .length        = 8,
 
         .mandatory     = true,
-        .default_value = 0,
+        .default_value.integer = 0,
 
         .from_tlv      = dlep_reader_map_identity,
         .to_tlv        = dlep_writer_map_identity,
@@ -184,7 +184,7 @@ static struct dlep_neighbor_mapping _neigh_mappings[] = {
         .length        = 8,
 
         .mandatory     = true,
-        .default_value = 0,
+        .default_value.integer = 0,
 
         .from_tlv      = dlep_reader_map_identity,
         .to_tlv        = dlep_writer_map_identity,
@@ -195,7 +195,7 @@ static struct dlep_neighbor_mapping _neigh_mappings[] = {
         .length        = 8,
 
         .mandatory     = true,
-        .default_value = 0,
+        .default_value.integer = 0,
 
         .from_tlv      = dlep_reader_map_identity,
         .to_tlv        = dlep_writer_map_identity,
@@ -206,7 +206,7 @@ static struct dlep_neighbor_mapping _neigh_mappings[] = {
         .length   = 8,
 
         .mandatory     = true,
-        .default_value = 1,
+        .default_value.integer = 1,
 
         .from_tlv      = dlep_reader_map_identity,
         .to_tlv        = dlep_writer_map_identity,