Commit Graph

1550 Commits

Author SHA1 Message Date
Philipp Maier 225bdf4779 gsm0808: add message generator for BSSMAP HANDOVER PERFORMED
We currently have no generator function that can generate BSSMAP
HANDOVER PERFORMED messages. Lets add function for this.

Change-Id: I825106858bd89afc9837811b8fed2e8accc82441
Related: OS#3645
2018-12-03 13:54:31 +00:00
Alexander Couzens a2f696fa5c configure.ac: check clock_gettime for glib < 2.17
glib < 2.17 doesn't support clock_gettime directly, it is available
via librt.

Change-Id: Ice853d85ffe859b1d4df48b91b050c24d85c861b
2018-12-03 13:52:29 +00:00
Max f69aa9cb6a Move BSSMAP_MSG_* defines to header file
This will be reused be several tests related to TS 48.008 and TS 29.205
in follow-up commits.

Change-Id: I4d8cc05b8df8e70c1f6257e53ae3acec7901681f
2018-11-30 17:45:57 +01:00
Max a66de71f8e ctrl: print textual error on IPA parsing failure
Change-Id: I49bb613b416d549f554fd9d23cd37b63954324db
2018-11-26 10:15:02 +01:00
Max 49c06680e7 Update gsm0808_create_ass() doxygen
* add spec reference
* remove LCLS note: CI parameter is optional but have nothing to do with
  LCLS

It's pretty hard to decipher from the spec what CI is useful for and we
have not used it anyway so let's just keep it as "Optional" for now.

Change-Id: I5552732afcec48047d993ae6ffb73a3e5d7c9202
2018-11-22 12:54:52 +00:00
Pau Espin c8772517d9 gsm: Deprecate buggy gsm_arfcn2band API and introduce gsm_arfcn2band_rc
ARFCNs are values in well defined ranges. Until this patch, ARFCNs not
belonging to any band were blindly assigned to DCS1800 by
gsm_arfcn2band, causing unnoticed bugs and misconfigurations in
osmo-bsc.

Previous API gsm_arfcn2band cannot accomodate this kind of check easily,
so let's deprecate it to tell people to use a new API gsm_arfcn2band_rc
which performs this kind of checks and allows callers to log failures,
misconfigurations, etc.
At the same time, modify implementation of gsm_arfcn2band to abort if an
invalid ARFCN is passed, this way users of this API can notice they are
passing wrong data to it that most probably will produce unexpected
results.

Related: OS#3063
Change-Id: I780d452dcebce385469e32ef2fd844df6033393a
2018-11-20 16:56:28 +00:00
Stefan Sperling c6bfc63d10 document unblock-ack vs. signalling in gprs_ns_process_msg()
Since commit 797558ea17 we send the
NS_UNBLOCK_ACK message before dispatching the NS_UNBLOCK signal,
instead of afterwards.

Add comments which explain the intended order of events.

Suggested-by: Pau
Related: OS#2388

Change-Id: I4b93853c952a97302f8afc14f462f22c3e487564
2018-11-20 11:06:05 +01:00
Stefan Sperling 797558ea17 send NS_POUT_UNBLOCK_ACK before signalling S_NS_UNBLOCK
In gprs_ns_process_msg(), we were dispatching the S_NS_UNBLOCK
signal before sending out the NS_POUT_UNBLOCK_ACK message.

Signal handlers might send messages to the other side, assuming
that NS is now unblocked. However, since such messages will arrive
before the UNBLOCK_ACK message the receiver might discard them.
This problem has been observed with our TTCN3 BSSGP_Emulation
as a peer to osmo-pcu.

This patch makes TTCN3 PCU TC_paging() test pass regardless of
whether the test or osmo-pcu is started first. Before this patch,
this test would only pass if the test was started before osmo-pcu.
A remaining problem is that the test does not yet keep passing
reliably unless osmo-pcu is restarted between test runs.

Change-Id: I3af54a14bb6bcfa167c9a9d9f67835e7f5b9f1bb
Related: OS#2890
Related: OS#2388
2018-11-19 17:30:37 +01:00
Max ed651d2485 Support cipher mode reject with extended cause
* add function to generate cipher mode reject with extended (2-byte)
  Cause IE
* add function to get (extended) Cause value
* add corresponding (extended cause) test
* update existing (non-extended cause) test
* use enum as a parameter for existing non-extended version to make
  interface more unified

Change-Id: Id5509b94a18180a44f45300caaa02b843c166fa3
Related: OS#3187
2018-11-19 05:52:28 +00:00
Max 84fb5bb6a0 Move msgb_push helpers to public header
The msgb_wrap_with_TL() is generally useful so it make sense to make it
public to facilitate code re-use.

Other helpers can be implemented as trivial wrappers over existing tlv.h
functions. Update headers and code accordingly.

Change-Id: I37e91d031fba28cf1c6735b8069b0265746f55e6
2018-11-19 05:47:25 +00:00
Pau Espin d8d0c3e2d1 gsm48: gsm48_decode_freq_list: Improve documentation of paramter f
Change-Id: Id8e3afff737211ded3c5689f2c83b1a544b42f9d
2018-11-18 20:44:04 +00:00
Max 961db7c270 Update GSM0808_LCLS enums
Add values indicating that LCLS control/config/status value has not been
received yet.

Change-Id: I52dc6a52f5ee043ed2c1625ffecfd495e3c746b1
Related: OS#2487
2018-11-18 20:20:48 +00:00
Max aa93463053 Update 3GPP TS 08.08 Cause handling
* add Class definitions
* add helper to check for extended bit
* add helper to get Cause's Class
* use enum in gsm0808_cause_name() and gsm0808_create_cipher_reject() to
  avoid confusion between class and cause
* update gsm0808_create_cipher_reject() comments

Change-Id: I31b31dfc22eb4b6b07089e1255246ac458125340
Related: OS#3187
2018-11-18 20:14:06 +00:00
Philipp Maier af6710f4d4 fsm: fix apidoc of osmo_fsm_state_name()
The api documentation of osmo_fsm_state_name() refers to an FSM
instance, but it really means the state of an FSM.

Change-Id: I88ddd6048426d380c49170e66f57b3843398c046
2018-11-16 17:45:40 +01:00
Philipp Maier 086b345414 gsm29118: add value strings for SGSAP IEI
The value strings for the SGSAP IEI are missing, lets add a set of value
strings and a function to retrieve them.

