rohc 1.7.0

Major objectives for release 1.7.0:
 - the TCP profile (beta),
 - public API rewrite (keep the existing one for compatibility, will be removed for 2.0.0 only).

Minor objectives:
 - add extension support for UO-1-ID packet,
 - repair upon CRC failure.

Milestone information

Project:
rohc
Series:
rohc-1.7.x
Version:
1.7.0
Released:
 
Registrant:
Didier Barvaux
Release registered:
Active:
No. Drivers cannot target bugs and blueprints to this milestone.  

Download RDF metadata

Activities

Assigned to you:
No blueprints or bugs assigned to you.
Assignees:
16 Didier Barvaux
Blueprints:
No blueprints are targeted to this milestone.
Bugs:
1 Won't Fix, 15 Fix Released

Download files for this release

After you've downloaded a file, you can verify its authenticity using its MD5 sum or signature. (How do I verify a download?)

File Description Downloads
download icon rohc-1.7.0.tar.xz (md5, sig) ROHC library 1.7.0 (source + tests) 321
last downloaded 4 weeks ago
Total downloads: 321

Release notes 

The 1.7.0 release adds support for:
 - the ROHCv1 TCP profile (beta quality),
 - packet/context repair upon CRC failure,
 - extensions on UO-1-ID packets,
 - a new public API,
 - improved code and tests.

The library license is now LGPL version 2.1 or later.

Changelog 

View the full changelog

  Compatibility:
    - Version 1.7.0 is not compatible with versions < 1.7.0 with respect to
      packet format because of several fixes related to IETF RFCs that change
      the format of ROHC packets. Compatibility may however be required with
      the library feature ROHC_COMP_FEATURE_COMPAT_1_6_x.
    - The library API is fully compatible with earlier versions.

  License/Authors:
    - Viveris Technologies for the packet/context repair upon CRC failure.
    - Viveris Technologies for better conformance to ROHC standards.
    - FWX for ROHCv1 TCP profile.
    - Remove the Lulea University of Technology from the authors: code changed
      so much since fork that nothing remains from the initial code.
    - Remove fuzzer's co-author: he gave ownership and copyright to Didier
      Barvaux.
    - Add copyright information to all source files.
    - Change license from GPLv2+ to LGPLv2.1+

  Acknowledgments for bug reports and/or bug fixes:
    - Thanks to Friedrich for his help designing the new API function
      rohc_feedback_avail_bytes().
    - Thanks to Fabrice Bellard for finding several non-conformances to ROHC
      standards.

  Main changes:
    - ROHC protocol:
       - Add support for packet/context repair upon CRC failure.
       - Add support for extensions on UO-1-ID packets.
       - Add support for the ROHCv1 TCP profile (beta quality).
       - RTP profile: avoid the Tsc = 0 and no TS bit situation
       - Use the Uncompressed profile if IPv4 checksum is incorrect
       - Add a compatibility mode with ROHC library 1.6.x.
    - Major rework of the API (compatibility preserved), see
       https://rohc-lib.org/wiki/doku.php?id=library-migration#api_changes_between_16x_and_17x
    - Improve library documentation
    - Man pages are now available for public API and tools
    - Install ROHC public headers in a rohc/ subdirectory
    - New librohc.so available: it gathers all librohc_*.so (old libs still
      available)
    - Update public headers to be compatible with C++

  Build system:
    - Refresh HTML and man documentation only if source code changed.
    - Remove zcov result files and directories on distclean.

  Q&A:
    - Parse IP headers/extensions once, factorize many related code
    - Rework list compression, especially IPv6 extension headers.
    - Add test_lsb_decode unit test
    - Add new non-regression test for list compression and context re-use.
    - Improve library documentation.
    - Reduce graph of header dependencies.
    - Many, many small cleanup everywhere.
    - Non-regression test: get rid of XML output
    - Fix warnings found by the Clang static analyzer.
    - Fix warnings found by the Smatch.
    - Fix bashisms in non-regression shell script.
    - Build library with -Wextra, -Wunreachable-code, -Wshadow,
      -Wunused-function and -Wunused-variable compiler flags
    - Export only public symbols for libraries.
    - Introduce interoperability tests of the ROHC library with other
      implementations.
    - Make feedback parsing at compressor more robust

  Performances:
    - Greatly improve the performances of the W-LSB decoding algorithm for
      large windows and lossy streams.
    - Avoid memory allocation when prepending CID to feedback.
    - In case of failure, dump the content of packets only if
      --enable-rohc-debug was specified

  Applications:
    ROHC-over-UDP tunnel:
      - Deprecate the ROHC over UDP tunnel. Use the IP/ROHC tunnel instead.
    ROHC sniffer:
      - Run in brackground mode and use syslog.
      - add --daemon/-d option to make daemon mode optional.
      - Add option --pidfile/-p to write the child PID in a file.
      - Add --disable option to disable one or more ROHC profiles.
      - Add Gentoo init script.
      - Do not set MAX_CID > ROHC_SMALL_CID_MAX before changing CID type.
      - Update statistics output for the TCP profile.
      - Fix IPv4 packets with the non-standard 0xffff checksum.
      - Do not compare TCP packets with extra padding after TCP options.
      - Enable all decompression profiles.
      - Correctly close the PCAP dumps upon segfault
    ROHC fuzzer:
      - Enable all decompression profiles.
      - Use correct length for array traces
      - Mention truncated traces
      - Install in bin/ instead of sbin/
    ROHC fuzzer for RTP traffic:
      - new application: same as RTP fuzzer but targets RTP streams
      - Install in bin/ instead of sbin/
    Performances test:
      - Use perf to compute elapsed time, no need to be root anymore
      - Use 'comp' and 'decomp' as action parameters.
      - Enable all decompression profiles.
      - Fix build on x86_64
      - Install in bin/ instead of sbin/
    ROHC stream generator:
      - Add a new tool named 'rohc_gen_stream' that generates large
        (un)compressed stream for performance testing.
    Stats:
      - The statistics tests are now an app in app/stats/

  Bug fixes:
    Bug # 809028: Write man pages for public API
    Bug # 896842: Add extension support for UO-1-ID packet
    Bug #1075922: Aligment problem with Timestamp TCP option on ARM
    Bug #1208900: RTP profile: unscaled TS shall always be encoded with W-LSB
                  in UO* packets
    Bug #1209260: Wrong W-LSB decoding if interpretation interval straddles
                  the field boundaries
    Bug #1210498: IP-ID shall be transmitted verbatim in IR and IR-DYN packets
    Bug #1212769: Fail to unlock/remove feedbacks if ring is full of locked
                  feedbacks
    Bug #1244990: gen_id optional for lists of IPv6 extension headers
    Bug #1265304: RTP decompression failure with repeated constant TS
    Bug #1301518: Interoperability problems with Aeroflex TM500(LTE)
    Bug #1319889: missing 'extern "C"' closure in header
    Bug #1321398: "please define a callback for random numbers" printed even
                  if callback is set

