All of lore.kernel.org
 help / color / mirror / Atom feed
From: Antonio Quartulli <antonio@meshcoding.com>
To: b.a.t.m.a.n@lists.open-mesh.org
Cc: Antonio Quartulli <antonio@open-mesh.com>
Subject: [B.A.T.M.A.N.] [PATCHv3 5/6] batman-adv: create helper function to get AP isolation status
Date: Sat, 16 Nov 2013 12:03:51 +0100	[thread overview]
Message-ID: <1384599832-3959-6-git-send-email-antonio@meshcoding.com> (raw)
In-Reply-To: <1384599832-3959-1-git-send-email-antonio@meshcoding.com>

From: Antonio Quartulli <antonio@open-mesh.com>

The AP isolation status may be evaluated in different spots.
Create an helper function to avoid code duplication.

Signed-off-by: Antonio Quartulli <antonio@open-mesh.com>
---
 main.c              | 26 ++++++++++++++++++++++++++
 main.h              |  1 +
 translation-table.c | 13 +------------
 3 files changed, 28 insertions(+), 12 deletions(-)

diff --git a/main.c b/main.c
index d51bc5f..a7da5ea 100644
--- a/main.c
+++ b/main.c
@@ -1168,6 +1168,32 @@ unsigned short batadv_get_vid(struct sk_buff *skb, size_t header_len)
 	return vid;
 }
 
+/**
+ * batadv_vlan_ap_isola_get - return the AP isolation status for the given vlan
+ * @bat_priv: the bat priv with all the soft interface information
+ * @vid: the VLAN identifier for which the AP isolation attributed as to be
+ *  looked up
+ *
+ * Returns true if AP isolation is on for the VLAN idenfied by vid, false
+ * otherwise
+ */
+bool batadv_vlan_ap_isola_get(struct batadv_priv *bat_priv, unsigned short vid)
+{
+	bool ap_isolation_enabled = false;
+	struct batadv_softif_vlan *vlan;
+
+	/* if the AP isolation is requested on a VLAN, then check for its
+	 * setting in the proper VLAN private data structure
+	 */
+	vlan = batadv_softif_vlan_get(bat_priv, vid);
+	if (vlan) {
+		ap_isolation_enabled = atomic_read(&vlan->ap_isolation);
+		batadv_softif_vlan_free_ref(vlan);
+	}
+
+	return ap_isolation_enabled;
+}
+
 static int batadv_param_set_ra(const char *val, const struct kernel_param *kp)
 {
 	struct batadv_algo_ops *bat_algo_ops;
diff --git a/main.h b/main.h
index 6ee984c..e456762 100644
--- a/main.h
+++ b/main.h
@@ -367,5 +367,6 @@ void batadv_tvlv_unicast_send(struct batadv_priv *bat_priv, uint8_t *src,
 			      uint8_t *dst, uint8_t type, uint8_t version,
 			      void *tvlv_value, uint16_t tvlv_value_len);
 unsigned short batadv_get_vid(struct sk_buff *skb, size_t header_len);
+bool batadv_vlan_ap_isola_get(struct batadv_priv *bat_priv, unsigned short vid);
 
 #endif /* _NET_BATMAN_ADV_MAIN_H_ */
diff --git a/translation-table.c b/translation-table.c
index 9c8d55f..42c7664 100644
--- a/translation-table.c
+++ b/translation-table.c
@@ -1896,19 +1896,8 @@ struct batadv_orig_node *batadv_transtable_search(struct batadv_priv *bat_priv,
 	struct batadv_tt_global_entry *tt_global_entry = NULL;
 	struct batadv_orig_node *orig_node = NULL;
 	struct batadv_tt_orig_list_entry *best_entry;
-	bool ap_isolation_enabled = false;
-	struct batadv_softif_vlan *vlan;
-
-	/* if the AP isolation is requested on a VLAN, then check for its
-	 * setting in the proper VLAN private data structure
-	 */
-	vlan = batadv_softif_vlan_get(bat_priv, vid);
-	if (vlan) {
-		ap_isolation_enabled = atomic_read(&vlan->ap_isolation);
-		batadv_softif_vlan_free_ref(vlan);
-	}
 
-	if (src && ap_isolation_enabled) {
+	if (src && batadv_vlan_ap_isola_get(bat_priv, vid)) {
 		tt_local_entry = batadv_tt_local_hash_find(bat_priv, src, vid);
 		if (!tt_local_entry ||
 		    (tt_local_entry->common.flags & BATADV_TT_CLIENT_PENDING))
-- 
1.8.4.3


  parent reply	other threads:[~2013-11-16 11:03 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-16 11:03 [B.A.T.M.A.N.] [PATCHv3 0/5] Introducing the Extended-Isolation Antonio Quartulli
2013-11-16 11:03 ` [B.A.T.M.A.N.] [PATCHv3 1/6] batman-adv: add isolation_mark sysfs attribute Antonio Quartulli
2013-11-17  3:30   ` Marek Lindner
2013-11-16 11:03 ` [B.A.T.M.A.N.] [PATCHv3 2/6] batman-adv: mark a local client as isolated when needed Antonio Quartulli
2013-11-17  3:31   ` Marek Lindner
2013-11-16 11:03 ` [B.A.T.M.A.N.] [PATCHv3 3/6] batman-adv: print the new BATADV_TT_CLIENT_ISOLA flag Antonio Quartulli
2013-11-17  3:32   ` Marek Lindner
2013-11-16 11:03 ` [B.A.T.M.A.N.] [PATCHv3 4/6] batman-adv: extend the ap_isolation mechanism Antonio Quartulli
2013-11-17  3:34   ` Marek Lindner
2013-11-16 11:03 ` Antonio Quartulli [this message]
2013-11-17  3:35   ` [B.A.T.M.A.N.] [PATCHv3 5/6] batman-adv: create helper function to get AP isolation status Marek Lindner
2013-11-16 11:03 ` [B.A.T.M.A.N.] [PATCHv3 6/6] batman-adv: set the isolation mark in the skb if needed Antonio Quartulli
2013-11-17  3:37   ` Marek Lindner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1384599832-3959-6-git-send-email-antonio@meshcoding.com \
    --to=antonio@meshcoding.com \
    --cc=antonio@open-mesh.com \
    --cc=b.a.t.m.a.n@lists.open-mesh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.