Change-Id: I2787303174f74ffba86675bce2c12f680d8ea708
Related: OS#3615
2018-11-16 17:42:38 +01:00
Oliver Smith 860651ebd8 socket.c: fix IP and port buffer sizes
Use INET6_ADDRSTRLEN (46) instead of 64 for IP address buffers, and 6
instead of 16 for port buffers (the highest possible port number is
65535).

Change-Id: Ia25e2f3277ad2f60df31c08d12f42c1e6d2a14a6
2018-11-06 21:44:28 +00:00
Philipp Maier a75e349b28 gsm48: correct apidoc for gsm48_generate_mid()
The API documentation lacks the the description for the last parameter,
lets add a description for it.

Change-Id: Ibcd25d3a7ddd7075eb15daff6dba42236d14d945
2018-11-02 22:06:34 +00:00
Max 2b4a67a412 Update cipher reject function
* add note about (yet) unsupported standard feature
* use enum constant instead of hex value

Change-Id: I5cc5fc1ae8d5474dbc8d3385a493adf6420a3c98
Related: OS#3187
2018-11-02 16:12:03 +01:00
Philipp Maier 1a146c89e2 gsm0808: cosmetic: rename parameter "reason" to "cause"
The function that generates the clear command takes a parameter
"reason", which is the cause code. Lets give it the name "cause" to have
a coherent naming scheme that matches the other functions and the 3gpp
specs.

Change-Id: I7b6c15e8fa8db13deef5041095944ca1c58fb99f
2018-10-30 09:36:49 +01:00
Philipp Maier b254daf64f gsm0808: fix doxygen apidoc
The api documentation names a parametery by a different name than it is
listed in the parameter list of the function. Lets make the apidoc
coherent.

Change-Id: Id21ed1e920fb64522a734f206efbe2871ec05b06
2018-10-30 09:34:57 +01:00
Stefan Sperling 84eb1ab153 make 'show rate-counters' show group index
Show each rate counter group's index in the output of the
'show rate-counters' command, to provide some way of telling
apart distinct instances of the same rate counter group.

This is not a very user-friendly UI because these indices are
generated internally by libosmocore and/or applications, so
users cannot easily assign meaning to these indices. However,
the current rate counter implementation doesn't allow for more.

Change-Id: Ieb151239407e4b2f8859fefec8d0670f5ddf908a
Related: OS#3674
2018-10-29 17:50:30 +01:00
Stefan Sperling 7c75ffb563 stop printing group description in vty_out_rate_ctr_group_fmt()
When vty_out_rate_ctr_group_fmt() prints the description of a
counter group, it assumes this description should appear at
the beginning of a line. However, the caller might be printing
counters in an indented context. So just let the caller worry
about printing the group title if necessary (there is currently
only one known caller, which is updated in this commit).

Note that printing of the group title was an undocumented feature.

Change-Id: I2c55cb54e8b7a7c8c6cf72f22287083767ed0201
Related: OS#2660
2018-10-29 13:48:47 +00:00
Harald Welte de1da35d51 gsm23003: Add MME domain name related helper functions
osmo_gen_mme_group_domain(), osmo_gen_mme_group_domain() and
osmo_gen_home_network_domain()

Change-Id: Ia882d9db05ec0037e593aeebea21bc31adb680bb
2018-10-28 14:16:18 +01:00
Oliver Smith 7acd5d0394 add osmo_sock_get_{local,remote}_ip{,_port}()
Return only the IP or port of either the local or remote connection,
not the whole set of IP and port of both the local and remote
connection like osmo_sock_get_name() does it. This is needed for
OS#2841, where we only want to print the remote IP.

Related: OS#2841
Change-Id: I6803c204771c59a2002bc6a0e6b79c83c35f87e1
2018-10-26 17:54:16 +00:00
Oliver Smith e74f49d973 cosmetic: fix typo (soocket -> socket)
Change-Id: I2184bf12398902d933f3744bc094418cc6961e86
2018-10-25 11:56:19 +02:00
Daniel Willmann 0c878fd4f5 stats_statsd: Send all stat_items as gauges
When sending a statsd metric we need to specify a type which can be a
"g"auge, "c"ounter, "t"imer, "h"istogram, and "m"eter.

We used to just pass the stat_item unit into this field, but that is the
unit of the metric (Seconds for a timer, % for utilization, ...).

Change the type field so stat_items are sent as "g"auges. Note that
negative values don't seem to be supported by statsd.

Change-Id: Ia16270d36c9a14521594de4b99a48c83e4ac07d4
2018-10-24 16:37:05 +02:00
Max 7a2ec6e118 vty: adjust telnet log
Adjust wording so telnet command can be directly copy-pasted from the log to access
the interface without the need for further editing.

Change-Id: I1876447f9285adcd1b09937a6121afabd0b32e52
2018-10-24 11:29:31 +02:00
Vadim Yanitskiy ee86b04883 libosmogsm/gsup.c: fix error code in osmo_gsup_encode()
Missing (unset) type of to be encoded message is not a memory
allocation failure (-ENOMEM), this is definitely a mistake.

Change-Id: Ibbac18e2b68b765c17c2bc959c4c085037953a7f
2018-10-21 12:56:54 +00:00
Harald Welte 6721144c80 SGsAP protocol definitions (header + C file)
Change-Id: Idddfc9b851eb4c2fa7dd661a9ce1b03a04883109
2018-10-21 12:35:34 +00:00
Harald Welte 2e0a945d3d vty.c: Set vty->fd to -1 after closing the FD
Change-Id: I07d105f4a810dd809fbf6feb5c04e7410020c887
2018-10-21 13:46:07 +02:00
Harald Welte e8e4322bc9 telnet_interface: avoid double-close of fd()
Change-Id: Ibd81f29fa22d53553bd73c055d6a1f5255a69bad
Fixes: Coverity CID#135238
2018-10-21 13:46:07 +02:00
Harald Welte 37608f911d timerfd_create(): Fix error handling of osmo_fd_register()
Change-Id: Ia2528cc3e3155bbc9cb32dee0e3af99cc6e1c654
Closes: Coverity CID#188853
2018-10-21 13:46:07 +02:00
Philipp Maier f6c369fb8c gsm0808: allow decoding of zero length speech codec lists.
3GPP_TS_48.008, 3.2.2.103 Speech Codec List states the following:

"The length indicator (octet 2) is a binary number indicating the
absolute length of the contents after the length indicator.
The length depends on the number and type of Speech Codec Elements
to be included. The minimum length of one Speech Codec Element is 1
octet and the maximum length is 3 octets. The maximum number of
Speech Codec Elements within the Speech Codec List is not defined."

