diff mbox

gtphub: add to debian build

Message ID 1448368818-21121-1-git-send-email-nhofmeyr@sysmocom.de
State Changes Requested
Headers show

Commit Message

Neels Hofmeyr Nov. 24, 2015, 12:40 p.m. UTC
By the example of osmo-sgsn, package osmo-gtphub for debian.

Sponsored-by: On-Waves ehi
---
 debian/control                                   |  14 +++
 debian/osmocom-gtphub.default                    |   2 +
 debian/osmocom-gtphub.examples                   |   1 +
 debian/osmocom-gtphub.init                       | 150 +++++++++++++++++++++++
 debian/osmocom-gtphub.install                    |   1 +
 debian/rules                                     |   1 +
 openbsc/doc/examples/osmo-gtphub/osmo-gtphub.cfg |  23 ++++
 7 files changed, 192 insertions(+)
 create mode 100644 debian/osmocom-gtphub.default
 create mode 100644 debian/osmocom-gtphub.examples
 create mode 100755 debian/osmocom-gtphub.init
 create mode 100644 debian/osmocom-gtphub.install
 create mode 100644 openbsc/doc/examples/osmo-gtphub/osmo-gtphub.cfg

Comments

Holger Freyther Nov. 25, 2015, 8:23 p.m. UTC | #1
> On 24 Nov 2015, at 13:40, Neels Hofmeyr <nhofmeyr@sysmocom.de> wrote:

Hi!


> By the example of osmo-sgsn, package osmo-gtphub for debian.


you walked into an issue/inconcistency I created and we should fix to move forward.

> 
> Sponsored-by: On-Waves ehi
> ---
> debian/control                                   |  14 +++
> debian/osmocom-gtphub.default                    |   2 +
> debian/osmocom-gtphub.examples                   |   1 +
> debian/osmocom-gtphub.init                       | 150 +++++++++++++++++++++++
> debian/osmocom-gtphub.install                    |   1 +

The process is called "osmo-gtphub" so the scripts should be called the same and
the config file as well. Otherwise it looks good and please push to master.




> diff --git a/openbsc/doc/examples/osmo-gtphub/osmo-gtphub.cfg b/openbsc/doc/examples/osmo-gtphub/osmo-gtphub.cfg
> new file mode 100644
> index 0000000..c9bb4cf
> --- /dev/null
> +++ b/openbsc/doc/examples/osmo-gtphub/osmo-gtphub.cfg

good! the next change is to modify osmoappdesc.py so gtphub will get some of
the "automatic" VTY testing we have.
Neels Hofmeyr Nov. 30, 2015, 11:47 a.m. UTC | #2
On Wed, Nov 25, 2015 at 09:23:37PM +0100, Holger Freyther wrote:
> > On 24 Nov 2015, at 13:40, Neels Hofmeyr <nhofmeyr@sysmocom.de> wrote:
> > By the example of osmo-sgsn, package osmo-gtphub for debian.
> you walked into an issue/inconcistency I created and we should fix to move forward.

"Fixed" and merged to master. I left the others (osmocom-sgsn...) as they
are.

> the next change is to modify osmoappdesc.py so gtphub will get some of
> the "automatic" VTY testing we have.

Added awareness of it (in my head), added gtphub (in osmoappdesc.py) and
merged to master.

~Neels
Holger Freyther Dec. 10, 2015, 8:02 p.m. UTC | #3
> On 30 Nov 2015, at 12:47, Neels Hofmeyr <nhofmeyr@sysmocom.de> wrote:

Good Evening Neels,


> Added awareness of it (in my head), added gtphub (in osmoappdesc.py) and
> merged to master.

we need to revert or extend the gtphub vty to make it work on our CI platform. You
can not bind to 127.0.0.1 and 127.0.0.2 on the CI infrastructure so the default config
can't be execute. We could add VTY commands to specify the ports to be used and
multiplex it then.

The other issue is the position of the gtphub. At the bottom we have this:

