-
-
Notifications
You must be signed in to change notification settings - Fork 21
Drop secondary index #64
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
It's good to know that I've also removed any use of |
b77623f
to
1249487
Compare
2d16c73
to
8361e2c
Compare
I think this is ready to be merged. This fixes a number of issues, the most important one being quotes around fields that must not be quoted are now disallowed. FORMAT.md has been updated to reflect that. Next to that, the secondary index is dropped (the reasoning for which can be found on #30) and the longjmp (originally added in #1) has been dropped too. Scanner performance has been improved significantly and numbers are a little better overall, so that's good. This will be a good base for incrementally improving data-type parsers (an example of which is #65) and adding thus far unsupported record types (SVCB, WKS, etc). For TLD zones, the data will be mostly glue data (NS, DS, RRSIG and NSEC(3)), so data-types used in those fields will benefit us most. Names and RRTYPEs being at the top of the list. I've also resolved the warnings on Windows and enabled the |
Drop secondary indexes to simplify tape operation and disallow placement of quotes around values other than domain names and text. Additionally, no attempt is made to parse symbols for which no symbolic constants have been specified and use of pretty TTL notation, e.g. 1m2s, is only allowed if the pretty_ttl option is enabled. Fixes NLnetLabs#30. Fixes NLnetLabs#31. Fixes NLnetLabs#38. Fixes NLnetLabs#50.
This PR drops the secondary index in favor of slightly more complicated domain name and string parsing, which are the only two data types (for now) that actually benefited from it. It also slows down RRTYPE conversion too (presumably), but there maybe a way to speed that back up again (the hash requires the length, which made sense because we had it freely available, but maybe another algorithm can be implemented that doesn't require it). Overall performance is around 5% better.
More importantly, it is now forbidden to use quotes around values other than domain names and text. The parser in NSD allows for quotes everywhere, which is why it was implemented like that before, but disallowing that is more sane and in line with BIND's behavior.
Use of
1h2m3s
notation for TTLs, which is an NSD extension, is now only supported ifpretty_ttls
is enabled.There's other changes too. Note that this is still a draft because the code needs to be cleaned up a little. I focused on getting something fast because many mechanics are updated that may be important for the work done on #23.