Seb,
There seems to be a lot of questions about the details on this case,
as one of the few remaining PSARC members, does this really fall
into the "obvious" category that is usually for fast tracks? To me
this would seem meaty enough to be a full case...
Darren
On 12/05/10 09:01 AM, Sebastien Roy wrote:
I'm submitting this fast-track for Mark Haywood. The release binding
is Minor. Note that this case has a dependency on PSARC 2010/157.
Background
==========
The Solaris Next installers intend to use SMF properties, and install
derived, SMF profiles to customize system configurations. This is
driving the requirement that Solaris provide public interfaces, in the
form of of SMF properties, which, when consumed, will provide an
initial physical network interface configuration and an initial DNS
client configuration for the installed system. This case proposes a
set of SMF properties that will satisfy the following requirements:
1 - the ability to plumb and assign an IPv4 and/or IPv6 address to a
physical interface.
2 - the ability to assign a default route to an IPv4 and/or IPv6
physical interface.
3 - the ability to configure a DNS client with a nameserver list, a
search list and a domain.
A subsequent ARC case will explain how the installers intend to
consume the interfaces during install.
Proposal
========
Two new SMF services will be created, svc:/network/install and
svc:/network/dns/install. Each of these services will contain
properties that will be used by the services to configure an initial
physical network interface and/or an initial DNS client
configuration. The services will initially be disabled with property
values that will not result in any system configuration. As part of
install, an SMF profile, enabling the services and containing the
appropriate configuration property values for the services, will be
applied to the system. On the first reboot following the install, the
service start methods will check the properties to see if property
values have been assigned. If so, then the services will use these
property values to configure the system. The service start methods
will terminate after deleting their service properties and disabling
the services themselves.
The svc:/network/install service will support configuring one IPv4
interface and/or one IPv6 interface and, optionally, a default route
reachable by these interfaces. The service will define two property
groups, one for an IPv4 interface and one for an IPv6 interface. The
service will use its properties and ipadm(1M) to configure the network
interfaces. And similarly, the service will use its properties and
route(1M) to define a default route.
The install_ipv4_interface property group will contain the following
properties:
name a required property of the property group and will
contain the value that will be used as the value of
<addrobj> when adding an IPv4 interface address. It
has an SMF property type of 'astring'.
address_type a required property and will contain the value that
will be used to construct the -T option for the
ipadm(1M) create-addr sub-command. Therefore, the
valid values are “static” or “dhcp”. It has an SMF
property type of 'astring'.
static_address only required with an 'address_type' of “static” and
will be used to construct the “local” address for
the ipadm(1M) create-addr sub-command. It has an SMF
property type of 'net_address_v4'.
dhcp_wait optional property that only applies with an
'address_type' of “dhcp”. If defined, then the
property value will be used to construct the “-w
<seconds> | forever” portion of the ipadm(1M)
create-addr sub-command. It has an SMF property type
of 'astring'.
default_route an optional property whose value will be used to
define a default route using route(1M). In other
words, “/usr/sbin/route -p add default default-route
-ifp ifname” (where ifname is the interface name
portion of the 'name' property). It has an SMF
property type of 'net_address_v4'.
The install_ipv6_interface property group will contain the following
properties:
name a required property of the property group and will
contain the value that will be used as the value of
<addrobj> when adding an IPv6 interface address. It
has an SMF property type of 'astring'.
address_type a required property and will contain the value that
will be used to construct the -T option for the
ipadm(1M) create-addr sub-command. Therefore, the
valid values are “static” or “addrconf”. It has an
SMF property type of 'astring'.
static_address only required with an 'address_type' of “static” and
will be used to construct the “local” address for
the ipadm(1M) create-addr sub-command. It has an SMF
property type of 'net_address_v6'.
interface_id an optional property that only applies with an
'address_type' of “addrconf”. If defined, then the
property value will be used to construct the “-i
interface_id” portion of the ipadm(1M) create-addr
sub-command. It has an SMF property type of
'net_address_v6'.
stateless an optional property that only applies with an
'address_type' of “addrconf”. If defined, then the
property value will be used to construct the “-p
stateless=yes|no” portion of the ipadm(1M)
create-addr sub-command. It has an SMF property type
of 'astring'.
stateful an optional property that only applies with an
'address_type' of “addrconf”. If defined, then the
property value will be used to construct the “-p
stateful=yes|no” portion of the ipadm(1M)
create-addr sub-command. It has an SMF property type
of 'astring'.
default_route an optional property whose value will be used to
define a default route using route(1M). In other
words, “/usr/sbin/route -p add default default-route
-ifp ifname” (where ifname is the interface name
portion of the 'name' property). It has an SMF
property type of 'net_address_v6'.
The svc:/network/dns/install service will support the configuration of
a DNS client. The service will define one property group,
install_props. The service will use its properties to construct a DNS
resolv.conf(4) file.
The install_props property group will contain the following
properties:
domain an optional property of the property group and, if
defined, will contain the value of the local domain
name. Its value will be used to construct the
“domain” directive in resolv.conf(4). It has an SMF
property type of 'astring'.
nameserver a required property whose value will be used to
construct the “nameserver” directives in
resolv.conf(4). It has an SMF property type of
'net_address', but should contain an
'net_address_list' of IPv4 and/or IPv6 addresses.
search an optional property that if defined, it will
contain a value for the search order host name
lookup. Its value will be used to construct the
“search” directive in resolv.conf(4). It has an SMF
property type of 'astring', but should contain an
'astring_list' of domain values.
An example SMF profile configuring both IPv4 and IPv6 interfaces and a
DNS client follows:
<?xml version='1.0'?>
<!DOCTYPE service_bundle SYSTEM
'/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
<service_bundle type='profile' name='default'>
<service name='network/physical' version='1' type='service'>
<instance name='nwam' enabled='false'/>
</service>
<service name='network/install' version='1' type='service'>
<instance name='default' enabled='true'/>
<property_group name='install_ipv4_interface' type='application'>
<propval name='name' type='astring' value='bge0/v4' />
<propval name='address_type' type='astring' value='static' />
<propval name='static_address' type='net_address_v4'
value='10.4.235.146/24' />
<propval name='default_route' type='net_address_v4'
value='10.4.235.1' />
</property_group>
<property_group name='install_ipv6_interface' type='application'>
<propval name='name' type='astring' value='bge0/v6' />
<propval name='address_type' type='astring' value='addrconf' />
9
<propval name='static_address' type='net_address_v6'
value='::0/0' />
<propval name='interface_id' type='net_address_v6'
value='::abcd/64' />
<propval name='stateless' type='astring' value='no' />
<propval name='stateful' type='astring' value='no'/>
<propval name='default_route' type='net_address_v6'
value='::0' />
</property_group>
</service>
<service name='network/dns/install' version='1' type='service'>
<instance name='default' enabled='true'/>
<property_group name='install_props' type='application'>
<property name='nameserver' type='net_address'>
<net_address_list>
<value_node value='129.145.155.220' />
<value_node value='129.145.154.118' />
<value_node value='129.147.9.5' />
<value_node value='129.147.4.5' />
</net_address_list>
</property>
<propval name='domain' type='astring' value='sfbay.sun.com' />
<property name='search' type='astring'>
<astring_list>
<value_node value='sfbay.sun.com' />
<value_node value='east.sun.com' />
</astring_list>
</property>
</property_group>
</service>
</service_bundle>
This case has a dependency on the new SMF property type,
SCF_TYPE_NET_ADDR, described in PSARC/2010/157.
The exported interfaces below are intended for Solaris Next (Minor
binding) only.
Interface Table
Exported Interfaces
Name Commitment Comments
---------------------------------------------------------------------------
svc:/network/install Committed Network interface install
service
install_ipv4_interface Committed IPv4 network interface
SMF property group
install_ipv4_interface.name
install_ipv4_interface.address_type
install_ipv4_interface.static_address
install_ipv4_interface.dhcp_wait
install_ipv4_interface.default_route
install_ipv6_interface Committed IPv6 network interface
SMF property group
install_ipv6_interface.name
install_ipv6_interface.address_type
install_ipv6_interface.static_address
install_ipv6_interface.interface_id
install_ipv6_interface.stateless
install_ipv6_interface.stateful
install_ipv6_interface.default_route
svc:/network/dns/install Committed DNS client install svc
install_props Committed DNS client configuration
property group
install_props.domain
install_props.nameserver
install_props.search
Imported Interfaces
Name Commitment Comments
---------------------------------------------------------------------------
ipadm(1M) Committed Configure network
interfaces
route(1M) Committed Configure default routes
resolv.conf(4) Committed DNS client configuration
_______________________________________________
opensolaris-arc mailing list
[email protected]