xref: /illumos-gate/usr/src/cmd/svc/milestone/identity-node (revision f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01)
1#!/sbin/sh
2#
3# CDDL HEADER START
4#
5# The contents of this file are subject to the terms of the
6# Common Development and Distribution License (the "License").
7# You may not use this file except in compliance with the License.
8#
9# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10# or http://www.opensolaris.org/os/licensing.
11# See the License for the specific language governing permissions
12# and limitations under the License.
13#
14# When distributing Covered Code, include this CDDL HEADER in each
15# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16# If applicable, add the following below this CDDL HEADER, with the
17# fields enclosed by brackets "[]" replaced with your own identifying
18# information: Portions Copyright [yyyy] [name of copyright owner]
19#
20# CDDL HEADER END
21#
22#
23# Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T.
24# All rights reserved.
25#
26#
27# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
28# Use is subject to license terms.
29#
30# ident	"%Z%%M%	%I%	%E% SMI"
31
32. /lib/svc/share/smf_include.sh
33. /lib/svc/share/net_include.sh
34
35# Make sure that the libraries essential to this stage of booting can be found.
36LD_LIBRARY_PATH=/lib; export LD_LIBRARY_PATH
37
38#
39# If DHCP was used on a primary interface then set the hostname
40# that was returned. If no hostname was returned, set the name
41# to be "unknown". The hostname must be set to something, because
42# tooltalk will hang unless the name can be locally resolved.
43# Sendmail also requires the name to be resolvable locally.
44# Later, in inetsvc, we create a name "unknown" and create a entry
45# in the local /etc/inet/hosts file pairing "unknown" with the IP
46# address assigned by DHCP.  The use of bootparams as a fallback
47# for all non-DHCP cases provides compatibility with the
48# behavior of the system before netstrategy was introduced.
49#
50# For non-global zones, fall back to the `uname -n` value provided by the
51# kernel if /etc/nodename does not exist, as is expected on an initial boot.
52#
53
54smf_netstrategy
55
56case "$_INIT_NET_STRATEGY" in
57	"dhcp") hostname=`/sbin/dhcpinfo Hostname` ;;
58	"rarp") hostname=`/sbin/hostconfig -h -p bootparams`
59		trap 'intr=1' 2 3
60		while [ -z "$hostname" -a ! -f /etc/.UNCONFIGURED -a \
61		    -z "$intr" ]; do
62			echo "re-trying host configuration..."
63			# Restrict this to IPv4 interfaces.
64			/sbin/ifconfig -adD4 auto-revarp up
65			hostname=`/sbin/hostconfig -h -p bootparams`
66		done
67		trap 2 3 ;;
68	"none") hostname="`shcat /etc/nodename 2>/dev/null`"
69       		if [ -z "$hostname" ]; then
70			if smf_is_globalzone; then
71				hostname=`/sbin/hostconfig -h -p bootparams`
72			else
73				hostname=`/sbin/uname -n`
74			fi
75		fi ;;
76esac
77
78#
79# If the netstrategy was unsuccessful and we haven't got a locally configured
80# name, default to "unknown"
81#
82if [ -z "$hostname" ]; then
83	hostname="`shcat /etc/nodename 2>/dev/null`"
84	if [ -z "$hostname" ]; then
85		hostname="unknown"
86	fi
87fi
88
89/sbin/uname -S $hostname
90
91echo "Hostname: `/sbin/uname -n`" > /dev/msglog
92
93# Reset the library path now that we are past the critical stage
94unset LD_LIBRARY_PATH
95
96exit $SMF_EXIT_OK
97