sabp: Generate C/H files for SABP; create libosmo-sabp
This uses the (modified) Osmocom asn1c on the (modified) SABP ASN.1
syntax to generate C code + header files for SABP parsing/encoding.
It also adds some helper code for message encoding and decoding as well
as a new libosmo-sabp shared library which can be used by programs to
implement SABP related functionality.
Change-Id: Ib9580d1af96354398da4c9f97b28a0e23d56e275
diff --git a/src/Makefile.am b/src/Makefile.am
index 928092f..b1f8153 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,10 +1,10 @@
-SUBDIRS = hnbap rua ranap tests
+SUBDIRS = hnbap rua ranap sabp tests
# Build {hnbap,rua,ranap}_{encoder,decoder}.c using asn1tostruct
ASN1_ROOT = $(top_srcdir)/asn1
ASN1TOSTRUCT = $(ASN1_ROOT)/utils/asn1tostruct.py
-BUILT_SOURCES = hnbap_decoder.c hnbap_encoder.c rua_decoder.c rua_encoder.c \
- gen_hnbap.stamp gen_rua.stamp gen_ranap.stamp
+BUILT_SOURCES = hnbap_decoder.c hnbap_encoder.c rua_decoder.c rua_encoder.c sabp_encoder.c sabp_decoder.c \
+ gen_hnbap.stamp gen_rua.stamp gen_ranap.stamp gen_sabp.stamp
gen_hnbap.stamp: $(ASN1_ROOT)/hnbap/HNBAP-PDU-Contents.asn $(ASN1TOSTRUCT)
$(ASN1TOSTRUCT) -f $<
@@ -42,20 +42,40 @@
ranap_decoder.c ranap_encoder.c: gen_ranap.stamp
+gen_sabp.stamp: $(ASN1_ROOT)/sabp/SABP-PDU-Contents.asn $(ASN1TOSTRUCT)
+ $(ASN1TOSTRUCT) -p SABP_ -f $<
+# We also need to replace the include in the newly generated .c files:
+ sed -i 's,^#include "sabp_ies_defs.h",#include <osmocom/sabp/sabp_ies_defs.h>,' sabp_encoder.c sabp_decoder.c
+ sed -i 's,^#include "sabp_common.h",#include <osmocom/sabp/sabp_common.h>,' sabp_encoder.c sabp_decoder.c sabp_ies_defs.h
+ mv sabp_ies_defs.h $(top_builddir)/include/osmocom/sabp/
+# this is ugly ^. sabp_ies_defs.h is generated from asn1tostruct.py here, but
+# it should live in include/osmocom/sabp/.
+ touch $(top_builddir)/src/$@
+
+sabp_decoder.c sabp_encoder.c: gen_sabp.stamp
+
+
AM_CFLAGS = -Wall -I$(top_srcdir)/include -I$(top_builddir)/include \
$(OSMOCORE_CFLAGS) $(OSMOVTY_CFLAGS) $(OSMOCTRL_CFLAGS) $(OSMOGSM_CFLAGS) \
$(OSMONETIF_CFLAGS) $(ASN1C_CFLAGS) $(OSMOSIGTRAN_CFLAGS)
-# build the shared RANAP library
+# build the shared RANAP + SABP library
#
RANAP_LIBVERSION=2:2:0
-lib_LTLIBRARIES = libosmo-ranap.la
+SABP_LIBVERSION=0:0:0
+lib_LTLIBRARIES = libosmo-ranap.la libosmo-sabp.la
libosmo_ranap_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(RANAP_LIBVERSION)
libosmo_ranap_la_LIBADD = $(OSMOCORE_LIBS) $(OSMOGSM_LIBS) $(OSMOVTY_LIBS) $(OSMOSIGTRAN_LIBS) \
$(ASN1C_LIBS) ranap/libosmo-asn1-ranap.la
libosmo_ranap_la_SOURCES = ranap_common.c ranap_encoder.c ranap_decoder.c ranap_msg_factory.c iu_helpers.c \
ranap_common_cn.c iu_client.c iu_client_vty.c
+libosmo_sabp_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(SABP_LIBVERSION)
+libosmo_sabp_la_LIBADD = $(OSMOCORE_LIBS) $(OSMOGSM_LIBS) $(OSMOVTY_LIBS) $(OSMOSIGTRAN_LIBS) \
+ $(ASN1C_LIBS) sabp/libosmo-asn1-sabp.la
+libosmo_sabp_la_SOURCES = sabp_common.c sabp_encoder.c sabp_decoder.c
+
+
# build the actual HomeNodeB gateway
#
bin_PROGRAMS = osmo-hnbgw
@@ -80,6 +100,7 @@
$(MAKE) -C hnbap regen
$(MAKE) -C ranap regen
$(MAKE) -C rua regen
+ $(MAKE) -C sabp regen
DISTCLEANFILES = \
hnbap_decoder.c \
@@ -88,6 +109,9 @@
rua_encoder.c \
ranap_decoder.c \
ranap_encoder.c \
+ sabp_decoder.c \
+ sabp_encoder.c \
gen_hnbap.stamp \
gen_rua.stamp \
- gen_ranap.stamp
+ gen_ranap.stamp \
+ gen_sabp.stamp