1 /* 2 * Copyright (c) 2011 NLNet Labs. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 14 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 17 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 19 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 21 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 22 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 23 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 * 25 */ 26 27 /** 28 * Denial of Existence. 29 * 30 */ 31 32 #ifndef SIGNER_DENIAL_H 33 #define SIGNER_DENIAL_H 34 35 #include "config.h" 36 #include <ldns/ldns.h> 37 #include <time.h> 38 39 typedef struct denial_struct denial_type; 40 41 #include "status.h" 42 #include "signer/nsec3params.h" 43 #include "signer/rrset.h" 44 #include "signer/domain.h" 45 46 /** 47 * Denial of Existence data point. 48 * 49 */ 50 struct denial_struct { 51 zone_type* zone; 52 domain_type* domain; 53 ldns_rbnode_t* node; 54 ldns_rdf* dname; 55 rrset_type* rrset; 56 unsigned bitmap_changed : 1; 57 unsigned nxt_changed : 1; 58 }; 59 60 /** 61 * Create new Denial of Existence data point. 62 * \param[in] zoneptr zone reference 63 * \param[in] dname owner name 64 * \return denial_type* denial of existence data point 65 * 66 */ 67 denial_type* denial_create(zone_type* zoneptr, ldns_rdf* dname); 68 69 /** 70 * Apply differences at denial. 71 * \param[in] denial Denial of Existence data point 72 * 73 */ 74 void denial_diff(denial_type* denial); 75 76 /** 77 * Add NSEC(3) to the Denial of Existence data point. 78 * \param[in] denial Denial of Existence data point 79 * \param[in] rr NSEC(3) resource record 80 * 81 */ 82 void denial_add_rr(denial_type* denial, ldns_rr* rr); 83 84 /** 85 * Nsecify Denial of Existence data point. 86 * \param[in] denial Denial of Existence data point 87 * \param[in] nxt next Denial of Existence data point 88 * \param[out] num_added number of RRs added 89 * 90 */ 91 void denial_nsecify(denial_type* denial, denial_type* nxt, uint32_t* num_added); 92 93 /** 94 * Print Denial of Existence data point. 95 * \param[in] fd file descriptor 96 * \param[in] denial denial of existence data point 97 * \param[out] status status 98 * 99 */ 100 void denial_print(FILE* fd, denial_type* denial, ods_status* status); 101 102 /** 103 * Cleanup Denial of Existence data point. 104 * \param[in] denial denial of existence data point 105 * 106 */ 107 void denial_cleanup(denial_type* denial); 108 109 #endif /* SIGNER_DENIAL_H */ 110