18677 rad service needs clearer definition osol_170
authorDavid Powell <david.e.powell@oracle.com>
Fri, 08 Jul 2011 11:32:24 -0700
changeset 738 97be845f69e0
parent 737 66f17234510c
child 739 2c446083b922
18677 rad service needs clearer definition 18682 /usr/bin/vp fails to start on recent builds
usr/src/cmd/rad/daemon/rad.xml
usr/src/doc/manpage/Makefile
usr/src/doc/manpage/man-rad.xml
usr/src/doc/rad-dev/c-intro.xml
usr/src/java/vpanels/panel/org/opensolaris/os/vp/panel/swing/control/WindowControl.java
usr/src/java/vpanels/panel/org/opensolaris/os/vp/panel/swing/control/resources/Resources.properties
usr/src/java/vpanels/vp.in
usr/src/pkg/transforms/restart_fmri
--- a/usr/src/cmd/rad/daemon/rad.xml	Thu Jul 07 19:34:03 2011 -0400
+++ b/usr/src/cmd/rad/daemon/rad.xml	Fri Jul 08 11:32:24 2011 -0700
@@ -28,12 +28,10 @@
     file.
 -->
 
-<service_bundle type='manifest' name='OSOLvpanels:rad'>
+<service_bundle type='manifest' name='system/management/rad'>
 
 <service name='system/rad' type='service' version='1'> 
 
-        <create_default_instance enabled='true' />      
-       
 	<dependency
 		name='filesystem'
 		grouping='require_all'
@@ -50,7 +48,7 @@
 		<service_fmri value='svc:/network/initial' />
 	</dependency>
 	
-	 <dependency
+	<dependency
                 name='multi-user'
                 grouping='require_all'
                 restart_on='none'
@@ -84,38 +82,36 @@
 		<propval name='timeout' type='integer' value='180' />
 	</property_group>
 
-	<property_group name='local_port' type='xport_unix'>
-		<propval name='proto' type='astring' value='rad' />
-		<propval name='path' type='astring'
-		    value='/var/run/radsocket' />
-		<propval name='peercred' type='boolean' value='true' />
-	</property_group>
-
-	<property_group name='local_port_unauth' type='xport_unix'>
-		<propval name='proto' type='astring' value='rad' />
-		<propval name='path' type='astring'
-		    value='/var/run/radsocket-unauth' />
-		<propval name='peercred' type='boolean' value='false' />
-	</property_group>
+        <instance name='local' enabled='true'>
+		<property_group name='local_port' type='xport_unix'>
+			<propval name='proto' type='astring' value='rad' />
+			<propval name='path' type='astring'
+			    value='/var/run/radsocket' />
+			<propval name='peercred' type='boolean' value='true' />
+		</property_group>
 
-	<property_group name='control_port' type='xport_unix'>
-		<propval name='proto' type='astring' value='rad' />
-		<propval name='path' type='astring'
-		    value='/var/run/radcontrol' />
-		<propval name='control' type='boolean' value='true' />
-	</property_group>
+		<property_group name='local_port_unauth' type='xport_unix'>
+			<propval name='proto' type='astring' value='rad' />
+			<propval name='path' type='astring'
+			    value='/var/run/radsocket-unauth' />
+			<propval name='peercred' type='boolean' value='false' />
+		</property_group>
+	</instance>
+        
+        <instance name='remote' enabled='false'>
+		<property_group name='ssl_port' type='xport_tls'>
+			<propval name='proto' type='astring' value='rad' />
+			<propval name='port' type='integer' value='12302' />
+			<propval name='localonly' type='boolean'
+			    value='false' />
+			<propval name='certificate' type='astring'
+			    value='/etc/rad/cert.pem' />
+			<propval name='privatekey' type='astring'
+			    value='/etc/rad/key.pem' />
+			<propval name='generate' type='boolean' value='true' />
+		</property_group>
+	</instance>
 
-	<property_group name='ssl_port' type='xport_tls'>
-		<propval name='proto' type='astring' value='rad' />
-		<propval name='port' type='integer' value='12302' />
-		<propval name='localonly' type='boolean' value='true' />
-		<propval name='certificate' type='astring'
-		    value='/etc/rad/cert.pem' />
-		<propval name='privatekey' type='astring'
-		    value='/etc/rad/key.pem' />
-		<propval name='generate' type='boolean' value='true' />
-	</property_group>
-        
         <stability value='Unstable' />       
 
 	<template>
