batman-adv: Add multicast forceflood mesh genl configuration
The mesh interface can optimize the flooding of multicast packets based on the content of the global translation tables. To disable this behavior and use the broadcast-like flooding of the packets, forceflood has to be enabled. The BATADV_CMD_SET_MESH/BATADV_CMD_GET_MESH commands allow to set/get the configuration of this feature using the BATADV_ATTR_MULTICAST_FORCEFLOOD_ENABLED attribute. Setting the u8 to zero will disable this feature (allowing multicast optimizations) and setting it to something else is enabling this feature (forcing simple flooding). Signed-off-by: Sven Eckelmann <sven@narfation.org> Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
This commit is contained in:

committed by
Simon Wunderlich

parent
b85bd09109
commit
f75b56bc91
@@ -155,6 +155,7 @@ static const struct nla_policy batadv_netlink_policy[NUM_BATADV_ATTR] = {
|
||||
[BATADV_ATTR_GW_SEL_CLASS] = { .type = NLA_U32 },
|
||||
[BATADV_ATTR_HOP_PENALTY] = { .type = NLA_U8 },
|
||||
[BATADV_ATTR_LOG_LEVEL] = { .type = NLA_U32 },
|
||||
[BATADV_ATTR_MULTICAST_FORCEFLOOD_ENABLED] = { .type = NLA_U8 },
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -343,6 +344,12 @@ static int batadv_netlink_mesh_fill(struct sk_buff *msg,
|
||||
goto nla_put_failure;
|
||||
#endif /* CONFIG_BATMAN_ADV_DEBUG */
|
||||
|
||||
#ifdef CONFIG_BATMAN_ADV_MCAST
|
||||
if (nla_put_u8(msg, BATADV_ATTR_MULTICAST_FORCEFLOOD_ENABLED,
|
||||
!atomic_read(&bat_priv->multicast_mode)))
|
||||
goto nla_put_failure;
|
||||
#endif /* CONFIG_BATMAN_ADV_MCAST */
|
||||
|
||||
if (primary_if)
|
||||
batadv_hardif_put(primary_if);
|
||||
|
||||
@@ -564,6 +571,14 @@ static int batadv_netlink_set_mesh(struct sk_buff *skb, struct genl_info *info)
|
||||
}
|
||||
#endif /* CONFIG_BATMAN_ADV_DEBUG */
|
||||
|
||||
#ifdef CONFIG_BATMAN_ADV_MCAST
|
||||
if (info->attrs[BATADV_ATTR_MULTICAST_FORCEFLOOD_ENABLED]) {
|
||||
attr = info->attrs[BATADV_ATTR_MULTICAST_FORCEFLOOD_ENABLED];
|
||||
|
||||
atomic_set(&bat_priv->multicast_mode, !nla_get_u8(attr));
|
||||
}
|
||||
#endif /* CONFIG_BATMAN_ADV_MCAST */
|
||||
|
||||
batadv_netlink_notify_mesh(bat_priv);
|
||||
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user