1*12926SMark.Haywood@Oracle.COM#!/sbin/sh 2*12926SMark.Haywood@Oracle.COM# 3*12926SMark.Haywood@Oracle.COM# CDDL HEADER START 4*12926SMark.Haywood@Oracle.COM# 5*12926SMark.Haywood@Oracle.COM# The contents of this file are subject to the terms of the 6*12926SMark.Haywood@Oracle.COM# Common Development and Distribution License (the "License"). 7*12926SMark.Haywood@Oracle.COM# You may not use this file except in compliance with the License. 8*12926SMark.Haywood@Oracle.COM# 9*12926SMark.Haywood@Oracle.COM# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*12926SMark.Haywood@Oracle.COM# or http://www.opensolaris.org/os/licensing. 11*12926SMark.Haywood@Oracle.COM# See the License for the specific language governing permissions 12*12926SMark.Haywood@Oracle.COM# and limitations under the License. 13*12926SMark.Haywood@Oracle.COM# 14*12926SMark.Haywood@Oracle.COM# When distributing Covered Code, include this CDDL HEADER in each 15*12926SMark.Haywood@Oracle.COM# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*12926SMark.Haywood@Oracle.COM# If applicable, add the following below this CDDL HEADER, with the 17*12926SMark.Haywood@Oracle.COM# fields enclosed by brackets "[]" replaced with your own identifying 18*12926SMark.Haywood@Oracle.COM# information: Portions Copyright [yyyy] [name of copyright owner] 19*12926SMark.Haywood@Oracle.COM# 20*12926SMark.Haywood@Oracle.COM# CDDL HEADER END 21*12926SMark.Haywood@Oracle.COM# 22*12926SMark.Haywood@Oracle.COM# 23*12926SMark.Haywood@Oracle.COM# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. 24*12926SMark.Haywood@Oracle.COM# 25*12926SMark.Haywood@Oracle.COM 26*12926SMark.Haywood@Oracle.COM. /lib/svc/share/smf_include.sh 27*12926SMark.Haywood@Oracle.COM. /lib/svc/share/net_include.sh 28*12926SMark.Haywood@Oracle.COM 29*12926SMark.Haywood@Oracle.COMIPADM=/sbin/ipadm 30*12926SMark.Haywood@Oracle.COMSVCCFG=/usr/sbin/svccfg 31*12926SMark.Haywood@Oracle.COMSVCPROP=/usr/bin/svcprop 32*12926SMark.Haywood@Oracle.COMSVCADM=/usr/sbin/svcadm 33*12926SMark.Haywood@Oracle.COMROUTE=/sbin/route 34*12926SMark.Haywood@Oracle.COM 35*12926SMark.Haywood@Oracle.COMNET_NWAM_FMRI="svc:/network/physical:nwam" 36*12926SMark.Haywood@Oracle.COMNET_INSTALL_FMRI=$SMF_FMRI 37*12926SMark.Haywood@Oracle.COM 38*12926SMark.Haywood@Oracle.COMNET_V4IF=install_ipv4_interface 39*12926SMark.Haywood@Oracle.COMNET_V6IF=install_ipv6_interface 40*12926SMark.Haywood@Oracle.COM 41*12926SMark.Haywood@Oracle.COMNET_UNDEFINED_STRING_PROP="\"\"" 42*12926SMark.Haywood@Oracle.COM 43*12926SMark.Haywood@Oracle.COMnet_install_debug=0 44*12926SMark.Haywood@Oracle.COM 45*12926SMark.Haywood@Oracle.COMunset net_install_name net_install_addrtype net_install_addr \ 46*12926SMark.Haywood@Oracle.COM net_install_dhcpwait net_install_interface_id \ 47*12926SMark.Haywood@Oracle.COM net_install_stateless net_install_stateful net_install_route 48*12926SMark.Haywood@Oracle.COM 49*12926SMark.Haywood@Oracle.COMnet_configure_install_if() 50*12926SMark.Haywood@Oracle.COM{ 51*12926SMark.Haywood@Oracle.COM ipv6_interface=$1 52*12926SMark.Haywood@Oracle.COM 53*12926SMark.Haywood@Oracle.COM case $net_install_addrtype in 54*12926SMark.Haywood@Oracle.COM static) 55*12926SMark.Haywood@Oracle.COM cmd="$IPADM create-addr -T static " 56*12926SMark.Haywood@Oracle.COM cmd=$cmd"-a local=$net_install_addr $net_install_name" 57*12926SMark.Haywood@Oracle.COM ;; 58*12926SMark.Haywood@Oracle.COM 59*12926SMark.Haywood@Oracle.COM dhcp) 60*12926SMark.Haywood@Oracle.COM dhcpwait="" 61*12926SMark.Haywood@Oracle.COM if [ "$net_install_dhcpwait" != "" ]; then 62*12926SMark.Haywood@Oracle.COM dhcpwait="-w $net_install_dhcpwait" 63*12926SMark.Haywood@Oracle.COM fi 64*12926SMark.Haywood@Oracle.COM 65*12926SMark.Haywood@Oracle.COM cmd="$IPADM create-addr -T dhcp $dhcpwait $net_install_name" 66*12926SMark.Haywood@Oracle.COM ;; 67*12926SMark.Haywood@Oracle.COM addrconf) 68*12926SMark.Haywood@Oracle.COM interface_id="" 69*12926SMark.Haywood@Oracle.COM if [ "$net_install_interface_id" != "" ]; then 70*12926SMark.Haywood@Oracle.COM interface_id="-i $net_install_interface_id" 71*12926SMark.Haywood@Oracle.COM fi 72*12926SMark.Haywood@Oracle.COM 73*12926SMark.Haywood@Oracle.COM state="" 74*12926SMark.Haywood@Oracle.COM if [ "$net_install_stateless" != "" ]; then 75*12926SMark.Haywood@Oracle.COM state="-p stateless=$net_install_stateless" 76*12926SMark.Haywood@Oracle.COM fi 77*12926SMark.Haywood@Oracle.COM 78*12926SMark.Haywood@Oracle.COM if [ "$net_install_stateful" != "" ]; then 79*12926SMark.Haywood@Oracle.COM if [ "$state" = "" ]; then 80*12926SMark.Haywood@Oracle.COM state="-p stateful=$net_install_stateful" 81*12926SMark.Haywood@Oracle.COM else 82*12926SMark.Haywood@Oracle.COM state=$state",stateful=$net_install_stateful" 83*12926SMark.Haywood@Oracle.COM fi 84*12926SMark.Haywood@Oracle.COM fi 85*12926SMark.Haywood@Oracle.COM 86*12926SMark.Haywood@Oracle.COM cmd="$IPADM create-addr -T addrconf " 87*12926SMark.Haywood@Oracle.COM cmd=$cmd"$interface_id $state $net_install_name" 88*12926SMark.Haywood@Oracle.COM ;; 89*12926SMark.Haywood@Oracle.COM esac 90*12926SMark.Haywood@Oracle.COM 91*12926SMark.Haywood@Oracle.COM $cmd 92*12926SMark.Haywood@Oracle.COM if [ $? -ne 0 ]; then 93*12926SMark.Haywood@Oracle.COM net_record_err "Error configuring interface:\n\"$cmd\"" $? 94*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_ERR_FATAL 95*12926SMark.Haywood@Oracle.COM fi 96*12926SMark.Haywood@Oracle.COM 97*12926SMark.Haywood@Oracle.COM if [ "$net_install_route" != "" ]; then 98*12926SMark.Haywood@Oracle.COM if [ $ipv6_interface == 1 ]; then 99*12926SMark.Haywood@Oracle.COM details="-inet6 default" 100*12926SMark.Haywood@Oracle.COM else 101*12926SMark.Haywood@Oracle.COM details="default" 102*12926SMark.Haywood@Oracle.COM fi 103*12926SMark.Haywood@Oracle.COM ifp=`echo $net_install_name | /usr/bin/cut -f1 -d'/'` 104*12926SMark.Haywood@Oracle.COM details="$details $net_install_route -ifp $ifp" 105*12926SMark.Haywood@Oracle.COM cmd="$ROUTE add $details" 106*12926SMark.Haywood@Oracle.COM $cmd 107*12926SMark.Haywood@Oracle.COM cmd="$ROUTE get $details" 108*12926SMark.Haywood@Oracle.COM $cmd 109*12926SMark.Haywood@Oracle.COM if [ $? -ne 0 ]; then 110*12926SMark.Haywood@Oracle.COM err=$? 111*12926SMark.Haywood@Oracle.COM msg="Error creating default route:\n\"$cmd\"" 112*12926SMark.Haywood@Oracle.COM net_record_err "$msg" $err 113*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_ERR_FATAL 114*12926SMark.Haywood@Oracle.COM fi 115*12926SMark.Haywood@Oracle.COM rootdir=/etc/svc/volatile 116*12926SMark.Haywood@Oracle.COM /usr/bin/mkdir -p $rootdir/etc/inet 117*12926SMark.Haywood@Oracle.COM if [ $? -ne 0 ]; then 118*12926SMark.Haywood@Oracle.COM err=$? 119*12926SMark.Haywood@Oracle.COM msg="Error creating \"$rootdir/etc/inet\" directory" 120*12926SMark.Haywood@Oracle.COM net_record_err "$msg" $err 121*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_ERR_FATAL 122*12926SMark.Haywood@Oracle.COM fi 123*12926SMark.Haywood@Oracle.COM cmd="$ROUTE -R $rootdir -p add $details" 124*12926SMark.Haywood@Oracle.COM $cmd 125*12926SMark.Haywood@Oracle.COM if [ $? -ne 0 ]; then 126*12926SMark.Haywood@Oracle.COM err=$? 127*12926SMark.Haywood@Oracle.COM msg="Error adding persistent default route:\n\"$cmd\"" 128*12926SMark.Haywood@Oracle.COM net_record_err "$msg" $err 129*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_ERR_FATAL 130*12926SMark.Haywood@Oracle.COM fi 131*12926SMark.Haywood@Oracle.COM fi 132*12926SMark.Haywood@Oracle.COM 133*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_OK 134*12926SMark.Haywood@Oracle.COM} 135*12926SMark.Haywood@Oracle.COM 136*12926SMark.Haywood@Oracle.COMnet_process_v4_pg() 137*12926SMark.Haywood@Oracle.COM{ 138*12926SMark.Haywood@Oracle.COM net_install_name="" 139*12926SMark.Haywood@Oracle.COM net_install_addrtype="" 140*12926SMark.Haywood@Oracle.COM net_install_addr="" 141*12926SMark.Haywood@Oracle.COM net_install_dhcpwait="" 142*12926SMark.Haywood@Oracle.COM net_install_route="" 143*12926SMark.Haywood@Oracle.COM 144*12926SMark.Haywood@Oracle.COM # 145*12926SMark.Haywood@Oracle.COM # Retrieve the mandatory interface name property value. If 146*12926SMark.Haywood@Oracle.COM # the value is empty, then no interface is configured. 147*12926SMark.Haywood@Oracle.COM # 148*12926SMark.Haywood@Oracle.COM prop=`$SVCPROP -p $NET_V4IF/name $NET_INSTALL_FMRI` 149*12926SMark.Haywood@Oracle.COM if [ $? -ne 0 -o "$prop" = "$NET_UNDEFINED_STRING_PROP" ]; then 150*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_OK 151*12926SMark.Haywood@Oracle.COM fi 152*12926SMark.Haywood@Oracle.COM net_install_name=$prop 153*12926SMark.Haywood@Oracle.COM 154*12926SMark.Haywood@Oracle.COM # 155*12926SMark.Haywood@Oracle.COM # Retrieve the mandatory address type property value. The two 156*12926SMark.Haywood@Oracle.COM # valid values are "static" and "dhcp". 157*12926SMark.Haywood@Oracle.COM # 158*12926SMark.Haywood@Oracle.COM prop=`$SVCPROP -p $NET_V4IF/address_type $NET_INSTALL_FMRI` 159*12926SMark.Haywood@Oracle.COM if [ $? -ne 0 -o "$prop" = "$NET_UNDEFINED_STRING_PROP" ]; then 160*12926SMark.Haywood@Oracle.COM msg="No \"address_type\" property defined in the " 161*12926SMark.Haywood@Oracle.COM msg=$msg"\"$NET_V4IF\" property group" 162*12926SMark.Haywood@Oracle.COM net_record_err "$msg" 0 163*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_ERR_CONFIG 164*12926SMark.Haywood@Oracle.COM fi 165*12926SMark.Haywood@Oracle.COM case $prop in 166*12926SMark.Haywood@Oracle.COM static | dhcp) 167*12926SMark.Haywood@Oracle.COM net_install_addrtype=$prop 168*12926SMark.Haywood@Oracle.COM ;; 169*12926SMark.Haywood@Oracle.COM *) 170*12926SMark.Haywood@Oracle.COM msg="Bad value, \"$prop\", defined for the \"address_type\" " 171*12926SMark.Haywood@Oracle.COM msg=$msg"property in the \"$NET_V4IF\" property group" 172*12926SMark.Haywood@Oracle.COM net_record_err "$msg" 0 173*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_ERR_CONFIG 174*12926SMark.Haywood@Oracle.COM ;; 175*12926SMark.Haywood@Oracle.COM esac 176*12926SMark.Haywood@Oracle.COM 177*12926SMark.Haywood@Oracle.COM # 178*12926SMark.Haywood@Oracle.COM # Retrieve the static address property value. The address property 179*12926SMark.Haywood@Oracle.COM # only applies to static address type configurations. If not 180*12926SMark.Haywood@Oracle.COM # configuring a static address, then the property should still have 181*12926SMark.Haywood@Oracle.COM # its default value of 0.0.0.0/0. 182*12926SMark.Haywood@Oracle.COM # 183*12926SMark.Haywood@Oracle.COM prop=`$SVCPROP -p $NET_V4IF/static_address $NET_INSTALL_FMRI` 184*12926SMark.Haywood@Oracle.COM if [ $? -eq 0 -a "$prop" != "$NET_UNDEFINED_STRING_PROP" ]; then 185*12926SMark.Haywood@Oracle.COM if [ "$net_install_addrtype" = "dhcp" ]; then 186*12926SMark.Haywood@Oracle.COM if [ "$prop" != "${NET_INADDR_ANY}/0" ]; then 187*12926SMark.Haywood@Oracle.COM msg="Warning: static address ignored " 188*12926SMark.Haywood@Oracle.COM msg=$msg"in the \"$NET_V4IF\ property group" 189*12926SMark.Haywood@Oracle.COM net_record_err "$msg" 0 190*12926SMark.Haywood@Oracle.COM fi 191*12926SMark.Haywood@Oracle.COM else 192*12926SMark.Haywood@Oracle.COM if [ "$prop" = "${NET_INADDR_ANY}/0" ]; then 193*12926SMark.Haywood@Oracle.COM msg="Error: static address required in the " 194*12926SMark.Haywood@Oracle.COM msg=$msg"\"$NET_V4IF\" property group" 195*12926SMark.Haywood@Oracle.COM net_record_err "$msg" 0 196*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_ERR_CONFIG 197*12926SMark.Haywood@Oracle.COM fi 198*12926SMark.Haywood@Oracle.COM net_install_addr=$prop 199*12926SMark.Haywood@Oracle.COM fi 200*12926SMark.Haywood@Oracle.COM else 201*12926SMark.Haywood@Oracle.COM if [ "$net_install_addrtype" = "static" ]; then 202*12926SMark.Haywood@Oracle.COM msg="Error: static address required in the " 203*12926SMark.Haywood@Oracle.COM msg=$msg"\"$NET_V4IF\" property group" 204*12926SMark.Haywood@Oracle.COM net_record_err "$msg" 0 205*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_ERR_CONFIG 206*12926SMark.Haywood@Oracle.COM fi 207*12926SMark.Haywood@Oracle.COM fi 208*12926SMark.Haywood@Oracle.COM 209*12926SMark.Haywood@Oracle.COM # 210*12926SMark.Haywood@Oracle.COM # Retrieve the optional DHCP wait property value. 211*12926SMark.Haywood@Oracle.COM # 212*12926SMark.Haywood@Oracle.COM prop=`$SVCPROP -p $NET_V4IF/dhcp_wait $NET_INSTALL_FMRI` 213*12926SMark.Haywood@Oracle.COM if [ $? -eq 0 -a "$prop" != "$NET_UNDEFINED_STRING_PROP" ]; then 214*12926SMark.Haywood@Oracle.COM if [ "$net_install_addrtype" != "dhcp" ]; then 215*12926SMark.Haywood@Oracle.COM if [ "$prop" != "120" ]; then 216*12926SMark.Haywood@Oracle.COM msg="Warning: DHCP wait value ignored in the " 217*12926SMark.Haywood@Oracle.COM msg=$msg"\"$NET_V4IF\" property group" 218*12926SMark.Haywood@Oracle.COM net_record_err "$msg" 0 219*12926SMark.Haywood@Oracle.COM fi 220*12926SMark.Haywood@Oracle.COM else 221*12926SMark.Haywood@Oracle.COM net_install_dhcpwait=$prop 222*12926SMark.Haywood@Oracle.COM fi 223*12926SMark.Haywood@Oracle.COM fi 224*12926SMark.Haywood@Oracle.COM 225*12926SMark.Haywood@Oracle.COM # 226*12926SMark.Haywood@Oracle.COM # Retrieve the optional default route property value. 227*12926SMark.Haywood@Oracle.COM # 228*12926SMark.Haywood@Oracle.COM prop=`$SVCPROP -p $NET_V4IF/default_route $NET_INSTALL_FMRI` 229*12926SMark.Haywood@Oracle.COM if [ $? -eq 0 -a "$prop" != "$NET_UNDEFINED_STRING_PROP" ]; then 230*12926SMark.Haywood@Oracle.COM if [ "$prop" != "$NET_INADDR_ANY" ]; then 231*12926SMark.Haywood@Oracle.COM net_install_route=$prop 232*12926SMark.Haywood@Oracle.COM fi 233*12926SMark.Haywood@Oracle.COM fi 234*12926SMark.Haywood@Oracle.COM 235*12926SMark.Haywood@Oracle.COM net_configure_install_if 0 236*12926SMark.Haywood@Oracle.COM 237*12926SMark.Haywood@Oracle.COM return $? 238*12926SMark.Haywood@Oracle.COM} 239*12926SMark.Haywood@Oracle.COM 240*12926SMark.Haywood@Oracle.COMnet_process_v6_pg() 241*12926SMark.Haywood@Oracle.COM{ 242*12926SMark.Haywood@Oracle.COM net_install_name="" 243*12926SMark.Haywood@Oracle.COM net_install_addrtype="" 244*12926SMark.Haywood@Oracle.COM net_install_addr="" 245*12926SMark.Haywood@Oracle.COM net_install_stateless="" 246*12926SMark.Haywood@Oracle.COM net_install_stateful="" 247*12926SMark.Haywood@Oracle.COM net_install_interface_id="" 248*12926SMark.Haywood@Oracle.COM net_install_route="" 249*12926SMark.Haywood@Oracle.COM 250*12926SMark.Haywood@Oracle.COM # 251*12926SMark.Haywood@Oracle.COM # Retrieve the mandatory interface name property value. If 252*12926SMark.Haywood@Oracle.COM # the value is empty, then no interface is configured. 253*12926SMark.Haywood@Oracle.COM # 254*12926SMark.Haywood@Oracle.COM prop=`$SVCPROP -p $NET_V6IF/name $NET_INSTALL_FMRI` 255*12926SMark.Haywood@Oracle.COM if [ $? -ne 0 -o "$prop" = "$NET_UNDEFINED_STRING_PROP" ]; then 256*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_OK 257*12926SMark.Haywood@Oracle.COM fi 258*12926SMark.Haywood@Oracle.COM net_install_name=$prop 259*12926SMark.Haywood@Oracle.COM 260*12926SMark.Haywood@Oracle.COM # 261*12926SMark.Haywood@Oracle.COM # Retrieve the mandatory address type property value. The two 262*12926SMark.Haywood@Oracle.COM # valid values are "static" and "addrconf". 263*12926SMark.Haywood@Oracle.COM # 264*12926SMark.Haywood@Oracle.COM prop=`$SVCPROP -p $NET_V6IF/address_type $NET_INSTALL_FMRI` 265*12926SMark.Haywood@Oracle.COM if [ $? -ne 0 -o "$prop" = "$NET_UNDEFINED_STRING_PROP" ]; then 266*12926SMark.Haywood@Oracle.COM msg="No \"address_type\" property defined in the " 267*12926SMark.Haywood@Oracle.COM msg=$msg"\"$NET_V6IF\" property group" 268*12926SMark.Haywood@Oracle.COM net_record_err "$msg" 0 269*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_ERR_CONFIG 270*12926SMark.Haywood@Oracle.COM fi 271*12926SMark.Haywood@Oracle.COM case $prop in 272*12926SMark.Haywood@Oracle.COM static | addrconf) 273*12926SMark.Haywood@Oracle.COM net_install_addrtype=$prop 274*12926SMark.Haywood@Oracle.COM ;; 275*12926SMark.Haywood@Oracle.COM *) 276*12926SMark.Haywood@Oracle.COM msg="Bad value \"$prop\" defined for \"address_type\"" 277*12926SMark.Haywood@Oracle.COM net_record_err "$msg" 0 278*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_ERR_CONFIG 279*12926SMark.Haywood@Oracle.COM ;; 280*12926SMark.Haywood@Oracle.COM esac 281*12926SMark.Haywood@Oracle.COM 282*12926SMark.Haywood@Oracle.COM # 283*12926SMark.Haywood@Oracle.COM # Retrieve the static address property value. The address property 284*12926SMark.Haywood@Oracle.COM # only applies to static address type configurations. If not 285*12926SMark.Haywood@Oracle.COM # configuring a static address, then the property should still have 286*12926SMark.Haywood@Oracle.COM # its default value of ::0/0. 287*12926SMark.Haywood@Oracle.COM # 288*12926SMark.Haywood@Oracle.COM prop=`$SVCPROP -p $NET_V6IF/static_address $NET_INSTALL_FMRI` 289*12926SMark.Haywood@Oracle.COM if [ $? -eq 0 -a "$prop" != "$NET_UNDEFINED_STRING_PROP" ]; then 290*12926SMark.Haywood@Oracle.COM if [ "$net_install_addrtype" = "addrconf" ]; then 291*12926SMark.Haywood@Oracle.COM if [ "$prop" != "${NET_IN6ADDR_ANY_INIT}/0" ]; then 292*12926SMark.Haywood@Oracle.COM msg="Warning: static address ignored in the " 293*12926SMark.Haywood@Oracle.COM msg=$msg"\"$NET_V6IF\" property group" 294*12926SMark.Haywood@Oracle.COM net_record_err "$msg" 0 295*12926SMark.Haywood@Oracle.COM fi 296*12926SMark.Haywood@Oracle.COM else 297*12926SMark.Haywood@Oracle.COM if [ "$prop" = "${NET_IN6ADDR_ANY_INIT}/0" ]; then 298*12926SMark.Haywood@Oracle.COM msg="Error: static address required in the " 299*12926SMark.Haywood@Oracle.COM msg=$msg"\"$NET_V6IF\" property group" 300*12926SMark.Haywood@Oracle.COM net_record_err "$msg" 0 301*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_ERR_CONFIG 302*12926SMark.Haywood@Oracle.COM fi 303*12926SMark.Haywood@Oracle.COM net_install_addr=$prop 304*12926SMark.Haywood@Oracle.COM fi 305*12926SMark.Haywood@Oracle.COM else 306*12926SMark.Haywood@Oracle.COM if [ "$net_install_addrtype" = "static" ]; then 307*12926SMark.Haywood@Oracle.COM msg="Error: static address required in the " 308*12926SMark.Haywood@Oracle.COM msg=$msg"\"$NET_V6IF\" property group" 309*12926SMark.Haywood@Oracle.COM net_record_err "$msg" 0 310*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_ERR_CONFIG 311*12926SMark.Haywood@Oracle.COM fi 312*12926SMark.Haywood@Oracle.COM 313*12926SMark.Haywood@Oracle.COM fi 314*12926SMark.Haywood@Oracle.COM 315*12926SMark.Haywood@Oracle.COM # 316*12926SMark.Haywood@Oracle.COM # Retrieve the optional interface id property value. The 317*12926SMark.Haywood@Oracle.COM # property only applies to addrconf address type configurations. 318*12926SMark.Haywood@Oracle.COM # If configuring a static address, then the property should still 319*12926SMark.Haywood@Oracle.COM # have its default value of ::0/0. 320*12926SMark.Haywood@Oracle.COM # 321*12926SMark.Haywood@Oracle.COM prop=`$SVCPROP -p $NET_V6IF/interface_id $NET_INSTALL_FMRI` 322*12926SMark.Haywood@Oracle.COM if [ $? -eq 0 -a "$prop" != "$NET_UNDEFINED_STRING_PROP" ]; then 323*12926SMark.Haywood@Oracle.COM if [ "$prop" != "${NET_IN6ADDR_ANY_INIT}/0" ]; then 324*12926SMark.Haywood@Oracle.COM if [ "$net_install_addrtype" != "addrconf" ]; then 325*12926SMark.Haywood@Oracle.COM msg="Warning: interface id value ignored in " 326*12926SMark.Haywood@Oracle.COM msg=$msg"the \"$NET_V6IF\" property group" 327*12926SMark.Haywood@Oracle.COM net_record_err "$msg" 0 328*12926SMark.Haywood@Oracle.COM else 329*12926SMark.Haywood@Oracle.COM net_install_interface_id=$prop 330*12926SMark.Haywood@Oracle.COM fi 331*12926SMark.Haywood@Oracle.COM fi 332*12926SMark.Haywood@Oracle.COM fi 333*12926SMark.Haywood@Oracle.COM 334*12926SMark.Haywood@Oracle.COM # 335*12926SMark.Haywood@Oracle.COM # Retrieve the optional stateless property value. The property 336*12926SMark.Haywood@Oracle.COM # only applies to addrconf address type configurations. If 337*12926SMark.Haywood@Oracle.COM # configuring a static address, then the property should still 338*12926SMark.Haywood@Oracle.COM # have its default value of "yes". 339*12926SMark.Haywood@Oracle.COM # 340*12926SMark.Haywood@Oracle.COM prop=`$SVCPROP -p $NET_V6IF/stateless $NET_INSTALL_FMRI` 341*12926SMark.Haywood@Oracle.COM if [ $? -eq 0 -a "$prop" != "$NET_UNDEFINED_STRING_PROP" ]; then 342*12926SMark.Haywood@Oracle.COM case $prop in 343*12926SMark.Haywood@Oracle.COM yes) 344*12926SMark.Haywood@Oracle.COM net_install_stateless=$prop 345*12926SMark.Haywood@Oracle.COM ;; 346*12926SMark.Haywood@Oracle.COM no) 347*12926SMark.Haywood@Oracle.COM if [ "$net_install_addrtype" != "addrconf" ]; then 348*12926SMark.Haywood@Oracle.COM msg="Warning: stateless value ignored in the " 349*12926SMark.Haywood@Oracle.COM msg=$msg"\"$NET_V6IF\" property group" 350*12926SMark.Haywood@Oracle.COM net_record_err "$msg" 0 351*12926SMark.Haywood@Oracle.COM else 352*12926SMark.Haywood@Oracle.COM net_install_stateless=$prop 353*12926SMark.Haywood@Oracle.COM fi 354*12926SMark.Haywood@Oracle.COM ;; 355*12926SMark.Haywood@Oracle.COM *) 356*12926SMark.Haywood@Oracle.COM msg="Bad value \"$prop\" defined for the \"stateless\"" 357*12926SMark.Haywood@Oracle.COM msg=$msg" property in the \"$NET_V6IF\" property group" 358*12926SMark.Haywood@Oracle.COM net_record_err "$msg" 0 359*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_ERR_CONFIG 360*12926SMark.Haywood@Oracle.COM ;; 361*12926SMark.Haywood@Oracle.COM esac 362*12926SMark.Haywood@Oracle.COM fi 363*12926SMark.Haywood@Oracle.COM 364*12926SMark.Haywood@Oracle.COM # 365*12926SMark.Haywood@Oracle.COM # Retrieve the optional stateful property value. The property 366*12926SMark.Haywood@Oracle.COM # only applies to addrconf address type configurations. If 367*12926SMark.Haywood@Oracle.COM # configuring a static address, then the property should still 368*12926SMark.Haywood@Oracle.COM # have its default value of "yes". 369*12926SMark.Haywood@Oracle.COM # 370*12926SMark.Haywood@Oracle.COM prop=`$SVCPROP -p $NET_V6IF/stateful $NET_INSTALL_FMRI` 371*12926SMark.Haywood@Oracle.COM if [ $? -eq 0 -a "$prop" != "$NET_UNDEFINED_STRING_PROP" ]; then 372*12926SMark.Haywood@Oracle.COM case $prop in 373*12926SMark.Haywood@Oracle.COM yes) 374*12926SMark.Haywood@Oracle.COM net_install_stateful=$prop 375*12926SMark.Haywood@Oracle.COM ;; 376*12926SMark.Haywood@Oracle.COM no) 377*12926SMark.Haywood@Oracle.COM if [ "$net_install_addrtype" != "addrconf" ]; then 378*12926SMark.Haywood@Oracle.COM msg="Warning: stateless value ignored in the " 379*12926SMark.Haywood@Oracle.COM msg=$msg"\"$NET_V6IF\" property group" 380*12926SMark.Haywood@Oracle.COM net_record_err "$msg" 0 381*12926SMark.Haywood@Oracle.COM else 382*12926SMark.Haywood@Oracle.COM net_install_stateful=$prop 383*12926SMark.Haywood@Oracle.COM fi 384*12926SMark.Haywood@Oracle.COM ;; 385*12926SMark.Haywood@Oracle.COM *) 386*12926SMark.Haywood@Oracle.COM msg="Bad value \"$prop\" defined for the \"stateless\"" 387*12926SMark.Haywood@Oracle.COM msg=$msg" property in the \"$NET_V6IF\" property group" 388*12926SMark.Haywood@Oracle.COM net_record_err "$msg" 0 389*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_ERR_CONFIG 390*12926SMark.Haywood@Oracle.COM ;; 391*12926SMark.Haywood@Oracle.COM esac 392*12926SMark.Haywood@Oracle.COM fi 393*12926SMark.Haywood@Oracle.COM 394*12926SMark.Haywood@Oracle.COM # 395*12926SMark.Haywood@Oracle.COM # Retrieve the optional default route property value. 396*12926SMark.Haywood@Oracle.COM # 397*12926SMark.Haywood@Oracle.COM prop=`$SVCPROP -p $NET_V6IF/default_route $NET_INSTALL_FMRI` 398*12926SMark.Haywood@Oracle.COM if [ $? -eq 0 -a "$prop" != "$NET_UNDEFINED_STRING_PROP" ]; then 399*12926SMark.Haywood@Oracle.COM if [ "$prop" != "$NET_IN6ADDR_ANY_INIT" ]; then 400*12926SMark.Haywood@Oracle.COM net_install_route=$prop 401*12926SMark.Haywood@Oracle.COM fi 402*12926SMark.Haywood@Oracle.COM fi 403*12926SMark.Haywood@Oracle.COM 404*12926SMark.Haywood@Oracle.COM net_configure_install_if 1 405*12926SMark.Haywood@Oracle.COM 406*12926SMark.Haywood@Oracle.COM return $? 407*12926SMark.Haywood@Oracle.COM} 408*12926SMark.Haywood@Oracle.COM 409*12926SMark.Haywood@Oracle.COMnet_process_install() 410*12926SMark.Haywood@Oracle.COM{ 411*12926SMark.Haywood@Oracle.COM vout=`$SVCCFG -s $NET_INSTALL_FMRI validate 2>&1` 412*12926SMark.Haywood@Oracle.COM if [ "$vout" != "" ]; then 413*12926SMark.Haywood@Oracle.COM msg="Validation errors in $NET_INSTALL_FMRI:\n$vout" 414*12926SMark.Haywood@Oracle.COM net_record_err "$msg" 0 415*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_ERR_CONFIG 416*12926SMark.Haywood@Oracle.COM fi 417*12926SMark.Haywood@Oracle.COM 418*12926SMark.Haywood@Oracle.COM ecode=$SMF_EXIT_OK 419*12926SMark.Haywood@Oracle.COM errs=0 420*12926SMark.Haywood@Oracle.COM ifcnt=0 421*12926SMark.Haywood@Oracle.COM for intf in $NET_V4IF $NET_V6IF 422*12926SMark.Haywood@Oracle.COM do 423*12926SMark.Haywood@Oracle.COM pg=`$SVCPROP -p $intf $NET_INSTALL_FMRI` 424*12926SMark.Haywood@Oracle.COM if [ $? -eq 0 ]; then 425*12926SMark.Haywood@Oracle.COM if service_is_enabled $NET_NWAM_FMRI; then 426*12926SMark.Haywood@Oracle.COM msg="NWAM enabled. Install static " 427*12926SMark.Haywood@Oracle.COM msg=$msg"configuration ignored." 428*12926SMark.Haywood@Oracle.COM net_record_err "$msg" 0 429*12926SMark.Haywood@Oracle.COM errs=`expr $errs + 1` 430*12926SMark.Haywood@Oracle.COM ecode=$SMF_EXIT_ERR_CONFIG 431*12926SMark.Haywood@Oracle.COM else 432*12926SMark.Haywood@Oracle.COM if [ "$intf" == "$NET_V4IF" ]; then 433*12926SMark.Haywood@Oracle.COM net_process_v4_pg 434*12926SMark.Haywood@Oracle.COM else 435*12926SMark.Haywood@Oracle.COM net_process_v6_pg 436*12926SMark.Haywood@Oracle.COM fi 437*12926SMark.Haywood@Oracle.COM if [ $? -ne $SMF_EXIT_OK ]; then 438*12926SMark.Haywood@Oracle.COM # 439*12926SMark.Haywood@Oracle.COM # Last error wins. 440*12926SMark.Haywood@Oracle.COM # 441*12926SMark.Haywood@Oracle.COM ecode=$? 442*12926SMark.Haywood@Oracle.COM errs=`expr $errs + 1` 443*12926SMark.Haywood@Oracle.COM else 444*12926SMark.Haywood@Oracle.COM ifcnt=`expr $ifcnt + 1` 445*12926SMark.Haywood@Oracle.COM fi 446*12926SMark.Haywood@Oracle.COM fi 447*12926SMark.Haywood@Oracle.COM $SVCCFG -s $NET_INSTALL_FMRI delpg $intf 448*12926SMark.Haywood@Oracle.COM $SVCCFG -s $NET_INSTALL_FMRI refresh 449*12926SMark.Haywood@Oracle.COM fi 450*12926SMark.Haywood@Oracle.COM done 451*12926SMark.Haywood@Oracle.COM 452*12926SMark.Haywood@Oracle.COM if [ $net_install_debug -eq 1 ]; then 453*12926SMark.Haywood@Oracle.COM if [ $errs -ne 0 ]; then 454*12926SMark.Haywood@Oracle.COM echo "$errs errors encountered" \ 455*12926SMark.Haywood@Oracle.COM "configuring interfaces on behalf of install" 456*12926SMark.Haywood@Oracle.COM fi 457*12926SMark.Haywood@Oracle.COM 458*12926SMark.Haywood@Oracle.COM if [ $ifcnt -ne 0 ]; then 459*12926SMark.Haywood@Oracle.COM echo "$ifcnt interfaces configured on" \ 460*12926SMark.Haywood@Oracle.COM "behalf of install" 461*12926SMark.Haywood@Oracle.COM fi 462*12926SMark.Haywood@Oracle.COM fi 463*12926SMark.Haywood@Oracle.COM 464*12926SMark.Haywood@Oracle.COM return $ecode 465*12926SMark.Haywood@Oracle.COM} 466*12926SMark.Haywood@Oracle.COM 467*12926SMark.Haywood@Oracle.COM# 468*12926SMark.Haywood@Oracle.COM# The network/install service will be enabled by the install derived profile 469*12926SMark.Haywood@Oracle.COM# after the intial install. The service will disable itself after processing 470*12926SMark.Haywood@Oracle.COM# the install defined property values. 471*12926SMark.Haywood@Oracle.COM# 472*12926SMark.Haywood@Oracle.COM# When the non-global shared-IP stack zone boots, it tries to bring up this 473*12926SMark.Haywood@Oracle.COM# service as well. We just want to exit successfully. 474*12926SMark.Haywood@Oracle.COM# 475*12926SMark.Haywood@Oracle.COMif smf_is_nonglobalzone; then 476*12926SMark.Haywood@Oracle.COM if [ `/sbin/zonename -t` = shared ]; then 477*12926SMark.Haywood@Oracle.COM $SVCADM disable $NET_INSTALL_FMRI 478*12926SMark.Haywood@Oracle.COM exit $SMF_EXIT_OK 479*12926SMark.Haywood@Oracle.COM fi 480*12926SMark.Haywood@Oracle.COMfi 481*12926SMark.Haywood@Oracle.COM 482*12926SMark.Haywood@Oracle.COMnet_process_install || exit $? 483*12926SMark.Haywood@Oracle.COM 484*12926SMark.Haywood@Oracle.COM$SVCADM disable $NET_INSTALL_FMRI 485*12926SMark.Haywood@Oracle.COMexit $SMF_EXIT_OK 486