Re: [PATCH 1/1] gtp: support SGSN-side tunnels
From: Andreas Schultz <hidden>
Date: 2017-02-13 11:52:12
Hi, ----- On Feb 13, 2017, at 12:16 PM, pablo pablo@netfilter.org wrote:
On Mon, Feb 13, 2017 at 10:25:19AM +0100, Andreas Schultz wrote:quoted
Hi, I'm a bit late to comment, but maybe you can consider an additional change for v2... ----- On Feb 3, 2017, at 10:12 AM, Jonas Bonn jonas@southpole.se wrote:quoted
The GTP-tunnel driver is explicitly GGSN-side as it searches for PDP contexts based on the incoming packets _destination_ address. If we want to write an SGSN, then we want to be idenityfing PDP contexts based on _source_ address. This patch adds a "flags" argument at GTP-link creation time to specify whether we are on the GGSN or SGSN side of the tunnel; this flag is then used to determine which part of the IP packet to use in determining the PDP context. Signed-off-by: Jonas Bonn <jonas@southpole.se> --- drivers/net/gtp.c | 43 ++++++++++++++++++++++++++++++++----------- include/uapi/linux/gtp.h | 2 +- include/uapi/linux/if_link.h | 5 +++++ 3 files changed, 38 insertions(+), 12 deletions(-)diff --git a/drivers/net/gtp.c b/drivers/net/gtp.c index 50349a9..1bbac69 100644 --- a/drivers/net/gtp.c +++ b/drivers/net/gtp.c@@ -72,6 +72,7 @@ struct gtp_dev {struct net *net; struct net_device *dev; + unsigned int flags;This should IMHO not go into the gtp_dev, the right place is the PDP context.So you want to allow mixed configurations where some PDP ctx may be in SGSN mode while others in GGSN. This doesn't make any sense to me. On top of this, don't forget this is just for testing, so I don't see any valid usecase for such a fine grain thing.
You are right, running such a configuration does not make sense. However, when I wrote this the PDP context looked like the most sensible palace to me. Anyhow, thinking about this again, I think that integrating that flag in a rewrite of the validation logic in the Rx path make more sense. Currently we validate the MS as soon as we have found the PDP context. This should be delayed a bit and the validation should happen after pulling the GTP header and right before injecting the payload into the net device. The flag would then indeed go into the gtp_dev. Andreas