1/* 2 * Copyright (C) 2004-2007, 2009 Internet Systems Consortium, Inc. ("ISC") 3 * Copyright (C) 2000, 2001 Internet Software Consortium. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH 10 * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 11 * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, 12 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 13 * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 14 * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 15 * PERFORMANCE OF THIS SOFTWARE. 16 */ 17 18/* $Id: soa.h,v 1.12 2009/09/10 01:47:09 each Exp $ */ 19 20#ifndef DNS_SOA_H 21#define DNS_SOA_H 1 22 23/***** 24 ***** Module Info 25 *****/ 26 27/*! \file dns/soa.h 28 * \brief 29 * SOA utilities. 30 */ 31 32/*** 33 *** Imports 34 ***/ 35 36#include <isc/lang.h> 37#include <isc/types.h> 38 39#include <dns/types.h> 40 41ISC_LANG_BEGINDECLS 42 43#define DNS_SOA_BUFFERSIZE ((2 * DNS_NAME_MAXWIRE) + (4 * 5)) 44 45isc_result_t 46dns_soa_buildrdata(dns_name_t *origin, dns_name_t *contact, 47 dns_rdataclass_t rdclass, 48 isc_uint32_t serial, isc_uint32_t refresh, 49 isc_uint32_t retry, isc_uint32_t expire, 50 isc_uint32_t minimum, unsigned char *buffer, 51 dns_rdata_t *rdata); 52/*%< 53 * Build the rdata of an SOA record. 54 * 55 * Requires: 56 *\li buffer Points to a temporary buffer of at least 57 * DNS_SOA_BUFFERSIZE bytes. 58 *\li rdata Points to an initialized dns_rdata_t. 59 * 60 * Ensures: 61 * \li *rdata Contains a valid SOA rdata. The 'data' member 62 * refers to 'buffer'. 63 */ 64 65isc_uint32_t 66dns_soa_getserial(dns_rdata_t *rdata); 67isc_uint32_t 68dns_soa_getrefresh(dns_rdata_t *rdata); 69isc_uint32_t 70dns_soa_getretry(dns_rdata_t *rdata); 71isc_uint32_t 72dns_soa_getexpire(dns_rdata_t *rdata); 73isc_uint32_t 74dns_soa_getminimum(dns_rdata_t *rdata); 75/* 76 * Extract an integer field from the rdata of a SOA record. 77 * 78 * Requires: 79 * rdata refers to the rdata of a well-formed SOA record. 80 */ 81 82void 83dns_soa_setserial(isc_uint32_t val, dns_rdata_t *rdata); 84void 85dns_soa_setrefresh(isc_uint32_t val, dns_rdata_t *rdata); 86void 87dns_soa_setretry(isc_uint32_t val, dns_rdata_t *rdata); 88void 89dns_soa_setexpire(isc_uint32_t val, dns_rdata_t *rdata); 90void 91dns_soa_setminimum(isc_uint32_t val, dns_rdata_t *rdata); 92/* 93 * Change an integer field of a SOA record by modifying the 94 * rdata in-place. 95 * 96 * Requires: 97 * rdata refers to the rdata of a well-formed SOA record. 98 */ 99 100 101ISC_LANG_ENDDECLS 102 103#endif /* DNS_SOA_H */ 104