Commit 00a50076 authored by Marek Lindner's avatar Marek Lindner Committed by Antonio Quartulli

batman-adv: add iface_disable() callback to routing API

Signed-off-by: default avatarMarek Lindner <lindner_marek@yahoo.de>
Signed-off-by: default avatarAntonio Quartulli <ordex@autistici.org>
parent d7d32ec0
...@@ -52,6 +52,12 @@ static void bat_iv_ogm_iface_enable(struct hard_iface *hard_iface) ...@@ -52,6 +52,12 @@ static void bat_iv_ogm_iface_enable(struct hard_iface *hard_iface)
batman_ogm_packet->ttvn = 0; batman_ogm_packet->ttvn = 0;
} }
static void bat_iv_ogm_iface_disable(struct hard_iface *hard_iface)
{
kfree(hard_iface->packet_buff);
hard_iface->packet_buff = NULL;
}
static void bat_iv_ogm_init_primary(struct hard_iface *hard_iface) static void bat_iv_ogm_init_primary(struct hard_iface *hard_iface)
{ {
struct batman_ogm_packet *batman_ogm_packet; struct batman_ogm_packet *batman_ogm_packet;
...@@ -1175,6 +1181,7 @@ static void bat_iv_ogm_receive(struct hard_iface *if_incoming, ...@@ -1175,6 +1181,7 @@ static void bat_iv_ogm_receive(struct hard_iface *if_incoming,
static struct bat_algo_ops batman_iv __read_mostly = { static struct bat_algo_ops batman_iv __read_mostly = {
.name = "BATMAN IV", .name = "BATMAN IV",
.bat_iface_enable = bat_iv_ogm_iface_enable, .bat_iface_enable = bat_iv_ogm_iface_enable,
.bat_iface_disable = bat_iv_ogm_iface_disable,
.bat_ogm_init_primary = bat_iv_ogm_init_primary, .bat_ogm_init_primary = bat_iv_ogm_init_primary,
.bat_ogm_update_mac = bat_iv_ogm_update_mac, .bat_ogm_update_mac = bat_iv_ogm_update_mac,
.bat_ogm_schedule = bat_iv_ogm_schedule, .bat_ogm_schedule = bat_iv_ogm_schedule,
......
...@@ -397,8 +397,7 @@ void hardif_disable_interface(struct hard_iface *hard_iface) ...@@ -397,8 +397,7 @@ void hardif_disable_interface(struct hard_iface *hard_iface)
hardif_free_ref(new_if); hardif_free_ref(new_if);
} }
kfree(hard_iface->packet_buff); bat_priv->bat_algo_ops->bat_iface_disable(hard_iface);
hard_iface->packet_buff = NULL;
hard_iface->if_status = IF_NOT_IN_USE; hard_iface->if_status = IF_NOT_IN_USE;
/* delete all references to this hard_iface */ /* delete all references to this hard_iface */
......
...@@ -209,6 +209,7 @@ int bat_algo_register(struct bat_algo_ops *bat_algo_ops) ...@@ -209,6 +209,7 @@ int bat_algo_register(struct bat_algo_ops *bat_algo_ops)
/* all algorithms must implement all ops (for now) */ /* all algorithms must implement all ops (for now) */
if (!bat_algo_ops->bat_iface_enable || if (!bat_algo_ops->bat_iface_enable ||
!bat_algo_ops->bat_iface_disable ||
!bat_algo_ops->bat_ogm_init_primary || !bat_algo_ops->bat_ogm_init_primary ||
!bat_algo_ops->bat_ogm_update_mac || !bat_algo_ops->bat_ogm_update_mac ||
!bat_algo_ops->bat_ogm_schedule || !bat_algo_ops->bat_ogm_schedule ||
......
...@@ -379,6 +379,8 @@ struct bat_algo_ops { ...@@ -379,6 +379,8 @@ struct bat_algo_ops {
char *name; char *name;
/* init routing info when hard-interface is enabled */ /* init routing info when hard-interface is enabled */
void (*bat_iface_enable)(struct hard_iface *hard_iface); void (*bat_iface_enable)(struct hard_iface *hard_iface);
/* de-init routing info when hard-interface is disabled */
void (*bat_iface_disable)(struct hard_iface *hard_iface);
/* init primary OGM when primary interface is selected */ /* init primary OGM when primary interface is selected */
void (*bat_ogm_init_primary)(struct hard_iface *hard_iface); void (*bat_ogm_init_primary)(struct hard_iface *hard_iface);
/* init mac addresses of the OGM belonging to this hard-interface */ /* init mac addresses of the OGM belonging to this hard-interface */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment