diff options
author | Stefan Metzmacher <metze@samba.org> | 2014-07-30 08:01:11 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2014-08-26 09:13:06 +0200 |
commit | 99d5a5ead4f33723c25e8716a79d34b53822521e (patch) | |
tree | 786a2d79314a7cf25f6b38f90d9c3bcad90b1e4f /source4/dns_server | |
parent | d0f424a23dc915d9fce625438d2bd63519757cba (diff) | |
download | samba-99d5a5ead4f33723c25e8716a79d34b53822521e.tar.gz samba-99d5a5ead4f33723c25e8716a79d34b53822521e.tar.xz samba-99d5a5ead4f33723c25e8716a79d34b53822521e.zip |
s4:dns_server: split out a private 'dnsserver_common' library
This will contain common code for the internal dns server, the dlz_bind9 module
and the rpc dns management server.
Bug: https://bugzilla.samba.org/show_bug.cgi?id=10749
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'source4/dns_server')
-rw-r--r-- | source4/dns_server/dns_server.h | 4 | ||||
-rw-r--r-- | source4/dns_server/dns_utils.c | 33 | ||||
-rw-r--r-- | source4/dns_server/dnsserver_common.c | 68 | ||||
-rw-r--r-- | source4/dns_server/dnsserver_common.h | 28 | ||||
-rw-r--r-- | source4/dns_server/wscript_build | 8 |
5 files changed, 105 insertions, 36 deletions
diff --git a/source4/dns_server/dns_server.h b/source4/dns_server/dns_server.h index efe4db822f..24596161b7 100644 --- a/source4/dns_server/dns_server.h +++ b/source4/dns_server/dns_server.h @@ -86,7 +86,6 @@ WERROR dns_server_process_update(struct dns_server *dns, struct dns_res_rec **updates, uint16_t *update_count, struct dns_res_rec **additional, uint16_t *arcount); -uint8_t werr_to_dns_err(WERROR werror); bool dns_name_match(const char *zone, const char *name, size_t *host_part_len); bool dns_name_equal(const char *name1, const char *name2); bool dns_records_match(struct dnsp_DnssrvRpcRecord *rec1, @@ -124,5 +123,6 @@ WERROR dns_sign_tsig(struct dns_server *dns, struct dns_name_packet *packet, uint16_t error); -#define DNS_ERR(err_str) WERR_DNS_ERROR_RCODE_##err_str +#include "source4/dns_server/dnsserver_common.h" + #endif /* __DNS_SERVER_H__ */ diff --git a/source4/dns_server/dns_utils.c b/source4/dns_server/dns_utils.c index 14ca2f4173..461e58d1ad 100644 --- a/source4/dns_server/dns_utils.c +++ b/source4/dns_server/dns_utils.c @@ -33,39 +33,6 @@ #undef DBGC_CLASS #define DBGC_CLASS DBGC_DNS -uint8_t werr_to_dns_err(WERROR werr) -{ - if (W_ERROR_EQUAL(WERR_OK, werr)) { - return DNS_RCODE_OK; - } else if (W_ERROR_EQUAL(DNS_ERR(FORMAT_ERROR), werr)) { - return DNS_RCODE_FORMERR; - } else if (W_ERROR_EQUAL(DNS_ERR(SERVER_FAILURE), werr)) { - return DNS_RCODE_SERVFAIL; - } else if (W_ERROR_EQUAL(DNS_ERR(NAME_ERROR), werr)) { - return DNS_RCODE_NXDOMAIN; - } else if (W_ERROR_EQUAL(WERR_DNS_ERROR_NAME_DOES_NOT_EXIST, werr)) { - return DNS_RCODE_NXDOMAIN; - } else if (W_ERROR_EQUAL(DNS_ERR(NOT_IMPLEMENTED), werr)) { - return DNS_RCODE_NOTIMP; - } else if (W_ERROR_EQUAL(DNS_ERR(REFUSED), werr)) { - return DNS_RCODE_REFUSED; - } else if (W_ERROR_EQUAL(DNS_ERR(YXDOMAIN), werr)) { - return DNS_RCODE_YXDOMAIN; - } else if (W_ERROR_EQUAL(DNS_ERR(YXRRSET), werr)) { - return DNS_RCODE_YXRRSET; - } else if (W_ERROR_EQUAL(DNS_ERR(NXRRSET), werr)) { - return DNS_RCODE_NXRRSET; - } else if (W_ERROR_EQUAL(DNS_ERR(NOTAUTH), werr)) { - return DNS_RCODE_NOTAUTH; - } else if (W_ERROR_EQUAL(DNS_ERR(NOTZONE), werr)) { - return DNS_RCODE_NOTZONE; - } else if (W_ERROR_EQUAL(DNS_ERR(BADKEY), werr)) { - return DNS_RCODE_BADKEY; - } - DEBUG(5, ("No mapping exists for %s\n", win_errstr(werr))); - return DNS_RCODE_SERVFAIL; -} - bool dns_name_match(const char *zone, const char *name, size_t *host_part_len) { size_t zl = strlen(zone); diff --git a/source4/dns_server/dnsserver_common.c b/source4/dns_server/dnsserver_common.c new file mode 100644 index 0000000000..997ce03450 --- /dev/null +++ b/source4/dns_server/dnsserver_common.c @@ -0,0 +1,68 @@ +/* + Unix SMB/CIFS implementation. + + DNS server utils + + Copyright (C) 2010 Kai Blin + Copyright (C) 2014 Stefan Metzmacher + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include "includes.h" +#include "libcli/util/ntstatus.h" +#include "libcli/util/werror.h" +#include "librpc/ndr/libndr.h" +#include "librpc/gen_ndr/ndr_dns.h" +#include "librpc/gen_ndr/ndr_dnsp.h" +#include <ldb.h> +#include "dsdb/samdb/samdb.h" +#include "dsdb/common/util.h" +#include "dns_server/dnsserver_common.h" + +#undef DBGC_CLASS +#define DBGC_CLASS DBGC_DNS + +uint8_t werr_to_dns_err(WERROR werr) +{ + if (W_ERROR_EQUAL(WERR_OK, werr)) { + return DNS_RCODE_OK; + } else if (W_ERROR_EQUAL(DNS_ERR(FORMAT_ERROR), werr)) { + return DNS_RCODE_FORMERR; + } else if (W_ERROR_EQUAL(DNS_ERR(SERVER_FAILURE), werr)) { + return DNS_RCODE_SERVFAIL; + } else if (W_ERROR_EQUAL(DNS_ERR(NAME_ERROR), werr)) { + return DNS_RCODE_NXDOMAIN; + } else if (W_ERROR_EQUAL(WERR_DNS_ERROR_NAME_DOES_NOT_EXIST, werr)) { + return DNS_RCODE_NXDOMAIN; + } else if (W_ERROR_EQUAL(DNS_ERR(NOT_IMPLEMENTED), werr)) { + return DNS_RCODE_NOTIMP; + } else if (W_ERROR_EQUAL(DNS_ERR(REFUSED), werr)) { + return DNS_RCODE_REFUSED; + } else if (W_ERROR_EQUAL(DNS_ERR(YXDOMAIN), werr)) { + return DNS_RCODE_YXDOMAIN; + } else if (W_ERROR_EQUAL(DNS_ERR(YXRRSET), werr)) { + return DNS_RCODE_YXRRSET; + } else if (W_ERROR_EQUAL(DNS_ERR(NXRRSET), werr)) { + return DNS_RCODE_NXRRSET; + } else if (W_ERROR_EQUAL(DNS_ERR(NOTAUTH), werr)) { + return DNS_RCODE_NOTAUTH; + } else if (W_ERROR_EQUAL(DNS_ERR(NOTZONE), werr)) { + return DNS_RCODE_NOTZONE; + } else if (W_ERROR_EQUAL(DNS_ERR(BADKEY), werr)) { + return DNS_RCODE_BADKEY; + } + DEBUG(5, ("No mapping exists for %s\n", win_errstr(werr))); + return DNS_RCODE_SERVFAIL; +} diff --git a/source4/dns_server/dnsserver_common.h b/source4/dns_server/dnsserver_common.h new file mode 100644 index 0000000000..41febe28d3 --- /dev/null +++ b/source4/dns_server/dnsserver_common.h @@ -0,0 +1,28 @@ +/* + Unix SMB/CIFS implementation. + + DNS server utils + + Copyright (C) 2014 Stefan Metzmacher + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef __DNSSERVER_COMMON_H__ +#define __DNSSERVER_COMMON_H__ + +uint8_t werr_to_dns_err(WERROR werr); +#define DNS_ERR(err_str) WERR_DNS_ERROR_RCODE_##err_str + +#endif /* __DNSSERVER_COMMON_H__ */ diff --git a/source4/dns_server/wscript_build b/source4/dns_server/wscript_build index 280f8de49c..66e6b7224d 100644 --- a/source4/dns_server/wscript_build +++ b/source4/dns_server/wscript_build @@ -1,10 +1,16 @@ #!/usr/bin/env python +bld.SAMBA_LIBRARY('dnsserver_common', + source='dnsserver_common.c', + deps='samba-util errors ldbsamba clidns', + private_library=True, + ) + bld.SAMBA_MODULE('service_dns', source='dns_server.c dns_query.c dns_update.c dns_utils.c dns_crypto.c', subsystem='service', init_function='server_service_dns_init', - deps='samba-hostconfig LIBTSOCKET LIBSAMBA_TSOCKET ldbsamba clidns gensec auth samba_server_gensec', + deps='samba-hostconfig LIBTSOCKET LIBSAMBA_TSOCKET ldbsamba clidns gensec auth samba_server_gensec dnsserver_common', local_include=False, internal_module=False, enabled=bld.AD_DC_BUILD_IS_ENABLED() |