mirror of
				https://gitea.osmocom.org/cellular-infrastructure/osmo-upf.git
				synced 2025-10-31 20:13:40 +00:00 
			
		
		
		
	initial osmocom boilerplate source tree
Related: SYS#5599 Depends: I0a46b147ec6a76d909df28136cfd2b764b2c75ea (libosmocore) Change-Id: I4352dd8738a1a9de6ba2fc250ee8eef69c65ff1e
This commit is contained in:
		
							
								
								
									
										73
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,73 @@ | |||||||
|  | debian/*.log | ||||||
|  | *.o | ||||||
|  | *.lo | ||||||
|  | *.a | ||||||
|  | .deps | ||||||
|  | Makefile | ||||||
|  | Makefile.in | ||||||
|  | config.h | ||||||
|  | config.h.in | ||||||
|  | *.pc | ||||||
|  | *~ | ||||||
|  |  | ||||||
|  | *.*~ | ||||||
|  | *.sw? | ||||||
|  | .libs | ||||||
|  | *.pyc | ||||||
|  | *.gcda | ||||||
|  | *.gcno | ||||||
|  |  | ||||||
|  | **/TAGS | ||||||
|  |  | ||||||
|  | #configure | ||||||
|  | aclocal.m4 | ||||||
|  | autom4te.cache/ | ||||||
|  | config.log | ||||||
|  | config.status | ||||||
|  | config.guess | ||||||
|  | config.sub | ||||||
|  | configure | ||||||
|  | compile | ||||||
|  | depcomp | ||||||
|  | install-sh | ||||||
|  | missing | ||||||
|  | stamp-h1 | ||||||
|  | libtool | ||||||
|  | ltmain.sh | ||||||
|  | m4/*.m4 | ||||||
|  |  | ||||||
|  | # git-version-gen magic | ||||||
|  | .tarball-version | ||||||
|  | .version | ||||||
|  | osmo-upf-*.tar.bz2 | ||||||
|  | osmo-upf-*.tar.gz | ||||||
|  |  | ||||||
|  | tags | ||||||
|  | /deps | ||||||
|  |  | ||||||
|  | src/osmo-upf/osmo-upf | ||||||
|  |  | ||||||
|  | #tests | ||||||
|  | tests/testsuite.dir | ||||||
|  | tests/*/*_test | ||||||
|  |  | ||||||
|  | tests/atconfig | ||||||
|  | tests/atlocal | ||||||
|  | tests/package.m4 | ||||||
|  | tests/testsuite | ||||||
|  | tests/testsuite.log | ||||||
|  |  | ||||||
|  | writtenconfig/ | ||||||
|  |  | ||||||
|  | # manuals | ||||||
|  | doc/manuals/*.html | ||||||
|  | doc/manuals/*.svg | ||||||
|  | doc/manuals/*.pdf | ||||||
|  | doc/manuals/*__*.png | ||||||
|  | doc/manuals/*.check | ||||||
|  | doc/manuals/generated/ | ||||||
|  | doc/manuals/osmoupf-usermanual.xml | ||||||
|  | doc/manuals/common | ||||||
|  | doc/manuals/build | ||||||
|  |  | ||||||
|  | contrib/osmo-upf.spec | ||||||
							
								
								
									
										3
									
								
								.gitreview
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.gitreview
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | [gerrit] | ||||||
|  | host=gerrit.osmocom.org | ||||||
|  | project=osmo-upf | ||||||
							
								
								
									
										36
									
								
								Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | |||||||
|  | AUTOMAKE_OPTIONS = foreign dist-bzip2 1.6 | ||||||
|  |  | ||||||
|  | ## FIXME: automake >= 1.13 or autoconf >= 2.70 provide better suited AC_CONFIG_MACRO_DIRS for configure.ac | ||||||
|  | ## remove line below when OE toolchain is updated to version which include those | ||||||
|  | ACLOCAL_AMFLAGS = -I m4 | ||||||
|  | AM_CPPFLAGS = \ | ||||||
|  | 	$(all_includes) \ | ||||||
|  | 	-I$(top_srcdir)/include \ | ||||||
|  | 	$(NULL) | ||||||
|  |  | ||||||
|  | SUBDIRS = \ | ||||||
|  | 	include \ | ||||||
|  | 	src \ | ||||||
|  | 	tests \ | ||||||
|  | 	doc \ | ||||||
|  | 	contrib \ | ||||||
|  | 	$(NULL) | ||||||
|  |  | ||||||
|  | BUILT_SOURCES = $(top_srcdir)/.version | ||||||
|  | EXTRA_DIST = \ | ||||||
|  | 	     .version \ | ||||||
|  | 	     contrib/osmo-upf.spec.in \ | ||||||
|  | 	     debian \ | ||||||
|  | 	     git-version-gen \ | ||||||
|  | 	     osmoappdesc.py \ | ||||||
|  | 	     $(NULL) | ||||||
|  |  | ||||||
|  | AM_DISTCHECK_CONFIGURE_FLAGS = \ | ||||||
|  | 	--with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir) | ||||||
|  |  | ||||||
|  | @RELMAKE@ | ||||||
|  |  | ||||||
|  | $(top_srcdir)/.version: | ||||||
|  | 	echo $(VERSION) > $@-t && mv $@-t $@ | ||||||
|  | dist-hook: | ||||||
|  | 	echo $(VERSION) > $(distdir)/.tarball-version | ||||||
							
								
								
									
										54
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,54 @@ | |||||||
|  | osmo-upf - Osmocom User Plane Function Implementation | ||||||
|  | ===================================================== | ||||||
|  |  | ||||||
|  | Homepage | ||||||
|  | -------- | ||||||
|  |  | ||||||
|  | The official homepage of the project is | ||||||
|  | https://osmocom.org/projects/osmoupf/wiki | ||||||
|  |  | ||||||
|  | GIT Repository | ||||||
|  | -------------- | ||||||
|  |  | ||||||
|  | You can clone from the official osmo-upf.git repository using | ||||||
|  |  | ||||||
|  | 	git clone git://git.osmocom.org/osmo-upf.git | ||||||
|  |  | ||||||
|  | There is a cgit interface at https://git.osmocom.org/osmo-upf/ | ||||||
|  |  | ||||||
|  | To submit patches, see "Contributing" below. | ||||||
|  |  | ||||||
|  | Documentation | ||||||
|  | ------------- | ||||||
|  |  | ||||||
|  | User Manuals and VTY reference manuals are [optionally] built in PDF form | ||||||
|  | as part of the build process. | ||||||
|  |  | ||||||
|  | Pre-rendered PDF version of the current "master" can be found at | ||||||
|  | [User Manual](https://ftp.osmocom.org/docs/latest/osmoupf-usermanual.pdf) | ||||||
|  | as well as the [VTY Reference Manual](https://ftp.osmocom.org/docs/latest/osmoupf-vty-reference.pdf) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Mailing List | ||||||
|  | ------------ | ||||||
|  |  | ||||||
|  | Discussions related to osmo-bts are happening on the | ||||||
|  | osmocom-net-gprs@lists.osmocom.org mailing list, please see | ||||||
|  | https://lists.osmocom.org/postorius/lists/osmocom-net-gprs@lists.osmocom.org/ | ||||||
|  | for subscription options and the list archive. | ||||||
|  |  | ||||||
|  | Please observe the [Osmocom Mailing List | ||||||
|  | Rules](https://osmocom.org/projects/cellular-infrastructure/wiki/Mailing_List_Rules) | ||||||
|  | when posting. | ||||||
|  |  | ||||||
|  | Contributing | ||||||
|  | ------------ | ||||||
|  |  | ||||||
|  | Our coding standards are described at | ||||||
|  | https://osmocom.org/projects/cellular-infrastructure/wiki/Coding_standards | ||||||
|  |  | ||||||
|  | Submit patches at https://gerrit.osmocom.org/ | ||||||
|  | See also https://osmocom.org/projects/cellular-infrastructure/wiki/Gerrit | ||||||
|  |  | ||||||
|  | The current patch queue for OsmoUPF can be seen at | ||||||
|  | https://gerrit.osmocom.org/#/q/project:osmo-upf+status:open | ||||||
							
								
								
									
										9
									
								
								TODO-RELEASE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								TODO-RELEASE
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | # When cleaning up this file: bump API version in corresponding Makefile.am and rename corresponding debian/lib*.install | ||||||
|  | # according to https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html#Updating-version-info | ||||||
|  | # In short: | ||||||
|  | # LIBVERSION=c:r:a | ||||||
|  | # If the library source code has changed at all since the last update, then increment revision: c:r + 1:a. | ||||||
|  | # If any interfaces have been added, removed, or changed since the last update: c + 1:0:0. | ||||||
|  | # If any interfaces have been added since the last public release: c:r:a + 1. | ||||||
|  | # If any interfaces have been removed or changed since the last public release: c:r:0. | ||||||
|  | #library	what		description / commit summary line | ||||||
							
								
								
									
										210
									
								
								configure.ac
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										210
									
								
								configure.ac
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,210 @@ | |||||||
|  | AC_INIT([osmo-upf], | ||||||
|  | 	m4_esyscmd([./git-version-gen .tarball-version]), | ||||||
|  | 	[osmocom-net-gprs@lists.osmocom.org]) | ||||||
|  |  | ||||||
|  | dnl *This* is the root dir, even if an install-sh exists in ../ or ../../ | ||||||
|  | AC_CONFIG_AUX_DIR([.]) | ||||||
|  |  | ||||||
|  | AM_INIT_AUTOMAKE([dist-bzip2]) | ||||||
|  | AC_CONFIG_TESTDIR(tests) | ||||||
|  |  | ||||||
|  | CFLAGS="$CFLAGS -std=gnu11" | ||||||
|  |  | ||||||
|  | dnl kernel style compile messages | ||||||
|  | m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) | ||||||
|  |  | ||||||
|  | dnl include release helper | ||||||
|  | RELMAKE='-include osmo-release.mk' | ||||||
|  | AC_SUBST([RELMAKE]) | ||||||
|  |  | ||||||
|  | dnl checks for programs | ||||||
|  | AC_PROG_MAKE_SET | ||||||
|  | AC_PROG_CC | ||||||
|  | AC_PROG_INSTALL | ||||||
|  | LT_INIT | ||||||
|  |  | ||||||
|  | dnl patching ${archive_cmds} to affect generation of file "libtool" to fix linking with clang | ||||||
|  | AS_CASE(["$LD"],[*clang*], | ||||||
|  |   [AS_CASE(["${host_os}"], | ||||||
|  |      [*linux*],[archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'])]) | ||||||
|  |  | ||||||
|  | dnl check for pkg-config (explained in detail in libosmocore/configure.ac) | ||||||
|  | AC_PATH_PROG(PKG_CONFIG_INSTALLED, pkg-config, no) | ||||||
|  | if test "x$PKG_CONFIG_INSTALLED" = "xno"; then | ||||||
|  |         AC_MSG_WARN([You need to install pkg-config]) | ||||||
|  | fi | ||||||
|  | PKG_PROG_PKG_CONFIG([0.20]) | ||||||
|  |  | ||||||
|  | dnl checks for libraries | ||||||
|  | AC_SEARCH_LIBS([dlopen], [dl dld], [LIBRARY_DL="$LIBS";LIBS=""]) | ||||||
|  | AC_SUBST(LIBRARY_DL) | ||||||
|  |  | ||||||
|  | PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 1.5.0) | ||||||
|  | PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 1.5.0) | ||||||
|  | PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl >= 1.5.0) | ||||||
|  |  | ||||||
|  | dnl checks for header files | ||||||
|  | AC_HEADER_STDC | ||||||
|  |  | ||||||
|  | dnl Checks for typedefs, structures and compiler characteristics | ||||||
|  |  | ||||||
|  | AC_ARG_ENABLE(sanitize, | ||||||
|  | 	[AS_HELP_STRING( | ||||||
|  | 		[--enable-sanitize], | ||||||
|  | 		[Compile with address sanitizer enabled], | ||||||
|  | 	)], | ||||||
|  | 	[sanitize=$enableval], [sanitize="no"]) | ||||||
|  | if test x"$sanitize" = x"yes" | ||||||
|  | then | ||||||
|  | 	CFLAGS="$CFLAGS -fsanitize=address -fsanitize=undefined" | ||||||
|  | 	CPPFLAGS="$CPPFLAGS -fsanitize=address -fsanitize=undefined" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | AC_ARG_ENABLE(werror, | ||||||
|  | 	[AS_HELP_STRING( | ||||||
|  | 		[--enable-werror], | ||||||
|  | 		[Turn all compiler warnings into errors, with exceptions: | ||||||
|  | 		 a) deprecation (allow upstream to mark deprecation without breaking builds); | ||||||
|  | 		 b) "#warning" pragmas (allow to remind ourselves of errors without breaking builds) | ||||||
|  | 		] | ||||||
|  | 	)], | ||||||
|  | 	[werror=$enableval], [werror="no"]) | ||||||
|  | if test x"$werror" = x"yes" | ||||||
|  | then | ||||||
|  | 	WERROR_FLAGS="-Werror" | ||||||
|  | 	WERROR_FLAGS+=" -Wno-error=deprecated -Wno-error=deprecated-declarations" | ||||||
|  | 	WERROR_FLAGS+=" -Wno-error=cpp" # "#warning" | ||||||
|  | 	CFLAGS="$CFLAGS $WERROR_FLAGS" | ||||||
|  | 	CPPFLAGS="$CPPFLAGS $WERROR_FLAGS" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | # The following test is taken from WebKit's webkit.m4 | ||||||
|  | saved_CFLAGS="$CFLAGS" | ||||||
|  | CFLAGS="$CFLAGS -fvisibility=hidden " | ||||||
|  | AC_MSG_CHECKING([if ${CC} supports -fvisibility=hidden]) | ||||||
|  | AC_COMPILE_IFELSE([AC_LANG_SOURCE([char foo;])], | ||||||
|  |       [ AC_MSG_RESULT([yes]) | ||||||
|  |         SYMBOL_VISIBILITY="-fvisibility=hidden"], | ||||||
|  |         AC_MSG_RESULT([no])) | ||||||
|  | CFLAGS="$saved_CFLAGS" | ||||||
|  | AC_SUBST(SYMBOL_VISIBILITY) | ||||||
|  |  | ||||||
|  | # Coverage build taken from WebKit's configure.in | ||||||
|  | AC_MSG_CHECKING([whether to enable code coverage support]) | ||||||
|  | AC_ARG_ENABLE(coverage, | ||||||
|  |               AC_HELP_STRING([--enable-coverage], | ||||||
|  |                              [enable code coverage support [default=no]]), | ||||||
|  |               [],[enable_coverage="no"]) | ||||||
|  | AC_MSG_RESULT([$enable_coverage]) | ||||||
|  | if test "$enable_coverage" = "yes"; then | ||||||
|  |    COVERAGE_CFLAGS="-ftest-coverage -fprofile-arcs" | ||||||
|  |    COVERAGE_LDFLAGS="-ftest-coverage -fprofile-arcs" | ||||||
|  |    AC_SUBST([COVERAGE_CFLAGS]) | ||||||
|  |    AC_SUBST([COVERAGE_LDFLAGS]) | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | AC_ARG_ENABLE(profile, | ||||||
|  | 		[AS_HELP_STRING([--enable-profile], [Compile with profiling support enabled], )], | ||||||
|  | 		[profile=$enableval], [profile="no"]) | ||||||
|  | if test x"$profile" = x"yes" | ||||||
|  | then | ||||||
|  | 	CFLAGS="$CFLAGS -pg" | ||||||
|  | 	CPPFLAGS="$CPPFLAGS -pg" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | AC_ARG_ENABLE([external_tests], | ||||||
|  | 		AC_HELP_STRING([--enable-external-tests], | ||||||
|  | 				[Include the VTY/CTRL tests in make check [default=no]]), | ||||||
|  | 		[enable_ext_tests="$enableval"],[enable_ext_tests="no"]) | ||||||
|  | if test "x$enable_ext_tests" = "xyes" ; then | ||||||
|  | 	AC_CHECK_PROG(PYTHON3_AVAIL,python3,yes) | ||||||
|  | 	 if test "x$PYTHON3_AVAIL" != "xyes" ; then | ||||||
|  | 		AC_MSG_ERROR([Please install python3 to run the VTY/CTRL tests.]) | ||||||
|  | 	fi | ||||||
|  | 	AC_CHECK_PROG(OSMOTESTEXT_CHECK,osmotestvty.py,yes) | ||||||
|  | 	 if test "x$OSMOTESTEXT_CHECK" != "xyes" ; then | ||||||
|  | 		AC_MSG_ERROR([Please install git://osmocom.org/python/osmo-python-tests to run the VTY/CTRL tests.]) | ||||||
|  | 	fi | ||||||
|  | fi | ||||||
|  | AC_MSG_CHECKING([whether to enable VTY/CTRL tests]) | ||||||
|  | AC_MSG_RESULT([$enable_ext_tests]) | ||||||
|  | AM_CONDITIONAL(ENABLE_EXT_TESTS, test "x$enable_ext_tests" = "xyes") | ||||||
|  |  | ||||||
|  | # Generate manuals | ||||||
|  | AC_ARG_ENABLE(manuals, | ||||||
|  | 	[AS_HELP_STRING( | ||||||
|  | 		[--enable-manuals], | ||||||
|  | 		[Generate manual PDFs [default=no]], | ||||||
|  | 	)], | ||||||
|  | 	[osmo_ac_build_manuals=$enableval], [osmo_ac_build_manuals="no"]) | ||||||
|  | AM_CONDITIONAL([BUILD_MANUALS], [test x"$osmo_ac_build_manuals" = x"yes"]) | ||||||
|  | AC_ARG_VAR(OSMO_GSM_MANUALS_DIR, [path to common osmo-gsm-manuals files, overriding pkg-config and "../osmo-gsm-manuals" | ||||||
|  | 	fallback]) | ||||||
|  | if test x"$osmo_ac_build_manuals" = x"yes" | ||||||
|  | then | ||||||
|  | 	# Find OSMO_GSM_MANUALS_DIR (env, pkg-conf, fallback) | ||||||
|  | 	if test -n "$OSMO_GSM_MANUALS_DIR"; then | ||||||
|  | 		echo "checking for OSMO_GSM_MANUALS_DIR... $OSMO_GSM_MANUALS_DIR (from env)" | ||||||
|  | 	else | ||||||
|  | 		OSMO_GSM_MANUALS_DIR="$($PKG_CONFIG osmo-gsm-manuals --variable=osmogsmmanualsdir 2>/dev/null)" | ||||||
|  | 		if test -n "$OSMO_GSM_MANUALS_DIR"; then | ||||||
|  | 			echo "checking for OSMO_GSM_MANUALS_DIR... $OSMO_GSM_MANUALS_DIR (from pkg-conf)" | ||||||
|  | 		else | ||||||
|  | 			OSMO_GSM_MANUALS_DIR="../osmo-gsm-manuals" | ||||||
|  | 			echo "checking for OSMO_GSM_MANUALS_DIR... $OSMO_GSM_MANUALS_DIR (fallback)" | ||||||
|  | 		fi | ||||||
|  | 	fi | ||||||
|  | 	if ! test -d "$OSMO_GSM_MANUALS_DIR"; then | ||||||
|  | 		AC_MSG_ERROR("OSMO_GSM_MANUALS_DIR does not exist! Install osmo-gsm-manuals or set OSMO_GSM_MANUALS_DIR.") | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	# Find and run check-depends | ||||||
|  | 	CHECK_DEPENDS="$OSMO_GSM_MANUALS_DIR/check-depends.sh" | ||||||
|  | 	if ! test -x "$CHECK_DEPENDS"; then | ||||||
|  | 		CHECK_DEPENDS="osmo-gsm-manuals-check-depends" | ||||||
|  | 	fi | ||||||
|  | 	if ! $CHECK_DEPENDS; then | ||||||
|  | 		AC_MSG_ERROR("missing dependencies for --enable-manuals") | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	# Put in Makefile with absolute path | ||||||
|  | 	OSMO_GSM_MANUALS_DIR="$(realpath "$OSMO_GSM_MANUALS_DIR")" | ||||||
|  | 	AC_SUBST([OSMO_GSM_MANUALS_DIR]) | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | # https://www.freedesktop.org/software/systemd/man/daemon.html | ||||||
|  | AC_ARG_WITH([systemdsystemunitdir], | ||||||
|  |      [AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files])],, | ||||||
|  |      [with_systemdsystemunitdir=auto]) | ||||||
|  | AS_IF([test "x$with_systemdsystemunitdir" = "xyes" -o "x$with_systemdsystemunitdir" = "xauto"], [ | ||||||
|  |      def_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd) | ||||||
|  |  | ||||||
|  |      AS_IF([test "x$def_systemdsystemunitdir" = "x"], | ||||||
|  |    [AS_IF([test "x$with_systemdsystemunitdir" = "xyes"], | ||||||
|  |     [AC_MSG_ERROR([systemd support requested but pkg-config unable to query systemd package])]) | ||||||
|  |     with_systemdsystemunitdir=no], | ||||||
|  |    [with_systemdsystemunitdir="$def_systemdsystemunitdir"])]) | ||||||
|  | AS_IF([test "x$with_systemdsystemunitdir" != "xno"], | ||||||
|  |       [AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])]) | ||||||
|  | AM_CONDITIONAL([HAVE_SYSTEMD], [test "x$with_systemdsystemunitdir" != "xno"]) | ||||||
|  |  | ||||||
|  | AC_MSG_RESULT([CFLAGS="$CFLAGS"]) | ||||||
|  | AC_MSG_RESULT([CPPFLAGS="$CPPFLAGS"]) | ||||||
|  |  | ||||||
|  | dnl Generate the output | ||||||
|  | AM_CONFIG_HEADER(config.h) | ||||||
|  |  | ||||||
|  | AC_OUTPUT( | ||||||
|  |     include/Makefile | ||||||
|  |     include/osmocom/Makefile | ||||||
|  |     include/osmocom/upf/Makefile | ||||||
|  |     src/Makefile | ||||||
|  |     src/osmo-upf/Makefile | ||||||
|  |     tests/Makefile | ||||||
|  |     tests/atlocal | ||||||
|  |     doc/Makefile | ||||||
|  |     doc/examples/Makefile | ||||||
|  |     doc/manuals/Makefile | ||||||
|  |     contrib/Makefile | ||||||
|  |     contrib/systemd/Makefile | ||||||
|  |     Makefile) | ||||||
							
								
								
									
										1
									
								
								contrib/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								contrib/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | SUBDIRS = systemd | ||||||
							
								
								
									
										64
									
								
								contrib/jenkins.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										64
									
								
								contrib/jenkins.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,64 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  | # jenkins build helper script for osmo-upf.  This is how we build on jenkins.osmocom.org | ||||||
|  | # | ||||||
|  | # environment variables: | ||||||
|  | # * WITH_MANUALS: build manual PDFs if set to "1" | ||||||
|  | # * PUBLISH: upload manuals after building if set to "1" (ignored without WITH_MANUALS = "1") | ||||||
|  | # | ||||||
|  |  | ||||||
|  | if ! [ -x "$(command -v osmo-build-dep.sh)" ]; then | ||||||
|  | 	echo "Error: We need to have scripts/osmo-deps.sh from http://git.osmocom.org/osmo-ci/ in PATH !" | ||||||
|  | 	exit 2 | ||||||
|  | fi | ||||||
|  |  | ||||||
|  |  | ||||||
|  | set -ex | ||||||
|  |  | ||||||
|  | base="$PWD" | ||||||
|  | deps="$base/deps" | ||||||
|  | inst="$deps/install" | ||||||
|  | export deps inst | ||||||
|  |  | ||||||
|  | osmo-clean-workspace.sh | ||||||
|  |  | ||||||
|  | mkdir "$deps" || true | ||||||
|  |  | ||||||
|  | verify_value_string_arrays_are_terminated.py $(find . -name "*.[hc]") | ||||||
|  |  | ||||||
|  | export PKG_CONFIG_PATH="$inst/lib/pkgconfig:$PKG_CONFIG_PATH" | ||||||
|  | export LD_LIBRARY_PATH="$inst/lib" | ||||||
|  | export PATH="$inst/bin:$PATH" | ||||||
|  |  | ||||||
|  | osmo-build-dep.sh libosmocore "" --disable-doxygen | ||||||
|  |  | ||||||
|  | # Additional configure options and depends | ||||||
|  | CONFIG="" | ||||||
|  | if [ "$WITH_MANUALS" = "1" ]; then | ||||||
|  | 	CONFIG="--enable-manuals" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | set +x | ||||||
|  | echo | ||||||
|  | echo | ||||||
|  | echo | ||||||
|  | echo " =============================== osmo-upf ===============================" | ||||||
|  | echo | ||||||
|  | set -x | ||||||
|  |  | ||||||
|  | cd "$base" | ||||||
|  | autoreconf --install --force | ||||||
|  | ./configure --enable-sanitize --enable-external-tests $CONFIG | ||||||
|  | $MAKE $PARALLEL_MAKE | ||||||
|  | LD_LIBRARY_PATH="$inst/lib" $MAKE check \ | ||||||
|  |   || cat-testlogs.sh | ||||||
|  | LD_LIBRARY_PATH="$inst/lib" \ | ||||||
|  |   DISTCHECK_CONFIGURE_FLAGS="--enable-vty-tests --enable-external-tests $CONFIG" \ | ||||||
|  |   $MAKE $PARALLEL_MAKE distcheck \ | ||||||
|  |   || cat-testlogs.sh | ||||||
|  |  | ||||||
|  | if [ "$WITH_MANUALS" = "1" ] && [ "$PUBLISH" = "1" ]; then | ||||||
|  | 	make -C "$base/doc/manuals" publish | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | $MAKE $PARALLEL_MAKE maintainer-clean | ||||||
|  | osmo-clean-workspace.sh | ||||||
							
								
								
									
										86
									
								
								contrib/osmo-upf.spec.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								contrib/osmo-upf.spec.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,86 @@ | |||||||
|  | # | ||||||
|  | # spec file for package osmo-upf | ||||||
|  | # | ||||||
|  | # Copyright (c) 2017, Martin Hauke <mardnh@gmx.de> | ||||||
|  | # | ||||||
|  | # All modifications and additions to the file contributed by third parties | ||||||
|  | # remain the property of their copyright owners, unless otherwise agreed | ||||||
|  | # upon. The license for this file, and modifications and additions to the | ||||||
|  | # file, is the same license as for the pristine package itself (unless the | ||||||
|  | # license for the pristine package is not an Open Source License, in which | ||||||
|  | # case the license is the MIT License). An "Open Source License" is a | ||||||
|  | # license that conforms to the Open Source Definition (Version 1.9) | ||||||
|  | # published by the Open Source Initiative. | ||||||
|  |  | ||||||
|  | ## Disable LTO for now since it breaks compilation of the tests | ||||||
|  | ## https://osmocom.org/issues/4113 | ||||||
|  | %define _lto_cflags %{nil} | ||||||
|  |  | ||||||
|  | Name:           osmo-upf | ||||||
|  | Version:        @VERSION@ | ||||||
|  | Release:        0 | ||||||
|  | Summary:        OsmoUPF: Osmocom User Plane Function | ||||||
|  | License:        AGPL-3.0-or-later AND GPL-2.0-or-later | ||||||
|  | Group:          Hardware/Mobile | ||||||
|  | URL:            https://osmocom.org/projects/osmoupf | ||||||
|  | Source:         %{name}-%{version}.tar.xz | ||||||
|  | BuildRequires:  autoconf-archive | ||||||
|  | BuildRequires:  automake >= 1.9 | ||||||
|  | BuildRequires:  libtool >= 2 | ||||||
|  | BuildRequires:  lksctp-tools-devel | ||||||
|  | BuildRequires:  pkgconfig >= 0.20 | ||||||
|  | %if 0%{?suse_version} | ||||||
|  | BuildRequires:  systemd-rpm-macros | ||||||
|  | %endif | ||||||
|  | BuildRequires:  pkgconfig(libosmocore) >= 1.6.0 | ||||||
|  | BuildRequires:  pkgconfig(libosmoctrl) >= 1.6.0 | ||||||
|  | BuildRequires:  pkgconfig(libosmovty) >= 1.6.0 | ||||||
|  | BuildRequires:  pkgconfig(talloc) | ||||||
|  | %{?systemd_requires} | ||||||
|  |  | ||||||
|  | %description | ||||||
|  | OsmoUPF: Osmocom User Plane Function | ||||||
|  |  | ||||||
|  | %prep | ||||||
|  | %setup -q | ||||||
|  |  | ||||||
|  | %build | ||||||
|  | echo "%{version}" >.tarball-version | ||||||
|  | autoreconf -fi | ||||||
|  | %configure \ | ||||||
|  |   --docdir=%{_docdir}/%{name} \ | ||||||
|  |   --with-systemdsystemunitdir=%{_unitdir} | ||||||
|  | make %{?_smp_mflags} | ||||||
|  |  | ||||||
|  | %install | ||||||
|  | %make_install | ||||||
|  |  | ||||||
|  | %if 0%{?suse_version} | ||||||
|  | %preun | ||||||
|  | %service_del_preun %{name}.service | ||||||
|  |  | ||||||
|  | %postun | ||||||
|  | %service_del_postun %{name}.service | ||||||
|  |  | ||||||
|  | %pre | ||||||
|  | %service_add_pre %{name}.service | ||||||
|  |  | ||||||
|  | %post | ||||||
|  | %service_add_post %{name}.service | ||||||
|  | %endif | ||||||
|  |  | ||||||
|  | %check | ||||||
|  | make %{?_smp_mflags} check || (find . -name testsuite.log -exec cat {} +) | ||||||
|  |  | ||||||
|  | %files | ||||||
|  | %license COPYING | ||||||
|  | %doc AUTHORS README.md | ||||||
|  | %{_bindir}/osmo-upf | ||||||
|  | %dir %{_docdir}/%{name}/examples | ||||||
|  | %dir %{_docdir}/%{name}/examples/osmo-upf | ||||||
|  | %{_docdir}/%{name}/examples/osmo-upf/osmo-upf.cfg | ||||||
|  | %dir %{_sysconfdir}/osmocom | ||||||
|  | %config(noreplace) %{_sysconfdir}/osmocom/osmo-upf.cfg | ||||||
|  | %{_unitdir}/%{name}.service | ||||||
|  |  | ||||||
|  | %changelog | ||||||
							
								
								
									
										6
									
								
								contrib/systemd/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								contrib/systemd/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | EXTRA_DIST = osmo-upf.service | ||||||
|  |  | ||||||
|  | if HAVE_SYSTEMD | ||||||
|  | systemdsystemunit_DATA = \ | ||||||
|  |   osmo-upf.service | ||||||
|  | endif | ||||||
							
								
								
									
										11
									
								
								contrib/systemd/osmo-upf.service
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								contrib/systemd/osmo-upf.service
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | |||||||
|  | [Unit] | ||||||
|  | Description=Osmocom User Plane Function (UPF) | ||||||
|  |  | ||||||
|  | [Service] | ||||||
|  | Type=simple | ||||||
|  | Restart=always | ||||||
|  | ExecStart=/usr/bin/osmo-upf -c /etc/osmocom/osmo-upf.cfg | ||||||
|  | RestartSec=2 | ||||||
|  |  | ||||||
|  | [Install] | ||||||
|  | WantedBy=multi-user.target | ||||||
							
								
								
									
										0
									
								
								debian/changelog
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								debian/changelog
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								debian/compat
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								debian/compat
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | 9 | ||||||
							
								
								
									
										42
									
								
								debian/control
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								debian/control
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | |||||||
|  | Source: osmo-upf | ||||||
|  | Section: net | ||||||
|  | Priority: extra | ||||||
|  | Maintainer: Osmocom team <openbsc@lists.osmocom.org> | ||||||
|  | Build-Depends: debhelper (>=9), | ||||||
|  |                dh-autoreconf, | ||||||
|  |                autotools-dev, | ||||||
|  |                autoconf, | ||||||
|  |                autoconf-archive, | ||||||
|  |                automake, | ||||||
|  |                libtool, | ||||||
|  |                pkg-config, | ||||||
|  |                python3-minimal, | ||||||
|  |                libtalloc-dev, | ||||||
|  |                libosmocore-dev (>= 1.6.0), | ||||||
|  |                osmo-gsm-manuals-dev (>= 1.2.0) | ||||||
|  | Standards-Version: 3.9.8 | ||||||
|  | Vcs-Git: git://git.osmocom.org/osmo-upf.git | ||||||
|  | Vcs-Browser: https://git.osmocom.org/osmo-upf/ | ||||||
|  | Homepage: https://projects.osmocom.org/projects/osmo-upf | ||||||
|  |  | ||||||
|  | Package: osmo-upf | ||||||
|  | Architecture: any | ||||||
|  | Multi-Arch: foreign | ||||||
|  | Depends: ${misc:Depends}, ${shlibs:Depends} | ||||||
|  | Description: OsmoUPF: Osmocom User Plane Function | ||||||
|  |  | ||||||
|  | Package: osmo-upf-dbg | ||||||
|  | Section: debug | ||||||
|  | Architecture: any | ||||||
|  | Multi-Arch: same | ||||||
|  | Depends: osmo-upf (= ${binary:Version}), ${misc:Depends} | ||||||
|  | Description: OsmoUPF: Osmocom User Plane Function | ||||||
|  |  | ||||||
|  | Package: osmo-upf-doc | ||||||
|  | Architecture: all | ||||||
|  | Section: doc | ||||||
|  | Priority: optional | ||||||
|  | Depends: ${misc:Depends} | ||||||
|  | Description: ${misc:Package} PDF documentation | ||||||
|  |  Various manuals: user manual, VTY reference manual and/or | ||||||
|  |  protocol/interface manuals. | ||||||
							
								
								
									
										19
									
								
								debian/copyright
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								debian/copyright
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ | ||||||
|  | Upstream-Name: osmo-upf | ||||||
|  | Source: git://git.osmocom.org/osmo-upf | ||||||
|  |  | ||||||
|  | Files:     * | ||||||
|  | Copyright: 2021-2022 sysmocom - s.f.m.c. GmbH <info@sysmocom.de> | ||||||
|  | License:   AGPL-3.0+ | ||||||
|  |  This program is free software; you can redistribute it and/or modify | ||||||
|  |  it under the terms of the GNU Affero General Public License as published by | ||||||
|  |  the Free Software Foundation; either version 3 of the License, or | ||||||
|  |  (at your option) any later version. | ||||||
|  |  . | ||||||
|  |  This program is distributed in the hope that it will be useful, | ||||||
|  |  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  GNU Affero General Public License for more details. | ||||||
|  |  . | ||||||
|  |  You should have received a copy of the GNU Affero General Public License | ||||||
|  |  along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||||
							
								
								
									
										4
									
								
								debian/osmo-upf.install
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								debian/osmo-upf.install
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | etc/osmocom/osmo-upf.cfg | ||||||
|  | lib/systemd/system/osmo-upf.service | ||||||
|  | usr/bin/osmo-upf | ||||||
|  | usr/share/doc/osmo-upf/examples/osmo-upf/osmo-upf.cfg usr/share/doc/osmo-upf/examples | ||||||
							
								
								
									
										66
									
								
								debian/rules
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										66
									
								
								debian/rules
									
									
									
									
										vendored
									
									
										Executable file
									
								
							| @@ -0,0 +1,66 @@ | |||||||
|  | #!/usr/bin/make -f | ||||||
|  | # You must remove unused comment lines for the released package. | ||||||
|  | # See debhelper(7) (uncomment to enable) | ||||||
|  | # This is an autogenerated template for debian/rules. | ||||||
|  | # | ||||||
|  | # Output every command that modifies files on the build system. | ||||||
|  | #export DH_VERBOSE = 1 | ||||||
|  | # | ||||||
|  | # Copy some variable definitions from pkg-info.mk and vendor.mk | ||||||
|  | # under /usr/share/dpkg/ to here if they are useful. | ||||||
|  | # | ||||||
|  | # See FEATURE AREAS/ENVIRONMENT in dpkg-buildflags(1) | ||||||
|  | # Apply all hardening options | ||||||
|  | #export DEB_BUILD_MAINT_OPTIONS = hardening=+all | ||||||
|  | # Package maintainers to append CFLAGS | ||||||
|  | #export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic | ||||||
|  | # Package maintainers to append LDFLAGS | ||||||
|  | #export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed | ||||||
|  | # | ||||||
|  | # With debhelper version 9 or newer, the dh command exports | ||||||
|  | # all buildflags.  So there is no need to include the | ||||||
|  | # /usr/share/dpkg/buildflags.mk file here if compat is 9 or newer. | ||||||
|  | # | ||||||
|  | # These are rarely used code. (START) | ||||||
|  | # | ||||||
|  | # The following include for *.mk magically sets miscellaneous | ||||||
|  | # variables while honoring existing values of pertinent | ||||||
|  | # environment variables: | ||||||
|  | # | ||||||
|  | # Architecture-related variables such as DEB_TARGET_MULTIARCH: | ||||||
|  | #include /usr/share/dpkg/architecture.mk | ||||||
|  | # Vendor-related variables such as DEB_VENDOR: | ||||||
|  | #include /usr/share/dpkg/vendor.mk | ||||||
|  | # Package-related variables such as DEB_DISTRIBUTION | ||||||
|  | #include /usr/share/dpkg/pkg-info.mk | ||||||
|  | # | ||||||
|  | # You may alternatively set them susing a simple script such as: | ||||||
|  | # DEB_VENDOR ?= $(shell dpkg-vendor --query  Vendor) | ||||||
|  | # | ||||||
|  | # These are rarely used code. (END) | ||||||
|  | # | ||||||
|  |  | ||||||
|  | # main packaging script based on dh7 syntax | ||||||
|  | %: | ||||||
|  | 	dh $@ --with autoreconf | ||||||
|  |  | ||||||
|  | # debmake generated override targets | ||||||
|  | CONFIGURE_FLAGS += --with-systemdsystemunitdir=/lib/systemd/system --enable-manuals | ||||||
|  | override_dh_auto_configure: | ||||||
|  | 	dh_auto_configure -- $(CONFIGURE_FLAGS) | ||||||
|  | # | ||||||
|  | # Do not install libtool archive, python .pyc .pyo | ||||||
|  | #override_dh_install: | ||||||
|  | #	dh_install --list-missing -X.la -X.pyc -X.pyo | ||||||
|  |  | ||||||
|  | # See https://www.debian.org/doc/manuals/developers-reference/best-pkging-practices.html#bpp-dbg | ||||||
|  | override_dh_strip: | ||||||
|  | 	dh_strip -posmo-upf --dbg-package=osmo-upf-dbg | ||||||
|  |  | ||||||
|  | # Print test results in case of a failure | ||||||
|  | override_dh_auto_test: | ||||||
|  | 	dh_auto_test || (find . -name testsuite.log -exec cat {} \; ; false) | ||||||
|  |  | ||||||
|  | # Don't create .pdf.gz files (barely saves space and they can't be opened directly by most pdf readers) | ||||||
|  | override_dh_compress: | ||||||
|  | 	dh_compress -X.pdf | ||||||
							
								
								
									
										1
									
								
								debian/source/format
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								debian/source/format
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | 3.0 (native) | ||||||
							
								
								
									
										4
									
								
								doc/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								doc/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | SUBDIRS = \ | ||||||
|  | 	examples \ | ||||||
|  | 	manuals \ | ||||||
|  | 	$(NULL) | ||||||
							
								
								
									
										30
									
								
								doc/examples/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								doc/examples/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | |||||||
|  | OSMOCONF_FILES = \ | ||||||
|  | 	osmo-upf/osmo-upf.cfg | ||||||
|  |  | ||||||
|  | osmoconfdir = $(sysconfdir)/osmocom | ||||||
|  | osmoconf_DATA = $(OSMOCONF_FILES) | ||||||
|  |  | ||||||
|  | EXTRA_DIST = $(OSMOCONF_FILES) | ||||||
|  |  | ||||||
|  | CFG_FILES = find $(srcdir) -name '*.cfg*' | sed -e 's,^$(srcdir),,' | ||||||
|  |  | ||||||
|  | dist-hook: | ||||||
|  | 	for f in $$($(CFG_FILES)); do \ | ||||||
|  | 	        j="$(distdir)/$$f" && \ | ||||||
|  | 	        mkdir -p "$$(dirname $$j)" && \ | ||||||
|  | 	        $(INSTALL_DATA) $(srcdir)/$$f $$j; \ | ||||||
|  | 	done | ||||||
|  |  | ||||||
|  | install-data-hook: | ||||||
|  | 	for f in $$($(CFG_FILES)); do \ | ||||||
|  | 	        j="$(DESTDIR)$(docdir)/examples/$$f" && \ | ||||||
|  | 	        mkdir -p "$$(dirname $$j)" && \ | ||||||
|  | 	        $(INSTALL_DATA) $(srcdir)/$$f $$j; \ | ||||||
|  | 	done | ||||||
|  |  | ||||||
|  | uninstall-hook: | ||||||
|  | 	@$(PRE_UNINSTALL) | ||||||
|  | 	for f in $$($(CFG_FILES)); do \ | ||||||
|  | 	        j="$(DESTDIR)$(docdir)/examples/$$f" && \ | ||||||
|  | 	        $(RM) $$j; \ | ||||||
|  | 	done | ||||||
							
								
								
									
										9
									
								
								doc/examples/osmo-upf/osmo-upf.cfg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								doc/examples/osmo-upf/osmo-upf.cfg
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | log stderr | ||||||
|  |  logging filter all 1 | ||||||
|  |  logging color 1 | ||||||
|  |  logging print level 1 | ||||||
|  |  logging print category 1 | ||||||
|  |  logging print category-hex 0 | ||||||
|  |  logging print file basename last | ||||||
|  |  logging print extended-timestamp 1 | ||||||
|  |  logging level set-all notice | ||||||
							
								
								
									
										25
									
								
								doc/manuals/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								doc/manuals/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | |||||||
|  | EXTRA_DIST = \ | ||||||
|  |     osmoupf-usermanual.adoc \ | ||||||
|  |     osmoupf-usermanual-docinfo.xml \ | ||||||
|  |     osmoupf-vty-reference.xml \ | ||||||
|  |     chapters \ | ||||||
|  |     regen_doc.sh \ | ||||||
|  |     vty | ||||||
|  |  | ||||||
|  | if BUILD_MANUALS | ||||||
|  |   ASCIIDOC = osmoupf-usermanual.adoc | ||||||
|  |   include $(OSMO_GSM_MANUALS_DIR)/build/Makefile.asciidoc.inc | ||||||
|  |   osmoupf-usermanual.pdf: $(srcdir)/chapters/*.adoc | ||||||
|  |  | ||||||
|  |   VTY_REFERENCE = osmoupf-vty-reference.xml | ||||||
|  |  | ||||||
|  |   BUILT_REFERENCE_XML = $(builddir)/vty/upf_vty_reference.xml | ||||||
|  |   $(builddir)/vty/upf_vty_reference.xml: $(top_builddir)/src/osmo-upf/osmo-upf | ||||||
|  | 	mkdir -p $(builddir)/vty | ||||||
|  | 	$(top_builddir)/src/osmo-upf/osmo-upf --vty-ref-xml > $@ | ||||||
|  |  | ||||||
|  |   include $(OSMO_GSM_MANUALS_DIR)/build/Makefile.vty-reference.inc | ||||||
|  |  | ||||||
|  |   OSMO_REPOSITORY = osmo-upf | ||||||
|  |   include $(OSMO_GSM_MANUALS_DIR)/build/Makefile.common.inc | ||||||
|  | endif | ||||||
							
								
								
									
										24
									
								
								doc/manuals/chapters/overview.adoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								doc/manuals/chapters/overview.adoc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | OsmoUPF | ||||||
|  |  | ||||||
|  | [[overview]] | ||||||
|  | == Overview | ||||||
|  |  | ||||||
|  | This manual should help you getting started with OsmoUPF. It will cover | ||||||
|  | aspects of configuring and running OsmoUPF. | ||||||
|  |  | ||||||
|  | [[intro_overview]] | ||||||
|  | === About OsmoUPF | ||||||
|  |  | ||||||
|  | OsmoUPF is the Osmocom implementation of a User Plane Function for 2G, 3G, 4G | ||||||
|  | and 5G mobile network packet switched user data management. It implements: | ||||||
|  |  | ||||||
|  | - A Packet Forwarding Control Protocol (PFCP) entity to manage the GTP user | ||||||
|  |   plane of mobile subscribers. | ||||||
|  | - GTP forwarding as well as encapsulation/decapsulation of user traffic, using | ||||||
|  |   the Linux mainline kernel GTP module. | ||||||
|  |  | ||||||
|  | The aim is to provide: | ||||||
|  |  | ||||||
|  | - 1000 modifications of tunnel state per second (add/remove/modify), | ||||||
|  | - 4-8 Gbps throughput, | ||||||
|  | - 100-125k concurrent GTP tunnels. | ||||||
							
								
								
									
										47
									
								
								doc/manuals/osmoupf-usermanual-docinfo.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								doc/manuals/osmoupf-usermanual-docinfo.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | |||||||
|  | <revhistory> | ||||||
|  |   <revision> | ||||||
|  |     <revnumber>1</revnumber> | ||||||
|  |     <date>December 2021</date> | ||||||
|  |     <authorinitials>NJH</authorinitials> | ||||||
|  |     <revremark> | ||||||
|  |       Initial OsmoUPF manual | ||||||
|  |     </revremark> | ||||||
|  |   </revision> | ||||||
|  | </revhistory> | ||||||
|  |  | ||||||
|  | <authorgroup> | ||||||
|  |   <author> | ||||||
|  |     <firstname>Neels Janosch</firstname> | ||||||
|  |     <surname>Hofmeyr</surname> | ||||||
|  |     <email>nhofmeyr@sysmocom.de</email> | ||||||
|  |     <authorinitials>NJH</authorinitials> | ||||||
|  |     <affiliation> | ||||||
|  |       <shortaffil>sysmocom</shortaffil> | ||||||
|  |       <orgname>sysmocom - s.f.m.c. GmbH</orgname> | ||||||
|  |       <jobtitle>Software Developer</jobtitle> | ||||||
|  |     </affiliation> | ||||||
|  |   </author> | ||||||
|  | </authorgroup> | ||||||
|  |  | ||||||
|  | <copyright> | ||||||
|  |   <year>2021-2022</year> | ||||||
|  |   <holder>sysmocom - s.f.m.c. GmbH</holder> | ||||||
|  | </copyright> | ||||||
|  |  | ||||||
|  | <legalnotice> | ||||||
|  |   <para> | ||||||
|  | 	Permission is granted to copy, distribute and/or modify this | ||||||
|  | 	document under the terms of the GNU Free Documentation License, | ||||||
|  | 	Version 1.3 or any later version published by the Free Software | ||||||
|  | 	Foundation; with the Invariant Sections being just 'Foreword', | ||||||
|  | 	'Acknowledgements' and 'Preface', with no Front-Cover Texts, | ||||||
|  | 	and no Back-Cover Texts.  A copy of the license is included in | ||||||
|  | 	the section entitled "GNU Free Documentation License". | ||||||
|  |   </para> | ||||||
|  |   <para> | ||||||
|  | 	The Asciidoc source code of this manual can be found at | ||||||
|  | 	<ulink url="http://git.osmocom.org/osmo-gsm-manuals/"> | ||||||
|  | 		http://git.osmocom.org/osmo-gsm-manuals/ | ||||||
|  | 	</ulink> | ||||||
|  |   </para> | ||||||
|  | </legalnotice> | ||||||
							
								
								
									
										28
									
								
								doc/manuals/osmoupf-usermanual.adoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								doc/manuals/osmoupf-usermanual.adoc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | |||||||
|  | :gfdl-enabled: | ||||||
|  | :program-name: OsmoUPF | ||||||
|  |  | ||||||
|  | OsmoUPF User Manual | ||||||
|  | =================== | ||||||
|  | Neels Janosch Hofmeyr <nhofmeyr@sysmocom.de> | ||||||
|  |  | ||||||
|  | include::./common/chapters/preface.adoc[] | ||||||
|  |  | ||||||
|  | include::{srcdir}/chapters/overview.adoc[] | ||||||
|  |  | ||||||
|  | include::./common/chapters/vty.adoc[] | ||||||
|  |  | ||||||
|  | include::./common/chapters/logging.adoc[] | ||||||
|  |  | ||||||
|  | include::./common/chapters/counters-overview.adoc[] | ||||||
|  |  | ||||||
|  | include::./common/chapters/control_if.adoc[] | ||||||
|  |  | ||||||
|  | include::./common/chapters/vty_cpu_sched.adoc[] | ||||||
|  |  | ||||||
|  | include::./common/chapters/port_numbers.adoc[] | ||||||
|  |  | ||||||
|  | include::./common/chapters/bibliography.adoc[] | ||||||
|  |  | ||||||
|  | include::./common/chapters/glossary.adoc[] | ||||||
|  |  | ||||||
|  | include::./common/chapters/gfdl.adoc[] | ||||||
							
								
								
									
										37
									
								
								doc/manuals/osmoupf-vty-reference.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								doc/manuals/osmoupf-vty-reference.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!-- | ||||||
|  |   ex:ts=2:sw=42sts=2:et | ||||||
|  |   -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | ||||||
|  | --> | ||||||
|  | <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML 5.0//EN" | ||||||
|  | "http://docbook.org/xml/5.0/dtd/docbook.dtd" [ | ||||||
|  | <!ENTITY chapter-vty      SYSTEM      "./common/chapters/vty.xml" > | ||||||
|  | <!ENTITY sections-vty     SYSTEM      "generated/docbook_vty.xml"  > | ||||||
|  | ]> | ||||||
|  |  | ||||||
|  | <book> | ||||||
|  |   <info> | ||||||
|  |     <revhistory> | ||||||
|  |         <revision> | ||||||
|  |             <revnumber>v1</revnumber> | ||||||
|  |             <date>30th November 2021</date> | ||||||
|  |             <authorinitials>NJH</authorinitials> | ||||||
|  |             <revremark>Initial</revremark> | ||||||
|  |         </revision> | ||||||
|  |     </revhistory> | ||||||
|  |  | ||||||
|  |     <title>OsmoUPF VTY Reference</title> | ||||||
|  |  | ||||||
|  |     <copyright> | ||||||
|  |       <year>2021-2022</year> | ||||||
|  |     </copyright> | ||||||
|  |  | ||||||
|  |     <legalnotice> | ||||||
|  |       <para>This work is copyright by <orgname>sysmocom - s.f.m.c. GmbH</orgname>. All rights reserved. | ||||||
|  |       </para> | ||||||
|  |     </legalnotice> | ||||||
|  |   </info> | ||||||
|  |  | ||||||
|  |   <!-- Main chapters--> | ||||||
|  |   &chapter-vty; | ||||||
|  | </book> | ||||||
							
								
								
									
										17
									
								
								doc/manuals/regen_doc.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										17
									
								
								doc/manuals/regen_doc.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,17 @@ | |||||||
|  | #!/bin/sh -x | ||||||
|  |  | ||||||
|  | if [ -z "$DOCKER_PLAYGROUND" ]; then | ||||||
|  | 	echo "You need to set DOCKER_PLAYGROUND" | ||||||
|  | 	exit 1 | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | SCRIPT=$(realpath "$0") | ||||||
|  | MANUAL_DIR=$(dirname "$SCRIPT") | ||||||
|  |  | ||||||
|  | COMMIT=${COMMIT:-$(git log -1 --format=format:%H)} | ||||||
|  |  | ||||||
|  | cd "$DOCKER_PLAYGROUND/scripts" || exit 1 | ||||||
|  |  | ||||||
|  | OSMO_UPF_BRANCH=$COMMIT ./regen_doc.sh osmo-upf 4273 \ | ||||||
|  | 	"$MANUAL_DIR/chapters/counters_generated.adoc" \ | ||||||
|  | 	"$MANUAL_DIR/vty/upf_vty_reference.xml" | ||||||
							
								
								
									
										2
									
								
								doc/manuals/vty/upf_vty_additions.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								doc/manuals/vty/upf_vty_additions.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | <vtydoc xmlns='urn:osmocom:xml:libosmocore:vty:doc:1.0'> | ||||||
|  | </vtydoc> | ||||||
							
								
								
									
										151
									
								
								git-version-gen
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										151
									
								
								git-version-gen
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,151 @@ | |||||||
|  | #!/bin/sh | ||||||
|  | # Print a version string. | ||||||
|  | scriptversion=2010-01-28.01 | ||||||
|  |  | ||||||
|  | # Copyright (C) 2007-2010 Free Software Foundation, Inc. | ||||||
|  | # | ||||||
|  | # This program is free software: you can redistribute it and/or modify | ||||||
|  | # it under the terms of the GNU General Public License as published by | ||||||
|  | # the Free Software Foundation; either version 3 of the License, or | ||||||
|  | # (at your option) any later version. | ||||||
|  | # | ||||||
|  | # This program is distributed in the hope that it will be useful, | ||||||
|  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | # GNU General Public License for more details. | ||||||
|  | # | ||||||
|  | # You should have received a copy of the GNU General Public License | ||||||
|  | # along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||||
|  |  | ||||||
|  | # This script is derived from GIT-VERSION-GEN from GIT: http://git.or.cz/. | ||||||
|  | # It may be run two ways: | ||||||
|  | # - from a git repository in which the "git describe" command below | ||||||
|  | #   produces useful output (thus requiring at least one signed tag) | ||||||
|  | # - from a non-git-repo directory containing a .tarball-version file, which | ||||||
|  | #   presumes this script is invoked like "./git-version-gen .tarball-version". | ||||||
|  |  | ||||||
|  | # In order to use intra-version strings in your project, you will need two | ||||||
|  | # separate generated version string files: | ||||||
|  | # | ||||||
|  | # .tarball-version - present only in a distribution tarball, and not in | ||||||
|  | #   a checked-out repository.  Created with contents that were learned at | ||||||
|  | #   the last time autoconf was run, and used by git-version-gen.  Must not | ||||||
|  | #   be present in either $(srcdir) or $(builddir) for git-version-gen to | ||||||
|  | #   give accurate answers during normal development with a checked out tree, | ||||||
|  | #   but must be present in a tarball when there is no version control system. | ||||||
|  | #   Therefore, it cannot be used in any dependencies.  GNUmakefile has | ||||||
|  | #   hooks to force a reconfigure at distribution time to get the value | ||||||
|  | #   correct, without penalizing normal development with extra reconfigures. | ||||||
|  | # | ||||||
|  | # .version - present in a checked-out repository and in a distribution | ||||||
|  | #   tarball.  Usable in dependencies, particularly for files that don't | ||||||
|  | #   want to depend on config.h but do want to track version changes. | ||||||
|  | #   Delete this file prior to any autoconf run where you want to rebuild | ||||||
|  | #   files to pick up a version string change; and leave it stale to | ||||||
|  | #   minimize rebuild time after unrelated changes to configure sources. | ||||||
|  | # | ||||||
|  | # It is probably wise to add these two files to .gitignore, so that you | ||||||
|  | # don't accidentally commit either generated file. | ||||||
|  | # | ||||||
|  | # Use the following line in your configure.ac, so that $(VERSION) will | ||||||
|  | # automatically be up-to-date each time configure is run (and note that | ||||||
|  | # since configure.ac no longer includes a version string, Makefile rules | ||||||
|  | # should not depend on configure.ac for version updates). | ||||||
|  | # | ||||||
|  | # AC_INIT([GNU project], | ||||||
|  | #         m4_esyscmd([build-aux/git-version-gen .tarball-version]), | ||||||
|  | #         [bug-project@example]) | ||||||
|  | # | ||||||
|  | # Then use the following lines in your Makefile.am, so that .version | ||||||
|  | # will be present for dependencies, and so that .tarball-version will | ||||||
|  | # exist in distribution tarballs. | ||||||
|  | # | ||||||
|  | # BUILT_SOURCES = $(top_srcdir)/.version | ||||||
|  | # $(top_srcdir)/.version: | ||||||
|  | #	echo $(VERSION) > $@-t && mv $@-t $@ | ||||||
|  | # dist-hook: | ||||||
|  | #	echo $(VERSION) > $(distdir)/.tarball-version | ||||||
|  |  | ||||||
|  | case $# in | ||||||
|  |     1) ;; | ||||||
|  |     *) echo 1>&2 "Usage: $0 \$srcdir/.tarball-version"; exit 1;; | ||||||
|  | esac | ||||||
|  |  | ||||||
|  | tarball_version_file=$1 | ||||||
|  | nl=' | ||||||
|  | ' | ||||||
|  |  | ||||||
|  | # First see if there is a tarball-only version file. | ||||||
|  | # then try "git describe", then default. | ||||||
|  | if test -f $tarball_version_file | ||||||
|  | then | ||||||
|  |     v=`cat $tarball_version_file` || exit 1 | ||||||
|  |     case $v in | ||||||
|  | 	*$nl*) v= ;; # reject multi-line output | ||||||
|  | 	[0-9]*) ;; | ||||||
|  | 	*) v= ;; | ||||||
|  |     esac | ||||||
|  |     test -z "$v" \ | ||||||
|  | 	&& echo "$0: WARNING: $tarball_version_file seems to be damaged" 1>&2 | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | if test -n "$v" | ||||||
|  | then | ||||||
|  |     : # use $v | ||||||
|  | elif | ||||||
|  |        v=`git describe --abbrev=4 --match='v*' HEAD 2>/dev/null \ | ||||||
|  | 	  || git describe --abbrev=4 HEAD 2>/dev/null` \ | ||||||
|  |     && case $v in | ||||||
|  | 	 [0-9]*) ;; | ||||||
|  | 	 v[0-9]*) ;; | ||||||
|  | 	 *) (exit 1) ;; | ||||||
|  |        esac | ||||||
|  | then | ||||||
|  |     # Is this a new git that lists number of commits since the last | ||||||
|  |     # tag or the previous older version that did not? | ||||||
|  |     #   Newer: v6.10-77-g0f8faeb | ||||||
|  |     #   Older: v6.10-g0f8faeb | ||||||
|  |     case $v in | ||||||
|  | 	*-*-*) : git describe is okay three part flavor ;; | ||||||
|  | 	*-*) | ||||||
|  | 	    : git describe is older two part flavor | ||||||
|  | 	    # Recreate the number of commits and rewrite such that the | ||||||
|  | 	    # result is the same as if we were using the newer version | ||||||
|  | 	    # of git describe. | ||||||
|  | 	    vtag=`echo "$v" | sed 's/-.*//'` | ||||||
|  | 	    numcommits=`git rev-list "$vtag"..HEAD | wc -l` | ||||||
|  | 	    v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`; | ||||||
|  | 	    ;; | ||||||
|  |     esac | ||||||
|  |  | ||||||
|  |     # Change the first '-' to a '.', so version-comparing tools work properly. | ||||||
|  |     # Remove the "g" in git describe's output string, to save a byte. | ||||||
|  |     v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`; | ||||||
|  | else | ||||||
|  |     v=UNKNOWN | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | v=`echo "$v" |sed 's/^v//'` | ||||||
|  |  | ||||||
|  | # Don't declare a version "dirty" merely because a time stamp has changed. | ||||||
|  | git status > /dev/null 2>&1 | ||||||
|  |  | ||||||
|  | dirty=`sh -c 'git diff-index --name-only HEAD' 2>/dev/null` || dirty= | ||||||
|  | case "$dirty" in | ||||||
|  |     '') ;; | ||||||
|  |     *) # Append the suffix only if there isn't one already. | ||||||
|  | 	case $v in | ||||||
|  | 	  *-dirty) ;; | ||||||
|  | 	  *) v="$v-dirty" ;; | ||||||
|  | 	esac ;; | ||||||
|  | esac | ||||||
|  |  | ||||||
|  | # Omit the trailing newline, so that m4_esyscmd can use the result directly. | ||||||
|  | echo "$v" | tr -d '\012' | ||||||
|  |  | ||||||
|  | # Local variables: | ||||||
|  | # eval: (add-hook 'write-file-hooks 'time-stamp) | ||||||
|  | # time-stamp-start: "scriptversion=" | ||||||
|  | # time-stamp-format: "%:y-%02m-%02d.%02H" | ||||||
|  | # time-stamp-end: "$" | ||||||
|  | # End: | ||||||
							
								
								
									
										3
									
								
								include/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								include/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | SUBDIRS = \ | ||||||
