net-loc revision ad559bec55fd74f310399483501e1fa231f65528
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User#!/sbin/sh
59602f2a7c4e4809941583bed3e94cd26e628f1aTinderbox User#
6fe48fb46e53ffc37542853a1edb74cb481b7d94Automatic Updater# CDDL HEADER START
c78c39caab4cf8b5daefc9c65878f7f5ed3eb7a0Tinderbox User#
f536382c59dd492a14667b753816d920f9981f1cTinderbox User# The contents of this file are subject to the terms of the
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews# Common Development and Distribution License (the "License").
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews# You may not use this file except in compliance with the License.
c57668a2fbbe558c1bd21652813616f2f517c469Tinderbox User#
a7c412f37cc73d0332887a746e81220cbf09dd00Mark Andrews# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
287a6a8f9040dc43560cd69cddf83bfc0f53b76fTinderbox User# or http://www.opensolaris.org/os/licensing.
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews# See the License for the specific language governing permissions
8de3f14f1c300c3e1ed99084cc03485b42c92bf1Tinderbox User# and limitations under the License.
e5a6871cd0635ecdb2bf792316a2d8c53206f4b2Tinderbox User#
950d203b64f512b85fcc093ee1e9e3e531a1aea3Tinderbox User# When distributing Covered Code, include this CDDL HEADER in each
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox User# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews# If applicable, add the following below this CDDL HEADER, with the
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont# fields enclosed by brackets "[]" replaced with your own identifying
e676a596869d8a80a644c99a848afb53d1c5975eMark Andrews# information: Portions Copyright [yyyy] [name of copyright owner]
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews#
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont# CDDL HEADER END
d5637bdbb931ff79fced3d4858d83212ea58ed15Tinderbox User#
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews#
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont#
d5637bdbb931ff79fced3d4858d83212ea58ed15Tinderbox User
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews. /lib/svc/share/smf_include.sh
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User. /lib/svc/share/net_include.sh
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User# FMRI consts
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark AndrewsAUTOFS_FMRI="svc:/system/filesystem/autofs"
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox UserDNS_CLIENT_FMRI="svc:/network/dns/client"
0eb371ca0dab50ae3462e98794a6126198c52f4bMark AndrewsIPSEC_IKE_FMRI="svc:/network/ipsec/ike"
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox UserIPSEC_POLICY_FMRI="svc:/network/ipsec/policy"
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark AndrewsIPFILTER_FMRI="svc:/network/ipfilter:default"
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark AndrewsLDAP_CLIENT_FMRI="svc:/network/ldap/client"
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox UserLOCATION_FMRI="svc:/network/location:default"
0eb371ca0dab50ae3462e98794a6126198c52f4bMark AndrewsMAPID_FMRI="svc:/network/nfs/mapid:default"
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox UserNIS_CLIENT_FMRI="svc:/network/nis/client"
0eb371ca0dab50ae3462e98794a6126198c52f4bMark AndrewsNWAM_FMRI="svc:/network/physical:nwam"
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews# commands
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox UserCP=/usr/bin/cp
0eb371ca0dab50ae3462e98794a6126198c52f4bMark AndrewsDHCPINFO=/sbin/dhcpinfo
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox UserDOMAINNAME=/usr/bin/domainname
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark AndrewsGREP=/usr/bin/grep
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan HuntLDAPCLIENT=/usr/sbin/ldapclient
dc238a06bffa79de141ee7655765e2df91498a8aTinderbox UserMKDIR=/usr/bin/mkdir
827f8cccb5280f4da66c46186e792d1cb9d73503Mark AndrewsMV=/usr/bin/mv
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan HuntNAWK=/usr/bin/nawk
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic UpdaterNWAMADM=/usr/sbin/nwamadm
3759f10fc543747668b1ca4b4671f35b0dea8445Francis DupontNWAMCFG=/usr/sbin/nwamcfg
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic UpdaterRM=/usr/bin/rm
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan HuntSED=/usr/bin/sed
dc238a06bffa79de141ee7655765e2df91498a8aTinderbox UserSVCADM=/usr/sbin/svcadm
827f8cccb5280f4da66c46186e792d1cb9d73503Mark AndrewsSVCCFG=/usr/sbin/svccfg
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan HuntSVCPROP=/usr/bin/svcprop
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox UserTOUCH=/usr/bin/touch
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont# Path to directories
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic UpdaterETC_DEFAULT_DOMAIN=/etc/defaultdomain
0eb371ca0dab50ae3462e98794a6126198c52f4bMark AndrewsNIS_BIND_PATH=/var/yp/binding
cdfc81e048bd34c1d628380247bda6b80a89e20eAutomatic UpdaterLEGACY_LOC_PATH=/etc/nwam/loc/Legacy
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark AndrewsUSER_LOC_PATH=/etc/nwam/loc/User
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox UserSCRIPT_PATH=/etc/svc/volatile/nwam
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews#
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater# echoes DHCP controlled interfaces separated by commas
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews#
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews# Don't parse the output of ifconfig(1M) because interfaces that haven't
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User# acquired a DHCP lease also have the DHCP flag set.
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews#
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updaterget_dhcp_interfaces () {
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews #
eabc9c3c07cd956d3c436bd7614cb162dabdda76Mark Andrews # 1. parse netstat(1M) output for v4 interfaces in BOUND
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews # or INFORMATION state
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews # 2. make a space-separated list of interface names
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User #
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews netstat -D -f inet | $NAWK '
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox User $2 ~ /BOUND/ { printf "%s ", $1 }
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt $2 ~ /INFORMATION/ { printf "%s ", $1 }'
294e9d4c34462d29a3e766c88f452b46aeb3702fTinderbox User}
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User
4c6bae917bec70e1fc4d1b761a9765075af78441Tinderbox User#
294e9d4c34462d29a3e766c88f452b46aeb3702fTinderbox User# get_dhcpinfo <code/identifier>
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt#
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt# echoes the value received through each interface controlled by DHCP
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt# returns:
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews# 0 => property is set
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User# 1 => property is not set
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt#
7cc0a5d21ef046bfd630c4769943d896a7d7472cTinderbox Userget_dhcpinfo () {
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews code=$1
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews
ee11dfc481f2ef6a032a715454f6290961a722d2Tinderbox User # Get all interfaces with DHCP control, IFS is " "
ee11dfc481f2ef6a032a715454f6290961a722d2Tinderbox User interfaces=`get_dhcp_interfaces`
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User info=""
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews for intf in $interfaces; do
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User val=`$DHCPINFO -i $intf $code`
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews if [ $? -eq 0 ]; then
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews if [ "$info" = "" ]; then
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User info="$val"
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews else
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User info="$info,$val"
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews fi
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews fi
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User done
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson echo $info
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User}
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User#
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews# set_smf_prop <fmri> <property name> <property value>
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User#
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrewsset_smf_prop () {
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews $SVCCFG -s $1 setprop $2 = astring: "$3" && return
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User}
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User#
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson# refresh_svc <fmri>
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User#
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews# Refreshes the service.
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User#
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrewsrefresh_svc () {
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User $SVCADM refresh $1
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson}
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews#
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User# restart_svc <fmri>
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews#
28a5dd720187fddb16055a0f64b63a7b66f29f64Mark Andrews# Restarts the service.
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews#
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrewsrestart_svc () {
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User $SVCADM restart $1
a450977e98155f6e828fe6f8d52cf24674231831Mark Andrews}
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews#
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User# start_svc <fmri>
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews#
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews# Starts the service. If the service is already enabled, restarts it. If
2a31bd531072824ef252c18303859d6af7451b00Francis Dupont# it is not enabled, temporarily enables it.
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User#
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrewsstart_svc () {
2a31bd531072824ef252c18303859d6af7451b00Francis Dupont if service_is_enabled $1; then
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews $SVCADM restart $1
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User else
5747235bf35e7398984fd6b4632743396895ea7aTinderbox User $SVCADM enable -t $1
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews fi
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews}
a03cb08d0c4f1ca5fbc121d2f02bdffa7eb52286Mark Andrews
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews#
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews# stop_svc <fmri>
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews#
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User# Temporarily disables the service.
5747235bf35e7398984fd6b4632743396895ea7aTinderbox User#
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrewsstop_svc () {
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews $SVCADM disable -t $1
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User}
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews#
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews# copy_default <dir> <file>
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User#
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews# Copies <dir>/<file>.dfl to <dir>/<file>
01a5c5503482fb3ba52088bf0178a7213273bf96Mark Andrews#
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox Usercopy_default () {
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User $CP -p $1/$2.dfl $1/$2
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User}
cdfc81e048bd34c1d628380247bda6b80a89e20eAutomatic Updater
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews#
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User# enable_nonet
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews#
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User# Enables the NoNet location. This function is called whenever an error is
fe80a4909bf62b602feaf246866e9d29f7654194Automatic Updater# detected in the location currently being activated (missing property or the
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User# location itself).
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews#
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox Userenable_nonet () {
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews echo "reverting to NoNet location"
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User set_smf_prop $SMF_FMRI location/selected NoNet
fa0326cc2cf428f67575b6ba3b97b528a31b0010Tinderbox User refresh_svc $SMF_FMRI
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User # Refresh nwam so that it re-does the condition checking
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews refresh_svc $NWAM_FMRI
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User}
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User#
fe80a4909bf62b602feaf246866e9d29f7654194Automatic Updater# do_dns <location>
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User#
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews# Installs DNS information on /etc/resolv.conf for location
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User#
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrewsdo_dns () {
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User loc=$1
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson file=/etc/resolv.conf
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews # Write out to temporary file first
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User $TOUCH $file.$$
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User DNS_CONFIGSRC=`nwam_get_loc_prop $loc dns-nameservice-configsrc`
dd65eb1efb40b1c47d57963192bfc54873b219beAutomatic Updater if [ -z "$DNS_CONFIGSRC" ]; then
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User echo "missing 'dns-nameservice-configsrc' property for '$loc'"
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews enable_nonet
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User return
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews fi
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User
133e6d43fa82e80d3798be4de00f4540f485ec6cAutomatic Updater (IFS=" ";
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User dns_server_set=false
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews for configsrc in $DNS_CONFIGSRC; do
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User case "$configsrc" in
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews 'manual')
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User DNS_DOMAIN=`nwam_get_loc_prop $loc \
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson dns-nameservice-domain`
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User DNS_SERVERS=`nwam_get_loc_prop $loc \
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews dns-nameservice-servers`
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User DNS_SEARCH=`nwam_get_loc_prop $loc \
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews dns-nameservice-search`
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User ;;
5f7586ddbd3edd11272cdd30ed613d936129328bTinderbox User 'dhcp')
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User DNS_DOMAIN=`get_dhcpinfo DNSdmain`
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews DNS_SERVERS=`get_dhcpinfo DNSserv`
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User # No DNS search info for IPv4
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews ;;
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox User '*')
ac2e2800b4ac9cbe4cb756d967f4583c611eb75eMark Andrews echo "Unrecognized DNS configsrc ${configsrc}; ignoring"
70d987def5a58ebeb8243017c0ec2e9b2c326cf4Evan Hunt ;;
70d987def5a58ebeb8243017c0ec2e9b2c326cf4Evan Hunt esac
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User # Write DNS settings
bac4435d473c9a0281507524f084480c34aa942aTinderbox User if [ -n "$DNS_DOMAIN" ]; then
933799f3641f4f78445d015008bad0038900a82aTinderbox User echo "$DNS_DOMAIN" | $NAWK \
f0c5e918974bf778af6cd1e25309ad13e30a79a6Tinderbox User 'FS="," { for (i = 1; i <= NF; i++) \
a7c412f37cc73d0332887a746e81220cbf09dd00Mark Andrews print "domain ", $i }' >> $file.$$
7ca715ad1587a68a531ea1cdea07515d7232567eTinderbox User fi
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox User if [ -n "$DNS_SEARCH" ]; then
8711e5c73ca872d59810760af0332194cbdd619bAutomatic Updater echo "$DNS_SEARCH" | $NAWK \
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater 'FS="," { printf("search"); \
bac4435d473c9a0281507524f084480c34aa942aTinderbox User for (i = 1; i <= NF; i++) printf(" %s", $i); \
91d187ce035f39073f0732ff2a401a45c3c955fbMark Andrews printf("\n") }' >> $file.$$
933799f3641f4f78445d015008bad0038900a82aTinderbox User fi
8e5fce1f9ceba17dd7e3ff0eb287e1e999c14249Mark Andrews if [ -n "$DNS_SERVERS" ]; then
933799f3641f4f78445d015008bad0038900a82aTinderbox User dns_server_set=true
4151211e6649332f7b5a55870cbe37128bcc7b29Tinderbox User echo "$DNS_SERVERS" | $NAWK \
91d187ce035f39073f0732ff2a401a45c3c955fbMark Andrews 'FS="," { for (i = 1; i <= NF; i++) \
ac2e2800b4ac9cbe4cb756d967f4583c611eb75eMark Andrews print "nameserver ", $i }' >> $file.$$
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater fi
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater done
f525041ae26958385b697cf82a30f108577024b6Tinderbox User if [ "$dns_server_set" = "false" ]; then
b02be031b9ff37b042adc8e68e36b8bbc1f672b7Tinderbox User echo "DNS nameserver not set for '$loc'"
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater enable_nonet
ba8b771c371967dd1254c7fa82ebe4158ee04b24Tinderbox User return
59528addd704f8d5757b54e540520f74e588a7c7Automatic Updater fi
3ec8f7777ea2b04fc1ebb63077f0916f63b1011aTinderbox User )
c218e22e3e6cbd409b61a14f1480b5ce5c70bfc1Tinderbox User
b02be031b9ff37b042adc8e68e36b8bbc1f672b7Tinderbox User # Finally, copy our working version to the real thing
933799f3641f4f78445d015008bad0038900a82aTinderbox User $MV -f $file.$$ $file
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater start_svc $DNS_CLIENT_FMRI
19b3dc94bce93fa76bd7e066f9298630dbc9dcb4Automatic Updater}
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater#
ecbc7ebb243a1f8a5dc6f28185ffe9e61d3b2102Mark Andrews# do_nis <location>
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater#
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater# Installs NIS information on /var/yp/binding/ for location
bac4435d473c9a0281507524f084480c34aa942aTinderbox User#
39ae0eafed076ef769fef5c18b22a8051df5c93aTinderbox Userdo_nis () {
91d187ce035f39073f0732ff2a401a45c3c955fbMark Andrews loc=$1
c2abd6efeb9affa70aabb63da2acb23e135cf7f2Mark Andrews
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont NIS_CONFIGSRC=`nwam_get_loc_prop $loc nis-nameservice-configsrc`
dc238a06bffa79de141ee7655765e2df91498a8aTinderbox User if [ -z "$NIS_CONFIGSRC" ]; then
f525041ae26958385b697cf82a30f108577024b6Tinderbox User echo "missing 'nis-nameservice-configsrc' property for '$loc'"
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater enable_nonet
9cd5eb6fe0f26d65724b99216cb31dcdd12e4afdAutomatic Updater return
dc238a06bffa79de141ee7655765e2df91498a8aTinderbox User fi
dc238a06bffa79de141ee7655765e2df91498a8aTinderbox User
4cda4fd158d6ded5586bacea8c388445d99611eaAutomatic Updater (IFS=" ";
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews domainname_set=false
f2f7a53ba0ba69cfe8c505eea16f71bad9d8d449Tinderbox User for configsrc in $NIS_CONFIGSRC; do
c26604a73c4ce907ef6392f38b3fac838b1873a9Tinderbox User case "$configsrc" in
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews 'manual')
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater NIS_SERVERS=`nwam_get_loc_prop $loc \
e08cdffb3ae4ad409f37e3e5a218fe4b7e0e3904Tinderbox User nis-nameservice-servers`
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews DEFAULT_DOMAIN=`nwam_get_loc_prop $loc default-domain`
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews # user-specified default-domain always wins
bac4435d473c9a0281507524f084480c34aa942aTinderbox User if [ -n "$DEFAULT_DOMAIN" ]; then
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews $DOMAINNAME $DEFAULT_DOMAIN
ba8b771c371967dd1254c7fa82ebe4158ee04b24Tinderbox User $DOMAINNAME > $ETC_DEFAULT_DOMAIN
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews domainname_set=true
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater fi
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User ;;
933799f3641f4f78445d015008bad0038900a82aTinderbox User 'dhcp')
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater # Use only the first name
e64202536ea72d8f371dd0df9fc763f8d70bf886Tinderbox User DEFAULT_DOMAIN=`get_dhcpinfo NISdmain | \
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews $NAWK 'FS="," { print $1 }'`
da59e63e7af147a8bcef985b98b04443e04c3a0eTinderbox User NIS_SERVERS=`get_dhcpinfo NISservs`
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User if [ "$domainname_set" = "false" ]; then
757ff043760e4743dda1a10e7d58349275934902Tinderbox User $DOMAINNAME $DEFAULT_DOMAIN
ae454ec746d1d4db8d04e107d4d25ff13158c37fMark Andrews $DOMAINNAME > $ETC_DEFAULT_DOMAIN
f520803b46dc189fdaf84adc87ef327d3587b435Mark Andrews domainname_set=true
a03cb08d0c4f1ca5fbc121d2f02bdffa7eb52286Mark Andrews fi
757ff043760e4743dda1a10e7d58349275934902Tinderbox User ;;
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater '*')
ae454ec746d1d4db8d04e107d4d25ff13158c37fMark Andrews echo "Unrecognized NIS configsrc ${configsrc}; ignoring"
1bcc3273a80c256f11d9098a00ba2c041939e233Mark Andrews ;;
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson esac
1bcc3273a80c256f11d9098a00ba2c041939e233Mark Andrews
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews # Place NIS settings in appropriate directory/file.
1bcc3273a80c256f11d9098a00ba2c041939e233Mark Andrews if [ ! -d "$NIS_BIND_PATH/$DEFAULT_DOMAIN" ]; then
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews $MKDIR -p $NIS_BIND_PATH/$DEFAULT_DOMAIN
ba8b771c371967dd1254c7fa82ebe4158ee04b24Tinderbox User fi
bac4435d473c9a0281507524f084480c34aa942aTinderbox User if [ -n "$NIS_SERVERS" ]; then
f520803b46dc189fdaf84adc87ef327d3587b435Mark Andrews echo "$NIS_SERVERS" | $NAWK \
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User 'FS="," { for (i = 1; i <= NF; i++) print $i }' \
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox User > $NIS_BIND_PATH/$DEFAULT_DOMAIN/ypservers
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews fi
3857cb6fcabeb79d85de4b3e3e4ab99912b701f8Mark Andrews done
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User if [ "$domainname_set" = "false" ]; then
e64202536ea72d8f371dd0df9fc763f8d70bf886Tinderbox User echo "'domainname' not set for '$loc'"
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews enable_nonet
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User return
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson fi
9ecb5d33470ebfb3719a1b8d56bcefdf4b27f7b2Tinderbox User )
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews start_svc $NIS_CLIENT_FMRI
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User}
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox User#
ebdf202f2198158ab4d30f22c370a9c63760d071Tinderbox User# do_ldap <location>
8292deab031e7599cd7622aa7675fbe139ca6095Mark Andrews#
caaff35375fba833f156f952aeca689e5bc7cddfFrancis Dupont# Installs LDAP information using ldapclient(1M) for location
caaff35375fba833f156f952aeca689e5bc7cddfFrancis Dupont#
caaff35375fba833f156f952aeca689e5bc7cddfFrancis Dupontdo_ldap () {
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews loc=$1
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews LDAP_CONFIGSRC=`nwam_get_loc_prop $loc ldap-nameservice-configsrc`
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews if [ -z "$LDAP_CONFIGSRC" ]; then
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews echo "missing 'ldap-nameservice-configsrc' property for '$loc'"
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont enable_nonet
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews return
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews fi
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont (IFS=" ";
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews ldap_config_set=false
78f3ed4bc2fcd3d270bfd599804f3b27a1db4d91Mark Andrews for configsrc in $LDAP_CONFIGSRC; do
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews case "$configsrc" in
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont 'manual')
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews LDAP_SERVERS=`nwam_get_loc_prop $loc \
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews ldap-nameservice-servers`
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews DEFAULT_DOMAIN=`nwam_get_loc_prop $loc default-domain`
e8fc8c884b44371784805e1e0d3100da403dd3f1Automatic Updater $DOMAINNAME $DEFAULT_DOMAIN
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews $DOMAINNAME > $ETC_DEFAULT_DOMAIN
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews ;;
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User '*')
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews echo "Unrecognized LDAP configsrc ${configsrc}; ignoring"
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews ;;
e8fc8c884b44371784805e1e0d3100da403dd3f1Automatic Updater esac
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews # Use ldapclient(1M) to initialize LDAP client settings.
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User if [ -n "$DEFAULT_DOMAIN" -o -n "$LDAP_SERVERS" ]; then
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews ldap_config_set=true
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews # XXX need to check how to specify multiple LDAP servers.
e8fc8c884b44371784805e1e0d3100da403dd3f1Automatic Updater $LDAPCLIENT init -a domainName=$DEFAULT_DOMAIN \
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews $LDAP_SERVERS
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews fi
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User done
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews if [ "$ldap_config_set" = "false" ]; then
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews echo "LDAP configuration could not be set for '$loc'"
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews enable_nonet
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews return
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews fi
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User )
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews start_svc $LDAP_CLIENT_FMRI
b30ec46fec40a1b246f7965fbcd341fc6cfd1cc1Mark Andrews}
39cad8fb7d7ff3436bb24ce761354afcb80d295aMark Andrews
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews#
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews# do_ns <location>
01a5c5503482fb3ba52088bf0178a7213273bf96Mark Andrews#
95c3a5e116c1da135f669c3f15398172fac6279dMark Andrews# Installs different nameservices for location
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews#
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrewsdo_ns () {
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews loc=$1
e64202536ea72d8f371dd0df9fc763f8d70bf886Tinderbox User
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox User #
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews # Disable nameservices temporarily while we reconfigure. Copy
59528addd704f8d5757b54e540520f74e588a7c7Automatic Updater # /etc/nsswitch.files to /etc/nsswitch.conf first so that only "files"
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews # are used.
e40c4e4c17d4df338e2a7db0f84d8dbb3858964cTinderbox User #
757ff043760e4743dda1a10e7d58349275934902Tinderbox User $CP -p /etc/nsswitch.files /etc/nsswitch.conf
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews stop_svc $DNS_CLIENT_FMRI
827f8cccb5280f4da66c46186e792d1cb9d73503Mark Andrews stop_svc $NIS_CLIENT_FMRI
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews stop_svc $LDAP_CLIENT_FMRI
933799f3641f4f78445d015008bad0038900a82aTinderbox User
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews #
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont # Remove /etc/defaultdomain and unset domainname(1M). If NIS
7f79131f9a8e804b93c57f3c679065cce878b726Automatic Updater # and/or LDAP is configured, they will create /etc/defaultdomain
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews # and set the domainname(1M).
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson #
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews $RM -f $ETC_DEFAULT_DOMAIN
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews $DOMAINNAME " "
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews NAMESERVICES=`nwam_get_loc_prop $loc nameservices`
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews if [ -z "$NAMESERVICES" ]; then
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews echo "missing 'nameservices' property for location '$loc'"
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews enable_nonet
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User return
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews fi
3a988722ad9e209ba4064604d482dc4efe0e19ebTinderbox User
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington NAMESERVICES_CONFIG_FILE=`nwam_get_loc_prop \
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington $loc nameservices-config-file`
a3ffa9ab0644ae2b52f2e13a00b5e85b879f612fTinderbox User if [ -z "$NAMESERVICES_CONFIG_FILE" ]; then
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont echo "missing 'nameservices-config-file' property for '$loc'"
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews enable_nonet
1bf507ca635310b340aea42d6c3e567819974a99Tinderbox User return
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews fi
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews $CP -p $NAMESERVICES_CONFIG_FILE /etc/nsswitch.conf
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews (IFS=,;
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User for ns in $NAMESERVICES; do
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews case "$ns" in
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User 'files')
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User # no additional setup needed for files nameservice
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont ;;
a5636b773fa05a272b6876afd99309c0b3090e2fMark Andrews 'dns')
a5636b773fa05a272b6876afd99309c0b3090e2fMark Andrews do_dns $loc
a5636b773fa05a272b6876afd99309c0b3090e2fMark Andrews ;;
a5636b773fa05a272b6876afd99309c0b3090e2fMark Andrews 'nis')
a5636b773fa05a272b6876afd99309c0b3090e2fMark Andrews do_nis $loc
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont ;;
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont 'ldap')
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont do_ldap $loc
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont ;;
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews '*')
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington echo "Unrecognized nameservices value ${ns}; ignoring"
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington ;;
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington esac
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington done
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington )
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington #
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # Restart other related services
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington #
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # We explicitly restart here, as restart will only have an
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # effect if the service is already enabled. We don't want
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # to enable the service if it's currently disabled.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington #
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington restart_svc $AUTOFS_FMRI
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington}
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington#
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# do_sec <location>
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington#
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# If config properties are set, update the SMF property and refresh the
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# service. If config properties are not set, delete the SMF property and
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# stop the service.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington#
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtondo_sec () {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington loc=$1
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington ike_file=`nwam_get_loc_prop $loc ike-config-file`
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington pol_file=`nwam_get_loc_prop $loc ipsecpolicy-config-file`
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington ipf_file=`nwam_get_loc_prop $loc ipfilter-config-file`
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington ipf6_file=`nwam_get_loc_prop $loc ipfilter-v6-config-file`
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington ipnat_file=`nwam_get_loc_prop $loc ipnat-config-file`
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington ippool_file=`nwam_get_loc_prop $loc ippool-config-file`
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # IKE
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington if [ -n "$ike_file" ]; then
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington set_smf_prop $IPSEC_IKE_FMRI config/config_file $ike_file
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington refresh_svc $IPSEC_IKE_FMRI
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington start_svc $IPSEC_IKE_FMRI
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington else
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington stop_svc $IPSEC_IKE_FMRI
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington fi
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # IPsec
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington if [ -n "$pol_file" ]; then
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington set_smf_prop $IPSEC_POLICY_FMRI config/config_file $pol_file
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington refresh_svc $IPSEC_POLICY_FMRI
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington start_svc $IPSEC_POLICY_FMRI
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington else
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington stop_svc $IPSEC_POLICY_FMRI
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington fi
f520803b46dc189fdaf84adc87ef327d3587b435Mark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews # IPFilter
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews refresh_ipf=false
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews if [ -n "$ipf_file" ]; then
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews if [ "$ipf_file" = "/none" ]; then
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User set_smf_prop $IPFILTER_FMRI \
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews firewall_config_default/policy "none"
646fed0d28be4387e3e32fb0f5732a1f58b572baTinderbox User elif [ "$ipf_file" = "/deny" ]; then
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater set_smf_prop $IPFILTER_FMRI \
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater firewall_config_default/policy "deny"
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater elif [ "$ipf_file" = "/allow" ]; then
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater set_smf_prop $IPFILTER_FMRI \
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater firewall_config_default/policy "allow"
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater else
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User # custom policy with policy file
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater set_smf_prop $IPFILTER_FMRI \
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater firewall_config_default/policy "custom"
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater set_smf_prop $IPFILTER_FMRI \
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater firewall_config_default/custom_policy_file $ipf_file
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater fi
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater refresh_ipf=true
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater else
ae7e54b14c946e0984c191554db9abb4893f9349Automatic Updater # change policy to "none", no need to clear custom_policy_file
b30ec46fec40a1b246f7965fbcd341fc6cfd1cc1Mark Andrews set_smf_prop $IPFILTER_FMRI firewall_config_default/policy \
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User "none"
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User # IPFilter has to be refreshed to make the changes effective.
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User # Don't set $refresh_ipf as it keeps IPFilter online rather
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User # than disabled. Refresh after IPFilter is disabled below.
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User fi
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User if [ -n "$ipf6_file" ]; then
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User set_smf_prop $IPFILTER_FMRI config/ipf6_config_file $ipf6_file
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User refresh_ipf=true
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User fi
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User if [ -n "$ipnat_file" ]; then
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews set_smf_prop $IPFILTER_FMRI config/ipnat_config_file $ipnat_file
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User refresh_ipf=true
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont fi
a450977e98155f6e828fe6f8d52cf24674231831Mark Andrews if [ -n "$ippool_file" ]; then
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User set_smf_prop $IPFILTER_FMRI config/ippool_config_file \
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User $ippool_file
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User refresh_ipf=true
c11c7b47726c02eb05e29ff7be56a3343146e396Tinderbox User fi
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews if [ "$refresh_ipf" = "true" ]; then
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews refresh_svc $IPFILTER_FMRI
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews start_svc $IPFILTER_FMRI
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews else
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews stop_svc $IPFILTER_FMRI
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User refresh_svc $IPFILTER_FMRI
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews fi
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont}
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont
a3ffa9ab0644ae2b52f2e13a00b5e85b879f612fTinderbox User#
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont# update_nfs_file <new nfsv4 domain>
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont#
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupontupdate_nfs_file () {
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont domain=$1
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews file=/etc/default/nfs
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews #
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews # For non-commented-out lines that set NFSMAPID_DOMAIN:
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews # if not previously added by nwam, comment out with a note
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews # if previously added by nwam, remove
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User # For commented-out lines that set NFSMAPID_DOMAIN:
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews # if not commented out by NWAM, leave as-is
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User # if commented out by NWAM, remove
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont # All other lines: leave as-is
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont #
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont $NAWK ' \
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont $0 ~ /^NFSMAPID_DOMAIN=/ {
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont if (index($0, "# Added by NWAM") == 0)
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont printf("#%s # Commented out by NWAM\n", $0);
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont }
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont $0 ~ /^#NFSMAPID_DOMAIN=/ {
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews if ($0 !~ /"# Commented out by NWAM"/)
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington printf("%s\n", $0);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington }
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington $1 !~ /NFSMAPID_DOMAIN=/ {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington printf("%s\n", $0);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington }' $file >$file.$$
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # Now add the desired value
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington echo "NFSMAPID_DOMAIN=$domain # Added by NWAM" >> $file.$$
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # Finally, copy our working version to the real thing
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington $MV -f $file.$$ $file
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington}
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington#
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# do_nfsv4 <location>
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington#
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# Updates NFSv4 domain for location
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington#
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrewsdo_nfsv4 () {
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews loc=$1
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington nfsv4domain=`nwam_get_loc_prop $loc nfsv4-domain`
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews if [ $? -eq 0 ]; then
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews update_nfs_file $nfsv4domain
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews start_svc $MAPID_FMRI
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews else
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews stop_svc $MAPID_FMRI
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User fi
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews}
33d1cff1dd63494ffa00fac695a793f00c4ebf0bTinderbox User
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews#
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews# activate_loc <location>
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews#
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews# Activates the given location
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews#
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrewsactivate_loc () {
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User loc=$1
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater echo activating $loc location
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont
bac4435d473c9a0281507524f084480c34aa942aTinderbox User do_sec $loc
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews do_ns $loc
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington do_nfsv4 $loc
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews}
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington#
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# Script entry point
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington#
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# Arguments to net-loc are
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# method ('start' or 'refresh')
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington#
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# If nwam is not enabled, do nothing and return OK.
b7aab05edae933e169d5f83c653935b17c7f0a8bMark Andrews#
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonservice_is_enabled $NWAM_FMRI || exit $SMF_EXIT_OK
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington#
409ba95e573b40cf36acf97dd62ee7e9c7775851Tinderbox User# In a shared-IP zone we need this service to be up, but all of the work
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews# it tries to do is irrelevant (and will actually lead to the service
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# failing if we try to do it), so just bail out.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# In the global zone and exclusive-IP zones we proceed.
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews#
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonsmf_configure_ip || exit $SMF_EXIT_OK
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtoncase "$1" in
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews'start')
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews #
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews # We need to create the default (NoNet and Automatic)
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews # locations, if they don't already exist. So: first check
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User # for the existence of each, and then run the appropriate
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews # nwamcfg script(s) as needed. Restart nwamd if a location is
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # created, as it needs to read it in.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington #
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington LOC_CREATED="false"
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington $NWAMCFG list loc Automatic >/dev/null 2>&1
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington if [ $? -eq 1 ]; then
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington $NWAMCFG -f /etc/nwam/loc/create_loc_auto
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington LOC_CREATED="true"
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington fi
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater $NWAMCFG list loc NoNet >/dev/null 2>&1
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater if [ $? -eq 1 ]; then
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews NONETPATH=/etc/nwam/loc/NoNet
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont NONETFILES="ipf.conf ipf6.conf"
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater for file in $NONETFILES; do
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont copy_default $NONETPATH $file
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater done
ce9cad6bb04869c5e94d9dc721032b25117f9210Automatic Updater $NWAMCFG -f /etc/nwam/loc/create_loc_nonet
56effd2e3f579fd77b1fb37d47871d1bf1286bc4Automatic Updater LOC_CREATED="true"
015055b6e23f5c08f6a5b34726f90b62597e9e45Tinderbox User fi
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews
0e91f17da8a29086876a88962e0a3482094b6057Evan Hunt if [ "$LOC_CREATED" = "true" ]; then
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews refresh_svc $NWAM_FMRI
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews fi
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont # location selection/activation happens below
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont ;;
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews'refresh')
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont # location selection/activation happens below
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont ;;
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont*)
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont echo "Usage: $0 start|refresh"
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont exit 1
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont ;;
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonesac
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington#
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews# If the Legacy location doesn't exist and the file to create the Legacy
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington# location exists, create the Legacy location. Make a copy of it as the user's
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews# intentions before upgrade. Then activate the User location if nis is
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews# involved. Because NIS affects more parts of the system (e.g. automounts) we
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews# are not willing to make NIS part of the Automatic location (i.e. enable it
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews# automatically based on external input) as we do with DHCP-driven DNS.
7adcb4de92bf4383a4c5624c4ed256736d02bc6dMark Andrews#
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonactivate_user_loc=0
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington$NWAMCFG list loc Legacy >/dev/null 2>&1
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellingtonif [ $? -eq 1 -a -f "$SCRIPT_PATH/create_loc_legacy" ]; then
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington #
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # We built the script in and pointing to /etc/svc/volatile because we
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # may not have a writable filesystem in net-nwam. So here we move the
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington # components and rewrite the script to point at the writable filesystem.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington #
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington $CP -r $SCRIPT_PATH/Legacy $LEGACY_LOC_PATH
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington $MV $SCRIPT_PATH/create_loc_legacy $SCRIPT_PATH/vcreate_loc_legacy
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington $SED -e's,/etc/svc/volatile/nwam/Legacy,/etc/nwam/loc/Legacy,' \
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington $SCRIPT_PATH/vcreate_loc_legacy >$SCRIPT_PATH/create_loc_legacy
a450977e98155f6e828fe6f8d52cf24674231831Mark Andrews $NWAMCFG -f $SCRIPT_PATH/create_loc_legacy
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews loc_ver=`$SVCPROP -c -p location_upgrade/version $LOCATION_FMRI \
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews 2>/dev/null`
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews if [ $? -eq 1 ]; then
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews #
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User # We are rewriting configuration variables from the Legacy
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews # location to the User location. Use variable ULP to keep REs
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont # within a line.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington #
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User ULP=$USER_LOC_PATH
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont $SED -e's,Legacy,User,' \
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User -e's,activation-mode=system,activation-mode=manual,' \
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews -e"s,\(ipfilter-config-file=\).*/\(.*\),\1$ULP/\2," \
757ff043760e4743dda1a10e7d58349275934902Tinderbox User -e"s,\(ipfilter-v6-config-file=\).*/\(.*\),\1$ULP/\2," \
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews -e"s,\(ipnat-config-file=\).*/\(.*\),\1$ULP/\2," \
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews -e"s,\(ippool-config-file=\).*/\(.*\),\1$ULP/\2," \
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews -e"s,\(ike-config-file=\).*/\(.*\),\1$ULP/\2," \
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews -e"s,\(ipsecpolicy-config-file=\).*/\(.*\),\1$ULP/\2," \
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User $SCRIPT_PATH/create_loc_legacy | \
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews $SED -e's,/etc/nwam/loc/User/none,/none,' \
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews -e's,/etc/nwam/loc/User/allow,/allow,' \
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont -e's,/etc/nwam/loc/User/deny,/deny,' \
22d32791e5daa0bc80335a0f10ab2de95f41ccdbTinderbox User >$SCRIPT_PATH/create_loc_user
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont #
646fed0d28be4387e3e32fb0f5732a1f58b572baTinderbox User # We are creating the User location here. The User location
dedefc0bdbb4e6e39eeb98aa2fc6883efec2ddb0Mark Andrews # is an appromixation of the machine configuration when the
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews # user change or upgraded to this version of NWAM. First
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews # we make sure there isn't an existing User location or any
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews # existing User location data. We then copy all the data
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews # from the Legacy location and create a location pointing at
e813f036c8251b6d9d2a72fa84f80c2c9d2795afMark Andrews # that data. Lastly we create a version property to note
280a8a0544b4aeb52414d20e8c6e6c5b1108562eTinderbox User # that we have done this.
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews #
1fdd58445074579ee3b65c871137a7a1740eb542Mark Andrews $NWAMCFG destroy loc User 2>/dev/null
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User $RM -rf $USER_LOC_PATH
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User $CP -r $LEGACY_LOC_PATH $USER_LOC_PATH
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User $RM -f $USER_LOC_PATH/resolv.conf
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User $NWAMCFG -f $SCRIPT_PATH/create_loc_user
cc5a9ce75af9870f2cb9e2bf00548c2f7e6398d6Automatic Updater # The User location is activated if 'nis' is in a non comment
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont # line of nsswitch.conf.
ec8755f605d7dcb2de1076040e77bc2d7ec33b4aTinderbox User $GREP -v "^#" $USER_LOC_PATH/nsswitch.conf |\
bac4435d473c9a0281507524f084480c34aa942aTinderbox User $SED -e 's/[^:]*://' | $GREP nis >/dev/null 2>&1
ba8b771c371967dd1254c7fa82ebe4158ee04b24Tinderbox User if [ $? -eq 0 ]; then
f33f2b8afe60de897c53cdcb17911f10b552699fTinderbox User activate_user_loc=1
532d27b39244fadfcf8d8b4593f4c65434c9c664Automatic Updater fi
532d27b39244fadfcf8d8b4593f4c65434c9c664Automatic Updater $SVCCFG -s $SMF_FMRI addpg location_upgrade application \
532d27b39244fadfcf8d8b4593f4c65434c9c664Automatic Updater 2>/dev/null
532d27b39244fadfcf8d8b4593f4c65434c9c664Automatic Updater $SVCCFG -s $SMF_FMRI setprop location_upgrade/version = \
91faa748a27dee38f6caea461d3e87f15b93abeaTinderbox User astring: "1"
1a63fb1d1448ed3f8fd7227ae57be67c2e71279eMark Andrews fi
1a63fb1d1448ed3f8fd7227ae57be67c2e71279eMark Andrewsfi
9e898948ed76bf5f175bf178866c90c449843c3eTinderbox User
f33f2b8afe60de897c53cdcb17911f10b552699fTinderbox User#
ae454ec746d1d4db8d04e107d4d25ff13158c37fMark Andrews# Activate a location. If we've just finished upgrading, and
ae454ec746d1d4db8d04e107d4d25ff13158c37fMark Andrews# the User location should be activated, do that (and use nwamadm
10702d681eb650391bcaa0e2704aa3cf2dbf0e98Mark Andrews# to do so, so the enabled property gets set and nwamd knows this
10702d681eb650391bcaa0e2704aa3cf2dbf0e98Mark Andrews# selection has been made). Otherwise, if our location/selected
10702d681eb650391bcaa0e2704aa3cf2dbf0e98Mark Andrews# property has a value, we activate that location; else we activate
10702d681eb650391bcaa0e2704aa3cf2dbf0e98Mark Andrews# the NoNet location as a default value.
10702d681eb650391bcaa0e2704aa3cf2dbf0e98Mark Andrews#
10702d681eb650391bcaa0e2704aa3cf2dbf0e98Mark Andrewsif [ $activate_user_loc -eq 1 ]; then
10702d681eb650391bcaa0e2704aa3cf2dbf0e98Mark Andrews $NWAMADM enable -p loc User
10702d681eb650391bcaa0e2704aa3cf2dbf0e98Mark Andrewselse
10702d681eb650391bcaa0e2704aa3cf2dbf0e98Mark Andrews sel_loc=`$SVCPROP -c -p location/selected $SMF_FMRI 2>/dev/null`
7c8e44a2dc1121dbe3b615c9c934f37fb1741bb9Tinderbox User if [ $? -eq 1 ]; then
93089a352d6903b0d7845a039de4ec2df9a0e35aTinderbox User # location hasn't been selected; default to NoNet
93089a352d6903b0d7845a039de4ec2df9a0e35aTinderbox User activate_loc NoNet
861836e5f5df62bfaea9ad8923a05278d5ab2f3dTinderbox User else
e8c17c74535be290abaaa160a434ed80bf0ad2feMark Andrews # check if the selected location exists
93089a352d6903b0d7845a039de4ec2df9a0e35aTinderbox User $NWAMCFG list loc $sel_loc >/dev/null 2>&1
665ba746c0585088d0c314dcfc4671aa2c7b2dc1Automatic Updater if [ $? -eq 1 ]; then
9c446b72069d0ab9f710502f4d7048e50875fccbAutomatic Updater echo "location '$sel_loc' doesn't exist"
665ba746c0585088d0c314dcfc4671aa2c7b2dc1Automatic Updater enable_nonet
665ba746c0585088d0c314dcfc4671aa2c7b2dc1Automatic Updater else
9e898948ed76bf5f175bf178866c90c449843c3eTinderbox User # activate selected location
933799f3641f4f78445d015008bad0038900a82aTinderbox User activate_loc $sel_loc
ae454ec746d1d4db8d04e107d4d25ff13158c37fMark Andrews fi
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater fi
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updaterfi
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updaterexit $SMF_EXIT_OK
44e3b272904bfd85556771d30cf1bc6fa539dd03Automatic Updater