ACME Updates

12feb2015 All The Milters

I updated all my "milter" mail filtering plugins for ACME's new OS:

The changes include conforming to the current milter API, updating the FreeBSD rc.conf startup scripts to modern standards, and a new data structure for storing IP addresses that handles IPv6.

The new data structure is actually pretty interestng. The previous version was a four-dimensional sparse array - four because IPv4 addresses have four octets. Netmasks were handled by special pointer values. Expanding that to handle IPv6's 16 octets would have meant a fourfold increase in code complexity. Instead I re-wrote it as a hash table. Handling netmasks / prefixes in a hash table was not simple, and handling prefix lengths that are not a multiple of 8 bits was an additional complication. But I managed it and it all seems to work perfectly.

Back to ACME Updates.