1d583b39bSJohn Wren Kennedy#!/bin/ksh -p 2d583b39bSJohn Wren Kennedy# 3d583b39bSJohn Wren Kennedy# CDDL HEADER START 4d583b39bSJohn Wren Kennedy# 5d583b39bSJohn Wren Kennedy# The contents of this file are subject to the terms of the 6d583b39bSJohn Wren Kennedy# Common Development and Distribution License (the "License"). 7d583b39bSJohn Wren Kennedy# You may not use this file except in compliance with the License. 8d583b39bSJohn Wren Kennedy# 9d583b39bSJohn Wren Kennedy# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10d583b39bSJohn Wren Kennedy# or http://www.opensolaris.org/os/licensing. 11d583b39bSJohn Wren Kennedy# See the License for the specific language governing permissions 12d583b39bSJohn Wren Kennedy# and limitations under the License. 13d583b39bSJohn Wren Kennedy# 14d583b39bSJohn Wren Kennedy# When distributing Covered Code, include this CDDL HEADER in each 15d583b39bSJohn Wren Kennedy# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16d583b39bSJohn Wren Kennedy# If applicable, add the following below this CDDL HEADER, with the 17d583b39bSJohn Wren Kennedy# fields enclosed by brackets "[]" replaced with your own identifying 18d583b39bSJohn Wren Kennedy# information: Portions Copyright [yyyy] [name of copyright owner] 19d583b39bSJohn Wren Kennedy# 20d583b39bSJohn Wren Kennedy# CDDL HEADER END 21d583b39bSJohn Wren Kennedy# 22d583b39bSJohn Wren Kennedy 23d583b39bSJohn Wren Kennedy# 24d583b39bSJohn Wren Kennedy# Copyright 2007 Sun Microsystems, Inc. All rights reserved. 25d583b39bSJohn Wren Kennedy# Use is subject to license terms. 26d583b39bSJohn Wren Kennedy# 27d583b39bSJohn Wren Kennedy 281d32ba66SJohn Wren Kennedy# 291d32ba66SJohn Wren Kennedy# Copyright (c) 2016 by Delphix. All rights reserved. 30*c09fb523SKody Kantor# Copyright 2019 Joyent, Inc. 311d32ba66SJohn Wren Kennedy# 321d32ba66SJohn Wren Kennedy 33d583b39bSJohn Wren Kennedy. $STF_SUITE/include/libtest.shlib 34d583b39bSJohn Wren Kennedy 35d583b39bSJohn Wren Kennedy# 36d583b39bSJohn Wren Kennedy# DESCRIPTION: 37d583b39bSJohn Wren Kennedy# Verify that NFS share options are propagated correctly. 38d583b39bSJohn Wren Kennedy# 39d583b39bSJohn Wren Kennedy# STRATEGY: 40d583b39bSJohn Wren Kennedy# 1. Create a ZFS file system. 41d583b39bSJohn Wren Kennedy# 2. For each option in the list, set the sharenfs property. 42d583b39bSJohn Wren Kennedy# 3. Verify through the share command that the options are propagated. 43d583b39bSJohn Wren Kennedy# 44d583b39bSJohn Wren Kennedy 45d583b39bSJohn Wren Kennedyverify_runnable "global" 46d583b39bSJohn Wren Kennedy 47d583b39bSJohn Wren Kennedyfunction cleanup 48d583b39bSJohn Wren Kennedy{ 491d32ba66SJohn Wren Kennedy log_must zfs set sharenfs=off $TESTPOOL/$TESTFS 50d583b39bSJohn Wren Kennedy is_shared $TESTPOOL/$TESTFS && \ 51d583b39bSJohn Wren Kennedy log_must unshare_fs $TESTPOOL/$TESTFS 52d583b39bSJohn Wren Kennedy} 53d583b39bSJohn Wren Kennedy 54d583b39bSJohn Wren Kennedyset -A shareopts \ 55d583b39bSJohn Wren Kennedy "ro" "ro=machine1" "ro=machine1:machine2" \ 56d583b39bSJohn Wren Kennedy "rw" "rw=machine1" "rw=machine1:machine2" \ 57d583b39bSJohn Wren Kennedy "ro=machine1:machine2,rw" "anon=0" "anon=0,sec=sys,rw" \ 58d583b39bSJohn Wren Kennedy "nosuid" "root=machine1:machine2" "rw=.mydomain.mycompany.com" \ 59d583b39bSJohn Wren Kennedy "rw=-terra:engineering" "log" "public" 60d583b39bSJohn Wren Kennedy 61d583b39bSJohn Wren Kennedylog_assert "Verify that NFS share options are propagated correctly." 62d583b39bSJohn Wren Kennedylog_onexit cleanup 63d583b39bSJohn Wren Kennedy 64d583b39bSJohn Wren Kennedycleanup 65d583b39bSJohn Wren Kennedy 66*c09fb523SKody Kantor# /var/nfs is the default nfs log directory in illumos. 67*c09fb523SKody Kantorif [[ ! -d /var/nfs ]]; then 68*c09fb523SKody Kantor log_must mkdir /var/nfs 69*c09fb523SKody Kantorfi 70*c09fb523SKody Kantor 71d583b39bSJohn Wren Kennedytypeset -i i=0 72d583b39bSJohn Wren Kennedywhile (( i < ${#shareopts[*]} )) 73d583b39bSJohn Wren Kennedydo 741d32ba66SJohn Wren Kennedy log_must zfs set sharenfs="${shareopts[i]}" $TESTPOOL/$TESTFS 75d583b39bSJohn Wren Kennedy 76d583b39bSJohn Wren Kennedy option=`get_prop sharenfs $TESTPOOL/$TESTFS` 77d583b39bSJohn Wren Kennedy if [[ $option != ${shareopts[i]} ]]; then 78d583b39bSJohn Wren Kennedy log_fail "get sharenfs failed. ($option != ${shareopts[i]})" 79d583b39bSJohn Wren Kennedy fi 80d583b39bSJohn Wren Kennedy 811d32ba66SJohn Wren Kennedy share | grep $option > /dev/null 2>&1 82d583b39bSJohn Wren Kennedy if (( $? != 0 )); then 83d583b39bSJohn Wren Kennedy log_fail "The '$option' option was not found in share output." 84d583b39bSJohn Wren Kennedy fi 85d583b39bSJohn Wren Kennedy 86d583b39bSJohn Wren Kennedy ((i = i + 1)) 87d583b39bSJohn Wren Kennedydone 88d583b39bSJohn Wren Kennedy 89d583b39bSJohn Wren Kennedylog_pass "NFS options were propagated correctly." 90