3 # This file and its contents are supplied under the terms of the
4 # Common Development and Distribution License ("CDDL"), version 1.0.
5 # You may only use this file in accordance with the terms of version
8 # A full copy of the text of the CDDL should have accompanied this
9 # source. A copy of the CDDL is also available via the Internet at
10 # http://www.illumos.org/license/CDDL.
14 # Copyright 2017 Joyent, Inc.
18 # The purpose of this test is to verify that set-linkprop performs as
19 # it should -- both on persistent and temporary links.
22 vm_arg0
="$(basename $0)"
24 vm_pvnic
="test_pvnic$$"
25 vm_tvnic
="test_tvnic$$"
27 DL_FILE
=/etc
/dladm
/datalink.conf
32 [[ -z "$msg" ]] && msg
="failed"
33 echo "TEST_FAIL: $vm_arg0: $msg" >&2
35 # Try to clean up just in case
36 dladm delete-vnic
$vm_pvnic 2>/dev
/null
37 dladm delete-vnic
$vm_tvnic 2>/dev
/null
38 dladm delete-etherstub
$vm_stub 2>/dev
/null
44 dladm delete-etherstub
$vm_stub || fatal \
45 "failed to delete stub $vm_stub"
50 dladm create-etherstub
$vm_stub || fatal \
51 "failed to create stub"
59 dladm create-vnic
$flags -l $vm_stub $dev 2>/dev
/null || fatal \
60 "failed to create vnic: $dev"
67 dladm delete-vnic
$dev || fatal
"failed to delete vnic: $dev"
71 # Validate the property is reported by dladm.
80 [[ -z "$dev" ]] && fatal
"missing required device"
81 [[ -z "$prop" ]] && fatal
"missing required prop"
82 [[ -z "$val" ]] && fatal
"missing required val"
83 oval
=$
(dladm show-linkprop
-c -o value
-p $prop $dev |
tr -d ' ')
84 [[ $?
-eq 0 ]] || fatal
"failed to get $prop for $dev"
85 [[ "$val" == "$oval" ]] || fatal \
86 "$prop mismatch on $dev: expected $val, got $oval"
90 # Validate the property is persistent.
99 [[ -z "$dev" ]] && fatal
"missing required device"
100 [[ -z "$prop" ]] && fatal
"missing required prop"
101 [[ -z "$val" ]] && fatal
"missing required val"
103 oval
=$
(awk "/^$dev/ { print \$2 }" $DL_FILE | \
104 awk -F, "BEGIN { RS=\";\"; } /^$prop/ { print \$2; }")
106 [[ $?
-eq 0 ]] || fatal
"failed to get persistent $prop for $dev"
107 [[ "$val" == "$oval" ]] || fatal \
108 "persistent $prop mismatch on $dev: expected $val, got $oval"
112 # Validate the the property is not persistent.
119 [[ -z "$dev" ]] && fatal
"missing required device"
120 [[ -z "$prop" ]] && fatal
"missing required prop"
122 oval
=$
(awk "/^$dev/ { print \$2 }" $DL_FILE | \
123 awk -F, "BEGIN { RS=\";\"; } /^$prop/ { print \$2; }")
125 [[ $?
-eq 0 ]] || fatal
"failed to search $DL_FILE"
127 [[ -z "$oval" ]] || fatal \
128 "found persistent $prop for $dev but didn't expect to"
138 typeset msg
="failed to set prop $prop on $dev"
140 [[ "$#" -ne 4 ]] && fatal
"set_prop_pass() requires 4 args"
141 [[ -z "$dev" ]] && fatal
"missing required device"
142 [[ -z "$prop" ]] && fatal
"missing required prop"
143 [[ -z "$val" ]] && fatal
"missing required val"
145 if [ -n "$flags" ]; then
146 typeset msg
="failed to set temp prop $prop on $dev"
149 dladm set-linkprop
$flags -p $prop=$val $dev || fatal
$msg
154 [[ -f $DL_FILE ]] || fatal
"datalink file does not exist: $DL_FILE"
159 # Test setting persistent and temp properties on a persistent
162 create_vnic
$vm_pvnic
164 set_prop_pass
$vm_pvnic "-t" maxbw
89
165 validate_prop
$vm_pvnic maxbw
89
166 validate_not_pprop
$vm_pvnic maxbw
89
167 set_prop_pass
$vm_pvnic "-t" priority medium
168 validate_prop
$vm_pvnic priority medium
169 validate_not_pprop
$vm_pvnic priority medium
171 set_prop_pass
$vm_pvnic "" maxbw
99
172 validate_prop
$vm_pvnic maxbw
99
173 validate_pprop
$vm_pvnic maxbw
99
174 set_prop_pass
$vm_pvnic "" priority low
175 validate_prop
$vm_pvnic priority low
176 validate_pprop
$vm_pvnic priority low
178 delete_vnic
$vm_pvnic
181 # Test setting persistent and temp properties on a temp link.
182 # A "persistent" property on a temp link is really just a temp
183 # property. But setting a property on a temp link, without
184 # passing -t, should still work and report success to the
187 create_vnic
$vm_tvnic "-t"
189 set_prop_pass
$vm_tvnic "-t" maxbw
89
190 validate_prop
$vm_tvnic maxbw
89
191 validate_not_pprop
$vm_tvnic maxbw
89
192 set_prop_pass
$vm_tvnic "-t" priority medium
193 validate_prop
$vm_tvnic priority medium
194 validate_not_pprop
$vm_tvnic priority medium
196 set_prop_pass
$vm_tvnic "" maxbw
99
197 validate_prop
$vm_tvnic maxbw
99
198 validate_not_pprop
$vm_tvnic maxbw
99
199 set_prop_pass
$vm_tvnic "" priority low
200 validate_prop
$vm_tvnic priority low
201 validate_not_pprop
$vm_tvnic priority low
203 delete_vnic
$vm_tvnic