From: Antonio Quartulli <antonio@meshcoding.com>
To: davem@davemloft.net
Cc: netdev@vger.kernel.org, b.a.t.m.a.n@lists.open-mesh.org,
Antonio Quartulli <antonio@meshcoding.com>,
Marek Lindner <mareklindner@neomailbox.ch>,
Antonio Quartulli <antonio@open-mesh.com>
Subject: [B.A.T.M.A.N.] [PATCH 04/13] batman-adv: deselect current GW on client mode switch off
Date: Thu, 9 Jan 2014 15:52:53 +0100 [thread overview]
Message-ID: <1389279182-3256-5-git-send-email-antonio@meshcoding.com> (raw)
In-Reply-To: <1389279182-3256-1-git-send-email-antonio@meshcoding.com>
From: Antonio Quartulli <antonio@open-mesh.com>
When switching from gw_mode client to either off or server
the current selected gateway has to be deselected.
In this way when client mode is enabled again a gateway
re-election is forced and a GW_ADD event is consequently
sent.
The current behaviour instead is to keep the current gateway
leading to no GW_ADD event when gw_mode client is selected
for a second time
Signed-off-by: Antonio Quartulli <antonio@open-mesh.com>
Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
---
net/batman-adv/gateway_client.c | 5 +++++
net/batman-adv/sysfs.c | 9 +++++++++
2 files changed, 14 insertions(+)
diff --git a/net/batman-adv/gateway_client.c b/net/batman-adv/gateway_client.c
index 3564173..53a9009 100644
--- a/net/batman-adv/gateway_client.c
+++ b/net/batman-adv/gateway_client.c
@@ -205,6 +205,11 @@ void batadv_gw_check_client_stop(struct batadv_priv *bat_priv)
if (!curr_gw)
return;
+ /* deselect the current gateway so that next time that client mode is
+ * enabled a proper GW_ADD event can be sent
+ */
+ batadv_gw_select(bat_priv, NULL);
+
/* if batman-adv is switching the gw client mode off and a gateway was
* already selected, send a DEL uevent
*/
diff --git a/net/batman-adv/sysfs.c b/net/batman-adv/sysfs.c
index e28f951..b652a56 100644
--- a/net/batman-adv/sysfs.c
+++ b/net/batman-adv/sysfs.c
@@ -406,6 +406,15 @@ static ssize_t batadv_store_gw_mode(struct kobject *kobj,
batadv_info(net_dev, "Changing gw mode from: %s to: %s\n",
curr_gw_mode_str, buff);
+ /* Invoking batadv_gw_reselect() is not enough to really de-select the
+ * current GW. It will only instruct the gateway client code to perform
+ * a re-election the next time that this is needed.
+ *
+ * When gw client mode is being switched off the current GW must be
+ * de-selected explicitly otherwise no GW_ADD uevent is thrown on
+ * client mode re-activation. This is operation is performed in
+ * batadv_gw_check_client_stop().
+ */
batadv_gw_deselect(bat_priv);
/* always call batadv_gw_check_client_stop() before changing the gateway
* state
--
1.8.5.2
WARNING: multiple messages have this Message-ID (diff)
From: Antonio Quartulli <antonio@meshcoding.com>
To: davem@davemloft.net
Cc: netdev@vger.kernel.org, b.a.t.m.a.n@lists.open-mesh.org,
Antonio Quartulli <antonio@open-mesh.com>,
Marek Lindner <mareklindner@neomailbox.ch>,
Antonio Quartulli <antonio@meshcoding.com>
Subject: [PATCH 04/13] batman-adv: deselect current GW on client mode switch off
Date: Thu, 9 Jan 2014 15:52:53 +0100 [thread overview]
Message-ID: <1389279182-3256-5-git-send-email-antonio@meshcoding.com> (raw)
In-Reply-To: <1389279182-3256-1-git-send-email-antonio@meshcoding.com>
From: Antonio Quartulli <antonio@open-mesh.com>
When switching from gw_mode client to either off or server
the current selected gateway has to be deselected.
In this way when client mode is enabled again a gateway
re-election is forced and a GW_ADD event is consequently
sent.
The current behaviour instead is to keep the current gateway
leading to no GW_ADD event when gw_mode client is selected
for a second time
Signed-off-by: Antonio Quartulli <antonio@open-mesh.com>
Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
---
net/batman-adv/gateway_client.c | 5 +++++
net/batman-adv/sysfs.c | 9 +++++++++
2 files changed, 14 insertions(+)
diff --git a/net/batman-adv/gateway_client.c b/net/batman-adv/gateway_client.c
index 3564173..53a9009 100644
--- a/net/batman-adv/gateway_client.c
+++ b/net/batman-adv/gateway_client.c
@@ -205,6 +205,11 @@ void batadv_gw_check_client_stop(struct batadv_priv *bat_priv)
if (!curr_gw)
return;
+ /* deselect the current gateway so that next time that client mode is
+ * enabled a proper GW_ADD event can be sent
+ */
+ batadv_gw_select(bat_priv, NULL);
+
/* if batman-adv is switching the gw client mode off and a gateway was
* already selected, send a DEL uevent
*/
diff --git a/net/batman-adv/sysfs.c b/net/batman-adv/sysfs.c
index e28f951..b652a56 100644
--- a/net/batman-adv/sysfs.c
+++ b/net/batman-adv/sysfs.c
@@ -406,6 +406,15 @@ static ssize_t batadv_store_gw_mode(struct kobject *kobj,
batadv_info(net_dev, "Changing gw mode from: %s to: %s\n",
curr_gw_mode_str, buff);
+ /* Invoking batadv_gw_reselect() is not enough to really de-select the
+ * current GW. It will only instruct the gateway client code to perform
+ * a re-election the next time that this is needed.
+ *
+ * When gw client mode is being switched off the current GW must be
+ * de-selected explicitly otherwise no GW_ADD uevent is thrown on
+ * client mode re-activation. This is operation is performed in
+ * batadv_gw_check_client_stop().
+ */
batadv_gw_deselect(bat_priv);
/* always call batadv_gw_check_client_stop() before changing the gateway
* state
--
1.8.5.2
next prev parent reply other threads:[~2014-01-09 14:52 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-09 14:52 [B.A.T.M.A.N.] pull request: batman-adv 2014-01-09 Antonio Quartulli
2014-01-09 14:52 ` Antonio Quartulli
2014-01-09 14:52 ` [B.A.T.M.A.N.] [PATCH 01/13] batman-adv: properly rename define in distributed arp table header file Antonio Quartulli
2014-01-09 14:52 ` Antonio Quartulli
2014-01-09 14:52 ` [B.A.T.M.A.N.] [PATCH 02/13] batman-adv: don't switch byte order too often if not needed Antonio Quartulli
2014-01-09 14:52 ` Antonio Quartulli
2014-01-09 14:52 ` [B.A.T.M.A.N.] [PATCH 03/13] batman-adv: remove FSF address from GPL disclaimer Antonio Quartulli
2014-01-09 14:52 ` Antonio Quartulli
2014-01-09 14:52 ` Antonio Quartulli [this message]
2014-01-09 14:52 ` [PATCH 04/13] batman-adv: deselect current GW on client mode switch off Antonio Quartulli
2014-01-09 14:52 ` [B.A.T.M.A.N.] [PATCH 05/13] batman-adv: rename gw_deselect() to gw_reselect() Antonio Quartulli
2014-01-09 14:52 ` Antonio Quartulli
2014-01-09 14:52 ` [B.A.T.M.A.N.] [PATCH 06/13] batman-adv: remove parenthesis from return statements Antonio Quartulli
2014-01-09 14:52 ` Antonio Quartulli
2014-01-09 14:52 ` [B.A.T.M.A.N.] [PATCH 07/13] batman-adv: send every DHCP packet as bat-unicast Antonio Quartulli
2014-01-09 14:52 ` Antonio Quartulli
2014-01-09 14:52 ` [B.A.T.M.A.N.] [PATCH 08/13] batman-adv: add isolation_mark sysfs attribute Antonio Quartulli
2014-01-09 14:52 ` Antonio Quartulli
2014-01-09 14:52 ` [B.A.T.M.A.N.] [PATCH 09/13] batman-adv: mark a local client as isolated when needed Antonio Quartulli
2014-01-09 14:52 ` Antonio Quartulli
2014-01-09 14:52 ` [B.A.T.M.A.N.] [PATCH 10/13] batman-adv: print the new BATADV_TT_CLIENT_ISOLA flag Antonio Quartulli
2014-01-09 14:52 ` Antonio Quartulli
2014-01-09 14:53 ` [B.A.T.M.A.N.] [PATCH 11/13] batman-adv: extend the ap_isolation mechanism Antonio Quartulli
2014-01-09 14:53 ` Antonio Quartulli
2014-01-09 14:53 ` [B.A.T.M.A.N.] [PATCH 12/13] batman-adv: create helper function to get AP isolation status Antonio Quartulli
2014-01-09 14:53 ` Antonio Quartulli
2014-01-09 14:53 ` [B.A.T.M.A.N.] [PATCH 13/13] batman-adv: set the isolation mark in the skb if needed Antonio Quartulli
2014-01-09 14:53 ` Antonio Quartulli
2014-01-10 23:00 ` [B.A.T.M.A.N.] pull request: batman-adv 2014-01-09 David Miller
2014-01-10 23:00 ` David Miller
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=1389279182-3256-5-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 \
--cc=davem@davemloft.net \
--cc=mareklindner@neomailbox.ch \
--cc=netdev@vger.kernel.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.