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.
Sources
History
ucspi-tcp6 is a fork of Dan Bernsteins's ucspi-tcp 0.88 version, including:
- rblsmtpd Greetdelay add-on and removal of the compiled-in default-RBL,
- Felix von Leitner's's IPv6 patch ucspi-tcp-0.88-ipv6.diff19.bz2,
- Jens Wehrenbrecht's IPv4 CIDR extension, and
- Li Minh Bui's IPv6 support for compactified IPv6 addresses and CIDR notation support.
- Version 0.97 of ucspi-tcp6 provides a native understanding of IPv4-mapped IPv6 addresses and supports the inverse IPv6 nibble format for rblsmtpd RBL and anti-RBL lookups.
- Interrogation mode is working now (option changed from '-I' to '-i').
- Greetdelay option reworked.
- Version 0.98: RBLSMTPD interrogation information is promoted now to the client; e.g. qmail-smtpd.
- Version 0.99: Added environment variables TCP6REMOTEIP, TCP6REMOTEPORT, TCP6REMOTEHOST; unified helper scripts for IPv4 and IPv6 operations.
- Version 0.99a: Fixed wrong command path in scripts (date@ ...); included description of TCP6* envrionment variables in man tcp-environ.
- Version 0.99.1: Fixed wrong hostname termination and thus wrong DNS lookup (for mainly tcpclient).
Fixed wrong interface index parameter propagation (for tcpserver). - Version 1.00: Final release. Fixed bug in tcpserver with core dump evaluating IPv4 addresses in the cdb running in the AMD64 environment (tx. John Levine). Fixed serveral flaws for AMD64 architecture.
How to install ucspi-tcp6
ucspi-tcp6 uses D.J. Bernstein's /package conventions for installation.
Typically, un-tar the archive under /package, change to net/ucspi-tcp6-<version>
and call package/install.
ucspi-tcp6 is pre-packaged to suite the AMD64 environment
and comes with additional man-pages.
Description of the main programs
Servers:
Clients:
Creating the rules cdb:
Internals
Main modification in ucspi-tcp6 is the enhanced format for tcpserver's rules.cdb. It supports now:
- Compactified IPv6 host addresses in the format:
- fe80::a:b:cd:1234
- Classless IPv4/IPv6 net addresses declared in the common CIDR /prefix
notation:
- 127.0/8:allow
- fe80::/64:allow
- Evaluation of the CIDR addresses considers the longest matching prefix.
Thus, you can specify:
- 2001:a::/48:deny
- 2001:a:b:c::/64:allow
Note for BSD/MacOS X User
ucspi-tcp6 will compile with clang.
You need to adjust src/conf-cc and src/conf-ld.