FreeRADIUS/pam_radius — pull request #5 by alancarwile (2013-05-20 17:45:36+00:00)
Title: IPv6 Support

-------------------------
The notes below describe what was done in getting pam_radius_auth.so to the point of supporting IPv6.
In addition to adding IPv6 support, a TRACE facility was added, hardtab/whitespace was cleaned up, and
some bug fixes were made.

Following is a rough breakdown of the changes:
- Began with 1.3.17 from tar.gz, which did not include a few changes in the github repo.
o Those changes were applied at the end of the project (see below).
- Removed hard tab characters using vim's :se ts=8 and :se ts=4 and :1,.retab in sections
o Did not realign all text to use same indent rules. Just removed hard tabs.
- Code changes to reach a first snapshot of IPv6 support:
o Can now handle radius server names that resolve to IPv6 (or IPv4)
o Can still of course handle IPv4 addresses
o Does not yet handle IPv6 addresses completely due to bracket parsing work to be completed
o Replaced IPv4-only gethostbyname calls with getaddrinfo calls
o Switched from sockaddr/sockaddr_in IPv4-only to generic sockaddr_storage which handles IPv4/IPv6
o Set IPV6_V6ONLY to off, allowing one IPv6 socket to handle IPv6 and IPv4 communication.
o Commented out no-longer needed IPv4-only validation code (comments in source for this change).
o Added TRACEPRINT to aid with development, debugging, and learning how pam_radius_auth works.
- Near final snapshot:
o Implemented bracket handling etc. to support []:port form where :port is still optional.
o IPv6 address can be abbreviated forms, such as [fdca:1:2:3::4]:1812
o Improved debug output around port lookup to prevent some failures on odd input in server config file
o Modify Makefile to build normal shared library and a trace version using -DTRACEON
o Add comments in less obvious parts of code especially where I made changes.
- Merged in changes from latest github master version of this project, current as of 5/19/2013.
- Trace version of library:
o Modified the Makefile to build a second library, pam_radius_auth_trace.so with tracing enabled.
* The trace version can be renamed at runtime to give more debug/trace output if needed.
- Testing:
o Tested with names, IPv6 addresses, and IPv4 addresses against freeradius 2.2
o Tested with names, IPv6 addresses, and IPv4 addresses against Windows 2008 NPS
o Tested with names and IPv4 addresses against freeradius 2.1 and Windows 2003 IAS
* freeradius 2.1 and Windows 2003 IAS do not support IPv6.
- Contact info: alan.d.carwile@gmail.com AC Network Software
alan.carwile@hds.com Hitachi Data Systems
- Credit also to Kentaro Aoki, whose code changes were referenced and helpful along the way.
o http://code.google.com/p/pam-radius-ipv6/