* SOFTWARE.
*/
-/* $Id: omapiconf.c,v 1.4.2.2 2000/07/12 00:04:20 gson Exp $ */
+/* $Id: omapiconf.c,v 1.4.2.3 2000/07/12 16:37:06 gson Exp $ */
/*
* Principal Author: DCL
for (control = dns_c_ctrllist_head(controls);
control != NULL;
control = dns_c_ctrl_next(control)) {
- if (keydeflist == NULL)
- continue;
-
- if (control->control_type != dns_c_inet_control) {
- /*
- * The only other type coming out of the
- * configuration system is dns_c_unix_control.
- */
- isc_log_write(ns_g_lctx,
- ISC_LOGCATEGORY_GENERAL,
- NS_LOGMODULE_OMAPI,
- ISC_LOG_WARNING,
- "unix control channel type is "
- "not supported");
+ /*
+ * The parser handles BIND 8 configuration file syntax,
+ * so it allows a control_type of dns_c_unix_control,
+ * as well as an inet phrase with no keys{} clause.
+ * However, it already warned that those were
+ * unsupported, so there is no need to do so again.
+ * The keydeflist == NULL case was already warned
+ * about a few lines above.
+ */
+ if (control->control_type != dns_c_inet_control ||
+ keydeflist == NULL || control->keyidlist == NULL)
continue;
- }
isc_sockaddr_format(&control->u.inet_v.addr,
socktext, sizeof(socktext));
- /*
- * XXXDCL confparser.y currently allows the keys clause
- * to be absent, which is pointless. it needs to be
- * required.
- */
- if (control->keyidlist == NULL) {
- isc_log_write(ns_g_lctx,
- ISC_LOGCATEGORY_GENERAL,
- NS_LOGMODULE_OMAPI,
- ISC_LOG_WARNING,
- "missing keys clause for "
- "control channel %s",
- socktext);
- continue;
- }
-
isc_log_write(ns_g_lctx, ISC_LOGCATEGORY_GENERAL,
NS_LOGMODULE_OMAPI, ISC_LOG_DEBUG(9),
"processing control channel %s",
* SOFTWARE.
*/
-/* $Id: confctl.c,v 1.20.2.1 2000/07/11 17:23:14 gson Exp $ */
+/* $Id: confctl.c,v 1.20.2.2 2000/07/12 16:37:08 gson Exp $ */
#include <config.h>
#include <isc/util.h>
#include <dns/confctl.h>
+#include <dns/log.h>
isc_result_t
dns_c_ctrllist_new(isc_mem_t *mem, dns_c_ctrllist_t **newlist) {
return (ISC_R_SUCCESS);
}
-
+
+
+isc_result_t
+dns_c_ctrllist_validate(dns_c_ctrllist_t *cl) {
+ dns_c_ctrl_t *ctl;
+ isc_result_t result = ISC_R_SUCCESS;
+
+ REQUIRE(DNS_C_CONFCTLLIST_VALID(cl));
+
+ ctl = dns_c_ctrllist_head(cl);
+ if (ctl == NULL) {
+ isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG,
+ DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING,
+ "empty control statement");
+ } else {
+ while (result == ISC_R_SUCCESS && ctl != NULL) {
+ result = dns_c_ctrl_validate(ctl);
+ ctl = dns_c_ctrl_next(ctl);
+ }
+ }
+
+ return (result);
+}
+
void
dns_c_ctrllist_print(FILE *fp, int indent, dns_c_ctrllist_t *cl) {
dns_c_ctrl_t *ctl;
return (ISC_R_SUCCESS);
}
+
+isc_result_t
+dns_c_ctrl_validate(dns_c_ctrl_t *ctrl)
+{
+ isc_result_t result = ISC_R_SUCCESS;
+
+ REQUIRE(DNS_C_CONFCTL_VALID(ctrl));
+
+ if (ctrl->control_type == dns_c_unix_control) {
+ isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG,
+ DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING,
+ "type 'unix' control channels are "
+ "not implemented");
+ } else if (ctrl->keyidlist == NULL) {
+ isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG,
+ DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING,
+ "type 'inet' control channel has no 'keys' "
+ "clause; control channel will be disabled");
+ } else if (dns_c_kidlist_keycount(ctrl->keyidlist) == 0) {
+ isc_log_write(dns_lctx,DNS_LOGCATEGORY_CONFIG,
+ DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING,
+ "type 'inet' control channel has no keys; "
+ "control channel will be disabled");
+ }
+
+ return (result);
+}
+
+
+
isc_result_t
dns_c_ctrlinet_new(isc_mem_t *mem, dns_c_ctrl_t **control,
isc_sockaddr_t addr, in_port_t port,
* SOFTWARE.
*/
-/* $Id: confkeys.h,v 1.17 2000/06/22 21:55:22 tale Exp $ */
+/* $Id: confkeys.h,v 1.17.2.1 2000/07/12 16:37:13 gson Exp $ */
#ifndef DNS_CONFKEYS_H
#define DNS_CONFKEYS_H 1
ISC_LANG_BEGINDECLS
-isc_result_t
-dns_c_pklist_new(isc_mem_t *mem, dns_c_pklist_t **pklist);
+isc_result_t dns_c_pklist_new(isc_mem_t *mem, dns_c_pklist_t **pklist);
-isc_result_t
-dns_c_pklist_delete(dns_c_pklist_t **list);
+isc_result_t dns_c_pklist_delete(dns_c_pklist_t **list);
-isc_result_t
-dns_c_pklist_addpubkey(dns_c_pklist_t *list, dns_c_pubkey_t *pkey,
- isc_boolean_t deepcopy);
+isc_result_t dns_c_pklist_addpubkey(dns_c_pklist_t *list, dns_c_pubkey_t *pkey,
+ isc_boolean_t deepcopy);
-isc_result_t
-dns_c_pklist_findpubkey(dns_c_pklist_t *list, dns_c_pubkey_t **pubkey,
- isc_uint32_t flags, isc_uint32_t protocol,
- isc_uint32_t algorithm, const char *key);
+isc_result_t dns_c_pklist_findpubkey(dns_c_pklist_t *list,
+ dns_c_pubkey_t **pubkey,
+ isc_uint32_t flags, isc_uint32_t protocol,
+ isc_uint32_t algorithm, const char *key);
-isc_result_t
-dns_c_pklist_rmpubkey(dns_c_pklist_t *list, isc_uint32_t flags,
- isc_uint32_t protocol, isc_uint32_t algorithm,
- const char *key);
+isc_result_t dns_c_pklist_rmpubkey(dns_c_pklist_t *list, isc_uint32_t flags,
+ isc_uint32_t protocol,
+ isc_uint32_t algorithm, const char *key);
-void
-dns_c_pklist_print(FILE *fp, int indent, dns_c_pklist_t *pubkey);
+void dns_c_pklist_print(FILE *fp, int indent, dns_c_pklist_t *pubkey);
-isc_result_t
-dns_c_pubkey_new(isc_mem_t *mem, isc_uint32_t flags, isc_uint32_t protocol,
- isc_uint32_t algorithm, const char *key,
- dns_c_pubkey_t **pubkey);
+isc_result_t dns_c_pubkey_new(isc_mem_t *mem, isc_uint32_t flags,
+ isc_uint32_t protocol,
+ isc_uint32_t algorithm,
+ const char *key,
+ dns_c_pubkey_t **pubkey);
-isc_result_t
-dns_c_pubkey_delete(dns_c_pubkey_t **pubkey);
+isc_result_t dns_c_pubkey_delete(dns_c_pubkey_t **pubkey);
-isc_result_t
-dns_c_pubkey_copy(isc_mem_t *mem, dns_c_pubkey_t **dest, dns_c_pubkey_t *src);
+isc_result_t dns_c_pubkey_copy(isc_mem_t *mem, dns_c_pubkey_t **dest,
+ dns_c_pubkey_t *src);
-isc_boolean_t
-dns_c_pubkey_equal(dns_c_pubkey_t *k1, dns_c_pubkey_t *k2);
+isc_boolean_t dns_c_pubkey_equal(dns_c_pubkey_t *k1, dns_c_pubkey_t *k2);
-void
-dns_c_pubkey_print(FILE *fp, int indent, dns_c_pubkey_t *pubkey);
+void dns_c_pubkey_print(FILE *fp, int indent, dns_c_pubkey_t *pubkey);
-isc_result_t
-dns_c_kidlist_new(isc_mem_t *mem, dns_c_kidlist_t **list);
+isc_result_t dns_c_kidlist_new(isc_mem_t *mem, dns_c_kidlist_t **list);
-isc_result_t
-dns_c_kidlist_delete(dns_c_kidlist_t **list);
+isc_result_t dns_c_kidlist_delete(dns_c_kidlist_t **list);
-isc_result_t
-dns_c_kidlist_undef(dns_c_kidlist_t *list, const char *keyid);
+isc_uint32_t dns_c_kidlist_keycount(dns_c_kidlist_t *list);
-isc_result_t
-dns_c_kidlist_find(dns_c_kidlist_t *list, const char *keyid,
- dns_c_kid_t **retval);
+
+isc_result_t dns_c_kidlist_undef(dns_c_kidlist_t *list, const char *keyid);
-void
-dns_c_kidlist_append(dns_c_kidlist_t *list, dns_c_kid_t *keyid);
+isc_result_t dns_c_kidlist_find(dns_c_kidlist_t *list, const char *keyid,
+ dns_c_kid_t **retval);
-void
-dns_c_kidlist_print(FILE *fp, int indent, dns_c_kidlist_t *list);
+void dns_c_kidlist_append(dns_c_kidlist_t *list, dns_c_kid_t *keyid);
-isc_result_t
-dns_c_kid_new(isc_mem_t *mem, const char *name, dns_c_kid_t **keyid);
+void dns_c_kidlist_print(FILE *fp, int indent, dns_c_kidlist_t *list);
-isc_result_t
-dns_c_kdeflist_new(isc_mem_t *mem, dns_c_kdeflist_t **list);
+isc_result_t dns_c_kid_new(isc_mem_t *mem, const char *name,
+ dns_c_kid_t **keyid);
-isc_result_t
-dns_c_kdeflist_delete(dns_c_kdeflist_t **list);
+isc_result_t dns_c_kdeflist_new(isc_mem_t *mem, dns_c_kdeflist_t **list);
-isc_result_t
-dns_c_kdeflist_copy(isc_mem_t *mem, dns_c_kdeflist_t **dest,
- dns_c_kdeflist_t *src);
+isc_result_t dns_c_kdeflist_delete(dns_c_kdeflist_t **list);
-isc_result_t
-dns_c_kdeflist_append(dns_c_kdeflist_t *list, dns_c_kdef_t *key,
- isc_boolean_t copy);
+isc_result_t dns_c_kdeflist_copy(isc_mem_t *mem, dns_c_kdeflist_t **dest,
+ dns_c_kdeflist_t *src);
-isc_result_t
-dns_c_kdeflist_undef(dns_c_kdeflist_t *list, const char *keyid);
+isc_result_t dns_c_kdeflist_append(dns_c_kdeflist_t *list, dns_c_kdef_t *key,
+ isc_boolean_t copy);
-isc_result_t
-dns_c_kdeflist_find(dns_c_kdeflist_t *list, const char *keyid,
- dns_c_kdef_t **retval);
+isc_result_t dns_c_kdeflist_undef(dns_c_kdeflist_t *list, const char *keyid);
-void
-dns_c_kdeflist_print(FILE *fp, int indent, dns_c_kdeflist_t *list);
+isc_result_t dns_c_kdeflist_find(dns_c_kdeflist_t *list, const char *keyid,
+ dns_c_kdef_t **retval);
-isc_result_t
-dns_c_kdef_new(isc_mem_t *mem, const char *name, dns_c_kdef_t **keyid);
+void dns_c_kdeflist_print(FILE *fp, int indent, dns_c_kdeflist_t *list);
-isc_result_t
-dns_c_kdef_delete(dns_c_kdef_t **keydef);
+isc_result_t dns_c_kdef_new(isc_mem_t *mem, const char *name,
+ dns_c_kdef_t **keyid);
-isc_result_t
-dns_c_kdef_copy(isc_mem_t *mem, dns_c_kdef_t **dest, dns_c_kdef_t *src);
+isc_result_t dns_c_kdef_delete(dns_c_kdef_t **keydef);
-void
-dns_c_kdef_print(FILE *fp, int indent, dns_c_kdef_t *keydef);
+isc_result_t dns_c_kdef_copy(isc_mem_t *mem, dns_c_kdef_t **dest,
+ dns_c_kdef_t *src);
-isc_result_t
-dns_c_kdef_setalgorithm(dns_c_kdef_t *elem, const char *algorithm);
+void dns_c_kdef_print(FILE *fp, int indent, dns_c_kdef_t *keydef);
-isc_result_t
-dns_c_kdef_setsecret(dns_c_kdef_t *elem, const char *secret);
+isc_result_t dns_c_kdef_setalgorithm(dns_c_kdef_t *elem,
+ const char *algorithm);
-isc_result_t
-dns_c_tkeylist_new(isc_mem_t *mem, dns_c_tkeylist_t **newlist);
+isc_result_t dns_c_kdef_setsecret(dns_c_kdef_t *elem, const char *secret);
-isc_result_t
-dns_c_tkeylist_delete(dns_c_tkeylist_t **list);
+isc_result_t dns_c_tkeylist_new(isc_mem_t *mem, dns_c_tkeylist_t **newlist);
-isc_result_t
-dns_c_tkeylist_copy(isc_mem_t *mem, dns_c_tkeylist_t **dest,
- dns_c_tkeylist_t *src);
+isc_result_t dns_c_tkeylist_delete(dns_c_tkeylist_t **list);
-void
-dns_c_tkeylist_print(FILE *fp, int indent, dns_c_tkeylist_t *list);
+isc_result_t dns_c_tkeylist_copy(isc_mem_t *mem, dns_c_tkeylist_t **dest,
+ dns_c_tkeylist_t *src);
-isc_result_t
-dns_c_tkeylist_append(dns_c_tkeylist_t *list, dns_c_tkey_t *element,
- isc_boolean_t copy);
+void dns_c_tkeylist_print(FILE *fp, int indent, dns_c_tkeylist_t *list);
-isc_result_t
-dns_c_tkey_new(isc_mem_t *mem, const char *domain, isc_uint32_t flags,
- isc_uint32_t protocol, isc_uint32_t algorithm,
- const char *key, dns_c_tkey_t **newkey);
+isc_result_t dns_c_tkeylist_append(dns_c_tkeylist_t *list,
+ dns_c_tkey_t *element,
+ isc_boolean_t copy);
-isc_result_t
-dns_c_tkey_delete(dns_c_tkey_t **tkey);
+isc_result_t dns_c_tkey_new(isc_mem_t *mem, const char *domain,
+ isc_uint32_t flags,
+ isc_uint32_t protocol, isc_uint32_t algorithm,
+ const char *key, dns_c_tkey_t **newkey);
-isc_result_t
-dns_c_tkey_copy(isc_mem_t *mem, dns_c_tkey_t **dest, dns_c_tkey_t *src);
+isc_result_t dns_c_tkey_delete(dns_c_tkey_t **tkey);
-isc_result_t
-dns_c_tkey_getflags(dns_c_tkey_t *tkey, isc_uint32_t *flags);
+isc_result_t dns_c_tkey_copy(isc_mem_t *mem, dns_c_tkey_t **dest,
+ dns_c_tkey_t *src);
-isc_result_t
-dns_c_tkey_getprotocol(dns_c_tkey_t *tkey, isc_uint32_t *protocol);
+isc_result_t dns_c_tkey_getflags(dns_c_tkey_t *tkey, isc_uint32_t *flags);
-isc_result_t
-dns_c_tkey_getalgorithm(dns_c_tkey_t *tkey, isc_uint32_t *algorithm);
+isc_result_t dns_c_tkey_getprotocol(dns_c_tkey_t *tkey,
+ isc_uint32_t *protocol);
-isc_result_t
-dns_c_tkey_getkey(dns_c_tkey_t *tkey, const char **key);
+isc_result_t dns_c_tkey_getalgorithm(dns_c_tkey_t *tkey,
+ isc_uint32_t *algorithm);
-void
-dns_c_tkey_print(FILE *fp, int indent, dns_c_tkey_t *tkey);
+isc_result_t dns_c_tkey_getkey(dns_c_tkey_t *tkey, const char **key);
+
+void dns_c_tkey_print(FILE *fp, int indent, dns_c_tkey_t *tkey);
ISC_LANG_ENDDECLS