hi folks
given their scope, I wanted to give people
notice about some libnwam changes that
impact the GUI and existing NWAM NCP
configuration. These arise out of libnwam
code review.
Firstly, the enum nwam_ip_version_t
and its associated values NWAM_IP_VERSION_IPV4
NWAM_IP_VERSION_IPV6 will be replaced
by the more generic (and already existing)
IPV4_VERSION and IPV6_VERSION values.
These are #define'd in /usr/include/inet/ip.h and
/usr/include/inet/ip6.h respectively (these are
#include'd via libnwam.h), but since they have
different values (4 and 6) to those used in the
previously-used enum, it is necessary to remove
any existing NCP configuration prior to using
libnwam/nwamd on a build with these changes
in (tomorrow's build will have the changes hopefully). So
it's just a matter of removing /etc/nwam/ncp-*.conf
and restarting nwamd. The GUI should remove
any references to nwam_ip_version_t or
NWAM_IP_VERSION_IPV4/NWAM_IP_VERSION_IPV6
and replace them with IPV4_VERSION/IPV6_VERSION.
Secondly, the structure fields of nwam_event_t
and nwam_wlan_t's will be changing names,
adding a prefix qualifier (nwe_ for nwam events,
nww_ for nwam_wlan_t's etc). This will likely
be a reasonably big job for the GUI to change
references to these fields, but I'm afraid it
can't be helped. Hopefully getting it done
ASAP will mean it won't impact on our time
too much. I've made the changes to the onnv
consumers of libnwam (nwamd, nwamcfg, nwamadm).
I'll detail the changes here in advance:
nwam_wlan_t: The new definition is
typedef struct {
char nww_essid[NWAM_MAX_NAME_LEN];
char nww_bssid[NWAM_MAX_NAME_LEN];
char nww_signal_strength[NWAM_MAX_NAME_LEN];
uint32_t nww_security_mode; /* a dladm_wlan_secmode_t */
uint32_t nww_speed; /* a dladm_wlan_speed_t */
uint32_t nww_channel; /* a dladm_wlan_channel_t */
uint32_t nww_bsstype; /* a dladm_wlan_bsstype_t */
uint_t nww_keyindex;
boolean_t nww_have_key;
boolean_t nww_selected;
boolean_t nww_connected;
} nwam_wlan_t;
...i.e. fields are all prefixed by "nww_"
nwam_event_t: The new definition is:
struct nwam_event {
int nwe_type;
uint32_t nwe_size;
union {
struct {
nwam_object_type_t nwe_object_type;
char nwe_name[NWAM_MAX_NAME_LEN];
char nwe_parent[NWAM_MAX_NAME_LEN];
nwam_action_t nwe_action;
} nwe_object_action;
struct {
nwam_object_type_t nwe_object_type;
char nwe_name[NWAM_MAX_NAME_LEN];
nwam_state_t nwe_state;
nwam_aux_state_t nwe_aux_state;
} nwe_object_state;
struct {
int64_t nwe_priority;
} nwe_priority_group_info;
struct {
char nwe_message[NWAM_MAX_VALUE_LEN];
} nwe_info;
/*
* wlan_info stores both scan results and the single
* WLAN we require a key for in the case of _WLAN_NEED_KEY
* events. For _WLAN_CONNECTION_REPORT events, it stores
* the WLAN the connection succeeded/failed for, indicating
* success/failure using the 'connected' boolean.
*/
struct {
char nwe_name[NWAM_MAX_NAME_LEN];
boolean_t nwe_connected;
uint16_t nwe_num_wlans;
nwam_wlan_t nwe_wlans[1];
/*
* space may be allocated by user here for the
* number of wlans
*/
} nwe_wlan_info;
struct {
char nwe_name[NWAM_MAX_NAME_LEN];
nwam_action_t nwe_action;
} nwe_if_action;
struct {
char nwe_name[NWAM_MAX_NAME_LEN];
uint32_t nwe_flags;
uint32_t nwe_index;
uint32_t nwe_addr_valid; /* boolean */
uint32_t nwe_addr_added; /* boolean */
struct sockaddr_storage nwe_addr;
/* might be longer then sizeof(if_state) for addr */
} nwe_if_state;
struct {
char nwe_name[NWAM_MAX_NAME_LEN];
int32_t nwe_link_state;
/* link_state_t from sys/mac.h */
} nwe_link_state;
struct {
char nwe_name[NWAM_MAX_NAME_LEN];
nwam_action_t nwe_action;
} nwe_link_action;
} nwe_data;
};
i.e. fields and nested structures are all prefixed by "nwe_".
Again, apologies for the scope of the changes, hopefully
getting this done ASAP will make life easier in the long
run.
Alan