4. Repository

Version 0.12, 2008-Sep-29

NWAM profiles will be stored persistently as files under /etc/nwam, as is the case in the Phase 0 implementation. The organization of the data will be changed to better reflect the architecture, as the Phase 0 file format was only intended to be a simple, short-term solution.

Sections 4.1, 4.2, and 4.3 describe the objects to be stored in the repository, and section 4.4 defines the organization of the files and their formats.

4.1 Network Configuration Profile

The Network Configuration Profile, or NCP, defines the network configuration of a system. The NCP is composed of Network Configuration Units, or NCUs; these units represent the individual links and interfaces on the system. There are thus two types of NCUs: link and ip. Each type has a variety of classes, as discussed in the following sections.

General NCU Properties
Property Property Type
NCU Type uint64 (enum values)
NCU Class uint64 (enum values)
Parent NCP string (name of parent)
Activation mode uint64 (enum values)
Priority group uint64
Priority group mode uint64 (enum values)
Condition string (conditional description)
NCU Over string (name of NCU)
NCU Under string (name of NCU)

4.1.1 Link NCUs

Link NCUs represent datalinks. There are several different classes of datalinks: physical links (ethernet or wifi), tunnels, aggregations, vlans, vnics. In Phase 1, NWAM will support physical links and tunnels only.

Link NCU Properties
Link Class Property Property Type
All MAC Address string
Autopush string list (list of modules)
MTU uint64
Tunnel Tunnel type uint64 (enum values)
Tunnel source address v4 or v6 address
Tunnel destination address v4 or v6 address
ESP Encryption Algorithm string (encr alg)
ESP Authentication Algorithm string (auth alg)
AH Authentication Algorithm string (auth alg)

4.1.2 IP NCUs

IP NCUs represent an instance of IP plumbed on a datalink. In addition to the basic IP instance, there are several classes of IP NCUs: IPMP group and vni. NWAM Phase 1 will only support basic IP instances.

IP NCU Properties
Property Property Type
IP Version uint64 (enum values, multivalued)
IPv4 Address Source(s) uint64 (enum values, multivalued)
IPv4 Static Address(es) v4 address (multivalued)
IPv6 Address Source(s) uint64 (enum values, multivalued)
IPv6 Static Address(es) v6 address (multivalued)

4.1.3 Automatic NCP

The automatic NCP will consist of one NCU for each physical link discovered in the system, and one IP NCU plumbed on each link. The automatic NCP will change dynamically upon insertion of additional physical links; as new links are inserted, a link NCU and corresponding IP NCU will be created for each new link. The following table defines the values that will be assigned to each NCU property.

Automatic NCP Property Values: Link NCUs
Property Value
NCU Type LINK
NCU Class PHYS
Parent NCP "automatic"
Activation mode PRIORITIZED
Priority group 1 (for 802.3 links) or 0 (for 802.11 links)
Priority group mode EXCLUSIVE
Condition n/a
NCU Over IP NCU name
NCU Under no value
MAC Address hardware-assigned
Autopush no value
MTU 1500
Automatic NCP Property Values: IP NCUs
Property Value
NCU Type IP
NCU Class IP
Parent NCP "automatic"
Activation mode CONDITIONAL
Priority group n/a
Priority group mode n/a
Dependency "link:<my_name>"
NCU Over no value
NCU Under link NCU name
IP Version IPv4, IPv6
IPv4 Address Source DHCP
IPv4 Static Address no value
IPv6 Address Source DHCPv6, AUTOCONF
IPv6 Static Address no value

4.2 Locations

The Location is a profile of system-wide network configuration information, which is applied once the basic network configuration has been established. Only one Location is active at a time; before a new Location is enabled, settings from the previous Location are removed.

A Location is made up of two types of attributes:

These attributes are discussed in more detail in the Location page of this specification. The property types and values that make up a stored location in the repository are outlined in sections 4.2.1 and 4.2.2. Three pre-defined locations will be supplied: the No-Net location, which will be applied when no network interfaces are available; the Automatic location, which will be applied when no other locations are available that match the current conditions; and the Legacy location, which will be a snapshot of the existing settings when NWAM performs a cold start. The property values that make up each of these locations are defined in sections 4.2.3, 4.2.4 and 4.2.5.

4.2.1 Hardwired Properties

Property Property Type
Activation uint64 (enum values)
Condition string
nameservice-discover boolean
nameservices uint64 list (enum values)
nameservices-config-file string
dns-nameservice-servers ip address list
dns-nameservice-domain string
dns-nameservice-search string
nis-nameservice-servers ip address list
nis-nameservice-domain string
nisplus-nameservice-servers ip address list
nisplus-nameservice-domain string
ldap-nameservice-servers ip address list
ldap-nameservice-domain string
hosts-file string
nfsv4-domain string
ipfilter-config-file string
ipfilter-v6-config-file string
ipnat-config-file string
ippool-config-file string
ike-config-file string
ipseckey-config-file string
ipsecpolicy-config-file string
svcs-enable string list
svcs-disable string list

4.2.2 Extensible Properties

Network-related SMF services may specify properties which should be included in an NWAM location. NWAM will discover those properties by walking all SMF services and checking for a property indicating that that service has specified an extensible property. Extensible properties are described in more detail in section 3.2 of the Location page of this specification.

For each extensible property, two properties will be added to the set of location properties, as defined in the table below.
Property Property Type
<prop_name> <prop_type>
<prop_name>_fmri string