--- a/usr/src/doc/manpage/Makefile	Thu Jul 07 19:34:03 2011 -0400
+++ b/usr/src/doc/manpage/Makefile	Fri Jul 08 11:32:24 2011 -0700
@@ -20,7 +20,7 @@
 #
 
 #
-# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../Makefile.doc
@@ -45,11 +45,22 @@
 
 # Man page rules.  Must be updated if new sections are added.
 
+DBOPTS += --param refentry.meta.get.quietly 1
+
+# DocBook's man page stylesheets assume we are using groff with its left-
+# and right-quote character constants.  A more portable approach would be
+# to reference the left- and right-quote string constants.  FIX_MAN maps
+# from one to the other.
+
+FIX_MAN = -echo '1,$$s/(lq/*(lq/g\n1,$$s/(rq/*(rq\nw' | ed -s $@
+
 %.1: man-%.xml
 	$(XSLT.man)
+	$(FIX_MAN)
 
 %.1m: man-%.xml
 	$(XSLT.man)
+	$(FIX_MAN)
 
 $(PROTO_MAN)/man1/% $(PROTO_MAN)/man1m/%: %
 	$(INS.file)
--- a/usr/src/doc/manpage/man-rad.xml	Thu Jul 07 19:34:03 2011 -0400
+++ b/usr/src/doc/manpage/man-rad.xml	Fri Jul 08 11:32:24 2011 -0700
@@ -1,24 +1,24 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
 <!--
-	PDL HEADER START
+  PDL HEADER START
 
-	Public Documentation License Notice
+  Public Documentation License Notice
 
-	The contents of this Documentation are subject to the Public
-	Documentation License Version 1.01 (the "License"); you may only
-	use this Documentation if you comply with the terms of this License.
-	A copy of the License is available at
-	http://www.opensolaris.org/os/community/documentation/license.
+  The contents of this Documentation are subject to the Public
+  Documentation License Version 1.01 (the "License"); you may only
+  use this Documentation if you comply with the terms of this License.
+  A copy of the License is available at
+  http://www.opensolaris.org/os/community/documentation/license.
 
-	PDL HEADER END
+  PDL HEADER END
 
-	Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+  Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
 -->
 
 <refentry id="man.rad">
     <refentryinfo>
-	<date>March 24, 2010</date>
+	<date>July 7, 2011</date>
 	<productname>SunOS</productname>
 	<productnumber>5.11</productnumber>
     </refentryinfo>
@@ -38,6 +38,7 @@
 	<cmdsynopsis>
 	    <command>/usr/lib/rad/rad</command>
 	    <arg choice="opt"><option>-d</option></arg>
+	    <arg choice="opt"><option>-s</option></arg>
 	    <arg choice="opt">
 		<option>-S</option> <replaceable>fmri</replaceable>
 	    </arg>
@@ -70,9 +71,39 @@
 
     <refsection><title>Description</title>
 	<para>
-	    rad is a daemon that runs in the background on each Solaris
-	    system.  rad provides secure access to system configuration,
-	    optionally to clients on the network.
+	    rad is a facility that securely exposes programmatic system
+	    administrative and monitoring interfaces to consumers in a
+	    variety of high-level languages.
+	</para>
+	<para>
+	    rad can be used in two ways.  rad can be run as a service,
+	    in which case it authenticates connections using
+	    <citerefentry> <refentrytitle>getpeerucred</refentrytitle>
+	    <manvolnum>3C</manvolnum> </citerefentry> or <citerefentry>
+	    <refentrytitle>pam</refentrytitle>
+	    <manvolnum>3PAM</manvolnum> </citerefentry>.  When used in
+	    this way, APIs consumed are run as the authenticated user.
+	    This mode of operation is provided with both local
+	    consumers looking to isolate execution of their privileged
+	    operations and remote consumers in mind.  rad can also be
+	    run as an unprivileged program, in which case it serves
+	    solely as a bridge between its clients and the
+	    administrative APIs it publishes.  When used in this way,
+	    any APIs consumed will be run with the rights held by the
+	    rad process.
+	</para>
+	<para>
+	    rad is modular.  The APIs published by rad are delivered as
+	    shared objects, as are the protocols it understands and the
+	    transports it can communicate over.  Multiple instances of
+	    rad can run simultaneously, each functioning independently
+	    of the others, providing different services to different
+	    consumers, and listening for different types of connections
+	    on different ports or interfaces.  rad obtains its
+	    configuration from its command-line options, from
+	    <citerefentry> <refentrytitle>smf</refentrytitle>
+	    <manvolnum>5</manvolnum> </citerefentry>, or from a
+	    combination of the two.
 	</para>
     </refsection>
 
