dns_server: Put more code in common
[samba.git] / source4 / dns_server / dnsserver_common.h
1 /*
2    Unix SMB/CIFS implementation.
3
4    DNS server utils
5
6    Copyright (C) 2014 Stefan Metzmacher
7
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 3 of the License, or
11    (at your option) any later version.
12
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this program.  If not, see <http://www.gnu.org/licenses/>.
20 */
21
22 #ifndef __DNSSERVER_COMMON_H__
23 #define __DNSSERVER_COMMON_H__
24
25 uint8_t werr_to_dns_err(WERROR werr);
26 #define DNS_ERR(err_str) WERR_DNS_ERROR_RCODE_##err_str
27
28 struct ldb_message_element;
29 struct ldb_context;
30 struct dnsp_DnssrvRpcRecord;
31
32 struct dns_server_zone {
33         struct dns_server_zone *prev, *next;
34         const char *name;
35         struct ldb_dn *dn;
36 };
37
38 WERROR dns_common_extract(const struct ldb_message_element *el,
39                           TALLOC_CTX *mem_ctx,
40                           struct dnsp_DnssrvRpcRecord **records,
41                           uint16_t *num_records);
42
43 WERROR dns_common_lookup(struct ldb_context *samdb,
44                          TALLOC_CTX *mem_ctx,
45                          struct ldb_dn *dn,
46                          struct dnsp_DnssrvRpcRecord **records,
47                          uint16_t *num_records,
48                          bool *tombstoned);
49
50 WERROR dns_common_replace(struct ldb_context *samdb,
51                           TALLOC_CTX *mem_ctx,
52                           struct ldb_dn *dn,
53                           bool needs_add,
54                           uint32_t serial,
55                           struct dnsp_DnssrvRpcRecord *records,
56                           uint16_t rec_count);
57 bool dns_name_match(const char *zone, const char *name, size_t *host_part_len);
58 WERROR dns_common_name2dn(struct ldb_context *samdb,
59                           struct dns_server_zone *zones,
60                           TALLOC_CTX *mem_ctx,
61                           const char *name,
62                           struct ldb_dn **_dn);
63 NTSTATUS dns_common_zones(struct ldb_context *samdb,
64                           TALLOC_CTX *mem_ctx,
65                           struct dns_server_zone **zones_ret);
66 #endif /* __DNSSERVER_COMMON_H__ */