The name of the first property is the name of the property itself, as specified in the extensible property template in the defining service, and the type of that property is the type specified in that template. The second property is the property name with "_fmri" appended; it is a string, and identifies the service to which this property belongs. Given the property name and service fmri, the rest of the property template can be retrieved from the specifying service.

4.2.3 Automatic Location

This is the default location; i.e. it will be applied when no other location has conditions that are met. This is identified by

This location may be modified by the user; upon the first load of its values via the API, a read-only copy will be saved, which will be available if the user chooses to restore defaults.

Automatic Location Property Values
Property Property Value
name "Automatic"
activation DEFAULT
condition n/a
nameservice_discover true
nameservices n/a
nameservices-config-file n/a
dns-nameservice-servers n/a
dns-nameservice-domain n/a
dns-nameservice-search n/a
nis-nameservice-servers n/a
nis-nameservice-domain n/a
nisplus-nameservice-servers n/a
nisplus-nameservice-domain n/a
ldap-nameservice-servers n/a
ldap-nameservice-domain n/a
hosts-file "/etc/inet/hosts.default", which will be delivered by
the NWAM project and will consist of two entries:
127.0.0.1  localhost loghost
::1        localhost
       
nfsv4-domain n/a
ipfilter-config-file ""
ipfilter-v6-config-file ""
ipnat-config-file ""
ippool-config-file ""
ike-config-file ""
ipseckey-config-file ""
ipsecpolicy-config-file ""
svcs-enable ""
svcs-disable ""

4.2.4 No-Net Location

This location will be applied when none of the local interfaces have an IP address assigned.

Like the Automatic location, this location may be modified by the user; upon the first load of its values via the API, a read-only copy will be saved, which will be available if the user chooses to restore defaults.

No-Net Location Property Values
Property Property Value
name "No-Net"
activation CONDITIONAL
condition "/0 is not assigned"
nameservice-discover false
nameservices "files"
nameservices-config-file "/etc/nsswitch.files"
dns-nameservice-servers n/a
dns-nameservice-domain n/a
dns-nameservice-search n/a
nis-nameservice-servers n/a
nis-nameservice-domain n/a
nisplus-nameservice-servers n/a
nisplus-nameservice-domain n/a
ldap-nameservice-servers n/a
ldap-nameservice-domain n/a
hosts-file "/etc/inet/hosts.default", which will be delivered by
the NWAM project and will consist of two entries:
127.0.0.1  localhost loghost
::1        localhost
       
nfsv4-domain n/a
ipfilter-config-file TBD
ipfilter-v6-config-file TBD
ipnat-config-file TBD
ippool-config-file TBD
ike-config-file TBD
ipseckey-config-file TBD
ipsecpolicy-config-file TBD
svcs-enable ""
svcs-disable ""

4.2.5 Legacy Location

This location does not have pre-defined property values; rather, its values will be a snapshot of the system settings taken before NWAM begins to manage the network configuration. Taking this snapshot allows the NWAM service to restore the previously existing conditions when it is disabled. For more details about the Legacy location, refer to the SMF Network Services page of this specification.

4.3 ENMs

External entities which perform their own link/IP configuration may be installed on the system. These entities are referred to as External Network Modifiers, or ENMs. Configuration performed by an ENM will not be stored as part of the persistent NWAM configuration; doing so would require that the user understand the details of how the service is configured, or that NWAM be designed with that knowledge, neither of which is practical.

Therefore NWAM will take note of externally-initiated network configuration; it will not interfere with this configuration, and in fact will use externally- initiated changes to reevaluate its Location selection criteria. However, if the NWAM service is restarted, it will revert the system to the configuration specified by the persistent NCP, tearing down any externally-initiated changes.

To enable more automatic manipulation of ENMs, NWAM provides a registry interface, allowing NWAM to enable and disable ENMs as needed. Registered ENMs will be stored in the NWAM repository in much the same way as NCUs and Locations. The properties of an ENM are defined in the following table.

Property Type
Name string
Activation uint64 (enum values)
Condition string
FMRI string
Start Method string
Stop Method string
State (set by NWAM) uint64 (enum values)

4.4 Files and formats

Configuration for each object type will be stored in a file under /etc/nwam: NCP data in /etc/nwam/ncp-<name>.conf (one file per NCP, with each file entry representing an NCU), Locations in /etc/nwam/loc.conf, and ENMs in /etc/nwam/enm.conf. The file format will be similar to that of /etc/dladm/datalink.conf; for example, an entry in ncp.conf would look like

ncu_name	prop0=type,val[,val];prop1=type,val[,val];

The property name is a free-form string. Property values are stored as a (type,value,[,value]) tuple; where values are of type uint64, the integer value will be stored. It is not intended that these files be editable by hand.

Revision History

Revision Date Changes
0.1 2007-Sep-05 initial draft
0.2 2007-Dec-03 system-wide config profiles are now called Locations
0.3 2008-Feb-26 using files rather than smf; fill in NCP/NCU/Location/ENM detail; fill in file format section
0.4 2008-Feb-27 update with team feedback
0.5 2008-Mar-05 formatting nits; add some ToDo items
0.6 2008-Mar-12 update automatic ncp details
0.7 2008-Mar-31 automatic IP NCUs will enable IPv6
0.8 2008-Apr-25 automatic NCP details moved to NCP page
0.9 2008-Apr-28 merge/reorganize data in repository and location pages
0.10 2008-Sep-09 update property lists
0.11 2008-Sep-23 fix location file name
0.12 2008-Sep-29 fix a few more details