Background ========== The Solaris Next installers intend to use SMF properties, and install derived, SMF profiles to customize system configurations for the systems that are being installed. 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. + The requirements are mostly driven with the expectation that the installers' + current use of svc:/network/physical:nwam to configure non-static + configurations on installed systems is sufficient and that static + configurations on installed systems can best be implemented (given the + current split in network configuration schemes) using + svc:/network/physical:default. This seems to be particularly true in the + case of Automated Installs which are believed to be aimed at Enterprise + Systems which would likely not have need for NWAM and would more likely + have a need for the more sophisticated configurations supported by + svc:/network/physical:default. + + This case proposes interfaces to meet the requirements described above. + How the interfaces will be used by the different installers (i.e., GUI, text + AI) will be defined in upcoming cases that define the installer architecture. 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 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 | 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 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'. + What is both implicit, and intentional, about the way that the + svc:/network/install:default service processes its network interface + related properties is that the properties are intended to define a static + configuration that can be used by a system that is running the + svc:/network/physical:default service. This limitation (i.e., no support + for static NWAM configurations) meets installs current requirements. + In the future, we expect the split between network/physical:default and + network/physical:nwam to disappear. When that happens, these interfaces will + need to be re-addressed in that context. 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: 9 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 Uncommitted Network interface install service install_ipv4_interface Uncommitted 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 Uncommitted 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 Uncommitted DNS client install svc install_props Uncommitted 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