@@ -91,17 +122,10 @@
 	    </varlistentry>
 
 	    <varlistentry>
-	    <term><option>-S</option> <replaceable>fmri</replaceable></term>
+	    <term><option>-e</option> <replaceable>timeout</replaceable></term>
 	    <listitem><para>
-		Read configuration from the SMF service specified by
-		<replaceable>fmri</replaceable>.  Configured transports are
-		not read from the service to avoid endpoint conflicts with
-		a running service.
-	    </para><para>
-		Module directories specified on the command line are
-		searched before module directories configured in SMF,
-		permitting command line configuration to override SMF
-		configuration.
+		Specify a connection timeout in seconds. The default
+		value is 180 seconds.
 	    </para></listitem>
 	    </varlistentry>
 
@@ -140,10 +164,115 @@
 	    </varlistentry>
 
 	    <varlistentry>
-	    <term><option>-e</option> <replaceable>timeout</replaceable></term>
+	    <term><option>-s</option></term>
+	    <listitem><para>
+		Behave as an <citerefentry>
+		<refentrytitle>svc.startd</refentrytitle>
+		<manvolnum>1M</manvolnum></citerefentry> start method.
+		This option has the following effects:
+	    </para><para>
+		If the <option>-S</option> option is not specified, rad
+		will read its configuration from the service identified
+		by <citerefentry><refentrytitle>scf_myname</refentrytitle>
+		<manvolnum>3SCF</manvolnum></citerefentry>.
+	    </para><para>
+		rad will use <citerefentry>
+		<refentrytitle>smf_method</refentrytitle>
+		<manvolnum>5</manvolnum> </citerefentry>-compatible
+		exit statuses.
+	    </para><para>
+		rad will daemonize, returning success only once it is
+		ready to handle requests.
+	    </para></listitem>
+	    </varlistentry>
+
+	    <varlistentry>
+	    <term><option>-S</option> <replaceable>fmri</replaceable></term>
 	    <listitem><para>
-	    	Specify a connection timeout in seconds. The default value is
-		180 seconds.
+		Read configuration from the SMF service specified by
+		<replaceable>fmri</replaceable>.  When the
+		<option>-s</option> option isn't specified, configured
+		transports are <emphasis>not</emphasis> read from the
+		service to avoid endpoint conflicts with a running
+		service.
+	    </para><para>
+		Module directories specified on the command line are
+		searched before module directories configured in SMF,
+		permitting command line configuration to override SMF
+		configuration.
+	    </para></listitem>
+	    </varlistentry>
+
+	    </variablelist>
+	</para>
+    </refsection>
+
+    <refsection><title>SMF Configuration</title>
+	<para>
+	    When rad reads its configuration from <citerefentry>
+	    <refentrytitle>smf</refentrytitle> <manvolnum>5</manvolnum>
+	    </citerefentry>, it reads general configuration from a
+	    property group called <quote>config</quote> of type
+	    <quote>application</quote>, and reads configuration for
+	    each of an arbitrary number of transports from a series of
+	    properties groups of type <quote>xport_XYZ</quote> where
+	    <quote>XYZ</quote> is replaced with the name of the
+	    transport type.  Multiple instances of a particular
+	    transport type can be configured by creating multiple
+	    property groups of the corresponding type.  The names of
+	    the property groups used to configure transports are not
+	    important.
+	</para>
+
+	<para>
+	    The <quote>config</quote> property group contains the
+	    following properties:
+
+	    <variablelist>
+
+	    <varlistentry>
+	    <term>moduledir</term>
+	    <listitem><para>
+		A list of <literal>astring</literal>s.  The directories
+		to scan and load modules from.
+	    </para></listitem>
+	    </varlistentry>
+
+	    <varlistentry>
+	    <term>modules</term>
+	    <listitem><para>
+		A list of <literal>astring</literal>s.  The file names
+		of specific modules to load.
+	    </para></listitem>
+	    </varlistentry>
+
+	    <varlistentry>
+	    <term>pam_service</term>
+	    <listitem><para>
+		An <literal>astring</literal>.  The <citerefentry>
+		<refentrytitle>pam</refentrytitle>
+		<manvolnum>3PAM</manvolnum> </citerefentry> service
+		name to use when authenticating.  Defaults to
+		<quote>rad</quote>.
+	    </para></listitem>
+	    </varlistentry>
+
+	    <varlistentry>
+	    <term>debug</term>
+	    <listitem><para>
+		A <literal>boolean</literal>.  If true, rad will emit
+		verbose debugging output.  Defaults to
+		<quote>false</quote>.
+	    </para></listitem>
+	    </varlistentry>
+
+	    <varlistentry>
+	    <term>timeout</term>
+	    <listitem><para>
+		An <literal>integer</literal>.  The maximum time in
+		seconds to wait for an individual response from the
+		client while authenticating.  Defaults to
+		<quote>180</quote>.
 	    </para></listitem>
 	    </varlistentry>
 