vty_command = ["./src/osmo-nitb/osmo-nitb", "-c",
               "doc/examples/osmo-nitb/nanobts/openbsc.cfg"]

vty_app = apps[-1]

So we run the nitb but try to connect to port 4253 which of course fails and explains
why the OpenBSC build failed the last couple of times. :)

holger
Neels Hofmeyr Dec. 13, 2015, 2:17 p.m. UTC | #4
On Thu, Dec 10, 2015 at 09:02:49PM +0100, Holger Freyther wrote:
> 
> > On 30 Nov 2015, at 12:47, Neels Hofmeyr <nhofmeyr@sysmocom.de> wrote:
> 
> Good Evening Neels,
> 
> 
> > Added awareness of it (in my head), added gtphub (in osmoappdesc.py) and
> > merged to master.
> 
> we need to revert or extend the gtphub vty to make it work on our CI platform. You
> can not bind to 127.0.0.1 and 127.0.0.2 on the CI infrastructure so the default config
> can't be execute. We could add VTY commands to specify the ports to be used and
> multiplex it then.

There is no "default" config, but gtphub requires a config file...

VTY for port numbers already exists: there is a short version using
standard ports and a longer one where you can issue ports.

short:

  gtphub
  bind-to-sgsns 127.0.0.1
  bind-to-ggsns 127.0.0.2

long, with ports:

  bind-to-sgsns ctrl 127.0.0.1 12123 user 127.0.0.1 12152
  bind-to-ggsns crtl 127.0.0.1 22123 user 127.0.0.1 22152

> The other issue is the position of the gtphub. At the bottom we have this:
> 
> vty_command = ["./src/osmo-nitb/osmo-nitb", "-c",
>                "doc/examples/osmo-nitb/nanobts/openbsc.cfg"]
> 
> vty_app = apps[-1]
> 
> So we run the nitb but try to connect to port 4253 which of course fails and explains
> why the OpenBSC build failed the last couple of times. :)

Those python structures are a bit sneaky ... they seem so simple, but
they'll bite your ankles ;)

vty_app looks weird. is vty_app only used for osmo-nitb?  IMHO it could
make sense to clarify the python, but for the time being we could simply
fix with

  vty_app = apps[-2]

??

~Neels
Neels Hofmeyr Dec. 13, 2015, 2:24 p.m. UTC | #5
On Sun, Dec 13, 2015 at 03:17:32PM +0100, Neels Hofmeyr wrote:
> > The other issue is the position of the gtphub. At the bottom we have this:
> > 
> > vty_command = ["./src/osmo-nitb/osmo-nitb", "-c",
> >                "doc/examples/osmo-nitb/nanobts/openbsc.cfg"]
> > 
> > vty_app = apps[-1]
> > 
> > So we run the nitb but try to connect to port 4253 which of course fails and explains
> > why the OpenBSC build failed the last couple of times. :)

I've changed the index in 4adca4e.

~Neels
Holger Freyther Dec. 13, 2015, 3:29 p.m. UTC | #6
> On 13 Dec 2015, at 15:24, Neels Hofmeyr <nhofmeyr@sysmocom.de> wrote:
> 
> 
> I've changed the index in 4adca4e.

better. but unless you have a config that only uses 127.0.0.1 as ip address the build
will stay broken on our CI infrastructure. Please adjust the config to use 127.0.0.1 but
different ports.

thanks
	holger
Neels Hofmeyr Dec. 14, 2015, 8:33 a.m. UTC | #7
On Sun, Dec 13, 2015 at 04:29:20PM +0100, Holger Freyther wrote:
> 
> > On 13 Dec 2015, at 15:24, Neels Hofmeyr <nhofmeyr@sysmocom.de> wrote:
> > 
> > 
> > I've changed the index in 4adca4e.
> 
> better. but unless you have a config that only uses 127.0.0.1 as ip address the build
> will stay broken on our CI infrastructure. Please adjust the config to use 127.0.0.1 but
> different ports.

