net-loc revision 6ba597c56d749c61b4f783157f63196d7b2445f0
f743002678eb67b99bbc29fee116b65d9530fec0wrowe#!/sbin/sh
80833bb9a1bf25dcf19e814438a4b311d2e1f4cffuankg#
a34684a59b60a4173c25035d0c627ef17e6dc215rpluem# CDDL HEADER START
1337c7673efc1f80f634139fbad7cbb98a0dc657ylavic#
1337c7673efc1f80f634139fbad7cbb98a0dc657ylavic# The contents of this file are subject to the terms of the
1337c7673efc1f80f634139fbad7cbb98a0dc657ylavic# Common Development and Distribution License (the "License").
1337c7673efc1f80f634139fbad7cbb98a0dc657ylavic# You may not use this file except in compliance with the License.
4da61833a1cbbca94094f9653fd970582b97a72etrawick#
4da61833a1cbbca94094f9653fd970582b97a72etrawick# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4da61833a1cbbca94094f9653fd970582b97a72etrawick# or http://www.opensolaris.org/os/licensing.
4da61833a1cbbca94094f9653fd970582b97a72etrawick# See the License for the specific language governing permissions
4da61833a1cbbca94094f9653fd970582b97a72etrawick# and limitations under the License.
4789804be088bcd86ae637a29cdb7fda25169521jailletc#
4789804be088bcd86ae637a29cdb7fda25169521jailletc# When distributing Covered Code, include this CDDL HEADER in each
4789804be088bcd86ae637a29cdb7fda25169521jailletc# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4789804be088bcd86ae637a29cdb7fda25169521jailletc# If applicable, add the following below this CDDL HEADER, with the
e50c3026198fd496f183cda4c32a202925476778covener# fields enclosed by brackets "[]" replaced with your own identifying
e50c3026198fd496f183cda4c32a202925476778covener# information: Portions Copyright [yyyy] [name of copyright owner]
e50c3026198fd496f183cda4c32a202925476778covener#
5b88c8507d5ef6d0c4cfbc78230294968175b638minfrin# CDDL HEADER END
5b88c8507d5ef6d0c4cfbc78230294968175b638minfrin#
6c3b9cebb551140fbb25d58bae08b539b3802133ylavic#
6c3b9cebb551140fbb25d58bae08b539b3802133ylavic# Copyright 2010 Sun Microsystems, Inc. All rights reserved.
6c3b9cebb551140fbb25d58bae08b539b3802133ylavic# Use is subject to license terms.
4f29b65ab4b547ad5dbe506e2d0ff5d12ead9247ylavic#
4f29b65ab4b547ad5dbe506e2d0ff5d12ead9247ylavic
0a0df13b7f1f4f1a74fe295253d89ca3911b301aylavic. /lib/svc/share/smf_include.sh
0a0df13b7f1f4f1a74fe295253d89ca3911b301aylavic. /lib/svc/share/net_include.sh
0a0df13b7f1f4f1a74fe295253d89ca3911b301aylavic
0a0df13b7f1f4f1a74fe295253d89ca3911b301aylavic# FMRI consts
69301145375a889e7e37caf7cc7321ac0f91801erpluemAUTOFS_FMRI="svc:/system/filesystem/autofs"
69301145375a889e7e37caf7cc7321ac0f91801erpluemDNS_CLIENT_FMRI="svc:/network/dns/client"
69301145375a889e7e37caf7cc7321ac0f91801erpluemIPSEC_IKE_FMRI="svc:/network/ipsec/ike"
506bfe33206b2fece40ef25f695af39dd4130facjkaluzaIPSEC_POLICY_FMRI="svc:/network/ipsec/policy"
506bfe33206b2fece40ef25f695af39dd4130facjkaluzaIPFILTER_FMRI="svc:/network/ipfilter:default"
506bfe33206b2fece40ef25f695af39dd4130facjkaluzaLDAP_CLIENT_FMRI="svc:/network/ldap/client"
506bfe33206b2fece40ef25f695af39dd4130facjkaluzaLOCATION_FMRI="svc:/network/location:default"
d58a848a016d401b965111e50ef829e1641f7834minfrinMAPID_FMRI="svc:/network/nfs/mapid:default"
d58a848a016d401b965111e50ef829e1641f7834minfrinNIS_CLIENT_FMRI="svc:/network/nis/client"
d58a848a016d401b965111e50ef829e1641f7834minfrinNWAM_FMRI="svc:/network/physical:nwam"
2e6f4d654c96c98b761fb012fd25c5d5b1558c44sf
2e6f4d654c96c98b761fb012fd25c5d5b1558c44sf# commands
2e6f4d654c96c98b761fb012fd25c5d5b1558c44sfCP=/usr/bin/cp
17e6c95f3b22d18acdf8380fb26a8d0e10c80767ylavicDHCPINFO=/sbin/dhcpinfo
17e6c95f3b22d18acdf8380fb26a8d0e10c80767ylavicDOMAINNAME=/usr/bin/domainname
17e6c95f3b22d18acdf8380fb26a8d0e10c80767ylavicGREP=/usr/bin/grep
17e6c95f3b22d18acdf8380fb26a8d0e10c80767ylavicLDAPCLIENT=/usr/sbin/ldapclient
17e6c95f3b22d18acdf8380fb26a8d0e10c80767ylavicMKDIR=/usr/bin/mkdir
e8bd80a4bb88199d2f9a24a50345688e52d9c116ylavicMV=/usr/bin/mv
e8bd80a4bb88199d2f9a24a50345688e52d9c116ylavicNAWK=/usr/bin/nawk
e8bd80a4bb88199d2f9a24a50345688e52d9c116ylavicNWAMADM=/usr/sbin/nwamadm
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavicNWAMCFG=/usr/sbin/nwamcfg
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavicRM=/usr/bin/rm
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavicSED=/usr/bin/sed
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavicSVCADM=/usr/sbin/svcadm
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavicSVCCFG=/usr/sbin/svccfg
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavicSVCPROP=/usr/bin/svcprop
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavicTOUCH=/usr/bin/touch
d7205b1a86c51c27b71a2c458dc453fd53a261c1covener
d7205b1a86c51c27b71a2c458dc453fd53a261c1covener# Path to directories
d7205b1a86c51c27b71a2c458dc453fd53a261c1covenerETC_DEFAULT_DOMAIN=/etc/defaultdomain
d7205b1a86c51c27b71a2c458dc453fd53a261c1covenerNIS_BIND_PATH=/var/yp/binding
d7205b1a86c51c27b71a2c458dc453fd53a261c1covenerLEGACY_LOC_PATH=/etc/nwam/loc/Legacy
44ff304057225e944e220e981d434a046d14cf06covenerUSER_LOC_PATH=/etc/nwam/loc/User
44ff304057225e944e220e981d434a046d14cf06covenerSCRIPT_PATH=/etc/svc/volatile/nwam
44ff304057225e944e220e981d434a046d14cf06covener
44ff304057225e944e220e981d434a046d14cf06covener#
5d1ba75b8794925e67591c209085a49279791de9covener# echoes DHCP controlled interfaces separated by commas
5d1ba75b8794925e67591c209085a49279791de9covener#
5d1ba75b8794925e67591c209085a49279791de9covener# Don't parse the output of ifconfig(1M) because interfaces that haven't
032982212dbcc7c3cce95bf89c503bb56e185ac7kbrand# acquired a DHCP lease also have the DHCP flag set.
032982212dbcc7c3cce95bf89c503bb56e185ac7kbrand#
032982212dbcc7c3cce95bf89c503bb56e185ac7kbrandget_dhcp_interfaces () {
032982212dbcc7c3cce95bf89c503bb56e185ac7kbrand #
caad2986f81ab263f7af41467dd622dc9add17f3ylavic # 1. parse netstat(1M) output for v4 interfaces in BOUND
caad2986f81ab263f7af41467dd622dc9add17f3ylavic # or INFORMATION state
caad2986f81ab263f7af41467dd622dc9add17f3ylavic # 2. make a space-separated list of interface names
caad2986f81ab263f7af41467dd622dc9add17f3ylavic #
45a10d38e6051fd7bdf9d742aaae633d97ff02abjailletc netstat -D -f inet | $NAWK '
f7317ff316c2b141feea31bddb74d5d3fa1584edjorton $2 ~ /BOUND/ { printf "%s ", $1 }
f7317ff316c2b141feea31bddb74d5d3fa1584edjorton $2 ~ /INFORMATION/ { printf "%s ", $1 }'
2165214331e4afafca4048f66f303d0253d7b001covener}
a34684a59b60a4173c25035d0c627ef17e6dc215rpluem
a34684a59b60a4173c25035d0c627ef17e6dc215rpluem#
1e2d421a36999d292042a5539971070d54aa6c63ylavic# get_dhcpinfo <code/identifier>
1e2d421a36999d292042a5539971070d54aa6c63ylavic#
1e2d421a36999d292042a5539971070d54aa6c63ylavic# echoes the value received through each interface controlled by DHCP
fa7ed98b9dc94c5845cf845aea0a44ecacd290c9humbedooh# returns:
fa7ed98b9dc94c5845cf845aea0a44ecacd290c9humbedooh# 0 => property is set
fa7ed98b9dc94c5845cf845aea0a44ecacd290c9humbedooh# 1 => property is not set
0b67eb8568cd58bb77082703951679b42cf098actrawick#
0b67eb8568cd58bb77082703951679b42cf098actrawickget_dhcpinfo () {
0b67eb8568cd58bb77082703951679b42cf098actrawick code=$1
0b67eb8568cd58bb77082703951679b42cf098actrawick
5ef3c61605a3a021ff71f488983cb0065f8e1a79covener # Get all interfaces with DHCP control, IFS is " "
fb1985a97912b25ec6564c73e610a31e5fc6e25fcovener interfaces=`get_dhcp_interfaces`
09c87c777bed1655621bb20e1c46cb6b1a63279dcovener
6502b7b32f980cc2093bb3ebce37e5e4dc68fba4ylavic info=""
6502b7b32f980cc2093bb3ebce37e5e4dc68fba4ylavic for intf in $interfaces; do
3060ce7f798fbda7999cd4ddf89b525d2b294185covener val=`$DHCPINFO -i $intf $code`
c1a63b8fad09c419c1a64f75993feb8a343a6801ylavic if [ $? -eq 0 ]; then
c1a63b8fad09c419c1a64f75993feb8a343a6801ylavic if [ "$info" = "" ]; then
c1a63b8fad09c419c1a64f75993feb8a343a6801ylavic info="$val"
e6b4bd1113567627ab6bb6c6a7105e1e01a7d889jailletc else
e6b4bd1113567627ab6bb6c6a7105e1e01a7d889jailletc info="$info,$val"
e466c40e1801982602ee0200c9e8b61cc148742djailletc fi
e466c40e1801982602ee0200c9e8b61cc148742djailletc fi
457468b82e59d01eba00dd9d0817309c8f5e414ejim done
457468b82e59d01eba00dd9d0817309c8f5e414ejim echo $info
457468b82e59d01eba00dd9d0817309c8f5e414ejim}
04983e3bd1754764eec7d6bb772fe3b0bf391771jorton
04983e3bd1754764eec7d6bb772fe3b0bf391771jorton#
15890c9306ba98f6fc243e15a3c4778ddc7d773erpluem# set_smf_prop <fmri> <property name> <property value>
15660979a30d251681463de2e0584853890082accovener#
15660979a30d251681463de2e0584853890082accovenerset_smf_prop () {
49dacedb6c387b786b7911082ff35121a45f414bcovener $SVCCFG -s $1 setprop $2 = astring: "$3" && return
49dacedb6c387b786b7911082ff35121a45f414bcovener}
cfd9415521847b2f9394fad04fb701cfb955f503rjung
cfd9415521847b2f9394fad04fb701cfb955f503rjung#
cfd9415521847b2f9394fad04fb701cfb955f503rjung# refresh_svc <fmri>
28c31fb73c1264bd1d0ff932573677030b024c7dwrowe#
28c31fb73c1264bd1d0ff932573677030b024c7dwrowe# Refreshes the service.
28c31fb73c1264bd1d0ff932573677030b024c7dwrowe#
28c31fb73c1264bd1d0ff932573677030b024c7dwrowerefresh_svc () {
28c31fb73c1264bd1d0ff932573677030b024c7dwrowe $SVCADM refresh $1
8491e0600f69b0405e156ea8a419653c065c645bcovener}
63b9f1f5880391261705f696d7d65507bbe9ace3covener
63b9f1f5880391261705f696d7d65507bbe9ace3covener#
63b9f1f5880391261705f696d7d65507bbe9ace3covener# restart_svc <fmri>
49dacedb6c387b786b7911082ff35121a45f414bcovener#
49dacedb6c387b786b7911082ff35121a45f414bcovener# Restarts the service.
49dacedb6c387b786b7911082ff35121a45f414bcovener#
49dacedb6c387b786b7911082ff35121a45f414bcovenerrestart_svc () {
3c990331fc6702119e4f5b8ba9eae3021aea5265jim $SVCADM restart $1
3c990331fc6702119e4f5b8ba9eae3021aea5265jim}
3c990331fc6702119e4f5b8ba9eae3021aea5265jim
3c990331fc6702119e4f5b8ba9eae3021aea5265jim#
fc42512879dd0504532f52fe5d0d0383dda96a1eniq# start_svc <fmri>
fc42512879dd0504532f52fe5d0d0383dda96a1eniq#
fc42512879dd0504532f52fe5d0d0383dda96a1eniq# Starts the service. If the service is already enabled, restarts it. If
0451df5dc50fa5d8b3e07d92ee6a92e36a1181a5niq# it is not enabled, temporarily enables it.
0451df5dc50fa5d8b3e07d92ee6a92e36a1181a5niq#
0451df5dc50fa5d8b3e07d92ee6a92e36a1181a5niqstart_svc () {
da0442c0440caef34706e2c2f3af05cb65921cc0jailletc if service_is_enabled $1; then
983528026996668ea295be95aedb9c7a346af470ylavic $SVCADM restart $1
da0442c0440caef34706e2c2f3af05cb65921cc0jailletc else
da0442c0440caef34706e2c2f3af05cb65921cc0jailletc $SVCADM enable -t $1
06b8f183140c8e02e0974e938a05078b511d1603covener fi
06b8f183140c8e02e0974e938a05078b511d1603covener}
06b8f183140c8e02e0974e938a05078b511d1603covener
15890c9306ba98f6fc243e15a3c4778ddc7d773erpluem#
259878293a997ff49f5ddfc53d3739cbdc25444ecovener# stop_svc <fmri>
259878293a997ff49f5ddfc53d3739cbdc25444ecovener#
259878293a997ff49f5ddfc53d3739cbdc25444ecovener# Temporarily disables the service.
259878293a997ff49f5ddfc53d3739cbdc25444ecovener#
15890c9306ba98f6fc243e15a3c4778ddc7d773erpluemstop_svc () {
b54b024c06a19926832d77d40ba35ad8c41e4d3dminfrin $SVCADM disable -t $1
b54b024c06a19926832d77d40ba35ad8c41e4d3dminfrin}
b54b024c06a19926832d77d40ba35ad8c41e4d3dminfrin
65967d05f839dbf27cf91d91fa79585eeae19660minfrin#
65967d05f839dbf27cf91d91fa79585eeae19660minfrin# copy_default <dir> <file>
65967d05f839dbf27cf91d91fa79585eeae19660minfrin#
65967d05f839dbf27cf91d91fa79585eeae19660minfrin# Copies <dir>/<file>.dfl to <dir>/<file>
8152945ae46857b170cb227e79bb799f4fc7710dminfrin#
8152945ae46857b170cb227e79bb799f4fc7710dminfrincopy_default () {
8152945ae46857b170cb227e79bb799f4fc7710dminfrin $CP -p $1/$2.dfl $1/$2
8152945ae46857b170cb227e79bb799f4fc7710dminfrin}
75f5c2db254c0167a0e396254460de09b775d203trawick
75f5c2db254c0167a0e396254460de09b775d203trawick#
75f5c2db254c0167a0e396254460de09b775d203trawick# do_dns <location>
4f0358189bfa57b8e75bd6b94db264302a8f336amrumph#
4f0358189bfa57b8e75bd6b94db264302a8f336amrumph# Installs DNS information on /etc/resolv.conf for location
4f0358189bfa57b8e75bd6b94db264302a8f336amrumph#
5716f9c6daa92dde5f2f9d11ed63f7c9549c223atrawickdo_dns () {
5716f9c6daa92dde5f2f9d11ed63f7c9549c223atrawick loc=$1
5716f9c6daa92dde5f2f9d11ed63f7c9549c223atrawick file=/etc/resolv.conf
5716f9c6daa92dde5f2f9d11ed63f7c9549c223atrawick
54d750a84a175d8e338880514d440773eb986b50covener # Write out to temporary file first
54d750a84a175d8e338880514d440773eb986b50covener $TOUCH $file.$$
54d750a84a175d8e338880514d440773eb986b50covener
54d750a84a175d8e338880514d440773eb986b50covener DNS_CONFIGSRC=`nwam_get_loc_prop $loc dns-nameservice-configsrc`
54d750a84a175d8e338880514d440773eb986b50covener (IFS=" ";
54d750a84a175d8e338880514d440773eb986b50covener for configsrc in $DNS_CONFIGSRC; do
54d750a84a175d8e338880514d440773eb986b50covener case "$configsrc" in
54d750a84a175d8e338880514d440773eb986b50covener 'manual')
7a3aa12f0eda24793ee26d6a179bd53132e9dae8covener DNS_DOMAIN=`nwam_get_loc_prop $loc \
54d750a84a175d8e338880514d440773eb986b50covener dns-nameservice-domain`
54d750a84a175d8e338880514d440773eb986b50covener DNS_SERVERS=`nwam_get_loc_prop $loc \
83b50288fa7d306324bba68832011ea08f5c7832covener dns-nameservice-servers`
4e30ef014533a7e93c92d88306291f5e49c9692ftrawick DNS_SEARCH=`nwam_get_loc_prop $loc \
83b50288fa7d306324bba68832011ea08f5c7832covener dns-nameservice-search`
5f066f496cd9f20a2a701255bc67d44e7cb46daetrawick ;;
5f066f496cd9f20a2a701255bc67d44e7cb46daetrawick 'dhcp')
5f066f496cd9f20a2a701255bc67d44e7cb46daetrawick DNS_DOMAIN=`get_dhcpinfo DNSdmain`
2e15620d724fb8e3a5be183b917359a2fd6e9468covener DNS_SERVERS=`get_dhcpinfo DNSserv`
2e15620d724fb8e3a5be183b917359a2fd6e9468covener # No DNS search info for IPv4
2e15620d724fb8e3a5be183b917359a2fd6e9468covener ;;
2e15620d724fb8e3a5be183b917359a2fd6e9468covener '*')
1b988c41ee505962781d110a3e4c2c90f1ea0aa4covener echo "Unrecognized DNS configsrc ${configsrc}; ignoring"
1b988c41ee505962781d110a3e4c2c90f1ea0aa4covener ;;
1b988c41ee505962781d110a3e4c2c90f1ea0aa4covener esac
1b988c41ee505962781d110a3e4c2c90f1ea0aa4covener
b8efdc95bec9cf089aa1be0bfd07d46aa1137a7acovener # Write DNS settings
b8efdc95bec9cf089aa1be0bfd07d46aa1137a7acovener if [ -n "$DNS_DOMAIN" ]; then
b8efdc95bec9cf089aa1be0bfd07d46aa1137a7acovener echo "$DNS_DOMAIN" | $NAWK \
f06e7c4b1bce6b6491e5de0b7998d3f5696b293dchrisd 'FS="," { for (i = 1; i <= NF; i++) \
f06e7c4b1bce6b6491e5de0b7998d3f5696b293dchrisd print "domain ", $i }' >> $file.$$
f06e7c4b1bce6b6491e5de0b7998d3f5696b293dchrisd fi
179565be4043d7e5f9161aa75271fa0a001866d9covener if [ -n "$DNS_SEARCH" ]; then
179565be4043d7e5f9161aa75271fa0a001866d9covener echo "$DNS_SEARCH" | $NAWK \
179565be4043d7e5f9161aa75271fa0a001866d9covener 'FS="," { printf("search"); \
111436a32ba1254291e4883292fb116d15fe8f64covener for (i = 1; i <= NF; i++) printf(" %s", $i); \
fce4949fb0b309a5744afcd503c6ed2d35621ee2covener printf("\n") }' >> $file.$$
fce4949fb0b309a5744afcd503c6ed2d35621ee2covener fi
fce4949fb0b309a5744afcd503c6ed2d35621ee2covener if [ -n "$DNS_SERVERS" ]; then
fce4949fb0b309a5744afcd503c6ed2d35621ee2covener echo "$DNS_SERVERS" | $NAWK \
7b7430e701e9a31ce809da7c220bb8dfcf68c86etrawick 'FS="," { for (i = 1; i <= NF; i++) \
7b7430e701e9a31ce809da7c220bb8dfcf68c86etrawick print "nameserver ", $i }' >> $file.$$
7b7430e701e9a31ce809da7c220bb8dfcf68c86etrawick fi
ccc20788c1e5fc973f36df634399c89acb70deaejerenkrantz done
ccc20788c1e5fc973f36df634399c89acb70deaejerenkrantz )
ccc20788c1e5fc973f36df634399c89acb70deaejerenkrantz # Finally, copy our working version to the real thing
273e512f20f262e5e2aa8e0e83371d1929fb76adjkaluza $MV -f $file.$$ $file
273e512f20f262e5e2aa8e0e83371d1929fb76adjkaluza start_svc $DNS_CLIENT_FMRI
273e512f20f262e5e2aa8e0e83371d1929fb76adjkaluza}
efe780dcf13b2b95effabf897d694d8f23feac74trawick
fe83f60b41477b14a37edcfcd1f7f5c5a1ebfe44minfrin#
fe83f60b41477b14a37edcfcd1f7f5c5a1ebfe44minfrin# do_nis <location>
fe83f60b41477b14a37edcfcd1f7f5c5a1ebfe44minfrin#
993d1261a278d7322bccef219101220b7b4fb8c5jkaluza# Installs NIS information on /var/yp/binding/ for location
993d1261a278d7322bccef219101220b7b4fb8c5jkaluza#
993d1261a278d7322bccef219101220b7b4fb8c5jkaluzado_nis () {
ba050a6f942b9fa0e81ed73437588005c569655ccovener loc=$1
ba050a6f942b9fa0e81ed73437588005c569655ccovener
ba050a6f942b9fa0e81ed73437588005c569655ccovener NIS_CONFIGSRC=`nwam_get_loc_prop $loc nis-nameservice-configsrc`
ba050a6f942b9fa0e81ed73437588005c569655ccovener (IFS=" ";
135ddda3a989215d2bedbcf1529bfb269c3eda23niq domainname_set=false
135ddda3a989215d2bedbcf1529bfb269c3eda23niq for configsrc in $NIS_CONFIGSRC; do
135ddda3a989215d2bedbcf1529bfb269c3eda23niq case "$configsrc" in
001a44c352f89c9ec332ffd3e0a6927dcd19432chumbedooh 'manual')
001a44c352f89c9ec332ffd3e0a6927dcd19432chumbedooh NIS_SERVERS=`nwam_get_loc_prop $loc \
001a44c352f89c9ec332ffd3e0a6927dcd19432chumbedooh nis-nameservice-servers`
efe780dcf13b2b95effabf897d694d8f23feac74trawick DEFAULT_DOMAIN=`nwam_get_loc_prop $loc default-domain`
793214f67dede32edfd9ee96c664ead04d175cbbjfclere # user-specified default-domain always wins
cc5a4a08dc9783fcbc52ce86f11e01c281a43810minfrin $DOMAINNAME $DEFAULT_DOMAIN
9b0076ddd1103e5fa9c1f9bafde4b06ce244fbaecovener $DOMAINNAME > $ETC_DEFAULT_DOMAIN
9b0076ddd1103e5fa9c1f9bafde4b06ce244fbaecovener domainname_set=true
9b0076ddd1103e5fa9c1f9bafde4b06ce244fbaecovener ;;
249d09d51808cb7981af99762c3b3736ca126cd5jkaluza 'dhcp')
249d09d51808cb7981af99762c3b3736ca126cd5jkaluza # Use only the first name
249d09d51808cb7981af99762c3b3736ca126cd5jkaluza DEFAULT_DOMAIN=`get_dhcpinfo NISdmain | \
249d09d51808cb7981af99762c3b3736ca126cd5jkaluza $NAWK 'FS="," { print $1 }'`
56589be3d7a3e9343370df240010c6928cc78b39jkaluza NIS_SERVERS=`get_dhcpinfo NISservs`
56589be3d7a3e9343370df240010c6928cc78b39jkaluza if [ "$domainname_set" = "false" ]; then
56589be3d7a3e9343370df240010c6928cc78b39jkaluza $DOMAINNAME $DEFAULT_DOMAIN
77ca16c5676da23155311e13cee61e7eaba9fa3ejailletc $DOMAINNAME > $ETC_DEFAULT_DOMAIN
77ca16c5676da23155311e13cee61e7eaba9fa3ejailletc domainname_set=true
77ca16c5676da23155311e13cee61e7eaba9fa3ejailletc fi
77ca16c5676da23155311e13cee61e7eaba9fa3ejailletc ;;
f87299dab99bc04b51a6b8cad51b6795db862c0atrawick '*')
f87299dab99bc04b51a6b8cad51b6795db862c0atrawick echo "Unrecognized NIS configsrc ${configsrc}; ignoring"
f87299dab99bc04b51a6b8cad51b6795db862c0atrawick ;;
4d12805e6c18253040223ea637acd6b3b3c18f60jorton esac
4d12805e6c18253040223ea637acd6b3b3c18f60jorton
4d12805e6c18253040223ea637acd6b3b3c18f60jorton # Place NIS settings in appropriate directory/file.
85eacfc96a04547ef25aabbc06440039715084c2jorton if [ ! -d "$NIS_BIND_PATH/$DEFAULT_DOMAIN" ]; then
85eacfc96a04547ef25aabbc06440039715084c2jorton $MKDIR -p $NIS_BIND_PATH/$DEFAULT_DOMAIN
e5d909f2b06bd880fb3675cd49363df981caa631trawick fi
a4df2cd1e1391575a327c2a90ba4315f805a0a78covener if [ -n "$NIS_SERVERS" ]; then
a4df2cd1e1391575a327c2a90ba4315f805a0a78covener echo "$NIS_SERVERS" | $NAWK \
a4df2cd1e1391575a327c2a90ba4315f805a0a78covener 'FS="," { for (i = 1; i <= NF; i++) print $i }' \
cb666b29f81df1d11d65002250153353568021fccovener > $NIS_BIND_PATH/$DEFAULT_DOMAIN/ypservers
cb666b29f81df1d11d65002250153353568021fccovener fi
cb666b29f81df1d11d65002250153353568021fccovener done
6a80c3c6f4b8ea7ba5e89402b8b779b09ce020e0covener )
1c2cab00d988fc48cbe59032cf76cc0bab20d6f7covener start_svc $NIS_CLIENT_FMRI
6a80c3c6f4b8ea7ba5e89402b8b779b09ce020e0covener}
75a230a728338d84dcfe81edd375352f34de22d0covener
75a230a728338d84dcfe81edd375352f34de22d0covener#
75a230a728338d84dcfe81edd375352f34de22d0covener# do_ldap <location>
1f50dc34ae069adeed20b2986e5ffdefa5c410e0covener#
1f50dc34ae069adeed20b2986e5ffdefa5c410e0covener# Installs LDAP information using ldapclient(1M) for location
1f50dc34ae069adeed20b2986e5ffdefa5c410e0covener#
63a5ea80bddcc84a462e40f402b4f330e0e05411covenerdo_ldap () {
63a5ea80bddcc84a462e40f402b4f330e0e05411covener loc=$1
63a5ea80bddcc84a462e40f402b4f330e0e05411covener
63a5ea80bddcc84a462e40f402b4f330e0e05411covener LDAP_CONFIGSRC=`nwam_get_loc_prop $loc ldap-nameservice-configsrc`
65a4e663b82f8bce28ac22ab2edfd7502de36998sf (IFS=" ";
65a4e663b82f8bce28ac22ab2edfd7502de36998sf for configsrc in $LDAP_CONFIGSRC; do
65a4e663b82f8bce28ac22ab2edfd7502de36998sf case "$configsrc" in
65a4e663b82f8bce28ac22ab2edfd7502de36998sf 'manual')
c7de1955eb0eaeabf7042902476397692672d549sf LDAP_SERVERS=`nwam_get_loc_prop $loc \
74e7f6c55fd67b10cb400b3f6d1dc718a303d944minfrin ldap-nameservice-servers`
74e7f6c55fd67b10cb400b3f6d1dc718a303d944minfrin DEFAULT_DOMAIN=`nwam_get_loc_prop $loc default-domain`
74e7f6c55fd67b10cb400b3f6d1dc718a303d944minfrin $DOMAINNAME $DEFAULT_DOMAIN
74e7f6c55fd67b10cb400b3f6d1dc718a303d944minfrin $DOMAINNAME > $ETC_DEFAULT_DOMAIN
a511a29faf2ff7ead3b67680154a624effb31aafminfrin ;;
a511a29faf2ff7ead3b67680154a624effb31aafminfrin '*')
a511a29faf2ff7ead3b67680154a624effb31aafminfrin echo "Unrecognized LDAP configsrc ${configsrc}; ignoring"
a511a29faf2ff7ead3b67680154a624effb31aafminfrin ;;
a511a29faf2ff7ead3b67680154a624effb31aafminfrin esac
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrin
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrin # Use ldapclient(1M) to initialize LDAP client settings.
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrin if [ -n "$DEFAULT_DOMAIN" -o -n "$LDAP_SERVERS" ]; then
deec48c67d4786bc77112ffbf3a4e70b931097edminfrin # XXX need to check how to specify multiple LDAP servers.
6d601599d3d65df0410eae6e573e75b2dbfb1fb4minfrin $LDAPCLIENT init -a domainName=$DEFAULT_DOMAIN \
6d601599d3d65df0410eae6e573e75b2dbfb1fb4minfrin $LDAP_SERVERS
6d601599d3d65df0410eae6e573e75b2dbfb1fb4minfrin fi
6d601599d3d65df0410eae6e573e75b2dbfb1fb4minfrin done
684e0cfc200f66287a93bbd1708d1dd8a92a7eefcovener )
684e0cfc200f66287a93bbd1708d1dd8a92a7eefcovener start_svc $LDAP_CLIENT_FMRI
5c43d2fb853f84497b5ece2d414ef9484aa87e5fsf}
05a5a9c3e16f21566e1b61f4bd68025ce1b741ccjoes
05a5a9c3e16f21566e1b61f4bd68025ce1b741ccjoes#
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq# do_ns <location>
26c5829347f6a355c00f1ba0301d575056b69536niq#
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq# Installs different nameservices for location
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq#
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niqdo_ns () {
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq loc=$1
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq #
413ee814748f37be168ff12407fa6dba0ceeabe6trawick # Disable nameservices temporarily while we reconfigure. Copy
c12917da693bae4028a1d5a5e8224bceed8c739dsf # /etc/nsswitch.files to /etc/nsswitch.conf first so that only "files"
c12917da693bae4028a1d5a5e8224bceed8c739dsf # are used.
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsf #
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsf $CP -p /etc/nsswitch.files /etc/nsswitch.conf
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsf stop_svc $DNS_CLIENT_FMRI
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsf stop_svc $NIS_CLIENT_FMRI
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsf stop_svc $LDAP_CLIENT_FMRI
d7ffd2da16d58b1a0de212e4d56f7aebb72bef26sf
d7ffd2da16d58b1a0de212e4d56f7aebb72bef26sf #
d7ffd2da16d58b1a0de212e4d56f7aebb72bef26sf # Remove /etc/defaultdomain and unset domainname(1M). If NIS
4576c1a9ef54cd1e5555ee07d016a7f559f80338sf # and/or LDAP is configured, they will create /etc/defaultdomain
4576c1a9ef54cd1e5555ee07d016a7f559f80338sf # and set the domainname(1M).
4576c1a9ef54cd1e5555ee07d016a7f559f80338sf #
9811aed12bbc71783d2e544ccb5fecd193843eadsf $RM -f $ETC_DEFAULT_DOMAIN
9811aed12bbc71783d2e544ccb5fecd193843eadsf $DOMAINNAME " "
9811aed12bbc71783d2e544ccb5fecd193843eadsf
88fac54d9d64f85bbdab5d7010816f4377f95bd7rjung NAMESERVICES_CONFIG_FILE=`nwam_get_loc_prop \
88fac54d9d64f85bbdab5d7010816f4377f95bd7rjung $loc nameservices-config-file`
bd3f5647b96d378d9c75c954e3f13582af32c643sf NAMESERVICES=`nwam_get_loc_prop $loc nameservices`
bd3f5647b96d378d9c75c954e3f13582af32c643sf
bd3f5647b96d378d9c75c954e3f13582af32c643sf if [ -f "$NAMESERVICES_CONFIG_FILE" ]; then
bd3f5647b96d378d9c75c954e3f13582af32c643sf $CP -p $NAMESERVICES_CONFIG_FILE /etc/nsswitch.conf
bd3f5647b96d378d9c75c954e3f13582af32c643sf else
2a7beea91d46beb41f043a84eaad060047ee04aafabien echo "Failed to activate location ${loc}:\
2a7beea91d46beb41f043a84eaad060047ee04aafabien missing nameservices-config-file property"
2a7beea91d46beb41f043a84eaad060047ee04aafabien exit $SMF_EXIT_ERR_CONFIG
2a7beea91d46beb41f043a84eaad060047ee04aafabien fi
584a85dd4047e38d3ed3a29b6662fcc9d100ae4csf
584a85dd4047e38d3ed3a29b6662fcc9d100ae4csf (IFS=,;
584a85dd4047e38d3ed3a29b6662fcc9d100ae4csf for ns in $NAMESERVICES; do
f21e9e3d0bfb7a507ecc5bc963f2159d693503d1sf case "$ns" in
f21e9e3d0bfb7a507ecc5bc963f2159d693503d1sf 'files')
f21e9e3d0bfb7a507ecc5bc963f2159d693503d1sf # no additional setup needed for files nameservice
f6b9c755a0b793e8a3a3aebd327ca20a86478117sf ;;
f6b9c755a0b793e8a3a3aebd327ca20a86478117sf 'dns')
f6b9c755a0b793e8a3a3aebd327ca20a86478117sf do_dns $loc
132ee6ac1c26d6e8953836316ba50734eefab47bsf ;;
132ee6ac1c26d6e8953836316ba50734eefab47bsf 'nis')
132ee6ac1c26d6e8953836316ba50734eefab47bsf do_nis $loc
85eacfc96a04547ef25aabbc06440039715084c2jorton ;;
85eacfc96a04547ef25aabbc06440039715084c2jorton 'ldap')
85eacfc96a04547ef25aabbc06440039715084c2jorton do_ldap $loc
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawick ;;
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawick '*')
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawick echo "Unrecognized nameservices value ${ns}; ignoring"
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawick ;;
79c5787b92ac5f0e1cc82393816c77a006399316trawick esac
79c5787b92ac5f0e1cc82393816c77a006399316trawick done
79c5787b92ac5f0e1cc82393816c77a006399316trawick )
79c5787b92ac5f0e1cc82393816c77a006399316trawick
c967bf3bc89e8aa60dbd30d9da388e448ddc1cc4trawick #
79c5787b92ac5f0e1cc82393816c77a006399316trawick # Restart other related services
79c5787b92ac5f0e1cc82393816c77a006399316trawick #
79c5787b92ac5f0e1cc82393816c77a006399316trawick # We explicitly restart here, as restart will only have an
79c5787b92ac5f0e1cc82393816c77a006399316trawick # effect if the service is already enabled. We don't want
79c5787b92ac5f0e1cc82393816c77a006399316trawick # to enable the service if it's currently disabled.
7b395e4e878c28a4784919cfd2e704ddd14a3390jorton #
7b395e4e878c28a4784919cfd2e704ddd14a3390jorton restart_svc $AUTOFS_FMRI
7b395e4e878c28a4784919cfd2e704ddd14a3390jorton}
7b395e4e878c28a4784919cfd2e704ddd14a3390jorton
536e48c08d674acac5d44929318f2ad928edc361jorton#
536e48c08d674acac5d44929318f2ad928edc361jorton# do_sec <location>
e81785da447b469da66f218b3f0244aab507958djorton#
e81785da447b469da66f218b3f0244aab507958djorton# If config properties are set, update the SMF property and refresh the
3e4e54d4e3fc0123c63d57aa84ac7ad7a8c73ff8jorton# service. If config properties are not set, delete the SMF property and
3e4e54d4e3fc0123c63d57aa84ac7ad7a8c73ff8jorton# stop the service.
3e4e54d4e3fc0123c63d57aa84ac7ad7a8c73ff8jorton#
53e9b27aba029b18be814df40bcf6f0428771d1efuankgdo_sec () {
53e9b27aba029b18be814df40bcf6f0428771d1efuankg loc=$1
53e9b27aba029b18be814df40bcf6f0428771d1efuankg
53e9b27aba029b18be814df40bcf6f0428771d1efuankg ike_file=`nwam_get_loc_prop $loc ike-config-file`
53e9b27aba029b18be814df40bcf6f0428771d1efuankg pol_file=`nwam_get_loc_prop $loc ipsecpolicy-config-file`
6bb524f1895f30265a1431afc460977d391cb36bsf ipf_file=`nwam_get_loc_prop $loc ipfilter-config-file`
6bb524f1895f30265a1431afc460977d391cb36bsf ipf6_file=`nwam_get_loc_prop $loc ipfilter-v6-config-file`
ca61ccd0c306c2c72df153688ba1b49f3eceed80sf ipnat_file=`nwam_get_loc_prop $loc ipnat-config-file`
6bb524f1895f30265a1431afc460977d391cb36bsf ippool_file=`nwam_get_loc_prop $loc ippool-config-file`
e6dd71992459d05a676b98b7963423dc5dc1e24aminfrin
e6dd71992459d05a676b98b7963423dc5dc1e24aminfrin # IKE
e6dd71992459d05a676b98b7963423dc5dc1e24aminfrin if [ -n "$ike_file" ]; then
e6dd71992459d05a676b98b7963423dc5dc1e24aminfrin set_smf_prop $IPSEC_IKE_FMRI config/config_file $ike_file
23f1535d6a60817d2846bac0aea230ea475d7dccminfrin refresh_svc $IPSEC_IKE_FMRI
23f1535d6a60817d2846bac0aea230ea475d7dccminfrin start_svc $IPSEC_IKE_FMRI
23f1535d6a60817d2846bac0aea230ea475d7dccminfrin else
23f1535d6a60817d2846bac0aea230ea475d7dccminfrin stop_svc $IPSEC_IKE_FMRI
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjung fi
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjung
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjung # IPsec
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjung if [ -n "$pol_file" ]; then
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjung set_smf_prop $IPSEC_POLICY_FMRI config/config_file $pol_file
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjung refresh_svc $IPSEC_POLICY_FMRI
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjung start_svc $IPSEC_POLICY_FMRI
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjung else
6249dfa569d3b4f1f539665b979a80c6e335d93etrawick stop_svc $IPSEC_POLICY_FMRI
6249dfa569d3b4f1f539665b979a80c6e335d93etrawick fi
0827cb14e550f6f65018431c22c2c913631c8f25kbrand
6249dfa569d3b4f1f539665b979a80c6e335d93etrawick # IPFilter
ae600ca541efc686b34f8b1f21bd3d0741d37674covener refresh_ipf=false
6249dfa569d3b4f1f539665b979a80c6e335d93etrawick if [ -n "$ipf_file" ]; then
cfa64348224b66dd1c9979b809406c4d15b1c137fielding if [ "$ipf_file" = "/none" ]; then
74499a117b3b2cd9666715a14f90c0e5d1a4ee8ajim set_smf_prop $IPFILTER_FMRI \
cfa64348224b66dd1c9979b809406c4d15b1c137fielding firewall_config_default/policy "none"
74499a117b3b2cd9666715a14f90c0e5d1a4ee8ajim elif [ "$ipf_file" = "/deny" ]; then
cfa64348224b66dd1c9979b809406c4d15b1c137fielding set_smf_prop $IPFILTER_FMRI \
74499a117b3b2cd9666715a14f90c0e5d1a4ee8ajim firewall_config_default/policy "deny"
cfa64348224b66dd1c9979b809406c4d15b1c137fielding elif [ "$ipf_file" = "/allow" ]; then
74499a117b3b2cd9666715a14f90c0e5d1a4ee8ajim set_smf_prop $IPFILTER_FMRI \
cfa64348224b66dd1c9979b809406c4d15b1c137fielding firewall_config_default/policy "allow"
else
# custom policy with policy file
set_smf_prop $IPFILTER_FMRI \
firewall_config_default/policy "custom"
set_smf_prop $IPFILTER_FMRI \
firewall_config_default/custom_policy_file $ipf_file
fi
refresh_ipf=true
else
# change policy to "none", no need to clear custom_policy_file
set_smf_prop $IPFILTER_FMRI firewall_config_default/policy \
"none"
# IPFilter has to be refreshed to make the changes effective.
# Don't set $refresh_ipf as it keeps IPFilter online rather
# than disabled. Refresh after IPFilter is disabled below.
fi
if [ -n "$ipf6_file" ]; then
set_smf_prop $IPFILTER_FMRI config/ipf6_config_file $ipf6_file
refresh_ipf=true
fi
if [ -n "$ipnat_file" ]; then
set_smf_prop $IPFILTER_FMRI config/ipnat_config_file $ipnat_file
refresh_ipf=true
fi
if [ -n "$ippool_file" ]; then
set_smf_prop $IPFILTER_FMRI config/ippool_config_file \
$ippool_file
refresh_ipf=true
fi
if [ "$refresh_ipf" = "true" ]; then
refresh_svc $IPFILTER_FMRI
start_svc $IPFILTER_FMRI
else
stop_svc $IPFILTER_FMRI
refresh_svc $IPFILTER_FMRI
fi
}
#
# update_nfs_file <new nfsv4 domain>
#
update_nfs_file () {
domain=$1
file=/etc/default/nfs
#
# For non-commented-out lines that set NFSMAPID_DOMAIN:
# if not previously added by nwam, comment out with a note
# if previously added by nwam, remove
# For commented-out lines that set NFSMAPID_DOMAIN:
# if not commented out by NWAM, leave as-is
# if commented out by NWAM, remove
# All other lines: leave as-is
#
$NAWK ' \
$0 ~ /^NFSMAPID_DOMAIN=/ {
if (index($0, "# Added by NWAM") == 0)
printf("#%s # Commented out by NWAM\n", $0);
}
$0 ~ /^#NFSMAPID_DOMAIN=/ {
if ($0 !~ /"# Commented out by NWAM"/)
printf("%s\n", $0);
}
$1 !~ /NFSMAPID_DOMAIN=/ {
printf("%s\n", $0);
}' $file >$file.$$
# Now add the desired value
echo "NFSMAPID_DOMAIN=$domain # Added by NWAM" >> $file.$$
# Finally, copy our working version to the real thing
$MV -f $file.$$ $file
}
#
# do_nfsv4 <location>
#
# Updates NFSv4 domain for location
#
do_nfsv4 () {
loc=$1
nfsv4domain=`nwam_get_loc_prop $loc nfsv4-domain`
if [ $? -eq 0 ]; then
update_nfs_file $nfsv4domain
start_svc $MAPID_FMRI
else
stop_svc $MAPID_FMRI
fi
}
#
# activate_loc <location>
#
# Activates the given location
#
activate_loc () {
loc=$1
echo activating $loc location
do_sec $loc
do_ns $loc
do_nfsv4 $loc
}
#
# Script entry point
#
# Arguments to net-loc are
# method ('start' or 'refresh')
#
# If nwam is not enabled, do nothing and return OK.
#
service_is_enabled $NWAM_FMRI || exit $SMF_EXIT_OK
#
# In a shared-IP zone we need this service to be up, but all of the work
# it tries to do is irrelevant (and will actually lead to the service
# failing if we try to do it), so just bail out.
# In the global zone and exclusive-IP zones we proceed.
#
smf_configure_ip || exit $SMF_EXIT_OK
case "$1" in
'start')
#
# We need to create the default (NoNet and Automatic)
# locations, if they don't already exist. So: first check
# for the existence of each, and then run the appropriate
# nwamcfg script(s) as needed. Restart nwamd if a location is
# created, as it needs to read it in.
#
LOC_CREATED="false"
$NWAMCFG list loc Automatic >/dev/null 2>&1
if [ $? -eq 1 ]; then
$NWAMCFG -f /etc/nwam/loc/create_loc_auto
LOC_CREATED="true"
fi
$NWAMCFG list loc NoNet >/dev/null 2>&1
if [ $? -eq 1 ]; then
NONETPATH=/etc/nwam/loc/NoNet
NONETFILES="ipf.conf ipf6.conf"
for file in $NONETFILES; do
copy_default $NONETPATH $file
done
$NWAMCFG -f /etc/nwam/loc/create_loc_nonet
LOC_CREATED="true"
fi
if [ "$LOC_CREATED" = "true" ]; then
refresh_svc $NWAM_FMRI
fi
# location selection/activation happens below
;;
'refresh')
# location selection/activation happens below
;;
*)
echo "Usage: $0 start|refresh"
exit 1
;;
esac
#
# If the Legacy location doesn't exist and the file to create the Legacy
# location exists, create the Legacy location. Make a copy of it as the user's
# intentions before upgrade. Then activate the User location if nis is
# involved. Because NIS affects more parts of the system (e.g. automounts) we
# are not willing to make NIS part of the Automatic location (i.e. enable it
# automatically based on external input) as we do with DHCP-driven DNS.
#
activate_user_loc=0
$NWAMCFG list loc Legacy >/dev/null 2>&1
if [ $? -eq 1 -a -f "$SCRIPT_PATH/create_loc_legacy" ]; then
#
# We built the script in and pointing to /etc/svc/volatile because we
# may not have a writable filesystem in net-nwam. So here we move the
# components and rewrite the script to point at the writable filesystem.
#
$CP -r $SCRIPT_PATH/Legacy $LEGACY_LOC_PATH
$MV $SCRIPT_PATH/create_loc_legacy $SCRIPT_PATH/vcreate_loc_legacy
$SED -e's,/etc/svc/volatile/nwam/Legacy,/etc/nwam/loc/Legacy,' \
$SCRIPT_PATH/vcreate_loc_legacy >$SCRIPT_PATH/create_loc_legacy
$NWAMCFG -f $SCRIPT_PATH/create_loc_legacy
loc_ver=`$SVCPROP -c -p location_upgrade/version $LOCATION_FMRI \
2>/dev/null`
if [ $? -eq 1 ]; then
#
# We are rewriting configuration variables from the Legacy
# location to the User location. Use variable ULP to keep REs
# within a line.
#
ULP=$USER_LOC_PATH
$SED -e's,Legacy,User,' \
-e's,activation-mode=system,activation-mode=manual,' \
-e"s,\(ipfilter-config-file=\).*/\(.*\),\1$ULP/\2," \
-e"s,\(ipfilter-v6-config-file=\).*/\(.*\),\1$ULP/\2," \
-e"s,\(ipnat-config-file=\).*/\(.*\),\1$ULP/\2," \
-e"s,\(ippool-config-file=\).*/\(.*\),\1$ULP/\2," \
-e"s,\(ike-config-file=\).*/\(.*\),\1$ULP/\2," \
-e"s,\(ipsecpolicy-config-file=\).*/\(.*\),\1$ULP/\2," \
$SCRIPT_PATH/create_loc_legacy | \
$SED -e's,/etc/nwam/loc/User/none,/none,' \
-e's,/etc/nwam/loc/User/allow,/allow,' \
-e's,/etc/nwam/loc/User/deny,/deny,' \
>$SCRIPT_PATH/create_loc_user
#
# We are creating the User location here. The User location
# is an appromixation of the machine configuration when the
# user change or upgraded to this version of NWAM. First
# we make sure there isn't an existing User location or any
# existing User location data. We then copy all the data
# from the Legacy location and create a location pointing at
# that data. Lastly we create a version property to note
# that we have done this.
#
$NWAMCFG destroy loc User 2>/dev/null
$RM -rf $USER_LOC_PATH
$CP -r $LEGACY_LOC_PATH $USER_LOC_PATH
$RM -f $USER_LOC_PATH/resolv.conf
$NWAMCFG -f $SCRIPT_PATH/create_loc_user
# The User location is activated if 'nis' is in a non comment
# line of nsswitch.conf.
$GREP -v "^#" $USER_LOC_PATH/nsswitch.conf |\
$SED -e 's/[^:]*://' | $GREP nis >/dev/null 2>&1
if [ $? -eq 0 ]; then
activate_user_loc=1
fi
$SVCCFG -s $SMF_FMRI addpg location_upgrade application \
2>/dev/null
$SVCCFG -s $SMF_FMRI setprop location_upgrade/version = \
astring: "1"
fi
fi
#
# Activate a location. If we've just finished upgrading, and
# the User location should be activated, do that (and use nwamadm
# to do so, so the enabled property gets set and nwamd knows this
# selection has been made). Otherwise, if our location/selected
# property has a value, we activate that location; else we activate
# the NoNet location as a default value.
#
if [ $activate_user_loc -eq 1 ]; then
$NWAMADM enable -p loc User
else
sel_loc=`$SVCPROP -c -p location/selected $SMF_FMRI 2>/dev/null`
if [ $? -eq 1 ]; then
# location hasn't been selected; default to NoNet
activate_loc NoNet
else
# activate selected location
activate_loc $sel_loc
fi
fi
exit $SMF_EXIT_OK