@@ -151,10 +280,339 @@
 	</para>
     </refsection>
 
+    <refsection><title>Transports</title>
+	<para>
+	    Support for different transport types is delivered in
+	    module form.  Modules for the following transports are
+	    supplied with the system: pipes (pipe), TCP sockets (tcp),
+	    TLS sockets (tls), and Unix-domain sockets (unix).  Each
+	    transport type has a unique set of configuration
+	    properties.  The options for an instance of a transport
+	    type are configured either by defining properties in an SMF
+	    property group or by supplying sub-options to a
+	    <option>-t</option> command-line option.
+	</para>
+
+	<para>
+	    The <quote>pipe</quote> transport reads from and writes to
+	    a specific file descriptor, as is needed when a process
+	    wishes to communicate with a child rad process using a
+	    pipe.  The pipe transport has the following options:
+
+	    <variablelist>
+
+	    <varlistentry>
+	    <term>proto</term>
+	    <listitem><para>
+		An <literal>astring</literal>.  The protocol to use
+		with this transport instance.  Defaults to
+		<quote>rad</quote>.
+	    </para></listitem>
+	    </varlistentry>
+
+	    <varlistentry>
+	    <term>fd</term>
+	    <listitem><para>
+		An <literal>integer</literal>.  The file descriptor to
+		read from/write to.
+	    </para></listitem>
+	    </varlistentry>
+
+	    <varlistentry>
+	    <term>exit</term>
+	    <listitem><para>
+		A <literal>boolean</literal>.  If true, rad will exit
+		when communication over the pipe ends.  Defaults to
+		<quote>false</quote>.
+	    </para></listitem>
+	    </varlistentry>
+
+	    </variablelist>
+	</para>
+
+	<para>
+	    The <quote>tcp</quote> transport listens for clear-text
+	    connections on a TCP socket.  The tcp transport has the
+	    following options:
+
+	    <variablelist>
+
+	    <varlistentry>
+	    <term>proto</term>
+	    <listitem><para>
+		An <literal>astring</literal>.  The protocol to use
+		with this transport instance.  Defaults to
+		<quote>rad</quote>.
+	    </para></listitem>
+	    </varlistentry>
+
+	    <varlistentry>
+	    <term>port</term>
+	    <listitem><para>
+		An <literal>integer</literal>.  The port to listen on
+		for connections.
+	    </para></listitem>
+	    </varlistentry>
+
+	    <varlistentry>
+	    <term>localonly</term>
+	    <listitem><para>
+		A <literal>boolean</literal>.  If true, rad will only
+		listen for connections from the local machine.
+		Defaults to <quote>true</quote>.
+	    </para></listitem>
+	    </varlistentry>
+
+	    </variablelist>
+	</para>
+
+	<para>
+	    The <quote>tls</quote> transport listens for TLS
+	    connections on a TCP socket.  The tcp transport has the
+	    following options:
+
+	    <variablelist>
+
+	    <varlistentry>
+	    <term>proto</term>
+	    <listitem><para>
+		An <literal>astring</literal>.  The protocol to use
+		with this transport instance.  Defaults to
+		<quote>rad</quote>.
+	    </para></listitem>
+	    </varlistentry>
+
+	    <varlistentry>
+	    <term>port</term>
+	    <listitem><para>
+		An <literal>integer</literal>.  The port to listen on
+		for connections.
+	    </para></listitem>
+	    </varlistentry>
+
+	    <varlistentry>
+	    <term>localonly</term>
+	    <listitem><para>
+		A <literal>boolean</literal>.  If true, rad will only
+		listen for connections from the local machine.
+		Defaults to <quote>true</quote>.
+	    </para></listitem>
+	    </varlistentry>
+
+	    <varlistentry>
+	    <term>certificate</term>
+	    <listitem><para>
+		An <literal>astring</literal>.  The location of the
+		PEM-formatted x509 certificate to use.
+	    </para></listitem>
+	    </varlistentry>
+
+	    <varlistentry>
+	    <term>privatekey</term>
+	    <listitem><para>
+		An <literal>astring</literal>.  The location of the
+		PEM-formatted private key to use.
+	    </para></listitem>
+	    </varlistentry>
+
+	    <varlistentry>
+	    <term>generate</term>
+	    <listitem><para>
+		A <literal>boolean</literal>.  If true,
+		<emphasis>and</emphasis> if the specified certificate
+		and privatekey do not exist, rad will generate a new
+		certificate and private key using <citerefentry>
+		<refentrytitle>openssl</refentrytitle>
+		<manvolnum>1openssl</manvolnum> </citerefentry>.
+		Defaults to <quote>false</quote>.
+	    </para></listitem>
+	    </varlistentry>
+
+	    </variablelist>
+	</para>
+
+	<para>
+	    The <quote>unix</quote> transport listens for connections
+	    on an AF_UNIX socket.  The unix transport has the following
+	    options:
+
+	    <variablelist>
+
+	    <varlistentry>
+	    <term>proto</term>
+	    <listitem><para>
+		An <literal>astring</literal>.  The protocol to use
+		with this transport instance.  Defaults to
+		<quote>rad</quote>.
+	    </para></listitem>
+	    </varlistentry>
+
+	    <varlistentry>
+	    <term>path</term>
+	    <listitem><para>
+		An <literal>astring</literal>.  The path to listen on.
+	    </para></listitem>
+	    </varlistentry>
+
+	    <varlistentry>
+	    <term>peercred</term>
+	    <listitem><para>
+		A <literal>boolean</literal>.  If true, rad will
+		attempt to automatically authenticate connections using
+		<citerefentry>
+		<refentrytitle>getpeerucred</refentrytitle>
+		<manvolnum>3C</manvolnum> </citerefentry>.  Defaults to
+		<quote>true</quote>.
+	    </para></listitem>
+	    </varlistentry>
+
+	    </variablelist>
+	</para>
+    </refsection>
+
+    <refsection><title>Files</title>
+        <para>
+	    <variablelist>
+	    <varlistentry>
+	    <term>/etc/rad/cert.pem</term>
+	    <listitem><para>
+		The location where the remote rad instance
+		(<uri>svc:/system/rad:remote</uri>) stores its
+		certificate.  This file is readable by all users.
+	    </para></listitem>
+	    </varlistentry>
+	    <varlistentry>
+	    <term>/etc/rad/key.pem</term>
+	    <listitem><para>
+		The location where the remote rad instance
+		(<uri>svc:/system/rad:remote</uri>) stores its private
+		key.
+	    </para></listitem>
+	    </varlistentry>
+
+	    <varlistentry>
+	    <term>/var/run/radsocket</term>
+	    <listitem><para>
+		The AF_UNIX socket where the local rad instance
+		(<uri>svc:/system/rad:local</uri>) accepts connections
+		that are implicitly authenticated with <citerefentry>
+		<refentrytitle>getpeerucred</refentrytitle>
+		<manvolnum>3C</manvolnum> </citerefentry>.
+	    </para></listitem>
+	    </varlistentry>
+	    <varlistentry>
+	    <term>/var/run/radsocket-unauth</term>
+	    <listitem><para>
+		The AF_UNIX socket where the local rad instance
+		(<uri>svc:/system/rad:local</uri>) accepts connections
+		that must explicitly authenticate using <citerefentry>
+		<refentrytitle>pam</refentrytitle>
+		<manvolnum>3PAM</manvolnum> </citerefentry>.
+	    </para></listitem>
+	    </varlistentry>
+	    </variablelist>
+        </para>
+    </refsection>
+
+    <!-- Style sheets currently shipped misrender this section
+    <refsection><title>Attributes</title>
+	<para>
+	    See <citerefentry>
+	    <refentrytitle>attributes</refentrytitle>
+	    <manvolnum>5</manvolnum> </citerefentry> for descriptions
+	    of the following attributes:
+	</para>
+	<informaltable>
+	    <tgroup cols="2">
+	    <thead>
+	    <row>
+	    <entry>ATTRIBUTE TYPE</entry>
+	    <entry>ATTRIBUTE VALUE</entry>
+	    </row>
+	    </thead>
+	    <tbody>
+	    <row>
+	    <entry>Availability</entry>
+	    <entry>system/management/rad</entry>
+	    </row>
+	    <row>
+	    <entry>Interface Stability</entry>
+	    <entry>Private</entry>
+	    </row>
+	    </tbody>
+	    </tgroup>
+	</informaltable>
+    </refsection>
+    -->
+
+    <refsection><title>See Also</title>
+    <para>
+	<citerefentry>
+	<refentrytitle>attributes</refentrytitle>
+	<manvolnum>5</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	<refentrytitle>getpeerucred</refentrytitle>
+	<manvolnum>3C</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	<refentrytitle>openssl</refentrytitle>
+	<manvolnum>1openssl</manvolnum>
+	</citerefentry>.
+	<citerefentry>
+	<refentrytitle>pam</refentrytitle>
+	<manvolnum>3PAM</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	<refentrytitle>pipe</refentrytitle>
+	<manvolnum>2</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	<refentrytitle>rad</refentrytitle>
+	<manvolnum>1M</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	<refentrytitle>scf_myname</refentrytitle>
+	<manvolnum>3SCF</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	<refentrytitle>smf</refentrytitle>
+	<manvolnum>5</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	<refentrytitle>smf_method</refentrytitle>
+	<manvolnum>5</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	<refentrytitle>svc.startd</refentrytitle>
+	<manvolnum>1M</manvolnum>
+	</citerefentry>,
+	<citerefentry>
+	<refentrytitle>vp</refentrytitle>
+	<manvolnum>1</manvolnum>
+	</citerefentry>
+    </para>
+    </refsection>
+
     <refsection><title>Notes</title>
 	<para>
