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]

Reply via email to