16ba597c5SAnurag S. Maskey#!/sbin/sh 26ba597c5SAnurag S. Maskey# 36ba597c5SAnurag S. Maskey# CDDL HEADER START 46ba597c5SAnurag S. Maskey# 56ba597c5SAnurag S. Maskey# The contents of this file are subject to the terms of the 66ba597c5SAnurag S. Maskey# Common Development and Distribution License (the "License"). 76ba597c5SAnurag S. Maskey# You may not use this file except in compliance with the License. 86ba597c5SAnurag S. Maskey# 96ba597c5SAnurag S. Maskey# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 106ba597c5SAnurag S. Maskey# or http://www.opensolaris.org/os/licensing. 116ba597c5SAnurag S. Maskey# See the License for the specific language governing permissions 126ba597c5SAnurag S. Maskey# and limitations under the License. 136ba597c5SAnurag S. Maskey# 146ba597c5SAnurag S. Maskey# When distributing Covered Code, include this CDDL HEADER in each 156ba597c5SAnurag S. Maskey# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 166ba597c5SAnurag S. Maskey# If applicable, add the following below this CDDL HEADER, with the 176ba597c5SAnurag S. Maskey# fields enclosed by brackets "[]" replaced with your own identifying 186ba597c5SAnurag S. Maskey# information: Portions Copyright [yyyy] [name of copyright owner] 196ba597c5SAnurag S. Maskey# 206ba597c5SAnurag S. Maskey# CDDL HEADER END 216ba597c5SAnurag S. Maskey# 226ba597c5SAnurag S. Maskey# 23*4a44f0a1SAnurag S. Maskey# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. 246ba597c5SAnurag S. Maskey# 256ba597c5SAnurag S. Maskey 266ba597c5SAnurag S. Maskey. /lib/svc/share/smf_include.sh 276ba597c5SAnurag S. Maskey. /lib/svc/share/net_include.sh 286ba597c5SAnurag S. Maskey 296ba597c5SAnurag S. Maskey# FMRI consts 306ba597c5SAnurag S. MaskeyAUTOFS_FMRI="svc:/system/filesystem/autofs" 316ba597c5SAnurag S. MaskeyDNS_CLIENT_FMRI="svc:/network/dns/client" 326ba597c5SAnurag S. MaskeyIPSEC_IKE_FMRI="svc:/network/ipsec/ike" 336ba597c5SAnurag S. MaskeyIPSEC_POLICY_FMRI="svc:/network/ipsec/policy" 346ba597c5SAnurag S. MaskeyIPFILTER_FMRI="svc:/network/ipfilter:default" 356ba597c5SAnurag S. MaskeyLDAP_CLIENT_FMRI="svc:/network/ldap/client" 366ba597c5SAnurag S. MaskeyLOCATION_FMRI="svc:/network/location:default" 376ba597c5SAnurag S. MaskeyMAPID_FMRI="svc:/network/nfs/mapid:default" 386ba597c5SAnurag S. MaskeyNIS_CLIENT_FMRI="svc:/network/nis/client" 396ba597c5SAnurag S. MaskeyNWAM_FMRI="svc:/network/physical:nwam" 406ba597c5SAnurag S. Maskey 416ba597c5SAnurag S. Maskey# commands 426ba597c5SAnurag S. MaskeyCP=/usr/bin/cp 436ba597c5SAnurag S. MaskeyDHCPINFO=/sbin/dhcpinfo 446ba597c5SAnurag S. MaskeyDOMAINNAME=/usr/bin/domainname 456ba597c5SAnurag S. MaskeyGREP=/usr/bin/grep 466ba597c5SAnurag S. MaskeyLDAPCLIENT=/usr/sbin/ldapclient 476ba597c5SAnurag S. MaskeyMKDIR=/usr/bin/mkdir 486ba597c5SAnurag S. MaskeyMV=/usr/bin/mv 496ba597c5SAnurag S. MaskeyNAWK=/usr/bin/nawk 506ba597c5SAnurag S. MaskeyNWAMADM=/usr/sbin/nwamadm 516ba597c5SAnurag S. MaskeyNWAMCFG=/usr/sbin/nwamcfg 526ba597c5SAnurag S. MaskeyRM=/usr/bin/rm 536ba597c5SAnurag S. MaskeySED=/usr/bin/sed 546ba597c5SAnurag S. MaskeySVCADM=/usr/sbin/svcadm 556ba597c5SAnurag S. MaskeySVCCFG=/usr/sbin/svccfg 566ba597c5SAnurag S. MaskeySVCPROP=/usr/bin/svcprop 576ba597c5SAnurag S. MaskeyTOUCH=/usr/bin/touch 586ba597c5SAnurag S. Maskey 596ba597c5SAnurag S. Maskey# Path to directories 606ba597c5SAnurag S. MaskeyETC_DEFAULT_DOMAIN=/etc/defaultdomain 616ba597c5SAnurag S. MaskeyNIS_BIND_PATH=/var/yp/binding 626ba597c5SAnurag S. MaskeyLEGACY_LOC_PATH=/etc/nwam/loc/Legacy 636ba597c5SAnurag S. MaskeyUSER_LOC_PATH=/etc/nwam/loc/User 646ba597c5SAnurag S. MaskeySCRIPT_PATH=/etc/svc/volatile/nwam 656ba597c5SAnurag S. Maskey 666ba597c5SAnurag S. Maskey# 676ba597c5SAnurag S. Maskey# echoes DHCP controlled interfaces separated by commas 686ba597c5SAnurag S. Maskey# 696ba597c5SAnurag S. Maskey# Don't parse the output of ifconfig(1M) because interfaces that haven't 706ba597c5SAnurag S. Maskey# acquired a DHCP lease also have the DHCP flag set. 716ba597c5SAnurag S. Maskey# 726ba597c5SAnurag S. Maskeyget_dhcp_interfaces () { 736ba597c5SAnurag S. Maskey # 746ba597c5SAnurag S. Maskey # 1. parse netstat(1M) output for v4 interfaces in BOUND 756ba597c5SAnurag S. Maskey # or INFORMATION state 766ba597c5SAnurag S. Maskey # 2. make a space-separated list of interface names 776ba597c5SAnurag S. Maskey # 786ba597c5SAnurag S. Maskey netstat -D -f inet | $NAWK ' 796ba597c5SAnurag S. Maskey $2 ~ /BOUND/ { printf "%s ", $1 } 806ba597c5SAnurag S. Maskey $2 ~ /INFORMATION/ { printf "%s ", $1 }' 816ba597c5SAnurag S. Maskey} 826ba597c5SAnurag S. Maskey 836ba597c5SAnurag S. Maskey# 846ba597c5SAnurag S. Maskey# get_dhcpinfo <code/identifier> 856ba597c5SAnurag S. Maskey# 866ba597c5SAnurag S. Maskey# echoes the value received through each interface controlled by DHCP 876ba597c5SAnurag S. Maskey# returns: 886ba597c5SAnurag S. Maskey# 0 => property is set 896ba597c5SAnurag S. Maskey# 1 => property is not set 906ba597c5SAnurag S. Maskey# 916ba597c5SAnurag S. Maskeyget_dhcpinfo () { 926ba597c5SAnurag S. Maskey code=$1 936ba597c5SAnurag S. Maskey 946ba597c5SAnurag S. Maskey # Get all interfaces with DHCP control, IFS is " " 956ba597c5SAnurag S. Maskey interfaces=`get_dhcp_interfaces` 966ba597c5SAnurag S. Maskey 976ba597c5SAnurag S. Maskey info="" 986ba597c5SAnurag S. Maskey for intf in $interfaces; do 996ba597c5SAnurag S. Maskey val=`$DHCPINFO -i $intf $code` 1006ba597c5SAnurag S. Maskey if [ $? -eq 0 ]; then 1016ba597c5SAnurag S. Maskey if [ "$info" = "" ]; then 1026ba597c5SAnurag S. Maskey info="$val" 1036ba597c5SAnurag S. Maskey else 1046ba597c5SAnurag S. Maskey info="$info,$val" 1056ba597c5SAnurag S. Maskey fi 1066ba597c5SAnurag S. Maskey fi 1076ba597c5SAnurag S. Maskey done 1086ba597c5SAnurag S. Maskey echo $info 1096ba597c5SAnurag S. Maskey} 1106ba597c5SAnurag S. Maskey 1116ba597c5SAnurag S. Maskey# 1126ba597c5SAnurag S. Maskey# set_smf_prop <fmri> <property name> <property value> 1136ba597c5SAnurag S. Maskey# 1146ba597c5SAnurag S. Maskeyset_smf_prop () { 1156ba597c5SAnurag S. Maskey $SVCCFG -s $1 setprop $2 = astring: "$3" && return 1166ba597c5SAnurag S. Maskey} 1176ba597c5SAnurag S. Maskey 1186ba597c5SAnurag S. Maskey# 1196ba597c5SAnurag S. Maskey# refresh_svc <fmri> 1206ba597c5SAnurag S. Maskey# 1216ba597c5SAnurag S. Maskey# Refreshes the service. 1226ba597c5SAnurag S. Maskey# 1236ba597c5SAnurag S. Maskeyrefresh_svc () { 1246ba597c5SAnurag S. Maskey $SVCADM refresh $1 1256ba597c5SAnurag S. Maskey} 1266ba597c5SAnurag S. Maskey 1276ba597c5SAnurag S. Maskey# 1286ba597c5SAnurag S. Maskey# restart_svc <fmri> 1296ba597c5SAnurag S. Maskey# 1306ba597c5SAnurag S. Maskey# Restarts the service. 1316ba597c5SAnurag S. Maskey# 1326ba597c5SAnurag S. Maskeyrestart_svc () { 1336ba597c5SAnurag S. Maskey $SVCADM restart $1 1346ba597c5SAnurag S. Maskey} 1356ba597c5SAnurag S. Maskey 1366ba597c5SAnurag S. Maskey# 1376ba597c5SAnurag S. Maskey# start_svc <fmri> 1386ba597c5SAnurag S. Maskey# 1396ba597c5SAnurag S. Maskey# Starts the service. If the service is already enabled, restarts it. If 1406ba597c5SAnurag S. Maskey# it is not enabled, temporarily enables it. 1416ba597c5SAnurag S. Maskey# 1426ba597c5SAnurag S. Maskeystart_svc () { 1436ba597c5SAnurag S. Maskey if service_is_enabled $1; then 1446ba597c5SAnurag S. Maskey $SVCADM restart $1 1456ba597c5SAnurag S. Maskey else 1466ba597c5SAnurag S. Maskey $SVCADM enable -t $1 1476ba597c5SAnurag S. Maskey fi 1486ba597c5SAnurag S. Maskey} 1496ba597c5SAnurag S. Maskey 1506ba597c5SAnurag S. Maskey# 1516ba597c5SAnurag S. Maskey# stop_svc <fmri> 1526ba597c5SAnurag S. Maskey# 1536ba597c5SAnurag S. Maskey# Temporarily disables the service. 1546ba597c5SAnurag S. Maskey# 1556ba597c5SAnurag S. Maskeystop_svc () { 1566ba597c5SAnurag S. Maskey $SVCADM disable -t $1 1576ba597c5SAnurag S. Maskey} 1586ba597c5SAnurag S. Maskey 1596ba597c5SAnurag S. Maskey# 1606ba597c5SAnurag S. Maskey# copy_default <dir> <file> 1616ba597c5SAnurag S. Maskey# 1626ba597c5SAnurag S. Maskey# Copies <dir>/<file>.dfl to <dir>/<file> 1636ba597c5SAnurag S. Maskey# 1646ba597c5SAnurag S. Maskeycopy_default () { 1656ba597c5SAnurag S. Maskey $CP -p $1/$2.dfl $1/$2 1666ba597c5SAnurag S. Maskey} 1676ba597c5SAnurag S. Maskey 1686ba597c5SAnurag S. Maskey# 1696ba597c5SAnurag S. Maskey# do_dns <location> 1706ba597c5SAnurag S. Maskey# 1716ba597c5SAnurag S. Maskey# Installs DNS information on /etc/resolv.conf for location 1726ba597c5SAnurag S. Maskey# 1736ba597c5SAnurag S. Maskeydo_dns () { 1746ba597c5SAnurag S. Maskey loc=$1 1756ba597c5SAnurag S. Maskey file=/etc/resolv.conf 1766ba597c5SAnurag S. Maskey 1776ba597c5SAnurag S. Maskey # Write out to temporary file first 1786ba597c5SAnurag S. Maskey $TOUCH $file.$$ 1796ba597c5SAnurag S. Maskey 1806ba597c5SAnurag S. Maskey DNS_CONFIGSRC=`nwam_get_loc_prop $loc dns-nameservice-configsrc` 1816ba597c5SAnurag S. Maskey (IFS=" "; 1826ba597c5SAnurag S. Maskey for configsrc in $DNS_CONFIGSRC; do 1836ba597c5SAnurag S. Maskey case "$configsrc" in 1846ba597c5SAnurag S. Maskey 'manual') 1856ba597c5SAnurag S. Maskey DNS_DOMAIN=`nwam_get_loc_prop $loc \ 1866ba597c5SAnurag S. Maskey dns-nameservice-domain` 1876ba597c5SAnurag S. Maskey DNS_SERVERS=`nwam_get_loc_prop $loc \ 1886ba597c5SAnurag S. Maskey dns-nameservice-servers` 1896ba597c5SAnurag S. Maskey DNS_SEARCH=`nwam_get_loc_prop $loc \ 1906ba597c5SAnurag S. Maskey dns-nameservice-search` 1916ba597c5SAnurag S. Maskey ;; 1926ba597c5SAnurag S. Maskey 'dhcp') 1936ba597c5SAnurag S. Maskey DNS_DOMAIN=`get_dhcpinfo DNSdmain` 1946ba597c5SAnurag S. Maskey DNS_SERVERS=`get_dhcpinfo DNSserv` 1956ba597c5SAnurag S. Maskey # No DNS search info for IPv4 1966ba597c5SAnurag S. Maskey ;; 1976ba597c5SAnurag S. Maskey '*') 1986ba597c5SAnurag S. Maskey echo "Unrecognized DNS configsrc ${configsrc}; ignoring" 1996ba597c5SAnurag S. Maskey ;; 2006ba597c5SAnurag S. Maskey esac 2016ba597c5SAnurag S. Maskey 2026ba597c5SAnurag S. Maskey # Write DNS settings 2036ba597c5SAnurag S. Maskey if [ -n "$DNS_DOMAIN" ]; then 2046ba597c5SAnurag S. Maskey echo "$DNS_DOMAIN" | $NAWK \ 2056ba597c5SAnurag S. Maskey 'FS="," { for (i = 1; i <= NF; i++) \ 2066ba597c5SAnurag S. Maskey print "domain ", $i }' >> $file.$$ 2076ba597c5SAnurag S. Maskey fi 2086ba597c5SAnurag S. Maskey if [ -n "$DNS_SEARCH" ]; then 2096ba597c5SAnurag S. Maskey echo "$DNS_SEARCH" | $NAWK \ 2106ba597c5SAnurag S. Maskey 'FS="," { printf("search"); \ 2116ba597c5SAnurag S. Maskey for (i = 1; i <= NF; i++) printf(" %s", $i); \ 2126ba597c5SAnurag S. Maskey printf("\n") }' >> $file.$$ 2136ba597c5SAnurag S. Maskey fi 2146ba597c5SAnurag S. Maskey if [ -n "$DNS_SERVERS" ]; then 2156ba597c5SAnurag S. Maskey echo "$DNS_SERVERS" | $NAWK \ 2166ba597c5SAnurag S. Maskey 'FS="," { for (i = 1; i <= NF; i++) \ 2176ba597c5SAnurag S. Maskey print "nameserver ", $i }' >> $file.$$ 2186ba597c5SAnurag S. Maskey fi 2196ba597c5SAnurag S. Maskey done 2206ba597c5SAnurag S. Maskey ) 2216ba597c5SAnurag S. Maskey # Finally, copy our working version to the real thing 2226ba597c5SAnurag S. Maskey $MV -f $file.$$ $file 2236ba597c5SAnurag S. Maskey start_svc $DNS_CLIENT_FMRI 2246ba597c5SAnurag S. Maskey} 2256ba597c5SAnurag S. Maskey 2266ba597c5SAnurag S. Maskey# 2276ba597c5SAnurag S. Maskey# do_nis <location> 2286ba597c5SAnurag S. Maskey# 2296ba597c5SAnurag S. Maskey# Installs NIS information on /var/yp/binding/ for location 2306ba597c5SAnurag S. Maskey# 2316ba597c5SAnurag S. Maskeydo_nis () { 2326ba597c5SAnurag S. Maskey loc=$1 2336ba597c5SAnurag S. Maskey 2346ba597c5SAnurag S. Maskey NIS_CONFIGSRC=`nwam_get_loc_prop $loc nis-nameservice-configsrc` 2356ba597c5SAnurag S. Maskey (IFS=" "; 2366ba597c5SAnurag S. Maskey domainname_set=false 2376ba597c5SAnurag S. Maskey for configsrc in $NIS_CONFIGSRC; do 2386ba597c5SAnurag S. Maskey case "$configsrc" in 2396ba597c5SAnurag S. Maskey 'manual') 2406ba597c5SAnurag S. Maskey NIS_SERVERS=`nwam_get_loc_prop $loc \ 2416ba597c5SAnurag S. Maskey nis-nameservice-servers` 2426ba597c5SAnurag S. Maskey DEFAULT_DOMAIN=`nwam_get_loc_prop $loc default-domain` 2436ba597c5SAnurag S. Maskey # user-specified default-domain always wins 2446ba597c5SAnurag S. Maskey $DOMAINNAME $DEFAULT_DOMAIN 2456ba597c5SAnurag S. Maskey $DOMAINNAME > $ETC_DEFAULT_DOMAIN 2466ba597c5SAnurag S. Maskey domainname_set=true 2476ba597c5SAnurag S. Maskey ;; 2486ba597c5SAnurag S. Maskey 'dhcp') 2496ba597c5SAnurag S. Maskey # Use only the first name 2506ba597c5SAnurag S. Maskey DEFAULT_DOMAIN=`get_dhcpinfo NISdmain | \ 2516ba597c5SAnurag S. Maskey $NAWK 'FS="," { print $1 }'` 2526ba597c5SAnurag S. Maskey NIS_SERVERS=`get_dhcpinfo NISservs` 2536ba597c5SAnurag S. Maskey if [ "$domainname_set" = "false" ]; then 2546ba597c5SAnurag S. Maskey $DOMAINNAME $DEFAULT_DOMAIN 2556ba597c5SAnurag S. Maskey $DOMAINNAME > $ETC_DEFAULT_DOMAIN 2566ba597c5SAnurag S. Maskey domainname_set=true 2576ba597c5SAnurag S. Maskey fi 2586ba597c5SAnurag S. Maskey ;; 2596ba597c5SAnurag S. Maskey '*') 2606ba597c5SAnurag S. Maskey echo "Unrecognized NIS configsrc ${configsrc}; ignoring" 2616ba597c5SAnurag S. Maskey ;; 2626ba597c5SAnurag S. Maskey esac 2636ba597c5SAnurag S. Maskey 2646ba597c5SAnurag S. Maskey # Place NIS settings in appropriate directory/file. 2656ba597c5SAnurag S. Maskey if [ ! -d "$NIS_BIND_PATH/$DEFAULT_DOMAIN" ]; then 2666ba597c5SAnurag S. Maskey $MKDIR -p $NIS_BIND_PATH/$DEFAULT_DOMAIN 2676ba597c5SAnurag S. Maskey fi 2686ba597c5SAnurag S. Maskey if [ -n "$NIS_SERVERS" ]; then 2696ba597c5SAnurag S. Maskey echo "$NIS_SERVERS" | $NAWK \ 2706ba597c5SAnurag S. Maskey 'FS="," { for (i = 1; i <= NF; i++) print $i }' \ 2716ba597c5SAnurag S. Maskey > $NIS_BIND_PATH/$DEFAULT_DOMAIN/ypservers 2726ba597c5SAnurag S. Maskey fi 2736ba597c5SAnurag S. Maskey done 2746ba597c5SAnurag S. Maskey ) 2756ba597c5SAnurag S. Maskey start_svc $NIS_CLIENT_FMRI 2766ba597c5SAnurag S. Maskey} 2776ba597c5SAnurag S. Maskey 2786ba597c5SAnurag S. Maskey# 2796ba597c5SAnurag S. Maskey# do_ldap <location> 2806ba597c5SAnurag S. Maskey# 2816ba597c5SAnurag S. Maskey# Installs LDAP information using ldapclient(1M) for location 2826ba597c5SAnurag S. Maskey# 2836ba597c5SAnurag S. Maskeydo_ldap () { 2846ba597c5SAnurag S. Maskey loc=$1 2856ba597c5SAnurag S. Maskey 2866ba597c5SAnurag S. Maskey LDAP_CONFIGSRC=`nwam_get_loc_prop $loc ldap-nameservice-configsrc` 2876ba597c5SAnurag S. Maskey (IFS=" "; 2886ba597c5SAnurag S. Maskey for configsrc in $LDAP_CONFIGSRC; do 2896ba597c5SAnurag S. Maskey case "$configsrc" in 2906ba597c5SAnurag S. Maskey 'manual') 2916ba597c5SAnurag S. Maskey LDAP_SERVERS=`nwam_get_loc_prop $loc \ 2926ba597c5SAnurag S. Maskey ldap-nameservice-servers` 2936ba597c5SAnurag S. Maskey DEFAULT_DOMAIN=`nwam_get_loc_prop $loc default-domain` 2946ba597c5SAnurag S. Maskey $DOMAINNAME $DEFAULT_DOMAIN 2956ba597c5SAnurag S. Maskey $DOMAINNAME > $ETC_DEFAULT_DOMAIN 2966ba597c5SAnurag S. Maskey ;; 2976ba597c5SAnurag S. Maskey '*') 2986ba597c5SAnurag S. Maskey echo "Unrecognized LDAP configsrc ${configsrc}; ignoring" 2996ba597c5SAnurag S. Maskey ;; 3006ba597c5SAnurag S. Maskey esac 3016ba597c5SAnurag S. Maskey 3026ba597c5SAnurag S. Maskey # Use ldapclient(1M) to initialize LDAP client settings. 3036ba597c5SAnurag S. Maskey if [ -n "$DEFAULT_DOMAIN" -o -n "$LDAP_SERVERS" ]; then 3046ba597c5SAnurag S. Maskey # XXX need to check how to specify multiple LDAP servers. 3056ba597c5SAnurag S. Maskey $LDAPCLIENT init -a domainName=$DEFAULT_DOMAIN \ 3066ba597c5SAnurag S. Maskey $LDAP_SERVERS 3076ba597c5SAnurag S. Maskey fi 3086ba597c5SAnurag S. Maskey done 3096ba597c5SAnurag S. Maskey ) 3106ba597c5SAnurag S. Maskey start_svc $LDAP_CLIENT_FMRI 3116ba597c5SAnurag S. Maskey} 3126ba597c5SAnurag S. Maskey 3136ba597c5SAnurag S. Maskey# 3146ba597c5SAnurag S. Maskey# do_ns <location> 3156ba597c5SAnurag S. Maskey# 3166ba597c5SAnurag S. Maskey# Installs different nameservices for location 3176ba597c5SAnurag S. Maskey# 3186ba597c5SAnurag S. Maskeydo_ns () { 3196ba597c5SAnurag S. Maskey loc=$1 3206ba597c5SAnurag S. Maskey 3216ba597c5SAnurag S. Maskey # 3226ba597c5SAnurag S. Maskey # Disable nameservices temporarily while we reconfigure. Copy 3236ba597c5SAnurag S. Maskey # /etc/nsswitch.files to /etc/nsswitch.conf first so that only "files" 3246ba597c5SAnurag S. Maskey # are used. 3256ba597c5SAnurag S. Maskey # 3266ba597c5SAnurag S. Maskey $CP -p /etc/nsswitch.files /etc/nsswitch.conf 3276ba597c5SAnurag S. Maskey stop_svc $DNS_CLIENT_FMRI 3286ba597c5SAnurag S. Maskey stop_svc $NIS_CLIENT_FMRI 3296ba597c5SAnurag S. Maskey stop_svc $LDAP_CLIENT_FMRI 3306ba597c5SAnurag S. Maskey 3316ba597c5SAnurag S. Maskey # 3326ba597c5SAnurag S. Maskey # Remove /etc/defaultdomain and unset domainname(1M). If NIS 3336ba597c5SAnurag S. Maskey # and/or LDAP is configured, they will create /etc/defaultdomain 3346ba597c5SAnurag S. Maskey # and set the domainname(1M). 3356ba597c5SAnurag S. Maskey # 3366ba597c5SAnurag S. Maskey $RM -f $ETC_DEFAULT_DOMAIN 3376ba597c5SAnurag S. Maskey $DOMAINNAME " " 3386ba597c5SAnurag S. Maskey 3396ba597c5SAnurag S. Maskey NAMESERVICES_CONFIG_FILE=`nwam_get_loc_prop \ 3406ba597c5SAnurag S. Maskey $loc nameservices-config-file` 3416ba597c5SAnurag S. Maskey NAMESERVICES=`nwam_get_loc_prop $loc nameservices` 3426ba597c5SAnurag S. Maskey 3436ba597c5SAnurag S. Maskey if [ -f "$NAMESERVICES_CONFIG_FILE" ]; then 3446ba597c5SAnurag S. Maskey $CP -p $NAMESERVICES_CONFIG_FILE /etc/nsswitch.conf 3456ba597c5SAnurag S. Maskey else 3466ba597c5SAnurag S. Maskey echo "Failed to activate location ${loc}:\ 3476ba597c5SAnurag S. Maskey missing nameservices-config-file property" 3486ba597c5SAnurag S. Maskey exit $SMF_EXIT_ERR_CONFIG 3496ba597c5SAnurag S. Maskey fi 3506ba597c5SAnurag S. Maskey 3516ba597c5SAnurag S. Maskey (IFS=,; 3526ba597c5SAnurag S. Maskey for ns in $NAMESERVICES; do 3536ba597c5SAnurag S. Maskey case "$ns" in 3546ba597c5SAnurag S. Maskey 'files') 3556ba597c5SAnurag S. Maskey # no additional setup needed for files nameservice 3566ba597c5SAnurag S. Maskey ;; 3576ba597c5SAnurag S. Maskey 'dns') 3586ba597c5SAnurag S. Maskey do_dns $loc 3596ba597c5SAnurag S. Maskey ;; 3606ba597c5SAnurag S. Maskey 'nis') 3616ba597c5SAnurag S. Maskey do_nis $loc 3626ba597c5SAnurag S. Maskey ;; 3636ba597c5SAnurag S. Maskey 'ldap') 3646ba597c5SAnurag S. Maskey do_ldap $loc 3656ba597c5SAnurag S. Maskey ;; 3666ba597c5SAnurag S. Maskey '*') 3676ba597c5SAnurag S. Maskey echo "Unrecognized nameservices value ${ns}; ignoring" 3686ba597c5SAnurag S. Maskey ;; 3696ba597c5SAnurag S. Maskey esac 3706ba597c5SAnurag S. Maskey done 3716ba597c5SAnurag S. Maskey ) 3726ba597c5SAnurag S. Maskey 3736ba597c5SAnurag S. Maskey # 3746ba597c5SAnurag S. Maskey # Restart other related services 3756ba597c5SAnurag S. Maskey # 3766ba597c5SAnurag S. Maskey # We explicitly restart here, as restart will only have an 3776ba597c5SAnurag S. Maskey # effect if the service is already enabled. We don't want 3786ba597c5SAnurag S. Maskey # to enable the service if it's currently disabled. 3796ba597c5SAnurag S. Maskey # 3806ba597c5SAnurag S. Maskey restart_svc $AUTOFS_FMRI 3816ba597c5SAnurag S. Maskey} 3826ba597c5SAnurag S. Maskey 3836ba597c5SAnurag S. Maskey# 3846ba597c5SAnurag S. Maskey# do_sec <location> 3856ba597c5SAnurag S. Maskey# 3866ba597c5SAnurag S. Maskey# If config properties are set, update the SMF property and refresh the 3876ba597c5SAnurag S. Maskey# service. If config properties are not set, delete the SMF property and 3886ba597c5SAnurag S. Maskey# stop the service. 3896ba597c5SAnurag S. Maskey# 3906ba597c5SAnurag S. Maskeydo_sec () { 3916ba597c5SAnurag S. Maskey loc=$1 3926ba597c5SAnurag S. Maskey 3936ba597c5SAnurag S. Maskey ike_file=`nwam_get_loc_prop $loc ike-config-file` 3946ba597c5SAnurag S. Maskey pol_file=`nwam_get_loc_prop $loc ipsecpolicy-config-file` 3956ba597c5SAnurag S. Maskey ipf_file=`nwam_get_loc_prop $loc ipfilter-config-file` 3966ba597c5SAnurag S. Maskey ipf6_file=`nwam_get_loc_prop $loc ipfilter-v6-config-file` 3976ba597c5SAnurag S. Maskey ipnat_file=`nwam_get_loc_prop $loc ipnat-config-file` 3986ba597c5SAnurag S. Maskey ippool_file=`nwam_get_loc_prop $loc ippool-config-file` 3996ba597c5SAnurag S. Maskey 4006ba597c5SAnurag S. Maskey # IKE 4016ba597c5SAnurag S. Maskey if [ -n "$ike_file" ]; then 4026ba597c5SAnurag S. Maskey set_smf_prop $IPSEC_IKE_FMRI config/config_file $ike_file 4036ba597c5SAnurag S. Maskey refresh_svc $IPSEC_IKE_FMRI 4046ba597c5SAnurag S. Maskey start_svc $IPSEC_IKE_FMRI 4056ba597c5SAnurag S. Maskey else 4066ba597c5SAnurag S. Maskey stop_svc $IPSEC_IKE_FMRI 4076ba597c5SAnurag S. Maskey fi 4086ba597c5SAnurag S. Maskey 4096ba597c5SAnurag S. Maskey # IPsec 4106ba597c5SAnurag S. Maskey if [ -n "$pol_file" ]; then 4116ba597c5SAnurag S. Maskey set_smf_prop $IPSEC_POLICY_FMRI config/config_file $pol_file 4126ba597c5SAnurag S. Maskey refresh_svc $IPSEC_POLICY_FMRI 4136ba597c5SAnurag S. Maskey start_svc $IPSEC_POLICY_FMRI 4146ba597c5SAnurag S. Maskey else 4156ba597c5SAnurag S. Maskey stop_svc $IPSEC_POLICY_FMRI 4166ba597c5SAnurag S. Maskey fi 4176ba597c5SAnurag S. Maskey 4186ba597c5SAnurag S. Maskey # IPFilter 4196ba597c5SAnurag S. Maskey refresh_ipf=false 4206ba597c5SAnurag S. Maskey if [ -n "$ipf_file" ]; then 4216ba597c5SAnurag S. Maskey if [ "$ipf_file" = "/none" ]; then 4226ba597c5SAnurag S. Maskey set_smf_prop $IPFILTER_FMRI \ 4236ba597c5SAnurag S. Maskey firewall_config_default/policy "none" 4246ba597c5SAnurag S. Maskey elif [ "$ipf_file" = "/deny" ]; then 4256ba597c5SAnurag S. Maskey set_smf_prop $IPFILTER_FMRI \ 4266ba597c5SAnurag S. Maskey firewall_config_default/policy "deny" 4276ba597c5SAnurag S. Maskey elif [ "$ipf_file" = "/allow" ]; then 4286ba597c5SAnurag S. Maskey set_smf_prop $IPFILTER_FMRI \ 4296ba597c5SAnurag S. Maskey firewall_config_default/policy "allow" 4306ba597c5SAnurag S. Maskey else 4316ba597c5SAnurag S. Maskey # custom policy with policy file 4326ba597c5SAnurag S. Maskey set_smf_prop $IPFILTER_FMRI \ 4336ba597c5SAnurag S. Maskey firewall_config_default/policy "custom" 4346ba597c5SAnurag S. Maskey set_smf_prop $IPFILTER_FMRI \ 4356ba597c5SAnurag S. Maskey firewall_config_default/custom_policy_file $ipf_file 4366ba597c5SAnurag S. Maskey fi 4376ba597c5SAnurag S. Maskey refresh_ipf=true 4386ba597c5SAnurag S. Maskey else 4396ba597c5SAnurag S. Maskey # change policy to "none", no need to clear custom_policy_file 4406ba597c5SAnurag S. Maskey set_smf_prop $IPFILTER_FMRI firewall_config_default/policy \ 4416ba597c5SAnurag S. Maskey "none" 4426ba597c5SAnurag S. Maskey # IPFilter has to be refreshed to make the changes effective. 4436ba597c5SAnurag S. Maskey # Don't set $refresh_ipf as it keeps IPFilter online rather 4446ba597c5SAnurag S. Maskey # than disabled. Refresh after IPFilter is disabled below. 4456ba597c5SAnurag S. Maskey fi 4466ba597c5SAnurag S. Maskey if [ -n "$ipf6_file" ]; then 4476ba597c5SAnurag S. Maskey set_smf_prop $IPFILTER_FMRI config/ipf6_config_file $ipf6_file 4486ba597c5SAnurag S. Maskey refresh_ipf=true 4496ba597c5SAnurag S. Maskey fi 4506ba597c5SAnurag S. Maskey if [ -n "$ipnat_file" ]; then 4516ba597c5SAnurag S. Maskey set_smf_prop $IPFILTER_FMRI config/ipnat_config_file $ipnat_file 4526ba597c5SAnurag S. Maskey refresh_ipf=true 4536ba597c5SAnurag S. Maskey fi 4546ba597c5SAnurag S. Maskey if [ -n "$ippool_file" ]; then 4556ba597c5SAnurag S. Maskey set_smf_prop $IPFILTER_FMRI config/ippool_config_file \ 4566ba597c5SAnurag S. Maskey $ippool_file 4576ba597c5SAnurag S. Maskey refresh_ipf=true 4586ba597c5SAnurag S. Maskey fi 4596ba597c5SAnurag S. Maskey 4606ba597c5SAnurag S. Maskey if [ "$refresh_ipf" = "true" ]; then 4616ba597c5SAnurag S. Maskey refresh_svc $IPFILTER_FMRI 4626ba597c5SAnurag S. Maskey start_svc $IPFILTER_FMRI 4636ba597c5SAnurag S. Maskey else 4646ba597c5SAnurag S. Maskey stop_svc $IPFILTER_FMRI 4656ba597c5SAnurag S. Maskey refresh_svc $IPFILTER_FMRI 4666ba597c5SAnurag S. Maskey fi 4676ba597c5SAnurag S. Maskey} 4686ba597c5SAnurag S. Maskey 4696ba597c5SAnurag S. Maskey# 4706ba597c5SAnurag S. Maskey# update_nfs_file <new nfsv4 domain> 4716ba597c5SAnurag S. Maskey# 4726ba597c5SAnurag S. Maskeyupdate_nfs_file () { 4736ba597c5SAnurag S. Maskey domain=$1 4746ba597c5SAnurag S. Maskey file=/etc/default/nfs 4756ba597c5SAnurag S. Maskey 4766ba597c5SAnurag S. Maskey # 4776ba597c5SAnurag S. Maskey # For non-commented-out lines that set NFSMAPID_DOMAIN: 4786ba597c5SAnurag S. Maskey # if not previously added by nwam, comment out with a note 4796ba597c5SAnurag S. Maskey # if previously added by nwam, remove 4806ba597c5SAnurag S. Maskey # For commented-out lines that set NFSMAPID_DOMAIN: 4816ba597c5SAnurag S. Maskey # if not commented out by NWAM, leave as-is 4826ba597c5SAnurag S. Maskey # if commented out by NWAM, remove 4836ba597c5SAnurag S. Maskey # All other lines: leave as-is 4846ba597c5SAnurag S. Maskey # 4856ba597c5SAnurag S. Maskey $NAWK ' \ 4866ba597c5SAnurag S. Maskey $0 ~ /^NFSMAPID_DOMAIN=/ { 4876ba597c5SAnurag S. Maskey if (index($0, "# Added by NWAM") == 0) 4886ba597c5SAnurag S. Maskey printf("#%s # Commented out by NWAM\n", $0); 4896ba597c5SAnurag S. Maskey } 4906ba597c5SAnurag S. Maskey $0 ~ /^#NFSMAPID_DOMAIN=/ { 4916ba597c5SAnurag S. Maskey if ($0 !~ /"# Commented out by NWAM"/) 4926ba597c5SAnurag S. Maskey printf("%s\n", $0); 4936ba597c5SAnurag S. Maskey } 4946ba597c5SAnurag S. Maskey $1 !~ /NFSMAPID_DOMAIN=/ { 4956ba597c5SAnurag S. Maskey printf("%s\n", $0); 4966ba597c5SAnurag S. Maskey }' $file >$file.$$ 4976ba597c5SAnurag S. Maskey 4986ba597c5SAnurag S. Maskey # Now add the desired value 4996ba597c5SAnurag S. Maskey echo "NFSMAPID_DOMAIN=$domain # Added by NWAM" >> $file.$$ 5006ba597c5SAnurag S. Maskey 5016ba597c5SAnurag S. Maskey # Finally, copy our working version to the real thing 5026ba597c5SAnurag S. Maskey $MV -f $file.$$ $file 5036ba597c5SAnurag S. Maskey} 5046ba597c5SAnurag S. Maskey 5056ba597c5SAnurag S. Maskey# 5066ba597c5SAnurag S. Maskey# do_nfsv4 <location> 5076ba597c5SAnurag S. Maskey# 5086ba597c5SAnurag S. Maskey# Updates NFSv4 domain for location 5096ba597c5SAnurag S. Maskey# 5106ba597c5SAnurag S. Maskeydo_nfsv4 () { 5116ba597c5SAnurag S. Maskey loc=$1 5126ba597c5SAnurag S. Maskey 5136ba597c5SAnurag S. Maskey nfsv4domain=`nwam_get_loc_prop $loc nfsv4-domain` 5146ba597c5SAnurag S. Maskey if [ $? -eq 0 ]; then 5156ba597c5SAnurag S. Maskey update_nfs_file $nfsv4domain 5166ba597c5SAnurag S. Maskey start_svc $MAPID_FMRI 5176ba597c5SAnurag S. Maskey else 5186ba597c5SAnurag S. Maskey stop_svc $MAPID_FMRI 5196ba597c5SAnurag S. Maskey fi 5206ba597c5SAnurag S. Maskey} 5216ba597c5SAnurag S. Maskey 5226ba597c5SAnurag S. Maskey# 5236ba597c5SAnurag S. Maskey# activate_loc <location> 5246ba597c5SAnurag S. Maskey# 5256ba597c5SAnurag S. Maskey# Activates the given location 5266ba597c5SAnurag S. Maskey# 5276ba597c5SAnurag S. Maskeyactivate_loc () { 5286ba597c5SAnurag S. Maskey loc=$1 5296ba597c5SAnurag S. Maskey 5306ba597c5SAnurag S. Maskey echo activating $loc location 5316ba597c5SAnurag S. Maskey 5326ba597c5SAnurag S. Maskey do_sec $loc 5336ba597c5SAnurag S. Maskey do_ns $loc 5346ba597c5SAnurag S. Maskey do_nfsv4 $loc 5356ba597c5SAnurag S. Maskey} 5366ba597c5SAnurag S. Maskey 5376ba597c5SAnurag S. Maskey# 5386ba597c5SAnurag S. Maskey# Script entry point 5396ba597c5SAnurag S. Maskey# 5406ba597c5SAnurag S. Maskey# Arguments to net-loc are 5416ba597c5SAnurag S. Maskey# method ('start' or 'refresh') 5426ba597c5SAnurag S. Maskey 5436ba597c5SAnurag S. Maskey# 5446ba597c5SAnurag S. Maskey# If nwam is not enabled, do nothing and return OK. 5456ba597c5SAnurag S. Maskey# 5466ba597c5SAnurag S. Maskeyservice_is_enabled $NWAM_FMRI || exit $SMF_EXIT_OK 5476ba597c5SAnurag S. Maskey 5486ba597c5SAnurag S. Maskey# 5496ba597c5SAnurag S. Maskey# In a shared-IP zone we need this service to be up, but all of the work 5506ba597c5SAnurag S. Maskey# it tries to do is irrelevant (and will actually lead to the service 5516ba597c5SAnurag S. Maskey# failing if we try to do it), so just bail out. 5526ba597c5SAnurag S. Maskey# In the global zone and exclusive-IP zones we proceed. 5536ba597c5SAnurag S. Maskey# 5546ba597c5SAnurag S. Maskeysmf_configure_ip || exit $SMF_EXIT_OK 5556ba597c5SAnurag S. Maskey 5566ba597c5SAnurag S. Maskeycase "$1" in 5576ba597c5SAnurag S. Maskey 5586ba597c5SAnurag S. Maskey'start') 5596ba597c5SAnurag S. Maskey # 5606ba597c5SAnurag S. Maskey # We need to create the default (NoNet and Automatic) 5616ba597c5SAnurag S. Maskey # locations, if they don't already exist. So: first check 5626ba597c5SAnurag S. Maskey # for the existence of each, and then run the appropriate 5636ba597c5SAnurag S. Maskey # nwamcfg script(s) as needed. Restart nwamd if a location is 5646ba597c5SAnurag S. Maskey # created, as it needs to read it in. 5656ba597c5SAnurag S. Maskey # 5666ba597c5SAnurag S. Maskey LOC_CREATED="false" 5676ba597c5SAnurag S. Maskey $NWAMCFG list loc Automatic >/dev/null 2>&1 5686ba597c5SAnurag S. Maskey if [ $? -eq 1 ]; then 5696ba597c5SAnurag S. Maskey $NWAMCFG -f /etc/nwam/loc/create_loc_auto 5706ba597c5SAnurag S. Maskey LOC_CREATED="true" 5716ba597c5SAnurag S. Maskey fi 5726ba597c5SAnurag S. Maskey 5736ba597c5SAnurag S. Maskey $NWAMCFG list loc NoNet >/dev/null 2>&1 5746ba597c5SAnurag S. Maskey if [ $? -eq 1 ]; then 5756ba597c5SAnurag S. Maskey NONETPATH=/etc/nwam/loc/NoNet 5766ba597c5SAnurag S. Maskey NONETFILES="ipf.conf ipf6.conf" 5776ba597c5SAnurag S. Maskey for file in $NONETFILES; do 5786ba597c5SAnurag S. Maskey copy_default $NONETPATH $file 5796ba597c5SAnurag S. Maskey done 5806ba597c5SAnurag S. Maskey $NWAMCFG -f /etc/nwam/loc/create_loc_nonet 5816ba597c5SAnurag S. Maskey LOC_CREATED="true" 5826ba597c5SAnurag S. Maskey fi 5836ba597c5SAnurag S. Maskey 5846ba597c5SAnurag S. Maskey if [ "$LOC_CREATED" = "true" ]; then 5856ba597c5SAnurag S. Maskey refresh_svc $NWAM_FMRI 5866ba597c5SAnurag S. Maskey fi 5876ba597c5SAnurag S. Maskey 5886ba597c5SAnurag S. Maskey # location selection/activation happens below 5896ba597c5SAnurag S. Maskey ;; 5906ba597c5SAnurag S. Maskey 5916ba597c5SAnurag S. Maskey'refresh') 5926ba597c5SAnurag S. Maskey 5936ba597c5SAnurag S. Maskey # location selection/activation happens below 5946ba597c5SAnurag S. Maskey ;; 5956ba597c5SAnurag S. Maskey 5966ba597c5SAnurag S. Maskey*) 5976ba597c5SAnurag S. Maskey echo "Usage: $0 start|refresh" 5986ba597c5SAnurag S. Maskey exit 1 5996ba597c5SAnurag S. Maskey ;; 6006ba597c5SAnurag S. Maskey 6016ba597c5SAnurag S. Maskeyesac 6026ba597c5SAnurag S. Maskey 6036ba597c5SAnurag S. Maskey# 6046ba597c5SAnurag S. Maskey# If the Legacy location doesn't exist and the file to create the Legacy 6056ba597c5SAnurag S. Maskey# location exists, create the Legacy location. Make a copy of it as the user's 6066ba597c5SAnurag S. Maskey# intentions before upgrade. Then activate the User location if nis is 6076ba597c5SAnurag S. Maskey# involved. Because NIS affects more parts of the system (e.g. automounts) we 6086ba597c5SAnurag S. Maskey# are not willing to make NIS part of the Automatic location (i.e. enable it 6096ba597c5SAnurag S. Maskey# automatically based on external input) as we do with DHCP-driven DNS. 6106ba597c5SAnurag S. Maskey# 6116ba597c5SAnurag S. Maskeyactivate_user_loc=0 6126ba597c5SAnurag S. Maskey$NWAMCFG list loc Legacy >/dev/null 2>&1 6136ba597c5SAnurag S. Maskeyif [ $? -eq 1 -a -f "$SCRIPT_PATH/create_loc_legacy" ]; then 6146ba597c5SAnurag S. Maskey # 6156ba597c5SAnurag S. Maskey # We built the script in and pointing to /etc/svc/volatile because we 6166ba597c5SAnurag S. Maskey # may not have a writable filesystem in net-nwam. So here we move the 6176ba597c5SAnurag S. Maskey # components and rewrite the script to point at the writable filesystem. 6186ba597c5SAnurag S. Maskey # 6196ba597c5SAnurag S. Maskey $CP -r $SCRIPT_PATH/Legacy $LEGACY_LOC_PATH 6206ba597c5SAnurag S. Maskey $MV $SCRIPT_PATH/create_loc_legacy $SCRIPT_PATH/vcreate_loc_legacy 6216ba597c5SAnurag S. Maskey $SED -e's,/etc/svc/volatile/nwam/Legacy,/etc/nwam/loc/Legacy,' \ 6226ba597c5SAnurag S. Maskey $SCRIPT_PATH/vcreate_loc_legacy >$SCRIPT_PATH/create_loc_legacy 6236ba597c5SAnurag S. Maskey $NWAMCFG -f $SCRIPT_PATH/create_loc_legacy 6246ba597c5SAnurag S. Maskey loc_ver=`$SVCPROP -c -p location_upgrade/version $LOCATION_FMRI \ 6256ba597c5SAnurag S. Maskey 2>/dev/null` 6266ba597c5SAnurag S. Maskey if [ $? -eq 1 ]; then 6276ba597c5SAnurag S. Maskey # 6286ba597c5SAnurag S. Maskey # We are rewriting configuration variables from the Legacy 6296ba597c5SAnurag S. Maskey # location to the User location. Use variable ULP to keep REs 6306ba597c5SAnurag S. Maskey # within a line. 6316ba597c5SAnurag S. Maskey # 6326ba597c5SAnurag S. Maskey ULP=$USER_LOC_PATH 6336ba597c5SAnurag S. Maskey $SED -e's,Legacy,User,' \ 6346ba597c5SAnurag S. Maskey -e's,activation-mode=system,activation-mode=manual,' \ 6356ba597c5SAnurag S. Maskey -e"s,\(ipfilter-config-file=\).*/\(.*\),\1$ULP/\2," \ 6366ba597c5SAnurag S. Maskey -e"s,\(ipfilter-v6-config-file=\).*/\(.*\),\1$ULP/\2," \ 6376ba597c5SAnurag S. Maskey -e"s,\(ipnat-config-file=\).*/\(.*\),\1$ULP/\2," \ 6386ba597c5SAnurag S. Maskey -e"s,\(ippool-config-file=\).*/\(.*\),\1$ULP/\2," \ 6396ba597c5SAnurag S. Maskey -e"s,\(ike-config-file=\).*/\(.*\),\1$ULP/\2," \ 6406ba597c5SAnurag S. Maskey -e"s,\(ipsecpolicy-config-file=\).*/\(.*\),\1$ULP/\2," \ 6416ba597c5SAnurag S. Maskey $SCRIPT_PATH/create_loc_legacy | \ 6426ba597c5SAnurag S. Maskey $SED -e's,/etc/nwam/loc/User/none,/none,' \ 6436ba597c5SAnurag S. Maskey -e's,/etc/nwam/loc/User/allow,/allow,' \ 6446ba597c5SAnurag S. Maskey -e's,/etc/nwam/loc/User/deny,/deny,' \ 6456ba597c5SAnurag S. Maskey >$SCRIPT_PATH/create_loc_user 6466ba597c5SAnurag S. Maskey # 6476ba597c5SAnurag S. Maskey # We are creating the User location here. The User location 6486ba597c5SAnurag S. Maskey # is an appromixation of the machine configuration when the 6496ba597c5SAnurag S. Maskey # user change or upgraded to this version of NWAM. First 6506ba597c5SAnurag S. Maskey # we make sure there isn't an existing User location or any 6516ba597c5SAnurag S. Maskey # existing User location data. We then copy all the data 6526ba597c5SAnurag S. Maskey # from the Legacy location and create a location pointing at 6536ba597c5SAnurag S. Maskey # that data. Lastly we create a version property to note 6546ba597c5SAnurag S. Maskey # that we have done this. 6556ba597c5SAnurag S. Maskey # 6566ba597c5SAnurag S. Maskey $NWAMCFG destroy loc User 2>/dev/null 6576ba597c5SAnurag S. Maskey $RM -rf $USER_LOC_PATH 6586ba597c5SAnurag S. Maskey $CP -r $LEGACY_LOC_PATH $USER_LOC_PATH 6596ba597c5SAnurag S. Maskey $RM -f $USER_LOC_PATH/resolv.conf 6606ba597c5SAnurag S. Maskey $NWAMCFG -f $SCRIPT_PATH/create_loc_user 6616ba597c5SAnurag S. Maskey # The User location is activated if 'nis' is in a non comment 6626ba597c5SAnurag S. Maskey # line of nsswitch.conf. 6636ba597c5SAnurag S. Maskey $GREP -v "^#" $USER_LOC_PATH/nsswitch.conf |\ 6646ba597c5SAnurag S. Maskey $SED -e 's/[^:]*://' | $GREP nis >/dev/null 2>&1 6656ba597c5SAnurag S. Maskey if [ $? -eq 0 ]; then 6666ba597c5SAnurag S. Maskey activate_user_loc=1 6676ba597c5SAnurag S. Maskey fi 6686ba597c5SAnurag S. Maskey $SVCCFG -s $SMF_FMRI addpg location_upgrade application \ 6696ba597c5SAnurag S. Maskey 2>/dev/null 6706ba597c5SAnurag S. Maskey $SVCCFG -s $SMF_FMRI setprop location_upgrade/version = \ 6716ba597c5SAnurag S. Maskey astring: "1" 6726ba597c5SAnurag S. Maskey fi 6736ba597c5SAnurag S. Maskeyfi 6746ba597c5SAnurag S. Maskey 6756ba597c5SAnurag S. Maskey# 6766ba597c5SAnurag S. Maskey# Activate a location. If we've just finished upgrading, and 6776ba597c5SAnurag S. Maskey# the User location should be activated, do that (and use nwamadm 6786ba597c5SAnurag S. Maskey# to do so, so the enabled property gets set and nwamd knows this 6796ba597c5SAnurag S. Maskey# selection has been made). Otherwise, if our location/selected 6806ba597c5SAnurag S. Maskey# property has a value, we activate that location; else we activate 6816ba597c5SAnurag S. Maskey# the NoNet location as a default value. 6826ba597c5SAnurag S. Maskey# 6836ba597c5SAnurag S. Maskeyif [ $activate_user_loc -eq 1 ]; then 6846ba597c5SAnurag S. Maskey $NWAMADM enable -p loc User 6856ba597c5SAnurag S. Maskeyelse 6866ba597c5SAnurag S. Maskey sel_loc=`$SVCPROP -c -p location/selected $SMF_FMRI 2>/dev/null` 6876ba597c5SAnurag S. Maskey if [ $? -eq 1 ]; then 6886ba597c5SAnurag S. Maskey # location hasn't been selected; default to NoNet 6896ba597c5SAnurag S. Maskey activate_loc NoNet 6906ba597c5SAnurag S. Maskey else 691*4a44f0a1SAnurag S. Maskey # check if the selected location exists 692*4a44f0a1SAnurag S. Maskey $NWAMCFG list loc $sel_loc >/dev/null 2>&1 693*4a44f0a1SAnurag S. Maskey if [ $? -eq 1 ]; then 694*4a44f0a1SAnurag S. Maskey echo "location $sel_loc doesn't exist, revert to NoNet" 695*4a44f0a1SAnurag S. Maskey set_smf_prop $SMF_FMRI location/selected NoNet 696*4a44f0a1SAnurag S. Maskey refresh_svc $SMF_FMRI 697*4a44f0a1SAnurag S. Maskey else 6986ba597c5SAnurag S. Maskey # activate selected location 6996ba597c5SAnurag S. Maskey activate_loc $sel_loc 7006ba597c5SAnurag S. Maskey fi 7016ba597c5SAnurag S. Maskey fi 702*4a44f0a1SAnurag S. Maskeyfi 7036ba597c5SAnurag S. Maskey 7046ba597c5SAnurag S. Maskeyexit $SMF_EXIT_OK 705