17917SReza.Sabdar@Sun.COM /* 2*12904SReza.Sabdar@Sun.COM * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. 37917SReza.Sabdar@Sun.COM */ 47917SReza.Sabdar@Sun.COM 57917SReza.Sabdar@Sun.COM /* 67917SReza.Sabdar@Sun.COM * BSD 3 Clause License 77917SReza.Sabdar@Sun.COM * 87917SReza.Sabdar@Sun.COM * Copyright (c) 2007, The Storage Networking Industry Association. 97917SReza.Sabdar@Sun.COM * 107917SReza.Sabdar@Sun.COM * Redistribution and use in source and binary forms, with or without 117917SReza.Sabdar@Sun.COM * modification, are permitted provided that the following conditions 127917SReza.Sabdar@Sun.COM * are met: 137917SReza.Sabdar@Sun.COM * - Redistributions of source code must retain the above copyright 147917SReza.Sabdar@Sun.COM * notice, this list of conditions and the following disclaimer. 157917SReza.Sabdar@Sun.COM * 167917SReza.Sabdar@Sun.COM * - Redistributions in binary form must reproduce the above copyright 177917SReza.Sabdar@Sun.COM * notice, this list of conditions and the following disclaimer in 187917SReza.Sabdar@Sun.COM * the documentation and/or other materials provided with the 197917SReza.Sabdar@Sun.COM * distribution. 207917SReza.Sabdar@Sun.COM * 217917SReza.Sabdar@Sun.COM * - Neither the name of The Storage Networking Industry Association (SNIA) 227917SReza.Sabdar@Sun.COM * nor the names of its contributors may be used to endorse or promote 237917SReza.Sabdar@Sun.COM * products derived from this software without specific prior written 247917SReza.Sabdar@Sun.COM * permission. 257917SReza.Sabdar@Sun.COM * 267917SReza.Sabdar@Sun.COM * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 277917SReza.Sabdar@Sun.COM * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 287917SReza.Sabdar@Sun.COM * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 297917SReza.Sabdar@Sun.COM * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 307917SReza.Sabdar@Sun.COM * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 317917SReza.Sabdar@Sun.COM * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 327917SReza.Sabdar@Sun.COM * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 337917SReza.Sabdar@Sun.COM * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 347917SReza.Sabdar@Sun.COM * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 357917SReza.Sabdar@Sun.COM * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 367917SReza.Sabdar@Sun.COM * POSSIBILITY OF SUCH DAMAGE. 377917SReza.Sabdar@Sun.COM */ 387917SReza.Sabdar@Sun.COM #ifndef _TLM_PROTO_H 397917SReza.Sabdar@Sun.COM #define _TLM_PROTO_H 407917SReza.Sabdar@Sun.COM 417917SReza.Sabdar@Sun.COM #include <tlm.h> 427917SReza.Sabdar@Sun.COM #include <tlm_buffers.h> 437917SReza.Sabdar@Sun.COM #include <ndmpd_door.h> 447917SReza.Sabdar@Sun.COM #include <dirent.h> 457917SReza.Sabdar@Sun.COM #include <syslog.h> 467917SReza.Sabdar@Sun.COM #include <pthread.h> 477917SReza.Sabdar@Sun.COM 487917SReza.Sabdar@Sun.COM #define SCSI_CHANGER_DIR "/dev/scsi/changer" 497917SReza.Sabdar@Sun.COM #define SCSI_TAPE_DIR "/dev/rmt" 507917SReza.Sabdar@Sun.COM 517917SReza.Sabdar@Sun.COM #define MAXIORETRY 20 527917SReza.Sabdar@Sun.COM 537917SReza.Sabdar@Sun.COM typedef void log_func_t(ulong_t, char *, ...); 547917SReza.Sabdar@Sun.COM typedef void * (*funct_t)(void *); /* function pointer */ 557917SReza.Sabdar@Sun.COM 567917SReza.Sabdar@Sun.COM extern longlong_t llmin(longlong_t, longlong_t); 577917SReza.Sabdar@Sun.COM extern unsigned int min(unsigned int, unsigned int); 587917SReza.Sabdar@Sun.COM extern unsigned int max(unsigned int, unsigned int); 597917SReza.Sabdar@Sun.COM extern int oct_atoi(char *p); 607917SReza.Sabdar@Sun.COM 617917SReza.Sabdar@Sun.COM extern int tlm_log_fhnode(tlm_job_stats_t *, 627917SReza.Sabdar@Sun.COM char *, 637917SReza.Sabdar@Sun.COM char *, 647917SReza.Sabdar@Sun.COM struct stat64 *, 657917SReza.Sabdar@Sun.COM u_longlong_t); 667917SReza.Sabdar@Sun.COM 677917SReza.Sabdar@Sun.COM extern int tlm_log_fhdir(tlm_job_stats_t *, 687917SReza.Sabdar@Sun.COM char *, 697917SReza.Sabdar@Sun.COM struct stat64 *, 707917SReza.Sabdar@Sun.COM struct fs_fhandle *); 717917SReza.Sabdar@Sun.COM 727917SReza.Sabdar@Sun.COM extern int tlm_log_fhpath_name(tlm_job_stats_t *, 737917SReza.Sabdar@Sun.COM char *, 747917SReza.Sabdar@Sun.COM struct stat64 *, 757917SReza.Sabdar@Sun.COM u_longlong_t); 767917SReza.Sabdar@Sun.COM 777917SReza.Sabdar@Sun.COM extern boolean_t tlm_is_too_long(int, 787917SReza.Sabdar@Sun.COM char *, 797917SReza.Sabdar@Sun.COM char *); 807917SReza.Sabdar@Sun.COM 817917SReza.Sabdar@Sun.COM extern void tlm_log_list(char *, 827917SReza.Sabdar@Sun.COM char **); 837917SReza.Sabdar@Sun.COM extern tlm_drive_t *tlm_drive(int, int); 847917SReza.Sabdar@Sun.COM extern tlm_library_t *tlm_library(int); 857917SReza.Sabdar@Sun.COM extern tlm_slot_t *tlm_slot(int, int); 867917SReza.Sabdar@Sun.COM 877917SReza.Sabdar@Sun.COM extern sasd_drive_t *sasd_slink_drive(scsi_link_t *); 887917SReza.Sabdar@Sun.COM extern scsi_link_t *sasd_dev_slink(int); 897917SReza.Sabdar@Sun.COM extern sasd_drive_t *sasd_drive(int); 907917SReza.Sabdar@Sun.COM extern scsi_adapter_t *scsi_get_adapter(int); 917917SReza.Sabdar@Sun.COM extern int scsi_get_adapter_count(void); 927917SReza.Sabdar@Sun.COM 937917SReza.Sabdar@Sun.COM extern char *sasd_slink_name(scsi_link_t *); 947917SReza.Sabdar@Sun.COM extern int sasd_dev_count(void); 957917SReza.Sabdar@Sun.COM extern int tlm_ioctl(int, int, void *); 967917SReza.Sabdar@Sun.COM extern int probe_scsi(); 977917SReza.Sabdar@Sun.COM 987917SReza.Sabdar@Sun.COM extern void tlm_enable_barcode(int); 997917SReza.Sabdar@Sun.COM extern int tlm_insert_new_library(scsi_link_t *); 1007917SReza.Sabdar@Sun.COM extern int tlm_insert_new_drive(int); 1017917SReza.Sabdar@Sun.COM extern int tlm_insert_new_slot(int); 1027917SReza.Sabdar@Sun.COM 1037917SReza.Sabdar@Sun.COM extern char *tlm_get_tape_name(int, int); 1047917SReza.Sabdar@Sun.COM extern int tlm_library_count(void); 1057917SReza.Sabdar@Sun.COM 1067917SReza.Sabdar@Sun.COM extern boolean_t fs_is_rdonly(char *); 1077917SReza.Sabdar@Sun.COM extern boolean_t fs_is_chkpntvol(); 1087917SReza.Sabdar@Sun.COM extern int get_zfsvolname(char *, int, char *); 1097917SReza.Sabdar@Sun.COM extern int chkpnt_creationtime_bypattern(); 1107917SReza.Sabdar@Sun.COM 1117917SReza.Sabdar@Sun.COM extern log_func_t log_debug; 1127917SReza.Sabdar@Sun.COM extern log_func_t log_error; 1137917SReza.Sabdar@Sun.COM extern boolean_t match(char *, char *); 1147917SReza.Sabdar@Sun.COM 1157917SReza.Sabdar@Sun.COM extern void tlm_build_header_checksum(tlm_tar_hdr_t *); 1167917SReza.Sabdar@Sun.COM extern int tlm_vfy_tar_checksum(tlm_tar_hdr_t *); 1177917SReza.Sabdar@Sun.COM extern int tlm_entry_restored(tlm_job_stats_t *, char *, int); 1187917SReza.Sabdar@Sun.COM extern char *strupr(char *); 1197917SReza.Sabdar@Sun.COM extern char *parse(char **, char *); 1208540SReza.Sabdar@Sun.COM extern int sysattr_rdonly(char *); 1218540SReza.Sabdar@Sun.COM extern int sysattr_rw(char *); 1227917SReza.Sabdar@Sun.COM 1237917SReza.Sabdar@Sun.COM extern int tar_putfile(char *, 1247917SReza.Sabdar@Sun.COM char *, 1257917SReza.Sabdar@Sun.COM char *, 1267917SReza.Sabdar@Sun.COM tlm_acls_t *, 1277917SReza.Sabdar@Sun.COM tlm_commands_t *, 1287917SReza.Sabdar@Sun.COM tlm_cmd_t *, 1297917SReza.Sabdar@Sun.COM tlm_job_stats_t *, 1307917SReza.Sabdar@Sun.COM struct hardlink_q *); 1317917SReza.Sabdar@Sun.COM 1327917SReza.Sabdar@Sun.COM extern int tar_putdir(char *, 1337917SReza.Sabdar@Sun.COM tlm_acls_t *, 1347917SReza.Sabdar@Sun.COM tlm_cmd_t *, 1357917SReza.Sabdar@Sun.COM tlm_job_stats_t *); 1367917SReza.Sabdar@Sun.COM 1377917SReza.Sabdar@Sun.COM extern int tar_getfile(tlm_backup_restore_arg_t *); 1387917SReza.Sabdar@Sun.COM 1397917SReza.Sabdar@Sun.COM extern int 1407917SReza.Sabdar@Sun.COM tar_getdir(tlm_commands_t *, 1417917SReza.Sabdar@Sun.COM tlm_cmd_t *, 1427917SReza.Sabdar@Sun.COM tlm_job_stats_t *, 1437917SReza.Sabdar@Sun.COM struct rs_name_maker *, 1447917SReza.Sabdar@Sun.COM int, 1457917SReza.Sabdar@Sun.COM int, 1467917SReza.Sabdar@Sun.COM char **, 1477917SReza.Sabdar@Sun.COM char **, 1487917SReza.Sabdar@Sun.COM int, 1497917SReza.Sabdar@Sun.COM int, 15011804SReza.Sabdar@Sun.COM char *, 1517917SReza.Sabdar@Sun.COM struct hardlink_q *); 1527917SReza.Sabdar@Sun.COM #endif /* _TLM_PROTO_H */ 153