diff --git a/openbsc/.gitignore b/openbsc/.gitignore index f9dacacbc..bd35256dc 100644 --- a/openbsc/.gitignore +++ b/openbsc/.gitignore @@ -6,10 +6,9 @@ Makefile.in bscconfig.h bscconfig.h.in openbsc.pc -bsc_hack -bsc_msc_ip +src/osmo-nitb/osmo-nitb bsc_mgcp -src/bsc/osmo-bsc +src/osmo-bsc/osmo-bsc *.*~ *.sw? @@ -31,15 +30,15 @@ stamp-h1 # apps and app data hlr.sqlite3 -bs11_config -ipaccess-config -ipaccess-find -ipaccess-firmware -ipaccess-proxy -isdnsync -bsc_nat -osmo-sgsn -osmo-gbproxy +src/utils/bs11_config +src/ipaccess/ipaccess-config +src/ipaccess/ipaccess-find +src/ipaccess/ipaccess-firmware +src/ipaccess/ipaccess-proxy +src/utils/isdnsync +src/nat/bsc_nat +src/gprs/osmo-sgsn +src/gprs/osmo-gbproxy #tests tests/channel/channel_test diff --git a/openbsc/configure.in b/openbsc/configure.in index 50f7dbc38..525bad82c 100644 --- a/openbsc/configure.in +++ b/openbsc/configure.in @@ -87,10 +87,18 @@ AC_OUTPUT( include/openbsc/Makefile include/Makefile src/Makefile - src/ipaccess/Makefile - src/gprs/Makefile - src/nat/Makefile + src/trau/Makefile + src/abis/Makefile src/bsc/Makefile + src/msc/Makefile + src/mgcp/Makefile + src/common/Makefile + src/osmo-nitb/Makefile + src/osmo-bsc/Makefile + src/nat/Makefile + src/ipaccess/Makefile + src/utils/Makefile + src/gprs/Makefile tests/Makefile tests/debug/Makefile tests/gsm0408/Makefile diff --git a/openbsc/src/Makefile.am b/openbsc/src/Makefile.am index 6507591db..e4b2b960c 100644 --- a/openbsc/src/Makefile.am +++ b/openbsc/src/Makefile.am @@ -2,51 +2,17 @@ INCLUDES = $(all_includes) -I$(top_srcdir)/include -I$(top_builddir) AM_CFLAGS=-Wall $(LIBOSMOCORE_CFLAGS) $(LIBOSMOVTY_CFLAGS) $(COVERAGE_CFLAGS) AM_LDFLAGS = $(LIBOSMOCORE_LIBS) $(COVERAGE_LDFLAGS) -# build current directory before building gprs -SUBDIRS = . ipaccess gprs +SUBDIRS = common abis mgcp bsc trau osmo-nitb utils ipaccess gprs # Conditional modules if BUILD_NAT SUBDIRS += nat endif if BUILD_BSC -SUBDIRS += bsc +SUBDIRS += osmo-bsc endif -bin_PROGRAMS = bsc_hack bs11_config isdnsync bsc_mgcp -noinst_LIBRARIES = libbsc.a libmsc.a libvty.a libmgcp.a +bin_PROGRAMS = bsc_mgcp -libbsc_a_SOURCES = abis_rsl.c abis_nm.c abis_om2000.c gsm_data.c gsm_04_08_utils.c \ - chan_alloc.c debug.c socket.c abis_nm_vty.c abis_om2000_vty.c \ - gsm_subscriber_base.c subchan_demux.c bsc_rll.c transaction.c \ - trau_frame.c trau_mux.c paging.c \ - e1_config.c e1_input.c e1_input_vty.c \ - input/misdn.c input/ipaccess.c input/dahdi.c input/lapd.c \ - handover_logic.c talloc_ctx.c system_information.c rest_octets.c \ - bts_siemens_bs11.c bts_ipaccess_nanobts.c bts_ericsson_rbs2000.c mncc_upqueue.c \ - bts_unknown.c bsc_version.c bsc_api.c bsc_vty.c meas_rep.c gsm_04_80.c - -libmsc_a_SOURCES = gsm_subscriber.c db.c \ - mncc.c mncc_builtin.c mncc_sock.c \ - gsm_04_08.c gsm_04_11.c transaction.c \ - token_auth.c rrlp.c ussd.c silent_call.c \ - handover_decision.c auth.c \ - osmo_msc.c rtp_proxy.c - -libvty_a_SOURCES = common_vty.c - -libmgcp_a_SOURCES = mgcp/mgcp_protocol.c mgcp/mgcp_network.c mgcp/mgcp_vty.c - -bsc_hack_SOURCES = bsc_hack.c bsc_init.c bsc_vty.c vty_interface_layer3.c sms_queue.c -bsc_hack_LDADD = libmsc.a libbsc.a libvty.a libmsc.a \ - -ldl -ldbi $(LIBCRYPT) $(LIBOSMOVTY_LIBS) - -bs11_config_SOURCES = bs11_config.c abis_nm.c gsm_data.c debug.c \ - rs232.c bts_siemens_bs11.c - -isdnsync_SOURCES = isdnsync.c - -bsc_mgcp_SOURCES = mgcp/mgcp_main.c debug.c -bsc_mgcp_LDADD = libvty.a libmgcp.a $(LIBOSMOVTY_LIBS) - -EXTRA_DIST = input/lapd.h +bsc_mgcp_SOURCES = mgcp/mgcp_main.c +bsc_mgcp_LDADD = common/libcommon.a mgcp/libmgcp.a $(LIBOSMOVTY_LIBS) diff --git a/openbsc/src/abis/Makefile.am b/openbsc/src/abis/Makefile.am new file mode 100644 index 000000000..7f5ac47cc --- /dev/null +++ b/openbsc/src/abis/Makefile.am @@ -0,0 +1,13 @@ +INCLUDES = $(all_includes) -I$(top_srcdir)/include -I$(top_builddir) +AM_CFLAGS=-Wall $(LIBOSMOCORE_CFLAGS) $(LIBOSMOVTY_CFLAGS) $(COVERAGE_CFLAGS) +AM_LDFLAGS = $(LIBOSMOCORE_LIBS) $(COVERAGE_LDFLAGS) + +noinst_LIBRARIES = libabis.a + +libabis_a_SOURCES = e1_input.c e1_input_vty.c \ + input/misdn.c \ + input/ipaccess.c \ + input/dahdi.c \ + input/lapd.c + +EXTRA_DIST = input/lapd.h diff --git a/openbsc/src/e1_input.c b/openbsc/src/abis/e1_input.c similarity index 100% rename from openbsc/src/e1_input.c rename to openbsc/src/abis/e1_input.c diff --git a/openbsc/src/e1_input_vty.c b/openbsc/src/abis/e1_input_vty.c similarity index 100% rename from openbsc/src/e1_input_vty.c rename to openbsc/src/abis/e1_input_vty.c diff --git a/openbsc/src/input/dahdi.c b/openbsc/src/abis/input/dahdi.c similarity index 100% rename from openbsc/src/input/dahdi.c rename to openbsc/src/abis/input/dahdi.c diff --git a/openbsc/src/input/ipaccess.c b/openbsc/src/abis/input/ipaccess.c similarity index 100% rename from openbsc/src/input/ipaccess.c rename to openbsc/src/abis/input/ipaccess.c diff --git a/openbsc/src/input/lapd.c b/openbsc/src/abis/input/lapd.c similarity index 100% rename from openbsc/src/input/lapd.c rename to openbsc/src/abis/input/lapd.c diff --git a/openbsc/src/input/lapd.h b/openbsc/src/abis/input/lapd.h similarity index 100% rename from openbsc/src/input/lapd.h rename to openbsc/src/abis/input/lapd.h diff --git a/openbsc/src/input/misdn.c b/openbsc/src/abis/input/misdn.c similarity index 100% rename from openbsc/src/input/misdn.c rename to openbsc/src/abis/input/misdn.c diff --git a/openbsc/src/bsc/Makefile.am b/openbsc/src/bsc/Makefile.am index 9ebc84632..91be7fa62 100644 --- a/openbsc/src/bsc/Makefile.am +++ b/openbsc/src/bsc/Makefile.am @@ -1,15 +1,21 @@ INCLUDES = $(all_includes) -I$(top_srcdir)/include -I$(top_builddir) -AM_CFLAGS=-Wall $(LIBOSMOCORE_CFLAGS) $(LIBOSMOVTY_CFLAGS) $(LIBOSMOSCCP_CFLAGS) $(COVERAGE_CFLAGS) -AM_LDFLAGS = $(LIBOSMOCORE_LIBS) $(LIBOSMOVTY_LIBS) $(COVERAGE_LDFLAGS) +AM_CFLAGS=-Wall $(LIBOSMOCORE_CFLAGS) $(LIBOSMOVTY_CFLAGS) $(COVERAGE_CFLAGS) +AM_LDFLAGS = $(LIBOSMOCORE_LIBS) $(COVERAGE_LDFLAGS) -bin_PROGRAMS = osmo-bsc +noinst_LIBRARIES = libbsc.a +libbsc_a_SOURCES = abis_nm.c abis_nm_vty.c \ + abis_om2000.c abis_om2000_vty.c \ + abis_rsl.c bsc_rll.c \ + paging.c \ + bts_ericsson_rbs2000.c bts_ipaccess_nanobts.c bts_siemens_bs11.c bts_unknown.c \ + chan_alloc.c \ + gsm_subscriber_base.c \ + handover_decision.c handover_logic.c meas_rep.c \ + rest_octets.c system_information.c \ + e1_config.c \ + transaction.c \ + bsc_api.c bsc_msc.c bsc_vty.c \ + gsm_04_08_utils.c \ + bsc_init.c -osmo_bsc_SOURCES = osmo_bsc_main.c osmo_bsc_rf.c osmo_bsc_vty.c osmo_bsc_api.c \ - osmo_bsc_grace.c osmo_bsc_msc.c osmo_bsc_sccp.c \ - osmo_bsc_filter.c osmo_bsc_bssap.c osmo_bsc_audio.c \ - $(top_srcdir)/src/debug.c $(top_srcdir)/src/bsc_msc.c \ - $(top_srcdir)/src/bsc_init.c -osmo_bsc_LDADD = $(top_builddir)/src/libvty.a \ - $(top_builddir)/src/libmgcp.a $(top_builddir)/src/libbsc.a \ - $(LIBOSMOSCCP_LIBS) diff --git a/openbsc/src/abis_nm.c b/openbsc/src/bsc/abis_nm.c similarity index 100% rename from openbsc/src/abis_nm.c rename to openbsc/src/bsc/abis_nm.c diff --git a/openbsc/src/abis_nm_ipaccess.c b/openbsc/src/bsc/abis_nm_ipaccess.c similarity index 100% rename from openbsc/src/abis_nm_ipaccess.c rename to openbsc/src/bsc/abis_nm_ipaccess.c diff --git a/openbsc/src/abis_nm_vty.c b/openbsc/src/bsc/abis_nm_vty.c similarity index 100% rename from openbsc/src/abis_nm_vty.c rename to openbsc/src/bsc/abis_nm_vty.c diff --git a/openbsc/src/abis_om2000.c b/openbsc/src/bsc/abis_om2000.c similarity index 100% rename from openbsc/src/abis_om2000.c rename to openbsc/src/bsc/abis_om2000.c diff --git a/openbsc/src/abis_om2000_vty.c b/openbsc/src/bsc/abis_om2000_vty.c similarity index 100% rename from openbsc/src/abis_om2000_vty.c rename to openbsc/src/bsc/abis_om2000_vty.c diff --git a/openbsc/src/abis_rsl.c b/openbsc/src/bsc/abis_rsl.c similarity index 100% rename from openbsc/src/abis_rsl.c rename to openbsc/src/bsc/abis_rsl.c diff --git a/openbsc/src/bsc_api.c b/openbsc/src/bsc/bsc_api.c similarity index 100% rename from openbsc/src/bsc_api.c rename to openbsc/src/bsc/bsc_api.c diff --git a/openbsc/src/bsc_init.c b/openbsc/src/bsc/bsc_init.c similarity index 100% rename from openbsc/src/bsc_init.c rename to openbsc/src/bsc/bsc_init.c diff --git a/openbsc/src/bsc_msc.c b/openbsc/src/bsc/bsc_msc.c similarity index 100% rename from openbsc/src/bsc_msc.c rename to openbsc/src/bsc/bsc_msc.c diff --git a/openbsc/src/bsc_rll.c b/openbsc/src/bsc/bsc_rll.c similarity index 100% rename from openbsc/src/bsc_rll.c rename to openbsc/src/bsc/bsc_rll.c diff --git a/openbsc/src/bsc_vty.c b/openbsc/src/bsc/bsc_vty.c similarity index 100% rename from openbsc/src/bsc_vty.c rename to openbsc/src/bsc/bsc_vty.c diff --git a/openbsc/src/bts_ericsson_rbs2000.c b/openbsc/src/bsc/bts_ericsson_rbs2000.c similarity index 99% rename from openbsc/src/bts_ericsson_rbs2000.c rename to openbsc/src/bsc/bts_ericsson_rbs2000.c index ab2959107..def42b544 100644 --- a/openbsc/src/bts_ericsson_rbs2000.c +++ b/openbsc/src/bsc/bts_ericsson_rbs2000.c @@ -29,7 +29,7 @@ #include #include -#include "input/lapd.h" +#include "../abis/input/lapd.h" static void bootstrap_om_bts(struct gsm_bts *bts) { diff --git a/openbsc/src/bts_ipaccess_nanobts.c b/openbsc/src/bsc/bts_ipaccess_nanobts.c similarity index 100% rename from openbsc/src/bts_ipaccess_nanobts.c rename to openbsc/src/bsc/bts_ipaccess_nanobts.c diff --git a/openbsc/src/bts_siemens_bs11.c b/openbsc/src/bsc/bts_siemens_bs11.c similarity index 100% rename from openbsc/src/bts_siemens_bs11.c rename to openbsc/src/bsc/bts_siemens_bs11.c diff --git a/openbsc/src/bts_unknown.c b/openbsc/src/bsc/bts_unknown.c similarity index 100% rename from openbsc/src/bts_unknown.c rename to openbsc/src/bsc/bts_unknown.c diff --git a/openbsc/src/chan_alloc.c b/openbsc/src/bsc/chan_alloc.c similarity index 100% rename from openbsc/src/chan_alloc.c rename to openbsc/src/bsc/chan_alloc.c diff --git a/openbsc/src/e1_config.c b/openbsc/src/bsc/e1_config.c similarity index 100% rename from openbsc/src/e1_config.c rename to openbsc/src/bsc/e1_config.c diff --git a/openbsc/src/gsm_04_08_utils.c b/openbsc/src/bsc/gsm_04_08_utils.c similarity index 100% rename from openbsc/src/gsm_04_08_utils.c rename to openbsc/src/bsc/gsm_04_08_utils.c diff --git a/openbsc/src/gsm_subscriber_base.c b/openbsc/src/bsc/gsm_subscriber_base.c similarity index 100% rename from openbsc/src/gsm_subscriber_base.c rename to openbsc/src/bsc/gsm_subscriber_base.c diff --git a/openbsc/src/handover_decision.c b/openbsc/src/bsc/handover_decision.c similarity index 100% rename from openbsc/src/handover_decision.c rename to openbsc/src/bsc/handover_decision.c diff --git a/openbsc/src/handover_logic.c b/openbsc/src/bsc/handover_logic.c similarity index 100% rename from openbsc/src/handover_logic.c rename to openbsc/src/bsc/handover_logic.c diff --git a/openbsc/src/meas_proc.c b/openbsc/src/bsc/meas_proc.c similarity index 97% rename from openbsc/src/meas_proc.c rename to openbsc/src/bsc/meas_proc.c index d88e10e90..ade1f2e0c 100644 --- a/openbsc/src/meas_proc.c +++ b/openbsc/src/bsc/meas_proc.c @@ -22,12 +22,12 @@ #include #include -#include +#include +#include #include #include #include #include -#include /* process an already parsed measurement report */ static int process_meas_rep(struct gsm_meas_rep *mr) diff --git a/openbsc/src/meas_rep.c b/openbsc/src/bsc/meas_rep.c similarity index 100% rename from openbsc/src/meas_rep.c rename to openbsc/src/bsc/meas_rep.c diff --git a/openbsc/src/paging.c b/openbsc/src/bsc/paging.c similarity index 100% rename from openbsc/src/paging.c rename to openbsc/src/bsc/paging.c diff --git a/openbsc/src/rest_octets.c b/openbsc/src/bsc/rest_octets.c similarity index 100% rename from openbsc/src/rest_octets.c rename to openbsc/src/bsc/rest_octets.c diff --git a/openbsc/src/system_information.c b/openbsc/src/bsc/system_information.c similarity index 100% rename from openbsc/src/system_information.c rename to openbsc/src/bsc/system_information.c diff --git a/openbsc/src/transaction.c b/openbsc/src/bsc/transaction.c similarity index 100% rename from openbsc/src/transaction.c rename to openbsc/src/bsc/transaction.c diff --git a/openbsc/src/common/Makefile.am b/openbsc/src/common/Makefile.am new file mode 100644 index 000000000..2895452ea --- /dev/null +++ b/openbsc/src/common/Makefile.am @@ -0,0 +1,7 @@ +INCLUDES = $(all_includes) -I$(top_srcdir)/include -I$(top_builddir) +AM_CFLAGS=-Wall $(LIBOSMOCORE_CFLAGS) $(LIBOSMOVTY_CFLAGS) $(COVERAGE_CFLAGS) +AM_LDFLAGS = $(LIBOSMOCORE_LIBS) $(COVERAGE_LDFLAGS) + +noinst_LIBRARIES = libcommon.a + +libcommon_a_SOURCES = bsc_version.c common_vty.c debug.c gsm_data.c socket.c talloc_ctx.c diff --git a/openbsc/src/bsc_version.c b/openbsc/src/common/bsc_version.c similarity index 100% rename from openbsc/src/bsc_version.c rename to openbsc/src/common/bsc_version.c diff --git a/openbsc/src/common_vty.c b/openbsc/src/common/common_vty.c similarity index 100% rename from openbsc/src/common_vty.c rename to openbsc/src/common/common_vty.c diff --git a/openbsc/src/debug.c b/openbsc/src/common/debug.c similarity index 100% rename from openbsc/src/debug.c rename to openbsc/src/common/debug.c diff --git a/openbsc/src/gsm_data.c b/openbsc/src/common/gsm_data.c similarity index 100% rename from openbsc/src/gsm_data.c rename to openbsc/src/common/gsm_data.c diff --git a/openbsc/src/socket.c b/openbsc/src/common/socket.c similarity index 100% rename from openbsc/src/socket.c rename to openbsc/src/common/socket.c diff --git a/openbsc/src/talloc_ctx.c b/openbsc/src/common/talloc_ctx.c similarity index 100% rename from openbsc/src/talloc_ctx.c rename to openbsc/src/common/talloc_ctx.c diff --git a/openbsc/src/gprs/Makefile.am b/openbsc/src/gprs/Makefile.am index 2fa9181fb..cdad70f7c 100644 --- a/openbsc/src/gprs/Makefile.am +++ b/openbsc/src/gprs/Makefile.am @@ -16,11 +16,9 @@ libgb_a_SOURCES = gprs_ns.c gprs_ns_frgre.c gprs_ns_vty.c \ gprs_bssgp.c gprs_bssgp_util.c gprs_bssgp_vty.c \ gprs_llc.c gprs_llc_vty.c crc24.c -osmo_gbproxy_SOURCES = gb_proxy.c gb_proxy_main.c gb_proxy_vty.c \ - $(top_srcdir)/src/socket.c $(top_srcdir)/src/debug.c -osmo_gbproxy_LDADD = libgb.a $(top_builddir)/src/libvty.a +osmo_gbproxy_SOURCES = gb_proxy.c gb_proxy_main.c gb_proxy_vty.c +osmo_gbproxy_LDADD = libgb.a $(top_builddir)/src/common/libcommon.a osmo_sgsn_SOURCES = gprs_gmm.c gprs_sgsn.c gprs_sndcp.c gprs_sndcp_vty.c \ - sgsn_main.c sgsn_vty.c sgsn_libgtp.c \ - $(top_srcdir)/src/socket.c $(top_srcdir)/src/debug.c -osmo_sgsn_LDADD = libgb.a $(top_builddir)/src/libvty.a -lgtp + sgsn_main.c sgsn_vty.c sgsn_libgtp.c +osmo_sgsn_LDADD = libgb.a $(top_builddir)/src/common/libcommon.a -lgtp diff --git a/openbsc/src/ipaccess/Makefile.am b/openbsc/src/ipaccess/Makefile.am index c677b3cee..e789a0b08 100644 --- a/openbsc/src/ipaccess/Makefile.am +++ b/openbsc/src/ipaccess/Makefile.am @@ -7,7 +7,13 @@ bin_PROGRAMS = ipaccess-find ipaccess-config ipaccess-proxy ipaccess_find_SOURCES = ipaccess-find.c ipaccess_config_SOURCES = ipaccess-config.c ipaccess-firmware.c network_listen.c -ipaccess_config_LDADD = $(top_builddir)/src/libbsc.a $(top_builddir)/src/libmsc.a \ - $(top_builddir)/src/libbsc.a $(top_builddir)/src/libvty.a -ldl -ldbi $(LIBCRYPT) -ipaccess_proxy_SOURCES = ipaccess-proxy.c ../debug.c +# FIXME: resolve the bogus dependencies patched around here: +ipaccess_config_LDADD = $(top_builddir)/src/bsc/libbsc.a $(top_builddir)/src/msc/libmsc.a \ + $(top_builddir)/src/abis/libabis.a $(top_builddir)/src/bsc/libbsc.a \ + $(top_builddir)/src/trau/libtrau.a \ + $(top_builddir)/src/common/libcommon.a \ + -ldl -ldbi $(LIBCRYPT) + +ipaccess_proxy_SOURCES = ipaccess-proxy.c +ipaccess_proxy_LDADD = $(top_builddir)/src/common/libcommon.a diff --git a/openbsc/src/mgcp/Makefile.am b/openbsc/src/mgcp/Makefile.am new file mode 100644 index 000000000..b1d1d158a --- /dev/null +++ b/openbsc/src/mgcp/Makefile.am @@ -0,0 +1,7 @@ +INCLUDES = $(all_includes) -I$(top_srcdir)/include -I$(top_builddir) +AM_CFLAGS=-Wall $(LIBOSMOCORE_CFLAGS) $(LIBOSMOVTY_CFLAGS) $(COVERAGE_CFLAGS) +AM_LDFLAGS = $(LIBOSMOCORE_LIBS) $(COVERAGE_LDFLAGS) + +noinst_LIBRARIES = libmgcp.a + +libmgcp_a_SOURCES = mgcp_protocol.c mgcp_network.c mgcp_vty.c diff --git a/openbsc/src/msc/Makefile.am b/openbsc/src/msc/Makefile.am new file mode 100644 index 000000000..7d895c394 --- /dev/null +++ b/openbsc/src/msc/Makefile.am @@ -0,0 +1,19 @@ +INCLUDES = $(all_includes) -I$(top_srcdir)/include -I$(top_builddir) +AM_CFLAGS=-Wall $(LIBOSMOCORE_CFLAGS) $(LIBOSMOVTY_CFLAGS) $(COVERAGE_CFLAGS) +AM_LDFLAGS = $(LIBOSMOCORE_LIBS) $(COVERAGE_LDFLAGS) + +noinst_LIBRARIES = libmsc.a + +libmsc_a_SOURCES = auth.c \ + db.c \ + gsm_04_08.c gsm_04_11.c gsm_04_80.c \ + gsm_subscriber.c \ + mncc.c mncc_builtin.c mncc_sock.c \ + rrlp.c \ + silent_call.c \ + sms_queue.c \ + token_auth.c \ + ussd.c \ + vty_interface_layer3.c \ + osmo_msc.c + diff --git a/openbsc/src/msc/a3a8.c b/openbsc/src/msc/a3a8.c new file mode 100644 index 000000000..04470ba18 --- /dev/null +++ b/openbsc/src/msc/a3a8.c @@ -0,0 +1,269 @@ +/* An implementation of the GSM A3A8 algorithm. (Specifically, COMP128.) + */ + +/* Copyright 1998, Marc Briceno, Ian Goldberg, and David Wagner. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the authors nor the names of the contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Coded in C merely because C is a much more precise, concise form of + * expression for these purposes. See Judge Patel if you have any problems + * with this... + * Of course, it's only authentication, so it should be exportable for the + * usual boring reasons. + */ + +typedef unsigned char Byte; + +#include +/* #define TEST */ + +/* + * rand[0..15]: the challenge from the base station + * key[0..15]: the SIM's A3/A8 long-term key Ki + * simoutput[0..11]: what you'd get back if you fed rand and key to a real + * SIM. + * + * The GSM spec states that simoutput[0..3] is SRES, + * and simoutput[4..11] is Kc (the A5 session key). + * (See GSM 11.11, Section 8.16. See also the leaked document + * referenced below.) + * Note that Kc is bits 74..127 of the COMP128 output, followed by 10 + * zeros. + * In other words, A5 is keyed with only 54 bits of entropy. This + * represents a deliberate weakening of the key used for voice privacy + * by a factor of over 1000. + * + * Verified with a Pacific Bell Schlumberger SIM. Your mileage may vary. + * + * Marc Briceno , Ian Goldberg , + * and David Wagner + */ + +void A3A8(/* in */ Byte rand[16], /* in */ Byte key[16], + /* out */ Byte simoutput[12]); + +/* The compression tables. */ +static const Byte table_0[512] = { + 102,177,186,162, 2,156,112, 75, 55, 25, 8, 12,251,193,246,188, + 109,213,151, 53, 42, 79,191,115,233,242,164,223,209,148,108,161, + 252, 37,244, 47, 64,211, 6,237,185,160,139,113, 76,138, 59, 70, + 67, 26, 13,157, 63,179,221, 30,214, 36,166, 69,152,124,207,116, + 247,194, 41, 84, 71, 1, 49, 14, 95, 35,169, 21, 96, 78,215,225, + 182,243, 28, 92,201,118, 4, 74,248,128, 17, 11,146,132,245, 48, + 149, 90,120, 39, 87,230,106,232,175, 19,126,190,202,141,137,176, + 250, 27,101, 40,219,227, 58, 20, 51,178, 98,216,140, 22, 32,121, + 61,103,203, 72, 29,110, 85,212,180,204,150,183, 15, 66,172,196, + 56,197,158, 0,100, 45,153, 7,144,222,163,167, 60,135,210,231, + 174,165, 38,249,224, 34,220,229,217,208,241, 68,206,189,125,255, + 239, 54,168, 89,123,122, 73,145,117,234,143, 99,129,200,192, 82, + 104,170,136,235, 93, 81,205,173,236, 94,105, 52, 46,228,198, 5, + 57,254, 97,155,142,133,199,171,187, 50, 65,181,127,107,147,226, + 184,218,131, 33, 77, 86, 31, 44, 88, 62,238, 18, 24, 43,154, 23, + 80,159,134,111, 9,114, 3, 91, 16,130, 83, 10,195,240,253,119, + 177,102,162,186,156, 2, 75,112, 25, 55, 12, 8,193,251,188,246, + 213,109, 53,151, 79, 42,115,191,242,233,223,164,148,209,161,108, + 37,252, 47,244,211, 64,237, 6,160,185,113,139,138, 76, 70, 59, + 26, 67,157, 13,179, 63, 30,221, 36,214, 69,166,124,152,116,207, + 194,247, 84, 41, 1, 71, 14, 49, 35, 95, 21,169, 78, 96,225,215, + 243,182, 92, 28,118,201, 74, 4,128,248, 11, 17,132,146, 48,245, + 90,149, 39,120,230, 87,232,106, 19,175,190,126,141,202,176,137, + 27,250, 40,101,227,219, 20, 58,178, 51,216, 98, 22,140,121, 32, + 103, 61, 72,203,110, 29,212, 85,204,180,183,150, 66, 15,196,172, + 197, 56, 0,158, 45,100, 7,153,222,144,167,163,135, 60,231,210, + 165,174,249, 38, 34,224,229,220,208,217, 68,241,189,206,255,125, + 54,239, 89,168,122,123,145, 73,234,117, 99,143,200,129, 82,192, + 170,104,235,136, 81, 93,173,205, 94,236, 52,105,228, 46, 5,198, + 254, 57,155, 97,133,142,171,199, 50,187,181, 65,107,127,226,147, + 218,184, 33,131, 86, 77, 44, 31, 62, 88, 18,238, 43, 24, 23,154, + 159, 80,111,134,114, 9, 91, 3,130, 16, 10, 83,240,195,119,253 + }, table_1[256] = { + 19, 11, 80,114, 43, 1, 69, 94, 39, 18,127,117, 97, 3, 85, 43, + 27,124, 70, 83, 47, 71, 63, 10, 47, 89, 79, 4, 14, 59, 11, 5, + 35,107,103, 68, 21, 86, 36, 91, 85,126, 32, 50,109, 94,120, 6, + 53, 79, 28, 45, 99, 95, 41, 34, 88, 68, 93, 55,110,125,105, 20, + 90, 80, 76, 96, 23, 60, 89, 64,121, 56, 14, 74,101, 8, 19, 78, + 76, 66,104, 46,111, 50, 32, 3, 39, 0, 58, 25, 92, 22, 18, 51, + 57, 65,119,116, 22,109, 7, 86, 59, 93, 62,110, 78, 99, 77, 67, + 12,113, 87, 98,102, 5, 88, 33, 38, 56, 23, 8, 75, 45, 13, 75, + 95, 63, 28, 49,123,120, 20,112, 44, 30, 15, 98,106, 2,103, 29, + 82,107, 42,124, 24, 30, 41, 16,108,100,117, 40, 73, 40, 7,114, + 82,115, 36,112, 12,102,100, 84, 92, 48, 72, 97, 9, 54, 55, 74, + 113,123, 17, 26, 53, 58, 4, 9, 69,122, 21,118, 42, 60, 27, 73, + 118,125, 34, 15, 65,115, 84, 64, 62, 81, 70, 1, 24,111,121, 83, + 104, 81, 49,127, 48,105, 31, 10, 6, 91, 87, 37, 16, 54,116,126, + 31, 38, 13, 0, 72,106, 77, 61, 26, 67, 46, 29, 96, 37, 61, 52, + 101, 17, 44,108, 71, 52, 66, 57, 33, 51, 25, 90, 2,119,122, 35 + }, table_2[128] = { + 52, 50, 44, 6, 21, 49, 41, 59, 39, 51, 25, 32, 51, 47, 52, 43, + 37, 4, 40, 34, 61, 12, 28, 4, 58, 23, 8, 15, 12, 22, 9, 18, + 55, 10, 33, 35, 50, 1, 43, 3, 57, 13, 62, 14, 7, 42, 44, 59, + 62, 57, 27, 6, 8, 31, 26, 54, 41, 22, 45, 20, 39, 3, 16, 56, + 48, 2, 21, 28, 36, 42, 60, 33, 34, 18, 0, 11, 24, 10, 17, 61, + 29, 14, 45, 26, 55, 46, 11, 17, 54, 46, 9, 24, 30, 60, 32, 0, + 20, 38, 2, 30, 58, 35, 1, 16, 56, 40, 23, 48, 13, 19, 19, 27, + 31, 53, 47, 38, 63, 15, 49, 5, 37, 53, 25, 36, 63, 29, 5, 7 + }, table_3[64] = { + 1, 5, 29, 6, 25, 1, 18, 23, 17, 19, 0, 9, 24, 25, 6, 31, + 28, 20, 24, 30, 4, 27, 3, 13, 15, 16, 14, 18, 4, 3, 8, 9, + 20, 0, 12, 26, 21, 8, 28, 2, 29, 2, 15, 7, 11, 22, 14, 10, + 17, 21, 12, 30, 26, 27, 16, 31, 11, 7, 13, 23, 10, 5, 22, 19 + }, table_4[32] = { + 15, 12, 10, 4, 1, 14, 11, 7, 5, 0, 14, 7, 1, 2, 13, 8, + 10, 3, 4, 9, 6, 0, 3, 2, 5, 6, 8, 9, 11, 13, 15, 12 + }, *table[5] = { table_0, table_1, table_2, table_3, table_4 }; + +/* + * This code derived from a leaked document from the GSM standards. + * Some missing pieces were filled in by reverse-engineering a working SIM. + * We have verified that this is the correct COMP128 algorithm. + * + * The first page of the document identifies it as + * _Technical Information: GSM System Security Study_. + * 10-1617-01, 10th June 1988. + * The bottom of the title page is marked + * Racal Research Ltd. + * Worton Drive, Worton Grange Industrial Estate, + * Reading, Berks. RG2 0SB, England. + * Telephone: Reading (0734) 868601 Telex: 847152 + * The relevant bits are in Part I, Section 20 (pages 66--67). Enjoy! + * + * Note: There are three typos in the spec (discovered by + * reverse-engineering). + * First, "z = (2 * x[n] + x[n]) mod 2^(9-j)" should clearly read + * "z = (2 * x[m] + x[n]) mod 2^(9-j)". + * Second, the "k" loop in the "Form bits from bytes" section is severely + * botched: the k index should run only from 0 to 3, and clearly the range + * on "the (8-k)th bit of byte j" is also off (should be 0..7, not 1..8, + * to be consistent with the subsequent section). + * Third, SRES is taken from the first 8 nibbles of x[], not the last 8 as + * claimed in the document. (And the document doesn't specify how Kc is + * derived, but that was also easily discovered with reverse engineering.) + * All of these typos have been corrected in the following code. + */ + +void A3A8(/* in */ Byte rand[16], /* in */ Byte key[16], + /* out */ Byte simoutput[12]) +{ + Byte x[32], bit[128]; + int i, j, k, l, m, n, y, z, next_bit; + + /* ( Load RAND into last 16 bytes of input ) */ + for (i=16; i<32; i++) + x[i] = rand[i-16]; + + /* ( Loop eight times ) */ + for (i=1; i<9; i++) { + /* ( Load key into first 16 bytes of input ) */ + for (j=0; j<16; j++) + x[j] = key[j]; + /* ( Perform substitutions ) */ + for (j=0; j<5; j++) + for (k=0; k<(1<>(3-k)) & 1; + /* ( Permutation but not on the last loop ) */ + if (i < 8) + for (j=0; j<16; j++) { + x[j+16] = 0; + for (k=0; k<8; k++) { + next_bit = ((8*j + k)*17) % 128; + x[j+16] |= bit[next_bit] << (7-k); + } + } + } + + /* + * ( At this stage the vector x[] consists of 32 nibbles. + * The first 8 of these are taken as the output SRES. ) + */ + + /* The remainder of the code is not given explicitly in the + * standard, but was derived by reverse-engineering. + */ + + for (i=0; i<4; i++) + simoutput[i] = (x[2*i]<<4) | x[2*i+1]; + for (i=0; i<6; i++) + simoutput[4+i] = (x[2*i+18]<<6) | (x[2*i+18+1]<<2) + | (x[2*i+18+2]>>2); + simoutput[4+6] = (x[2*6+18]<<6) | (x[2*6+18+1]<<2); + simoutput[4+7] = 0; +} + + +#ifdef TEST +int hextoint(char x) +{ + x = toupper(x); + if (x >= 'A' && x <= 'F') + return x-'A'+10; + else if (x >= '0' && x <= '9') + return x-'0'; + fprintf(stderr, "bad input.\n"); + exit(1); +} + +int main(int argc, char **argv) +{ + Byte key[16], rand[16], simoutput[12]; + int i; + + if (argc != 3 || strlen(argv[1]) != 34 || strlen(argv[2]) != 34 + || strncmp(argv[1], "0x", 2) != 0 + || strncmp(argv[2], "0x", 2) != 0) { + fprintf(stderr, "Usage: %s 0x 0x\n", argv[0]); + exit(1); + } + + for (i=0; i<16; i++) + key[i] = (hextoint(argv[1][2*i+2])<<4) + | hextoint(argv[1][2*i+3]); + for (i=0; i<16; i++) + rand[i] = (hextoint(argv[2][2*i+2])<<4) + | hextoint(argv[2][2*i+3]); + A3A8(rand, key, simoutput); + printf("simoutput: "); + for (i=0; i<12; i++) + printf("%02X", simoutput[i]); + printf("\n"); + return 0; +} +#endif + diff --git a/openbsc/src/auth.c b/openbsc/src/msc/auth.c similarity index 100% rename from openbsc/src/auth.c rename to openbsc/src/msc/auth.c diff --git a/openbsc/src/db.c b/openbsc/src/msc/db.c similarity index 100% rename from openbsc/src/db.c rename to openbsc/src/msc/db.c diff --git a/openbsc/src/gsm_04_08.c b/openbsc/src/msc/gsm_04_08.c similarity index 99% rename from openbsc/src/gsm_04_08.c rename to openbsc/src/msc/gsm_04_08.c index b08b375cb..2b61aa9b0 100644 --- a/openbsc/src/gsm_04_08.c +++ b/openbsc/src/msc/gsm_04_08.c @@ -75,6 +75,11 @@ struct gsm_lai { static u_int32_t new_callref = 0x80000001; +void cc_tx_to_mncc(struct gsm_network *net, struct msgb *msg) +{ + net->mncc_recv(net, msg); +} + static int gsm48_conn_sendmsg(struct msgb *msg, struct gsm_subscriber_connection *conn, struct gsm_trans *trans) { diff --git a/openbsc/src/gsm_04_11.c b/openbsc/src/msc/gsm_04_11.c similarity index 100% rename from openbsc/src/gsm_04_11.c rename to openbsc/src/msc/gsm_04_11.c diff --git a/openbsc/src/gsm_04_80.c b/openbsc/src/msc/gsm_04_80.c similarity index 100% rename from openbsc/src/gsm_04_80.c rename to openbsc/src/msc/gsm_04_80.c diff --git a/openbsc/src/gsm_subscriber.c b/openbsc/src/msc/gsm_subscriber.c similarity index 100% rename from openbsc/src/gsm_subscriber.c rename to openbsc/src/msc/gsm_subscriber.c diff --git a/openbsc/src/mncc.c b/openbsc/src/msc/mncc.c similarity index 100% rename from openbsc/src/mncc.c rename to openbsc/src/msc/mncc.c diff --git a/openbsc/src/mncc_builtin.c b/openbsc/src/msc/mncc_builtin.c similarity index 100% rename from openbsc/src/mncc_builtin.c rename to openbsc/src/msc/mncc_builtin.c diff --git a/openbsc/src/mncc_sock.c b/openbsc/src/msc/mncc_sock.c similarity index 100% rename from openbsc/src/mncc_sock.c rename to openbsc/src/msc/mncc_sock.c diff --git a/openbsc/src/osmo_msc.c b/openbsc/src/msc/osmo_msc.c similarity index 100% rename from openbsc/src/osmo_msc.c rename to openbsc/src/msc/osmo_msc.c diff --git a/openbsc/src/rrlp.c b/openbsc/src/msc/rrlp.c similarity index 100% rename from openbsc/src/rrlp.c rename to openbsc/src/msc/rrlp.c diff --git a/openbsc/src/silent_call.c b/openbsc/src/msc/silent_call.c similarity index 100% rename from openbsc/src/silent_call.c rename to openbsc/src/msc/silent_call.c diff --git a/openbsc/src/sms_queue.c b/openbsc/src/msc/sms_queue.c similarity index 100% rename from openbsc/src/sms_queue.c rename to openbsc/src/msc/sms_queue.c diff --git a/openbsc/src/token_auth.c b/openbsc/src/msc/token_auth.c similarity index 100% rename from openbsc/src/token_auth.c rename to openbsc/src/msc/token_auth.c diff --git a/openbsc/src/ussd.c b/openbsc/src/msc/ussd.c similarity index 100% rename from openbsc/src/ussd.c rename to openbsc/src/msc/ussd.c diff --git a/openbsc/src/vty_interface_layer3.c b/openbsc/src/msc/vty_interface_layer3.c similarity index 100% rename from openbsc/src/vty_interface_layer3.c rename to openbsc/src/msc/vty_interface_layer3.c diff --git a/openbsc/src/nat/Makefile.am b/openbsc/src/nat/Makefile.am index 5afcc2e7f..7ee587d42 100644 --- a/openbsc/src/nat/Makefile.am +++ b/openbsc/src/nat/Makefile.am @@ -6,8 +6,8 @@ bin_PROGRAMS = bsc_nat bsc_nat_SOURCES = bsc_filter.c bsc_mgcp_utils.c bsc_nat.c bsc_nat_utils.c \ - bsc_nat_vty.c bsc_sccp.c bsc_ussd.c \ - $(top_srcdir)/src/debug.c $(top_srcdir)/src/bsc_msc.c -bsc_nat_LDADD = $(top_builddir)/src/libvty.a \ - $(top_builddir)/src/libmgcp.a $(top_builddir)/src/libbsc.a \ + bsc_nat_vty.c bsc_sccp.c bsc_ussd.c +bsc_nat_LDADD = $(top_builddir)/src/common/libcommon.a \ + $(top_builddir)/src/mgcp/libmgcp.a $(top_builddir)/src/bsc/libbsc.a \ + $(top_builddir)/src/abis/libabis.a $(top_builddir)/src/trau/libtrau.a \ -lrt $(LIBOSMOSCCP_LIBS) diff --git a/openbsc/src/osmo-bsc/Makefile.am b/openbsc/src/osmo-bsc/Makefile.am new file mode 100644 index 000000000..735d440a1 --- /dev/null +++ b/openbsc/src/osmo-bsc/Makefile.am @@ -0,0 +1,14 @@ +INCLUDES = $(all_includes) -I$(top_srcdir)/include -I$(top_builddir) +AM_CFLAGS=-Wall $(LIBOSMOCORE_CFLAGS) $(LIBOSMOVTY_CFLAGS) $(LIBOSMOSCCP_CFLAGS) $(COVERAGE_CFLAGS) +AM_LDFLAGS = $(LIBOSMOCORE_LIBS) $(LIBOSMOVTY_LIBS) $(COVERAGE_LDFLAGS) + +bin_PROGRAMS = osmo-bsc + + +osmo_bsc_SOURCES = osmo_bsc_main.c osmo_bsc_rf.c osmo_bsc_vty.c osmo_bsc_api.c \ + osmo_bsc_grace.c osmo_bsc_msc.c osmo_bsc_sccp.c \ + osmo_bsc_filter.c osmo_bsc_bssap.c osmo_bsc_audio.c +# once again since TRAU uses CC symbol :( +osmo_bsc_LDADD = ../bsc/libbsc.a ../msc/libmsc.a ../bsc/libbsc.a \ + ../abis/libabis.a ../trau/libtrau.a ../common/libcommon.a \ + $(LIBOSMOSCCP_LIBS) diff --git a/openbsc/src/bsc/osmo_bsc_api.c b/openbsc/src/osmo-bsc/osmo_bsc_api.c similarity index 100% rename from openbsc/src/bsc/osmo_bsc_api.c rename to openbsc/src/osmo-bsc/osmo_bsc_api.c diff --git a/openbsc/src/bsc/osmo_bsc_audio.c b/openbsc/src/osmo-bsc/osmo_bsc_audio.c similarity index 100% rename from openbsc/src/bsc/osmo_bsc_audio.c rename to openbsc/src/osmo-bsc/osmo_bsc_audio.c diff --git a/openbsc/src/bsc/osmo_bsc_bssap.c b/openbsc/src/osmo-bsc/osmo_bsc_bssap.c similarity index 100% rename from openbsc/src/bsc/osmo_bsc_bssap.c rename to openbsc/src/osmo-bsc/osmo_bsc_bssap.c diff --git a/openbsc/src/bsc/osmo_bsc_filter.c b/openbsc/src/osmo-bsc/osmo_bsc_filter.c similarity index 100% rename from openbsc/src/bsc/osmo_bsc_filter.c rename to openbsc/src/osmo-bsc/osmo_bsc_filter.c diff --git a/openbsc/src/bsc/osmo_bsc_grace.c b/openbsc/src/osmo-bsc/osmo_bsc_grace.c similarity index 100% rename from openbsc/src/bsc/osmo_bsc_grace.c rename to openbsc/src/osmo-bsc/osmo_bsc_grace.c diff --git a/openbsc/src/bsc/osmo_bsc_main.c b/openbsc/src/osmo-bsc/osmo_bsc_main.c similarity index 100% rename from openbsc/src/bsc/osmo_bsc_main.c rename to openbsc/src/osmo-bsc/osmo_bsc_main.c diff --git a/openbsc/src/bsc/osmo_bsc_msc.c b/openbsc/src/osmo-bsc/osmo_bsc_msc.c similarity index 100% rename from openbsc/src/bsc/osmo_bsc_msc.c rename to openbsc/src/osmo-bsc/osmo_bsc_msc.c diff --git a/openbsc/src/bsc/osmo_bsc_rf.c b/openbsc/src/osmo-bsc/osmo_bsc_rf.c similarity index 100% rename from openbsc/src/bsc/osmo_bsc_rf.c rename to openbsc/src/osmo-bsc/osmo_bsc_rf.c diff --git a/openbsc/src/bsc/osmo_bsc_sccp.c b/openbsc/src/osmo-bsc/osmo_bsc_sccp.c similarity index 100% rename from openbsc/src/bsc/osmo_bsc_sccp.c rename to openbsc/src/osmo-bsc/osmo_bsc_sccp.c diff --git a/openbsc/src/bsc/osmo_bsc_vty.c b/openbsc/src/osmo-bsc/osmo_bsc_vty.c similarity index 100% rename from openbsc/src/bsc/osmo_bsc_vty.c rename to openbsc/src/osmo-bsc/osmo_bsc_vty.c diff --git a/openbsc/src/osmo-nitb/Makefile.am b/openbsc/src/osmo-nitb/Makefile.am new file mode 100644 index 000000000..55822e906 --- /dev/null +++ b/openbsc/src/osmo-nitb/Makefile.am @@ -0,0 +1,10 @@ +INCLUDES = $(all_includes) -I$(top_srcdir)/include -I$(top_builddir) +AM_CFLAGS=-Wall $(LIBOSMOCORE_CFLAGS) $(LIBOSMOVTY_CFLAGS) $(COVERAGE_CFLAGS) +AM_LDFLAGS = $(LIBOSMOCORE_LIBS) $(COVERAGE_LDFLAGS) + +bin_PROGRAMS = osmo-nitb + +osmo_nitb_SOURCES = bsc_hack.c +osmo_nitb_LDADD = -ldl -ldbi $(LIBCRYPT) $(LIBOSMOVTY_LIBS) \ + ../bsc/libbsc.a ../msc/libmsc.a ../bsc/libbsc.a ../trau/libtrau.a ../abis/libabis.a \ + ../common/libcommon.a diff --git a/openbsc/src/bsc_hack.c b/openbsc/src/osmo-nitb/bsc_hack.c similarity index 100% rename from openbsc/src/bsc_hack.c rename to openbsc/src/osmo-nitb/bsc_hack.c diff --git a/openbsc/src/trau/Makefile.am b/openbsc/src/trau/Makefile.am new file mode 100644 index 000000000..01ed251d8 --- /dev/null +++ b/openbsc/src/trau/Makefile.am @@ -0,0 +1,7 @@ +INCLUDES = $(all_includes) -I$(top_srcdir)/include -I$(top_builddir) +AM_CFLAGS=-Wall $(LIBOSMOCORE_CFLAGS) $(LIBOSMOVTY_CFLAGS) $(COVERAGE_CFLAGS) +AM_LDFLAGS = $(LIBOSMOCORE_LIBS) $(COVERAGE_LDFLAGS) + +noinst_LIBRARIES = libtrau.a + +libtrau_a_SOURCES = rtp_proxy.c subchan_demux.c trau_frame.c trau_mux.c trau_upqueue.c diff --git a/openbsc/src/rtp_proxy.c b/openbsc/src/trau/rtp_proxy.c similarity index 99% rename from openbsc/src/rtp_proxy.c rename to openbsc/src/trau/rtp_proxy.c index 8d14447fa..eefc0e1d6 100644 --- a/openbsc/src/rtp_proxy.c +++ b/openbsc/src/trau/rtp_proxy.c @@ -442,7 +442,7 @@ static int rtp_socket_read(struct rtp_socket *rs, struct rtp_sub_socket *rss) if (rc < 0) goto out_free; msgb_free(msg); - cc_tx_to_mncc(rs->receive.net, new_msg); + trau_tx_to_mncc(rs->receive.net, new_msg); break; case RTP_NONE: /* if socket exists, but disabled by app */ diff --git a/openbsc/src/subchan_demux.c b/openbsc/src/trau/subchan_demux.c similarity index 100% rename from openbsc/src/subchan_demux.c rename to openbsc/src/trau/subchan_demux.c diff --git a/openbsc/src/trau_frame.c b/openbsc/src/trau/trau_frame.c similarity index 100% rename from openbsc/src/trau_frame.c rename to openbsc/src/trau/trau_frame.c diff --git a/openbsc/src/trau_mux.c b/openbsc/src/trau/trau_mux.c similarity index 99% rename from openbsc/src/trau_mux.c rename to openbsc/src/trau/trau_mux.c index d521a62e6..712e22d85 100644 --- a/openbsc/src/trau_mux.c +++ b/openbsc/src/trau/trau_mux.c @@ -213,7 +213,7 @@ int trau_mux_input(struct gsm_e1_subslot *src_e1_ss, } frame->msg_type = GSM_TCHF_FRAME; frame->callref = ue->callref; - cc_tx_to_mncc(ue->net, msg); + trau_tx_to_mncc(ue->net, msg); return 0; } diff --git a/openbsc/src/mncc_upqueue.c b/openbsc/src/trau/trau_upqueue.c similarity index 88% rename from openbsc/src/mncc_upqueue.c rename to openbsc/src/trau/trau_upqueue.c index 126072b2c..f8edaf0ff 100644 --- a/openbsc/src/mncc_upqueue.c +++ b/openbsc/src/trau/trau_upqueue.c @@ -1,4 +1,4 @@ -/* mncc_upqueue.c - Pass msgb's up the chain */ +/* trau_upqueue.c - Pass msgb's up the chain */ /* (C) 2010 by Harald Welte * All Rights Reserved @@ -21,7 +21,7 @@ #include #include -void cc_tx_to_mncc(struct gsm_network *net, struct msgb *msg) +void trau_tx_to_mncc(struct gsm_network *net, struct msgb *msg) { net->mncc_recv(net, msg); } diff --git a/openbsc/src/utils/Makefile.am b/openbsc/src/utils/Makefile.am new file mode 100644 index 000000000..2847c6ad8 --- /dev/null +++ b/openbsc/src/utils/Makefile.am @@ -0,0 +1,10 @@ +INCLUDES = $(all_includes) -I$(top_srcdir)/include -I$(top_builddir) +AM_CFLAGS=-Wall $(LIBOSMOCORE_CFLAGS) $(LIBOSMOVTY_CFLAGS) $(COVERAGE_CFLAGS) +AM_LDFLAGS = $(LIBOSMOCORE_LIBS) $(COVERAGE_LDFLAGS) + +bin_PROGRAMS = bs11_config isdnsync + +bs11_config_SOURCES = bs11_config.c rs232.c +bs11_config_LDADD = ../common/libcommon.a ../abis/libabis.a ../bsc/libbsc.a + +isdnsync_SOURCES = isdnsync.c diff --git a/openbsc/src/bs11_config.c b/openbsc/src/utils/bs11_config.c similarity index 100% rename from openbsc/src/bs11_config.c rename to openbsc/src/utils/bs11_config.c diff --git a/openbsc/src/isdnsync.c b/openbsc/src/utils/isdnsync.c similarity index 100% rename from openbsc/src/isdnsync.c rename to openbsc/src/utils/isdnsync.c diff --git a/openbsc/src/rs232.c b/openbsc/src/utils/rs232.c similarity index 100% rename from openbsc/src/rs232.c rename to openbsc/src/utils/rs232.c