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