It's still a sane library for decoding DNS packets, but now it's a sane library for encoding as well

It's software update day here at Chez Boca. In addition to an updated mod_blog [1], there's also an updated SPCDNS [2]—version 2.0.0!

It only took about ten years [3] (and about four years after it was first requested [4]) but the library now supports full encoding of 30 DNS (Domain Name System) records. The reason I didn't include such support intially is that the encoding of DNS domain names in the records is not straightforward. It uses a scheme to compress the data such that it's easy to parse, but not so easy to encode without allocating memory which is something I wanted to avoid. A result is that there is a hardcoded limit to the number of domain names that can be encoded, but just how many domain names is … hard to say due to the compression scheme. And because of this, the encoding routine does use a bit more memory than it previously did.

That, and an API (Application Programming Interface) change with the Lua wrapper (returning an integer error number instead of a string error message) is why I decided to make this a 2.0.0 release. Users at the C level shouldn't see any change though.

[1] /boston/2021/07/05.1

[2] https://github.com/spc476/SPCDNS

[3] /boston/2010/12/06.1

[4] https://github.com/spc476/SPCDNS/pull/2

Gemini Mention this post

Contact the author