As long the filter doesn't look into the nsvc/bvc structs
there is no need to use the type.
Further it allows to use the same code for NS1 and NS2.
Change-Id: I9b9a70f382a94f1d41142060d5db569f9df865ac
In case the port isn't known at the time osmo_sockaddr_str_from_str2()
parse only the ip and don't touch the port.
This is the case when a user has different vty commands for ip and port.
Change-Id: Ifd4e282586b8bd40b912a9f1c25f9e8208420106
The function is checking for IP version matching between local and
remote addresses even if only one is needed based on flags. For example,
if user only desired to bind, the remote address should not be
used nor checked.
Bug was introduced here: 2c962f5de1
Change-Id: I87afd1db9bd017426abcc959fa515d15784cdf1c
On IPv6 sockets, getsockname() and inet_ntop() would act upon a
structure struct sockaddr_in.
First getsockname() would succeed but truncate the address, and later on
inet_ntop would read out of the scope of the structure.
Change-Id: If781d56680758a97643b1b38e78d3431ea649020
sctp_bindx() fails if passed both "0.0.0.0" and "::", only "::" must
be passed instead, which covers both.
As a result, it is fine in this case and makes sense having only IPv6
formatted IPs in the local side (which actually also includes all IPv4
ones in th system) and IPv4-only addresses on the remote side.
Change-Id: I0b590113e5def20edcbcb098426b19cd504eabff
According to 3GPP TS 44.005, section 4.2.2 "Priority":
a) on DCCH, a SAPI=0 frame always has higher priority than SAPI=3;
b) on ACCH, the priority arrangement is more complex:
b1) if a SAPI = 3 frame is awaiting transmission, two SAPI=0
frames shall not be sent in consecutive SACCH frames;
b2) on the network side (LAPDM_MODE_BTS), it must also be ensured
that any SAPI=3 frame is followed by at least one SAPI=0 frame;
b3) a SAPI = 0 frame may be repeated in the next SACCH period
if the Repeated SACCH is supported (see 3GPP TS 44.006, section 11).
We definitely need to extend our testing coverage to ensure that
we implement b) correctly, but for now let's focus on DCCH:
a) for DCCH, ensure that SAPI=0 frames preceed SAPI=3 ones;
b) for ACCH, re-use the existing round-robin implementation.
Change-Id: Ia3780bce1222b312ae2fd2d21496a4d6c5ccb6e0
Related: SYS#5047, OS#4731
Recently we've encountered a situation where during MT SMS delivery,
the func=SABM for SAPI=3 was sent on Downlink *before* the BTS
replied with the func=UA for SAPI=0 (contetion resolution procedure,
where we echo the (RR) Paging Response back to the MS).
This change adds a unit test reprodicing the problem.
Change-Id: Ied0f8bb683de8e37bcfa984c2877aa1cec1c0b4b
Related: SYS#5047, OS#4731
We intentionally do not match stderr output because it contains
non-deterministic messages (e.g. pointer addresses), so let's
make sure that all test specific messages go to stdout.
Change-Id: Ia52f8e811cee9d3e1cd5fcda49a9134ccaa31f7f
This is basically an ACKnowledgement for (RR) CM Service Request,
thus it contains a copy of the original Uplink message (cm).
Let's rename it to reflect this explicitly.
Change-Id: Id497ff4b688528916495387d64915b14396a68f1
This is basically a successor of gsm0808_create_sapi_reject(), but
instead of hard-coding GSM0808_CAUSE_BSS_NOT_EQUIPPED, it allows
the caller to specify a cause value to be used. The old function
is now deprecated and should not be used.
Change-Id: Iefe5484d0fa02d5722b628b1dc237d51d3fb1a9b
Related: OS#4728
Some systmes (like the ones available in OBS) don't support creating
SCTP sockets, so we need to skip those tests there.
Change-Id: I1d16280674625877ec22cc60cbc5deb67868a656
The flag was added recently in cd133316cf,
and it is causing issues while running unit tests in environement like
OBS where probably there's no non-loopback address configured.
Change-Id: I47c31953f1db39fcd2870bde0b984057b8e7b4c4
Under some specific cases, res_loc could be leaked. Under some others,
res_loc and res_rem were freed without being initialized previously.
Fixes: CID#212863
Fixes: CID#212861
Change-Id: Id9c4eda6fd1172e7324aa23c81e8658967a8dd0b
Drop one of the two log lines since it would be a duplicated and anyway
it misses context (return code).
Change-Id: I4620bf86f4bcda58ae85209278ac9ae9a0f3012a
The function is improved to support AF_INET:v4->v4, AF_INET6:v6->v6 and
AF_UNSPEC:v4+v6->v4+v6.
Unit tests for the function are added to make sure function behaves
correctly in several scenarios.
Change-Id: I36d8ab85d92bba4d6adb83bc1875eb61094ed2ef
Address resolution is done first and once we have the information, it
proceeds to create the socket. This separation in steps will help when
adding support for IPv6+IPv4 sets, where AF_UNSPEC is passed and created
socket needs to be AF_INET6 in order to handle addr of both versions.
Change-Id: I03147e3033a0c1fd04c9ac61d2ffbd78a1bb784a
Durin dev cycle, node was initially called "sched" instead of
"cpu-sched", and when it was renamed, this specific part was missed.
Change-Id: I0709fee12cc8ddc4d57efb4ea40b0b79b7ea4151
It's more convenient to use i in the outer loop, and j, k, etc.
in the inner loops. Otherwise it looks a bit confusing.
Change-Id: I61ef48fcf977d6a872e288571a4ff2c3dfe3184b
Shared code might be used by applications that have no vty, so sched
can't be initialized, do not assert and break everything in this case, a
warning should suffice.
Change-Id: Ic40075df8d4cf9fe8f1d711f899dae9a4b5b0928
When dealing with IPv4 and IPv6 address, the struct sockaddr
allows to hold IPv4 and IPv6.
However even when struct sockaddr is being used, a cast to the
IPv4 or IPv6 family must happen. To work around this additional code,
use a union for the most common types.
Change-Id: If80172373735193401af872b18e1ff00c93880e7