I've put together the following overview of the changes that have
been made (from an interface perspective) since we had our PSARC
commitment review. Comments welcome!
Thanks,
renee
1. Introduction
1.1. Project/Component Working Name:
Network Auto-Magic (NWAM) Phase 1 Updates
1.2. Name of Document Author/Supplier:
Renee Danson
1.3. Date of This Document:
19-Jun-2009
4. Technical Description:
See text below.
6. Resources and Schedule:
6.4. Product Approval Committee requested information:
6.4.1. Consolidation or Component Name:
ON
6.5. ARC review type: FastTrack
6.6. ARC Exposure: open
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.
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'
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. 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').
5. '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".
6. 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.
7. Remove hosts-file property from Location profile
Use of this 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.
8. 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
9. 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.
10. 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.
11. 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.
12. 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.