Commit Graph

2905 Commits

Author SHA1 Message Date
Vadim Yanitskiy bc29b2660f Doxygen: fix documentation of osmo_timer_setup()
This change fixes the following Doxygen warnings:

  timer.c:69: warning: argument 'callback' of command @param is not
              found in the argument list of
              osmo_timer_setup(struct osmo_timer_list *timer,
                               void(*cb)(void *data), void *data)
  timer.c:69: warning: argument 'pointer' of command @param is not
              found in the argument list of
              osmo_timer_setup(struct osmo_timer_list *timer,
                               void(*cb)(void *data), void *data)
  core/timer.h:70: warning: The following parameters of
                   osmo_timer_setup(struct osmo_timer_list *timer,
                   void(*cb)(void *data), void *data)
                   are not documented:
                     parameter 'cb'
                     parameter 'data'

Change-Id: If5668f40a7bfde2f4f22329a071c8c6eff23b99e
2019-03-27 08:56:21 +01:00
Vadim Yanitskiy ed3a3c6f1d src/rate_ctr.c: drop some incorrect \ref references
rate_ctr.c:411: warning: unable to resolve reference
                  to `handle_group' for \ref command
  rate_ctr.c:208: warning: unable to resolve reference
                  to `talloc' for \ref command

Change-Id: I24a80ff6cf11ce0455529515d1ecb9900f0271a8
2019-03-27 08:56:21 +01:00
Vadim Yanitskiy c761044ecb Doxygen: fix documentation of rate_ctr_for_each_counter()
Doxygen was confused by duplicated documentation for both
definition and declaration of rate_ctr_for_each_counter().
Moreover, both variants contained some mistakes.

Let's avoid this duplication and keep the only (corrected) one.

Change-Id: Icca2d4a95bd5f96ae85a86909ec90fb8677cacf3
2019-03-27 08:56:21 +01:00
Vadim Yanitskiy 914a8ec5b3 core/msgb.h: fix incorrect Doxygen parameter description
core/msgb.h:414: warning: argument 'msgb' of command @param is not
                   found in the argument list of
                   msgb_pull_to_l2(struct msgb *msg)
  core/msgb.h:399: warning: argument 'msgb' of command @param is not
                   found in the argument list of
                   msgb_pull_to_l3(struct msgb *msg)

  core/msgb.h:351: warning: argument 'msgb' of command @param is not
                   found in the argument list of
                   msgb_push_u16(struct msgb *msg, uint16_t word)
  core/msgb.h:361: warning: argument 'msgb' of command @param is not
                   found in the argument list of
                   msgb_push_u32(struct msgb *msg, uint32_t word)
  core/msgb.h:341: warning: argument 'msgb' of command @param is not
                   found in the argument list of
                   msgb_push_u8(struct msgb *msg, uint8_t word)

Change-Id: I5d660933ecfa89c631319eccf9e3d5c1986ec8ff
2019-03-27 08:56:21 +01:00
Vadim Yanitskiy b8d06fb6b3 src/msgb.c: fix Doxygen documentation for msgb_printf()
This change fixes the following Doxygen warnings:

  src/msgb.c:479: warning: argument 'msg' of command @param is not
                  found in the argument list of
                  msgb_printf(struct msgb *msgb, const char *format,...)
  core/msgb.h:708: warning: The following parameters of
                   msgb_printf(struct msgb *msgb, const char *format,...)
                   are not documented:
                     parameter 'msgb'
                     parameter 'format'

As a bonus, it dot-terminates all sentences.

Change-Id: Ib708664336eef06f748d408ae02a13c754b6647a
2019-03-27 08:56:21 +01:00
Vadim Yanitskiy ba426e3b0c core/msgb.h: drop meaningless parameter of msgb_eq_* helpers
Thanks to the following Doxygen warning:

  msgb.h:XXX: warning: The following parameters of
              msgb_eq_l2(msg1, msgb2, len) are not documented:
                parameter 'msgb2'
                parameter 'len'

