Age | Commit message (Collapse) | Author | Files | Lines |
|
set of addresses
As a result, internal stream_srv_link logging will also show the whole
set of listening addresses. This is mostly fine since it mainly happens
only once, during connection accept(), and this way it provides full
view of where from and where to the client connected.
Related: SYS#5581
Change-Id: I216502a9aeafe638940f110bc9fddf2504b2ac3a
|
|
Similar to what osmo_stream_srv_link and osmo_stream_cli already have.
Change-Id: I171befd1fdf40c3cbb3fc7e4c3eedf82128b0712
Related: SYS#5580
|
|
This is used by API callers, and internally to log
connected/disconnected events.
Related: SYS#5581
Change-Id: I249ee7cad824cf971faabe06d10de2426c1b0c8b
|
|
This can be used by apps retrieving struct sctp_status through
getsockopt(SCTP_STATUS).
The relevant field is spinfo_state: osmo_sctp_sstat_state_str(st.sstat_state);
Change-Id: Id7d8a9ad7b32406ac603e520b33809d7ae5c762f
Related: SYS#6636
|
|
This can be used by apps retrieving struct sctp_paddrinfo through
getsockopt(SCTP_GET_PEER_ADDR_INFO).
The relevant field is spinfo_state: osmo_sctp_spinfo_state_str(pinfo.spinfo_state);
Related: SYS#6636
Change-Id: I78a0bd8279a04f4011c7273e0f542981308e482f
|
|
osmo_stream_srv and osmo_stream_cli already had that API introduced in
order to use it instead of *_get_ofd(), since the later will eventually
be deprecated due to incoming osmo_io.
Change-Id: I1bd3f790d93af74c150938a59108b882ad2820f3
|
|
Properly call osmo_sock_init2_multiaddr2() to use default binding
address if user of osmo_stream_cli didn't set one on the object
through the API.
osmo_sock_init2_multiaddr2() was also borken under that scenario until
recently (see Depends below). Until now, users of osmo_stream for SCTP
(mainly libosmo-sccp) relied on always setting a proper local address to
overcome this limitation.
Depends: libosmocore.git Change-Id I2641fbaca6f477404b094dbc53c0c1a3dd3fd2fd
Related: OS#6279
Change-Id: I0d9d0e48690c915f7b51ad09f452e551e01368b5
|
|
The old osmo_stream_{cli,srv}_get_ofd() API only works for streams
in OSMO_FD mode. However, it is legitimate for an application
wanting to get low-level access to the file descriptor, for example
to issue some {get,set}sockopt() calls on it.
Change-Id: Ib0737f21150f6ac8d524b92c7ddb098f2afdeaab
Related: OS#5753
|
|
The corresponding client function osmo_stream_cli_get_ofd()
already contained an OSMO_ASSERT, but the server side was missing
this so far. The 'ofd' member only has meaning in the context
of OSMO_FD, so calling that function from generic code is wrong!
Change-Id: I50df259040e011135a31fe1aee231eba430fa94a
Fixes: Change-Id I2f52c7107c392b6f4b0bf2a84f8c873c084a200c
Related: OS#5753
|
|
Change-Id: I818fe4e3792ed88ae4d6fd6afb677b39264ab662
|
|
- Clean up all allocations, introduce clean memory management to entire
test
Related: OS#6222
Change-Id: Ica25fcd71e8bf8946def3ea7ce320354ea6edb3a
|
|
- Use tall_test as root context everywhere, don't create any other contexts
- change .*_(cli|srv)_run_client() signature by adding talloc context as parameter
- Open and Close server link inside test_recon()
Related: OS#6222
Change-Id: I9ef02ed113bc049ae430b93d0eb69641e2ee809b
|
|
Related OS#5753, OS#5751
Change-Id: I61e1fe59166c46595efe8c1f32b8f2607cb6c529
|
|
Fix Coverity CID 323456 ("Control flow issues (NO_EFFECT)") by removing
'greater than 0'-check on unsigned integer-type variable.
Change-Id: I2efb28feae4d4fa7516702f01026af09aa3777ac
|
|
With this commit, IPA segmentation is taken care of by setting the
segmentation callback provided by libosmo-netif.
The ipa-stream-server example needs to prepend IPA headers now because
those are stripped by the segm. cb on both sides.
Depends: libosmocore.git I3a639e6896cc3b3fc8e9b2e1a58254710efa0d3f
Related: OS#5753, OS#5751
Change-Id: I822abf52c6ae396c90b5c50228a0a39c848d3de6
|
|
Disable nagling to make kernel packet processing time more predictable
Change-Id: I7e8f6851df28e006fcb714673b97cf7b6be367bf
|
|
If read returned an error or the stream got closed then simply destroy
the connection.
If the user code called osmo_stream_srv_set_flush_and_destroy() then
ignore any incoming messages and destroy the connection once the tx
queue is empty.
Change-Id: I84eea2717f3762830f3f5b115e6fc8545eaa4fd5
|
|
Change-Id: Idb815a3e4e51189f9f1f3cceedd570dff9caf401
|
|
Somehow gcc doesn't always warn about this rule being broken.
We are breaking the strict aliasing rule here and libosmo-netif
currently does not make use of the '-fno-strict-aliasing' flag.
It's possible that this has also been causing nondeterministic
timestamps in libosmo-netif stream tests every once in a while.
Related: OS#6164, OS#5753
Change-Id: Ibed543cdfcdda8c0256ce7d8818ff96d6d46e9b0
|
|
Change-Id: I2f0d6617c89cff83b1937996006ffe7106db2557
|
|
values
This will allow osmo_stream users (like libosmo-sccp) to set
SCTP_INITMSG related parameters, like number on inbound/outbound
streams, connect attempts, connect timeout.
Related: SYS#6558
Change-Id: I5343c7659881b29e0201e72badbc2d07e1ef2dca
|
|
This will allow extending capabilitites to set different parameters at
the lower layers as we need them.
This commit changes the behavior of osmo_stream_{cli,srv_link}: It now
doesn't enable by default SCTP AUTH/ASCONF features using setsockopt. It
is left up to the user of the API (libosmo-sccp in this case) to set it.
Since this unilateral use of setsockopt() has only been added recently
and we didn't release yet, it's fine changing it. libosmo-sccp will be
changed to unconditionally set its using setsockopt. It is left up to
the user of the API (libosmo-sccp in this case) to set it.
Related: SYS#6501
Related: SYS#6558
Change-Id: I2607c1c926a625986cd851adc65dd8b4de83d6ab
|
|
Use the new API available in libosmocore to set sockopts related to
ASCONF SCTP features. The old flag OSMO_SOCK_F_SCTP_ASCONF_SUPPORTED has
been dropped. This only affects master builds since there's no release
ever done with that flag defined.
Depends: libosmocore.git Change-Id I1f6fd09a79b0a2bd794e5669d933be25bbf1eeaa
Related: SYS#6501
Related: SYS#6558
Change-Id: I2b2073de72625b4f4f99892179c9406163d28592
|
|
Change-Id: I43b7327893c220447492d2c36c87b187a414cbdb
|
|
A previous commit added additional logging information, necessitating changes to
the test code as well as to the output check.
Related:OS#5753
Change-Id: Ib8f01c3651c13814c212328946415094da39d6a8
|
|
With this commit, IPA segmentation can be taken care of by setting
the segmentation callback osmo_ipa_segmentation_cb().
Depends: libosmocore.git I3a639e6896cc3b3fc8e9b2e1a58254710efa0d3f
Related: OS#5753, OS#5751
Change-Id: I6c91ff385cb5f36ab6b6c96d0e44997995d0d24c
|
|
This is required if the user of the stream API wants to use SCTP extra
features such as setting the Peer Primary Address through ASCONF.
At a later point we may want to add new osmo_stream APIs to set extra
flags for the socket, or maybe simply add a new API specifically to
enable ASCONF for the stream.
Depends: libosmocore.git Change-Id Iac07031927b66a9d32d2bb2faab817e4c922a359
Related: OS#6076
Change-Id: I807b3748b8535d8e75ceea812d7baaf153fa1d60
|
|
Same mechanism as already used in stream_srv.
Change-Id: I4cb94d264109f1b763cccd44c6ba049cc7509319
|
|
*Move the helper function to stream.c and pass a logging prefix string
so that it can be used by both client and server.
* Adapt log level based on message type.
* Rework logging code to log everything in one line
Change-Id: I0ed84cc2effb71b6ef1f6efb3f8b663c602a5a31
|
|
The event was enabled but was not being logged.
Change-Id: I49f5a648fd474e320101424fb6873a37442339bf
|
|
RFC 6458 6.1.1:
"""
sac_error: If the state was reached due to an error condition (e.g.,
SCTP_COMM_LOST), any relevant error information is available in
this field. This corresponds to the protocol error codes defined
in [RFC4960].
"""
Change-Id: Ie48360d22ce1e35eefb1a305dde106948dfa80e8
|
|
Change-Id: Iae325b787fdb7fc95aa6922975a7e1fcf368527a
|
|
Upon EAGAIN, simply re-enqueue the message and return waiting for next
poll. Upon any other error, force close + reconnect.
Related: OS#6134
Change-Id: I462cb176ebc51f3e99ee796310e8665144c84ccc
|
|
If internal send() fails with a fatal error, it should destroy the
socket. The user will know about the event through the close_cb() called
during osmo_stream_srv_destroy().
As a result, the socket is not closed when receiving SHUTDOWN by the
peer (through SCTP MSG_NOTIFICATION), but keep it alive since the socket
can still keep receiving data from the peer. Only fail if write() to
that read-only socket is attempted.
Related: OS#6134
Change-Id: I84ddebabdffe47733cb529bcfebec8757e6a172b
|
|
The previous behavior was not standarized, and even erratic under some
code paths (passing msgb_data() and size=msgb_tailroom()).
This patch standarizes the behavior, and makes it possible to append
content if the user wishes so instead of erasing old data in the msgb
passed to it.
Change-Id: I2cfcd4f61545e6a76d84495c3467999efccf22df
|
|
Change-Id: Iaca9a99417d2f1dbf449e2b20e5dfcdd5e05b683
|
|
Commit 5b0ad8bd851e4ce888b386be68c1821e4f2ca301 added call to
setsockopt(SO_NOSIGPIPE) in order to avoid SIGPIPE being signalled on
platforms not supporting send() flag MSG_NOSIGNAL (macOS, FreeBSD
etc...).
While it may be a topic to discuss whether we support those platorms or
not, the fact that we call an extra setsockopt() during socket creation
doesn't hurt much, and for sure we want to have the same behavior in
client and server.
Hence, this commit adds the same behavior pesent in srv sockets to cli
ones.
Change-Id: I867d8e244e473679abb7e7e7a9b531eeed046436
|
|
Change-Id: I9aaa63b676b1cd77c7ea500f9bceda989db50db0
|
|
Change-Id: I49776db0b12ee46b629381d2fa2b501c2a63e390
|
|
Related: OS#5753
Change-Id: I87ef4c7023126b783dd79e7ed47be31e1b76f975
|
|
Mainly to make data/packets look (pseudo-)correct in Wireshark.
Also: Add helper for allocating message buffers with extended headroom for IPA.
Change-Id: I962b9edcba65cdc98da00d2f8753dc5acd481502
|
|
The dev/user in general is only interested about one side of the stream
when looking at the code. Since the stream.c file is tarting to be quite
large/bloated, this patch splits its content into stream_cli.c and
stream_srv.c to make it easier to improve/extend and review.
Keep common code between cli and srv in stream.c, and add a private header
to contain references to it.
Change-Id: I22af01bba2040eb320ba48fd1b46c090c98be159
|
|
Change-Id: Id082a9473b788f8de20cdc2ba4430b3289f4ce5a
|
|
Change-Id: I29621ca53cdbdf8b5b2d128307fcb6432db669d3
Depends: Ieed10bc94c8aad821c0a8f7764db0e05c054c1e3 (libosmocore.git)
|
|
That function is used by the srv_link object, not the srv object. Rename
it to avoid confusion.
Change-Id: I1a3870b3a269b84ac2a9285ee6fe3389c5c96a94
|
|
Specially important is the change where we now print the remote port
which connected to us, not our local port (which is already printed as
part of LOGSLNK).
Change-Id: I6e556f8263496ded41bb221ccc8e193c5361697f
|
|
It was later decided that since setting a name is not really required,
it is best to leave it out of the create() function and let the user use
the osmo_stream_srv_set_name() API if needed (otherwise a dynamic name
based on socket is selected)
Change-Id: I5d677ef57b7db0aedd8c43282568c845097cb12b
|
|
It was later decided that since setting a name is not really required,
it is best to leave it out of the create() function and let the user use
the osmo_stream_cli_set_name() API if needed (otherwise a dynamic name
based on socket is selected).
Change-Id: I2a2fad318ef22c2ac117f95588a078ca3beccea5
|
|
Since the local port is logged now in stream_test, it must be set to
a specific value in order to have deterministic log output being
validated.
Change-Id: I17ef699dab72c1b613708070d22e9f040b0fe069
|
|
Depends: libosmocore.git Change-Id If2772a3ccaa98616e0189862a49ab0243435e343
Change-Id: I539a0d29d11348efe702f971965a55cf56db5c59
|