0 blueprints and 16 bugs targeted

Bug report Importance Assignee Status
1323968 #1323968 rohc_alloc_compressor function didn't support LARGECID 6 Wishlist Didier Barvaux  4 Won't Fix
1212775 #1212775 Array overflow with too many RTP ports 2 Critical Didier Barvaux  10 Fix Released
1209260 #1209260 Wrong W-LSB decoding if interpretation interval straddles the field boundaries 3 High Didier Barvaux  10 Fix Released
1212769 #1212769 Fail to unlock/remove feedbacks if ring is full of locked feedbacks 3 High Didier Barvaux  10 Fix Released
1244990 #1244990 gen_id optional for lists of IPv6 extension headers 3 High Didier Barvaux  10 Fix Released
1265304 #1265304 RTP decompression failure with repeated constant TS 3 High Didier Barvaux  10 Fix Released
1319889 #1319889 missing 'extern "C"' closure in header 3 High Didier Barvaux  10 Fix Released
896842 #896842 Add extension support for UO-1-ID packet 4 Medium Didier Barvaux  10 Fix Released
1074285 #1074285 TCP profile: bug on ARM plateform 4 Medium Didier Barvaux  10 Fix Released
1208900 #1208900 RTP profile: unscaled TS shall always be encoded with W-LSB in UO* packets 4 Medium Didier Barvaux  10 Fix Released
1210498 #1210498 IP-ID shall be transmitted verbatim in IR and IR-DYN packets 4 Medium Didier Barvaux  10 Fix Released
1321398 #1321398 "please define a callback for random numbers" printed even if callback is set 5 Low Didier Barvaux  10 Fix Released
799200 #799200 Public API is not convenient 6 Wishlist Didier Barvaux  10 Fix Released
809028 #809028 Write man pages for public API 6 Wishlist Didier Barvaux  10 Fix Released
1069409 #1069409 Add support for TCP profile (0x0006) 6 Wishlist Didier Barvaux  10 Fix Released
1075922 #1075922 Aligment problem with Timestamp TCP option on ARM 1 Undecided Didier Barvaux  10 Fix Released
This milestone contains Public information
Everyone can see this information.