Merge branch 'master' into mpr_rework
authorHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Mon, 13 Feb 2017 07:17:37 +0000 (08:17 +0100)
committerHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Mon, 13 Feb 2017 07:17:37 +0000 (08:17 +0100)
1  2 
src-plugins/nhdp/ff_dat_metric/ff_dat_metric.c
src-plugins/nhdp/mpr/mpr.c
src-plugins/nhdp/mpr/neighbor-graph-flooding.c
src-plugins/nhdp/mpr/neighbor-graph-routing.c
src-plugins/nhdp/nhdp/nhdp_db.c
src-plugins/nhdp/nhdp/nhdp_db.h
src-plugins/nhdp/nhdp/nhdp_domain.h
src-plugins/nhdp/nhdp/nhdp_writer.c

@@@ -272,9 -288,13 +271,12 @@@ _validate_mpr_set(const struct nhdp_dom
      }
    }
  
 -  avl_for_each_element(&graph->set_n2, n2_addr, _avl_node)
 -  {
 +  avl_for_each_element(&graph->set_n2, n2_addr, _avl_node) {
      d_y_n1 = mpr_calculate_d_of_y_s(domain, graph, n2_addr, &graph->set_n1);
      d_y_mpr = mpr_calculate_d_of_y_s(domain, graph, n2_addr, &graph->set_mpr);
+     
+     OONF_DEBUG(LOG_MPR, "d_y_n1 = %u", d_y_n1);
+     OONF_DEBUG(LOG_MPR, "d_y_mpr = %u", d_y_mpr);
  
      /*
       * Second property: For any y in N2 that does not have a defined d1(y), 
@@@ -244,8 -266,12 +266,13 @@@ _calculate_n1(const struct nhdp_domain 
    OONF_DEBUG(LOG_MPR, "Calculate N1 for routing MPRs");
    
    list_for_each_element(nhdp_db_get_neigh_list(), neigh, _global_node) {
+     // Reset temporary selection state 
++
+     neigh->selection_is_mpr = false;
      if (_is_allowed_neighbor_tuple(domain, neigh)) {
-       mpr_add_n1_node_to_set(&graph->set_n1, neigh, NULL);
+       OONF_DEBUG(LOG_MPR, "Add neighbor %s in: %u", netaddr_to_string(&buf1, &neigh->originator),
+                  neigh->_domaindata[0].metric.in);
+       mpr_add_n1_node_to_set(&graph->set_n1, neigh, NULL, 0);
      }
    }
  }
Simple merge
@@@ -302,6 -284,24 +302,15 @@@ struct nhdp_neighbor 
    /*! internal field for NHDP processing */
    int _process_count;
  
++  /*! true if the neighbor has been selected as an MPR during selection algorithm */
++  bool selection_is_mpr;
++
+   /*!
+    * originator address of this node before it was changed.
+    * Mostly used in CHANGE events
+    */
+   struct netaddr _old_originator;
    /*! list of links for this neighbor */
    struct list_entity _links;
  
@@@ -295,7 -286,9 +295,7 @@@ EXPORT void nhdp_domain_process_metric_
  EXPORT void nhdp_domain_process_metric_2hoptlv(struct nhdp_domain *d,
      struct nhdp_l2hop *l2hop, const uint8_t *value);
  
- EXPORT void nhdp_domain_recalculate_mpr(bool force_update);
 -EXPORT void nhdp_domain_recalculate_mpr(void);
 -EXPORT void nhdp_domain_neighborhood_changed(void);
 -EXPORT void nhdp_domain_neighbor_changed(struct nhdp_neighbor *neigh);
++EXPORT void nhdp_domain_recalculate_mpr(bool force_change);
  EXPORT bool nhdp_domain_node_is_mpr(void);
  
  EXPORT size_t nhdp_domain_process_mprtypes_tlv(
@@@ -172,6 -172,8 +172,8 @@@ nhdp_writer_send_hello(struct nhdp_inte
    OONF_DEBUG(LOG_NHDP_W, "Sending Hello to interface %s",
        nhdp_interface_get_name(ninterf));
  
 -  nhdp_domain_recalculate_mpr();
++  nhdp_domain_recalculate_mpr(false);
    /* store NHDP interface */
    _nhdp_if = ninterf;