net-physical revision 516fc7f3e48e25d0375ea3f93ead33ec38bc597b
0N/A# The contents of this file are subject to the terms of the 0N/A# Common Development and Distribution License, Version 1.0 only 0N/A# (the "License"). You may not use this file except in compliance 0N/A# See the License for the specific language governing permissions 0N/A# and limitations under the License. 0N/A# When distributing Covered Code, include this CDDL HEADER in each 0N/A# If applicable, add the following below this CDDL HEADER, with the 0N/A# fields enclosed by brackets "[]" replaced with your own identifying 0N/A# information: Portions Copyright [yyyy] [name of copyright owner] 0N/A# Copyright 2005 Sun Microsystems, Inc. All rights reserved. 0N/A# Use is subject to license terms. 2080N/A# Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T. 0N/A# All rights reserved. 0N/A# ident "%Z%%M% %I% %E% SMI" 0N/A# In a zone we need this service to be up, but all of the work 0N/A# it tries to do is irrelevant (and will actually lead to the service 0N/A# failing if we try to do it), so just bail out. 0N/A# Print warnings to console 2400N/A# Make sure that the libraries essential to this stage of booting can be found. # Cause ifconfig to not automatically start in.mpathd when IPMP groups are # configured. This is not strictly necessary but makes it so that in.mpathd # sure that /usr is mounted. # Bring up link aggregations # If the system was net booted by DHCP, hand DHCP management off to the # DHCP agent (ifconfig communicates to the DHCP agent through the # The network initialization is done early to support diskless and # dataless configurations. For IPv4 interfaces that were configured by # the kernel (e.g. those on diskless machines) and not configured by # DHCP, reset the netmask using the local "/etc/netmasks" file if one # exists, and then reset the broadcast address based on the netmask. # All the IPv4 and IPv6 interfaces are plumbed before doing any # interface configuration. This prevents errors from plumb failures # getting mixed in with the configured interface lists that the script # Get the list of IPv4 interfaces to configure by breaking # /etc/hostname.* into separate args by using "." as a shell separator if [
"$1" =
"xx0" ];
then # For some unknown historical reason the xx0 # Get the list of IPv6 interfaces to configure by breaking # /etc/hostname6.* into separate args by using "." as a shell separator # Step through the IPv4 interface list and try to plumb every interface. # Generate list of plumbed and failed IPv4 interfaces. # Run autoconf to connect to a WLAN if the interface is a wireless one # Step through the IPv6 interface list and plumb every interface. # Generate list of plumbed and failed IPv6 interfaces. Each plumbed # interface will be brought up later, after processing any contents of # Process the /etc/hostname.* files of plumbed IPv4 interfaces. If an # /etc/hostname file is not present or is empty, the ifconfig auto-dhcp # / auto-revarp command will attempt to set the address, later. echo "configuring IPv4 interfaces:\c" # Process the /etc/hostname6.* files of plumbed IPv6 interfaces. After # processing the hostname6 file, bring the interface up. If echo "configuring IPv6 interfaces:\c" # Run DHCP if requested. Skip boot-configured interface. # First find the primary interface. Default to the first # interface if not specified. First primary interface found # "wins". Use care not to "reconfigure" a net-booted interface # configured using DHCP. Run through the list of interfaces # again, this time trying DHCP. echo "starting DHCP on primary interface $primary" # Exit code 4 means ifconfig timed out waiting for dhcpagent echo "starting DHCP on interface $1" # Exit code can't be timeout when wait is 0 # In order to avoid bringing up the interfaces that have # intentionally been left down, perform RARP only if the system # Process IPv4 and IPv6 interfaces that failed to plumb. Find an # alternative interface to host the addresses. # stage of booting will have access to NFS. '#'* |
'') ;;
# Ignore comments, empty lines # We tell smf this service is online if any of the following is true: # - no interfaces were configured for plumbing and no DHCP failures # - any non-loopback IPv4 interfaces are up and have a non-zero address # - there are any DHCP interfaces started # - any non-loopback IPv6 interfaces are up # If we weren't asked to configure any interfaces, exit # Config error if DHCP was attempted without plumbed interfaces # Any non-loopback IPv4 interfaces with usable addresses up? [
$addr !=
0.0.
0.0 ] &&
exit 0# Any DHCP interfaces started? # Any non-loopback IPv6 interfaces up? # This service was supposed to configure something yet didn't. Exit