NSD ACL Plugin
Colm MacCarthaigh
colm.maccarthaigh at heanet.ie
Thu Jul 17 11:24:13 UTC 2003
On Thu, Jul 17, 2003 at 11:48:30AM +0200, Erik Rozendaal wrote:
> 0. I modified example-plugin.so to include the following lines in the
> reload function:
>
> void *key;
> void *data;
>
> HEAP_WALK(nsd->nsd->db->heap, key, data) {
> fprintf(stderr, "name %s\n", dnamestr(key));
> }
>
> This also resulted in an infinite loop that was hard to debug.
>
> Then I made the following changes to make things easier to debug:
>
> 1. Add the RTLD_GLOBAL flag to the call to dlopen in plugin.c "handle =
> dlopen(name, RTLD_NOW | RTLD_GLOBAL)".
> 2. Configure with LDFLAGS='-rdynamic' to make global symbols in nsd
> available to the plugins.
> 3. Do _not_ link rbtree.o into the plugin.
>
> But now the HEAP_WALK works. Although I don't know why :( But hopefully
> this will help you anyway.
It does, any chance of making those the defaults for 1.2.2 ? The
"why" of it seems to be the RBTREE_NULL macro which expands to a
pointer to an rbnode_t. The two compiles produce differing
addresses for this node, so the code never matches.
> I'm planning to change the name lookup algorithm for NSD 1.3.0 and that
> should make it much easier to walk over a set of domain names given a
> parent domain name. But until then this is your best bet.
I'm getting somewhere now :)
--
Colm MacCárthaigh / HEAnet, Teach Brooklawn, / Innealtóir Ghréasáin
+353 1 6609040 / Bóthar Shelbourne, BÁC, IE / http://www.hea.net/
More information about the nsd-users
mailing list