This clearly refers only to the length of a single speech codec
element but not on the overall list. So speech codec lists with
length 0 are indeed permitted by the spec.

- Remove the assertion that checks on zero length speech codec
  lists.

Change-Id: I1eb1f4466b98bdd26d765b0e4cc690b5e89e9dd6
Related: OS#3657
2018-10-16 16:41:45 +02:00
Stefan Sperling e484d42bf2 add support for ipaccess messages on the ctrl interface
In ctrl_handle_msg(), check for IPACCESS protocol messages and respond
to such messages in the same way as ipa_ccm_rcvmsg_base() does. This will
allow the TTCN3 IPA "chopped ping" test to pass on control interfaces.

Change-Id: I9d7137c830981ccad03806b30b776e2b1f1b4699
Related: OS#2010
2018-10-15 11:53:20 +00:00
Stefan Sperling f653821fb3 fix error handling gprs_ns_nsip_listen()
If we cannot bind the listening socket, reset related fields in
the osmo fd structure to NULL again. Otherwise our caller might
eventually try to use an uninitialized osmo fd.

Change-Id: Ia953b2eff54cac0bd980944291f75db14df09a34
Related: OS#3643
2018-10-10 16:09:32 +02:00
Neels Hofmeyr ea6f519ff8 vty logging: fix crash when missing 'logging enable'
We must explicitly check the return value of osmo_log_vty2tgt(), or may run
into a segfault. I wasn't aware of this and introduced numerous such cases in
I36f17c131cc70ce5a1aef62fd9693097de230cd4.

Reproduce: on the VTY, do not issue 'logging enable', invoke 'logging level
force-all LEVEL' first.

Show in logging_vty_test.vty that this situation is now again amended by
telling the user that logging was not enabled.

Related: OS#3611
Change-Id: Id11702d1801d6654ca5e5a51b597a0d802e2e8dd
2018-10-01 15:58:20 +02:00
Stefan Sperling 6afb3f5031 ensure unix socket paths are NUL-terminated for bind/connect
The unix(7) man page recommends that sun_path is NUL-terminated
when struct sockaddr_un is passed to a bind() or connect() call.
Non-NUL-terminated paths only need to be dealt with at the
receiving end of a UNIX domain socket.

Commit 896ff6d erroneously assumed otherwise.
This commit almost reverts 896ff6d: It only leaves the added
osmo_strlcpy() overflow check in place.

Change-Id: I6c4ac6b0a0eef4842beae4107f6f09f6cd29172a
Fixes: 896ff6db16
Related: OS#2673
2018-09-26 07:25:53 +00:00
Harald Welte 0d67f483e2 logging_vty: Ensure writing well-formed config files
We want to have well-formed config files that print exactly one space
per VTY/config node level, and not two.

Change-Id: Ia75c7067284ea225cffe13ca71bad05a7747ae66
2018-09-25 20:25:30 +02:00
Philipp Maier 8515d035ae gsm0808: add function to convert AMR S15-S0 to gsm0408 settings
Add a function to convert S0-S15 bits to struct gsm48_multi_rate_conf,
which hold the codec settings for AMR.

Change-Id: I973736273c236eee84decf15868190e339c3fed4
Related: OS#3548
2018-09-25 15:32:29 +00:00
Neels Hofmeyr 5398911ddb vty: omit HIDDEN from vty reference
During 'show online help', the XML vty node dump, omit all commands marked
HIDDEN.

These commands were already hidden from the VTY reference prior to commit
I1f18e0e41da4772d092d71261b9e489dc1598923, because of broken/confusing bit and
boolean logic mixup. After that commit, HIDDEN commands end up in the doc.  So
practically, this patch here brings back the status quo of before above commit,
even though the previous code clearly "intended" to list HIDDEN commands in the
reference but failed to have that effect.

AFAICT the complete list of commands currently hidden is:

* osmo-bsc: bts/"training_sequence_code <0-7>",
* osmo-bsc: ts/"phys_chan_config PCHAN" for uppercase pchans;
* osmo-bts: bts/"rtp bind-ip A.B.C.D" which actually says
  vty_out(vty, "%% rtp bind-ip is now deprecated%s", VTY_NEWLINE);
* osmo-sgsn: 'reset sgsn state' used for SGSN testing.

Note that the osmo-sgsn build was broken by including hidden commands in the
vty reference, since one of its hidden commands had missing doc strings and
made osmotestconfig.py signal failure. This would fix that from the
hide-hidden-commands angle, and so would osmo-sgsn commit
I8b6e8615e409266910f2f76a10ced9ab33e4de91 from the fix-the-doc-strings angle.

Change-Id: I92c3c66ff69c186234276c64478d6342e061d25e
2018-09-24 19:01:42 +02:00
Neels Hofmeyr a7557fe0f5 vty list: fix deprecation/hidden bit logic
If a command is both hidden and deprecated, still don't show it for the 'list'
command.

We currently have no such nodes, as it seems, though.

Related: OS#3584
Change-Id: I07ec15cab057a3e09064e0420a69121ee8eb4253
2018-09-24 06:40:04 +00:00
Neels Hofmeyr cf8def25d5 vty reference: fix deprecation bit evaluation
In vty_dump_nodes(), make sure the bitwise & is evaluated first.

For the deprecation flag (0x1), the practical effect is most likely identical,
assuming that the boolean ! operator flips the first bit, so I expect no
visible functional difference. It still was confusing and wrong to look at.

Related: OS#3584
Change-Id: I1f18e0e41da4772d092d71261b9e489dc1598923
2018-09-24 06:40:04 +00:00
Philipp Maier 369015c535 gsm0808_utils: constify parameter
parameter cfg in gsm0808_sc_cfg_from_gsm48_mr_cfg() is used read only.
Lets add a const to make this clear to the compiler.

Change-Id: I31e8d273b070b0afc446a298299d4f502d6c396b
2018-09-21 09:07:42 +02:00
Philipp Maier 5f2eb15074 gsm0808: add function to convert amr gsm0408 setings to gsm0808
Add a function to convert struct gsm48_multi_rate_conf, which holds the
codec settings for AMR, to S0-S15 bit representation as defined in
3GPP TS 48.008 3.2.2.49

This resurrects change-id I4e656731b16621736c7a2f4e64d9ce63b1064e98
which was reverted in I9e0d405e303ed86d23703ca6362e958dddb2f861
due to gsm0808_test failing.

The test failure is fixed by properly clearing the struct
gsm48_multirate_cfg prior to running tests (add memset(0)).

