Message ID | 1448368818-21121-1-git-send-email-nhofmeyr@sysmocom.de |
---|---|
State | Changes Requested |
Headers | show |
> 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.
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
> 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
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
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
> 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
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 --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 +