All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net v2 0/3] various gtp fixes
@ 2017-01-26 15:11 Andreas Schultz
  2017-01-26 15:11 ` [PATCH net v2 1/3] gtp: add genl family modules alias Andreas Schultz
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Andreas Schultz @ 2017-01-26 15:11 UTC (permalink / raw)
  To: Pablo Neira; +Cc: netdev, Lionel Gauthier, openbsc, Harald Welte

This is the part of the previous "simple gtp improvements" series
that Pablo indicated should go into net.

The addition of the module alias fixes genl family autoloading,
clearing the DF bit fixes a protocol violation in regard to the
specification and the netns comparison fixes a corner case of
cross netns recv.

I'm not sure if Pablos comments on the previous version qualify
as ACK, so I left that out.

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

* [PATCH net v2 1/3] gtp: add genl family modules alias
  2017-01-26 15:11 [PATCH net v2 0/3] various gtp fixes Andreas Schultz
@ 2017-01-26 15:11 ` Andreas Schultz
  2017-01-26 15:34   ` Pablo Neira Ayuso
  2017-01-26 15:11 ` [PATCH net v2 2/3] gtp: clear DF bit on GTP packet tx Andreas Schultz
  2017-01-26 15:11 ` [PATCH net v2 3/3] gtp: fix cross netns recv on gtp socket Andreas Schultz
  2 siblings, 1 reply; 8+ messages in thread
From: Andreas Schultz @ 2017-01-26 15:11 UTC (permalink / raw)
  To: Pablo Neira; +Cc: netdev, Lionel Gauthier, openbsc, Harald Welte

Auto-load the module when userspace asks for the gtp netlink
family.

Acked-by: Harald Welte <laforge@netfilter.org>
Signed-off-by: Andreas Schultz <aschultz@tpip.net>
---
 drivers/net/gtp.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/gtp.c b/drivers/net/gtp.c
index 8b6810b..7580ccc 100644
--- a/drivers/net/gtp.c
+++ b/drivers/net/gtp.c
@@ -1376,3 +1376,4 @@ MODULE_LICENSE("GPL");
 MODULE_AUTHOR("Harald Welte <hwelte@sysmocom.de>");
 MODULE_DESCRIPTION("Interface driver for GTP encapsulated traffic");
 MODULE_ALIAS_RTNL_LINK("gtp");
+MODULE_ALIAS_GENL_FAMILY("gtp");
-- 
2.10.2

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

* [PATCH net v2 2/3] gtp: clear DF bit on GTP packet tx
  2017-01-26 15:11 [PATCH net v2 0/3] various gtp fixes Andreas Schultz
  2017-01-26 15:11 ` [PATCH net v2 1/3] gtp: add genl family modules alias Andreas Schultz
@ 2017-01-26 15:11 ` Andreas Schultz
  2017-01-26 15:34   ` [PATCH net v2 2/3] gtp: clear DF bit on GTP packet txç Pablo Neira Ayuso
  2017-01-26 15:11 ` [PATCH net v2 3/3] gtp: fix cross netns recv on gtp socket Andreas Schultz
  2 siblings, 1 reply; 8+ messages in thread
From: Andreas Schultz @ 2017-01-26 15:11 UTC (permalink / raw)
  To: Pablo Neira; +Cc: netdev, Lionel Gauthier, openbsc, Harald Welte

3GPP TS 29.281 and 3GPP TS 29.060 imply that GTP-U packets should be
sent with the DF bit cleared. For example 3GPP TS 29.060, Release 8,
Section 13.2.2:

> Backbone router: Any router in the backbone may fragment the GTP
> packet if needed, according to IPv4.

Acked-by: Harald Welte <laforge@netfilter.org>
Signed-off-by: Andreas Schultz <aschultz@tpip.net>
---
 drivers/net/gtp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/gtp.c b/drivers/net/gtp.c
index 7580ccc..1df54d6 100644
--- a/drivers/net/gtp.c
+++ b/drivers/net/gtp.c
@@ -612,7 +612,7 @@ static netdev_tx_t gtp_dev_xmit(struct sk_buff *skb, struct net_device *dev)
 				    pktinfo.fl4.saddr, pktinfo.fl4.daddr,
 				    pktinfo.iph->tos,
 				    ip4_dst_hoplimit(&pktinfo.rt->dst),
-				    htons(IP_DF),
+				    0,
 				    pktinfo.gtph_port, pktinfo.gtph_port,
 				    true, false);
 		break;
-- 
2.10.2

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

* [PATCH net v2 3/3] gtp: fix cross netns recv on gtp socket
  2017-01-26 15:11 [PATCH net v2 0/3] various gtp fixes Andreas Schultz
  2017-01-26 15:11 ` [PATCH net v2 1/3] gtp: add genl family modules alias Andreas Schultz
  2017-01-26 15:11 ` [PATCH net v2 2/3] gtp: clear DF bit on GTP packet tx Andreas Schultz
@ 2017-01-26 15:11 ` Andreas Schultz
  2017-01-26 15:34   ` Pablo Neira Ayuso
  2017-01-26 19:22   ` David Miller
  2 siblings, 2 replies; 8+ messages in thread