Change-Id: Ia782e21c206c15e840226d79b4209d13658ee916
Related: OS#3548
2018-09-19 14:01:10 +00:00
Neels Hofmeyr 28fc078f9c logging vty: add 'logging level set-all <level>'
Add new command to once-off set each and every category to the given log level,
as discussed at length on the openbsc@ mailing list.

Show that it works in logging_vty_test.vty.

Change-Id: I4c3e4f786476cb813fdc0a7c64f30ee04758309d
2018-09-16 23:09:56 +02:00
Neels Hofmeyr dd8c73cc6d Revert "gsm0808: add function to convert amr gsm0408 setings to gsm0808"
This reverts commit 2fd4fe6aa1.

As shown in https://jenkins.osmocom.org/jenkins/view/master/job/master-libosmocore/475/a2=default,a3=default,arch=amd64,label=osmocom-master-debian9/console

This commit breaks gsm0808_test with:

stderr:
--- expout	2018-09-16 22:37:31.382280438 +0200
+++ /n/s/dev/make/libosmocore/tests/testsuite.dir/at-groups/21/stdout	2018-09-16 22:37:31.426281372 +0200
@@ -78,9 +78,9 @@
 Input:
  m4_75= 0   smod=  0
  m5_15= 0   spare= 0
- m5_90= 0   icmi=  0
+ m5_90= 0   icmi=  1
  m6_70= 0   nscb=  0
- m7_40= 0   ver=   0
+ m7_40= 0   ver=   6
  m7_95= 0
  m10_2= 0
  m12_2= 0
@@ -92,9 +92,9 @@
 Input:
  m4_75= 1   smod=  0
  m5_15= 0   spare= 0
- m5_90= 0   icmi=  0
+ m5_90= 0   icmi=  1
  m6_70= 0   nscb=  0
- m7_40= 0   ver=   0
+ m7_40= 0   ver=   6
  m7_95= 0
  m10_2= 0
  m12_2= 0
@@ -106,9 +106,9 @@
 Input:
  m4_75= 0   smod=  0
  m5_15= 1   spare= 0
- m5_90= 0   icmi=  0
+ m5_90= 0   icmi=  1
[...]

Change-Id: I9e0d405e303ed86d23703ca6362e958dddb2f861
2018-09-16 21:02:25 +00:00
Philipp Maier 2fd4fe6aa1 gsm0808: add function to convert amr gsm0408 setings to gsm0808
Add a function to convert struct gsm48_multi_rate_conf, which holds the
codec settings for AMR, to S0-S15 bit representation as defined in
3GPP TS 48.008 3.2.2.49

Change-Id: I4e656731b16621736c7a2f4e64d9ce63b1064e98
Related: OS#3548
2018-09-14 16:24:10 +02:00
Neels Hofmeyr 9540c24058 logging vty: deprecate 'all', introduce 'force-all'
Add 'logging level force-all <level>' and 'no logging level force-all' as new
names for 'logging level all <level>' and 'logging level all everything'.

Resurrect the functionality of 'logging level all everything' -- even if it is
still deprecated because the name is confusing, it is now just an alias for
'no logging level force-all'.

Show in logging_vty_test.vty that we can now again lift the global logging
clamp, both with the new commands as well as with the deprecated ones.
Also show that 'force-all' is written back properly, if set.

Change-Id: I36f17c131cc70ce5a1aef62fd9693097de230cd4
2018-09-13 15:46:55 +00:00
Neels Hofmeyr 098038ab18 logging vty: write: check logging levels validity
Change-Id: If683b1272ad2d5b402b91c52c496aa7975bc6315
2018-09-13 15:46:55 +00:00
Neels Hofmeyr 7e0686c6b4 logging vty: deprecate the 'everything' keyword
The 'logging level all everything' has not had an effect for some time now. The
plan is to bring back its old functionality, but to keep it deprecated and
rather define a less confusing name.

* Deprecate 'everything'.
* Do not write 'everything' during 'write file' or 'show running-config', which
  we curiously still do until now.

BTW, the reason why we need to compose a complete list of categories for the
deprecated 'everything' command is explained in detail in the commit log for
I3b083f27e3d751ccec258880ae7676e9af959a63

Change-Id: Ib75fedb0572570a61bb34ee729a2af86cf5f16da
2018-09-13 15:46:55 +00:00
Neels Hofmeyr ba0762d6cb logging vty: rewrite 'logging level' vty cmd generation
Completely drop the implementations of log_vty_command_{str,description}().
These functions have been public API once, marked as deprecated since
c65c5b4ea0 (March 2017). I considered to keep
them, or reduce them to useless stubs, but it is quite silly, really. These
functions are completely and utterly useless outside of libosmocore. Any
program linking these deserves to fail.

Re-implement vty logging level command gen, in logging_vty.c. logging.c is
simply the wrong place for that.

Introduce logging_internal.h to share logging definitions to logging_vty.c
without publishing as API.

Introduce static gen_logging_level_cmd_strs() to compose a list of category
arguments with their descriptions for VTY commands. Use osmo_talloc_asprintf()
instead of the previous error prone and chaotic strlen() counting method.

Do not dynamically generate log level arguments, just keep static strings. We
are super unlikely to ever change the log levels we have.

No changes in logging_vty_test.vty: proves that there is no functional change.

All of this, besides introducing basic sanity, is cosmetic preparation to be
able to re-use the generic command generation code for arbitrary commands with
category or level args (for deprecated and new keywords).

Rationale: I want to hide 'all' and 'everything' from the VTY command
documentation, by means of deprecating. I first tried to simply define a
deprecated 'logging level CAT everything' command:

  logging level (all|rsl|rr|...) (debug|info|notice|error|fatal)
  logging level CAT everything                   # <- deprecated and hidden

But unfortunately, command matching doesn't work as intended when the CAT
argument reflects a valid category; I want it to invoke the deprecated function
as soon as the 'everything' keyword follows, but it stays stuck to the "valid"
command when the category argument matches an explicit keyword in that list,
and will throw an error on the following 'everything' keyword. I.e.:

  logging level rsl everything
  % Unknown command  # <-- leads to config file parse error

  logging level unknown_string everything
  % Ignoring deprecated 'everything'  # <-- works only for invalid categories

So I need to define 'everything' separately, again with a list of each valid
category instead of a generic CAT arg.

