Bristol will make legacy telephony networks available to IP telephony services thru the SIP protocol and RTP media sessions
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Go to file
David Sugar 7747828c09 Update cmake project (!41)
7 months ago
cmake Update cmake project (!41) 7 months ago
drivers/test Optimize headers (!38) 11 months ago
server Use runtime linked libfmt (!40) 10 months ago
test Initial commit 3 years ago
vendor Use runtime linked libfmt (!40) 10 months ago
.clang-tidy Modernize linting (!33) 12 months ago
.gitattributes Support vendor-free builds (!25) 2 years ago
.gitignore Add pkgconfig support (!37) 11 months ago Prep next release (0.1.1) 11 months ago
CMakeLists.txt Update cmake project (!41) 7 months ago Modernize vendoring and fix markdown (!34) 12 months ago
Doxyfile Optimize headers (!38) 11 months ago Modernize vendoring and fix markdown (!34) 12 months ago Modernize vendoring and fix markdown (!34) 12 months ago
TODO Initial commit 3 years ago Support vendor-free builds (!25) 2 years ago Remove non-generic libsystemd support (!27) 1 year ago

About Bristol

Bristol makes legacy telephony networks available to IP telephony services thru the SIP protocol and RTP media sessions. Bristol began with GNU Bayonne and ideas I had for creating real-time non-blocking carrier scalable general purpose telephony servers using GNU/Linux. Many of the architectural advances made in GNU Bayonne were ahead of common practices back then, and some still remain so today

Modern iterations of Bayonne are now focused on providing application driven voice services on pure modern IP telephony networks, such as for use with SIP and H323 call servers. Bristol has inherited the mission of supporting generic telephony card drivers and providing gateway services between IP based telephony and the legacy analog and digital (ISDN, T1, etc) telephony world. Like with GNU Bayonne past, Bristol offers support for different telephony hardware thru loadable drivers.


Basic documentation, including an architecture overview, will be added as markdown files. An installation guide for various GNU/Linux distributions and BSD systems may also be added. A driver guide for building Bristol with support for various telephony hardware will also be provided. Developer documentation can be generated from source file headers using Doxygen.


Bristol requires eXosip2 version 5.1.2 or later and either openssl or libressl for SIP support. Bristol also may require various SDK's and/or driver kits from telephony card vendors to build specific drivers. The most generic GNU Bayonne hardware driver was Linux CAPI support, and this has been replaced with the mISDN stack. If the systemd support library is present at build time then support for the systemd notify socket may also be added.

When a cmake Debug build is produced, this can be executed directly for testing; no further install is required. The debug build uses the config file found in the test/ directory, and a test/custom.conf file can be added with configuration overrides for local developer testing. The preferred cmake build type for live installation and running of debug builds is RelWithDebugInfo.

When installing Bristol, header files are also installed. This allows drivers to be developed and compiled separately from Bristol itself. We export the symbol space of the Bristol server directly rather than using an intermediary shared library to support plugins. This is something I started long ago with Bayonne. This means symbol references and supporting code is not PIC, as happens in a shared library.


A more complete overview of participation will be provided in This project uses cmake, and c++17 for core server development. We use the ctest framework for unit testing and gcovr for coverage reports. Bristol can be built with gcc or clang and can be tested on any posix platform where suitable telephony drivers are supported.

In addition to producing testable debug builds the project can also be built for running unit tests. This is enabled by default for debug builds. To produce coverage reports you can cmake a debug build with -DCOVERAGE_TYPE=gcov set. You can then use the make the "coverage" target and produce coverage reports with gcovr or lcov. The "lint" target will validate code using cppcheck.


Support is offered thru When entering a new support issue, please mark it part of the support project. I also have I may maintain system packaging for some GNU/Linux distributions, including Arch and Debian. I also have my own build infrastructure for Alpine Linux using ProduceIt, and I publish apk binary packages thru In the future maybe other means of support will become possible.