s4 dns: Check smb.conf if we should allow recursion
authorKai Blin <kai@samba.org>
Tue, 27 Mar 2012 12:42:15 +0000 (14:42 +0200)
committerKai Blin <kai@samba.org>
Tue, 27 Mar 2012 14:03:16 +0000 (16:03 +0200)
lib/param/loadparm.c
source4/dns_server/dns_server.c

index bb59a79d0ccdae76b7055715d3ef3878018e72a0..e3792b61950ded78e7e8b79cd56585ea00db3bec 100644 (file)
@@ -1256,6 +1256,22 @@ static struct parm_struct parm_table[] = {
                .special        = NULL,
                .enum_list      = enum_dns_update_settings
        },
+       {
+               .label          = "dns forwarder",
+               .type           = P_STRING,
+               .p_class        = P_GLOBAL,
+               .offset         = GLOBAL_VAR(dns_forwarder),
+               .special        = NULL,
+               .enum_list      = NULL
+       },
+       {
+               .label          = "dns recursive queries",
+               .type           = P_BOOL,
+               .p_class        = P_GLOBAL,
+               .offset         = GLOBAL_VAR(dns_recursive_queries),
+               .special        = NULL,
+               .enum_list      = NULL
+       },
 
        {NULL,  P_BOOL,  P_NONE,  0,  NULL,  NULL,  0}
 };
@@ -1536,7 +1552,10 @@ FN_GLOBAL_INTEGER(srv_minprotocol, srv_minprotocol)
 FN_GLOBAL_INTEGER(cli_maxprotocol, cli_maxprotocol)
 FN_GLOBAL_INTEGER(cli_minprotocol, cli_minprotocol)
 FN_GLOBAL_BOOL(paranoid_server_security, paranoid_server_security)
+
 FN_GLOBAL_INTEGER(allow_dns_updates, allow_dns_updates)
+FN_GLOBAL_CONST_STRING(dns_forwarder, dns_forwarder)
+FN_GLOBAL_BOOL(dns_recursive_queries, dns_recursive_queries)
 
 FN_GLOBAL_INTEGER(server_signing, server_signing)
 FN_GLOBAL_INTEGER(client_signing, client_signing)
@@ -3403,6 +3422,8 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx)
        lpcfg_do_global_parameter(lp_ctx, "nsupdate command", "/usr/bin/nsupdate -g");
 
         lpcfg_do_global_parameter(lp_ctx, "allow dns updates", "False");
+        lpcfg_do_global_parameter(lp_ctx, "dns recursive queries", "False");
+        lpcfg_do_global_parameter(lp_ctx, "dns forwarder", "");
 
        for (i = 0; parm_table[i].label; i++) {
                if (!(lp_ctx->flags[i] & FLAG_CMDLINE)) {
index 9e88bd9ebf1b7a9f53321e65c267f7503799a2d4..789940ff94a966163ceee8f8c528f034b96ecbd4 100644 (file)
@@ -139,8 +139,9 @@ static NTSTATUS dns_process(struct dns_server *dns,
        *out_packet = *in_packet;
        state->flags |= in_packet->operation | DNS_FLAG_REPLY;
 
-       /* TODO: Allow setting the forwarding in smb.conf or the like */
-       state->flags |= DNS_FLAG_RECURSION_AVAIL;
+       if (lpcfg_dns_recursive_queries(dns->task->lp_ctx)) {
+               state->flags |= DNS_FLAG_RECURSION_AVAIL;
+       }
 
        switch (in_packet->operation & DNS_OPCODE) {
        case DNS_OPCODE_QUERY: