2N/A#!/usr/bin/perl
2N/A#
2N/A# CDDL HEADER START
2N/A#
2N/A# The contents of this file are subject to the terms of the
2N/A# Common Development and Distribution License (the "License").
2N/A# You may not use this file except in compliance with the License.
2N/A#
2N/A# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2N/A# or http://www.opensolaris.org/os/licensing.
2N/A# See the License for the specific language governing permissions
2N/A# and limitations under the License.
2N/A#
2N/A# When distributing Covered Code, include this CDDL HEADER in each
2N/A# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2N/A# If applicable, add the following below this CDDL HEADER, with the
2N/A# fields enclosed by brackets "[]" replaced with your own identifying
2N/A# information: Portions Copyright [yyyy] [name of copyright owner]
2N/A#
2N/A# CDDL HEADER END
2N/A#
2N/A
2N/A#
2N/A# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
2N/A#
2N/A
2N/A$num_bays = 4;
2N/A$bay_label = "HD";
2N/A
2N/Aprint <<EOF;
2N/A<topology name='disk' scheme='hc'>
2N/A <range name='bay' min='0' max='3'>
2N/AEOF
2N/A
2N/A$controller = 0;
2N/Afor ($bay = 0; $bay < $num_bays; $bay++) {
2N/A $hpath = "/pci\@79,0/pci1022,7458\@11/pci1000,3060\@2";
2N/A $tpath = sprintf("/sd\@%x,0", $bay);
2N/A $apoint = sprintf(":scsi::dsk/c%dt%dd0",
2N/A $controller + 1, $bay);
2N/A
2N/A print <<EOF;
2N/A <node instance='$bay'>
2N/A <propgroup name='protocol' version='1' name-stability='Private'
2N/A data-stability='Private'>
2N/A <propval name='label' type='string' value='$bay_label$bay' />
2N/A </propgroup>
2N/A <propgroup name='io' version='1' name-stability='Private'
2N/A data-stability='Private'>
2N/A <propval name='ap-path' type='string' value='/devices$hpath$apoint' />
2N/A </propgroup>
2N/A <propgroup name='binding' version='1' name-stability='Private'
2N/A data-stability='Private'>
2N/A <propval name='occupant-path' type='string'
2N/A value='$hpath$tpath' />
2N/A </propgroup>
2N/A </node>
2N/AEOF
2N/A}
2N/A
2N/Aprint <<EOF;
2N/A <dependents grouping='children'>
2N/A <range name='disk' min='0' max='0'>
2N/A <enum-method name='disk' version='1' />
2N/A </range>
2N/A </dependents>
2N/A </range>
2N/A</topology>
2N/AEOF