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 <pthread.h> 46 47 #define SCSI_CHANGER_DIR "/dev/scsi/changer" 48 #define SCSI_TAPE_DIR "/dev/rmt" 49 50 #define MAXIORETRY 20 51 52 typedef void log_func_t(ulong_t, char *, ...); 53 typedef void * (*funct_t)(void *); /* function pointer */ 54 55 extern longlong_t llmin(longlong_t, longlong_t); 56 extern unsigned int min(unsigned int, unsigned int); 57 extern unsigned int max(unsigned int, unsigned int); 58 extern int oct_atoi(char *p); 59 60 extern int tlm_log_fhnode(tlm_job_stats_t *, 61 char *, 62 char *, 63 struct stat64 *, 64 u_longlong_t); 65 66 extern int tlm_log_fhdir(tlm_job_stats_t *, 67 char *, 68 struct stat64 *, 69 struct fs_fhandle *); 70 71 extern int tlm_log_fhpath_name(tlm_job_stats_t *, 72 char *, 73 struct stat64 *, 74 u_longlong_t); 75 76 extern boolean_t tlm_is_too_long(int, 77 char *, 78 char *); 79 80 extern void tlm_log_list(char *, 81 char **); 82 extern tlm_drive_t *tlm_drive(int, int); 83 extern tlm_library_t *tlm_library(int); 84 extern tlm_slot_t *tlm_slot(int, int); 85 86 extern sasd_drive_t *sasd_slink_drive(scsi_link_t *); 87 extern scsi_link_t *sasd_dev_slink(int); 88 extern sasd_drive_t *sasd_drive(int); 89 extern scsi_adapter_t *scsi_get_adapter(int); 90 extern int scsi_get_adapter_count(void); 91 92 extern char *sasd_slink_name(scsi_link_t *); 93 extern int sasd_dev_count(void); 94 extern int tlm_ioctl(int, int, void *); 95 extern int probe_scsi(); 96 97 extern void tlm_enable_barcode(int); 98 extern int tlm_insert_new_library(scsi_link_t *); 99 extern int tlm_insert_new_drive(int); 100 extern int tlm_insert_new_slot(int); 101 102 extern char *tlm_get_tape_name(int, int); 103 extern int tlm_library_count(void); 104 105 extern boolean_t fs_is_rdonly(char *); 106 extern boolean_t fs_is_chkpntvol(); 107 extern int get_zfsvolname(char *, int, char *); 108 extern int chkpnt_creationtime_bypattern(); 109 110 extern log_func_t log_debug; 111 extern log_func_t log_error; 112 extern boolean_t match(char *, char *); 113 114 extern void tlm_build_header_checksum(tlm_tar_hdr_t *); 115 extern int tlm_vfy_tar_checksum(tlm_tar_hdr_t *); 116 extern int tlm_entry_restored(tlm_job_stats_t *, char *, int); 117 extern char *strupr(char *); 118 extern char *parse(char **, char *); 119 extern int sysattr_rdonly(char *); 120 extern int sysattr_rw(char *); 121 122 extern int tar_putfile(char *, 123 char *, 124 char *, 125 tlm_acls_t *, 126 tlm_commands_t *, 127 tlm_cmd_t *, 128 tlm_job_stats_t *, 129 struct hardlink_q *); 130 131 extern int tar_putdir(char *, 132 tlm_acls_t *, 133 tlm_cmd_t *, 134 tlm_job_stats_t *); 135 136 extern int tar_getfile(tlm_backup_restore_arg_t *); 137 138 extern int 139 tar_getdir(tlm_commands_t *, 140 tlm_cmd_t *, 141 tlm_job_stats_t *, 142 struct rs_name_maker *, 143 int, 144 int, 145 char **, 146 char **, 147 int, 148 int, 149 char *, 150 struct hardlink_q *); 151 #endif /* _TLM_PROTO_H */