it was discovered that parameter 'len' is not required at all.
It basically doesn't make any sense to pass any length value,
because it can be calculated using msgb_length().

Let's drop this parameter. Given that this part of the API was
broken so far (see I1079d629abdb8770eef6be7341e586a933cd9cca),
it should be more or less safe to do this.

Change-Id: Icd9b72eb6bfa9628ff1ed2f948b57058551a4328
2019-03-27 08:56:21 +01:00
Vadim Yanitskiy 115a2ccae5 core/msgb.h: fix dead msgb2 reference in msgb_eq_* helpers
Neither Doxygen documentation of the msgb data comparison helpers,
nor their actual definitions does refer msgb2. Instead, 'msg2' is
referenced in both cases. This was discovered while investigating
the following Doxygen warnings:

  msgb.h:XXX: warning: argument 'msg2' of command @param is not
              found in the argument list of
              msgb_eq(msg1, msgb2, len)

  msgb.h:XXX: warning: The following parameters of
              msgb_eq_l2(msg1, msgb2, len) are not documented:
                parameter 'msgb2'
                parameter 'len'

Due to this bug it was impossible to use the affected macros,
because 'msg2' was not listed in their parameters. Having the
unit test coverage would spot this bug at the beginning!

Change-Id: I1079d629abdb8770eef6be7341e586a933cd9cca
2019-03-27 08:56:21 +01:00
Vadim Yanitskiy 73e66b3eef src/logging.c: fix syntax errors in Doxygen documentation
This change should fix the following warnings:

  logging.c:956: warning: unable to resolve reference to `talloc'
                 for \ref command
  logging.c:203: warning: argument 'in' of command @param is not
                 found in the argument list of
                 log_level_str(unsigned int lvl)
  logging.c:194: warning: argument 'in' of command @param is not
                 found in the argument list of
                 log_parse_level(const char *lvl)
  logging.c:708: warning: argument 'print_catname' of command
                 @param is not found in the argument list of
                 log_set_print_category(struct log_target *target,
                                        int print_category)
  logging.c:687: warning: argument 'print_filename' of command
                 @param is not found in the argument list of
                 log_set_print_filename2(struct log_target *target,
                                         enum log_filename_type lft)
  logging.c:729: warning: argument 'print_catname' of command
                 @param is not found in the argument list of
                 log_set_print_level(struct log_target *target,
                                     int print_level)
  logging.c:893: warning: argument 'in' of command @param is not
                 found in the argument list of
                 log_target_destroy(struct log_target *target)

Change-Id: I85f6c70216b7574b49b90bb1469869a47f721713
2019-03-27 08:56:21 +01:00
Vadim Yanitskiy 095a39616c core/linuxlist.h: fix white-space and inconsistent alignment
- fix trailing white-space;
  - properly align parameters of functions;
  - use tabs instead of 8 spaces where possible.

Change-Id: Iaf616592a6bd72a1e7e94d8c55475710868beef0
2019-03-27 08:56:21 +01:00
Vadim Yanitskiy 72ea919a48 core/linuxlist.h: fix and unify Doxygen documentation
- drop incorrect \ref and \a references;
  - add missing documentation to LLIST_HEAD_INIT;
  - document parameter 'member' of llist_entry();
  - turn @argument naming into a valid \param format;
  - fix 'type *' vs llist_head loop counter confusion;
  - capitalize and dot-terminate all sentences.

Change-Id: Iac67bdb9d5fbf7c222d04858967337f2428d6a94
2019-03-27 08:56:21 +01:00
Neels Hofmeyr c0fcedc968 gsm_utils.h: remove unused include of gsm_08_08.h
Change-Id: Ied4cb2bd06147785540a53ef118e9268406da702
2019-03-27 07:42:24 +00:00
Oliver Smith 27f7b0da6f Revert "ipa_ccm_idtag_parse*: Fix reported length value"
This reverts commit 1261db1505.

The patch broke openbsc's external tests, and currently it is unclear
whether it is just an error in the test or if openbsc makes wrong
assumptions about the length value. Let's revert the patch to unblock
the master-openbsc jenkins job.

Related: OS#3851
Change-Id: I9adea35ff6de36c1611c7f85dde1b15bc1c0e786
2019-03-25 14:43:52 +00:00
Vadim Yanitskiy 2f65bb1b01 Doxygen: fix incorrect / missing parameter description
Change-Id: Ibc63a5d4442a192efab8b5b30e0beb3545642ecc
2019-03-25 15:57:09 +07:00
Oliver Smith 9f2814283e Revert "signal.c: Make non-exported tall_sigh_ctx static"
This reverts commit cff2242e68.

The patch broke openbsc:
../../src/libcommon/libcommon.a(talloc_ctx.o): In function `talloc_ctx_init':
/build/openbsc/src/libcommon/talloc_ctx.c:50: undefined reference to `tall_sigh_ctx'

See also:
https://lists.osmocom.org/pipermail/openbsc/2019-March/012843.html

Change-Id: Ib4cb31427a1cad063bc9f1a10b9c3182b314a9f2
2019-03-22 13:25:01 +01:00
Harald Welte cff2242e68 signal.c: Make non-exported tall_sigh_ctx static
As indicated in the commitlog of
Id58ca18eb826b8f4183a7cf0dbb2b38cba702a09,
the symbol was never exported in a header file, so it should be safe
to mark it as static.

Change-Id: I7132ffe9a7efcab226cc639d1b2357f7115bcadf
2019-03-21 16:02:39 +00:00
Harald Welte 8c58af139d signal.c: Fix osmo_signal_talloc_ctx_init()
This function is broken ever since it was added back in 2018 in commit
Id58ca18eb826b8f4183a7cf0dbb2b38cba702a09

Rather than allocating from the user-supplied 'root_ctx', it is
allocating from the context that it's trying to create (which is
NULL at that time, rendering the entire operation more or less
a no-op.  For sure you will not see osmo_signal structures never in
any talloc report.

Change-Id: I922d26815a3baa5be74bd3ee89d498555882d62f
2019-03-21 16:02:31 +00:00
Harald Welte 1688699c3f select: Rename BSC_FD_* constants to OSMO_FD_*
The naming of these constants dates back to when the code was private
within OpenBSC.  Everything else was renamed (bsc_fd -> osmo_fd) at
the time, but somehow the BSC_FD_* defines have been missed at the
time.

Keep compatibility #defines around, but allow us to migrate the
applications to a less confusing naming meanwhile.

Change-Id: Ifae33ed61a7cf0ae54ad487399e7dd2489986436
2019-03-21 16:02:01 +00:00
Vadim Yanitskiy a3226f7b9d src/signal.c: cosmetic: use talloc_zero()
Change-Id: I55c6249b0c4c82d5a181001e945ff2eca6e9ca36
2019-03-20 20:42:06 +07:00
Harald Welte fa90cfd8d2 gprs_ns_sns: Properly initialize sockaddr_in in gprs_nsvc_create_ip4()
When putting together a sockaddr_in, we must not only set the IP
address and port, but also set the address family to AF_INET.  And
while at it, let's zero-initialize the entire 'struct sockdadr_in'.

Change-Id: I1c8d8fe7f79a2ec737baa7800247269c3271983e
2019-03-20 08:32:30 +01:00
Harald Welte c0dfc9d885 socket: osmo_sock_get_name() Use "const void *" as talloc context
Change-Id: Ie6877277cddb0a9e049449c260afe3314ba65050
2019-03-19 14:04:00 +00:00
Vadim Yanitskiy 54f5f4da59 vty/tdef_vty.c: drop redundant comparison
The amount of arguments is already being checked a few lines before:

  /* If any arguments are missing, redirect to 'show' */
  if (argc < 3)
    return show_timer(self, vty, argc, argv);

so we cannot reach the expression NULL inside this statement:

  group_arg = argc > 0 ? argv[0] : NULL;

Change-Id: Ice59d1a46c2080cd02060e3410706c502db4ce0b
Fixes: CID#190873 Logically dead code (DEADCODE)
2019-03-19 13:44:58 +00:00
Harald Welte 1261db1505 ipa_ccm_idtag_parse*: Fix reported length value
IPA CCM is using a somewhat weird TLV encoding scheme:
* 16bit length (of tag and value)
* 8bit tag
* value

Our existing code mapping the CCM to 'struct tlv_parse' used the plain
length value without accounting for the one-byte tag.

This patch ensures we only report the length of the "value" part,
excluding the tag.

Change-Id: I435aaa33605bd48635715a2c81aa2d231c1abf51
2019-03-19 13:41:49 +00:00
Max fb6f43ee0c rate_ctr_group_free(): guard against empty or NULL input
Change-Id: I859a91ee4400b3685c05971f8c66bceca6758724
2019-03-19 12:57:10 +00:00
Harald Welte d488c7256f tests: use -no-install libtool flag to avoid ./lt-* scripts
This ensures that the rpath of the generated binaries is set to
use only the just-compiled libosmo{core,gsm,vty}.so and not any
system-wide installed libraries while avoiding the ugly shell script
wrapper.

Change-Id: I9b9ae0ed277ba71519661a66a70b7f86971e4511
2019-03-19 00:06:35 +01:00
Harald Welte 24e67f86dd gprs_ns_sns: Use "correct" remote IP address for local IP endpoint
we cannot use "nsi->nsip.remote_ip", as this address is not set
when SNS is in use.  We can only have a valid nsi->nsip.remote_ip
if there's only a single NS-VC inside the NS Instance, as this would
connect() the UDP socket to the remote IP/port, breaking any possibility
to have multiple NS-VCs to different SGNS-side IP addresses.

Closes: OS#3845
Change-Id: Ic094621eb01d7458063f531289d5eeadf52bf330
2019-03-16 18:34:58 +01:00
Harald Welte 94c9b449cf gprs_ns: Don't use initial IP/port for anything but SNS
Section 6.2.1 of 3GPP TS 48.016 states:
> A pre-configured endpoint shall not be used for NSE data or signalling
> traffic (with the exception of Size and Configuration procedures) unless
> it is configured by the SGSN using the auto-configuration procedures.

However, in the current SNS implementation, the initial IP/Port over
which we perform the SNS-SIZE + SNS-CONFIG are treated as one of the
normal NS-VCs. Specifically, we also perform the NS-ALIVE procedure on
it, which is clearly wrong.

Let's explicitly create the "initial" NS-VC with data and signalling
weight of 0, and ensure we never start the alive timer or send any
non-SNS PDUs on this connection as long as SNS was not used to change
either of the two weights to non-zero.

While at it, also safeguard against processing any incoming non-SNS
messages on such a all-zero-weight connection.

Change-Id: I16a91a07e5914d123b2ea2f8413b94e7cd518628
Closes: OS#3844
2019-03-16 18:34:52 +01:00
Harald Welte 1e072cca4e gprs_ns.c: Update comment: IP SNS has recently been implemented
Change-Id: I8b98621a582a23d0483a5340b4aca7e0bc096e6d
2019-03-16 13:00:44 +01:00
Neels Hofmeyr 9e6f5f10bd osmo_gsm48_classmark_a5_name(): fix 'no-cm3' label
Change-Id: Id84021858dfb2f7d6a7cf81ae73bd94cd47f6776
2019-03-14 03:43:10 +00:00
Karl Koscher 76f025eae8 Fix build on non-glibc systems
Change-Id: Id5d577522a4889e152158f7e93ee1c99d3a21003
2019-03-11 13:19:46 -07:00
Philipp Maier 94d79fdeef gsm0808_utils: fix gsm48 multirate to S-bit converter
The function gsm0808_sc_cfg_from_gsm48_mr_cfg() is used to convert a
gsm48 multirate struct into a set of S-bits (S0 to S15). However, the
conversion function currently does not take into account that bit S1
actually stands for four rates at once (Config-NB-Code = 1). Lets make
sure that S1 is only set when the multirate configuration permits all
four required rates.

Change-Id: I6ad531d4e70c2252e32e2bbaca8e14a7ec6d9840
Related: SYS#4470
2019-03-11 09:08:31 +01:00
Philipp Maier 3713af8655 gsm0808_utils: fix gsm48 multirate configuration generator
The function gsm0808_sc_cfg_from_gsm48_mr_cfg() takes an S15 to S0
bitmask and converts that bitmask into an AMR multirate configuration
struct.

Unfortunately the current implementation implements 3GPP TS 28.062,
Table 7.11.3.1.3-2 wrongly in some aspects. Lets fix this.

- Fix wrong interpretation of the bitpatterns
- 5,15K is invalid and must never be selected
- Make sure that no more than 4 rates are selected in the active set
- Extend unit-test

Change-Id: I6fd7f4073b84093742c322752f2fd878d1071e15
Related: SYS#4470
2019-03-11 09:08:31 +01:00
Neels Hofmeyr 3a5045302f add gsm0808_cell_id_from_cgi(), gsm0808_cell_id_to_cgi()
CGI to Cell ID: for example, for Paging, osmo-msc has a CGI for a subscriber
and needs to send out a Cell Identifier IE. Makes sense to add this conversion
here.

Cell ID to CGI: for a Layer 3 Complete, a subscriber sends the current cell in
the form of a Cell Identifier, which we store as a CGI, if necessary enriched
with the local PLMN.

Add enum with bitmask values to identify parts of a CGI, for the return value
of gsm0808_cell_id_to_cgi(). Can't use enum CELL_IDENT for that, because it
doesn't have a value for just a PLMN (and is not a bitmask).

Change-Id: Ib9af67b100c4583342a2103669732dab2e577b04
2019-03-08 05:25:07 +01:00
Neels Hofmeyr d4b79c8772 fsm: add osmo_fsm_inst_state_chg_keep_or_start_timer()
During FSM design for osmo-msc, I noticed that the current behavior that
keep_timer=true doesn't guarantee a running timer can make FSM design a bit
complex, especially when using osmo_tdef for timeout definitions.

A desirable keep_timer=true behavior is one that keeps the previous timer
running, but starts a timer if no timer is running yet.

The simplest example is: a given state repeatedly transitions back to itself,
but wants to set a timeout only on first entering, avoiding to restart the
timeout on re-entering.

Another example is a repeated transition between two or more states, where the
first time we enter this group a timeout should start, but it should not
restart from scratch on every transition.

When using osmo_tdef timeout definitions for this, so far separate meaningless
states have to be introduced that merely set a fixed timeout.

To simplify, add osmo_fsm_inst_state_chg_keep_or_start_timer(), and use this in
osmo_tdef_fsm_inst_state_chg() when both keep_timer == true *and* T != 0.

In tdef_test.ok, the changes show that on first entering state L, the previous
T=1 is now kept with a large remaining timeout. When entering state L from O,
where no timer was running, this time L's T123 is started.

Change-Id: Id647511a4b18e0c4de0e66fb1f35dc9adb9177db
2019-03-07 23:10:21 +01:00
Neels Hofmeyr 4ea698233a fix tdef_test.c: do call the function-to-test in all cases
Always call osmo_tdef_fsm_inst_state_chg(), also when no timeout is defined.

When there is no timeout defined for a state, tdef_test.c tries to be smart and
print different output. In that mess, I missed the fact that
osmo_tdef_fsm_inst_state_chg() isn't always called as it should. In the same
mess, the resulting state was never printed until the preceding patch, which
helped to hide this bug.

Change-Id: I1d953d99854422bff8eb32f051e9c6147bc836b6
2019-03-06 07:00:30 +01:00
Neels Hofmeyr 4f54c6c48d tdef_test: tweak output to prepare for a fix
- Always print the state after a state transition.
  This shows that actually state transitions are missing for states that have
  no timer defined. This is a bug in tdef_test.c, to be fixed subsequently.

- Instead of total time passed since start, print the individual fake time
  intervals. Omit initial useless zero fake time advance.

- Add two more state transitions, back out from and into a state that has no
  timeout set.

Change-Id: Icb31af96d37741e256ff07868f3d4f5c48cdda74
2019-03-06 06:59:47 +01:00
Neels Hofmeyr 5734bff3b0 represent negative T-timers as Osmocom-specific X-timers
fi->T values are int, i.e. can be negative. Do not log them as unsigned, but
define a distinct timer class "Xnnnn" for negative T values: i.e. for T == -1,
print "Timeout of X1" instead of "Timeout of T4294967295".

The negative T timer number space is useful to distinguish freely invented
timers from proper 3GPP defined T numbers. So far I was using numbers like
T993210 or T9999 for invented T, but X1, X2 etc. is a better solution. This way
we can make sure to not accidentally define an invented timer number that
actually collides with a proper 3GPP specified timer number that the author was
not aware of at the time of writing.

Add OSMO_T_FMT and OSMO_T_FMT_ARGS() macros as standardized timer number print
format. Use that in fsm.c, tdef_vty.c, and adjust vty tests accordingly.

Mention the two timer classes in various API docs and VTY online-docs.

Change-Id: I3a59457623da9309fbbda235fe18fadd1636bff6
2019-03-06 00:51:15 +01:00
Neels Hofmeyr 8aa691f30b api doc: tweak gsm0808_cell_id_matches_list() doc
Change-Id: Ide94558d1c31356483252b83e04b061b4ee4d3bf
2019-03-05 23:49:02 +00:00
Max a478590250 coding: check gsm0503_rach_*() results
Check return value of RACH encode/decode functions and fail test on
unexpected results.

Change-Id: I41bfa808e3c064a11152e7ce8ee77a01d38a0744
Related: OS#1854
2019-03-05 11:30:39 +01:00
Neels Hofmeyr 6d57c57276 fix api doc typo for osmo_plmn_name2()
Change-Id: Ic2652c7e4ffe1e707022168ac6c0da7c88ae7f45
2019-02-26 22:43:19 +00:00
Neels Hofmeyr 050f2d3259 log: fsm: allow logging the timeout on state change
Add a flag that adds timeout info to osmo_fsm_inst state change logging.

To not affect unit testing, make this an opt-in feature that is disabled by
default -- mostly because osmo_fsm_inst_state_chg_keep_timer() will produce
non-deterministic logging depending on timing (logs remaining time).

Unit tests that don't verify log output and those that use fake time may also
enable this feature. Do so in fsm_test.c.

The idea is that in due course we will add osmo_fsm_log_timeouts(true) calls to
all of our production applications' main() initialization.

Change-Id: I089b81021a1a4ada1205261470da032b82d57872
2019-02-26 20:57:58 +00:00
Harald Welte 047f3872f5 NS: Add support for GPRS NS IP Sub-Network-Service (SNS)
The NS implementation part of the Gb implementation libosmogb
so far implemented a rather classic dialect of Gb, with lots of
heritage to FR (Frame Relay) transports.  At least since Release 6
of the NS specification, there's an IP Sub-Network Service (SNS),
which
* permits for dynamic configuration of IP endpoints and their NS-VCs
* abandons the concept of a NSVCI on IP transport
* forbids the use of RESET/BLOCK/UNBLOCK procedures on IP transport

This commit introduces BSS-side IP-SNS support to libosmogb in a
minimally invasive way.  It adds a corresponding SNS FSM to each NS
instance, and implements the new SIZE/CONFIG/ADD/DELETE/CHANGE_WEIGHT
procedures very closely aligned with the spec.

In order to use the SNS flavor (rather than the classic one),
a BSS implementation should use gprs_ns_nsip_connect_sns() instead
of the existing gprs_ns_nsip_connect().

This implementation comes with a set of TTCN-3 tests in
PCU_Tests_RAW_SNS.ttcn, see Change-ID
I0fe3d4579960bab0494c294ec7ab8032feed4fb2 of osmo-ttcn3-hacks.git

Closes: OS#3372
Closes: OS#3617
Change-Id: I84786c3b43a8ae34ef3b3ba84b33c90042d234ea
2019-02-26 12:18:30 +01:00
Harald Welte 35042a2919 NS: Factor out gprs_nsvc_start_test() and use it
This function performs  sending a NS-ALIVE PDU and starting Tns-Test,
let's use it in all places where we used to do that.

As part of this, also fix a bug where the sendto() return value (number
of bytes sent) would actually propagate up all the way to
gprs_ns_rx_reset() return value, which in turn affects the test results
on stdout.

Change-Id: I4d303117f77fabb74bbb91887b9914a81c2a084a
2019-02-26 12:18:30 +01:00
Harald Welte 17a642d8ff gprs_ns: Add code for SNS-SIZE and SNS-CONFIG encoding
Modern NS specifications contain a SNS (Sub Network Service) for
negotiating IP/port/weight parameters of NS-over-IP links dynamically.

This patch adds message encoding routines for SNS-CONFIG, SNS-SIZE
and their respective acknowledgements.

Related: OS#3372
Change-Id: I5c47e1c3c10deb89a7470ee2c03adfc174accc93
2019-02-26 11:17:44 +00:00
Neels Hofmeyr 99273c7662 enlarge gsm0808 msgb headroom
It should be large enough to prepend a struct osmo_scu_prim to pass down an
SCCP stack (see libosmo-sccp). 264 should suffice, but pick the next larger
power-of-two instead.

In osmo-msc, I would like to prepend an osmo_prim to the msgb created by
gsm0808 API, but turns out the headroom is too small:

    msgb(0x61700001b660): Not enough headroom msgb_push (126 < 264)

Instead of always copying a msgb that has just that instant been created, it
makes more sense to allocate sufficient headroom in the first place.

Change-Id: I95729991eb49555f8bba60c5dc916131b03b6cf2
2019-02-26 10:34:33 +00:00
Max 5ec0cf5475 LCLS: add string dump helpers
Add functions to dump LCLS (without GCR) and GCR. Dumping entire struct
results in inconveniently long string hence the separate functions. Both
use talloc functions so they expect caller to take care of providing
proper allocation context and freeing memory.

Change-Id: Ic3609224c8f3282d667e75f68bc20327e36eb9e6
2019-02-26 09:16:38 +00:00
Harald Welte 79f9270939 GPRS: Doxygen documentation for 'struct libgb_msgb_cb'
Change-Id: I4144506feee74a8219bd3736087c30cc6323ec1d
2019-02-23 14:38:23 +01:00
Harald Welte 47cf21f74f NS: Add missing NS Cause strings
When I added the definitions for the IP-SNS in commit
f030b210e8 back in 2010, I forgot to update
the string definitions in ns_cause_str[].  Let's fix that

Change-Id: I419ccc482d99b01263a60aede83dacd2d9de56ab
2019-02-23 14:12:34 +01:00
Harald Welte dc802810df NS: Don't print information about FR/GRE if not enabled!
Change-Id: I9209ee4ba5ebfc4f96b4c1d42840e1906455bae7
2019-02-23 11:34:31 +01:00
Max 2e717c968d Add multipatch capability to osmo-config-merge
That's pretty straightforward and convenient extention: handle all
extra positional arguments as patch file names. This makes it similar to
'cp' and other coreutils basic tools. For example:
osmo-config-merge base.cfg patch1.cfg patch2.cfg patch3.cfg
will apply 3 patches to the base config file.

Change-Id: I212cbdc3bf6f251c1a3175737ac74242fb004c6d
2019-02-22 21:28:45 +00:00
Harald Welte 52a8375025 select: Call log_reset_context() before calling file descriptor callbacks
Make sure to clear any log context before processing the next incoming message
as part of some file descriptor callback.  This effectively prevents "context
leaking" from processing of one message into processing of the next message as part
of one iteration through the list of file descriptors here.

Change-Id: I3644c7bc1a9cec5858eb0faf94efc8c3ba7f5d8d
Closes: OS#3813
2019-02-21 16:38:49 +01:00