-	    A system-provided instance of rad is delivered as
-	    <uri>svc:/system/rad:default</uri>.
+	    Two instances of rad are delivered by the system.
+	    <uri>svc:/system/rad:local</uri> listens to AF_UNIX
+	    connections at the paths /var/run/radsocket and
+	    /var/run/radsocket-unauth, and is enabled by default.  The
+	    former AF_UNIX socket will automatically authenticate the
+	    connecting process using <citerefentry>
+	    <refentrytitle>getpeerucred</refentrytitle>
+	    <manvolnum>3C</manvolnum> </citerefentry>, while the latter
+	    requires the connecting process to explicitly
+	    authenticate.  <uri>svc:/system/rad:remote</uri> listens to
+	    TLS connections on the port 12302, requires all clients
+	    to explicitly authenticate, and is disabled by default.
+	</para>
+	<para>
+	    Other system components, including some desktop
+	    administrative user interfaces, rely on the local
+	    instance of rad (<uri>svc:/system/rad:local</uri>).
 	</para>
     </refsection>
 </refentry>
--- a/usr/src/doc/rad-dev/c-intro.xml	Thu Jul 07 19:34:03 2011 -0400
+++ b/usr/src/doc/rad-dev/c-intro.xml	Fri Jul 08 11:32:24 2011 -0700
@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
 <!--
