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