aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2020-04-17src/input/ipaccess.c: set TCP_NODELAYosmith/abis-loadtestOliver Smith1-0/+13
Set TCP_NODELAY for all RSL/OML sockets. Related: SYS#4906 Change-Id: Ia3d4c41bf0659e682f0b7ae5f3d58ed0f28edb58
2020-04-11configure.ac: fix libtool issue with clang and sanitizerEric1-0/+5
As pointed out at https://github.com/libexpat/libexpat/issues/312 libtool does not play nice with clang sanitizer builds at all. For those builds LD shoud be set to clang too (and LDFLAGS needs the sanitizer flags as well), because the clang compiler driver knows how linking to the sanitizer libs works, but then at a later stage libtool fails to actually produce the shared libraries and the build fails. This is fixed by this patch. Addtionally LD_LIBRARY_PATH has no effect on conftest runs during configure time, so the rpath needs to be set to the asan library path to ensure the configure run does not fail due to a missing asan library, i.e.: SANS='-fsanitize=memory -fsanitize-recover=all -shared-libsan' export CC=clang-10 ASANPATH=$(dirname `$CC -print-file-name=libclang_rt.asan-x86_64.so`) export LDFLAGS="-Wl,-rpath,$ASANPATH $SANS $LDFLAGS" Change-Id: Ia3644168bfea13bda5e09b8bfe1d2c65abd32ad7
2020-03-09ortp: disable SO_REUSEADDR + SO_REUSEPORTHarald Welte3-2/+8
ortp >= 0.24.0 doesn't differentiate between SO_REUSEADDR and SO_REUSEPORT, and has both enabled by default. The latter means that we can end up with non-unique port bindings as we will not fail to bind the same port twice. This should have caused visible problems not only when operating multiple osmo-bts on one machine (rare), but also with a single osmo-bts. Once the range (default 16384-17407 ) wraps, there is a risk of new sockets (for new cals) colliding with old ones. As two ports (RTP+RTCP) are used per call, this means every 512 voice calls we expect the BTS to wrap. And from that point onwards there's a risk of overlapping with previously allocated sockets. Change-Id: I4fc9eee561c7958c70c63b4ffdc6cb700b795e28 Closes: OS#4444
2020-03-09Add rtp_test to show the double-bind bug of OS#4444Harald Welte4-2/+109
Change-Id: I6742e5504cfb827031031e4d8d49a616ab203a94
2020-03-07osmo_ortp: add osmo_rtp_socket_set_dscp()Oliver Smith3-0/+12
Related: OS#4438 Change-Id: I41603db8c1286660ad57ac1c78a8fb393a2b080b
2020-01-24add ipa ping/pong keepalive for OML/RSL links between bts and bscEric Wild4-22/+204
Patch-by: ewild, osmith Related: OS#4070 Change-Id: I30e3bd601e55355aaf738ee2f2c44c1ec2c46c6a Depends: (libosmo-abis) Ie453fdee8bfd7fc1a3f1ed67ef0331f0abb1d59b
2020-01-22ipaccess.c: line_already_initialized: int -> boolOliver Smith1-2/+2
Change-Id: I1cff638664029ef1a592b98cd499e1d8b703ada1
2020-01-12e1d: Implement varions non-LAPD timeslot modesHarald Welte1-1/+61
So far, the e1d input driver only contained code for LAPD signaling slots, let's extend it with support for all the other slot types, as well as support for run-time re-configuration. Change-Id: I53369004145681bf9178543fe407dfc75e4ae63a
2020-01-12e1d: Don't connect to e1d at program start timeHarald Welte1-7/+8
Let's not print an error at program/library start time if osmo-e1d cannot be reached. This error is confusing to everyone who may have a libosmo-abis with e1d support compiled in, but who is not (currently) using any lines via this driver, but others drivers. Change-Id: If0d033f8a2ab4f0e72549a811ffccc66b91fb0a8
2020-01-12e1d: Use LOGPIL/LOGPITS logging macros to give contextHarald Welte1-13/+9
Change-Id: I88ba83783ae1d8368990ec30cdc7ecff88884e41
2020-01-12e1d: Use line->port_nr to specify e1d interface/lineHarald Welte1-3/+11
This way we can support more than one E1 line via osmo-e1d. As neither mISDN nor DAHDI distinguish between mutliple cards of single ports vs. multi-port cards, we havee to map both interface + line number into a single uint8_t. Change-Id: I3b6975624a0155a68d2c67bfdbc1fb751fb50b13
2020-01-12e1d: Remove bogus vty_show function.Harald Welte1-9/+0
It's optional for an input driver to provide this function, and e.g. mISDN doesn't provide it, either. Change-Id: I56ed4244121f2019ece80d15bd07d5a8ce958273
2020-01-12e1d: Remove EXCEPTFD handlingHarald Welte1-3/+1
The file decscriptor 'except' handling was only added in the DAHDI input module as the DAHDI kernel side is actually using those. I don't think we can even use this in any way over unix domain sockets. Change-Id: I718629179181a1de3b82e23447549f593046d91f
2020-01-12e1d: Don't use perror() directly, use osmocom logging insteadHarald Welte1-2/+2
Change-Id: I98f337f8f517b98f9b78dc173e5761687609abd8
2020-01-12e1d: add missing forward-declaration of e1inp_e1d_init()Harald Welte1-0/+1
Change-Id: I0060e2c9772eb5c0293712cb0da7cc0477eb8abd
2020-01-12e1d: Use HAVE_E1D in C source, not ENABLE_E1DHarald Welte1-1/+1
The config.h files contains HAVE_E1D. Change-Id: Ib7d2db6703300b7d537c78ad9285948673d8b1d3
2020-01-12e1d: Initial osmo-e1d supportSylvain Munaut6-3/+312
osmo-e1d is part of the Osmocom 'software defined E1 interface, which consists of a USB device for the actual E1 hardware interfacing, and a daemon (osmo-e1d) implementing a libusb-based driver. This commit adds initial support for talking to osmo-e1d using the related libosmoe1d library. You need to use '--enable-e1d' at configure time to enable it. Change-Id: Ia0431c124e3b5b4108aee7b109d8c4bb0d8b45d4 Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2020-01-12introduce and use logging macros with context on E1 line / timeslotHarald Welte6-155/+123
Change-Id: I447a2360757fed97ed50f9db1e2efbf2f90e46a0
2020-01-12dahdi: Don't use perror() directly, use osmocom logging insteadHarald Welte1-4/+8
Change-Id: I287e10ee49a8ac26eef903568b29a3b2abf3b43e
2020-01-07add/clean big-endian packed structs (struct_endianess.py)Neels Hofmeyr1-0/+8
Change-Id: I09c56f59631828ad219a5edd7d95cac8df462c84
2020-01-02Bump version: 0.7.0.8-4c2c-dirty → 0.8.00.8.0Pau Espin Pedrol3-3/+21
Change-Id: If7099f91a3610d61d16e769406ac27f54e7363f3
2020-01-01input/ipa_keepalive.c: make sure IPA keepalive FSM is registeredVadim Yanitskiy1-1/+1
Change-Id: I36997b31f50fb1e051686a58dac09bc9ed391d17 Fixes: CID#206090
2019-12-01Enable DAHDI support by default; require --disable-dahdi otherwiseHarald Welte4-6/+14
libosmo-abis was built with DAHDI support, if the related header files were present at built time, and without if not. This kind of automagic enabling/disabling of features is wrong. Let's require DAHDI support by default, and force the user to take a conscious decision by using an explicit --disable-dahdi if he doesn't want it. At the same time, update debian/control to list dahdi-source as build dependency. Change-Id: Id9f7f063e7ca9e3ab4aa96fc93f243caf50fb66a Closes: OS#4248
2019-12-02e1_input.c: make reference counting get() / put() more verboseVadim Yanitskiy1-2/+9
Change-Id: I1c730d6d146b365712b28e3d37e038344ea850bc
2019-12-02input/ipaccess.c: fix debug message on receipt of IPAC_MSGT_ID_GETVadim Yanitskiy1-1/+1
Change-Id: I83c52c9733852cfebf183819fb36bd634d84bf7d
2019-12-02input/ipaccess.c: propagate errors from ipa_parse_unitid()Vadim Yanitskiy1-1/+5
Change-Id: Ic190daae31936959de8efb5a6de8744c016d5643
2019-11-14dahdi: Use ioctl(DAHDI_SPECIFY) instead of legacy /dev/dahdi/%uHarald Welte1-26/+35
It appears that opening "/dev/dahdi/channel" and using ioctl(DAHDI_SPECIFY) is possible at least since dahdi 2.4 (from 2010), and opening "/dev/dahdi/%u" has been deprecated ever since. One advantage of the new interface is that you can use channel numbers larger than 250, which is quite easily possible if you have more than eight E1 lines on a system. It also makes libosmo-abis work on systems where there are no udev rules for creating the legacy device nodes. Change-Id: Id6c8f27d7ae948b50e9cf5a38f039d782ff78e1d
2019-11-08ipa: Allow setting local addr and port for struct ipa_client_connPau Espin Pedrol5-8/+41
Change-Id: I3133c6b01647506a5b9c67e4699bcad3ff59f843
2019-09-15ipa: ipa_server_link_close() add checks of link stateAlexander Couzens1-0/+6
When closing a link which failed on open, ipa_server_link_close() would crash it when calling osmo_fd_unregister. Change-Id: I672d4de25464c3829b08aff26b1a6d4ad92e7684
2019-07-21Bump version: 0.6.0.13-b4a7 → 0.7.00.7.0Harald Welte2-2/+32
Change-Id: Ia5ecb2f69ce5436cae8d7a2d300e446ff24e84bc
2019-07-21extend the ipa keepalive fsmEric Wild2-9/+58
The new and improved fsm supports multipe use cases: 1) plain old ipa server/client operation 2) ipa client/server operation with custom send callback (i.e. to bypass the tx queue) 3) all of the above + custom timeout callback 4) fully generic operation that will pass opaque data to the callbacks The current code will always kill the fsm and deallocate it upon timeout, so the timeout callback will now return a value: 1 means the fsm will be automatically terminated, 0 means no action, which allows manually stopping/starting the fsm to reuse it. Change-Id: Ie453fdee8bfd7fc1a3f1ed67ef0331f0abb1d59b
2019-07-21ipaccess.c: Avoid calling close(-1) on error pathHarald Welte1-2/+4
Change-Id: Idabb9805a4a10c95ba0e01bc3f80ed8db87a9f85 Closes: CID#157118
2019-07-17spellingDebian Mobcom Maintainers1-1/+1
=================================================================== Change-Id: I22c98915648760a83abd5f0004af26d426a5e518
2019-07-10contrib/jenkins.sh: run "make maintainer-clean"Oliver Smith1-0/+1
Related: OS#3047 Change-Id: Ib261f25e2c7b48283a6142259991aadfcf40cdec
2019-06-21add TCP_USER_TIMEOUT to keepaliveEric Wild1-0/+11
The patch sets TCP_USER_TIMEOUT to the same timeout value, since keepalive only applies to idle connections, but we obviously want to fail as fast as possible even if there is data to send and it's not acked. Change-Id: I5e7425958472aa5d758e09bfbefc7d7d37bf6f5f
2019-06-21ipaccess: allow tcp keepalive for ipa clientsEric Wild1-2/+4
This allows using the e1_line x keepalive y z setting for clients like osmo-bts. Change-Id: Iadf22934ca6d3c44adac5573709ba53e75fa07da
2019-04-06ipa_keepalive_fsm: Suppress error messages for INIT -> INIT transitionHarald Welte1-1/+1
If we receive an OSMO_IPA_KA_E_STOP in INIT state, we are trying to re-enter INIT, which is not permitted as per the FSM definition. Adding this permission avoids the below error message from hitting the logs every time this happens: <0003> input/ipa_keepalive.c:158 IPA-KEEPALIVE(server)[0x612000000520]{INIT}: transition to state INIT not permitted! Change-Id: I8db2f2e708fc4fbb81f5019973098a80e8f540d2
2019-04-06ipa_keepalive_fsm: Fix OSMO_IPA_KA_E_STOP allstate eventHarald Welte1-0/+1
We had the allstate_action function registered, and that function implemented handling of OSMO_IPA_KA_E_STOP. However, the allstate_event_mask was not set, rendering this functionality inaccessible. Change-Id: I83fd991bdacb7bab794878e47c7797fecf8b9286
2019-03-19Add IPA keep-alive FSM implementationHarald Welte3-0/+327
The IPA keep-alive FSM code takes care of periodically transmitting and IPA CCM PING and expecting an IPA CCM PONG in return. Change-Id: I2763da49a74de85046ac07d53592c89973314ca6
2019-03-19rtp: Add 'autoconnect' feature to the osmo_rtp_socketSylvain Munaut2-0/+23
The bound RTP socket will wait for incoming RTP packets and as soon as it sees one, will 'connect' to it, so all replies will go to that sources and incoming messages from other sources will be discarded. This obviously only works once. Change-Id: I5b54ca4296901fcf37794faf29e0b2acca27bd1b Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2019-03-19tests: use -no-install libtool flag to avoid ./lt-* scriptsOliver Smith1-1/+1
This ensures that the rpath of the generated binaries is set to use only the just-compiled so-files and not any system-wide installed libraries while avoiding the ugly shell script wrapper. Change-Id: Idd458471069ef8912704cc7602c6e8c71c0b62be
2019-03-08ipa: Make ipa_server_conn_destroy() re-entrantHarald Welte1-0/+5
In some situations, the user code called by the closed_cb call-back might be tempted to call itself ipa_server_conn_destroy(), which would lead to a double-llist_del during osmo_fd_unregister() and also a subsequent double talloc_free(). Let's prevent such misuse by existing early in such situations. Change-Id: I0fef264ed5b4218906cdbca243ffa11b891025c6
2019-01-24Log peer's port in accept callbackMax1-2/+2
* log port from which we accept() the connection in addition to address * use macro helper for logging Change-Id: I186974dae1819af8c92f9ea9eeb966ec7c9c9f55
2019-01-24Set local IP in ipa_server_link properlyMax1-1/+10
When creating IPA link for server we might be called without explicit address (which is legit - it means bind to all available addresses). However in this case we won't have 'addr' field of ipa_server_link initialized properly. Fix this by following changes: * don't copy NULL value as address * use socket's local IP when no address set explicitly Change-Id: I33679bb35f426d4cafb223b9200fccbf407e0cf6
2019-01-20Bump version: 0.5.1.20-de57 → 0.6.00.6.0Harald Welte4-6/+38
Change-Id: I417065deb06ac7e8b3b8468b88cc803a41098c2d
2018-12-06log IPA tags correctlyStefan Sperling1-4/+4
Due to apparent copy-paste errors, wrong values were being logged for IPA tags in ipa_bts_id_resp(). Fixes: 4c57eef663e870247cb7a72130a50750317a44b9 Change-Id: I29a0401db0760219b9b9176709a88d589312261b Related: OS#3355
2018-11-12osmo_ortp: Log domain and fix strings without endl charPau Espin Pedrol1-1/+28
Change-Id: Ib6df0df04cd6ba342753c84398274d04917ace40
2018-10-03e1_input.h: Set correct type for input_signal_data->link_typePau Espin Pedrol1-1/+1
link_type field holds values from link->type as set in e1inp_int_snd_event(). Change-Id: Iaa33b793f89f2d16c9d949503c5ecc195bbcd2a4
2018-10-03ipaccess: Simplify handling of ipaccess e1line tsPau Espin Pedrol4-22/+36
Handle encoding specifics behind a macro to make code easier to understand and follow. Change-Id: Ibf251673bff95b7a0b066b19ef4dc6c0f94fff6b
2018-10-02ipacces: Log correct trx_nr during IPA GETPau Espin Pedrol1-1/+1
dev->trx_id points to a structure used for whole BTS and doesn't point to related TRX ID, which is encoded in priv_nr. Change-Id: I00b01790990c8d21fdbe0f5750fa02f13ddb2009