mirror of
				https://gitea.osmocom.org/cellular-infrastructure/osmo-upf.git
				synced 2025-11-04 14:03:18 +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