Consulting djbware Publications

UCSPI for IPv6

What is ucspi-tcp6?

Dan Bernstein's UNIX Client-Server Program Interface, UCSPI is a cornerstone of reliable network communication under Unix.

IPv6 capabilities have been included by Felix von Leitner's IPv6 patch.
Based on some additional research at the University of Applied Sciences in Frankfurt/Main (Germany), now a full-featured version is available supporting in addition compactified IPv6 addresses and the well-known classless prefix-notation for IPv4 and IPv6 networks.

ucspi-tcp6 has been build to confirm with Dan Bernstein's slashpackage scheme and uses a binary-compatible CDB for communication control.

History

ucspi-tcp6 is a fork of Dan Bernsteins's ucspi-tcp 0.88 version, including:

Sources

Version & Download Description Verification
ucspi-tcp6 1.05 This fith 1.0 release providing in particular compatibility with Solaris/OmniOS MD5: 098375a7116c6c6c6ba2407746ff51ac
Build: 20180919220205.
ucspi-tcp6 1.10 This first 1.10 release is based on fehQlibs MD5: 5faae60a0680f33e8468af9b08a071d2
Build: 20180827231707

Documentation:

Man pages:

Server apps Client apps Miscellaneous
rblsmtpd date@ addcr
recordio finger@ argv0
tcprules http@ delcr
tcprulescheck mconnect fixcrio
tcpserver tcpcat tcp-environ
tcpclient
who@

Source Code:

ucspi-tcp6's source files are provided via Doxygen documentation.

How to install ucspi-tcp6

Prior of installing ucspi-tcp6-1.10 you need to install fehQlibs. Please follow instructions here.

ucspi-tcp6 uses D.J. Bernstein's /package conventions for installation. Typically, un-tar the archive under /package, change to host/ucspi-tcp6-<version> and call package/install.
ucspi-tcp6 is pre-packaged to suite the AMD64 environment and comes with additional man-pages.

Internals

Main modification in ucspi-tcp6 is the enhanced format for tcpserver's rules.cdb. It supports now:

Note for MacOS X User

ucspi-tcp6 will compile with clang in case xcode is installed.

You need (perhaps) to adjust conf-cc and conf-ld in ucspi-tcp6's main directory.

MacOS X relocated the standard now to be part of the xcode SDK. The following include solved the situation under MacOS X 'El Capitan' in my case for conf-cc:

clang -O2 -g -Wall -I /Developer/SDKs/MacOSX10.6.sdk/usr/include

You can add that statement into the conf-cc file prior of compilation.

Note for OmniOS installation

ucspi-tcp6 starting with version 1.05 will compile under OmniOS. It has been tested with SunOS omni 5.11 and GCC 5.1.

Two tweaks are required:

  1. Link gcc to /usr/bin/cc
  2. Use conf-ld without the '-m64' argument.

Note for RasPi/Raspian Linux

ucspi-tcp6 supports Raspian Linux and the ARM architecture out-of-the box.

Some samples are provided in the conf-cc and conf-ld file how to improve performance depending on the supporting HW architecture. See gcc ARM options for a comprehensive compilation of possibilities.

Within the src directory of ucspi-tcp6 use

sh ./find-systype.sh

to display the recognized SW and HW architecture.