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
53typedef void log_func_t(ulong_t, char *, ...);
54typedef void *	(*funct_t)(void *);	/* function pointer */
55
56extern longlong_t llmin(longlong_t, longlong_t);
57extern unsigned int min(unsigned int, unsigned int);
58extern unsigned int max(unsigned int, unsigned int);
59extern int oct_atoi(char *p);
60
61extern int tlm_log_fhnode(tlm_job_stats_t *,
62    char *,
63    char *,
64    struct stat64 *,
65    u_longlong_t);
66
67extern int tlm_log_fhdir(tlm_job_stats_t *,
68    char *,
69    struct stat64 *,
70    struct fs_fhandle *);
71
72extern int tlm_log_fhpath_name(tlm_job_stats_t *,
73    char *,
74    struct stat64 *,
75    u_longlong_t);
76
77extern boolean_t tlm_is_too_long(int,
78    char *,
79    char *);
80
81extern void tlm_log_list(char *,
82    char **);
83extern tlm_drive_t *tlm_drive(int, int);
84extern tlm_library_t *tlm_library(int);
85extern tlm_slot_t *tlm_slot(int, int);
86
87extern sasd_drive_t *sasd_slink_drive(scsi_link_t *);
88extern scsi_link_t *sasd_dev_slink(int);
89extern sasd_drive_t *sasd_drive(int);
90extern scsi_adapter_t *scsi_get_adapter(int);
91extern int scsi_get_adapter_count(void);
92
93extern char *sasd_slink_name(scsi_link_t *);
94extern int sasd_dev_count(void);
95extern int tlm_ioctl(int, int, void *);
96extern int probe_scsi();
97
98extern void tlm_enable_barcode(int);
99extern int tlm_insert_new_library(scsi_link_t *);
100extern int tlm_insert_new_drive(int);
101extern int tlm_insert_new_slot(int);
102
103extern char *tlm_get_tape_name(int, int);
104extern int tlm_library_count(void);
105
106extern boolean_t fs_is_rdonly(char *);
107extern boolean_t fs_is_chkpntvol();
108extern int get_zfsvolname(char *, int, char *);
109extern int chkpnt_creationtime_bypattern();
110
111extern log_func_t log_debug;
112extern log_func_t log_error;
113extern boolean_t match(char *, char *);
114
115extern void tlm_build_header_checksum(tlm_tar_hdr_t *);
116extern int tlm_vfy_tar_checksum(tlm_tar_hdr_t *);
117extern int tlm_entry_restored(tlm_job_stats_t *, char *, int);
118extern char *strupr(char *);
119extern char *parse(char **, char *);
120extern int sysattr_rdonly(char *);
121extern int sysattr_rw(char *);
122
123extern 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
132extern int tar_putdir(char *,
133    tlm_acls_t *,
134    tlm_cmd_t *,
135    tlm_job_stats_t *);
136
137extern int tar_getfile(tlm_backup_restore_arg_t *);
138
139extern int
140tar_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