xref: /illumos-gate/usr/src/cmd/ndmpd/tlm/tlm_proto.h (revision 8159a906dbf7d5466ef599875f165fe944ed07e7)
1 /*
2  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
3  * Use is subject to license terms.
4  */
5 
6 /*
7  * BSD 3 Clause License
8  *
9  * Copyright (c) 2007, The Storage Networking Industry Association.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  * 	- Redistributions of source code must retain the above copyright
15  *	  notice, this list of conditions and the following disclaimer.
16  *
17  * 	- Redistributions in binary form must reproduce the above copyright
18  *	  notice, this list of conditions and the following disclaimer in
19  *	  the documentation and/or other materials provided with the
20  *	  distribution.
21  *
22  *	- Neither the name of The Storage Networking Industry Association (SNIA)
23  *	  nor the names of its contributors may be used to endorse or promote
24  *	  products derived from this software without specific prior written
25  *	  permission.
26  *
27  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
28  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
30  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
31  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
32  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
33  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
34  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
35  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
36  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37  * POSSIBILITY OF SUCH DAMAGE.
38  */
39 #ifndef	_TLM_PROTO_H
40 #define	_TLM_PROTO_H
41 
42 #include <tlm.h>
43 #include <tlm_buffers.h>
44 #include <ndmpd_door.h>
45 #include <dirent.h>
46 #include <syslog.h>
47 #include <pthread.h>
48 
49 #define	SCSI_CHANGER_DIR	"/dev/scsi/changer"
50 #define	SCSI_TAPE_DIR		"/dev/rmt"
51 
52 #define	MAXIORETRY	20
53 
54 typedef void log_func_t(ulong_t, char *, ...);
55 typedef void *	(*funct_t)(void *);	/* function pointer */
56 
57 extern longlong_t llmin(longlong_t, longlong_t);
58 extern unsigned int min(unsigned int, unsigned int);
59 extern unsigned int max(unsigned int, unsigned int);
60 extern int oct_atoi(char *p);
61 
62 extern int tlm_log_fhnode(tlm_job_stats_t *,
63     char *,
64     char *,
65     struct stat64 *,
66     u_longlong_t);
67 
68 extern int tlm_log_fhdir(tlm_job_stats_t *,
69     char *,
70     struct stat64 *,
71     struct fs_fhandle *);
72 
73 extern int tlm_log_fhpath_name(tlm_job_stats_t *,
74     char *,
75     struct stat64 *,
76     u_longlong_t);
77 
78 extern boolean_t tlm_is_too_long(int,
79     char *,
80     char *);
81 
82 extern void tlm_log_list(char *,
83     char **);
84 extern tlm_drive_t *tlm_drive(int, int);
85 extern tlm_library_t *tlm_library(int);
86 extern tlm_slot_t *tlm_slot(int, int);
87 
88 extern sasd_drive_t *sasd_slink_drive(scsi_link_t *);
89 extern scsi_link_t *sasd_dev_slink(int);
90 extern sasd_drive_t *sasd_drive(int);
91 extern scsi_adapter_t *scsi_get_adapter(int);
92 extern int scsi_get_adapter_count(void);
93 
94 extern char *sasd_slink_name(scsi_link_t *);
95 extern int sasd_dev_count(void);
96 extern int tlm_ioctl(int, int, void *);
97 extern int probe_scsi();
98 
99 extern void tlm_enable_barcode(int);
100 extern int tlm_insert_new_library(scsi_link_t *);
101 extern int tlm_insert_new_drive(int);
102 extern int tlm_insert_new_slot(int);
103 
104 extern char *tlm_get_tape_name(int, int);
105 extern int tlm_library_count(void);
106 
107 extern boolean_t fs_is_rdonly(char *);
108 extern boolean_t fs_is_chkpntvol();
109 extern int chkpnt_backup_successful();
110 extern int chkpnt_backup_prepare();
111 extern int get_zfsvolname(char *, int, char *);
112 extern int chkpnt_creationtime_bypattern();
113 
114 extern log_func_t log_debug;
115 extern log_func_t log_error;
116 extern boolean_t match(char *, char *);
117 
118 extern void tlm_build_header_checksum(tlm_tar_hdr_t *);
119 extern int tlm_vfy_tar_checksum(tlm_tar_hdr_t *);
120 extern int tlm_entry_restored(tlm_job_stats_t *, char *, int);
121 extern char *strupr(char *);
122 extern char *parse(char **, char *);
123 extern int sysattr_rdonly(char *);
124 extern int sysattr_rw(char *);
125 
126 extern int tar_putfile(char *,
127     char *,
128     char *,
129     tlm_acls_t *,
130     tlm_commands_t *,
131     tlm_cmd_t *,
132     tlm_job_stats_t *,
133     struct hardlink_q *);
134 
135 extern int tar_putdir(char *,
136     tlm_acls_t *,
137     tlm_cmd_t *,
138     tlm_job_stats_t *);
139 
140 extern int tar_getfile(tlm_backup_restore_arg_t *);
141 
142 extern int
143 tar_getdir(tlm_commands_t *,
144     tlm_cmd_t *,
145     tlm_job_stats_t *,
146     struct rs_name_maker *,
147     int,
148     int,
149     char **,
150     char **,
151     int,
152     int,
153     struct hardlink_q *);
154 #endif	/* _TLM_PROTO_H */
155