Change-Id: I3b083f27e3d751ccec258880ae7676e9af959a63
2018-09-13 15:46:55 +00:00
Neels Hofmeyr 2c79d55934 gsm0808: implement BSSMAP Classmark Request
Related: OS#3043
Change-Id: I4a2e1d3923e33912579c4180aa1ff8e8f5abb7e7
2018-09-13 14:27:26 +00:00
Neels Hofmeyr 7c749893bf add osmo_str_tolower() and _toupper() with test
We already have osmo_str2lower() and osmo_str2upper(), but these lack:
* proper destination buffer bounds checking,
* ability to call directly as printf() argument.

Deprecate osmo_str2upper() and osmo_str2lower() because of missing bounds
checking.

Introduce osmo_str_tolower_buf(), osmo_str_toupper_buf() to provide
bounds-safe conversion, also able to safely convert a buffer in-place.

Introduce osmo_str_tolower(), osmo_str_toupper() that call the above _buf()
equivalents using a static buffer[128] and returning the resulting string
directly, convenient for direct printing. Possibly truncated but always safe.

Add unit tests to utils_test.c.

Replace all libosmocore uses of now deprecated osmo_str2lower().

Naming: the ctype.h API is called tolower() and toupper(), so just prepend
'osmo_str_' and don't separate 'to_lower'.

Change-Id: Ib0ee1206b9f31d7ba25c31f8008119ac55440797
2018-09-07 04:28:39 +02:00
Neels Hofmeyr 03e7553cba api doc: fix osmo_quote_str_*
Change-Id: Ibfd8ff213630e34009936b0fcb3ee50dda65fb70
2018-09-07 03:51:54 +02:00
Alexander Chemeris 50f7d74fca coding: Always initialize bit counters in gsm0503_pdtch_egprs_decode().
Previsouly there were a lot of valid code paths which returned from the function
before setting bit counters which led to bogus BER output in osmo-bts-trx logs
when those code paths were hit.

Change-Id: I4722cae3794ccbb12001113c991d9cf345a52a96
2018-09-05 16:08:34 +03:00
Alexander Chemeris 9444326158 coding: Correctly count bits when decoding EDGE bursts with MCS >= 7.
They consist of two blocks, so we should count both blocks.

Change-Id: I560de192212dae4705054a1665726369b83d213a
2018-09-05 16:08:16 +03:00
Keith Whyte 3cdaa8d525 Add CC_CAUSE value_string array
Adds a value_string array for GSM 04.08 Call Control
cause values

Change-Id: I296f208581ce2550805f9d96e20f7319e1199023
2018-09-02 12:33:54 +02:00
Stefan Sperling 896ff6db16 Properly deal with sockaddr_un socket path length limitations.
In osmo_sock_unix_init(), add support for non-NUL-terminated unix
socket paths and return an error if the supplied socket path exceeds
the maximum socket path length supported by the operating system.

Change-Id: I19d935e5e3dd7928e6e153c6f5ad7044de726016
Related: OS#2673
2018-08-29 07:39:55 +00:00
Stefan Sperling 3953f41bbd properly handle mandatory cli param of gsm0808_create_paging2
The cell identifier list parameter is mandatory. Document it as
such, and tweak code which treated it like an optional parameter.

No functional change. The existing code already asserts that
a non-NULL value is passed for this parameter.

Change-Id: I3716f9d5b210e0a7e6f45c9fe3fc34024e5234ad
Related: OS#3021
2018-08-29 07:38:11 +00:00
Neels Hofmeyr 43c266f6c6 gsm0808: inter-bsc HO messages: add missing BSSMAP header, x4
Change-Id: I9e128ba775227de5e4010f024338a78584f777ea
2018-08-28 19:41:06 +00:00
Neels Hofmeyr 77ae45d22f log: add 'last' option to 'logging print file'
Allow printing the source file information *after* the log information.

Add target->print_filename_pos, log_set_print_filename_pos() and enum
log_filename_pos, and the optional 'last' keyword to the 'logging print file'
vty command. (An enum in case we want to add other positions later.)

Rationale: on log lines, the logging context is usually printed first in the
logging text. Without the source file information, this logging context pretty
much aligns in an easily readable way. When adding the source file information,
each line's logging context info is shifted right by a pretty much random
amount and it is hard to spot recurring logging contexts.

One solution is to switch off source file info, of course, but that's not an
option when actively hacking on bugs and new features.

For example, it is unnecessarily hard to spot lchan FSM related log lines in
this osmo-bsc log snippet:

DRSL NOTICE mgw_endpoint_fsm.c:603 mgw-endpoint(conn0){WAIT_MGW_RESPONSE}: Freeing instance
DRSL NOTICE fsm.c:381 mgw-endpoint(conn0){WAIT_MGW_RESPONSE}: Deallocated
DMSC NOTICE mgw_endpoint_fsm.c:603 SUBSCR_CONN(conn0){CLEARING}: Received Event FORGET_MGW_ENDPOINT
DCHAN DEBUG lchan_rtp_fsm.c:741 lchan(0-0-1-TCH_F-0){WAIT_RLL_RTP_ESTABLISH}: Received Event LCHAN_EV_RTP_RELEASED
DCHAN DEBUG lchan_rtp_fsm.c:520 lchan_rtp(0-0-1-TCH_F-0){ROLLBACK}: Freeing instance
DCHAN DEBUG fsm.c:381 lchan_rtp(0-0-1-TCH_F-0){ROLLBACK}: Deallocated
DCHAN DEBUG lchan_rtp_fsm.c:520 lchan(0-0-1-TCH_F-0){WAIT_RLL_RTP_ESTABLISH}: Received Event LCHAN_EV_RTP_RELEASED
DCHAN DEBUG lchan_fsm.c:1232 lchan(0-0-1-TCH_F-0){WAIT_RLL_RTP_ESTABLISH}: state_chg to WAIT_RF_RELEASE_ACK
DRSL NOTICE handover_fsm.c:762 handover(interBSCin_conn0){WAIT_RR_HO_DETECT}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DRSL NOTICE handover_fsm.c:762 handover(interBSCin_conn0){WAIT_RR_HO_DETECT}: Freeing instance
DRSL NOTICE fsm.c:381 handover(interBSCin_conn0){WAIT_RR_HO_DETECT}: Deallocated
DCHAN DEBUG lchan_fsm.c:1196 lchan(0-0-1-TCH_F-0){WAIT_RF_RELEASE_ACK}: state_chg to BORKEN
DCHAN DEBUG lchan_fsm.c:354 lchan(0-0-1-TCH_F-0){BORKEN}: (type=TCH_F) Clearing lchan state
DLMGCP DEBUG mgcp_client.c:741 Tx MGCP msg to MGCP GW: 'DLCX 3 2@mgw MGCP 1.0'
DLMGCP DEBUG mgcp_client.c:743 Sending msg to MGCP GW size: 66
DRLL NOTICE mgcp_client_fsm.c:422 MGCP_CONN(to-BTS){ST_DLCX_RESP}: Received Event EV_DLCX_RESP

