xref: /onnv-gate/usr/src/lib/libresolv2/dns-install (revision 12926:599476a18982)
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