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