Ah of course, the doc/examples file is used in the test... will fix.

~Neels
diff mbox

Patch

diff --git a/debian/control b/debian/control
index 2447d29..53b6908 100644
--- a/debian/control
+++ b/debian/control
@@ -50,6 +50,12 @@  Depends: ${shlibs:Depends}, ${misc:Depends}
 Description: Osmocom Base Station Controller Network Address Translation
  Network address translation for BSC.
 
+Package: osmocom-gtphub
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Osmocom GTP hub
+ Proxy for comms between SGSN and GGSN.
+
 Package: osmocom-bsc-dbg
 Architecture: any
 Section: debug
@@ -105,3 +111,11 @@  Priority: extra
 Depends: osmocom-bsc-nat (= ${binary:Version}), ${misc:Depends}
 Description: Debug symbols for the OpenBSC Network Address Translation
  Make debugging possible
+
+Package: osmocom-gtphub-dbg
+Architecture: any
+Section: debug
+Priority: extra
+Depends: osmocom-gtphub (= ${binary:Version}), ${misc:Depends}
+Description: Debug symbols for Osmocom GTP hub
+ Make debugging possible
diff --git a/debian/osmocom-gtphub.default b/debian/osmocom-gtphub.default
new file mode 100644
index 0000000..6af82da
--- /dev/null
+++ b/debian/osmocom-gtphub.default
@@ -0,0 +1,2 @@ 
+CONFIG_FILE="/etc/osmocom/osmo-gtphub.cfg"
+
diff --git a/debian/osmocom-gtphub.examples b/debian/osmocom-gtphub.examples
new file mode 100644
index 0000000..48c2dc0
--- /dev/null
+++ b/debian/osmocom-gtphub.examples
@@ -0,0 +1 @@ 
+openbsc/doc/examples/osmo-gtphub
diff --git a/debian/osmocom-gtphub.init b/debian/osmocom-gtphub.init
new file mode 100755
index 0000000..4dc67b3
--- /dev/null
+++ b/debian/osmocom-gtphub.init
@@ -0,0 +1,150 @@ 
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides:          osmo-gtphub
+# Required-Start:    $network $local_fs
+# Required-Stop:
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Osmocom GTP hub
+# Description:       Osmocom GTP hub
+### END INIT INFO
+
+# Author: Neels Hofmeyr <nhofmeyr@sysmocom.de>
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+NAME=osmo-gtphub                         # Introduce the short server's name here
+DESC="Osmocom GTP hub"                   # Introduce a short description here
+DAEMON=/usr/bin/osmo-gtphub              # Introduce the server's location here
+SCRIPTNAME=/etc/init.d/osmocom-gtphub
+
+# Exit if the package is not installed
+[ -x $DAEMON ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/osmocom-gtphub ] && . /etc/default/osmocom-gtphub
+
+# Load the VERBOSE setting and other rcS variables
+. /lib/init/vars.sh
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+DAEMON_ARGS="$DAEMON_ARGS -D -c $CONFIG_FILE"
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+	# Return
+	#   0 if daemon has been started
+	#   1 if daemon was already running
+	#   2 if daemon could not be started
+	start-stop-daemon --start --quiet --exec $DAEMON --test > /dev/null \
+		|| return 1
+	start-stop-daemon --start --quiet --exec $DAEMON -- \
+		$DAEMON_ARGS \
+		|| return 2
+	# Add code here, if necessary, that waits for the process to be ready
+	# to handle requests from services started subsequently which depend
+	# on this one.  As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+	# Return
+	#   0 if daemon has been stopped
+	#   1 if daemon was already stopped
+	#   2 if daemon could not be stopped
+	#   other if a failure occurred
+	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --name $NAME
+	RETVAL="$?"
+	[ "$RETVAL" = 2 ] && return 2
+	# Wait for children to finish too if this is a daemon that forks
+	# and if the daemon is only ever run from this initscript.
+	# If the above conditions are not satisfied then add some other code
+	# that waits for the process to drop all resources that could be
+	# needed by services started subsequently.  A last resort is to
+	# sleep for some time.
+	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+	[ "$?" = 2 ] && return 2
+	return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+	#
+	# If the daemon can reload its configuration without
+	# restarting (for example, when it is sent a SIGHUP),
+	# then implement that here.
+	#
+	start-stop-daemon --stop --signal 1 --quiet $PIDFILE --name $NAME
+	return 0
+}
+
+case "$1" in
+  start)
+    [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME"
+    do_start
+    case "$?" in
+		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+	esac
+  ;;
+  stop)
+	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+	do_stop
+	case "$?" in
+		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+	esac
+	;;
+  status)
+       status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
+       ;;
+  #reload|force-reload)
+	#
+	# If do_reload() is not implemented then leave this commented out
+	# and leave 'force-reload' as an alias for 'restart'.
+	#
+	#log_daemon_msg "Reloading $DESC" "$NAME"
+	#do_reload
+	#log_end_msg $?
+	#;;
+  restart|force-reload)
+	#
+	# If the "reload" option is implemented then remove the
+	# 'force-reload' alias
+	#
+	log_daemon_msg "Restarting $DESC" "$NAME"
+	do_stop
+	case "$?" in
+	  0|1)
+		do_start
+		case "$?" in
+			0) log_end_msg 0 ;;
+			1) log_end_msg 1 ;; # Old process is still running
+			*) log_end_msg 1 ;; # Failed to start
+		esac
+		;;
+	  *)
+		# Failed to stop
+		log_end_msg 1
+		;;
+	esac
+	;;
+  *)
+	#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+	echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
+	exit 3
+	;;
+esac
+
+:
diff --git a/debian/osmocom-gtphub.install b/debian/osmocom-gtphub.install
new file mode 100644
index 0000000..908c1a5
--- /dev/null
+++ b/debian/osmocom-gtphub.install
@@ -0,0 +1 @@ 
+/usr/bin/osmo-gtphub
diff --git a/debian/rules b/debian/rules
index 8047b79..62518d9 100755
--- a/debian/rules
+++ b/debian/rules
@@ -34,6 +34,7 @@  override_dh_strip:
 	dh_strip -posmocom-sgsn --dbg-package=osmocom-sgsn-dbg
 	dh_strip -posmocom-gbproxy --dbg-package=osmocom-gbproxy-dbg
 	dh_strip -posmocom-bsc-nat --dbg-package=osmocom-bsc-nat-dbg
