1*96c8483aSYuri Pankov# 2*96c8483aSYuri Pankov# CDDL HEADER START 3*96c8483aSYuri Pankov# 4*96c8483aSYuri Pankov# The contents of this file are subject to the terms of the 5*96c8483aSYuri Pankov# Common Development and Distribution License (the "License"). 6*96c8483aSYuri Pankov# You may not use this file except in compliance with the License. 7*96c8483aSYuri Pankov# 8*96c8483aSYuri Pankov# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*96c8483aSYuri Pankov# or http://www.opensolaris.org/os/licensing. 10*96c8483aSYuri Pankov# See the License for the specific language governing permissions 11*96c8483aSYuri Pankov# and limitations under the License. 12*96c8483aSYuri Pankov# 13*96c8483aSYuri Pankov# When distributing Covered Code, include this CDDL HEADER in each 14*96c8483aSYuri Pankov# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*96c8483aSYuri Pankov# If applicable, add the following below this CDDL HEADER, with the 16*96c8483aSYuri Pankov# fields enclosed by brackets "[]" replaced with your own identifying 17*96c8483aSYuri Pankov# information: Portions Copyright [yyyy] [name of copyright owner] 18*96c8483aSYuri Pankov# 19*96c8483aSYuri Pankov# CDDL HEADER END 20*96c8483aSYuri Pankov# 21*96c8483aSYuri Pankov 22*96c8483aSYuri Pankov# 23*96c8483aSYuri Pankov# Copyright 2010 Sun Microsystems, Inc. All rights reserved. 24*96c8483aSYuri Pankov# 25*96c8483aSYuri Pankov 26*96c8483aSYuri Pankov# 27*96c8483aSYuri Pankov# NAME 28*96c8483aSYuri Pankov# smbmount_init 29*96c8483aSYuri Pankov# 30*96c8483aSYuri Pankov# DESCRIPTION 31*96c8483aSYuri Pankov# Create mount point for smbfs 32*96c8483aSYuri Pankov# 33*96c8483aSYuri Pankov# RETURN 34*96c8483aSYuri Pankov# 0 - create successfully 35*96c8483aSYuri Pankov# 1 - create failed 36*96c8483aSYuri Pankov# 37*96c8483aSYuri Pankovsmbmount_init() { 38*96c8483aSYuri Pankov rm -rf $1 39*96c8483aSYuri Pankov cti_execute_cmd "mkdir $1" 40*96c8483aSYuri Pankov if [[ $? != 0 ]]; then 41*96c8483aSYuri Pankov cti_unresolved "UNRESOLVED: mkdir $1 failed" 42*96c8483aSYuri Pankov exit 1 43*96c8483aSYuri Pankov else 44*96c8483aSYuri Pankov cti_report "PASS: mkdir $1 successfully" 45*96c8483aSYuri Pankov fi 46*96c8483aSYuri Pankov return 0 47*96c8483aSYuri Pankov} 48*96c8483aSYuri Pankov 49*96c8483aSYuri Pankov# 50*96c8483aSYuri Pankov# NAME 51*96c8483aSYuri Pankov# testdir_init 52*96c8483aSYuri Pankov# 53*96c8483aSYuri Pankov# DESCRIPTION 54*96c8483aSYuri Pankov# Create the test directory for smbfs testing 55*96c8483aSYuri Pankov# 56*96c8483aSYuri Pankov# RETURN 57*96c8483aSYuri Pankov# 0 - create successfully 58*96c8483aSYuri Pankov# 1 - create failed 59*96c8483aSYuri Pankov# 60*96c8483aSYuri Pankovtestdir_init() { 61*96c8483aSYuri Pankov rm -rf $1 62*96c8483aSYuri Pankov cti_execute_cmd "mkdir $1" 63*96c8483aSYuri Pankov if [[ $? != 0 ]]; then 64*96c8483aSYuri Pankov cti_unresolved "UNRESOLVED: mkdir $1 failed" 65*96c8483aSYuri Pankov exit 1 66*96c8483aSYuri Pankov else 67*96c8483aSYuri Pankov cti_report "PASS: mkdir $1 successfully" 68*96c8483aSYuri Pankov fi 69*96c8483aSYuri Pankov return 0 70*96c8483aSYuri Pankov} 71*96c8483aSYuri Pankov 72*96c8483aSYuri Pankov# 73*96c8483aSYuri Pankov# NAME 74*96c8483aSYuri Pankov# smbmount_getmntopts 75*96c8483aSYuri Pankov# 76*96c8483aSYuri Pankov# DESCRIPTION 77*96c8483aSYuri Pankov# Get the mount options string for the passed mount point, 78*96c8483aSYuri Pankov# (i.e. remote/read/write/setuid/devices/intr/xattr/dev=...) 79*96c8483aSYuri Pankov# which is copied to stdout for use by the caller. 80*96c8483aSYuri Pankov# 81*96c8483aSYuri Pankov# RETURN 82*96c8483aSYuri Pankov# 0 - the mount is found, and is an smbfs mount 83*96c8483aSYuri Pankov# 1 - any problem (no stdout in error cases) 84*96c8483aSYuri Pankov# 85*96c8483aSYuri Pankovsmbmount_getmntopts() { 86*96c8483aSYuri Pankov typeset res on mp tp mtype opts rest 87*96c8483aSYuri Pankov /usr/sbin/mount -v | 88*96c8483aSYuri Pankov while read res on mp tp mtype opts rest 89*96c8483aSYuri Pankov do 90*96c8483aSYuri Pankov if [[ "$mp" == "$1" ]] ; then 91*96c8483aSYuri Pankov if [[ $mtype != smbfs ]] ; then 92*96c8483aSYuri Pankov echo "$1: not an smbfs mount" >&2 93*96c8483aSYuri Pankov return 1 94*96c8483aSYuri Pankov fi 95*96c8483aSYuri Pankov echo "$opts" 96*96c8483aSYuri Pankov return 0 97*96c8483aSYuri Pankov fi 98*96c8483aSYuri Pankov done 99*96c8483aSYuri Pankov echo "$1: no such mount point" >&2 100*96c8483aSYuri Pankov return 1 101*96c8483aSYuri Pankov} 102*96c8483aSYuri Pankov 103*96c8483aSYuri Pankov# 104*96c8483aSYuri Pankov# NAME 105*96c8483aSYuri Pankov# smbmount_check 106*96c8483aSYuri Pankov# 107*96c8483aSYuri Pankov# DESCRIPTION 108*96c8483aSYuri Pankov# verify the passed dir is an smbfs mount 109*96c8483aSYuri Pankov# 110*96c8483aSYuri Pankov# RETURN 111*96c8483aSYuri Pankov# 0 - it is an smbfs mount (successful) 112*96c8483aSYuri Pankov# 1 - it is not... (fail) 113*96c8483aSYuri Pankov# 114*96c8483aSYuri Pankovsmbmount_check() { 115*96c8483aSYuri Pankov cti_execute FAIL smbmount_getmntopts "$1" 116*96c8483aSYuri Pankov return $? 117*96c8483aSYuri Pankov} 118*96c8483aSYuri Pankov 119*96c8483aSYuri Pankov# 120*96c8483aSYuri Pankov# NAME 121*96c8483aSYuri Pankov# smbmount_clean 122*96c8483aSYuri Pankov# 123*96c8483aSYuri Pankov# DESCRIPTION 124*96c8483aSYuri Pankov# umount the smbfs and cleanup the mount point 125*96c8483aSYuri Pankov# 126*96c8483aSYuri Pankov# RETURN 127*96c8483aSYuri Pankov# 0 - umount and cleanup successfully 128*96c8483aSYuri Pankov# 1 - umount or cleanup failed 129*96c8483aSYuri Pankov# 130*96c8483aSYuri Pankovsmbmount_clean() { 131*96c8483aSYuri Pankov 132*96c8483aSYuri Pankov # is it mounted? 133*96c8483aSYuri Pankov smbmount_getmntopts "$1" >/dev/null 2>&1 134*96c8483aSYuri Pankov if [[ $? == 0 ]]; then 135*96c8483aSYuri Pankov cti_execute_cmd sudo -n "umount -f $1" 136*96c8483aSYuri Pankov if [[ $? != 0 ]]; then 137*96c8483aSYuri Pankov cti_report "umount -f $1 failed" 138*96c8483aSYuri Pankov exit 1 139*96c8483aSYuri Pankov fi 140*96c8483aSYuri Pankov fi 141*96c8483aSYuri Pankov 142*96c8483aSYuri Pankov rm -rf $1 143*96c8483aSYuri Pankov if [[ $? != 0 ]]; then 144*96c8483aSYuri Pankov cti_report "rm -rf $1 failed" 145*96c8483aSYuri Pankov exit 1 146*96c8483aSYuri Pankov fi 147*96c8483aSYuri Pankov return 0 148*96c8483aSYuri Pankov} 149