-	PDL HEADER START
+  PDL HEADER START
 
-	Public Documentation License Notice
+  Public Documentation License Notice
 
-	The contents of this Documentation are subject to the Public
-	Documentation License Version 1.01 (the "License"); you may only
-	use this Documentation if you comply with the terms of this License.
-	A copy of the License is available at
-	http://www.opensolaris.org/os/community/documentation/license.
+  The contents of this Documentation are subject to the Public
+  Documentation License Version 1.01 (the "License"); you may only
+  use this Documentation if you comply with the terms of this License.
+  A copy of the License is available at
+  http://www.opensolaris.org/os/community/documentation/license.
 
-	PDL HEADER END
+  PDL HEADER END
 
-	Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+  Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
 -->
 
 <chapter><title>Introduction</title>
@@ -113,8 +113,9 @@
 
 <listitem><itemizedlist><title>Essentials</title>
 <listitem><para>
-    Managed and configured by an <acronym>SMF</acronym> service,
-    <uri>svc:/system/rad:default</uri>.
+    Managed and configured by two <acronym>SMF</acronym> services,
+    <uri>svc:/system/rad:local</uri> and
+    <uri>svc:/system/rad:remote</uri>.
 </para></listitem>
 <listitem><para>
     Structured, browsable namespace.
--- a/usr/src/java/vpanels/panel/org/opensolaris/os/vp/panel/swing/control/WindowControl.java	Thu Jul 07 19:34:03 2011 -0400
+++ b/usr/src/java/vpanels/panel/org/opensolaris/os/vp/panel/swing/control/WindowControl.java	Fri Jul 08 11:32:24 2011 -0700
@@ -45,6 +45,8 @@
 public class WindowControl<P extends PanelDescriptor, C extends Window>
     extends SwingControl<P, C> implements HasBusyIndicator {
 
+    private static final String RAD_FMRI = "system/rad";
+
     //
     // Inner classes
     //
@@ -129,7 +131,7 @@
 	    public void connectionFailed(ConnectionEvent event) {
 		// Prevent interaction with GUI until connection is repaired
 		busy.setMessage(Finder.getString("connection.failed.message",
-		    event.getConnectionInfo().getHost()));
+		    event.getConnectionInfo().getHost(), RAD_FMRI));
 
 		Action quit =
 		    new AbstractAction(Finder.getString(
--- a/usr/src/java/vpanels/panel/org/opensolaris/os/vp/panel/swing/control/resources/Resources.properties	Thu Jul 07 19:34:03 2011 -0400
+++ b/usr/src/java/vpanels/panel/org/opensolaris/os/vp/panel/swing/control/resources/Resources.properties	Fri Jul 08 11:32:24 2011 -0700
@@ -50,7 +50,7 @@
 tray.popup.help = Help...
 tray.popup.exit = Exit
 
-connection.failed.message = The connection to {0} has been lost.  Verify that {0} is reachable and its system/rad:default SMF service is enabled.
+connection.failed.message = The connection to {0} has been lost.  Verify that {0} is reachable and its {1} SMF service is enabled.
 connection.failed.button.quit = Quit
 connection.failed.button.reconnect = Reconnect...
 
--- a/usr/src/java/vpanels/vp.in	Thu Jul 07 19:34:03 2011 -0400
+++ b/usr/src/java/vpanels/vp.in	Fri Jul 08 11:32:24 2011 -0700
@@ -29,7 +29,7 @@
         -mindepth 1 -maxdepth 1 -type f -iname '*.jar'
     /usr/bin/gfind '<VP_LOCALE>' \
         -mindepth 2 -maxdepth 2 -type f -iname '*.jar'
-} | /usr/bin/paste -sd: | read CLASSPATH
+} | /usr/bin/paste -sd: - | read CLASSPATH
 
 export CLASSPATH
 
