1*12926SMark.Haywood@Oracle.COM#!/sbin/sh 2*12926SMark.Haywood@Oracle.COM# 3*12926SMark.Haywood@Oracle.COM# CDDL HEADER START 4*12926SMark.Haywood@Oracle.COM# 5*12926SMark.Haywood@Oracle.COM# The contents of this file are subject to the terms of the 6*12926SMark.Haywood@Oracle.COM# Common Development and Distribution License (the "License"). 7*12926SMark.Haywood@Oracle.COM# You may not use this file except in compliance with the License. 8*12926SMark.Haywood@Oracle.COM# 9*12926SMark.Haywood@Oracle.COM# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*12926SMark.Haywood@Oracle.COM# or http://www.opensolaris.org/os/licensing. 11*12926SMark.Haywood@Oracle.COM# See the License for the specific language governing permissions 12*12926SMark.Haywood@Oracle.COM# and limitations under the License. 13*12926SMark.Haywood@Oracle.COM# 14*12926SMark.Haywood@Oracle.COM# When distributing Covered Code, include this CDDL HEADER in each 15*12926SMark.Haywood@Oracle.COM# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*12926SMark.Haywood@Oracle.COM# If applicable, add the following below this CDDL HEADER, with the 17*12926SMark.Haywood@Oracle.COM# fields enclosed by brackets "[]" replaced with your own identifying 18*12926SMark.Haywood@Oracle.COM# information: Portions Copyright [yyyy] [name of copyright owner] 19*12926SMark.Haywood@Oracle.COM# 20*12926SMark.Haywood@Oracle.COM# CDDL HEADER END 21*12926SMark.Haywood@Oracle.COM# 22*12926SMark.Haywood@Oracle.COM# 23*12926SMark.Haywood@Oracle.COM# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. 24*12926SMark.Haywood@Oracle.COM# 25*12926SMark.Haywood@Oracle.COM 26*12926SMark.Haywood@Oracle.COM# 27*12926SMark.Haywood@Oracle.COM# Install DNS client service 28*12926SMark.Haywood@Oracle.COM# 29*12926SMark.Haywood@Oracle.COM 30*12926SMark.Haywood@Oracle.COM. /lib/svc/share/smf_include.sh 31*12926SMark.Haywood@Oracle.COM. /lib/svc/share/net_include.sh 32*12926SMark.Haywood@Oracle.COM 33*12926SMark.Haywood@Oracle.COMSVCCFG=/usr/sbin/svccfg 34*12926SMark.Haywood@Oracle.COMSVCPROP=/usr/bin/svcprop 35*12926SMark.Haywood@Oracle.COMSVCADM=/usr/sbin/svcadm 36*12926SMark.Haywood@Oracle.COM 37*12926SMark.Haywood@Oracle.COMDNS_NWAM_FMRI="svc:/network/physical:nwam" 38*12926SMark.Haywood@Oracle.COMDNS_INSTALL_FMRI=$SMF_FMRI 39*12926SMark.Haywood@Oracle.COM 40*12926SMark.Haywood@Oracle.COMDNS_INSTALL_PG="install_props" 41*12926SMark.Haywood@Oracle.COM 42*12926SMark.Haywood@Oracle.COMDNS_UNDEFINED_STRING_PROP="\"\"" 43*12926SMark.Haywood@Oracle.COM 44*12926SMark.Haywood@Oracle.COMdns_install_debug=0 45*12926SMark.Haywood@Oracle.COM 46*12926SMark.Haywood@Oracle.COMunset dns_install_domain dns_install_servers dns_install_search 47*12926SMark.Haywood@Oracle.COM 48*12926SMark.Haywood@Oracle.COMdns_process_install_pg() 49*12926SMark.Haywood@Oracle.COM{ 50*12926SMark.Haywood@Oracle.COM dns_install_domain="" 51*12926SMark.Haywood@Oracle.COM dns_install_servers="" 52*12926SMark.Haywood@Oracle.COM dns_install_search="" 53*12926SMark.Haywood@Oracle.COM config=0 54*12926SMark.Haywood@Oracle.COM 55*12926SMark.Haywood@Oracle.COM # 56*12926SMark.Haywood@Oracle.COM # Retrieve the name server property values. 57*12926SMark.Haywood@Oracle.COM # 58*12926SMark.Haywood@Oracle.COM prop=`$SVCPROP -p $DNS_INSTALL_PG/nameserver $DNS_INSTALL_FMRI` 59*12926SMark.Haywood@Oracle.COM if [ $? -eq 0 -a "$prop" != "$NET_INADDR_ANY" ]; then 60*12926SMark.Haywood@Oracle.COM dns_install_servers=$prop 61*12926SMark.Haywood@Oracle.COM config=1 62*12926SMark.Haywood@Oracle.COM fi 63*12926SMark.Haywood@Oracle.COM 64*12926SMark.Haywood@Oracle.COM # 65*12926SMark.Haywood@Oracle.COM # Retrieve the name service domain. 66*12926SMark.Haywood@Oracle.COM # 67*12926SMark.Haywood@Oracle.COM prop=`$SVCPROP -p $DNS_INSTALL_PG/domain $DNS_INSTALL_FMRI` 68*12926SMark.Haywood@Oracle.COM if [ $? -eq 0 -a "$prop" != "$DNS_UNDEFINED_STRING_PROP" ]; then 69*12926SMark.Haywood@Oracle.COM dns_install_domain=$prop 70*12926SMark.Haywood@Oracle.COM config=1 71*12926SMark.Haywood@Oracle.COM fi 72*12926SMark.Haywood@Oracle.COM 73*12926SMark.Haywood@Oracle.COM # 74*12926SMark.Haywood@Oracle.COM # Retrieve the search list. 75*12926SMark.Haywood@Oracle.COM # 76*12926SMark.Haywood@Oracle.COM prop=`$SVCPROP -p $DNS_INSTALL_PG/search $DNS_INSTALL_FMRI` 77*12926SMark.Haywood@Oracle.COM if [ $? -eq 0 -a "$prop" != "$DNS_UNDEFINED_STRING_PROP" ]; then 78*12926SMark.Haywood@Oracle.COM dns_install_search=$prop 79*12926SMark.Haywood@Oracle.COM config=1 80*12926SMark.Haywood@Oracle.COM fi 81*12926SMark.Haywood@Oracle.COM 82*12926SMark.Haywood@Oracle.COM [ $config -ne 0 ] || return $SMF_EXIT_OK 83*12926SMark.Haywood@Oracle.COM 84*12926SMark.Haywood@Oracle.COM # 85*12926SMark.Haywood@Oracle.COM # Create the resolv.conf file. 86*12926SMark.Haywood@Oracle.COM # 87*12926SMark.Haywood@Oracle.COM /usr/bin/touch /etc/resolv.conf.$$ 88*12926SMark.Haywood@Oracle.COM if [ $? -ne 0 ]; then 89*12926SMark.Haywood@Oracle.COM net_record_err "Error creating \"/etc/resolv.conf.$$\"" $? 90*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_ERR_FATAL 91*12926SMark.Haywood@Oracle.COM fi 92*12926SMark.Haywood@Oracle.COM 93*12926SMark.Haywood@Oracle.COM for j in $dns_install_servers 94*12926SMark.Haywood@Oracle.COM do 95*12926SMark.Haywood@Oracle.COM server=`echo $j | /usr/bin/sed s/\"//g` 96*12926SMark.Haywood@Oracle.COM echo "nameserver $server" >>/etc/resolv.conf.$$ 97*12926SMark.Haywood@Oracle.COM done 98*12926SMark.Haywood@Oracle.COM 99*12926SMark.Haywood@Oracle.COM if [ "$dns_install_domain" != "" ]; then 100*12926SMark.Haywood@Oracle.COM echo "domain $dns_install_domain" >>/etc/resolv.conf.$$ 101*12926SMark.Haywood@Oracle.COM fi 102*12926SMark.Haywood@Oracle.COM 103*12926SMark.Haywood@Oracle.COM if [ "$dns_install_search" != "" ]; then 104*12926SMark.Haywood@Oracle.COM list="search" 105*12926SMark.Haywood@Oracle.COM for j in $dns_install_search 106*12926SMark.Haywood@Oracle.COM do 107*12926SMark.Haywood@Oracle.COM domain=`echo $j | /usr/bin/sed s/\"//g` 108*12926SMark.Haywood@Oracle.COM list="$list $domain" 109*12926SMark.Haywood@Oracle.COM done 110*12926SMark.Haywood@Oracle.COM echo $list >>/etc/resolv.conf.$$ 111*12926SMark.Haywood@Oracle.COM fi 112*12926SMark.Haywood@Oracle.COM 113*12926SMark.Haywood@Oracle.COM /usr/bin/mv /etc/resolv.conf.$$ /etc/resolv.conf 114*12926SMark.Haywood@Oracle.COM if [ $? -ne 0 ]; then 115*12926SMark.Haywood@Oracle.COM err=$? 116*12926SMark.Haywood@Oracle.COM msg="Error moving /etc/resolv.conf.$$ to \"/etc/resolv.conf\"" 117*12926SMark.Haywood@Oracle.COM net_record_err "$msg" $err 118*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_ERR_FATAL 119*12926SMark.Haywood@Oracle.COM fi 120*12926SMark.Haywood@Oracle.COM 121*12926SMark.Haywood@Oracle.COM /usr/bin/chmod 644 /etc/resolv.conf 122*12926SMark.Haywood@Oracle.COM if [ $? -ne 0 ]; then 123*12926SMark.Haywood@Oracle.COM err=$? 124*12926SMark.Haywood@Oracle.COM msg="Error setting permissions on \"/etc/resolv.conf\"" 125*12926SMark.Haywood@Oracle.COM net_record_err "$msg" $err 126*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_ERR_FATAL 127*12926SMark.Haywood@Oracle.COM fi 128*12926SMark.Haywood@Oracle.COM 129*12926SMark.Haywood@Oracle.COM # 130*12926SMark.Haywood@Oracle.COM # Create the nsswitch.conf file 131*12926SMark.Haywood@Oracle.COM # 132*12926SMark.Haywood@Oracle.COM /usr/bin/cp -f /etc/nsswitch.dns /etc/nsswitch.conf 133*12926SMark.Haywood@Oracle.COM if [ $? -ne 0 ]; then 134*12926SMark.Haywood@Oracle.COM err=$? 135*12926SMark.Haywood@Oracle.COM msg="Error copying /etc/nsswitch.dns to \"/etc/nsswitch.conf\"" 136*12926SMark.Haywood@Oracle.COM net_record_err "$msg" $err 137*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_ERR_FATAL 138*12926SMark.Haywood@Oracle.COM fi 139*12926SMark.Haywood@Oracle.COM 140*12926SMark.Haywood@Oracle.COM /usr/bin/chmod 644 /etc/nsswitch.conf 141*12926SMark.Haywood@Oracle.COM if [ $? -ne 0 ]; then 142*12926SMark.Haywood@Oracle.COM err=$? 143*12926SMark.Haywood@Oracle.COM msg="Error setting permissions on \"/etc/nsswitch.conf\"" 144*12926SMark.Haywood@Oracle.COM net_record_err "$msg" $err 145*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_ERR_FATAL 146*12926SMark.Haywood@Oracle.COM fi 147*12926SMark.Haywood@Oracle.COM 148*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_OK 149*12926SMark.Haywood@Oracle.COM} 150*12926SMark.Haywood@Oracle.COM 151*12926SMark.Haywood@Oracle.COMdns_process_install() 152*12926SMark.Haywood@Oracle.COM{ 153*12926SMark.Haywood@Oracle.COM vout=`$SVCCFG -s $DNS_INSTALL_FMRI validate 2>&1` 154*12926SMark.Haywood@Oracle.COM if [ "$vout" != "" ]; then 155*12926SMark.Haywood@Oracle.COM msg="Validation errors in $DNS_INSTALL_FMRI:\n$vout" 156*12926SMark.Haywood@Oracle.COM net_record_err "$msg" 0 157*12926SMark.Haywood@Oracle.COM return $SMF_EXIT_ERR_CONFIG 158*12926SMark.Haywood@Oracle.COM fi 159*12926SMark.Haywood@Oracle.COM 160*12926SMark.Haywood@Oracle.COM ecode=$SMF_EXIT_OK 161*12926SMark.Haywood@Oracle.COM errs=0 162*12926SMark.Haywood@Oracle.COM cnt=0 163*12926SMark.Haywood@Oracle.COM pg=`$SVCPROP -p $DNS_INSTALL_PG $DNS_INSTALL_FMRI` 164*12926SMark.Haywood@Oracle.COM if [ $? -eq 0 ]; then 165*12926SMark.Haywood@Oracle.COM if service_is_enabled $DNS_NWAM_FMRI; then 166*12926SMark.Haywood@Oracle.COM echo "NWAM enabled. Install static" \ 167*12926SMark.Haywood@Oracle.COM "DNS configuration ignored." | smf_console 168*12926SMark.Haywood@Oracle.COM errs=`expr $errs + 1` 169*12926SMark.Haywood@Oracle.COM ecode=$SMF_EXIT_ERR_CONFIG 170*12926SMark.Haywood@Oracle.COM else 171*12926SMark.Haywood@Oracle.COM dns_process_install_pg 172*12926SMark.Haywood@Oracle.COM if [ $? -ne $SMF_EXIT_OK ]; then 173*12926SMark.Haywood@Oracle.COM ecode=$? 174*12926SMark.Haywood@Oracle.COM errs=`expr $errs + 1` 175*12926SMark.Haywood@Oracle.COM else 176*12926SMark.Haywood@Oracle.COM cnt=`expr $cnt + 1` 177*12926SMark.Haywood@Oracle.COM fi 178*12926SMark.Haywood@Oracle.COM 179*12926SMark.Haywood@Oracle.COM fi 180*12926SMark.Haywood@Oracle.COM $SVCCFG -s $DNS_INSTALL_FMRI delpg $DNS_INSTALL_PG 181*12926SMark.Haywood@Oracle.COM $SVCCFG -s $DNS_INSTALL_FMRI refresh 182*12926SMark.Haywood@Oracle.COM fi 183*12926SMark.Haywood@Oracle.COM 184*12926SMark.Haywood@Oracle.COM if [ $dns_install_debug -eq 1 ]; then 185*12926SMark.Haywood@Oracle.COM if [ $errs -ne 0 ]; then 186*12926SMark.Haywood@Oracle.COM echo "$errs errors encountered" \ 187*12926SMark.Haywood@Oracle.COM "configuring DNS on behalf of install" 188*12926SMark.Haywood@Oracle.COM fi 189*12926SMark.Haywood@Oracle.COM 190*12926SMark.Haywood@Oracle.COM if [ $cntf -ne 0 ]; then 191*12926SMark.Haywood@Oracle.COM echo "DNS configured on behalf of install" 192*12926SMark.Haywood@Oracle.COM fi 193*12926SMark.Haywood@Oracle.COM fi 194*12926SMark.Haywood@Oracle.COM 195*12926SMark.Haywood@Oracle.COM return $ecode 196*12926SMark.Haywood@Oracle.COM} 197*12926SMark.Haywood@Oracle.COM 198*12926SMark.Haywood@Oracle.COM# 199*12926SMark.Haywood@Oracle.COM# Script execution starts here. 200*12926SMark.Haywood@Oracle.COM# 201*12926SMark.Haywood@Oracle.COMdns_process_install || exit $? 202*12926SMark.Haywood@Oracle.COM 203*12926SMark.Haywood@Oracle.COM$SVCADM disable $DNS_INSTALL_FMRI 204*12926SMark.Haywood@Oracle.COMexit $SMF_EXIT_OK 205