RFC PATCHES - Merge gtp driver with https://github.com/free5gc/gtp5g

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/osmocom-net-gprs@lists.osmocom.org/.

Richard Haines richard_c_haines at btinternet.com
Thu Aug 5 07:47:47 UTC 2021


Harald,
As requested I've copied this to the osmocom-net-gprs at lists.osmocom.org
list.

I'm not sure if any of you are interested in this (or even if it's
useful as the "gtp5g" module is still 'work in progress'), however
if you are interested any comments ??.

I've attached a tarball (gtp-patches.tar.xz) with all the
patches and here are some notes:

1) This has been built and tested on Fedora 34 using
linux-5.14-rc4 kernel.

2) The first two kernel patches reinstall the current gtp
driver into manageable modules. You can build the kernel with just
these patches and should still be able to use libgtpnl, osmo-ggsn
etc. as no code changes.

3) The remaining three kernel patches install the services
from https://github.com/free5gc/gtp5g to DRV_VERSION "1.0.3a",
also update core services (where possible) to use common functions
e.g. gtp_dev_xmit().
It is possible to implement more common functions, but that
can be done if the patch series is of any use !!!

4) There are three possible Kconfig configuration options:
GTP_PDP only - GTP_PDR only - GTP_PDP and GTP_PDR

5) If GTP_PDP and GTP_PDR build selected, the basic tests
using osmo-ggsn or openggsn work using tests in [1] and the tests
from libgtp5gnl [2] (./run.sh SimpleUPTest & ULCLTest1) will also
run - provided the following tarball patch has been applied to
update [2]:
0001-libgtp5gnl-Update-to-match-new-linux-gtp.h-entries.patch

6) Be aware that apps/libs should now define their role
specifically (i.e. GTP_ROLE_SGSN, GTP_ROLE_RAN) and not default
thinking that '0' will always be GTP_ROLE_GGSN or GTP_ROLE_UPF.
Both libgtp*nl versions do this.

7) I've only limited test options so cannot guarantee all
will work !!

8) The kernel and tests have been built using Fedora 34.
When building the kernel with Fedora the gtp5g side will hang
when testing. This happens whether I build/load as described in the
https://github.com/free5gc/gtp5g README i.e. untouched by me, or with
my patches. To solve this issue I've commented out some code in
pdr.c pdr_context_free() with a comment:
/* FIXME - Stop crash when kernel built on Fedora 34 */
I'll try and fix this at some stage.

9) The original gtp5g driver 'struct net_device_ops' used:
    .ndo_get_stats64    = ip_tunnel_get_stats64,
However this is deprecated so set to:
    .ndo_get_stats64	= dev_get_tstats64,

10) Running checkpatch on the kernel patches will show plenty
of warning and check messages, however all 'errors' are fixed.

11) I've patches that add the LSM/SELinux services, however have
not included these as I guess still nfi.

[1] https://osmocom.org/projects/linux-kernel-gtp-u/wiki/Basic_Testing
[2] https://github.com/free5gc/libgtp5gnl

Richard Haines (5):
  gtp: Delete current gtp driver
  gtp: Split gtp driver into modules
  gtp: Add support for PDR services - Part 1
  gtp: Add support for PDR services - Part 2
  gtp: Add support for PDR services - Part 3

 drivers/net/Kconfig                |   17 +-
 drivers/net/Makefile               |    2 +-
 drivers/net/gtp.c                  | 1462 ----------------------------
 drivers/net/gtp/Kconfig            |   45 +
 drivers/net/gtp/Makefile           |    8 +
 drivers/net/gtp/dev_core.c         |  103 ++
 drivers/net/gtp/encap.c            |  406 ++++++++
 drivers/net/gtp/far.c              |  596 ++++++++++++
 drivers/net/gtp/gtp_core.c         |  243 +++++
 drivers/net/gtp/include/dev_core.h |   59 ++
 drivers/net/gtp/include/encap.h    |   27 +
 drivers/net/gtp/include/far.h      |   64 ++
 drivers/net/gtp/include/gtp_core.h |  105 ++
 drivers/net/gtp/include/nl_core.h  |   18 +
 drivers/net/gtp/include/pdp.h      |   53 +
 drivers/net/gtp/include/pdp_ipv4.h |   31 +
 drivers/net/gtp/include/pdr.h      |   96 ++
 drivers/net/gtp/include/pdr_ipv4.h |   49 +
 drivers/net/gtp/include/proc_dbg.h |   85 ++
 drivers/net/gtp/include/qer.h      |   49 +
 drivers/net/gtp/nl_core.c          |  444 +++++++++
 drivers/net/gtp/pdp.c              |  578 +++++++++++
 drivers/net/gtp/pdp_ipv4.c         |  166 ++++
 drivers/net/gtp/pdr.c              | 1272 ++++++++++++++++++++++++
 drivers/net/gtp/pdr_ipv4.c         |  330 +++++++
 drivers/net/gtp/proc_dbg.c         |  384 ++++++++
 drivers/net/gtp/qer.c              |  463 +++++++++
 include/net/gtp.h                  |  105 +-
 include/uapi/linux/gtp.h           |  200 +++-
 include/uapi/linux/if_link.h       |    5 +
 30 files changed, 5981 insertions(+), 1484 deletions(-)
 delete mode 100644 drivers/net/gtp.c
 create mode 100644 drivers/net/gtp/Kconfig
 create mode 100644 drivers/net/gtp/Makefile
 create mode 100644 drivers/net/gtp/dev_core.c
 create mode 100644 drivers/net/gtp/encap.c
 create mode 100644 drivers/net/gtp/far.c
 create mode 100644 drivers/net/gtp/gtp_core.c
 create mode 100644 drivers/net/gtp/include/dev_core.h
 create mode 100644 drivers/net/gtp/include/encap.h
 create mode 100644 drivers/net/gtp/include/far.h
 create mode 100644 drivers/net/gtp/include/gtp_core.h
 create mode 100644 drivers/net/gtp/include/nl_core.h
 create mode 100644 drivers/net/gtp/include/pdp.h
 create mode 100644 drivers/net/gtp/include/pdp_ipv4.h
 create mode 100644 drivers/net/gtp/include/pdr.h
 create mode 100644 drivers/net/gtp/include/pdr_ipv4.h
 create mode 100644 drivers/net/gtp/include/proc_dbg.h
 create mode 100644 drivers/net/gtp/include/qer.h
 create mode 100644 drivers/net/gtp/nl_core.c
 create mode 100644 drivers/net/gtp/pdp.c
 create mode 100644 drivers/net/gtp/pdp_ipv4.c
 create mode 100644 drivers/net/gtp/pdr.c
 create mode 100644 drivers/net/gtp/pdr_ipv4.c
 create mode 100644 drivers/net/gtp/proc_dbg.c
 create mode 100644 drivers/net/gtp/qer.c

-- 
2.31.1

-------------- next part --------------
A non-text attachment was scrubbed...
Name: gtp-patches.tar.xz
Type: application/x-xz-compressed-tar
Size: 42412 bytes
Desc: not available
URL: <http://lists.osmocom.org/pipermail/osmocom-net-gprs/attachments/20210805/baca7ac4/attachment.bin>


More information about the osmocom-net-gprs mailing list