Home

Awesome

libre README

libre is a Generic library for real-time communications with async IO support.

Build ccheck OpenSSL no-deprecated and LibreSSL

Features

Building

libre is using CMake. CMake and OpenSSL development headers must be installed before building.

Build with debug enabled

$ cmake -B build
$ cmake --build build -j
$ sudo cmake --install build
$ sudo ldconfig

Build/run tests

cmake -B build && cmake --build build -t retest -j
build/test/retest -rv

On some distributions, /usr/local/lib may not be included in ld.so.conf. You can check with grep "/usr/local/lib" /etc/ld.so.conf.d/*.conf and add if necessary:

$ echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/libc.conf
$ sudo ldconfig

Build with release

$ cmake -B build -DCMAKE_BUILD_TYPE=Release 
$ cmake --build build -j
$ sudo cmake --install build
$ sudo ldconfig

Build with clang compiler

$ cmake -B build -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
$ cmake --build build -j
$ sudo cmake --install build
$ sudo ldconfig

Examples

Coding examples are available from the redemo project.

License

The libre project is using the BSD license.

Contributing

Patches can sent via Github Pull-Requests

Design goals

Modules

NameStatusDescription
aesstableAES (Advanced Encryption Standard)
asynctestingAsync module
base64stableBase-64 encoding/decoding functions
bfcpstableThe Binary Floor Control Protocol (BFCP)
confstableConfiguration file parser
crc32stable32-bit CRC defined in ITU V.42
dbgstableDebug printing
dnsstableDNS resolving (NAPTR, SRV, A)
fmtstableFormatted printing and regular expression
hashstableHashmap table
hmacstableHMAC: Keyed-Hashing for Message Authentication
httpstableHTTP parser (RFC 2616)
httpauthstableHTTP-based Authentication (RFC 2617)
icestableInteractive Connectivity Establishment (ICE)
jsonstableJavaScript Object Notation (JSON)
liststableSortable doubly-linked list handling
mainstableMain poll loop
mbufstableLinear memory buffers
md5stableThe MD5 Message-Digest Algorithm (RFC 1321)
memstableMemory referencing
modstableRun-time module loading
mqueuestableThread-safe message queue
msgstableGeneric message component library
netstableNetworking routines
odictstableOrdered Dictionary
rtmpstableReal Time Messaging Protocol
rtpstableReal-time Transport Protocol
sastableSocket Address functions
sdpstableSession Description Protocol
shastableSecure Hash Standard, NIST, FIPS PUB 180-1
sipstableCore SIP library
sipeventstableSIP Event framework
sipregstableSIP register client
sipsessstableSIP Sessions
srtpstableSecure Real-time Transport Protocol (SRTP)
stunstableSession Traversal Utilities for NAT (STUN)
sysstableSystem information
tcpstableTCP transport
televstableTelephony Events (RFC 4733)
threadtestingC11 threads (with pthread and win32 emulation)
tlsstableTransport Layer Security
tmrstableTimer handling
turnstableObtaining Relay Addresses from STUN (TURN)
tracetestingTrace Helpers JSON traces (chrome://tracing)
udpstableUDP transport
unixsocktestingUnix domain sockets
uristableGeneric URI library
websockstableWebSocket Client and Server

legend:

Features

Supported platforms

SystemSupport typeSupported versionsNotes
LinuxTier 1glibc >= 2.27
LinuxTier 1musl >= 1.2
macOSTier 1macOS >= 10.10
WindowsTier 1>= Windows 8MinGW-w64, >= VS 2019
AndroidTier 2
iOSTier 2
FreeBSDTier 2>= 12
OpenBSDTier 2>= 7.4
LinuxTier 2uClibc

Support types

Supported versions of C Standard library

Supported compilers:

Supported versions of OpenSSL

Coding guidelines

Transport protocols

TCPUDPTLSDTLS
BFCP-yes--
DNSyesyes--
HTTPyesn/ayesn/a
ICE-yes--
RTP-yes--
RTCP-yes--
RTMPyes-yes-
SIPyesyesyes-
STUNyesyesyesyes
TURNyesyesyesyes
WEBSOCKyesn/ayesn/a

Related projects

References

https://github.com/creytiv/re