This is a discussion on Re: api level docs? within the Bind Users forums, part of the DNS and Related Forums category; > I'm almost there ... it's not that hard. All I need to figure out now > is how ...
|
|||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|||
|
> I'm almost there ... it's not that hard. All I need to figure out now
> is how to remove a resource definition while I'm iterating. There is > a handy library function called 'dns_db_dump()' that will let me write > the filtered db back out to disk. In the end I had to use the routines invoked by the DDNS side of BIND to edit out the resource records that I determine to be internal. In particular I had to use the stuff from diff.h/.c (dns_diff_init, dns_difftuple_create, dns_diff_append, dns_diff_apply). I was trying to manipulate the rbt tree directly, but the code that manages rdata structs is just not pretty (or is, perhaps, very pretty, as in the same prettiness as a wasp. Fiddle with the wrong thing in there and you're going to get 'stung'). I thought I might have trouble removing records as I iterate, but the iterators seem to remain valid even though the 'current' record has been removed. If this does end up being a problem I will just collect my diffs as I iterate and then apply one large diff after processing the zone file. |