baresip / re

Generic library for real-time communications with async IO support
BSD 3-Clause "New" or "Revised" License
129 stars 80 forks source link

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

Name Status Description
aes stable AES (Advanced Encryption Standard)
async testing Async module
base64 stable Base-64 encoding/decoding functions
bfcp stable The Binary Floor Control Protocol (BFCP)
conf stable Configuration file parser
crc32 stable 32-bit CRC defined in ITU V.42
dbg stable Debug printing
dns stable DNS resolving (NAPTR, SRV, A)
fmt stable Formatted printing and regular expression
hash stable Hashmap table
hmac stable HMAC: Keyed-Hashing for Message Authentication
http stable HTTP parser (RFC 2616)
httpauth stable HTTP-based Authentication (RFC 2617)
ice stable Interactive Connectivity Establishment (ICE)
json stable JavaScript Object Notation (JSON)
list stable Sortable doubly-linked list handling
main stable Main poll loop
mbuf stable Linear memory buffers
md5 stable The MD5 Message-Digest Algorithm (RFC 1321)
mem stable Memory referencing
mod stable Run-time module loading
mqueue stable Thread-safe message queue
msg stable Generic message component library
net stable Networking routines
odict stable Ordered Dictionary
rtmp stable Real Time Messaging Protocol
rtp stable Real-time Transport Protocol
sa stable Socket Address functions
sdp stable Session Description Protocol
sha stable Secure Hash Standard, NIST, FIPS PUB 180-1
sip stable Core SIP library
sipevent stable SIP Event framework
sipreg stable SIP register client
sipsess stable SIP Sessions
srtp stable Secure Real-time Transport Protocol (SRTP)
stun stable Session Traversal Utilities for NAT (STUN)
sys stable System information
tcp stable TCP transport
telev stable Telephony Events (RFC 4733)
thread testing C11 threads (with pthread and win32 emulation)
tls stable Transport Layer Security
tmr stable Timer handling
turn stable Obtaining Relay Addresses from STUN (TURN)
trace testing Trace Helpers JSON traces (chrome://tracing)
udp stable UDP transport
unixsock testing Unix domain sockets
uri stable Generic URI library
websock stable WebSocket Client and Server

legend:

Features

Supported platforms

System Support type Supported versions Notes
Linux Tier 1 glibc >= 2.27
Linux Tier 1 musl >= 1.2
macOS Tier 1 macOS >= 10.10
Windows Tier 1 >= Windows 8 MinGW-w64, >= VS 2019
Android Tier 2
iOS Tier 2
FreeBSD Tier 2 >= 12
OpenBSD Tier 2 >= 7.4
Linux Tier 2 uClibc

Support types

Supported versions of C Standard library

Supported compilers:

Supported versions of OpenSSL

Coding guidelines

Transport protocols

TCP UDP TLS DTLS
BFCP - yes - -
DNS yes yes - -
HTTP yes n/a yes n/a
ICE - yes - -
RTP - yes - -
RTCP - yes - -
RTMP yes - yes -
SIP yes yes yes -
STUN yes yes yes yes
TURN yes yes yes yes
WEBSOCK yes n/a yes n/a

Related projects

References

https://github.com/creytiv/re