mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-30 14:07:59 +00:00
Add dns_master_dumpnode, dns_master_dumpnodetostream, and
dns_master_style_explicitttl.
This commit is contained in:
parent
83e6eb0dfe
commit
19f4d25fd5
@ -15,7 +15,7 @@
|
|||||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: masterdump.h,v 1.12 2000/08/01 01:24:20 tale Exp $ */
|
/* $Id: masterdump.h,v 1.13 2000/08/03 19:50:11 bwelling Exp $ */
|
||||||
|
|
||||||
#ifndef DNS_MASTERDUMP_H
|
#ifndef DNS_MASTERDUMP_H
|
||||||
#define DNS_MASTERDUMP_H 1
|
#define DNS_MASTERDUMP_H 1
|
||||||
@ -53,6 +53,7 @@ ISC_LANG_BEGINDECLS
|
|||||||
* The default masterfile style.
|
* The default masterfile style.
|
||||||
*/
|
*/
|
||||||
extern const dns_master_style_t dns_master_style_default;
|
extern const dns_master_style_t dns_master_style_default;
|
||||||
|
extern const dns_master_style_t dns_master_style_explicitttl;
|
||||||
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
@ -95,6 +96,18 @@ dns_master_dump(isc_mem_t *mctx, dns_db_t *db,
|
|||||||
* Any dns_rdata_totext() error code.
|
* Any dns_rdata_totext() error code.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
isc_result_t
|
||||||
|
dns_master_dumpnodetostream(isc_mem_t *mctx, dns_db_t *db,
|
||||||
|
dns_dbversion_t *version,
|
||||||
|
dns_dbnode_t *node, dns_name_t *name,
|
||||||
|
const dns_master_style_t *style,
|
||||||
|
FILE *f);
|
||||||
|
|
||||||
|
isc_result_t
|
||||||
|
dns_master_dumpnode(isc_mem_t *mctx, dns_db_t *db, dns_dbversion_t *version,
|
||||||
|
dns_dbnode_t *node, dns_name_t *name,
|
||||||
|
const dns_master_style_t *style, const char *filename);
|
||||||
|
|
||||||
ISC_LANG_ENDDECLS
|
ISC_LANG_ENDDECLS
|
||||||
|
|
||||||
#endif /* DNS_MASTERDUMP_H */
|
#endif /* DNS_MASTERDUMP_H */
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: masterdump.c,v 1.29 2000/08/01 01:22:31 tale Exp $ */
|
/* $Id: masterdump.c,v 1.30 2000/08/03 19:50:12 bwelling Exp $ */
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
@ -136,6 +136,21 @@ dns_master_style_default = {
|
|||||||
DNS_STYLEFLAG_TTL |
|
DNS_STYLEFLAG_TTL |
|
||||||
DNS_STYLEFLAG_COMMENT |
|
DNS_STYLEFLAG_COMMENT |
|
||||||
DNS_STYLEFLAG_MULTILINE,
|
DNS_STYLEFLAG_MULTILINE,
|
||||||
|
24, 32, 32, 40, 80, 8
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A master file style that prints TTL values on each record line,
|
||||||
|
* never using $TTL statements.
|
||||||
|
*/
|
||||||
|
const dns_master_style_t
|
||||||
|
dns_master_style_explicitttl = {
|
||||||
|
DNS_STYLEFLAG_OMIT_OWNER |
|
||||||
|
DNS_STYLEFLAG_OMIT_CLASS |
|
||||||
|
DNS_STYLEFLAG_REL_OWNER |
|
||||||
|
DNS_STYLEFLAG_REL_DATA |
|
||||||
|
DNS_STYLEFLAG_COMMENT |
|
||||||
|
DNS_STYLEFLAG_MULTILINE,
|
||||||
24, 24, 24, 32, 80, 8
|
24, 24, 24, 32, 80, 8
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -812,3 +827,82 @@ dns_master_dump(isc_mem_t *mctx, dns_db_t *db, dns_dbversion_t *version,
|
|||||||
|
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Dump a database node into a master file.
|
||||||
|
*/
|
||||||
|
isc_result_t
|
||||||
|
dns_master_dumpnodetostream(isc_mem_t *mctx, dns_db_t *db,
|
||||||
|
dns_dbversion_t *version,
|
||||||
|
dns_dbnode_t *node, dns_name_t *name,
|
||||||
|
const dns_master_style_t *style,
|
||||||
|
FILE *f)
|
||||||
|
{
|
||||||
|
isc_result_t result;
|
||||||
|
isc_buffer_t buffer;
|
||||||
|
char *bufmem;
|
||||||
|
isc_stdtime_t now;
|
||||||
|
dns_totext_ctx_t ctx;
|
||||||
|
dns_rdatasetiter_t *rdsiter = NULL;
|
||||||
|
|
||||||
|
result = totext_ctx_init(style, &ctx);
|
||||||
|
if (result != ISC_R_SUCCESS) {
|
||||||
|
UNEXPECTED_ERROR(__FILE__, __LINE__,
|
||||||
|
"could not set master file style");
|
||||||
|
return (ISC_R_UNEXPECTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
isc_stdtime_get(&now);
|
||||||
|
|
||||||
|
bufmem = isc_mem_get(mctx, initial_buffer_length);
|
||||||
|
if (bufmem == NULL)
|
||||||
|
return (ISC_R_NOMEMORY);
|
||||||
|
|
||||||
|
isc_buffer_init(&buffer, bufmem, initial_buffer_length);
|
||||||
|
|
||||||
|
result = dns_db_allrdatasets(db, node, version, now, &rdsiter);
|
||||||
|
if (result != ISC_R_SUCCESS)
|
||||||
|
goto failure;
|
||||||
|
result = dump_rdatasets(mctx, name, rdsiter, &ctx, &buffer, f);
|
||||||
|
if (result != ISC_R_SUCCESS)
|
||||||
|
goto failure;
|
||||||
|
dns_rdatasetiter_destroy(&rdsiter);
|
||||||
|
|
||||||
|
result = ISC_R_SUCCESS;
|
||||||
|
|
||||||
|
failure:
|
||||||
|
isc_mem_put(mctx, buffer.base, buffer.length);
|
||||||
|
return (result);
|
||||||
|
}
|
||||||
|
|
||||||
|
isc_result_t
|
||||||
|
dns_master_dumpnode(isc_mem_t *mctx, dns_db_t *db, dns_dbversion_t *version,
|
||||||
|
dns_dbnode_t *node, dns_name_t *name,
|
||||||
|
const dns_master_style_t *style, const char *filename)
|
||||||
|
{
|
||||||
|
FILE *f = NULL;
|
||||||
|
isc_result_t result;
|
||||||
|
|
||||||
|
result = isc_stdio_open(filename, "w", &f);
|
||||||
|
if (result != ISC_R_SUCCESS) {
|
||||||
|
isc_log_write(dns_lctx, ISC_LOGCATEGORY_GENERAL,
|
||||||
|
DNS_LOGMODULE_MASTERDUMP, ISC_LOG_ERROR,
|
||||||
|
"dumping node to file: %s: open: %s", filename,
|
||||||
|
isc_result_totext(result));
|
||||||
|
return (ISC_R_UNEXPECTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
result = dns_master_dumpnodetostream(mctx, db, version, node, name,
|
||||||
|
style, f);
|
||||||
|
|
||||||
|
result = isc_stdio_close(f);
|
||||||
|
if (result != ISC_R_SUCCESS) {
|
||||||
|
isc_log_write(dns_lctx, ISC_LOGCATEGORY_GENERAL,
|
||||||
|
DNS_LOGMODULE_MASTERDUMP, ISC_LOG_ERROR,
|
||||||
|
"dumping master file: %s: close: %s", filename,
|
||||||
|
isc_result_totext(result));
|
||||||
|
return (ISC_R_UNEXPECTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (result);
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user