Update repub branch u/fanf2/patch to rebasing branch u/fanf2/rebasing revision v9_15_...
[ipreg/bind9.git] / bin / dnssec / dnssectool.h
1 /*
2 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
3 *
4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 *
8 * See the COPYRIGHT file distributed with this work for additional
9 * information regarding copyright ownership.
10 */
11
12
13 #ifndef DNSSECTOOL_H
14 #define DNSSECTOOL_H 1
15
16 #include <inttypes.h>
17 #include <stdbool.h>
18
19 #include <isc/log.h>
20 #include <isc/stdtime.h>
21 #include <dns/rdatastruct.h>
22 #include <dst/dst.h>
23
24 #ifndef PATH_MAX
25 #define PATH_MAX 1024 /* WIN32, and others don't define this. */
26 #endif
27
28 /*! verbosity: set by -v option in each program, defined in dnssectool.c */
29 extern int verbose;
30
31 /*! program name, statically initialized in each program */
32 extern const char *program;
33
34 /*!
35 * List of DS digest types used by dnssec-cds and dnssec-dsfromkey,
36 * defined in dnssectool.c. Filled in by add_dtype() from -a
37 * arguments, sorted (so that DS records are in a canonical order) and
38 * terminated by a zero. The size of the array is an arbitrary limit
39 * which should be greater than the number of known digest types.
40 */
41 extern uint8_t dtype[8];
42
43 typedef void (fatalcallback_t)(void);
44
45 ISC_PLATFORM_NORETURN_PRE void
46 fatal(const char *format, ...)
47 ISC_FORMAT_PRINTF(1, 2) ISC_PLATFORM_NORETURN_POST;
48
49 void
50 setfatalcallback(fatalcallback_t *callback);
51
52 void
53 check_result(isc_result_t result, const char *message);
54
55 void
56 vbprintf(int level, const char *fmt, ...) ISC_FORMAT_PRINTF(2, 3);
57
58 ISC_PLATFORM_NORETURN_PRE void
59 version(const char *program) ISC_PLATFORM_NORETURN_POST;
60
61 void
62 sig_format(dns_rdata_rrsig_t *sig, char *cp, unsigned int size);
63 #define SIG_FORMATSIZE (DNS_NAME_FORMATSIZE + DNS_SECALG_FORMATSIZE + sizeof("65535"))
64
65 void
66 setup_logging(isc_mem_t *mctx, isc_log_t **logp);
67
68 void
69 cleanup_logging(isc_log_t **logp);
70
71 dns_ttl_t strtottl(const char *str);
72
73 isc_stdtime_t
74 strtotime(const char *str, int64_t now, int64_t base,
75 bool *setp);
76
77 dns_rdataclass_t
78 strtoclass(const char *str);
79
80 unsigned int
81 strtodsdigest(const char *str);
82
83 void
84 add_dtype(unsigned int dt);
85
86 isc_result_t
87 try_dir(const char *dirname);
88
89 void
90 check_keyversion(dst_key_t *key, char *keystr);
91
92 void
93 set_keyversion(dst_key_t *key);
94
95 bool
96 key_collision(dst_key_t *key, dns_name_t *name, const char *dir,
97 isc_mem_t *mctx, bool *exact);
98
99 bool
100 isoptarg(const char *arg, char **argv, void (*usage)(void));
101
102 #ifdef _WIN32
103 void InitSockets(void);
104 void DestroySockets(void);
105 #endif
106
107 #endif /* DNSSEC_DNSSECTOOL_H */