9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood#!/sbin/sh
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood#
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood# CDDL HEADER START
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood#
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood# The contents of this file are subject to the terms of the
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood# Common Development and Distribution License (the "License").
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood# You may not use this file except in compliance with the License.
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood#
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood# or http://www.opensolaris.org/os/licensing.
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood# See the License for the specific language governing permissions
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood# and limitations under the License.
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood#
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood# When distributing Covered Code, include this CDDL HEADER in each
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood# If applicable, add the following below this CDDL HEADER, with the
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood# fields enclosed by brackets "[]" replaced with your own identifying
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood# information: Portions Copyright [yyyy] [name of copyright owner]
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood#
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood# CDDL HEADER END
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood#
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood#
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood#
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood#
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood# Install DNS client service
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood#
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood. /lib/svc/share/smf_include.sh
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood. /lib/svc/share/net_include.sh
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark HaywoodSVCCFG=/usr/sbin/svccfg
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark HaywoodSVCPROP=/usr/bin/svcprop
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark HaywoodSVCADM=/usr/sbin/svcadm
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark HaywoodDNS_NWAM_FMRI="svc:/network/physical:nwam"
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark HaywoodDNS_INSTALL_FMRI=$SMF_FMRI
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark HaywoodDNS_INSTALL_PG="install_props"
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark HaywoodDNS_UNDEFINED_STRING_PROP="\"\""
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywooddns_install_debug=0
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywoodunset dns_install_domain dns_install_servers dns_install_search
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywooddns_process_install_pg()
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood{
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood dns_install_domain=""
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood dns_install_servers=""
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood dns_install_search=""
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood config=0
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood #
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood # Retrieve the name server property values.
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood #
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood prop=`$SVCPROP -p $DNS_INSTALL_PG/nameserver $DNS_INSTALL_FMRI`
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood if [ $? -eq 0 -a "$prop" != "$NET_INADDR_ANY" ]; then
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood dns_install_servers=$prop
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood config=1
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood fi
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood #
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood # Retrieve the name service domain.
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood #
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood prop=`$SVCPROP -p $DNS_INSTALL_PG/domain $DNS_INSTALL_FMRI`
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood if [ $? -eq 0 -a "$prop" != "$DNS_UNDEFINED_STRING_PROP" ]; then
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood dns_install_domain=$prop
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood config=1
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood fi
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood #
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood # Retrieve the search list.
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood #
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood prop=`$SVCPROP -p $DNS_INSTALL_PG/search $DNS_INSTALL_FMRI`
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood if [ $? -eq 0 -a "$prop" != "$DNS_UNDEFINED_STRING_PROP" ]; then
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood dns_install_search=$prop
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood config=1
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood fi
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood [ $config -ne 0 ] || return $SMF_EXIT_OK
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood #
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood # Create the resolv.conf file.
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood #
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood /usr/bin/touch /etc/resolv.conf.$$
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood if [ $? -ne 0 ]; then
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood net_record_err "Error creating \"/etc/resolv.conf.$$\"" $?
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood return $SMF_EXIT_ERR_FATAL
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood fi
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood for j in $dns_install_servers
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood do
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood server=`echo $j | /usr/bin/sed s/\"//g`
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood echo "nameserver $server" >>/etc/resolv.conf.$$
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood done
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood if [ "$dns_install_domain" != "" ]; then
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood echo "domain $dns_install_domain" >>/etc/resolv.conf.$$
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood fi
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood if [ "$dns_install_search" != "" ]; then
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood list="search"
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood for j in $dns_install_search
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood do
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood domain=`echo $j | /usr/bin/sed s/\"//g`
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood list="$list $domain"
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood done
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood echo $list >>/etc/resolv.conf.$$
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood fi
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood /usr/bin/mv /etc/resolv.conf.$$ /etc/resolv.conf
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood if [ $? -ne 0 ]; then
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood err=$?
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood msg="Error moving /etc/resolv.conf.$$ to \"/etc/resolv.conf\""
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood net_record_err "$msg" $err
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood return $SMF_EXIT_ERR_FATAL
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood fi
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood /usr/bin/chmod 644 /etc/resolv.conf
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood if [ $? -ne 0 ]; then
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood err=$?
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood msg="Error setting permissions on \"/etc/resolv.conf\""
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood net_record_err "$msg" $err
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood return $SMF_EXIT_ERR_FATAL
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood fi
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood #
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood # Create the nsswitch.conf file
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood #
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood /usr/bin/cp -f /etc/nsswitch.dns /etc/nsswitch.conf
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood if [ $? -ne 0 ]; then
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood err=$?
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood msg="Error copying /etc/nsswitch.dns to \"/etc/nsswitch.conf\""
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood net_record_err "$msg" $err
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood return $SMF_EXIT_ERR_FATAL
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood fi
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood /usr/bin/chmod 644 /etc/nsswitch.conf
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood if [ $? -ne 0 ]; then
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood err=$?
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood msg="Error setting permissions on \"/etc/nsswitch.conf\""
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood net_record_err "$msg" $err
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood return $SMF_EXIT_ERR_FATAL
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood fi
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood return $SMF_EXIT_OK
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood}
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywooddns_process_install()
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood{
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood vout=`$SVCCFG -s $DNS_INSTALL_FMRI validate 2>&1`
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood if [ "$vout" != "" ]; then
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood msg="Validation errors in $DNS_INSTALL_FMRI:\n$vout"
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood net_record_err "$msg" 0
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood return $SMF_EXIT_ERR_CONFIG
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood fi
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood ecode=$SMF_EXIT_OK
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood errs=0
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood cnt=0
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood pg=`$SVCPROP -p $DNS_INSTALL_PG $DNS_INSTALL_FMRI`
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood if [ $? -eq 0 ]; then
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood if service_is_enabled $DNS_NWAM_FMRI; then
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood echo "NWAM enabled. Install static" \
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood "DNS configuration ignored." | smf_console
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood errs=`expr $errs + 1`
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood ecode=$SMF_EXIT_ERR_CONFIG
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood else
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood dns_process_install_pg
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood if [ $? -ne $SMF_EXIT_OK ]; then
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood ecode=$?
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood errs=`expr $errs + 1`
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood else
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood cnt=`expr $cnt + 1`
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood fi
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood fi
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood $SVCCFG -s $DNS_INSTALL_FMRI delpg $DNS_INSTALL_PG
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood $SVCCFG -s $DNS_INSTALL_FMRI refresh
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood fi
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood if [ $dns_install_debug -eq 1 ]; then
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood if [ $errs -ne 0 ]; then
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood echo "$errs errors encountered" \
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood "configuring DNS on behalf of install"
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood fi
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood if [ $cntf -ne 0 ]; then
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood echo "DNS configured on behalf of install"
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood fi
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood fi
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood return $ecode
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood}
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood#
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood# Script execution starts here.
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood#
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywooddns_process_install || exit $?
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywood$SVCADM disable $DNS_INSTALL_FMRI
9b5bf10ab04b9be5564d70a57980cfb68b6372e7Mark Haywoodexit $SMF_EXIT_OK