Placing the source file info behind the log text makes it much easier to
follow, while the source file info is still available:

DRSL NOTICE mgw-endpoint(conn0){WAIT_MGW_RESPONSE}: Freeing instance (mgw_endpoint_fsm.c:603)
DRSL NOTICE mgw-endpoint(conn0){WAIT_MGW_RESPONSE}: Deallocated (fsm.c:381)
DMSC NOTICE SUBSCR_CONN(conn0){CLEARING}: Received Event FORGET_MGW_ENDPOINT (mgw_endpoint_fsm.c:603)
DCHAN DEBUG lchan(0-0-1-TCH_F-0){WAIT_RLL_RTP_ESTABLISH}: Received Event LCHAN_EV_RTP_RELEASED (lchan_rtp_fsm.c:741)
DCHAN DEBUG lchan_rtp(0-0-1-TCH_F-0){ROLLBACK}: Freeing instance (lchan_rtp_fsm.c:520)
DCHAN DEBUG lchan_rtp(0-0-1-TCH_F-0){ROLLBACK}: Deallocated (fsm.c:381)
DCHAN DEBUG lchan(0-0-1-TCH_F-0){WAIT_RLL_RTP_ESTABLISH}: Received Event LCHAN_EV_RTP_RELEASED (lchan_rtp_fsm.c:520)
DCHAN DEBUG lchan(0-0-1-TCH_F-0){WAIT_RLL_RTP_ESTABLISH}: state_chg to WAIT_RF_RELEASE_ACK (lchan_fsm.c:1232)
DRSL NOTICE handover(interBSCin_conn0){WAIT_RR_HO_DETECT}: Terminating (cause = OSMO_FSM_TERM_REGULAR) (handover_fsm.c:745)
DRSL NOTICE handover(interBSCin_conn0){WAIT_RR_HO_DETECT}: Freeing instance (handover_fsm.c:745)
DRSL NOTICE handover(interBSCin_conn0){WAIT_RR_HO_DETECT}: Deallocated (fsm.c:381)
DCHAN DEBUG lchan(0-0-1-TCH_F-0){WAIT_RF_RELEASE_ACK}: state_chg to BORKEN (lchan_fsm.c:1196)
DCHAN DEBUG lchan(0-0-1-TCH_F-0){BORKEN}: (type=TCH_F) Clearing lchan state (lchan_fsm.c:354)
DLMGCP DEBUG Tx MGCP msg to MGCP GW: 'DLCX 3 12@mgw MGCP 1.0' (mgcp_client.c:741)
DLMGCP DEBUG Sending msg to MGCP GW size: 67 (mgcp_client.c:743)
DRLL NOTICE MGCP_CONN(to-BTS){ST_DLCX_RESP}: Received Event EV_DLCX_RESP (mgcp_client_fsm.c:422)

Implementation: for 'last', insert source file info only when an '\n' is found
at the end of the log line composition buffer, so that LOGP()...LOGPC()
constructs also print source file info only when a log line actually ends.

Change-Id: I393907b3c9e0cc1145e102328adad0a83ee13a9f
2018-08-27 20:52:04 +02:00
Philipp Maier b8a91625dd gsmtap_util: make sure SO_REUSEADDR is applied for GSMTAP
When gsmtap adding a new sink it does not supply OSMO_SOCK_F_UDP_REUSEADDR
in order to have SO_REUSEADDR applied. In most cases, the gsmtap sink is
just receiving packets to toss them immediately, so having one of them
is sufficient.  However, in other use cases - particularly virt_phy -
we actually want to receve and process GSMTAP messages via multicast
Applying SO_REUSEADDR (like we did before disabling it globally for UDP
in I4a8ffb8d598aca88801a4a0322944d7cdd8d4047 on August 1st) resolves
the issue.

Change-Id: I1399a428467ca12f1564a14eb8ffb294d4f59874
Related: OS#3497
2018-08-24 10:31:18 +00:00
Philipp Maier 73196e77fb socket: add flag to enforce SO_REUSEADDR on UDP sockets
When IPPROTO_UDP is used then SO_REUSEADDR omitted since UDP is
connection less we do not have to wait until lingering connections time
out. There were also negative effects such as that two applicatications
could use the same UDP port, normally one of the two applications would
get an error, but with SO_REUSEADDR this is supressed. However, there
are applications (UDP MULTICAST) where two applications must be able to
use the same port. In the osmocom project those are osmo-bts-virtual,
virtphy and gsmtap in general.

Lets introduce a flag that the API user can supply in order to have
SO_REUSEADDR applied.

- Add new flag OSMO_SOCK_F_UDP_REUSEADDR

Change-Id: I94aaf6d5224ab23bde5ea5c4a83569b6145ab32b
Related: OS#3497
2018-08-23 20:17:45 +02:00
Pau Espin 8a757d20f7 ipa: Document ipa_msg_recv* functions
Change-Id: Ie81e9dd9f9936a414e7cebb2bccffa6f42a302a7
2018-08-22 14:17:58 +02:00
Neels Hofmeyr 983dcb9af3 use __FILE__, not __BASE_FILE__
The intention was to use the file's basename, but __BASE_FILE__ means "the root
file that is being parsed and contains #include statements".

If we had a function using __BASE_FILE__ and that was defined in an #included
file, __BASE_FILE__ would indicate the first file where the #include is, and
not the file where the function is defined. __BASE_FILE__ works for us because
we don't ever include function definitions that log something, so __BASE_FILE__
always coincides with __FILE__ for our logging; but still __BASE_FILE__ is
semantically the wrong constant.

Related: OS#2740
Change-Id: Ibc1d3746f1876ac42d6b1faf0e5f83bd2283cdcc
2018-08-20 20:23:18 +00:00
Pau Espin b3a9820bfc vty: Makefile: Fix LIBVERSION typo introduced in 0.12.0 release
Setting age to 5 is cleary an error, it should be increment by one
instead as APIs were added 0.11->0.12 and none modified or removed.

Change-Id: I3b3bc808349bc2f949ef9eef64f39e7202ddf946
2018-08-20 15:51:29 +02:00
Pau Espin 0b6fcb0349 signal: Introduce API osmo_signal_talloc_ctx_init
Otherwise applications need to use "extern void* tall_sigh_ctx" and set
it manually (that symbol is not exported in any header file) or end up
allocating struct signal_handler into the NULL talloc ctx.

