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.] [PATCHv2 1/2] batman-adv: deselect current GW on client mode switch off
Date: Sun, 27 Oct 2013 13:02:58 +0100 [thread overview]
Message-ID: <1382875379-2921-1-git-send-email-antonio@meshcoding.com> (raw)
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>
---
Changes from v1:
* Introduce patch 2 to rename batadv_gw_deselect()
* add big fat comment in 1/2 that explain why invoking batadv_gw_deselect() is
not enough to really deselect the current GW
Cheers,
gateway_client.c | 4 ++++
sysfs.c | 9 +++++++++
2 files changed, 13 insertions(+)
diff --git a/gateway_client.c b/gateway_client.c
index 2449afa..2903bdb 100644
--- a/gateway_client.c
+++ b/gateway_client.c
@@ -207,6 +207,10 @@ 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/sysfs.c b/sysfs.c
index 6335433..d1765fd 100644
--- a/sysfs.c
+++ b/sysfs.c
@@ -408,6 +408,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_deselect() is not enough to really de-select the
+ * current GW. It will only instruct the gateway 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 reactivation. 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.4
next reply other threads:[~2013-10-27 12:02 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-27 12:02 Antonio Quartulli [this message]
2013-10-27 12:02 ` [B.A.T.M.A.N.] [PATCHv2 2/2] batman-adv: rename gw_deselect() to gw_reselect() Antonio Quartulli
2013-11-04 14:11 ` Antonio Quartulli
-- strict thread matches above, loose matches on Subject: below --
2013-11-04 19:59 [B.A.T.M.A.N.] [PATCHv2 1/2] batman-adv: deselect current GW on client mode switch off Antonio Quartulli
2013-11-05 7:52 ` 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=1382875379-2921-1-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.