1*00b67f09SDavid van Moolenbroek /* $NetBSD: dnsconf.c,v 1.4 2014/12/10 04:38:02 christos Exp $ */ 2*00b67f09SDavid van Moolenbroek 3*00b67f09SDavid van Moolenbroek /* 4*00b67f09SDavid van Moolenbroek * Copyright (C) 2009 Internet Systems Consortium, Inc. ("ISC") 5*00b67f09SDavid van Moolenbroek * 6*00b67f09SDavid van Moolenbroek * Permission to use, copy, modify, and/or distribute this software for any 7*00b67f09SDavid van Moolenbroek * purpose with or without fee is hereby granted, provided that the above 8*00b67f09SDavid van Moolenbroek * copyright notice and this permission notice appear in all copies. 9*00b67f09SDavid van Moolenbroek * 10*00b67f09SDavid van Moolenbroek * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH 11*00b67f09SDavid van Moolenbroek * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 12*00b67f09SDavid van Moolenbroek * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, 13*00b67f09SDavid van Moolenbroek * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 14*00b67f09SDavid van Moolenbroek * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 15*00b67f09SDavid van Moolenbroek * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16*00b67f09SDavid van Moolenbroek * PERFORMANCE OF THIS SOFTWARE. 17*00b67f09SDavid van Moolenbroek */ 18*00b67f09SDavid van Moolenbroek 19*00b67f09SDavid van Moolenbroek /* Id: dnsconf.c,v 1.4 2009/09/02 23:48:03 tbox Exp */ 20*00b67f09SDavid van Moolenbroek 21*00b67f09SDavid van Moolenbroek /*! \file */ 22*00b67f09SDavid van Moolenbroek 23*00b67f09SDavid van Moolenbroek #include <config.h> 24*00b67f09SDavid van Moolenbroek 25*00b67f09SDavid van Moolenbroek #include <isccfg/cfg.h> 26*00b67f09SDavid van Moolenbroek #include <isccfg/grammar.h> 27*00b67f09SDavid van Moolenbroek 28*00b67f09SDavid van Moolenbroek /*% 29*00b67f09SDavid van Moolenbroek * A trusted key, as used in the "trusted-keys" statement. 30*00b67f09SDavid van Moolenbroek */ 31*00b67f09SDavid van Moolenbroek static cfg_tuplefielddef_t trustedkey_fields[] = { 32*00b67f09SDavid van Moolenbroek { "name", &cfg_type_astring, 0 }, 33*00b67f09SDavid van Moolenbroek { "flags", &cfg_type_uint32, 0 }, 34*00b67f09SDavid van Moolenbroek { "protocol", &cfg_type_uint32, 0 }, 35*00b67f09SDavid van Moolenbroek { "algorithm", &cfg_type_uint32, 0 }, 36*00b67f09SDavid van Moolenbroek { "key", &cfg_type_qstring, 0 }, 37*00b67f09SDavid van Moolenbroek { NULL, NULL, 0 } 38*00b67f09SDavid van Moolenbroek }; 39*00b67f09SDavid van Moolenbroek 40*00b67f09SDavid van Moolenbroek static cfg_type_t cfg_type_trustedkey = { 41*00b67f09SDavid van Moolenbroek "trustedkey", cfg_parse_tuple, cfg_print_tuple, cfg_doc_tuple, 42*00b67f09SDavid van Moolenbroek &cfg_rep_tuple, trustedkey_fields 43*00b67f09SDavid van Moolenbroek }; 44*00b67f09SDavid van Moolenbroek 45*00b67f09SDavid van Moolenbroek static cfg_type_t cfg_type_trustedkeys = { 46*00b67f09SDavid van Moolenbroek "trusted-keys", cfg_parse_bracketed_list, cfg_print_bracketed_list, 47*00b67f09SDavid van Moolenbroek cfg_doc_bracketed_list, &cfg_rep_list, &cfg_type_trustedkey 48*00b67f09SDavid van Moolenbroek }; 49*00b67f09SDavid van Moolenbroek 50*00b67f09SDavid van Moolenbroek /*% 51*00b67f09SDavid van Moolenbroek * Clauses that can be found within the top level of the dns.conf 52*00b67f09SDavid van Moolenbroek * file only. 53*00b67f09SDavid van Moolenbroek */ 54*00b67f09SDavid van Moolenbroek static cfg_clausedef_t 55*00b67f09SDavid van Moolenbroek dnsconf_clauses[] = { 56*00b67f09SDavid van Moolenbroek { "trusted-keys", &cfg_type_trustedkeys, CFG_CLAUSEFLAG_MULTI }, 57*00b67f09SDavid van Moolenbroek { NULL, NULL, 0 } 58*00b67f09SDavid van Moolenbroek }; 59*00b67f09SDavid van Moolenbroek 60*00b67f09SDavid van Moolenbroek /*% The top-level dns.conf syntax. */ 61*00b67f09SDavid van Moolenbroek 62*00b67f09SDavid van Moolenbroek static cfg_clausedef_t * 63*00b67f09SDavid van Moolenbroek dnsconf_clausesets[] = { 64*00b67f09SDavid van Moolenbroek dnsconf_clauses, 65*00b67f09SDavid van Moolenbroek NULL 66*00b67f09SDavid van Moolenbroek }; 67*00b67f09SDavid van Moolenbroek 68*00b67f09SDavid van Moolenbroek LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_dnsconf = { 69*00b67f09SDavid van Moolenbroek "dnsconf", cfg_parse_mapbody, cfg_print_mapbody, cfg_doc_mapbody, 70*00b67f09SDavid van Moolenbroek &cfg_rep_map, dnsconf_clausesets 71*00b67f09SDavid van Moolenbroek }; 72