API created in a similar way as already existing msgb_talloc_ctx_init(),
but without the pool_size because it's not considered necessary in this
case.

Change-Id: Id58ca18eb826b8f4183a7cf0dbb2b38cba702a09
2018-08-16 21:03:32 +02:00
Alexander Couzens acc0a070c7 bssgp: introduce flush queue functions
To reset the state of BSSGP allow to flush the BSSGP queues.
When testing (with TTCN3) the test object should be resetted between
each test.

Introduce the functions:
bssgp_fc_flush_queue() - flushs a single flow control object
bssgp_flush_all_queues() - flushs queues of all BSSGP connections

Change-Id: I29b6ad6742ddf9b0b58b4af37d9a1cf18e019325
2018-08-10 06:55:43 +00:00
Vadim Yanitskiy 30cfeeb4a0 libosmogsm: (re)introduce gsm48_push_l3hdr()
There was gsm0480_l3hdr_push() declared in a header file, but
not exposed in 'libosmogsm.map'. Furthermore, for some reason
it was a part of GSM 04.80 API, what is not actually correct.

Let's rename this symbol, and properly expose it as a part of
the GSM 04.08 API. Also, let's introduce an auxiliary wrapper
for messages, where the transaction identifier is required
(see GSM 04.07, section 11.2.3.1.2).

Change-Id: I8a045efe8335d83fcbe8d43eb180972e3b1d9dda
2018-08-05 23:21:43 +07:00
Vadim Yanitskiy 39a36d0193 gsm/gsm0480.c: use the local msgb allocator
Change-Id: I23b4b0e1c237b9b27c1db1c9a824b5329d41a38b
2018-08-05 14:48:27 +07:00
Vadim Yanitskiy 3fc4616224 gsm/gsm0480.c: prevent NULL-pointer dereference
Change-Id: I444d95941837458b46e581298f76f3a9926c8552
2018-08-05 07:14:19 +00:00
Mykola Shchetinin 893e49e993 vty/vty.c: fix bug in vty_config_write
the vty_config_write function should write:
line vty
 login
to the configuration file when the login is enabled. Otherwise after
saving the configuration the next login will be performed without
password checking (password_check variable will be 0 though it must be 1)

Change-Id: I39050b6bf617dac10d3fccc3106f67bdcca1d05a
2018-08-05 07:01:53 +00:00
Kevin Redon 7ecb034f87 comp128v23 (minor): update original code site and author
I was contacted by the (previously unknown) author who provided
the new location of the original code.

Change-Id: I2dabab20ad018ce473817986bdb250131c010bf1
2018-08-04 17:23:23 +02:00
Philipp Maier 99f706d336 socket: do not set SO_REUSEADDR for IPPROTO_UDP
When UDP is used as protocol (proto=IPPROTO_DUP), then we should not set
SO_REUSEADDR in the socket option. Because if we do, we allow two
processes to bind on the same UDP port. The errornous situation will be
undetectable to both applications. So lets only set SO_REUSEADDR when we
do not use UDP.

- Add check if we use UDP, if yes do not set SO_REUSEADDR

Change-Id: I4a8ffb8d598aca88801a4a0322944d7cdd8d4047
Related: OS#3441
2018-08-02 11:19:38 +02:00
Philipp Maier 0659c5d2f3 socket: check return code of setsockopt
the return code of the last setsockopt() call in osmo_sock_init() is not
checked. Since all other calls to setsockopt are checked, lets check
this one as well.

- check return code of setsockopt() and close the socket on failure

Change-Id: I96dbccc3bcff35bf39979dbe0c44aadc8ce20c83
2018-08-02 11:19:38 +02:00
Harald Welte 5a7740d1db re-introduce ipa_ccm_idtag_parse_off()
In the previous commit we deprecated ipa_ccm_idtag_parse() but
also removed ipa_ccm_idtag_parse_off(), for which I couldn't find
any users.  However, legacy openbsc.git still uses this function,
so let's re-introiduce it in its original form.

Change-Id: Ibfe53b04340eb355c8bfb8453a2af1522a4b6baf
2018-08-01 17:42:06 +02:00
Harald Welte 7869baf843 Deprecate ipa_ccm_idtag_parse() with ipa_ccm_id_{get,resp}_parse()
In the past, the function ipa_ccm_idtag_parse() was used to parse
the payload of IPA CCM ID RESP packets.  However, the function was
based on a possible misunderstanding of the message encoding, and
callers actually counted the first (upper) length nibble as part
of the header and passed a pointer to the second
(lower) length nibble of the first TLV into this function.  As such,
it was unfixable, and had to be replaced with a new function called
ipa_ccm_id_resp_parse().  At the same time, we also add
ipa_ccm_id_get_parse() to parse the slightly different format of
the IPA CCM ID GET payload.

We can never be 100% sure what is "correct", as our understanding
of the protocol is entirely based on protocol analysis, without any
official documentation available.

This patch also introduces unit test coverage for both of the new
functions.

Revert "ipa: Add libosmogsm.map entry for ipa_ccm_idtag_parse_off"
This reverts commit 7f31c90b80.

Revert "ipa: Properly parse LV stream of a ID_GET request"
This reverts commit f558ed4bb9.

It introduced a function/behavior that was not originally intended:
The parse of IPA CCM ID GET (8bit length followed by 1 byte tag
and variable-length payload) instead of the IPA CCM ID RESP (16bit
length followed by 1 byte tag and variable-length payload).

Change-Id: I1834d90fbcdbfcb05f5b8cfe39bfe9543737ef8f
2018-08-01 13:38:17 +02:00
Harald Welte 9b04c17c7a oap_client: Rename symbols with osmo_ prefix
As we're moving this to a common/shared library now, we need to use
the osmo_ namespace prefix for symbol names, struct/type names and
constants.

Change-Id: Ie36729996abd30b84d1c30a09f62ebc6a9794950
2018-07-30 12:50:51 +02:00
Harald Welte fdd366ed1b import oap_client into libosmogsm
This imports the code from osmo-msc 6afef893e17bce67e4d4119acd34d480ed03ba77
with minimal changes to make it compile.  Symbol renaming to osmo_
prefix is done separately in a follow-up patch to have a as-clean-as-possible
import first.

