|
@@ -528,36 +528,25 @@ static void batadv_iv_ogm_send_to_if(struct batadv_forw_packet *forw_packet,
|
|
static void batadv_iv_ogm_emit(struct batadv_forw_packet *forw_packet)
|
|
static void batadv_iv_ogm_emit(struct batadv_forw_packet *forw_packet)
|
|
{
|
|
{
|
|
struct net_device *soft_iface;
|
|
struct net_device *soft_iface;
|
|
- struct batadv_priv *bat_priv;
|
|
|
|
- struct batadv_hard_iface *primary_if = NULL;
|
|
|
|
|
|
|
|
if (!forw_packet->if_incoming) {
|
|
if (!forw_packet->if_incoming) {
|
|
pr_err("Error - can't forward packet: incoming iface not specified\n");
|
|
pr_err("Error - can't forward packet: incoming iface not specified\n");
|
|
- goto out;
|
|
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
|
|
|
|
soft_iface = forw_packet->if_incoming->soft_iface;
|
|
soft_iface = forw_packet->if_incoming->soft_iface;
|
|
- bat_priv = netdev_priv(soft_iface);
|
|
|
|
|
|
|
|
if (WARN_ON(!forw_packet->if_outgoing))
|
|
if (WARN_ON(!forw_packet->if_outgoing))
|
|
- goto out;
|
|
|
|
|
|
+ return;
|
|
|
|
|
|
if (WARN_ON(forw_packet->if_outgoing->soft_iface != soft_iface))
|
|
if (WARN_ON(forw_packet->if_outgoing->soft_iface != soft_iface))
|
|
- goto out;
|
|
|
|
|
|
+ return;
|
|
|
|
|
|
if (forw_packet->if_incoming->if_status != BATADV_IF_ACTIVE)
|
|
if (forw_packet->if_incoming->if_status != BATADV_IF_ACTIVE)
|
|
- goto out;
|
|
|
|
-
|
|
|
|
- primary_if = batadv_primary_if_get_selected(bat_priv);
|
|
|
|
- if (!primary_if)
|
|
|
|
- goto out;
|
|
|
|
|
|
+ return;
|
|
|
|
|
|
/* only for one specific outgoing interface */
|
|
/* only for one specific outgoing interface */
|
|
batadv_iv_ogm_send_to_if(forw_packet, forw_packet->if_outgoing);
|
|
batadv_iv_ogm_send_to_if(forw_packet, forw_packet->if_outgoing);
|
|
-
|
|
|
|
-out:
|
|
|
|
- if (primary_if)
|
|
|
|
- batadv_hardif_put(primary_if);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|