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