batman-adv: add bat_hardif_neigh_init algo ops call
authorMarek Lindner <mareklindner@neomailbox.ch>
Tue, 4 Aug 2015 13:09:56 +0000 (21:09 +0800)
committerAntonio Quartulli <a@unstable.cc>
Tue, 15 Dec 2015 16:21:41 +0000 (00:21 +0800)
Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
net/batman-adv/originator.c
net/batman-adv/types.h

index a8671c6567424ccf7bcc2ae4da59a27b8183b0ce..27dd326f93ad47e9828528bfed671456a04062cc 100644 (file)
@@ -539,6 +539,7 @@ static struct batadv_hardif_neigh_node *
 batadv_hardif_neigh_create(struct batadv_hard_iface *hard_iface,
                           const u8 *neigh_addr)
 {
+       struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface);
        struct batadv_hardif_neigh_node *hardif_neigh = NULL;
 
        spin_lock_bh(&hard_iface->neigh_list_lock);
@@ -564,6 +565,9 @@ batadv_hardif_neigh_create(struct batadv_hard_iface *hard_iface,
 
        atomic_set(&hardif_neigh->refcount, 1);
 
+       if (bat_priv->bat_algo_ops->bat_hardif_neigh_init)
+               bat_priv->bat_algo_ops->bat_hardif_neigh_init(hardif_neigh);
+
        hlist_add_head(&hardif_neigh->list, &hard_iface->neigh_list);
 
 out:
index 71c7d9f1f79fae43df74f4695afb40b48ccb4f54..838d55ef546ad4f20a35a8afef5105acc0bb8296 100644 (file)
@@ -1153,6 +1153,7 @@ struct batadv_forw_packet {
  * @bat_primary_iface_set: called when primary interface is selected / changed
  * @bat_ogm_schedule: prepare a new outgoing OGM for the send queue
  * @bat_ogm_emit: send scheduled OGM
+ * @bat_hardif_neigh_init: called on creation of single hop entry
  * @bat_neigh_cmp: compare the metrics of two neighbors for their respective
  *  outgoing interfaces
  * @bat_neigh_is_equiv_or_better: check if neigh1 is equally good or better
@@ -1178,6 +1179,7 @@ struct batadv_algo_ops {
        void (*bat_ogm_schedule)(struct batadv_hard_iface *hard_iface);
        void (*bat_ogm_emit)(struct batadv_forw_packet *forw_packet);
        /* neigh_node handling API */
+       void (*bat_hardif_neigh_init)(struct batadv_hardif_neigh_node *neigh);
        int (*bat_neigh_cmp)(struct batadv_neigh_node *neigh1,
                             struct batadv_hard_iface *if_outgoing1,
                             struct batadv_neigh_node *neigh2,