From: Andreas Schultz @ 2017-01-26 15:11 UTC (permalink / raw)
  To: Pablo Neira; +Cc: netdev, Lionel Gauthier, openbsc, Harald Welte

The use of the passed through netlink src_net to check for a
cross netns operation was wrong. Using the GTP socket and the
GTP netdevice is always correct (even if the netdev has been
moved to new netns after link creation).

Remove the now obsolete net field from gtp_dev.

Signed-off-by: Andreas Schultz <aschultz@tpip.net>
---
 drivers/net/gtp.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/net/gtp.c b/drivers/net/gtp.c
index 1df54d6..72dd1ba 100644
--- a/drivers/net/gtp.c
+++ b/drivers/net/gtp.c
@@ -69,7 +69,6 @@ struct gtp_dev {
 	struct socket		*sock0;
 	struct socket		*sock1u;
 
-	struct net		*net;
 	struct net_device	*dev;
 
 	unsigned int		hash_size;
@@ -316,7 +315,7 @@ static int gtp_encap_recv(struct sock *sk, struct sk_buff *skb)
 
 	netdev_dbg(gtp->dev, "encap_recv sk=%p\n", sk);
 
-	xnet = !net_eq(gtp->net, dev_net(gtp->dev));
+	xnet = !net_eq(sock_net(sk), dev_net(gtp->dev));
 
 	switch (udp_sk(sk)->encap_type) {
 	case UDP_ENCAP_GTP0:
@@ -658,7 +657,7 @@ static void gtp_link_setup(struct net_device *dev)
 static int gtp_hashtable_new(struct gtp_dev *gtp, int hsize);
 static void gtp_hashtable_free(struct gtp_dev *gtp);
 static int gtp_encap_enable(struct net_device *dev, struct gtp_dev *gtp,
-			    int fd_gtp0, int fd_gtp1, struct net *src_net);
+			    int fd_gtp0, int fd_gtp1);
 
 static int gtp_newlink(struct net *src_net, struct net_device *dev,
 			struct nlattr *tb[], struct nlattr *data[])
@@ -858,7 +857,6 @@ static int gtp_encap_enable(struct net_device *dev, struct gtp_dev *gtp,
 
 	gtp->sock0 = sock0;
 	gtp->sock1u = sock1u;
-	gtp->net = src_net;
 
 	tuncfg.sk_user_data = gtp;
 	tuncfg.encap_rcv = gtp_encap_recv;
-- 
2.10.2

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

* Re: [PATCH net v2 1/3] gtp: add genl family modules alias
  2017-01-26 15:11 ` [PATCH net v2 1/3] gtp: add genl family modules alias Andreas Schultz
@ 2017-01-26 15:34   ` Pablo Neira Ayuso
  0 siblings, 0 replies; 8+ messages in thread
From: Pablo Neira Ayuso @ 2017-01-26 15:34 UTC (permalink / raw)
  To: Andreas Schultz; +Cc: netdev, Lionel Gauthier, openbsc, Harald Welte

On Thu, Jan 26, 2017 at 04:11:32PM +0100, Andreas Schultz wrote:
> Auto-load the module when userspace asks for the gtp netlink
> family.
> 
> Acked-by: Harald Welte <laforge@netfilter.org>
> Signed-off-by: Andreas Schultz <aschultz@tpip.net>

Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>

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

* Re: [PATCH net v2 2/3] gtp: clear DF bit on GTP packet txç
  2017-01-26 15:11 ` [PATCH net v2 2/3] gtp: clear DF bit on GTP packet tx Andreas Schultz
@ 2017-01-26 15:34   ` Pablo Neira Ayuso
  0 siblings, 0 replies; 8+ messages in thread
From: Pablo Neira Ayuso @ 2017-01-26 15:34 UTC (permalink / raw)
  To: Andreas Schultz; +Cc: netdev, Lionel Gauthier, openbsc, Harald Welte

On Thu, Jan 26, 2017 at 04:11:33PM +0100, Andreas Schultz wrote:
> 3GPP TS 29.281 and 3GPP TS 29.060 imply that GTP-U packets should be
> sent with the DF bit cleared. For example 3GPP TS 29.060, Release 8,
> Section 13.2.2:
> 
> > Backbone router: Any router in the backbone may fragment the GTP
> > packet if needed, according to IPv4.
> 
> Acked-by: Harald Welte <laforge@netfilter.org>
> Signed-off-by: Andreas Schultz <aschultz@tpip.net>

Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>

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

* Re: [PATCH net v2 3/3] gtp: fix cross netns recv on gtp socket
  2017-01-26 15:11 ` [PATCH net v2 3/3] gtp: fix cross netns recv on gtp socket Andreas Schultz
@ 2017-01-26 15:34   ` Pablo Neira Ayuso
  2017-01-26 19:22   ` David Miller
  1 sibling, 0 replies; 8+ messages in thread
From: Pablo Neira Ayuso @ 2017-01-26 15:34 UTC (permalink / raw)
  To: Andreas Schultz; +Cc: netdev, Lionel Gauthier, openbsc, Harald Welte

On Thu, Jan 26, 2017 at 04:11:34PM +0100, Andreas Schultz wrote:
> The use of the passed through netlink src_net to check for a
> cross netns operation was wrong. Using the GTP socket and the
> GTP netdevice is always correct (even if the netdev has been
> moved to new netns after link creation).
> 
> Remove the now obsolete net field from gtp_dev.
> 
> Signed-off-by: Andreas Schultz <aschultz@tpip.net>

Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>

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

* Re: [PATCH net v2 3/3] gtp: fix cross netns recv on gtp socket
  2017-01-26 15:11 ` [PATCH net v2 3/3] gtp: fix cross netns recv on gtp socket Andreas Schultz
  2017-01-26 15:34   ` Pablo Neira Ayuso
@ 2017-01-26 19:22   ` David Miller
  1 sibling, 0 replies; 8+ messages in thread
From: David Miller @ 2017-01-26 19:22 UTC (permalink / raw)
  To: aschultz; +Cc: pablo, netdev, Lionel.Gauthier, openbsc, laforge

From: Andreas Schultz <aschultz@tpip.net>
Date: Thu, 26 Jan 2017 16:11:34 +0100

> The use of the passed through netlink src_net to check for a
> cross netns operation was wrong. Using the GTP socket and the
> GTP netdevice is always correct (even if the netdev has been
> moved to new netns after link creation).
> 
> Remove the now obsolete net field from gtp_dev.
> 
> Signed-off-by: Andreas Schultz <aschultz@tpip.net>

Please at least compile test your submissions:

drivers/net/gtp.c: In function ‘gtp_newlink’:
drivers/net/gtp.c:677:8: error: too many arguments to function ‘gtp_encap_enable’
  err = gtp_encap_enable(dev, gtp, fd0, fd1, src_net);
        ^
drivers/net/gtp.c:659:12: note: declared here
 static int gtp_encap_enable(struct net_device *dev, struct gtp_dev *gtp,
            ^
drivers/net/gtp.c: At top level:
drivers/net/gtp.c:822:12: error: conflicting types for ‘gtp_encap_enable’
 static int gtp_encap_enable(struct net_device *dev, struct gtp_dev *gtp,
            ^
drivers/net/gtp.c:659:12: note: previous declaration of ‘gtp_encap_enable’ was here
 static int gtp_encap_enable(struct net_device *dev, struct gtp_dev *gtp,
            ^
drivers/net/gtp.c:659:12: warning: ‘gtp_encap_enable’ used but never defined
drivers/net/gtp.c:822:12: warning: ‘gtp_encap_enable’ defined but not used [-Wunused-function]
 static int gtp_encap_enable(struct net_device *dev, struct gtp_dev *gtp,
            ^
scripts/Makefile.build:299: recipe for target 'drivers/net/gtp.o' failed

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

end of thread, other threads:[~2017-01-26 19:22 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-26 15:11 [PATCH net v2 0/3] various gtp fixes Andreas Schultz
2017-01-26 15:11 ` [PATCH net v2 1/3] gtp: add genl family modules alias Andreas Schultz
2017-01-26 15:34   ` Pablo Neira Ayuso
2017-01-26 15:11 ` [PATCH net v2 2/3] gtp: clear DF bit on GTP packet tx Andreas Schultz
2017-01-26 15:34   ` [PATCH net v2 2/3] gtp: clear DF bit on GTP packet txç Pablo Neira Ayuso
2017-01-26 15:11 ` [PATCH net v2 3/3] gtp: fix cross netns recv on gtp socket Andreas Schultz
2017-01-26 15:34   ` Pablo Neira Ayuso
2017-01-26 19:22   ` David Miller

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.