xref: /minix3/external/bsd/bind/dist/lib/dns/tests/update_test.c (revision 00b67f09dd46474d133c95011a48590a8e8f94c7)
1*00b67f09SDavid van Moolenbroek /*	$NetBSD: update_test.c,v 1.1.1.4 2014/12/10 03:34:43 christos Exp $	*/
2*00b67f09SDavid van Moolenbroek 
3*00b67f09SDavid van Moolenbroek /*
4*00b67f09SDavid van Moolenbroek  * Copyright (C) 2011, 2012  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 */
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 <atf-c.h>
26*00b67f09SDavid van Moolenbroek 
27*00b67f09SDavid van Moolenbroek #include <unistd.h>
28*00b67f09SDavid van Moolenbroek #include <time.h>
29*00b67f09SDavid van Moolenbroek 
30*00b67f09SDavid van Moolenbroek #include <isc/serial.h>
31*00b67f09SDavid van Moolenbroek #include <isc/stdtime.h>
32*00b67f09SDavid van Moolenbroek 
33*00b67f09SDavid van Moolenbroek #include <dns/update.h>
34*00b67f09SDavid van Moolenbroek 
35*00b67f09SDavid van Moolenbroek #include "dnstest.h"
36*00b67f09SDavid van Moolenbroek 
37*00b67f09SDavid van Moolenbroek static isc_uint32_t mystdtime;
38*00b67f09SDavid van Moolenbroek 
set_mystdtime(int year,int month,int day)39*00b67f09SDavid van Moolenbroek static void set_mystdtime(int year, int month, int day) {
40*00b67f09SDavid van Moolenbroek 	struct tm tm;
41*00b67f09SDavid van Moolenbroek 
42*00b67f09SDavid van Moolenbroek 	memset(&tm, 0, sizeof(tm));
43*00b67f09SDavid van Moolenbroek 	tm.tm_year = year - 1900;
44*00b67f09SDavid van Moolenbroek 	tm.tm_mon = month;
45*00b67f09SDavid van Moolenbroek 	tm.tm_mday = day;
46*00b67f09SDavid van Moolenbroek 	mystdtime = timegm(&tm) ;
47*00b67f09SDavid van Moolenbroek }
48*00b67f09SDavid van Moolenbroek 
isc_stdtime_get(isc_stdtime_t * now)49*00b67f09SDavid van Moolenbroek void isc_stdtime_get(isc_stdtime_t *now) {
50*00b67f09SDavid van Moolenbroek 	*now = mystdtime;
51*00b67f09SDavid van Moolenbroek }
52*00b67f09SDavid van Moolenbroek 
53*00b67f09SDavid van Moolenbroek /*
54*00b67f09SDavid van Moolenbroek  * Individual unit tests
55*00b67f09SDavid van Moolenbroek  */
56*00b67f09SDavid van Moolenbroek 
57*00b67f09SDavid van Moolenbroek ATF_TC(increment);
ATF_TC_HEAD(increment,tc)58*00b67f09SDavid van Moolenbroek ATF_TC_HEAD(increment, tc) {
59*00b67f09SDavid van Moolenbroek   atf_tc_set_md_var(tc, "descr", "simple increment by 1");
60*00b67f09SDavid van Moolenbroek }
ATF_TC_BODY(increment,tc)61*00b67f09SDavid van Moolenbroek ATF_TC_BODY(increment, tc) {
62*00b67f09SDavid van Moolenbroek 	isc_uint32_t old = 50;
63*00b67f09SDavid van Moolenbroek 	isc_uint32_t new;
64*00b67f09SDavid van Moolenbroek 	isc_result_t result;
65*00b67f09SDavid van Moolenbroek 
66*00b67f09SDavid van Moolenbroek 	UNUSED(tc);
67*00b67f09SDavid van Moolenbroek 
68*00b67f09SDavid van Moolenbroek 	result = dns_test_begin(NULL, ISC_FALSE);
69*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
70*00b67f09SDavid van Moolenbroek 	new = dns_update_soaserial(old, dns_updatemethod_increment);
71*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(isc_serial_lt(old, new), ISC_TRUE);
72*00b67f09SDavid van Moolenbroek 	ATF_CHECK_MSG(new != 0, "new (%d) should not equal 0", new);
73*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(new, 51);
74*00b67f09SDavid van Moolenbroek 	dns_test_end();
75*00b67f09SDavid van Moolenbroek }
76*00b67f09SDavid van Moolenbroek 
77*00b67f09SDavid van Moolenbroek /* 0xfffffffff -> 1 */
78*00b67f09SDavid van Moolenbroek ATF_TC(increment_past_zero);
ATF_TC_HEAD(increment_past_zero,tc)79*00b67f09SDavid van Moolenbroek ATF_TC_HEAD(increment_past_zero, tc) {
80*00b67f09SDavid van Moolenbroek   atf_tc_set_md_var(tc, "descr", "increment past zero, ffffffff -> 1");
81*00b67f09SDavid van Moolenbroek }
ATF_TC_BODY(increment_past_zero,tc)82*00b67f09SDavid van Moolenbroek ATF_TC_BODY(increment_past_zero, tc) {
83*00b67f09SDavid van Moolenbroek 	isc_uint32_t old = 0xffffffffu;
84*00b67f09SDavid van Moolenbroek 	isc_uint32_t new;
85*00b67f09SDavid van Moolenbroek 	isc_result_t result;
86*00b67f09SDavid van Moolenbroek 
87*00b67f09SDavid van Moolenbroek 	UNUSED(tc);
88*00b67f09SDavid van Moolenbroek 
89*00b67f09SDavid van Moolenbroek 	result = dns_test_begin(NULL, ISC_FALSE);
90*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
91*00b67f09SDavid van Moolenbroek 	new = dns_update_soaserial(old, dns_updatemethod_increment);
92*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(isc_serial_lt(old, new), ISC_TRUE);
93*00b67f09SDavid van Moolenbroek 	ATF_CHECK(new != 0);
94*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(new, 1u);
95*00b67f09SDavid van Moolenbroek 	dns_test_end();
96*00b67f09SDavid van Moolenbroek }
97*00b67f09SDavid van Moolenbroek 
98*00b67f09SDavid van Moolenbroek ATF_TC(past_to_unix);
ATF_TC_HEAD(past_to_unix,tc)99*00b67f09SDavid van Moolenbroek ATF_TC_HEAD(past_to_unix, tc) {
100*00b67f09SDavid van Moolenbroek   atf_tc_set_md_var(tc, "descr", "past to unixtime");
101*00b67f09SDavid van Moolenbroek }
ATF_TC_BODY(past_to_unix,tc)102*00b67f09SDavid van Moolenbroek ATF_TC_BODY(past_to_unix, tc) {
103*00b67f09SDavid van Moolenbroek 	isc_uint32_t old;
104*00b67f09SDavid van Moolenbroek 	isc_uint32_t new;
105*00b67f09SDavid van Moolenbroek 	isc_result_t result;
106*00b67f09SDavid van Moolenbroek 
107*00b67f09SDavid van Moolenbroek 	UNUSED(tc);
108*00b67f09SDavid van Moolenbroek 
109*00b67f09SDavid van Moolenbroek 	set_mystdtime(2011, 6, 22);
110*00b67f09SDavid van Moolenbroek 	old = mystdtime - 1;
111*00b67f09SDavid van Moolenbroek 
112*00b67f09SDavid van Moolenbroek 	result = dns_test_begin(NULL, ISC_FALSE);
113*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
114*00b67f09SDavid van Moolenbroek 	new = dns_update_soaserial(old, dns_updatemethod_unixtime);
115*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(isc_serial_lt(old, new), ISC_TRUE);
116*00b67f09SDavid van Moolenbroek 	ATF_CHECK(new != 0);
117*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(new, mystdtime);
118*00b67f09SDavid van Moolenbroek 	dns_test_end();
119*00b67f09SDavid van Moolenbroek }
120*00b67f09SDavid van Moolenbroek 
121*00b67f09SDavid van Moolenbroek ATF_TC(now_to_unix);
ATF_TC_HEAD(now_to_unix,tc)122*00b67f09SDavid van Moolenbroek ATF_TC_HEAD(now_to_unix, tc) {
123*00b67f09SDavid van Moolenbroek   atf_tc_set_md_var(tc, "descr", "now to unixtime");
124*00b67f09SDavid van Moolenbroek }
ATF_TC_BODY(now_to_unix,tc)125*00b67f09SDavid van Moolenbroek ATF_TC_BODY(now_to_unix, tc) {
126*00b67f09SDavid van Moolenbroek 	isc_uint32_t old;
127*00b67f09SDavid van Moolenbroek 	isc_uint32_t new;
128*00b67f09SDavid van Moolenbroek 	isc_result_t result;
129*00b67f09SDavid van Moolenbroek 
130*00b67f09SDavid van Moolenbroek 	UNUSED(tc);
131*00b67f09SDavid van Moolenbroek 
132*00b67f09SDavid van Moolenbroek 	set_mystdtime(2011, 6, 22);
133*00b67f09SDavid van Moolenbroek 	old = mystdtime;
134*00b67f09SDavid van Moolenbroek 
135*00b67f09SDavid van Moolenbroek 	result = dns_test_begin(NULL, ISC_FALSE);
136*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
137*00b67f09SDavid van Moolenbroek 	new = dns_update_soaserial(old, dns_updatemethod_unixtime);
138*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(isc_serial_lt(old, new), ISC_TRUE);
139*00b67f09SDavid van Moolenbroek 	ATF_CHECK(new != 0);
140*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(new, old+1);
141*00b67f09SDavid van Moolenbroek 	dns_test_end();
142*00b67f09SDavid van Moolenbroek }
143*00b67f09SDavid van Moolenbroek 
144*00b67f09SDavid van Moolenbroek ATF_TC(future_to_unix);
ATF_TC_HEAD(future_to_unix,tc)145*00b67f09SDavid van Moolenbroek ATF_TC_HEAD(future_to_unix, tc) {
146*00b67f09SDavid van Moolenbroek   atf_tc_set_md_var(tc, "descr", "future to unixtime");
147*00b67f09SDavid van Moolenbroek }
ATF_TC_BODY(future_to_unix,tc)148*00b67f09SDavid van Moolenbroek ATF_TC_BODY(future_to_unix, tc) {
149*00b67f09SDavid van Moolenbroek 	isc_uint32_t old;
150*00b67f09SDavid van Moolenbroek 	isc_uint32_t new;
151*00b67f09SDavid van Moolenbroek 	isc_result_t result;
152*00b67f09SDavid van Moolenbroek 
153*00b67f09SDavid van Moolenbroek 	UNUSED(tc);
154*00b67f09SDavid van Moolenbroek 
155*00b67f09SDavid van Moolenbroek 	set_mystdtime(2011, 6, 22);
156*00b67f09SDavid van Moolenbroek 	old = mystdtime + 1;
157*00b67f09SDavid van Moolenbroek 
158*00b67f09SDavid van Moolenbroek 	result = dns_test_begin(NULL, ISC_FALSE);
159*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
160*00b67f09SDavid van Moolenbroek 	new = dns_update_soaserial(old, dns_updatemethod_unixtime);
161*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(isc_serial_lt(old, new), ISC_TRUE);
162*00b67f09SDavid van Moolenbroek 	ATF_CHECK(new != 0);
163*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(new, old+1);
164*00b67f09SDavid van Moolenbroek 	dns_test_end();
165*00b67f09SDavid van Moolenbroek }
166*00b67f09SDavid van Moolenbroek 
167*00b67f09SDavid van Moolenbroek ATF_TC(undefined_plus1_to_unix);
ATF_TC_HEAD(undefined_plus1_to_unix,tc)168*00b67f09SDavid van Moolenbroek ATF_TC_HEAD(undefined_plus1_to_unix, tc) {
169*00b67f09SDavid van Moolenbroek   atf_tc_set_md_var(tc, "descr", "undefined plus 1 to unixtime");
170*00b67f09SDavid van Moolenbroek }
ATF_TC_BODY(undefined_plus1_to_unix,tc)171*00b67f09SDavid van Moolenbroek ATF_TC_BODY(undefined_plus1_to_unix, tc) {
172*00b67f09SDavid van Moolenbroek 	isc_uint32_t old;
173*00b67f09SDavid van Moolenbroek 	isc_uint32_t new;
174*00b67f09SDavid van Moolenbroek 	isc_result_t result;
175*00b67f09SDavid van Moolenbroek 
176*00b67f09SDavid van Moolenbroek 	UNUSED(tc);
177*00b67f09SDavid van Moolenbroek 
178*00b67f09SDavid van Moolenbroek 	set_mystdtime(2011, 6, 22);
179*00b67f09SDavid van Moolenbroek 	old = mystdtime ^ 0x80000000u;
180*00b67f09SDavid van Moolenbroek 	old += 1;
181*00b67f09SDavid van Moolenbroek 
182*00b67f09SDavid van Moolenbroek 	result = dns_test_begin(NULL, ISC_FALSE);
183*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
184*00b67f09SDavid van Moolenbroek 	new = dns_update_soaserial(old, dns_updatemethod_unixtime);
185*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(isc_serial_lt(old, new), ISC_TRUE);
186*00b67f09SDavid van Moolenbroek 	ATF_CHECK(new != 0);
187*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(new, mystdtime);
188*00b67f09SDavid van Moolenbroek 	dns_test_end();
189*00b67f09SDavid van Moolenbroek }
190*00b67f09SDavid van Moolenbroek 
191*00b67f09SDavid van Moolenbroek ATF_TC(undefined_minus1_to_unix);
ATF_TC_HEAD(undefined_minus1_to_unix,tc)192*00b67f09SDavid van Moolenbroek ATF_TC_HEAD(undefined_minus1_to_unix, tc) {
193*00b67f09SDavid van Moolenbroek   atf_tc_set_md_var(tc, "descr", "undefined minus 1 to unixtime");
194*00b67f09SDavid van Moolenbroek }
ATF_TC_BODY(undefined_minus1_to_unix,tc)195*00b67f09SDavid van Moolenbroek ATF_TC_BODY(undefined_minus1_to_unix, tc) {
196*00b67f09SDavid van Moolenbroek 	isc_uint32_t old;
197*00b67f09SDavid van Moolenbroek 	isc_uint32_t new;
198*00b67f09SDavid van Moolenbroek 	isc_result_t result;
199*00b67f09SDavid van Moolenbroek 
200*00b67f09SDavid van Moolenbroek 	UNUSED(tc);
201*00b67f09SDavid van Moolenbroek 
202*00b67f09SDavid van Moolenbroek 	set_mystdtime(2011, 6, 22);
203*00b67f09SDavid van Moolenbroek 	old = mystdtime ^ 0x80000000u;
204*00b67f09SDavid van Moolenbroek 	old -= 1;
205*00b67f09SDavid van Moolenbroek 
206*00b67f09SDavid van Moolenbroek 	result = dns_test_begin(NULL, ISC_FALSE);
207*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
208*00b67f09SDavid van Moolenbroek 	new = dns_update_soaserial(old, dns_updatemethod_unixtime);
209*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(isc_serial_lt(old, new), ISC_TRUE);
210*00b67f09SDavid van Moolenbroek 	ATF_CHECK(new != 0);
211*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(new, old+1);
212*00b67f09SDavid van Moolenbroek 	dns_test_end();
213*00b67f09SDavid van Moolenbroek }
214*00b67f09SDavid van Moolenbroek 
215*00b67f09SDavid van Moolenbroek ATF_TC(undefined_to_unix);
ATF_TC_HEAD(undefined_to_unix,tc)216*00b67f09SDavid van Moolenbroek ATF_TC_HEAD(undefined_to_unix, tc) {
217*00b67f09SDavid van Moolenbroek   atf_tc_set_md_var(tc, "descr", "undefined to unixtime");
218*00b67f09SDavid van Moolenbroek }
ATF_TC_BODY(undefined_to_unix,tc)219*00b67f09SDavid van Moolenbroek ATF_TC_BODY(undefined_to_unix, tc) {
220*00b67f09SDavid van Moolenbroek 	isc_uint32_t old;
221*00b67f09SDavid van Moolenbroek 	isc_uint32_t new;
222*00b67f09SDavid van Moolenbroek 	isc_result_t result;
223*00b67f09SDavid van Moolenbroek 
224*00b67f09SDavid van Moolenbroek 	UNUSED(tc);
225*00b67f09SDavid van Moolenbroek 
226*00b67f09SDavid van Moolenbroek 	set_mystdtime(2011, 6, 22);
227*00b67f09SDavid van Moolenbroek 	old = mystdtime ^ 0x80000000u;
228*00b67f09SDavid van Moolenbroek 
229*00b67f09SDavid van Moolenbroek 	result = dns_test_begin(NULL, ISC_FALSE);
230*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
231*00b67f09SDavid van Moolenbroek 	new = dns_update_soaserial(old, dns_updatemethod_unixtime);
232*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(isc_serial_lt(old, new), ISC_TRUE);
233*00b67f09SDavid van Moolenbroek 	ATF_CHECK(new != 0);
234*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(new, old+1);
235*00b67f09SDavid van Moolenbroek 	dns_test_end();
236*00b67f09SDavid van Moolenbroek }
237*00b67f09SDavid van Moolenbroek 
238*00b67f09SDavid van Moolenbroek ATF_TC(unixtime_zero);
ATF_TC_HEAD(unixtime_zero,tc)239*00b67f09SDavid van Moolenbroek ATF_TC_HEAD(unixtime_zero, tc) {
240*00b67f09SDavid van Moolenbroek   atf_tc_set_md_var(tc, "descr", "handle unixtime being zero");
241*00b67f09SDavid van Moolenbroek }
ATF_TC_BODY(unixtime_zero,tc)242*00b67f09SDavid van Moolenbroek ATF_TC_BODY(unixtime_zero, tc) {
243*00b67f09SDavid van Moolenbroek 	isc_uint32_t old;
244*00b67f09SDavid van Moolenbroek 	isc_uint32_t new;
245*00b67f09SDavid van Moolenbroek 	isc_result_t result;
246*00b67f09SDavid van Moolenbroek 
247*00b67f09SDavid van Moolenbroek 	UNUSED(tc);
248*00b67f09SDavid van Moolenbroek 
249*00b67f09SDavid van Moolenbroek 	mystdtime = 0;
250*00b67f09SDavid van Moolenbroek 	old = 0xfffffff0;
251*00b67f09SDavid van Moolenbroek 
252*00b67f09SDavid van Moolenbroek 	result = dns_test_begin(NULL, ISC_FALSE);
253*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
254*00b67f09SDavid van Moolenbroek 	new = dns_update_soaserial(old, dns_updatemethod_unixtime);
255*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(isc_serial_lt(old, new), ISC_TRUE);
256*00b67f09SDavid van Moolenbroek 	ATF_CHECK(new != 0);
257*00b67f09SDavid van Moolenbroek 	ATF_REQUIRE_EQ(new, old+1);
258*00b67f09SDavid van Moolenbroek 	dns_test_end();
259*00b67f09SDavid van Moolenbroek }
260*00b67f09SDavid van Moolenbroek 
261*00b67f09SDavid van Moolenbroek /*
262*00b67f09SDavid van Moolenbroek  * Main
263*00b67f09SDavid van Moolenbroek  */
ATF_TP_ADD_TCS(tp)264*00b67f09SDavid van Moolenbroek ATF_TP_ADD_TCS(tp) {
265*00b67f09SDavid van Moolenbroek 	ATF_TP_ADD_TC(tp, increment);
266*00b67f09SDavid van Moolenbroek 	ATF_TP_ADD_TC(tp, increment_past_zero);
267*00b67f09SDavid van Moolenbroek 	ATF_TP_ADD_TC(tp, past_to_unix);
268*00b67f09SDavid van Moolenbroek 	ATF_TP_ADD_TC(tp, now_to_unix);
269*00b67f09SDavid van Moolenbroek 	ATF_TP_ADD_TC(tp, future_to_unix);
270*00b67f09SDavid van Moolenbroek 	ATF_TP_ADD_TC(tp, undefined_to_unix);
271*00b67f09SDavid van Moolenbroek 	ATF_TP_ADD_TC(tp, undefined_plus1_to_unix);
272*00b67f09SDavid van Moolenbroek 	ATF_TP_ADD_TC(tp, undefined_minus1_to_unix);
273*00b67f09SDavid van Moolenbroek 	ATF_TP_ADD_TC(tp, unixtime_zero);
274*00b67f09SDavid van Moolenbroek 
275*00b67f09SDavid van Moolenbroek 	return (atf_no_error());
276*00b67f09SDavid van Moolenbroek }
277*00b67f09SDavid van Moolenbroek 
278