--- a/usr/src/pkg/transforms/restart_fmri	Thu Jul 07 19:34:03 2011 -0400
+++ b/usr/src/pkg/transforms/restart_fmri	Fri Jul 08 11:32:24 2011 -0700
@@ -20,7 +20,7 @@
 #
 
 #
-# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
 #
 
 <transform file path=lib/svc/manifest/.*\.xml -> add restart_fmri \
@@ -30,8 +30,14 @@
 <transform file path=usr/share/applications/.*\.desktop -> add restart_fmri \
     svc:/application/desktop-cache/desktop-mime-cache:default>
 <transform file path=usr/lib/rad/.* -> add restart_fmri \
-    svc:/system/rad:default>
+    svc:/system/rad:local>
+<transform file path=usr/lib/rad/.* -> add restart_fmri \
+    svc:/system/rad:remote>
+<transform file path=usr/lib/.*libadr.so.1 -> add restart_fmri \
+    svc:/system/rad:local>
 <transform file path=usr/lib/.*libadr.so.1 -> add restart_fmri \
-    svc:/system/rad:default>
+    svc:/system/rad:remote>
 <transform file path=usr/lib/.*libradproto.so.1 -> add restart_fmri \
-    svc:/system/rad:default>
+    svc:/system/rad:local>
+<transform file path=usr/lib/.*libradproto.so.1 -> add restart_fmri \
+    svc:/system/rad:remote>