xref: /illumos-gate/usr/src/cmd/ndmpd/tlm/tlm_proto.h (revision fb4eb4e8)
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