]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
pullup: warnings about 'controls' statement moved from omapi code
authorAndreas Gustafsson <source@isc.org>
Wed, 12 Jul 2000 16:37:13 +0000 (16:37 +0000)
committerAndreas Gustafsson <source@isc.org>
Wed, 12 Jul 2000 16:37:13 +0000 (16:37 +0000)
to named.conf handling code and rephrased

bin/named/omapiconf.c
lib/dns/config/confctl.c
lib/dns/config/confctx.c
lib/dns/config/confkeys.c
lib/dns/include/dns/confctl.h
lib/dns/include/dns/confkeys.h

index 8a8978527a0e720751cf5ba315b02dfd2fa1ec59..b3e293889d495b86476372ca9112c3681495933d 100644 (file)
@@ -15,7 +15,7 @@
  * 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
@@ -443,42 +443,22 @@ ns_omapi_configure(isc_mem_t *mctx, dns_c_ctx_t *cctx,
                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",
index 8ac08edc372d771722eeadddc0ca693c5f658144..aeacb5c659d111bdecb1dd44e6d939c69996db8c 100644 (file)
@@ -15,7 +15,7 @@
  * 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>
 
@@ -23,6 +23,7 @@
 #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) {
@@ -46,7 +47,30 @@ 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;
@@ -102,6 +126,36 @@ dns_c_ctrllist_delete(dns_c_ctrllist_t **list) {
        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,
index 362324b2fde23fdbe3a3b7acae3e1b0c8ee592e9..8f65b0f9fe17e1e70b88ba1f27eab3bc5c6c9d44 100644 (file)
@@ -15,7 +15,7 @@
  * SOFTWARE.
  */
 
-/* $Id: confctx.c,v 1.70.2.1 2000/06/28 00:32:18 explorer Exp $ */
+/* $Id: confctx.c,v 1.70.2.2 2000/07/12 16:37:09 gson Exp $ */
 
 #include <config.h>
 
@@ -229,6 +229,7 @@ dns_c_checkconfig(dns_c_ctx_t *cfg)
        isc_result_t            tmpres;
        dns_c_rrsolist_t       *olist;
        dns_c_lstnlist_t       *listenlist;
+       dns_c_ctrllist_t       *controls;
 
        
        if (dns_c_ctx_getnamedxfer(cfg, &cpval) != ISC_R_NOTFOUND) {
@@ -492,6 +493,14 @@ dns_c_checkconfig(dns_c_ctx_t *cfg)
                }
        }
 
+       if (dns_c_ctx_getcontrols(cfg, &controls) != ISC_R_NOTFOUND) {
+               tmpres = dns_c_ctrllist_validate(controls);
+               if (tmpres != ISC_R_SUCCESS) {
+                       result = tmpres;
+               }
+       }
+       
+
        return (result);
 }
 
index 05591e0dd6872db15af78c364c54f1da44fe2879..322cd0b2161534c59e31a88d0e2a14b5ae795b8d 100644 (file)
@@ -15,7 +15,7 @@
  * SOFTWARE.
  */
 
-/* $Id: confkeys.c,v 1.23 2000/06/05 09:17:07 brister Exp $ */
+/* $Id: confkeys.c,v 1.23.2.1 2000/07/12 16:37:10 gson Exp $ */
 
 #include <config.h>
 
@@ -450,6 +450,27 @@ dns_c_kidlist_delete(dns_c_kidlist_t **list)
 }
 
 
+isc_uint32_t
+dns_c_kidlist_keycount(dns_c_kidlist_t *list)
+{
+       dns_c_kid_t *kid;
+       isc_uint32_t count = 0;
+
+       REQUIRE(DNS_C_KEYIDLIST_VALID(list));
+
+       kid = ISC_LIST_HEAD(list->keyids);
+       while (kid != NULL) {
+               count++;
+               kid = ISC_LIST_NEXT(kid, next);
+       }
+
+       return (count);
+}
+
+       
+
+
+
 static isc_result_t
 keyid_delete(dns_c_kid_t **keyid)
 {
index 77890ca357f468b62d2fdea0a5e08e0b919e8d0a..3d7ab65bab66524efcb1fac562cad48694a817aa 100644 (file)
@@ -15,7 +15,7 @@
  * SOFTWARE.
  */
 
-/* $Id: confctl.h,v 1.15.2.1 2000/07/11 17:23:18 gson Exp $ */
+/* $Id: confctl.h,v 1.15.2.2 2000/07/12 16:37:12 gson Exp $ */
 
 #ifndef DNS_CONFCTL_H
 #define DNS_CONFCTL_H 1
@@ -161,6 +161,16 @@ dns_c_ctrl_delete(dns_c_ctrl_t **control);
  *     ISC_R_SUCCESS
  */
 
+
+isc_result_t
+dns_c_ctrl_validate(dns_c_ctrl_t *ctrl);
+/*
+ * Validates one control statement enty.
+ * The KEYS must be used. UNIX types are ignored (so we issue a warning for
+ * that.
+ */
+
+
 void
 dns_c_ctrl_print(FILE *fp, int indent, dns_c_ctrl_t *ctl);
 /*
@@ -187,6 +197,12 @@ dns_c_ctrllist_new(isc_mem_t *mem, dns_c_ctrllist_t **newlist);
  *     ISC_R_NOMEMORY          -- insufficient memory available.
  */
 
+isc_result_t
+dns_c_ctrllist_validate(dns_c_ctrllist_t *cl);
+/*
+ * Validates the subclauses of the control statement.
+ */
+
 isc_result_t
 dns_c_ctrllist_delete(dns_c_ctrllist_t **list);
 /*
index 379251724e4a1ba772ca182dcd2d0ba56125182f..26c835099765153eddd02315304263037f0b886b 100644 (file)
@@ -15,7 +15,7 @@
  * 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
@@ -195,152 +195,124 @@ struct dns_c_kid_list {
 
 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