move openbsc.git's iu.h, iu.c, iu_vty.c here as iu_client

To help split openbsc.git to separate MSC and SGSN repositories, place the
common Iu interface related code here in libosmo-ranap. Also apply various
improvements while moving (from intermittent code review).

The code depends on libosmo-ranap tightly. One reason to want this separate
from libosmo-ranap could be that it uses libosmo-sigtran, accepting an sccp
instance. However, including in libosmo-ranap is the simplest way to go. The
osmo-iuh build depends on libosmo-sigtran anyway because of OsmoHNBGW, and all
current users of libosmo-ranap also naturally link libosmo-sigtran already.

Apply prefix ranap_iu_ and RANAP_IU_ to allow smooth transition from the
openbsc.git iu_ to the libranap ranap_iu_ implementations.

Prune unneeded #include statements.

Instead of sccp_addr, store an rnc pointer in the ue_conn_ctx. To facilitate,
also:
- Move iu_rnc struct to iu_client.h (as ranap_iu_rnc).
- Instead of sccp_addr, pass rnc to ue_conn_ctx_alloc().
- Pass a local struct new_ue_conn_ctx containing the sccp_addr and conn_id up
  the RANAP handling stack in case of an InitialUE message.
- Separate the InitialUE message handling from cn_ranap_handle_co(), by moving
  to new and separate cn_ranap_handle_co_initial(), so we can still pass a
  looked-up ue_conn_ctx to all other cn_ranap_handle_co() code paths.
- Allocate the ue_conn_ctx only in ranap_handle_co_initial_ue(), not as early
  as before.
Note that we are not actually ever using the rnc pointer now present in
ue_conn_ctx. It could be used for more concise paging, to first page only the
RNC where we last saw the subscriber. So far we page all matching LAC/RACs.

Tweak error logging: use __func__ instead of writing the function names as
string constants.

In iu_client_vty.c:
- Move the asn.1 debug commands from logging over to the iu node. They are not
  specific to the logging target. They could qualify for an entirely separate
  'asn1' root node, but for simplicity place under 'iu'.
- Add the 'asn1' commands to ranap_iu_vty_config_write(), so far missing.
- remove the legacy "net." from a VTY error message, it is not known which name
  the parent node of 'iu' has.

Depends: libosmo-sccp I85b46269dbe7909e52873ace3f720f6292a4516c,
	 libosmo-sccp Ie1aedd7894acd69ddc887cd65a8a0df4b888838c
Change-Id: I6a3f7ad15be03fb94689b4af6ccfa828c25f45c0
5 files changed
tree: 4ce5e04c400afe84f752d49b4d612e5ab4bbc56d
  1. asn1/
  2. contrib/
  3. doc/
  4. include/
  5. pcap/
  6. specs/
  7. src/
  8. .gitignore
  9. configure.ac
  10. COPYING
  11. git-version-gen
  12. libosmo-ranap.pc.in
  13. Makefile.am
  14. move-asn1-header-files.sh
  15. README.md
README.md

osmo-iuh - Osmocom Iuh and HNB-GW implementation

This repository contains a C-language implementation of the 3GPP Iuh interface, together with a HNB-GW (Home NodeB Gateway). You can use it to interface Iuh-speaking femtocells/small cells to Iu-speaking MSCs and SGSNs.

It is part of the Osmocom Open Source Mobile Communications project.

Homepage

The official homepage of the project is https://osmocom.org/projects/osmohnbgw/wiki

GIT Repository

You can clone from the official libosmocore.git repository using

git clone git://git.osmocom.org/osmo-iuh.git

There is a cgit interface at http://git.osmocom.org/osmo-iuh/

Documentation

There is currently no documentation beyond the wiki available on the homepage. We would love to see somebody contributing a manual that can be part of the osmo-gsm-manuals suite.

Mailing List

Discussions related to osmo-iuh are happening on the openbsc@lists.osmocom.org mailing list, please see https://lists.osmocom.org/mailman/listinfo/openbsc for subscription options and the list archive.

Please observe the Osmocom Mailing List Rules when posting.

Contributing

Our coding standards are described at https://osmocom.org/projects/cellular-infrastructure/wiki/Coding_standards

We us a gerrit based patch submission/review process for managing contributions. Please see https://osmocom.org/projects/cellular-infrastructure/wiki/Gerrit for more details

The current patch queue for osmo-iuh can be seen at https://gerrit.osmocom.org/#/q/project:osmo-iuh+status:open

Building

It is generally best to check the wiki for the most up-to-date build instructions.

As external library dependencies, you will need

To bootstrap the build, in the root directory, run:

autoreconf --install

After that, run the usual

./configure [options]
make
[sudo] make install

Using

Note: osmo-iuh just left very active development (December 2015, January 2016), so your mileage may vary.

If you run the 'hnbgw' executable, it will open a listening SCTP socket and wait for incoming Iuh connections. It will accept any HNB-REGISTER-REQUEST, and it will establish Iu (over SUA) connections towards the MSC and SGSN.

Regenerating C code from ASN.1 source

In order to re-generate the C source code from the ASN.1 source, you will need a modified asn1c which has the following features: