Imported Upstream version 3.3.3
[debian/amanda] / common-src / amfeatures.h
1 /*
2  * Amanda, The Advanced Maryland Automatic Network Disk Archiver
3  * Copyright (c) 1991-1998 University of Maryland at College Park
4  * Copyright (c) 2007-2012 Zmanda, Inc.  All Rights Reserved.
5  * All Rights Reserved.
6  *
7  * Permission to use, copy, modify, distribute, and sell this software and its
8  * documentation for any purpose is hereby granted without fee, provided that
9  * the above copyright notice appear in all copies and that both that
10  * copyright notice and this permission notice appear in supporting
11  * documentation, and that the name of U.M. not be used in advertising or
12  * publicity pertaining to distribution of the software without specific,
13  * written prior permission.  U.M. makes no representations about the
14  * suitability of this software for any purpose.  It is provided "as is"
15  * without express or implied warranty.
16  *
17  * U.M. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL U.M.
19  * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
21  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
22  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23  *
24  * Authors: the Amanda Development Team.  Its members are listed in a
25  * file named AUTHORS, in the root directory of this distribution.
26  */
27
28 /*
29  * $Id: amfeatures.h,v 1.21 2006/07/19 17:46:07 martinea Exp $
30  *
31  * Define feature test related items.
32  */
33
34 #ifndef AMFEATURES_H
35 #define AMFEATURES_H
36
37 /*
38  * !!!WARNING!!!    !!!WARNING!!!    !!!WARNING!!!    !!!WARNING!!!
39  *
40  * No matter **WHAT**, you **MUST** enter new features at the **END**
41  * of this list (just before "last_feature").  If you do not, mass
42  * confusion will ensue.
43  *
44  * And features must **NEVER** be removed (that is, their code number
45  * must remain).  The bits are cheap.
46  *
47  * If you add a feature here, you probably also need to add a line to
48  * am_init_feature_set() in features.c unless it is dynamic in some way.
49  *
50  * !!!WARNING!!!    !!!WARNING!!!    !!!WARNING!!!    !!!WARNING!!!
51  */
52 typedef enum {
53     /*
54      * This bit will be set if the feature test code is supported.  It
55      * will only be off for "old" (2.4.2p2 and earlier) systems.
56      */
57     have_feature_support = 0,
58
59     /*
60      * Amanda used to send authorization type information around like
61      * this in the OPTIONS string:
62      *
63      *  bsd-auth
64      *  krb4-auth
65      *
66      * To make it easier to add new authorization methods and parse,
67      * this was changed to a keyword=value syntax:
68      *
69      *  auth=BSD
70      *  auth=RSH
71      *  auth=krb5
72      *
73      * and so on.
74      */
75
76     fe_options_auth, /* amanda_feature_auth_keyword */
77
78     fe_selfcheck_req,
79     fe_selfcheck_req_device,
80     fe_selfcheck_rep,
81
82     fe_sendsize_req_no_options,
83     fe_sendsize_req_options,
84     fe_sendsize_req_device,             /* require fe_sendsize_req_options */
85     fe_sendsize_rep,
86
87     fe_sendbackup_req,
88     fe_sendbackup_req_device,
89     fe_sendbackup_rep,
90
91     fe_noop_req,
92     fe_noop_rep,
93
94     fe_program_dump,
95     fe_program_gnutar,
96     fe_program_application_api,         /* require fe_sendsize_req_options */
97
98     fe_options_compress_fast,
99     fe_options_compress_best,
100     fe_options_srvcomp_fast,
101     fe_options_srvcomp_best,
102     fe_options_no_record,
103     fe_options_index,
104     fe_options_exclude_file,
105     fe_options_exclude_list,
106     fe_options_multiple_exclude,        /* require fe_sendsize_req_options */
107     fe_options_optional_exclude,        /* require fe_sendsize_req_options */
108     fe_options_include_file,            /* require fe_sendsize_req_options */
109     fe_options_include_list,            /* require fe_sendsize_req_options */
110     fe_options_multiple_include,        /* require fe_sendsize_req_options */
111     fe_options_optional_include,        /* require fe_sendsize_req_options */
112     fe_options_bsd_auth,
113     fe_options_krb4_auth,
114     fe_options_kencrypt,
115
116     fe_req_options_maxdumps,
117     fe_req_options_hostname,
118     fe_req_options_features,
119
120     fe_rep_options_maxdumps,
121     fe_rep_options_hostname,
122     fe_rep_options_features,
123     fe_rep_options_sendbackup_options,
124
125     fe_amindexd_fileno_in_OLSD,
126     fe_amindexd_fileno_in_ORLD,
127     fe_amidxtaped_fsf,
128     fe_amidxtaped_label,
129     fe_amidxtaped_device,
130     fe_amidxtaped_host,
131     fe_amidxtaped_disk,
132     fe_amidxtaped_datestamp,
133     fe_amidxtaped_header,
134     fe_amidxtaped_nargs,
135     fe_amidxtaped_config,
136
137     fe_partial_estimate,
138     fe_calcsize_estimate,
139     fe_selfcheck_calcsize,
140
141     fe_recover_splits,
142     fe_amidxtaped_exchange_features,
143
144     fe_options_compress_cust,
145     fe_options_srvcomp_cust,
146     fe_options_encrypt_cust,
147     fe_options_encrypt_serv_cust,
148     fe_options_client_decrypt_option,
149     fe_options_server_decrypt_option,
150
151     fe_amindexd_marshall_in_OLSD,
152     fe_amindexd_marshall_in_ORLD,
153     fe_amindexd_marshall_in_DHST,
154     fe_amrecover_FEEDME,
155     fe_amrecover_timestamp,
156
157     fe_interface_quoted_text,
158
159     fe_program_star,
160
161     fe_amindexd_options_hostname,
162     fe_amindexd_options_features,
163     fe_amindexd_options_auth,
164
165     fe_amidxtaped_options_hostname,
166     fe_amidxtaped_options_features,
167     fe_amidxtaped_options_auth,
168
169     fe_amrecover_message,
170     fe_amrecover_feedme_tape,
171
172     fe_req_options_config,
173
174     fe_rep_sendsize_quoted_error,
175     fe_req_xml,
176     fe_pp_script,       // only in XML
177     fe_amindexd_DLE,
178     fe_amrecover_dle_in_header,
179     fe_xml_estimate,
180     fe_xml_property_priority,
181     fe_sendsize_rep_warning,
182     fe_xml_estimatelist,
183     fe_xml_level_server,
184     fe_xml_data_path,
185     fe_xml_directtcp_list,
186     fe_amidxtaped_datapath,
187     fe_sendbackup_noop,
188     fe_amrecover_origsize_in_header,
189     fe_amidxtaped_abort,
190     fe_amrecover_correct_disk_quoting,
191     fe_amindexd_quote_label,
192
193     fe_amrecover_receive_unfiltered,
194     fe_application_client_name,
195     fe_script_client_name,
196     fe_dumptype_property,
197
198     /*
199      * All new features must be inserted immediately *before* this entry.
200      */
201     last_feature
202 } am_feature_e;
203
204 /* don't include this struct or the subsequent functions in Amanda::Feature SWIG */
205 #ifndef AMANDA_FEATURE_SWG
206
207 typedef struct am_feature_s {
208     size_t              size;
209     unsigned char       *bytes;
210 } am_feature_t;
211
212 /*
213  * Functions.
214  */
215
216 extern am_feature_t *am_features(am_feature_t *f);
217 extern am_feature_t *am_init_feature_set(void);
218 extern am_feature_t *am_set_default_feature_set(void);
219 extern am_feature_t *am_allocate_feature_set(void);
220 extern void am_release_feature_set(am_feature_t *);
221 extern int am_add_feature(am_feature_t *f, am_feature_e n);
222 extern int am_remove_feature(am_feature_t *f, am_feature_e n);
223 extern int am_has_feature(am_feature_t *f, am_feature_e n);
224 extern char *am_feature_to_string(am_feature_t *f);
225 extern am_feature_t *am_string_to_feature(char *s);
226
227 #endif
228
229 #endif  /* !AMFEATURES_H */