This version changes the command line syntax! You are going to have to
change how you call redir in order to upgrade.
Changes
Convert SRC:PORT and DST:PORT from options to arguments, using
a UNIX syntax that is pretty much standard by now.
Rename -n,--name=STR --> -I,--ident=NAME
Simplify argument parsing, move more data to global variables
Simplify debug() statements, use syslog()
Daemonize by default, like a proper UNIX daemon, unless -n, --foreground is given
Replace perror() and other log messages going to stderr in favor
of syslog() for everything, unless running in foreground, in which
case we use LOG_PERROR for log message output to stderr as well
... unless -s, --syslog is given
Replace -d, --debug with -l, --loglevel=LEVEL to control the
syslog() default log level. The default log level is
LOG_NOTICE
Convert to GNU Configure & Build System. With configure switches like
--disable-ftp, --disable-shaping, and --with-libwrap
Change distribution to use .tar.xz rather than .tar.gz from now on
Convert to Markdown, clean up and simplify README
Remove local versions of getopt() and getopt_long(). All relevant
UNIX distributions should have them by now.
Massive code cleanup and (Linux KNF) coding style fixes
Add Coverity Scan support for Travis-CI runs
Complete rewrite of man page
Overhaul of --help usage help
Refactor to reduce code duplication:
verify_request() for TCP wrapper handling
target_init() for initializing a struct sockaddr_in
target_connect() to handle creating and connecting a target socket
Refactor to harmonize function and variable names
Cleanup redir.c heading and use proper GNU GPL blurb
Make sure to credit all known major contributors in AUTHORS file
Removed redir.lsm file
Fixes
Fix socket leaks found by Coverity Scan
Fix unterminated strings returned by read(), found by Coverity Scan
Fix ordering bug(s) found by Coverity Scan
Fix strcpy() into fixed size buffer found by Coverity Scan
Fix uninitialized struct sockaddr_in, found by Coverity Scan
Check malloc() return value
Do gethostbyname() before every connect(), DNS names may change at
runtime