All of lore.kernel.org
 help / color / mirror / Atom feed
* [MPTCP] [PATCH 1/2] mptcp: Minor changes to path manager interface
@ 2019-09-07  1:30 Peter Krystad
  0 siblings, 0 replies; 4+ messages in thread
From: Peter Krystad @ 2019-09-07  1:30 UTC (permalink / raw)
  To: mptcp 

[-- Attachment #1: Type: text/plain, Size: 4391 bytes --]

Needed preparations so interim path manager can be in it's own file

squashto: Add path manager interface

Signed-off-by: Peter Krystad <peter.krystad(a)linux.intel.com>
---
 net/mptcp/pm.c       | 31 +++++++++++++++++++++----------
 net/mptcp/protocol.c |  1 -
 net/mptcp/protocol.h |  9 ++++++++-
 3 files changed, 29 insertions(+), 12 deletions(-)

diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c
index bc07376a823b..55b497a60230 100644
--- a/net/mptcp/pm.c
+++ b/net/mptcp/pm.c
@@ -10,7 +10,7 @@
 
 /* path manager command handlers */
 
-int pm_announce_addr(u32 token, sa_family_t family, u8 local_id,
+int pm_announce_addr(u32 token, u8 local_id, sa_family_t family,
 		     struct in_addr *addr)
 {
 	struct mptcp_sock *msk = mptcp_sk(token_lookup_get(token));
@@ -50,7 +50,8 @@ int pm_remove_addr(u32 token, u8 local_id)
 	return 0;
 }
 
-int pm_create_subflow(u32 token, u8 remote_id)
+int pm_create_subflow(u32 token, u8 remote_id, sa_family_t family,
+		      struct in_addr *addr)
 {
 	struct mptcp_sock *msk = mptcp_sk(token_lookup_get(token));
 	struct sockaddr_in remote;
@@ -69,7 +70,10 @@ int pm_create_subflow(u32 token, u8 remote_id)
 
 	local.sin_family = AF_INET;
 	local.sin_port = 0;
-	local.sin_addr.s_addr = INADDR_ANY;
+	if (family == AF_INET)
+		local.sin_addr.s_addr = addr->s_addr;
+	else
+		local.sin_addr.s_addr = INADDR_ANY;
 
 	remote.sin_family = msk->pm.remote_family;
 	remote.sin_port = htons(msk->dport);
@@ -91,16 +95,21 @@ int pm_remove_subflow(u32 token, u8 remote_id)
 
 void pm_new_connection(struct mptcp_sock *msk, int server_side)
 {
-	pr_debug("msk=%p", msk);
+	struct mptcp_pm_data *pm = &msk->pm;
+
+	pr_debug("msk=%p, token=%u", msk, msk->token);
 
-	msk->pm.server_side = server_side;
+	pm->server_side = server_side;
+	pm->token = msk->token;
 }
 
 void pm_fully_established(struct mptcp_sock *msk)
 {
+	struct mptcp_pm_data *pm = &msk->pm;
+
 	pr_debug("msk=%p", msk);
 
-	msk->pm.fully_established = 1;
+	pm->fully_established = 1;
 }
 
 void pm_connection_closed(struct mptcp_sock *msk)
@@ -120,12 +129,14 @@ void pm_subflow_closed(struct mptcp_sock *msk, u8 id)
 
 void pm_add_addr(struct mptcp_sock *msk, const struct in_addr *addr, u8 id)
 {
+	struct mptcp_pm_data *pm = &msk->pm;
+
 	pr_debug("msk=%p, addr=%x, remote_id=%d", msk, addr->s_addr, id);
 
-	msk->pm.remote_addr.s_addr = addr->s_addr;
-	msk->pm.remote_id = id;
-	msk->pm.remote_family = AF_INET;
-	msk->pm.remote_valid = 1;
+	pm->remote_addr.s_addr = addr->s_addr;
+	pm->remote_id = id;
+	pm->remote_family = AF_INET;
+	pm->remote_valid = 1;
 }
 
 void pm_add_addr6(struct mptcp_sock *msk, const struct in6_addr *addr, u8 id)
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index 3c678d52ae1e..06a1cea45efe 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -1135,7 +1135,6 @@ void mptcp_proto_init(void)
 
 	token_init();
 	subflow_init();
-	pm_init();
 
 	if (proto_register(&mptcp_prot, 1) != 0)
 		panic("Failed to register MPTCP proto.\n");
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index 991ad288b892..e0c47d813a26 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -260,7 +260,6 @@ static inline void crypto_key_gen_sha1(u64 *key, u32 *token, u64 *idsn)
 void crypto_hmac_sha1(u64 key1, u64 key2, u32 nonce1, u32 nonce2,
 		      u32 *hash_out);
 
-void pm_init(void);
 void pm_new_connection(struct mptcp_sock *msk, int server_side);
 void pm_fully_established(struct mptcp_sock *msk);
 void pm_connection_closed(struct mptcp_sock *msk);
@@ -269,6 +268,14 @@ void pm_subflow_closed(struct mptcp_sock *msk, u8 id);
 void pm_add_addr(struct mptcp_sock *msk, const struct in_addr *addr, u8 id);
 void pm_add_addr6(struct mptcp_sock *msk, const struct in6_addr *addr, u8 id);
 void pm_rm_addr(struct mptcp_sock *msk, u8 id);
+
+int pm_announce_addr(u32 token, u8 local_id, sa_family_t family,
+		     struct in_addr *addr);
+int pm_create_subflow(u32 token, u8 remote_id, sa_family_t family,
+		      struct in_addr *addr);
+int pm_remove_addr(u32 token, u8 local_id);
+int pm_remove_subflow(u32 token, u8 remote_id);
+
 int pm_addr_signal(struct mptcp_sock *msk, u8 *id,
 		   struct sockaddr_storage *saddr);
 int pm_get_local_id(struct request_sock *req, struct sock *sk,
-- 
2.17.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [MPTCP] [PATCH 1/2] mptcp: Minor changes to path manager interface
@ 2019-09-11 20:57 Paolo Abeni
  0 siblings, 0 replies; 4+ messages in thread
From: Paolo Abeni @ 2019-09-11 20:57 UTC (permalink / raw)
  To: mptcp 

[-- Attachment #1: Type: text/plain, Size: 486 bytes --]

On Fri, 2019-09-06 at 18:30 -0700, Peter Krystad wrote:
> diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
> index 3c678d52ae1e..06a1cea45efe 100644
> --- a/net/mptcp/protocol.c
> +++ b/net/mptcp/protocol.c
> @@ -1135,7 +1135,6 @@ void mptcp_proto_init(void)
>  
>  	token_init();
>  	subflow_init();
> -	pm_init();

I guess we should also remove pm_init() definition, but that can go
with a later clean-up patch. I think this patch can be merged as-is.

Paolo


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [MPTCP] [PATCH 1/2] mptcp: Minor changes to path manager interface
@ 2019-09-17 18:37 Peter Krystad
  0 siblings, 0 replies; 4+ messages in thread
From: Peter Krystad @ 2019-09-17 18:37 UTC (permalink / raw)
  To: mptcp 

[-- Attachment #1: Type: text/plain, Size: 4407 bytes --]

Needed preparations so basic path manager can be in it's own file

squashto: Add path manager interface

Signed-off-by: Peter Krystad <peter.krystad(a)linux.intel.com>
---
 net/mptcp/pm.c       | 31 +++++++++++++++++++++----------
 net/mptcp/protocol.c |  1 -
 net/mptcp/protocol.h |  9 ++++++++-
 3 files changed, 29 insertions(+), 12 deletions(-)

diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c
index 57e13837ee22..d0ce36cc912c 100644
--- a/net/mptcp/pm.c
+++ b/net/mptcp/pm.c
@@ -10,7 +10,7 @@
 
 /* path manager command handlers */
 
-int pm_announce_addr(u32 token, sa_family_t family, u8 local_id,
+int pm_announce_addr(u32 token, u8 local_id, sa_family_t family,
 		     struct in_addr *addr)
 {
 	struct mptcp_sock *msk = mptcp_token_get_sock(token);
@@ -50,7 +50,8 @@ int pm_remove_addr(u32 token, u8 local_id)
 	return 0;
 }
 
-int pm_create_subflow(u32 token, u8 remote_id)
+int pm_create_subflow(u32 token, u8 remote_id, sa_family_t family,
+		      struct in_addr *addr)
 {
 	struct mptcp_sock *msk = mptcp_token_get_sock(token);
 	struct sockaddr_in remote;
@@ -69,7 +70,10 @@ int pm_create_subflow(u32 token, u8 remote_id)
 
 	local.sin_family = AF_INET;
 	local.sin_port = 0;
-	local.sin_addr.s_addr = INADDR_ANY;
+	if (family == AF_INET)
+		local.sin_addr.s_addr = addr->s_addr;
+	else
+		local.sin_addr.s_addr = INADDR_ANY;
 
 	remote.sin_family = msk->pm.remote_family;
 	remote.sin_port = htons(msk->dport);
@@ -91,16 +95,21 @@ int pm_remove_subflow(u32 token, u8 remote_id)
 
 void pm_new_connection(struct mptcp_sock *msk, int server_side)
 {
-	pr_debug("msk=%p", msk);
+	struct mptcp_pm_data *pm = &msk->pm;
+
+	pr_debug("msk=%p, token=%u", msk, msk->token);
 
-	msk->pm.server_side = server_side;
+	pm->server_side = server_side;
+	pm->token = msk->token;
 }
 
 void pm_fully_established(struct mptcp_sock *msk)
 {
+	struct mptcp_pm_data *pm = &msk->pm;
+
 	pr_debug("msk=%p", msk);
 
-	msk->pm.fully_established = 1;
+	pm->fully_established = 1;
 }
 
 void pm_connection_closed(struct mptcp_sock *msk)
@@ -120,12 +129,14 @@ void pm_subflow_closed(struct mptcp_sock *msk, u8 id)
 
 void pm_add_addr(struct mptcp_sock *msk, const struct in_addr *addr, u8 id)
 {
+	struct mptcp_pm_data *pm = &msk->pm;
+
 	pr_debug("msk=%p, addr=%x, remote_id=%d", msk, addr->s_addr, id);
 
-	msk->pm.remote_addr.s_addr = addr->s_addr;
-	msk->pm.remote_id = id;
-	msk->pm.remote_family = AF_INET;
-	msk->pm.remote_valid = 1;
+	pm->remote_addr.s_addr = addr->s_addr;
+	pm->remote_id = id;
+	pm->remote_family = AF_INET;
+	pm->remote_valid = 1;
 }
 
 void pm_add_addr6(struct mptcp_sock *msk, const struct in6_addr *addr, u8 id)
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index 9c019e696fc7..2fcdf11a653a 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -1130,7 +1130,6 @@ void mptcp_proto_init(void)
 	mptcp_stream_ops.shutdown = mptcp_shutdown;
 
 	subflow_init();
-	pm_init();
 
 	if (proto_register(&mptcp_prot, 1) != 0)
 		panic("Failed to register MPTCP proto.\n");
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index 40f0efaef55e..fcf78fc0df84 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -252,7 +252,6 @@ static inline void crypto_key_gen_sha1(u64 *key, u32 *token, u64 *idsn)
 void crypto_hmac_sha1(u64 key1, u64 key2, u32 nonce1, u32 nonce2,
 		      u32 *hash_out);
 
-void pm_init(void);
 void pm_new_connection(struct mptcp_sock *msk, int server_side);
 void pm_fully_established(struct mptcp_sock *msk);
 void pm_connection_closed(struct mptcp_sock *msk);
@@ -261,6 +260,14 @@ void pm_subflow_closed(struct mptcp_sock *msk, u8 id);
 void pm_add_addr(struct mptcp_sock *msk, const struct in_addr *addr, u8 id);
 void pm_add_addr6(struct mptcp_sock *msk, const struct in6_addr *addr, u8 id);
 void pm_rm_addr(struct mptcp_sock *msk, u8 id);
+
+int pm_announce_addr(u32 token, u8 local_id, sa_family_t family,
+		     struct in_addr *addr);
+int pm_create_subflow(u32 token, u8 remote_id, sa_family_t family,
+		      struct in_addr *addr);
+int pm_remove_addr(u32 token, u8 local_id);
+int pm_remove_subflow(u32 token, u8 remote_id);
+
 int pm_addr_signal(struct mptcp_sock *msk, u8 *id,
 		   struct sockaddr_storage *saddr);
 int pm_get_local_id(struct request_sock *req, struct sock *sk,
-- 
2.17.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [MPTCP] [PATCH 1/2] mptcp: Minor changes to path manager interface
@ 2019-09-27 23:42 Peter Krystad
  0 siblings, 0 replies; 4+ messages in thread
From: Peter Krystad @ 2019-09-27 23:42 UTC (permalink / raw)
  To: mptcp 

[-- Attachment #1: Type: text/plain, Size: 4426 bytes --]

Needed preparations so basic path manager can be in it's own file

squashto: Add path manager interface

Signed-off-by: Peter Krystad <peter.krystad(a)linux.intel.com>
---
 net/mptcp/pm.c       | 31 +++++++++++++++++++++----------
 net/mptcp/protocol.c |  1 -
 net/mptcp/protocol.h |  9 ++++++++-
 3 files changed, 29 insertions(+), 12 deletions(-)

diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c
index c8d6341c9683..20bea1303342 100644
--- a/net/mptcp/pm.c
+++ b/net/mptcp/pm.c
@@ -10,7 +10,7 @@
 
 /* path manager command handlers */
 
-int pm_announce_addr(u32 token, sa_family_t family, u8 local_id,
+int pm_announce_addr(u32 token, u8 local_id, sa_family_t family,
 		     struct in_addr *addr)
 {
 	struct mptcp_sock *msk = mptcp_token_get_sock(token);
@@ -50,7 +50,8 @@ int pm_remove_addr(u32 token, u8 local_id)
 	return 0;
 }
 
-int pm_create_subflow(u32 token, u8 remote_id)
+int pm_create_subflow(u32 token, u8 remote_id, sa_family_t family,
+		      struct in_addr *addr)
 {
 	struct mptcp_sock *msk = mptcp_token_get_sock(token);
 	struct sockaddr_in remote;
@@ -69,7 +70,10 @@ int pm_create_subflow(u32 token, u8 remote_id)
 
 	local.sin_family = AF_INET;
 	local.sin_port = 0;
-	local.sin_addr.s_addr = htonl(INADDR_ANY);
+	if (family == AF_INET)
+		local.sin_addr.s_addr = addr->s_addr;
+	else
+		local.sin_addr.s_addr = htonl(INADDR_ANY);
 
 	remote.sin_family = msk->pm.remote_family;
 	remote.sin_port = htons(msk->dport);
@@ -91,16 +95,21 @@ int pm_remove_subflow(u32 token, u8 remote_id)
 
 void pm_new_connection(struct mptcp_sock *msk, int server_side)
 {
-	pr_debug("msk=%p", msk);
+	struct mptcp_pm_data *pm = &msk->pm;
+
+	pr_debug("msk=%p, token=%u", msk, msk->token);
 
-	msk->pm.server_side = server_side;
+	pm->server_side = server_side;
+	pm->token = msk->token;
 }
 
 void pm_fully_established(struct mptcp_sock *msk)
 {
+	struct mptcp_pm_data *pm = &msk->pm;
+
 	pr_debug("msk=%p", msk);
 
-	msk->pm.fully_established = 1;
+	pm->fully_established = 1;
 }
 
 void pm_connection_closed(struct mptcp_sock *msk)
@@ -120,12 +129,14 @@ void pm_subflow_closed(struct mptcp_sock *msk, u8 id)
 
 void pm_add_addr(struct mptcp_sock *msk, const struct in_addr *addr, u8 id)
 {
+	struct mptcp_pm_data *pm = &msk->pm;
+
 	pr_debug("msk=%p, addr=%x, remote_id=%d", msk, addr->s_addr, id);
 
-	msk->pm.remote_addr.s_addr = addr->s_addr;
-	msk->pm.remote_id = id;
-	msk->pm.remote_family = AF_INET;
-	msk->pm.remote_valid = 1;
+	pm->remote_addr.s_addr = addr->s_addr;
+	pm->remote_id = id;
+	pm->remote_family = AF_INET;
+	pm->remote_valid = 1;
 }
 
 void pm_add_addr6(struct mptcp_sock *msk, const struct in6_addr *addr, u8 id)
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index e0ae0a2542d1..45dbfe83b08f 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -1440,7 +1440,6 @@ void mptcp_proto_init(void)
 		panic("Failed to allocate MPTCP pcpu counter\n");
 
 	subflow_init();
-	pm_init();
 
 	if (proto_register(&mptcp_prot, 1) != 0)
 		panic("Failed to register MPTCP proto.\n");
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index f3f293c82058..6518c7f1c232 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -288,7 +288,6 @@ static inline void crypto_key_gen_sha1(u64 *key, u32 *token, u64 *idsn)
 void crypto_hmac_sha1(u64 key1, u64 key2, u32 nonce1, u32 nonce2,
 		      u32 *hash_out);
 
-void pm_init(void);
 void pm_new_connection(struct mptcp_sock *msk, int server_side);
 void pm_fully_established(struct mptcp_sock *msk);
 void pm_connection_closed(struct mptcp_sock *msk);
@@ -297,6 +296,14 @@ void pm_subflow_closed(struct mptcp_sock *msk, u8 id);
 void pm_add_addr(struct mptcp_sock *msk, const struct in_addr *addr, u8 id);
 void pm_add_addr6(struct mptcp_sock *msk, const struct in6_addr *addr, u8 id);
 void pm_rm_addr(struct mptcp_sock *msk, u8 id);
+
+int pm_announce_addr(u32 token, u8 local_id, sa_family_t family,
+		     struct in_addr *addr);
+int pm_create_subflow(u32 token, u8 remote_id, sa_family_t family,
+		      struct in_addr *addr);
+int pm_remove_addr(u32 token, u8 local_id);
+int pm_remove_subflow(u32 token, u8 remote_id);
+
 int pm_addr_signal(struct mptcp_sock *msk, u8 *id,
 		   struct sockaddr_storage *saddr);
 int pm_get_local_id(struct request_sock *req, struct sock *sk,
-- 
2.17.2

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-09-27 23:42 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-09-07  1:30 [MPTCP] [PATCH 1/2] mptcp: Minor changes to path manager interface Peter Krystad
  -- strict thread matches above, loose matches on Subject: below --
2019-09-11 20:57 Paolo Abeni
2019-09-17 18:37 Peter Krystad
2019-09-27 23:42 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.