aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2021-02-10WIP: Tracingdaniel/tracingDaniel Willmann7-52/+160
Change-Id: I78945ab2bde7c93e9461dc446809f7cbd6493100
2021-02-09gprs_ns2_vty: fix memory leak of vty_bindsAlexander Couzens1-0/+1
They never got freed, only removed from the vty_bind queue. Change-Id: I100897c32dc152f9acbb322782fae49b1f0bc030
2021-02-09gprs_ns2: rename vty-command ip-sns -> ip-sns-remoteAlexander Couzens2-7/+7
In prepration to introduce more commands e.g. ip-sns-bind rename the ip-sns-remote Related: SYS#5354 Change-Id: Ida979f3b9daa5f7280a629441e4006a7635653b0
2021-02-09gprs_ns2_sns: reset the N of timeout when entering a new stateAlexander Couzens1-0/+17
Otherwise retries are splitted between the states. Related: OS#5355 Change-Id: Iefde0c89965f0be899d6d1f096480f6fc79a92be
2021-02-09gprs_ns2_sns: add timeout to ST_CONFIG_SGSNAlexander Couzens1-3/+13
The state CONFIG_SGSN must be also protected by the timeout Tsns-prov. Related: OS#5355 Change-Id: I2700c1ad40ebe30658e9937d86a4861b0b59d6b6
2021-02-09gprs_ns2_sns: rework tracking of NS-VC unblocked/alive stateAlexander Couzens3-14/+90
The SNS must know when all NS-VC have failed. Further more there might be a corner case when the SNS configuration succeeds but no NS-VC comes up afterwards. Related: OS#5355 Change-Id: Ie72da9adeefe0c2850d49a9208b2d0a4556f9101
2021-02-08ns2: Don't try to add packets to the backlog on real errorsHarald Welte1-1/+5
When writing to the AF_PACKET socket, we have to distinguish the pseudo-errors like -ENOBUFS (where we do want to add to the backlog) from real errors like -ENETDOWN, -EMSGSIZE, ... where we don't want to add the failed packet to the backlog. Change-Id: Ibbb6805da0f118466c4c91e458e62b63b84cb794
2021-02-08ns2: improve backlog handling on interface up/downHarald Welte1-9/+35
This patch improves the behavior of the newly-added backlog in situations where the interface goes up/down. * don't add new packets to the backlog while if_running == false * flush the backlog on both ifup and ifdown events Change-Id: Ib35d099526544fe2cff64566fd56147a906adab9
2021-02-08ns2: Don't queue Q.933 LMI messages; only store most recent onesHarald Welte1-3/+18
There's not really any point in storing multiple LMI messages, and then transmitting them in inverse order, as the existing code does. Instead, we shall store only the last (failed) LMI message and try to transmit that at highest priority, before any NS messages in the actual queue. Change-Id: I5407a76a34d7e687966fe1a915febf3a87256593
2021-02-08ns2: Name NSVC FSM events consistentlyHarald Welte1-12/+12
Reading a log line like this: <0026> gprs_ns2_vc_fsm.c:808 GPRS-NS2-VC(FR-hdlcnet1-DLCI16-NSE02001-NSVC00001)[0x6120000024a0]{UNBLOCKED}: Received Event RESET is very ambiguous. Does it mean we received a NS-RESET message? Does it mean the FSM was instructed to send a NS-RESET? ... Let's make sure the human-readable names give a very clear indication of what exactly is happening. Change-Id: I8b7615b3eca04212831163ff0ea4aea35069cd0e
2021-02-08Fix struct bitfields on big endian systemsPau Espin Pedrol3-0/+88
Changes done by contrib/struct_endianess.py. Change-Id: Ia9cb1ef2ba2bfff9ef713c7d1cf388931dae1c46
2021-02-06tlv: clarify documentation for msgb_tv{16,32}_put()Vadim Yanitskiy1-2/+2
Change-Id: Ie439822e0587012e108f67ba4e73771dc684b95b
2021-02-06tlv: add msgb_tv32_put(), similar to msgb_tv16_put()Vadim Yanitskiy1-0/+10
Change-Id: I11301b20038aa5d90d46d968f7eda3d53b560022
2021-02-05bssgp_bvc_fsm: check return value of osmo_fsm_register()Vadim Yanitskiy1-1/+1
Change-Id: I0ade2e476a035bb44b2f135ece4552d015852274 Fixes: CID#215717
2021-02-05gsm0808: use msgb_tv16_put() and osmo_store32be()Vadim Yanitskiy1-18/+5
This API makes the code simpler and easier to read. Change-Id: Ibe9eaaa2a9344ba798631b8f115ad248f0a2f76b
2021-02-05frame_relay; Fix Q.933 async STATUS at DLC creationHarald Welte1-1/+1
Fix the encoding of the asynchronous Q.933 STATUS message we send at DLC creation time. Change-Id: Id1460ffa6266be85f44579c447421eed12481b02 Closes: OS#5010
2021-02-04gb: frame_relay: Detect link outage on "last receive seq nr == 0"Harald Welte1-1/+11
this is a bit of a hack. Q.933 explicitly forbids either side from ever sending a sequence number of '0'. Values start from '1' and are modulo 256, but '0' is always skipped. So if the peer is sending us a "last received sequence number of '0' it means it has not yet received any packets from us, which in turn can only mean that it has just been restarted. Let's treat this as "service affecting condition" and notify upper layers. This helps particularly in recovering from rapidly re-starting peers, where the Q.933 nor NS have time to actually detect the connection was lost. Change-Id: I960a7b17f2550cb49a7b9d72ed87cd271bb64122 Related: OS#4974
2021-02-04gb: frame_relay: Factor-out function to set link as deadHarald Welte1-8/+15
Change-Id: I624b6a1175cf7d59173dfff02d6197bb644b9072
2021-02-04gsm48: add compare function for struct gprs_ra_idPhilipp Maier3-0/+21
Comparing struct gprs_ra_id using memcmp can be error prone, so lets add a compare function to compare two struct gprs_ra_id values reliably. Change-Id: I4d7558c04d9d01761516526086be5104bb2eeada Related: SYS#5103
2021-02-03Enable systemd-journald log target in debian + rpm packagingHarald Welte3-2/+4
Given that all the distributions we support are shipping systemd anyway, this will not really introduce any additional runtime package dependencies. Change-Id: Ib3af918cd4cc8d0ca6d228a0f2c8338534374d46
2021-02-03initial support for static userspace probes via systemtapHarald Welte7-1/+103
This adds a --enable-systemtap configure option, which will then add static tracepoints to the generated libosmocore binary. At this point, only two tracepoints are supported: log_start and log_done. They can be used to trace the amount of time a libosmocore-using application spends in potentiall blocking calls to log to stderr or to files. Related: OS#4311 Change-Id: I7e1ab664241deb524c9582cbd1bec31af46c747e
2021-02-03gprs_ns2_frgre: check iph/ip6h before passing them to rx functionsAlexander Couzens1-2/+8
With IPv4 and IPv6 support it's not guaranteed that iph/ip6h is valid. Related CID#214288 Change-Id: If9015906917e3ad11d14b84c29d64f28a3158144
2021-02-03gprs_ns2_frgre: set a correct gre pointer for ipv6Alexander Couzens1-1/+5
Also fixes a nullpointer deref because iph is NULL on IPv6 Related: CID#216555 Change-Id: I2ff868a7bba6151a2202df774ff022c02b8c34cb
2021-02-03frame_relay: fix NULL pointer derefAlexander Couzens1-0/+1
Related: CID#215530 Change-Id: Ic58394ab44ee555a0c5dee2b07fa1054093fbcf0
2021-02-03gprs_ns2_fr: free_bind(): first do the NULL check before using membersAlexander Couzens1-1/+1
Change-Id: I80f72ada15b477d735bf5aee36a5d67e80eb0136
2021-02-03gprs_ns2: unify the handling of **result when bind already present.Alexander Couzens3-9/+15
All bind function should work in the same way. Also fixing a null pointer assignment if no **result is giving. Change-Id: Idd0c2190d2af39804c18c4786a997079db9a4330
2021-02-03gprs_ns2_vc_fsm: rename ST_ALIVE -> ST_RECOVERINGAlexander Couzens1-17/+17
ST_ALIVE isn't quite clear. This state means this NS-VC is still dead. ST_ALIVE is used for NS-VC with vc_mode ALIVE (e.g. UDP NS-VC). It's the first state when the remote hasn't yet answered or when the NS-VC lost ALIVEs. Related: OS#4958 Change-Id: I0b29e8ce6444546d90bde68b1f957f1013238784
2021-02-03gprs_ns2_vc_fsm: reset ALIVE N counter when restarting the test procedure.Alexander Couzens1-0/+1
Otherwise a NS-VC would flap between ALIVE and UNBLOCKED state. Related: OS#4959 Change-Id: Id98629bd65f92103e0e571ec388c58b02cb2ccb5
2021-02-02gprs_ns2: prevent division by zero in load_sharingAlexander Couzens1-1/+8
Check if the NSE is alive before passing UNITDATA to the load sharing. Change-Id: I0e2a59bec9b72f74eb64510a2e1ad60486694a55 Fixes: OS#4996
2021-02-02osmo-ns-dummy: Add "mirror-mode" to mirror back any received packetsHarald Welte2-10/+44
Change-Id: If57bfdeb390d88d1ea058f7a9ce0403e64a5beda
2021-02-02ns2: Don't start sending NS-RESET until FR DLC is availableHarald Welte1-2/+12
There's no point in sending NS-RESET (or any other) messages to the underlying FR layer if the FR DLC has not been marked as available/active yet. Change-Id: Id4e7565ba166ca1d12f8800c643d9f2bc4d66873 Closes: OS#4999
2021-02-02ns2: Stop test procedure when going into unconfigured stateHarald Welte1-0/+7
When we're unconfigured and not yet started, we should not transmit NS-ALIVE. Change-Id: Ida3685e42a753899f1bf177eefcc23352ec7440d Related: OS#4999
2021-02-02ns2: Don't automatically re-start FSM at FORCE_UNCONFIGUREDHarald Welte2-1/+1
There are use cases in which the NS-VC FSM should go back to unconfigured _without_ being re-started immediately. Let's permit the caller to do that. Change-Id: I31fe695a83d38ea1f10f5444e840633d7fa68442
2021-02-02frame_relay: cosmetic: Unify log syntax when discarding Rx packetsHarald Welte1-2/+2
Change-Id: I09d035e38b41be9d6ac5e16da7fb113286c77d29
2021-02-02frame_relay: Discard received messages for DLC not yet activeHarald Welte1-7/+10
If we receive messages for a DLC which has not yet reported as being available by Q.933 LMI, drop the incoming message. Otherwise we would dispatch it to the user, and the user wants to respond - but then we reject the transmission due to the inactive DLC. Change-Id: Ia4a045fdf165b526f429f4617e0fdc76036480bd Related: OS#4999
2021-02-02frame_relay: Add status call-backs for link + DLC status changesHarald Welte3-16/+40
Change-Id: Iec19db4e48642c3fcb0aa11fa7787b8323fd0e5a Related: Os#4999
2021-02-01gsm_7bit_encode_n(): fix integer overflow in gsm_septets2octets()Vadim Yanitskiy5-15/+20
Using 'uint8_t' for the length argument is definitely a bad idea. Because of this, packing more than 255 septets would not work as expected. Deprecate the old function and use 'size_t' instead. Change-Id: Ib1aac538afeb0a5c76a1df472d555139a496e12e
2021-02-01gsm_7bit_encode_n(): test encoding of more than 250 septetsVadim Yanitskiy2-0/+70
As can be seen, this unit test reveals problems with encoding of more than 250 septets using gsm_7bit_encode_n(). The problem is that some API functions use type 'uint8_t' for the length, so we basically suffer from integer overflows. Change-Id: I723300578d5ab0c7b94cf49c14d962b2dbf47740
2021-02-01frame_relay: Send "Fuil Status" ENQUIRY after link recoversHarald Welte1-1/+5
If we are the 'user' side of FR and a link has just recovered, we should ensure the next STATUS is for "full status". This way we learn about the present DLCs as quickly as possible, saving up to 10 seconds of further delay in link recovery. Related: OS#4999 Change-Id: I6f905a18a7d130a3c02b4a3e7a2a2dc24afc0ea1
2021-02-01sim: fix gcc 4.9.2 + -std=gnu11 errorOliver Smith1-1/+1
Remove "(const struct osim_card_sw)" infront of OSIM_CARD_SW_LAST, so debian 8's gcc 4.9.2 doesn't fail anymore with the following error each time the macro is used: card_fs_sim.c:105:1: error: initializer element is not constant I verified with docker that there aren't any other build errors with gcc 4.9.2. Fixes: OS#4991 Change-Id: I9d3abbf9812dc09201eff0e9f7542cddedb6848b
2021-02-01ns2: cosmetic: fix indent levelsHarald Welte1-4/+4
Change-Id: Ifcb0d5ddf824cd876de91afca1021aeb4f6c3e8b
2021-02-01ns2: Print NS-STATUS.ind primitives to the logHarald Welte1-3/+10
Log the NS-STATUS primitives from within the library, so we don't have to keep related code in each and every application. Change-Id: I368883acfc8ea76529befcd429bf8f2445a60a94
2021-02-01ns2: Fix typos in commentsHarald Welte1-5/+5
Change-Id: I155fd697e229621561f7d00204421ac941101d77
2021-02-01ns2: Introduce a per-bind stat_item group with backlog lengthHarald Welte4-1/+37
The backlog length indicates the instantaneous length of the backlog. Change-Id: I1c55b4619b1221d7e607ace58649323407faf86b
2021-02-01ns2: Rename nsi->rate_ctr_idx to nsi->nsvc_rate_ctr_idxHarald Welte2-4/+4
We will soon get another of those indexes. Change-Id: I68a2ef3b48097f524831dd04821824b21d6d1e18
2021-02-01ns2: Memory allocation failures are ENOMEM, not ENOSPCHarald Welte4-5/+5
ENOSPC is used with non-volatile (disk) storage, while ENOMEM is customarily used for RAM allocation failures. Change-Id: Ia4c16d8278dc30c7cc69169b18428cda5272738d
2021-02-01ns2: Move to one common/shared ns2_bind_alloc()Harald Welte6-83/+66
Avoid code duplication between three different drivers by sharing the "core" of the bind initialization in a new, shared ns2_bind_alloc(). Change-Id: I535fc68e94fcd695de827dd922706adc1c5a2cb7
2021-01-31ns2: Add a rate_ctr for each NS-UNBLOCKHarald Welte3-0/+5
We have one for BLOCK, so let's also add one for UNBLOCK. Change-Id: I693109b7bc4d72b6803b40aae15327389aa37c69
2021-01-31ns2: Implement more rate countersHarald Welte1-1/+5
The counters had all been lost in the ns -> ns2 configuration, let's try to implement some more of them: LOST_ALIVE, BLOCKED, LOST_RESET. Change-Id: I75d8637bd142722fdf9a162a2369aa9cdc980a57
2021-01-31ns2: count number of dropped packets / bytes on transmitHarald Welte3-3/+17
Differentiate between successfully transmitted packets/bytes, and pacets/bytes that were dropped (i.e. overflow of net-device) OsmoNSdummy# show ns nsvc 1001 stats NSVCI 01001: UNBLOCKED PERSIST data_weight=1 sig_weight=1 fr)netif: hdlc1 dlci: 1001 NSVC Peer Statistics: Packets at NS Level ( In): 36 (0/s 8/m 32/h 0/d) Packets at NS Level (Out): 23344 (170/s 20556/m 13119/h 0/d) Dropped Packets (Out): 30692 (230/s 27056/m 17221/h 0/d) Bytes at NS Level ( In): 262 (0/s 24/m 250/h 0/d) Bytes at NS Level (Out): 32741312 (238680/s 28849400/m 18391024/h 0/d) Dropped Bytes (Out): 43014628 (322920/s 37986624/m 24101344/h 0/d) Change-Id: If21906ff5379038f7be10cf48c68d1f756dd7c1e