Skip to content

Commit eceb22a

Browse files
committed
batman-adv: create helper function to get AP isolation status
The AP isolation status may be evaluated in different spots. Create an helper function to avoid code duplication. Signed-off-by: Antonio Quartulli <[email protected]> Signed-off-by: Marek Lindner <[email protected]>
1 parent 2d2fcc2 commit eceb22a

File tree

3 files changed

+28
-12
lines changed

3 files changed

+28
-12
lines changed

net/batman-adv/main.c

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1171,6 +1171,32 @@ unsigned short batadv_get_vid(struct sk_buff *skb, size_t header_len)
11711171
return vid;
11721172
}
11731173

1174+
/**
1175+
* batadv_vlan_ap_isola_get - return the AP isolation status for the given vlan
1176+
* @bat_priv: the bat priv with all the soft interface information
1177+
* @vid: the VLAN identifier for which the AP isolation attributed as to be
1178+
* looked up
1179+
*
1180+
* Returns true if AP isolation is on for the VLAN idenfied by vid, false
1181+
* otherwise
1182+
*/
1183+
bool batadv_vlan_ap_isola_get(struct batadv_priv *bat_priv, unsigned short vid)
1184+
{
1185+
bool ap_isolation_enabled = false;
1186+
struct batadv_softif_vlan *vlan;
1187+
1188+
/* if the AP isolation is requested on a VLAN, then check for its
1189+
* setting in the proper VLAN private data structure
1190+
*/
1191+
vlan = batadv_softif_vlan_get(bat_priv, vid);
1192+
if (vlan) {
1193+
ap_isolation_enabled = atomic_read(&vlan->ap_isolation);
1194+
batadv_softif_vlan_free_ref(vlan);
1195+
}
1196+
1197+
return ap_isolation_enabled;
1198+
}
1199+
11741200
static int batadv_param_set_ra(const char *val, const struct kernel_param *kp)
11751201
{
11761202
struct batadv_algo_ops *bat_algo_ops;

net/batman-adv/main.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,5 +369,6 @@ void batadv_tvlv_unicast_send(struct batadv_priv *bat_priv, uint8_t *src,
369369
uint8_t *dst, uint8_t type, uint8_t version,
370370
void *tvlv_value, uint16_t tvlv_value_len);
371371
unsigned short batadv_get_vid(struct sk_buff *skb, size_t header_len);
372+
bool batadv_vlan_ap_isola_get(struct batadv_priv *bat_priv, unsigned short vid);
372373

373374
#endif /* _NET_BATMAN_ADV_MAIN_H_ */

net/batman-adv/translation-table.c

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1900,19 +1900,8 @@ struct batadv_orig_node *batadv_transtable_search(struct batadv_priv *bat_priv,
19001900
struct batadv_tt_global_entry *tt_global_entry = NULL;
19011901
struct batadv_orig_node *orig_node = NULL;
19021902
struct batadv_tt_orig_list_entry *best_entry;
1903-
bool ap_isolation_enabled = false;
1904-
struct batadv_softif_vlan *vlan;
1905-
1906-
/* if the AP isolation is requested on a VLAN, then check for its
1907-
* setting in the proper VLAN private data structure
1908-
*/
1909-
vlan = batadv_softif_vlan_get(bat_priv, vid);
1910-
if (vlan) {
1911-
ap_isolation_enabled = atomic_read(&vlan->ap_isolation);
1912-
batadv_softif_vlan_free_ref(vlan);
1913-
}
19141903

1915-
if (src && ap_isolation_enabled) {
1904+
if (src && batadv_vlan_ap_isola_get(bat_priv, vid)) {
19161905
tt_local_entry = batadv_tt_local_hash_find(bat_priv, src, vid);
19171906
if (!tt_local_entry ||
19181907
(tt_local_entry->common.flags & BATADV_TT_CLIENT_PENDING))

0 commit comments

Comments
 (0)