Age | Commit message (Collapse) | Author | Files | Lines |
|
It was recently discovered that PID field in gsmtap log messages was
always set to 0. Before this patch, the field was never being set.
The approach of this patch is to record the PID of process one, in
order to avoid calling getpid() syscall on each
log line to be sent. The counterpart of this optimization is that
eventual fork() calls would still keep the old incorrect value, but I
think nobody can safely assume that fork() is possible once all this
kind of infrastructure has already been configured (fork() should only
be done really at the start of the program before any osmocom foo is
initialized, or to immediatelly call exec()).
Related: OS#5027
Change-Id: I7db00d1810f0860166bffa0bda8566caa82e06a9
|
|
The BSSGP layer needs to know the MTU of the NS UNIDATA payload.
The MTU can be 0 if the NSE doesn't contain any NSVC.
Every status indication will contain the mtu value.
The MTU in the status indication contains the maximum transfer
unit of a BSSGP message. From NS side the maximum SDU.
Related: OS#4889
Change-Id: I5016b295db6185ec131d83089cf6c806e34ef1b6
|
|
CGI-PS type doesn't exist in GSM 08.08 Cell Id lists. That type of cell
id is osmocom-specific and used internally. In here CGI-PS is
automatically converted to CGI (since the later is an extension of this
one).
The encode/decode_cell_id_u are left intact (comment added) since those
can still be used (and are used by RIM code) to encode/decode TS 48.018
Cell Identifiers.
Related: SYS#4909
Change-Id: Id74f4577c397c1ba696f00395858311bd82cb2c8
|
|
It's a static internal function, so it makes sense to have it at start
of its related section.
It will be used by other functions in follow up patches.
Change-Id: I60f61f8f7bb6543feb068bdcee76d3b752565c95
|
|
This is not really used nowadays, but added for completeness in case
someone wants to use it.
Change-Id: I1361b044bd897d04133cda6fd62c16852700b17a
|
|
Fixes: 5bef2cc4bd58 ("ns2: Improve/extend doxygen comments for new ns2 implementation")
Change-Id: I21b51791aa149d9a5b13169d1cf8c2857c55774a
|
|
There is no active NS-VCs only alive or dead.
Change-Id: Idb5d2ae4a99a472e38601ff841b8046ecf89d1bc
|
|
If the BSS (or SGSN) has sent a BVC-RESET PDU for a BVCI to the SGSN (or
BSS) and is awaiting a BVC-RESET- ACK PDU in response, but instead
receives a BVC-RESET PDU indicating the same BVCI, then this shall be
interpreted as a BVC-RESET ACK PDU and the T2 timer shall be stopped.
Related: OS#4974
Change-Id: I4d15733f9f205cb563b66ef9e41dc8df50151900
|
|
The log line sneaked in when fixing the alive ms
Fixes: ab0e8646c4aa ("gprs_ns2_vc_fsm: use CLOCK_MONOTONIC for alive elapsed timer")
Change-Id: Iffe367b240f47c39232bbc26991c19752a1c75ad
|
|
bssgp_bvc_get_features_* are fsm "methods" and the name should indicate
that just lika all other function names in bssgp_bvc_fsm.h
Change-Id: I30fbbe36cdabf9635eaf4dfb1e93c8ce0f667b39
|
|
Related: OS#4889
Change-Id: Ic39d918c56399ceb0431299ce938e3bf276f678a
|
|
Add functions to get/set the maximum supported BSSGP PDU size by the NS
layer.
IPv4 and IPv6 should not matter since we can just enable IP
fragmentation and send NS PDUs up to 2**16 + bytes. Frame relay does not
support fragmentation and this is the reason we need to be aware of the
maximum PDU size. Luckily with 1600 bytes the MTU in frame relay can hold a
regular IP packet including NS/BSSGP overhead.
On the NS layer this corresponds to the size of an NS SDU in NS-UNITDATA
(3GPP TS 48.016 Ch. 9.2.10)
Change-Id: I9bb82ead27366b7370c9ff968e03ca2113ec11f0
Related: OS#4889
|
|
It seems like we still don't have NS2 VTY tests running in libosmocore
so this only got caught once osmo-sgsn/osmo-gbproxy builds failed.
Change-Id: Id3cd407b05457a4703ee38c4b1b1b65800bbd30e
Related: OS#4887
|
|
Otherwise substring wouldn't be detected.
E.g. local vs local2
Change-Id: I183b5176a1d8a295b7551ad186b3565adeb3d5e7
|
|
The alive elapsed timeout was only set once on the start of the
test procedure but not every time an ALIVE PDU was sent.
Fixes: OS#4997
Change-Id: I029696dfff21919f97ac4c33cdd82162b5ab1555
|
|
gettimeofday can jump and the comment says it should not be used for elapsed timer.
Related: OS#4997
Change-Id: I41989d8f9f82f4d1f7b97f11577653699365c8ae
|
|
Allow to assign a signalling and data weight to UDP binds.
Those weights will be used when doing dynamic configuration over
IP-SNS.
This is only the first part which only uses the assigned weights
when doing a new SNS configuration.
The outgoing change weight procedure will be supported in a later patch
when the SNS fsm supports outgoing procedures.
Related: SYS#5354
Change-Id: I5133e4229377d44772a9af28628a2bc420fea34b
|
|
<0026> gprs_ns2_fr.c:515 BIND(hdlcnet1) Can not create AF_PACKET socket. Are you root or have CAP_NET_RAW?
=================================================================
==3872359==ERROR: AddressSanitizer: heap-use-after-free on address 0x6130000030c0 at pc 0x7fef120aa92e bp 0x7ffebf6b5c20 sp 0x7ffebf6b5c18
READ of size 8 at 0x6130000030c0 thread T0
#0 0x7fef120aa92d in osmo_fr_link_free (/usr/local/lib/libosmogb.so.11+0x16992d)
#1 0x7fef1205105a in free_bind (/usr/local/lib/libosmogb.so.11+0x11005a)
Change-Id: I23c0f1697edd5734085fa18b0a2f253c0f206c53
|
|
The followign happens if osmo-gbproxy is started without CAP_NET_RAW:
<0026> gprs_ns2_fr.c:515 BIND(hdlcnet1) Can not create AF_PACKET socket. Are you root or have CAP_NET_RAW?
gprs_ns2_fr.c:176:2: runtime error: member access within null pointer of type 'struct msgb' AddressSanitizer:DEADLYSIGNAL
the second line is free_bind() iterating overr the backlog while
destroying the not-yet-fully-initialized bind.
Let's make sure the backlog llist_head is always initialized properly.
Change-Id: I4d2fa50955c5897cd469fee68d4ddc65a9f5688f
|
|
Move it above the place where the bit is set, since the bit represents
whether Extension Information is available, not whether R99 is
available.
Change-Id: Ice592acc50a24efd7fe4cf1a91f1d48fd74f38d8
|
|
They never got freed, only removed from the vty_bind queue.
Change-Id: I100897c32dc152f9acbb322782fae49b1f0bc030
|
|
In prepration to introduce more commands e.g. ip-sns-bind rename the ip-sns-remote
Related: SYS#5354
Change-Id: Ida979f3b9daa5f7280a629441e4006a7635653b0
|
|
Otherwise retries are splitted between the states.
Related: OS#5355
Change-Id: Iefde0c89965f0be899d6d1f096480f6fc79a92be
|
|
The state CONFIG_SGSN must be also protected by the timeout Tsns-prov.
Related: OS#5355
Change-Id: I2700c1ad40ebe30658e9937d86a4861b0b59d6b6
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
Changes done by contrib/struct_endianess.py.
Change-Id: Ia9cb1ef2ba2bfff9ef713c7d1cf388931dae1c46
|
|
Change-Id: I0ade2e476a035bb44b2f135ece4552d015852274
Fixes: CID#215717
|
|
This API makes the code simpler and easier to read.
Change-Id: Ibe9eaaa2a9344ba798631b8f115ad248f0a2f76b
|
|
Fix the encoding of the asynchronous Q.933 STATUS message
we send at DLC creation time.
Change-Id: Id1460ffa6266be85f44579c447421eed12481b02
Closes: OS#5010
|
|
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
|
|
Change-Id: I624b6a1175cf7d59173dfff02d6197bb644b9072
|
|
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
|
|
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
|
|
With IPv4 and IPv6 support it's not guaranteed that iph/ip6h is valid.
Related CID#214288
Change-Id: If9015906917e3ad11d14b84c29d64f28a3158144
|
|
Also fixes a nullpointer deref because iph is NULL on IPv6
Related: CID#216555
Change-Id: I2ff868a7bba6151a2202df774ff022c02b8c34cb
|
|
Related: CID#215530
Change-Id: Ic58394ab44ee555a0c5dee2b07fa1054093fbcf0
|
|
Change-Id: I80f72ada15b477d735bf5aee36a5d67e80eb0136
|
|
All bind function should work in the same way.
Also fixing a null pointer assignment if no **result is giving.
Change-Id: Idd0c2190d2af39804c18c4786a997079db9a4330
|
|
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
|
|
Otherwise a NS-VC would flap between ALIVE and UNBLOCKED state.
Related: OS#4959
Change-Id: Id98629bd65f92103e0e571ec388c58b02cb2ccb5
|
|
Check if the NSE is alive before passing UNITDATA to the load sharing.
Change-Id: I0e2a59bec9b72f74eb64510a2e1ad60486694a55
Fixes: OS#4996
|
|
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
|
|
When we're unconfigured and not yet started, we should not transmit
NS-ALIVE.
Change-Id: Ida3685e42a753899f1bf177eefcc23352ec7440d
Related: OS#4999
|
|
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
|
|
Change-Id: I09d035e38b41be9d6ac5e16da7fb113286c77d29
|
|
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
|