* [MPTCP] [PATCH 5/5] mptcp: Update basic path manager for IPv6
@ 2019-10-15 23:06 Peter Krystad
0 siblings, 0 replies; only message in thread
From: Peter Krystad @ 2019-10-15 23:06 UTC (permalink / raw)
To: mptcp
[-- Attachment #1: Type: text/plain, Size: 2608 bytes --]
squashto: Implement basic path manager
Signed-off-by: Peter Krystad <peter.krystad(a)linux.intel.com>
---
net/mptcp/basic.c | 40 ++++++++++++++++++++++++++--------------
1 file changed, 26 insertions(+), 14 deletions(-)
diff --git a/net/mptcp/basic.c b/net/mptcp/basic.c
index 193d6a01f51a..5520aae3a6e7 100644
--- a/net/mptcp/basic.c
+++ b/net/mptcp/basic.c
@@ -31,6 +31,12 @@ static void create_subflow_worker(struct work_struct *work);
static int parse_addr(struct basic_pernet *pernet, const char *addr)
{
+ if (in4_pton(addr, -1, (u8 *)&pernet->announce_v4_addr.s_addr, '\0',
+ NULL) > 0) {
+ pernet->has_announce_v4 = 1;
+ pernet->has_announce_v6 = 0;
+ return 0;
+ }
#if IS_ENABLED(CONFIG_IPV6)
if (in6_pton(addr, -1, (u8 *)&pernet->announce_v6_addr.s6_addr, '\0',
NULL) > 0) {
@@ -39,14 +45,6 @@ static int parse_addr(struct basic_pernet *pernet, const char *addr)
return 0;
}
#endif
-
- if (in4_pton(addr, -1, (u8 *)&pernet->announce_v4_addr.s_addr, '\0',
- NULL) > 0) {
- pernet->has_announce_v4 = 1;
- pernet->has_announce_v6 = 0;
- return 0;
- }
-
pernet->has_announce_v4 = 0;
pernet->has_announce_v6 = 0;
@@ -190,8 +188,13 @@ static void announce_addr_worker(struct work_struct *work)
pernet = net_generic(sock_net((struct sock *)msk), basic_pernet_id);
if (pernet->has_announce_v4)
- mptcp_pm_announce_addr(pm->token, 1, AF_INET,
+ mptcp_pm_announce_addr(pm->token, 1,
&pernet->announce_v4_addr);
+#if IS_ENABLED(CONFIG_IPV6)
+ if (pernet->has_announce_v6)
+ mptcp_pm_announce_addr6(pm->token, 1,
+ &pernet->announce_v6_addr);
+#endif
sock_put((struct sock *)msk);
}
@@ -204,12 +207,21 @@ static void create_subflow_worker(struct work_struct *work)
pernet = net_generic(sock_net((struct sock *)msk), basic_pernet_id);
- if (pernet->has_announce_v4) {
- mptcp_pm_create_subflow(pm->token, pm->remote_id, AF_INET,
+ if (pernet->has_announce_v4)
+ mptcp_pm_create_subflow(pm->token, pm->remote_id,
&pernet->announce_v4_addr);
- } else {
- mptcp_pm_create_subflow(pm->token, pm->remote_id, 0, NULL);
- }
+#if IS_ENABLED(CONFIG_IPV6)
+ else if (pernet->has_announce_v6)
+ mptcp_pm_create_subflow6(pm->token, pm->remote_id,
+ &pernet->announce_v6_addr);
+#endif
+ else if (pm->local_family == AF_INET)
+ mptcp_pm_create_subflow(pm->token, pm->remote_id, NULL);
+#if IS_ENABLED(CONFIG_IPV6)
+ else
+ mptcp_pm_create_subflow6(pm->token, pm->remote_id, NULL);
+#endif
+
sock_put((struct sock *)msk);
}
--
2.17.2
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2019-10-15 23:06 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-15 23:06 [MPTCP] [PATCH 5/5] mptcp: Update basic path manager for IPv6 Peter Krystad
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.