|  | 	osmocom \ | ||||||
|  | 	$(NULL) | ||||||
							
								
								
									
										3
									
								
								include/osmocom/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								include/osmocom/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | SUBDIRS = \ | ||||||
|  | 	upf \ | ||||||
|  | 	$(NULL) | ||||||
							
								
								
									
										3
									
								
								include/osmocom/upf/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								include/osmocom/upf/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | noinst_HEADERS = \ | ||||||
|  | 	upf.h \ | ||||||
|  | 	$(NULL) | ||||||
							
								
								
									
										12
									
								
								include/osmocom/upf/upf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								include/osmocom/upf/upf.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | /* Global definitions for OsmoUPF */ | ||||||
|  | #pragma once | ||||||
|  |  | ||||||
|  | struct ctrl_handle; | ||||||
|  |  | ||||||
|  | struct g_upf { | ||||||
|  | 	struct ctrl_handle *ctrl; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | extern struct g_upf *g_upf; | ||||||
|  |  | ||||||
|  | void g_upf_alloc(void *ctx); | ||||||
							
								
								
									
										27
									
								
								osmoappdesc.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								osmoappdesc.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | #!/usr/bin/env python3 | ||||||
|  |  | ||||||
|  | # (C) 2021-2022 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de> | ||||||
|  | # This program is free software: you can redistribute it and/or modify | ||||||
|  | # it under the terms of the GNU General Public License as published by | ||||||
|  | # the Free Software Foundation, either version 3 of the License, or | ||||||
|  | # (at your option) any later version. | ||||||
|  |  | ||||||
|  | # This program is distributed in the hope that it will be useful, | ||||||
|  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | # GNU General Public License for more details. | ||||||
|  |  | ||||||
|  | # You should have received a copy of the GNU General Public License | ||||||
|  | # along with this program.  If not, see <http://www.gnu.org/licenses/> | ||||||
|  |  | ||||||
|  | app_configs = { | ||||||
|  |     "osmo-upf": ["doc/examples/osmo-upf/osmo-upf.cfg"] | ||||||
|  | } | ||||||
|  |  | ||||||
|  | apps = [(4275, "src/osmo-upf/osmo-upf", "OsmoUPF", "osmo-upf") | ||||||
|  |         ] | ||||||
|  |  | ||||||
|  | vty_command = ["./src/osmo-upf/osmo-upf", "-c", | ||||||
|  |                "doc/examples/osmo-upf/osmo-upf.cfg"] | ||||||
|  |  | ||||||
|  | vty_app = apps[0] | ||||||
							
								
								
									
										3
									
								
								src/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | SUBDIRS = \ | ||||||
|  | 	osmo-upf \ | ||||||
|  | 	$(NULL) | ||||||
							
								
								
									
										33
									
								
								src/osmo-upf/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								src/osmo-upf/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | |||||||
|  | AM_CPPFLAGS = \ | ||||||
|  | 	$(all_includes) \ | ||||||
|  | 	-I$(top_srcdir)/include \ | ||||||
|  | 	-I$(top_builddir) \ | ||||||
|  | 	$(NULL) | ||||||
|  |  | ||||||
|  | AM_CFLAGS = \ | ||||||
|  | 	-Wall \ | ||||||
|  | 	$(LIBOSMOCORE_CFLAGS) \ | ||||||
|  | 	$(LIBOSMOVTY_CFLAGS) \ | ||||||
|  | 	$(LIBOSMOCTRL_CFLAGS) \ | ||||||
|  | 	$(COVERAGE_CFLAGS) \ | ||||||
|  | 	$(NULL) | ||||||
|  |  | ||||||
|  | AM_LDFLAGS = \ | ||||||
|  | 	$(COVERAGE_LDFLAGS) \ | ||||||
|  | 	$(NULL) | ||||||
|  |  | ||||||
|  | bin_PROGRAMS = \ | ||||||
|  | 	osmo-upf \ | ||||||
|  | 	$(NULL) | ||||||
|  |  | ||||||
|  | osmo_upf_SOURCES = \ | ||||||
|  | 	osmo_upf_main.c \ | ||||||
|  | 	upf.c \ | ||||||
|  | 	$(NULL) | ||||||
|  |  | ||||||
|  | osmo_upf_LDADD = \ | ||||||
|  | 	$(LIBOSMOCORE_LIBS) \ | ||||||
|  | 	$(LIBOSMOVTY_LIBS) \ | ||||||
|  | 	$(LIBOSMOCTRL_LIBS) \ | ||||||
|  | 	$(COVERAGE_LDFLAGS) \ | ||||||
|  | 	$(NULL) | ||||||
							
								
								
									
										313
									
								
								src/osmo-upf/osmo_upf_main.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										313
									
								
								src/osmo-upf/osmo_upf_main.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,313 @@ | |||||||
|  | /* (C) 2021-2022 by sysmocom - s.f.m.c. GmbH <info@sysmocom.de> | ||||||
|  |  * All Rights Reserved | ||||||
|  |  * | ||||||
|  |  * Author: Neels Hofmeyr <nhofmeyr@sysmocom.de> | ||||||
|  |  * | ||||||
|  |  * This program is free software; you can redistribute it and/or modify | ||||||
|  |  * it under the terms of the GNU Affero General Public License as published by | ||||||
|  |  * the Free Software Foundation; either version 3 of the License, or | ||||||
|  |  * (at your option) any later version. | ||||||
|  |  * | ||||||
|  |  * This program is distributed in the hope that it will be useful, | ||||||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  * GNU Affero General Public License for more details. | ||||||
|  |  * | ||||||
|  |  * You should have received a copy of the GNU Affero General Public License | ||||||
|  |  * along with this program.  If not, see <http://www.gnu.org/lienses/>. | ||||||
|  |  * | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #include <osmocom/core/application.h> | ||||||
|  | #include <osmocom/core/signal.h> | ||||||
|  | #include <osmocom/core/talloc.h> | ||||||
|  | #include <osmocom/core/logging.h> | ||||||
|  | #include <osmocom/core/fsm.h> | ||||||
|  | #include <osmocom/core/stats.h> | ||||||
|  | #include <osmocom/core/msgb.h> | ||||||
|  | #include <osmocom/vty/logging.h> | ||||||
|  | #include <osmocom/vty/command.h> | ||||||
|  | #include <osmocom/vty/misc.h> | ||||||
|  | #include <osmocom/vty/cpu_sched_vty.h> | ||||||
|  | #include <osmocom/vty/telnet_interface.h> | ||||||
|  | #include <osmocom/vty/ports.h> | ||||||
|  | #include <osmocom/ctrl/control_if.h> | ||||||
|  | #include <osmocom/ctrl/control_vty.h> | ||||||
|  | #include <osmocom/ctrl/ports.h> | ||||||
|  |  | ||||||
|  | #include <osmocom/upf/upf.h> | ||||||
|  |  | ||||||
|  | #define _GNU_SOURCE | ||||||
|  | #include <getopt.h> | ||||||
|  |  | ||||||
|  | /* build switches from the configure script */ | ||||||
|  | #include "config.h" | ||||||
|  |  | ||||||
|  | #include <signal.h> | ||||||
|  | #include <stdio.h> | ||||||
|  |  | ||||||
|  | extern void *tall_vty_ctx; | ||||||
|  |  | ||||||
|  | void *tall_upf_ctx = NULL; | ||||||
|  | static int quit = 0; | ||||||
|  |  | ||||||
|  | static struct { | ||||||
|  | 	const char *config_file; | ||||||
|  | 	int daemonize; | ||||||
|  | 	enum vty_ref_gen_mode vty_ref_gen_mode; | ||||||
|  | } upf_cmdline_config = { | ||||||
|  | 	.config_file = "osmo-upf.cfg", | ||||||
|  | 	.vty_ref_gen_mode = VTY_REF_GEN_MODE_DEFAULT, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | static void print_usage() | ||||||
|  | { | ||||||
|  | 	printf("Usage: osmo-upf\n"); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static void print_help() | ||||||
|  | { | ||||||
|  | 	const struct value_string *vty_ref_gen_mode_name; | ||||||
|  |  | ||||||
|  | 	printf("Some useful options:\n"); | ||||||
|  | 	printf("  -h --help                  This text.\n"); | ||||||
|  | 	printf("  -D --daemonize             Fork the process into a background daemon.\n"); | ||||||
|  | 	printf("  -c --config-file filename  The config file to use.\n"); | ||||||
|  | 	printf("  -V --version               Print the version of OsmoMSC.\n"); | ||||||
|  |  | ||||||
|  | 	printf("\nVTY reference generation:\n"); | ||||||
|  | 	printf("     --vty-ref-xml           Generate the VTY reference XML output and exit.\n"); | ||||||
|  | 	printf("     --vty-ref-mode MODE     Mode for --vty-ref-xml:\n"); | ||||||
|  | 	/* List all VTY ref gen modes */ | ||||||
|  | 	for (vty_ref_gen_mode_name = vty_ref_gen_mode_names; vty_ref_gen_mode_name->str; vty_ref_gen_mode_name++) | ||||||
|  | 		printf("                    %s: %s\n", | ||||||
|  | 		       vty_ref_gen_mode_name->str, | ||||||
|  | 		       get_value_string(vty_ref_gen_mode_desc, vty_ref_gen_mode_name->value)); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static void handle_long_options(const char *prog_name, const int long_option) | ||||||
|  | { | ||||||
|  | 	switch (long_option) { | ||||||
|  | 	case 1: | ||||||
|  | 		upf_cmdline_config.vty_ref_gen_mode = get_string_value(vty_ref_gen_mode_names, optarg); | ||||||
|  | 		if (upf_cmdline_config.vty_ref_gen_mode < 0) { | ||||||
|  | 			fprintf(stderr, "%s: Unknown VTY reference generation mode: '%s'\n", prog_name, optarg); | ||||||
|  | 			exit(2); | ||||||
|  | 		} | ||||||
|  | 		break; | ||||||
|  | 	case 2: | ||||||
|  | 		fprintf(stderr, "Generating the VTY reference in mode '%s' (%s)\n", | ||||||
|  | 			get_value_string(vty_ref_gen_mode_names, upf_cmdline_config.vty_ref_gen_mode), | ||||||
|  | 			get_value_string(vty_ref_gen_mode_desc, upf_cmdline_config.vty_ref_gen_mode)); | ||||||
|  | 		vty_dump_xml_ref_mode(stdout, upf_cmdline_config.vty_ref_gen_mode); | ||||||
|  | 		exit(0); | ||||||
|  | 	default: | ||||||
|  | 		fprintf(stderr, "%s: error parsing cmdline options\n", prog_name); | ||||||
|  | 		exit(2); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static void handle_options(int argc, char **argv) | ||||||
|  | { | ||||||
|  | 	while (1) { | ||||||
|  | 		int option_index = 0, c; | ||||||
|  | 		static int long_option = 0; | ||||||
|  | 		static struct option long_options[] = { | ||||||
|  | 			{"help", 0, 0, 'h'}, | ||||||
|  | 			{"daemonize", 0, 0, 'D'}, | ||||||
|  | 			{"config-file", 1, 0, 'c'}, | ||||||
|  | 			{"version", 0, 0, 'V' }, | ||||||
|  | 			{"vty-ref-mode", 1, &long_option, 1}, | ||||||
|  | 			{"vty-ref-xml", 0, &long_option, 2}, | ||||||
|  | 			{0, 0, 0, 0} | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		c = getopt_long(argc, argv, "hDc:V", long_options, &option_index); | ||||||
|  | 		if (c == -1) | ||||||
|  | 			break; | ||||||
|  |  | ||||||
|  | 		switch (c) { | ||||||
|  | 		case 'h': | ||||||
|  | 			print_usage(); | ||||||
|  | 			print_help(); | ||||||
|  | 			exit(0); | ||||||
|  | 		case 0: | ||||||
|  | 			handle_long_options(argv[0], long_option); | ||||||
|  | 			break; | ||||||
|  | 		case 'D': | ||||||
|  | 			upf_cmdline_config.daemonize = 1; | ||||||
|  | 			break; | ||||||
|  | 		case 'c': | ||||||
|  | 			upf_cmdline_config.config_file = optarg; | ||||||
|  | 			break; | ||||||
|  | 		case 'V': | ||||||
|  | 			print_version(1); | ||||||
|  | 			exit(0); | ||||||
|  | 			break; | ||||||
|  | 		default: | ||||||
|  | 			/* catch unknown options *as well as* missing arguments. */ | ||||||
|  | 			fprintf(stderr, "%s: Error in command line options. Exiting.\n", argv[0]); | ||||||
|  | 			exit(-1); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if (argc > optind) { | ||||||
|  | 		fprintf(stderr, "%s: Unsupported positional arguments on command line\n", argv[0]); | ||||||
|  | 		exit(2); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static void signal_handler(int signum) | ||||||
|  | { | ||||||
|  | 	fprintf(stdout, "signal %u received\n", signum); | ||||||
|  |  | ||||||
|  | 	switch (signum) { | ||||||
|  | 	case SIGINT: | ||||||
|  | 	case SIGTERM: | ||||||
|  | 		LOGP(DLGLOBAL, LOGL_NOTICE, "Terminating due to signal %d\n", signum); | ||||||
|  | 		quit++; | ||||||
|  | 		break; | ||||||
|  | 	case SIGABRT: | ||||||
|  | 		osmo_generate_backtrace(); | ||||||
|  | 		/* in case of abort, we want to obtain a talloc report and | ||||||
|  | 		 * then run default SIGABRT handler, who will generate coredump | ||||||
|  | 		 * and abort the process. abort() should do this for us after we | ||||||
|  | 		 * return, but program wouldn't exit if an external SIGABRT is | ||||||
|  | 		 * received. | ||||||
|  | 		 */ | ||||||
|  | 		talloc_report(tall_vty_ctx, stderr); | ||||||
|  | 		talloc_report_full(tall_upf_ctx, stderr); | ||||||
|  | 		signal(SIGABRT, SIG_DFL); | ||||||
|  | 		raise(SIGABRT); | ||||||
|  | 		break; | ||||||
|  | 	case SIGUSR1: | ||||||
|  | 		talloc_report(tall_vty_ctx, stderr); | ||||||
|  | 		talloc_report_full(tall_upf_ctx, stderr); | ||||||
|  | 		break; | ||||||
|  | 	case SIGUSR2: | ||||||
|  | 		talloc_report_full(tall_vty_ctx, stderr); | ||||||
|  | 		break; | ||||||
|  | 	default: | ||||||
|  | 		break; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static struct vty_app_info upf_vty_app_info = { | ||||||
|  | 	.name = "OsmoUPF", | ||||||
|  | 	.version = PACKAGE_VERSION, | ||||||
|  | 	.copyright = | ||||||
|  | 	"OsmoUPF - Osmocom User Plane Function implementation\r\n" | ||||||
|  | 	"Copyright (C) 2021-2022 by sysmocom - s.f.m.c. GmbH <info@sysmocom.de>\r\n" | ||||||
|  | 	"License AGPLv3+: GNU AGPL version 3 or later <http://gnu.org/licenses/agpl-3.0.html>\r\n" | ||||||
|  | 	"This is free software: you are free to change and redistribute it.\r\n" | ||||||
|  | 	"There is NO WARRANTY, to the extent permitted by law.\r\n", | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | static const struct log_info_cat upf_default_categories[] = { | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | const struct log_info log_info = { | ||||||
|  | 	.cat = upf_default_categories, | ||||||
|  | 	.num_cat = ARRAY_SIZE(upf_default_categories), | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | int main(int argc, char **argv) | ||||||
|  | { | ||||||
|  | 	int rc; | ||||||
|  |  | ||||||
|  | 	/* Track the use of talloc NULL memory contexts */ | ||||||
|  | 	talloc_enable_null_tracking(); | ||||||
|  |  | ||||||
|  | 	osmo_fsm_set_dealloc_ctx(OTC_SELECT); | ||||||
|  |  | ||||||
|  | 	tall_upf_ctx = talloc_named_const(NULL, 1, "osmo-upf"); | ||||||
|  | 	upf_vty_app_info.tall_ctx = tall_upf_ctx; | ||||||
|  |  | ||||||
|  | 	msgb_talloc_ctx_init(tall_upf_ctx, 0); | ||||||
|  | 	osmo_signal_talloc_ctx_init(tall_upf_ctx); | ||||||
|  |  | ||||||
|  | 	osmo_init_logging2(tall_upf_ctx, &log_info); | ||||||
|  |  | ||||||
|  | 	osmo_fsm_log_timeouts(true); | ||||||
|  | 	osmo_fsm_log_addr(true); | ||||||
|  |  | ||||||
|  | 	osmo_stats_init(tall_upf_ctx); | ||||||
|  |  | ||||||
|  | 	g_upf_alloc(tall_upf_ctx); | ||||||
|  |  | ||||||
|  | 	/* For --version, vty_init() must be called before handling options */ | ||||||
|  | 	vty_init(&upf_vty_app_info); | ||||||
|  |  | ||||||
|  | 	ctrl_vty_init(tall_upf_ctx); | ||||||
|  | 	logging_vty_add_cmds(); | ||||||
|  | 	osmo_talloc_vty_add_cmds(); | ||||||
|  | 	osmo_cpu_sched_vty_init(tall_upf_ctx); | ||||||
|  |  | ||||||
|  | 	/* Parse options */ | ||||||
|  | 	handle_options(argc, argv); | ||||||
|  |  | ||||||
|  | 	rc = vty_read_config_file(upf_cmdline_config.config_file, NULL); | ||||||
|  | 	if (rc < 0) { | ||||||
|  | 		LOGP(DLGLOBAL, LOGL_FATAL, "Failed to parse the config file: '%s'\n", | ||||||
|  | 		     upf_cmdline_config.config_file); | ||||||
|  | 		return 1; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	/* start telnet, after reading config for vty_get_bind_addr() */ | ||||||
|  | 	rc = telnet_init_dynif(tall_upf_ctx, &g_upf, vty_get_bind_addr(), OSMO_VTY_PORT_UPF); | ||||||
|  | 	if (rc < 0) | ||||||
|  | 		return 2; | ||||||
|  |  | ||||||
|  | 	/* start control interface, after reading config for ctrl_vty_get_bind_addr() */ | ||||||
|  | 	g_upf->ctrl = ctrl_interface_setup_dynip(g_upf, ctrl_vty_get_bind_addr(), OSMO_CTRL_PORT_UPF, NULL); | ||||||
|  | 	if (!g_upf->ctrl) { | ||||||
|  | 		fprintf(stderr, "Failed to initialize control interface. Exiting.\n"); | ||||||
|  | 		return -1; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	signal(SIGINT, &signal_handler); | ||||||
|  | 	signal(SIGTERM, &signal_handler); | ||||||
|  | 	signal(SIGABRT, &signal_handler); | ||||||
|  | 	signal(SIGUSR1, &signal_handler); | ||||||
|  | 	signal(SIGUSR2, &signal_handler); | ||||||
|  | 	osmo_init_ignore_signals(); | ||||||
|  |  | ||||||
|  | 	if (upf_cmdline_config.daemonize) { | ||||||
|  | 		rc = osmo_daemonize(); | ||||||
|  | 		if (rc < 0) { | ||||||
|  | 			perror("Error during daemonize"); | ||||||
|  | 			return 6; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	do { | ||||||
|  | 		log_reset_context(); | ||||||
|  | 		osmo_select_main_ctx(0); | ||||||
|  |  | ||||||
|  | 		/* If the user hits Ctrl-C the third time, just terminate immediately. */ | ||||||
|  | 		if (quit >= 3) | ||||||
|  | 			break; | ||||||
|  |  | ||||||
|  | 		/* Has SIGTERM been received (and not yet been handled)? */ | ||||||
|  | 		if (quit && !osmo_select_shutdown_requested()) { | ||||||
|  | 			osmo_signal_dispatch(SS_L_GLOBAL, S_L_GLOBAL_SHUTDOWN, NULL); | ||||||
|  |  | ||||||
|  | 			/* Request write-only mode in osmo_select_main_ctx() */ | ||||||
|  | 			osmo_select_shutdown_request(); | ||||||
|  | 			/* continue the main select loop until all write queues are serviced. */ | ||||||
|  | 		} | ||||||
|  | 	} while (!osmo_select_shutdown_done()); | ||||||
|  |  | ||||||
|  | 	log_fini(); | ||||||
|  |  | ||||||
|  | 	/* Report the heap state of talloc contexts, then free, so both ASAN and Valgrind are happy... */ | ||||||
|  | 	talloc_report_full(tall_upf_ctx, stderr); | ||||||
|  | 	talloc_free(tall_upf_ctx); | ||||||
|  |  | ||||||
|  | 	talloc_report_full(tall_vty_ctx, stderr); | ||||||
|  | 	talloc_free(tall_vty_ctx); | ||||||
|  |  | ||||||
|  | 	talloc_report_full(NULL, stderr); | ||||||
|  | 	talloc_disable_null_tracking(); | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
							
								
								
									
										30
									
								
								src/osmo-upf/upf.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								src/osmo-upf/upf.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | |||||||
|  | /* (C) 2021-2022 by sysmocom - s.f.m.c. GmbH <info@sysmocom.de> | ||||||
|  |  * All Rights Reserved | ||||||
|  |  * | ||||||
|  |  * This program is free software; you can redistribute it and/or modify | ||||||
|  |  * it under the terms of the GNU Affero General Public License as published by | ||||||
|  |  * the Free Software Foundation; either version 3 of the License, or | ||||||
|  |  * (at your option) any later version. | ||||||
|  |  * | ||||||
|  |  * This program is distributed in the hope that it will be useful, | ||||||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  * GNU Affero General Public License for more details. | ||||||
|  |  * | ||||||
|  |  * You should have received a copy of the GNU Affero General Public License | ||||||
|  |  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||||
|  |  * | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #include <osmocom/core/utils.h> | ||||||
|  | #include <osmocom/core/talloc.h> | ||||||
|  |  | ||||||
|  | #include <osmocom/upf/upf.h> | ||||||
|  |  | ||||||
|  | struct g_upf *g_upf = NULL; | ||||||
|  |  | ||||||
|  | void g_upf_alloc(void *ctx) | ||||||
|  | { | ||||||
|  | 	OSMO_ASSERT(g_upf == NULL); | ||||||
|  | 	g_upf = talloc_zero(ctx, struct g_upf); | ||||||
|  | } | ||||||
							
								
								
									
										73
									
								
								tests/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								tests/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,73 @@ | |||||||
|  | SUBDIRS = \ | ||||||
|  | 	$(NULL) | ||||||
|  |  | ||||||
|  | # The `:;' works around a Bash 3.2 bug when the output is not writeable. | ||||||
|  | $(srcdir)/package.m4: $(top_srcdir)/configure.ac | ||||||
|  | 	:;{ \ | ||||||
|  |                echo '# Signature of the current package.' && \ | ||||||
|  |                echo 'm4_define([AT_PACKAGE_NAME],' && \ | ||||||
|  |                echo '  [$(PACKAGE_NAME)])' && \ | ||||||
|  |                echo 'm4_define([AT_PACKAGE_TARNAME],' && \ | ||||||
|  |                echo '  [$(PACKAGE_TARNAME)])' && \ | ||||||
|  |                echo 'm4_define([AT_PACKAGE_VERSION],' && \ | ||||||
|  |                echo '  [$(PACKAGE_VERSION)])' && \ | ||||||
|  |                echo 'm4_define([AT_PACKAGE_STRING],' && \ | ||||||
|  |                echo '  [$(PACKAGE_STRING)])' && \ | ||||||
|  |                echo 'm4_define([AT_PACKAGE_BUGREPORT],' && \ | ||||||
|  |                echo '  [$(PACKAGE_BUGREPORT)])'; \ | ||||||
|  |                echo 'm4_define([AT_PACKAGE_URL],' && \ | ||||||
|  |                echo '  [$(PACKAGE_URL)])'; \ | ||||||
|  |              } >'$(srcdir)/package.m4' | ||||||
|  |  | ||||||
|  | EXTRA_DIST = \ | ||||||
|  | 	upf.vty \ | ||||||
|  | 	testsuite.at \ | ||||||
|  | 	$(srcdir)/package.m4 \ | ||||||
|  | 	$(TESTSUITE) \ | ||||||
|  | 	$(NULL) | ||||||
|  |  | ||||||
|  | TESTSUITE = $(srcdir)/testsuite | ||||||
|  |  | ||||||
|  | DISTCLEANFILES = \ | ||||||
|  | 	atconfig \ | ||||||
|  | 	$(NULL) | ||||||
|  |  | ||||||
|  | if ENABLE_EXT_TESTS | ||||||
|  | python-tests: $(BUILT_SOURCES) | ||||||
|  | 	$(MAKE) vty-test | ||||||
|  | 	osmotestvty.py -p $(abs_top_srcdir) -w $(abs_top_builddir) -v | ||||||
|  | 	osmotestconfig.py -p $(abs_top_srcdir) -w $(abs_top_builddir) -v | ||||||
|  | else | ||||||
|  | python-tests: $(BUILT_SOURCES) | ||||||
|  | 	echo "Not running python-based tests (determined at configure-time)" | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | # Run a specific test with: 'make vty-test VTY_TEST=foo.vty' | ||||||
|  | VTY_TEST ?= *.vty | ||||||
|  |  | ||||||
|  | # To update the VTY script from current application behavior, | ||||||
|  | # pass -u to vty_script_runner.py by doing: | ||||||
|  | #   make vty-test U=-u | ||||||
|  | vty-test: | ||||||
|  | 	osmo_verify_transcript_vty.py -v \ | ||||||
|  | 		-n OsmoUPF -p 4275 \ | ||||||
|  | 		-r "$(top_builddir)/src/osmo-upf/osmo-upf -c $(top_srcdir)/doc/examples/osmo-upf/osmo-upf.cfg" \ | ||||||
|  | 		$(U) $(srcdir)/$(VTY_TEST) | ||||||
|  |  | ||||||
|  | check-local: atconfig $(TESTSUITE) | ||||||
|  | 	$(SHELL) '$(TESTSUITE)' $(TESTSUITEFLAGS) | ||||||
|  | 	$(MAKE) $(AM_MAKEFLAGS) python-tests | ||||||
|  |  | ||||||
|  | installcheck-local: atconfig $(TESTSUITE) | ||||||
|  | 	$(SHELL) '$(TESTSUITE)' AUTOTEST_PATH='$(bindir)' \ | ||||||
|  | 		$(TESTSUITEFLAGS) | ||||||
|  |  | ||||||
|  | clean-local: | ||||||
|  | 	test ! -f '$(TESTSUITE)' || \ | ||||||
|  | 		$(SHELL) '$(TESTSUITE)' --clean | ||||||
|  |  | ||||||
|  | AUTOM4TE = $(SHELL) $(top_srcdir)/missing --run autom4te | ||||||
|  | AUTOTEST = $(AUTOM4TE) --language=autotest | ||||||
|  | $(TESTSUITE): $(srcdir)/testsuite.at $(srcdir)/package.m4 | ||||||
|  | 	$(AUTOTEST) -I '$(srcdir)' -o $@.tmp $@.at | ||||||
|  | 	mv $@.tmp $@ | ||||||
							
								
								
									
										0
									
								
								tests/atlocal.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								tests/atlocal.in
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										2
									
								
								tests/testsuite.at
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								tests/testsuite.at
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | AT_INIT | ||||||
|  | AT_BANNER([Regression tests.]) | ||||||
							
								
								
									
										4
									
								
								tests/upf.vty
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								tests/upf.vty
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | OsmoUPF> enable | ||||||
|  | OsmoUPF# configure terminal | ||||||
|  | OsmoUPF(config)# show running-config | ||||||
|  | ... | ||||||
		Reference in New Issue
	
	Block a user