+	dh_strip -posmocom-gtphub --dbg-package=osmocom-gtphub-dbg
 
 override_dh_auto_configure:
 	echo $(VERSION) > openbsc/.tarball-version
diff --git a/openbsc/doc/examples/osmo-gtphub/osmo-gtphub.cfg b/openbsc/doc/examples/osmo-gtphub/osmo-gtphub.cfg
new file mode 100644
index 0000000..c9bb4cf
--- /dev/null
+++ b/openbsc/doc/examples/osmo-gtphub/osmo-gtphub.cfg
@@ -0,0 +1,23 @@ 
+!
+! Osmocom gtphub configuration
+!
+
+line vty
+ no login
+
+gtphub
+ ! Local addresses to listen on and send from, each on standard ports
+ ! 2123 and 2152. Setting these addresses is mandatory.
+ bind-to-sgsns 127.0.0.1
+ bind-to-ggsns 127.0.0.2
+
+ ! Local nonstandard ports or separate IPs:
+ !bind-to-sgsns ctrl 127.0.0.1 2342 user 127.0.0.1 4223
+
+ ! Proxy: unconditionally direct all traffic to...
+ !ggsn-proxy 127.0.0.3
+ !sgsn-proxy 127.0.0.4
+
+ ! Proxy with nonstandard ports or separate IPs:
+ !ggsn-proxy ctrl 127.0.0.3 2123 user 127.0.0.5 2152
+