1 /*
2  * Copyright (c) 2006-2010 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  * Recover from backup.
29  *
30  */
31 
32 #ifndef SIGNER_BACKUP_H
33 #define SIGNER_BACKUP_H
34 
35 #include "config.h"
36 #include "duration.h"
37 #include "file.h"
38 #include "status.h"
39 
40 #include <ldns/ldns.h>
41 
42 /**
43  * Read token from backup file.
44  * \param[in] in input file descriptor
45  * \return char* read token
46  *
47  */
48 char* backup_read_token(FILE* in);
49 
50 /**
51  * Read and match a string from backup file.
52  * \param[in] in input file descriptor
53  * \param[in] str string to match
54  * \return 1 if string was read and matched, 0 otherwise
55  *
56  */
57 int backup_read_check_str(FILE* in, const char* str);
58 
59 /**
60  * Read a string from backup file.
61  * \param[in] in input file descriptor
62  * \param[out] string storage
63  * \return int 1 on success, 0 otherwise
64  *
65  */
66 int backup_read_str(FILE* in, const char** str);
67 
68 /**
69  * Read time from backup file.
70  * \param[in] in input file descriptor
71  * \param[out] v time_t storage
72  * \return int 1 on success, 0 otherwise
73  *
74  */
75 int backup_read_time_t(FILE* in, time_t* v);
76 
77 /**
78  * Read duration from backup file.
79  * \param[in] in input file descriptor
80  * \param[out] v duration storage
81  * \return int 1 on success, 0 otherwise
82  *
83  */
84 int backup_read_duration(FILE* in, duration_type** v);
85 
86 /**
87  * Read rr type from backup file.
88  * \param[in] in input file descriptor
89  * \param[out] v rr type storage
90  * \return int 1 on success, 0 otherwise
91  *
92  */
93 int backup_read_rr_type(FILE* in, ldns_rr_type* v);
94 
95 /**
96  * Read integer from backup file.
97  * \param[in] in input file descriptor
98  * \param[out] v integer storage
99  * \return int 1 on success, 0 otherwise
100  *
101  */
102 int backup_read_int(FILE* in, int* v);
103 
104 /**
105  * Read 8bit unsigned integer from backup file.
106  * \param[in] in input file descriptor
107  * \param[out] v uint8_t storage
108  * \return int 1 on success, 0 otherwise
109  *
110  */
111 int backup_read_uint8_t(FILE* in, uint8_t* v);
112 
113 /**
114  * Read 32bit unsigned integer from backup file.
115  * \param[in] in input file descriptor
116  * \param[out] v uint32_t storage
117  * \return int 1 on success, 0 otherwise
118  *
119  */
120 int backup_read_uint32_t(FILE* in, uint32_t* v);
121 
122 /**
123  * Read namedb from backup file.
124  * \param[in] in input file descriptor
125  * \param[in] zone zone reference
126  * \return ods_status status
127  *
128  */
129 ods_status backup_read_namedb(FILE* in, void* zone);
130 
131 /**
132  * Read ixfr journal from file.
133  * \param[in] in input file descriptor
134  * \param[in] zone zone reference
135  * \return ods_status status
136  *
137  */
138 ods_status backup_read_ixfr(FILE* in, void* zone);
139 
140 #endif /* SIGNER_BACKUP_H */
141