12654012fSReza Sabdar /* 2*fb4eb4e8SReza Sabdar * Copyright 2010 Sun Microsystems, Inc. All rights reserved. 32654012fSReza Sabdar * Use is subject to license terms. 42654012fSReza Sabdar */ 52654012fSReza Sabdar 62654012fSReza Sabdar /* 72654012fSReza Sabdar * BSD 3 Clause License 82654012fSReza Sabdar * 92654012fSReza Sabdar * Copyright (c) 2007, The Storage Networking Industry Association. 102654012fSReza Sabdar * 112654012fSReza Sabdar * Redistribution and use in source and binary forms, with or without 122654012fSReza Sabdar * modification, are permitted provided that the following conditions 132654012fSReza Sabdar * are met: 142654012fSReza Sabdar * - Redistributions of source code must retain the above copyright 152654012fSReza Sabdar * notice, this list of conditions and the following disclaimer. 162654012fSReza Sabdar * 172654012fSReza Sabdar * - Redistributions in binary form must reproduce the above copyright 182654012fSReza Sabdar * notice, this list of conditions and the following disclaimer in 192654012fSReza Sabdar * the documentation and/or other materials provided with the 202654012fSReza Sabdar * distribution. 212654012fSReza Sabdar * 222654012fSReza Sabdar * - Neither the name of The Storage Networking Industry Association (SNIA) 232654012fSReza Sabdar * nor the names of its contributors may be used to endorse or promote 242654012fSReza Sabdar * products derived from this software without specific prior written 252654012fSReza Sabdar * permission. 262654012fSReza Sabdar * 272654012fSReza Sabdar * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 282654012fSReza Sabdar * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 292654012fSReza Sabdar * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 302654012fSReza Sabdar * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 312654012fSReza Sabdar * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 322654012fSReza Sabdar * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 332654012fSReza Sabdar * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 342654012fSReza Sabdar * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 352654012fSReza Sabdar * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 362654012fSReza Sabdar * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 372654012fSReza Sabdar * POSSIBILITY OF SUCH DAMAGE. 382654012fSReza Sabdar */ 392654012fSReza Sabdar #ifndef _TLM_PROTO_H 402654012fSReza Sabdar #define _TLM_PROTO_H 412654012fSReza Sabdar 422654012fSReza Sabdar #include <tlm.h> 432654012fSReza Sabdar #include <tlm_buffers.h> 442654012fSReza Sabdar #include <ndmpd_door.h> 452654012fSReza Sabdar #include <dirent.h> 462654012fSReza Sabdar #include <syslog.h> 472654012fSReza Sabdar #include <pthread.h> 482654012fSReza Sabdar 492654012fSReza Sabdar #define SCSI_CHANGER_DIR "/dev/scsi/changer" 502654012fSReza Sabdar #define SCSI_TAPE_DIR "/dev/rmt" 512654012fSReza Sabdar 522654012fSReza Sabdar #define MAXIORETRY 20 532654012fSReza Sabdar 542654012fSReza Sabdar typedef void log_func_t(ulong_t, char *, ...); 552654012fSReza Sabdar typedef void * (*funct_t)(void *); /* function pointer */ 562654012fSReza Sabdar 572654012fSReza Sabdar extern longlong_t llmin(longlong_t, longlong_t); 582654012fSReza Sabdar extern unsigned int min(unsigned int, unsigned int); 592654012fSReza Sabdar extern unsigned int max(unsigned int, unsigned int); 602654012fSReza Sabdar extern int oct_atoi(char *p); 612654012fSReza Sabdar 622654012fSReza Sabdar extern int tlm_log_fhnode(tlm_job_stats_t *, 632654012fSReza Sabdar char *, 642654012fSReza Sabdar char *, 652654012fSReza Sabdar struct stat64 *, 662654012fSReza Sabdar u_longlong_t); 672654012fSReza Sabdar 682654012fSReza Sabdar extern int tlm_log_fhdir(tlm_job_stats_t *, 692654012fSReza Sabdar char *, 702654012fSReza Sabdar struct stat64 *, 712654012fSReza Sabdar struct fs_fhandle *); 722654012fSReza Sabdar 732654012fSReza Sabdar extern int tlm_log_fhpath_name(tlm_job_stats_t *, 742654012fSReza Sabdar char *, 752654012fSReza Sabdar struct stat64 *, 762654012fSReza Sabdar u_longlong_t); 772654012fSReza Sabdar 782654012fSReza Sabdar extern boolean_t tlm_is_too_long(int, 792654012fSReza Sabdar char *, 802654012fSReza Sabdar char *); 812654012fSReza Sabdar 822654012fSReza Sabdar extern void tlm_log_list(char *, 832654012fSReza Sabdar char **); 842654012fSReza Sabdar extern tlm_drive_t *tlm_drive(int, int); 852654012fSReza Sabdar extern tlm_library_t *tlm_library(int); 862654012fSReza Sabdar extern tlm_slot_t *tlm_slot(int, int); 872654012fSReza Sabdar 882654012fSReza Sabdar extern sasd_drive_t *sasd_slink_drive(scsi_link_t *); 892654012fSReza Sabdar extern scsi_link_t *sasd_dev_slink(int); 902654012fSReza Sabdar extern sasd_drive_t *sasd_drive(int); 912654012fSReza Sabdar extern scsi_adapter_t *scsi_get_adapter(int); 922654012fSReza Sabdar extern int scsi_get_adapter_count(void); 932654012fSReza Sabdar 942654012fSReza Sabdar extern char *sasd_slink_name(scsi_link_t *); 952654012fSReza Sabdar extern int sasd_dev_count(void); 962654012fSReza Sabdar extern int tlm_ioctl(int, int, void *); 972654012fSReza Sabdar extern int probe_scsi(); 982654012fSReza Sabdar 992654012fSReza Sabdar extern void tlm_enable_barcode(int); 1002654012fSReza Sabdar extern int tlm_insert_new_library(scsi_link_t *); 1012654012fSReza Sabdar extern int tlm_insert_new_drive(int); 1022654012fSReza Sabdar extern int tlm_insert_new_slot(int); 1032654012fSReza Sabdar 1042654012fSReza Sabdar extern char *tlm_get_tape_name(int, int); 1052654012fSReza Sabdar extern int tlm_library_count(void); 1062654012fSReza Sabdar 1072654012fSReza Sabdar extern boolean_t fs_is_rdonly(char *); 1082654012fSReza Sabdar extern boolean_t fs_is_chkpntvol(); 1092654012fSReza Sabdar extern int chkpnt_backup_successful(); 1102654012fSReza Sabdar extern int chkpnt_backup_prepare(); 1112654012fSReza Sabdar extern int get_zfsvolname(char *, int, char *); 1122654012fSReza Sabdar extern int chkpnt_creationtime_bypattern(); 1132654012fSReza Sabdar 1142654012fSReza Sabdar extern log_func_t log_debug; 1152654012fSReza Sabdar extern log_func_t log_error; 1162654012fSReza Sabdar extern boolean_t match(char *, char *); 1172654012fSReza Sabdar 1182654012fSReza Sabdar extern void tlm_build_header_checksum(tlm_tar_hdr_t *); 1192654012fSReza Sabdar extern int tlm_vfy_tar_checksum(tlm_tar_hdr_t *); 1202654012fSReza Sabdar extern int tlm_entry_restored(tlm_job_stats_t *, char *, int); 1212654012fSReza Sabdar extern char *strupr(char *); 1222654012fSReza Sabdar extern char *parse(char **, char *); 123b6b15642SReza Sabdar extern int sysattr_rdonly(char *); 124b6b15642SReza Sabdar extern int sysattr_rw(char *); 1252654012fSReza Sabdar 1262654012fSReza Sabdar extern int tar_putfile(char *, 1272654012fSReza Sabdar char *, 1282654012fSReza Sabdar char *, 1292654012fSReza Sabdar tlm_acls_t *, 1302654012fSReza Sabdar tlm_commands_t *, 1312654012fSReza Sabdar tlm_cmd_t *, 1322654012fSReza Sabdar tlm_job_stats_t *, 1332654012fSReza Sabdar struct hardlink_q *); 1342654012fSReza Sabdar 1352654012fSReza Sabdar extern int tar_putdir(char *, 1362654012fSReza Sabdar tlm_acls_t *, 1372654012fSReza Sabdar tlm_cmd_t *, 1382654012fSReza Sabdar tlm_job_stats_t *); 1392654012fSReza Sabdar 1402654012fSReza Sabdar extern int tar_getfile(tlm_backup_restore_arg_t *); 1412654012fSReza Sabdar 1422654012fSReza Sabdar extern int 1432654012fSReza Sabdar tar_getdir(tlm_commands_t *, 1442654012fSReza Sabdar tlm_cmd_t *, 1452654012fSReza Sabdar tlm_job_stats_t *, 1462654012fSReza Sabdar struct rs_name_maker *, 1472654012fSReza Sabdar int, 1482654012fSReza Sabdar int, 1492654012fSReza Sabdar char **, 1502654012fSReza Sabdar char **, 1512654012fSReza Sabdar int, 1522654012fSReza Sabdar int, 153*fb4eb4e8SReza Sabdar char *, 1542654012fSReza Sabdar struct hardlink_q *); 1552654012fSReza Sabdar #endif /* _TLM_PROTO_H */ 156