I'm sponsoring this case for Renee Danson Sommerfeld, it times out on 10/29/2009. The release binding for this case is the same as the case that it updates (PSARC 2008/532 NWAM Phase 1), namely Minor release binding.
In the course of completing the implementation of NWAM Phase 1, several interface changes were made. Most were relatively minor; they are all documented below. 1. Nomenclature change Refer to NCU types as link and interface, instead of link and ip. Link-type NCUs currently have one possible class: phys; Interface-type NCUs also have one possible class: ip. There is an expectation that as support for more sophisticated network configurations is added, additional classes will be created. However, the class will always imply the type; therefore commands will generally only use the class descriptor. This is primarily a documentation change; though the CLI tools do have some flag changes as well, described in the next item. 2. Updates to the nwamadm options * Added a new parameter to specify NCU class, to allow differentiation between Link and IP NCUs, if desired. * Change the option letter for specifying the profile-type from 't' to 'p' * Remove the subcommand 'interact' * Add new subcommands: show-events, scan-wifi, select-wifi show-events reports the events published by nwamd. scan-wifi requests a wireless scan on the specified link and prints result list. Much like 'dladm scan-wifi', only it has the effect of updating nwamd's cached list, as well. select-wifi prints the list of available wlans for the specified link, and prompts the user to select one to connect to. * Add option to list subcommand, '-x', which includes explanation of state New subcommand list/syntax for nwamadm: help enable [ -p <profile-type> ] [ -c <ncu-class> ] <object-name> disable [ -p <profile-type> ] [ -c <ncu-class> ] <object-name> list [ -x ] [ -p <profile-type> ] [ -c <ncu-class> ] [ <object-name> ] show-events scan-wifi <linkname> select-wifi <linkname> 3. Updates to nwamadm output The output of the 'list' subcommand will include information about the state of the NCUs that make up the currently active NCP. 4. Add '-V' option to nwamcfg's 'get' subcommand Default output from the get command is 'propname=propval'. For ease of scripting, the -V option outputs the value only. Example: % nwamcfg "select wlan Asbury; get priority" priority 0 % nwamcfg "select wlan Asbury; get -V priority" 0 5. Clarification of command-line output stability PSARC 2008/532 incorrectly defined command-line output stability to be Uncommitted; it should be Volatile. 6. Make 'enabled' property common to all NCUs, not just Link NCUs. This change makes the plumbing of ip on a link independent of making the link active. Bringing up a link and plumbing ip on it can still be accomplished with one command ('nwamadm enable -p ncu wpi0'); but it is also possible to separate the two steps ('nwamadm enable -p ncu -c link wpi0' and 'nwamadm enable -p ncu -c ip wpi0'). 7. Use 'enabled' property on all locations, not just those that have manual activation mode. This means that users can choose to activate any location at any given time, even if, for example, the location has conditional activation specified and its conditions are not currently met. If a user does activate a location, effectively overriding automatic selection by nwamd, that location must be explicitly disabled in order to restore automatic selection. 8. 'all' is no longer a valid value for the ip-version property This property allows multiple values; so the value 'all' is not needed, as the desired IP versions may simply be enumerated. This change also means the default value of the property is "ipv4,ipv6" rather than "all". 9. ipv6-addrsrc value change The value 'dhcpv6' is now simply 'dhcp'. Assigning the value to the ipv6-addrsrc property implies that the v6 version of the protocol should be used, no need to differentiate in the names. Also, dhcp and autoconf values must be included if ipv6-addrsrc is set; disabling these two address configuration methods is not allowed at this time. Though this is a change from the legacy Solaris behavior, it is actually more in keeping with the IPv6 specifications, which state that the use of those two address configuration methods is specified by the router, not the host. Adding or removing the value 'static' to/from the ipv6-addrsrc property is allowed. 10. Remove hosts-file, enable-svcs and disable-svcs properties from Location profile Use of the hosts-file property, to replace the /etc/hosts file when changing location, was not particularly useful, and could lead to confusion if some locations specified an alternate file, while others did not. The enable-svcs and disable-svcs properties could lead to similar problems, as naming a service in one of these states what the state of the service should be when the location is active, but is not explicit about what to do when the location is de-activated. The initial state is not taken into account, and really can't be, if each location may-- but is not required to--specify a state for a given service. 11. Add default-route properties to IP Interface NCUs Two new properties, ipv4-default-route and ipv6-default-route, allow the user to specify statically configured default router address(es), to be associated with a specific interface. This provides a static alternative to a DHCP-specified default router, which may be associated with an interface if DHCP is in use. 12. Add support for storing keyslot info with known_wlans Includes addition of a 'keyslot' property to the known_wlan object, extensions to the interfaces and CLIs for setting that value, and support in nwamd for specifying the keyslot when making connections. 13. Change 'upgraded' nwam service property to 'version' Rather than having a simple boolean to indicate whether or not legacy configuration has been updated, we will have a count property which can evolve as needed. It will not exist when the phase 1 bits are installed, and will be set to a value of '1' once pre-phase-1 configuration, if any, has been updated. 14. Clarification of scan_interval service property values If this property is set to 0, periodic wireless scans will not happen while a link is connected. 15. New nwam service property 'condition_check_interval' Allows the user to tune the interval at which conditions are validated for conditionally-activated objects. Asynchronous events can result in changes at any time, but in the absence of events, the conditions will always be re-evaluated at the interval specified by this property. Default value is 120 seconds; minimum is 30 seconds. If set to a value lower than the minimum, the minimum will be used. The stability level of this property is, like all the properties in the nwamd property group, Volatile. 16. Effect on Automatic and User NCPs when links are added/removed Earlier behavior was to add newly-discovered links to all NCPs, both User and Automatic. This had the unfortunate side effect of preventing the user from permanently removing links that they really did not want NWAM to manage from the User NCP: upon restart, nwamd would see that a link was present in the system that did not exist in the User NCP, and promptly add it. This also would force the user to continually recreate configuration for a device that was sometimes removed, e.g. a PC-card wireless adapter. Revised behavior is to make such changes to the Automatic NCP, but not the User NCP. If a link is added to the system, the user must explicitly add it to the User NCP if desired; on removal from the system, it will not be removed from the User NCP. 17. Change upgrade behavior Upon upgrade, earlier nwam link and interface configuration will be imported into the User NCP. However, the Automatic NCP will be active by default. The rationale for this change is that the default config implemented in earlier nwam versions is the same as the Automatic NCP behavior, and we expect that most users will not have made changes, and therefore will want the Automatic NCP. The previously discussed change with respect to automatic addition/removal of inserted/removed links makes this especially desirable. Users who actually modified their earlier configuration (which should be a small minority) can switch to the User NCP to get their changes. There is one exception: if any static addresses are specified in the llp file, it is very clear that the user did in fact modify that file; therefore, if a static address is found, the User NCP will be active upon upgrade. Location profiles did not exist in earlier versions of NWAM, so any configuration that NWAM does based on Location specifications may overwrite previous system configuration. On upgrade, the existing configuration will be saved into a User location. This location will be activated if it includes an nsswitch.conf file which uses a nameservice other than DNS (i.e. a nameservice that cannot be configured by NWAM based solely on information obtained from the network). 18. Add the following functions and flags to the consolidation-private libnwam interface: * nwam_error_t nwam_ncp_get_active_priority_group(int64_t *); Returns the currently active priority group. In addition, changes to the active priority group are reported with an NWAM_EVENT_TYPE_PRIORITY_GROUP event. This allows consumers to track changes to the active group. * NWAM_FLAG_KNOWN_WLAN_NO_COLLISION_CHECK flag As each known_wlan must have a unique priority value, the default behavior upon commit of a known_wlan object is to check for a priority collision and shift existing values as needed. However, in cases where the consumer is writing the complete list, having explicitly set each priority value, such checking is not needed. Passing this flag in the flags parameter of the commit function will skip collision checking. * nwam_error_t nwam_wlan_get_scan_results(const char *linkname, uint_t *num_wlansp, nwam_wlan_t **wlansp); Consumers need a way of requesting the results of the most recent wireless scan; this function provides that. * nwam_*_get_state(nwam_*_handle_t handle, nwam_state_t *state, nwam_aux_state_t *aux_state); Returns the current state of the specified object. * nwam_error_t nwam_wlan_get_selection(const char *linkname, char **essidp, char **bssidp); Returns the selected wlan, if applicable, for the specified link. * add argument to nwam_wlan_select() Additional boolean parameter added to this function to specify whether or not the selected wlan should be added to the known_wlan list. * add property status functions Specific objects and properties may be read-only (or only modifiable by nwamd). Add functions to the API allowing consumers to check for read-only status of objects and properties: nwam_error_t nwam_loc_prop_read_only(const char *prop, boolean_t *ro); nwam_error_t nwam_ncu_prop_read_only(const char *prop, boolean_t *ro); nwam_error_t nwam_enm_prop_read_only(const char *prop, boolean_t *ro); nwam_error_t nwam_ncp_get_read_only(nwam_ncp_handle_t ncph, boolean_t *ro); nwam_error_t nwam_ncu_get_read_only(nwam_ncu_handle_t ncuh, boolean_t *ro); boolean_t nwam_loc_can_set_name(nwam_loc_handle_t loch); boolean_t nwam_enm_can_set_name(nwam_enm_handle_t enmh); boolean_t nwam_known_wlan_can_set_name(nwam_known_wlan_handle_t kwh); 19. Remove support for renaming of NCU objects These objects map to physical links and IP interfaces; renaming thus involves vanity naming and questions of what exactly is intended. For phase 1, renaming of these objects will not be allowed; determining how exactly this should work and implementing appropriately remains future work. Renaming of links can be accommodated by disabling the nwam service, performing the rename, and then enabling nwam. The new link name will be detected and updated in the Automatic NCP; the User NCP will require the user to make appropriate updates. 20. Remove iptun references from the libnwam interface Support for iptun datalinks is planned for a future phase; hooks were included in the API details included with the earlier case. These should be removed until full support is available. 21. Cleanup of exported interfaces in libinetcfg Two functions originally included in the list of exported functions for the consolidation-private libinetcfg are not needed externally, and so will not be exported: icfg_if_protocol() and icfg_is_loopback(). 22. Upgrade the stability level of an interface from PSARC 2006/366, which is consumed by this case: the zone_check_datalink() function was integrated as project-private; the submitter of that case, Erik Nordmark, has agreed to the upgrade of this interface, as documented in PSARC 2006/366, to consolidation private.