Change-Id: I9bc38102318da02d1fe46ef516df3cfd6bf8e3da
2018-07-30 12:16:11 +02:00
Vadim Yanitskiy baed91709c vty/vty.c: remove dead unused tall_bsc_ctx
Change-Id: I160728544c0effe45757df22f1ff2314fcb13dd1
2018-07-30 03:43:00 +07:00
Harald Welte 7ecc4a3171 04.80: New gsm0480_gen_{reject,return_error}() functions
Add functions to generate TS 04.80 (supplementary services)
Reject and ReturnError components.

Change-Id: I6e5ee39c3d03364f7833ec717593d5ddb0a4c5f9
2018-07-29 14:39:36 +00:00
Harald Welte b0d9594081 USSD: Introduce gsm0480_gen_ussd_resp_7bit()
Contrary to the existing gsm0480_create_ussd_resp(), the new function
only generates the value part of the FACILITY IE, and not the IE
Tag/Length or the 04.08 L3 header.  This is needed in the context of
GSUP-encapsulated USSD, as here we don't work with L3 messages, but
only pass on the FACILITY IE value.

Change-Id: Ide240279240322f643e142229eb7829f538c6314
2018-07-29 14:39:36 +00:00
Harald Welte 88fa5a3e1e gsm0480: Factor out msgb allocation helper function
Change-Id: If25b467481023eadaaf3f78157eceff4b81d24d2
2018-07-29 14:39:36 +00:00
Alexander Couzens 49865053bc ctrl/vty: fsm: use correct element when iterating over fsm->proc.children
Fixes crashes when using vty `show fsm-instances all`
when fsm children are present.

Change-Id: I4ae0bee7f7f57ec6675cfb52ca6cf0d523d15362
2018-07-29 14:35:00 +00:00
Neels Hofmeyr 1cea7b5a97 fix strncpy bugs in socket.c
Change-Id: Iddf36d26b23dcef4f9b291fd7ead1907e38c3486
2018-07-27 18:15:44 +00:00
Neels Hofmeyr ebe4ef7383 fix strncpy bugs in gsm/ipa.c
Change-Id: I423a24c55c9b9aa6fc8f501df94fe54c71ee2b2b
2018-07-27 18:15:44 +00:00
Pau Espin 924ef0bc72 Bump version: 0.11.0.91-9d4a3-dirty → 0.12.0
Change-Id: I7e66432f37e13fd4c31389e3d89593fa0981e58f
2018-07-27 17:31:47 +02:00
Pau Espin 9d4a36e060 logging.c: Fix whitespace typo
Change-Id: I943763e175dca6f3078923a494b052319b78574d
2018-07-26 11:55:51 +02:00
Pau Espin d51c98e7bf logging_vty: Simplify code in config_write_log_single
Since we ignore "logging level CAT everything" in logging_level_cmd, we
can never run into the case in which we have loglevel==EVERYTHING, so we
can simplify this code and make it esier for later removal of everything
keyword.

Change-Id: I4e76c65a11cc22616c6dfc632435617ebb861c03
2018-07-25 18:51:32 +00:00
Pau Espin 53a1e49354 logging: log_vty_command_string: Fix undercount of buf alloc size
Change-Id: I7aca0ce3d2981001e8081f7cee0dea3e2aaf8f7c
2018-07-25 18:51:20 +00:00
Alexander Couzens 9af7076b01 stats_statsd: sanitize statsd name
The statsd protocol use ':' as seperator between name and value.
It's not allowed to use the seperator in a name. Replace ':' with '.'
before sending the packet to the statsd server.

Change-Id: Ib46d08481e8ca04afd97cb9ae241e4e39c91ad66
2018-07-25 18:45:48 +00:00
Daniel Willmann d910a35227 stats_vty: Add asciidoc sections between the different counters
Change-Id: Ie37be744abd8c47211d64877bcd17f94465bd423
2018-07-24 20:01:26 +02:00
Pau Espin dfc52a1d5e rate_ctr: Improve logging
Previous logic regarding logging of verification and mangling of
rate_ctr groups made it difficult to debug when an issue occurrs.

Change-Id: I992d165cab5ee6ca9b5b7e4a2210a0951954bd34
2018-07-21 08:22:57 +00:00
Pau Espin 9bb966afb0 libosmocodec: FR err concealment: Fix too many silent frames generated
As stated in its own documentation, reduce_xmaxcr_all() should only
return true when ALL XMAXC fields return true. However, previous
implementation returned true when at least one of them returned true.

As a result, if any of the sections is silent (for instance because one
of the bursts was lost), the whole frame is silenced, returning a zeroed buffer.

Related: OS#2700
Fixes: 40def49ac4 ("libosmocodec: implement ECU (Error Concealment Unit) for FR")
Change-Id: I1624b7c6574f53d0593a61645d4fdc5d56cabe96
2018-07-21 07:40:20 +00:00
Alexander Couzens ab383e6d27 vty: initialize termios before using it
valgrind complains about using unitialised bytes in syscalls.
I could imagine this happens when tcgetattr fails to set termios.

Change-Id: I9d165911fa3127afa8f836fa5c5c2e14a949474a
2018-07-20 20:40:48 +00:00
Neels Hofmeyr 59f4caf4ef add osmo_sockaddr_to_str_and_uint()
This came from osmo-bsc refactoring patch I82e3f918295daa83274a4cf803f046979f284366
https://gerrit.osmocom.org/#/c/osmo-bsc/+/9671/6/src/osmo-bsc/gsm_data.c@1708

Add regression test in utils_test.c.

Change-Id: I1f2918418c38918c5ac70acaa51a47adfca12b5e
2018-07-20 14:02:21 +00:00
Pau Espin f81d03f7dd libosmocoding: clarify return values for TCH decoding functions
Change-Id: I7d6c61e6a1b5d1fae26f385b420ff55246c4b62f
2018-07-19 18:30:07 +02:00
Pau Espin 59e6059447 ctrl: ctrl_handle_msg: Avoid sending back received ERROR msgs
Change-Id: I396fd1e7548beea31b2b7aa9f764edb765b02941
2018-07-16 17:56:25 +00:00
Pau Espin 239ed3b3ee ctrl: Introduce ctrl_cmd_parse3 API
Callers require to know whether the returned ERROR cmd was received or
generated locally, in order to send it or do something with it locally.

Related: OS#3394

Change-Id: Ide9170e5c31967c353f8fe4e8227e64130b91eae
2018-07-16 17:56:25 +00:00
Alexander Chemeris ed7d2ddb15 coding: Documentation typo fix.
Change-Id: I6ca873b3decaf50e7b79b5ab2269919c862a4fe0
2018-07-14 21:12:47 +02:00