Skip to content

Releases: EarthScope/libslink

v4.1.3

15 Dec 22:59
Compare
Choose a tag to compare
  • Fix termination of ENDFETCH command

v4.1.1

28 Nov 23:37
Compare
Choose a tag to compare
  • Handle payload lengths less than SL_MIN_PAYLOAD (64) bytes.
  • Update packet tracking details just before returning the complete packet to the calling program instead of when the initial data is received.
  • Rename SL_MAX_PAYLOAD to SL_RECV_BUFFER_SIZE for clarity.
  • sl_ping(): make serverid and site string buffers optional.
  • Do not print certificate verification warnings if LIBSLINK_CERT_UNVERIFIED_OK is set.
  • Update mbedtls to v3.6.2.

v4.1.0

31 Aug 01:30
Compare
Choose a tag to compare
  • Properly convert v3 style selectors to v4 without location code.
  • Add sl_set_tlsmode() to enable/disable TLS on arbitrary ports. By default port 18500 will use TLS and all others will not.
  • Update mbedtls sources to release 3.6.1. This enables environment variable LIBSLINK_CERT_UNVERIFIED_OK control for TLS 1.3.

v4.0.0

07 Aug 00:58
Compare
Choose a tag to compare

A new major release that seamlessly supports both the new, SeedLink version 4 protocol, and the previous protocol, referred to in this project as version 3.x. The protocol version will automatically be selected during negotiation and the library will, in most cases, adapt user-input as needed for the protocol needs.

Key features of SeedLink v4 include:

  • Optional use of TLS (SSL) for encrypted connections and a default port to use for TLS-based connections (18500).
  • Optional capability to submit authentication credentials. The specification identifies user-password and JWT mechanisms, and allows for others to be added in the future.
  • Ability to transfer different payload types, with identifiers for miniSEED versions 2 and 3, and allowing for future additions.
  • Ability to use wildcards in station ID patterns.

This release supports all of those features.

A number of API changes were made to allow for new features and improve usability.

The full list of changes is as follows, API changes below:

  • Add TLS (SSL) support for encrypted connections. The following environment variables allow for debugging and providing locations of Certificate Authorities to use:
    • LIBSLINK_CA_CERT_FILE = location of a CA cert file to load
    • LIBSLINK_CA_CERT_PATH = path to CA cert files to load
    • LIBSLINK_TLS_DEBUG = TLS debugging output level (integer)
    • LIBSLINK_CERT_UNVERIFIED_OK = Allow unverified certs (for TLS 1.2)
  • Update internal sequence numbers to unsigned 64-bit values.
  • Header contains separate major, minor, patch versioning, thanks @yensoon2!
  • Internal date-time representation now ISO compatible format, conversion to-from legacy SeedLink time format included.
  • Saved state file now using combined station ID syntax instead of separate network and station. Both new and old formats are supported when reading.
  • Stream list file now uses a single station ID instead of separate network and station codes. The old format is NOT supported.
  • Convert v3 selector syntax to v4 when protocol v4 is negotiated.
  • Sort the stream list alphanumerically and from more to less specific regarding wildcards. Ensuring that wildcards in station ID selections are sent after those without wildcards.
  • Add callback function hooks to support caller-provided authorization with v4.
  • Do not interpret the version following SeedLink in the HELLO response as a protocol version, instead parse SLPROTO declarations and default to 3.x if no recognized protocols are found.
  • Add special sequence number value SL_ALLDATASEQEUNCE to request all data from a server for a stream (v4 only). This value is also used internally for v3 uni-station mode.
  • Warning messages for non-support of features for ancient server versions < 3 are removed. Capabilty is not reduced, but the library will not prevent issuing commands against very old servers, which should return errors for unsupported commands.
  • Add sl_payload_summary() and sl_payload_info() for extracting basic details from recognized payload types.
  • Add sl_set_serveraddress() to set the server address, with support for parsing addresses like raw IPv6 enclosed in square brackets.
  • Add sl_set_timewindow() to set time range for the streams.
  • Add sl_set_auth_params() to set authentication parameters.
  • Add sl_set_keepalive(), sl_set_iotimeout(), sl_set_idletimeout() and sl_set_reconnectdelay().
  • Add sl_set_blockingmode(), sl_setdialupmode(), and sl_setbachmode().
  • Add sl_printslcd() to print SLCD details.
  • Add sl_set_allstation_params() to replace sl_setuniparams().
  • Add sl_set_termination_handler() to set signal handlers to trigger connection termination for clean shutdown. Not thread safe.

API changes:

  • sl_newslcd() was replaced by sl_initslcd() and now takes two arguments of client name and version.
  • sl_collect() now takes a buffer provided by the caller as a destination for received packet payload.
  • sl_read_streamlist() is renamed sl_add_streamlist_file() and reads a new format incompatible with the legacy stream list.
  • sl_parse_streamlist() is renamed sl_add_streamlist() and updated to recognized the combination of SeedLink v3 and v4 selections.
  • sl_typestr() renamed sl_formatstr(), now takes a subformat argument.
  • sl_addstream() replaced with sl_add_stream() and now takes a combined station ID instead of separeate net and sta.
  • sl_collect_nb() removed, non-blocking collection can be performed using sl_collect() when SLCD.noblock is set.
  • sl_packettype() and sl_sequence() removed, similar details are provided in an SLpacketinfo strucuture. The historic packet type is no longer derived as the heuristic of blockette discovery is unreliable.
  • sl_checkversion() and sl_checkslcd() removed.
  • sl_openfile() and sl_readline() removed.
  • sl_strparse() removed.
  • sl_gswap3() and all sl_gswapXa() routines removed.
  • Remove all miniSEED specific routines and structures. A few details from miniSEED payloads can be extracted using sl_payload_info() but programs that need more details, or decoded data samples should use a miniSEED parsing library.

v2.7.1

07 Jan 19:31
Compare
Choose a tag to compare
  • Return configured station count from sl_read_streamlist() as intended. Thanks @Semecurbe.
  • Add missing libslink.map and slink.pc.in. Thanks @morealaz.

NOTE: the 2.x version of libslink is now considered end of life. Patches will be considered for significant bugs, but no new functionality is planned. Development effort will be focussed on the next major release.

v2.7

06 Jan 23:16
Compare
Choose a tag to compare
  • Determine received record length automatically, a pre-determined record length is no longer needed.
  • Support M SEED quality code.
  • Support for IPv6 connections, conversion to pure getaddrinfo() usage.
  • Allow host and port to be separated with '@', e.g. host@port to allow for numeric IPv6 address usage.
  • Update Makefile to include an install method, common shared target.
  • Add buffer scanning limit fix from Andrei Akimov.
  • Fix segfault in sl_msr_print() when no record passed.
  • Include socket level timeout that defaults to 60 seconds.
  • Incorporate platform-specific declarations into libslink.h
  • Remove support for Watcom-related wmake files.
  • Change licensing to Apache License 2.